알고리즘 문제 풀이
백준 알고리즘 1193번
포트폴리오 사이트 보완
장고 스터디를 준비하면서 묵혀두었던 웹 사이트를 다시 꺼내보았다. 오래 묵혀두었더니 코드에서 시큼시큼한 냄새가 났다. django 2.0 버전인데도 path가 아니라 url을 쓰고 있었고, model에서도 쓸모 없는 코드가 몇 줄 보였다. Django 스터디를 준비하면서 배운 게 악취를 발견하는 데 도움이 많이 되었다. (특히 초보몽키님께 많이 배웠다)
※ 모델 수정하다가 데이터를 전부 날려버렸다! (다행히 github 저장소에 원본이 있다.)
6개 정도의 프로젝트가 있었는데 후후…. 다시 만들어줘야한다. 후후후….
Code Before/After
urls.py : url() -> path()
before
1 2 3 4 5 6 7 8 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
1 2 3 4 5 6 7 8 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
1 2 3 4 def detail(request, pk) : project = get_object_or_404(Project, pk=pk) return render(request, "myfolio/projects_detail.html", {'project' : project})
after
1 2 3 4 class DetailView(generic.DetailView): model = Project template_name = "myfolio/projects_detail.html"
R로 랜덤 팀 배정하는 함수
어제 교수님께 피드백 받은 대로 random shuffle의 횟수를 여러 번 늘릴 수 있는 옵션 을 만들었다. times에 원하는 횟수를 적어주면 그 횟수만큼 팀원을 섞는다.
※배운 함수를 이것저것 활용해서 개인적으로 ‘코드 비빔밥’이라고 부르고 싶다.
> 전체코드 확인하기
원본
1 m_df <- m_df[sample(nrow(m_df)), ]
바뀐 부분
1 2 3 for(n in seq(times)){ m_df <- m_df[sample(nrow(m_df)), ] }