알고리즘 문제 풀이


백준 알고리즘 1193번


포트폴리오 사이트 보완


장고 스터디를 준비하면서 묵혀두었던 웹 사이트를 다시 꺼내보았다. 오래 묵혀두었더니 코드에서 시큼시큼한 냄새가 났다. django 2.0 버전인데도 path가 아니라 url을 쓰고 있었고, model에서도 쓸모 없는 코드가 몇 줄 보였다. Django 스터디를 준비하면서 배운 게 악취를 발견하는 데 도움이 많이 되었다. (특히 초보몽키님께 많이 배웠다)

※ 모델 수정하다가 데이터를 전부 날려버렸다! (다행히 github 저장소에 원본이 있다.)

6개 정도의 프로젝트가 있었는데 후후…. 다시 만들어줘야한다. 후후후….





Code Before/After

urls.py : url() -> path()

before

urlpatterns = [
    url(r'^$', views.request_index, name="home"),
    url(r'^index', views.request_index, name="home"),
    url(r'^project/(?P<pk>\d+)/$', views.detail_projects, name='project_detail'),
    url(r'^new/$', views.new_projects, name="new_projects"),
    url(r'^edit/(?P<pk>\d+)/$', views.edit_projects, name='edit_projects'),
]


after

urlpatterns = [
    path('', views.index, name="home"),
    path('index', views.index, name="home"),
    path('project/<int:pk>/', views.DetailView.as_view(), name='project_detail'),
    path('new/', views.new, name="project_new"),
    path('edit/<int:pk>/', views.edit, name='project_edit'),
]


views.py : generic 클래스 뷰 사용하기 (function view를 class view로 바꿨다. 더 심플해보인다.)

before

def detail(request, pk) :
    project = get_object_or_404(Project, pk=pk) 
    return render(request, "myfolio/projects_detail.html", {'project' : project})


after

class DetailView(generic.DetailView):
    model = Project
    template_name = "myfolio/projects_detail.html"




R로 랜덤 팀 배정하는 함수


어제 교수님께 피드백 받은 대로 random shuffle의 횟수를 여러 번 늘릴 수 있는 옵션을 만들었다. times에 원하는 횟수를 적어주면 그 횟수만큼 팀원을 섞는다.​

※배운 함수를 이것저것 활용해서 개인적으로 ‘코드 비빔밥’이라고 부르고 싶다.

> 전체코드 확인하기

원본

  m_df <- m_df[sample(nrow(m_df)), ]


바뀐 부분

  for(n in seq(times)){
    m_df <- m_df[sample(nrow(m_df)), ]
  }