💻 프로그래밍
-
2019 카카오 1차 코딩테스트 문제 3 (자물쇠와 열쇠)💻 프로그래밍/알고리즘 2019. 11. 10. 23:59
1. 문제 (정답률: 7.4%) 고고학자인 “튜브”는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이동이 가능하며 열쇠의 돌기 부분을 자물쇠의 홈 부분에 딱 맞게 채우면 자물쇠가 열리게 되는 구조입니다. 자물쇠 영역을 벗어난 부분에 있는 열쇠의 홈과 ..
-
2019 카카오 1차 코딩테스트 문제 1 (문자열 압축)💻 프로그래밍/알고리즘 2019. 11. 10. 21:13
1. 문제 (정답률: 25.9%) 데이터 처리 전문가가 되고 싶은 “어피치”는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 “aabbaccc”의 경우 “2a2ba3c”(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, “abcabcdede”와 같은 문자열은 전혀 압축되지 않습니다. “어피치”는 이러한 단점을 해결하기 위해 문자열을..
-
local 개발환경 세팅부터 배포까지 - 3부(Fabric)💻 프로그래밍/K8s & Docker 2019. 9. 1. 16:38
안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 대망의 3부 배포에 대해 알아 보겠습니다. 배포를 위해 Fabric 이라는 python 라이브러리를 사용하겠습니다. GitHub에서 프로젝트를 clone 받아서 실행(runserver) 까지 실행하는 배포 스크립트를 만들어 보겠습니다! 1. Fabric 이란? Fabric은 SSH를 통해 원격으로 shell commands를 실행할 수 있도록 만들어진 Python (2.7, 3.4+) 라이브러리 입니다. 말그대로 우리가 local에서 만든 프로젝트를 배포하고자 하는 서버에 원격으로 배포를 할 수 있게 해주는 라이브러리 입니다. 물론 그냥은 아니고 SSH를 사용해서요! * Fabric 홈페이지 : https://www.fabfile.org/ Welcome ..
-
local 개발환경 세팅부터 배포까지 - 2부(docker-compose, ssh)💻 프로그래밍/K8s & Docker 2019. 8. 14. 06:56
안녕하세요! 운동하는 개발자 Jay입니다. 1부에 이어서 오늘은 docker-compose 를 통한 개발환경 세팅을 해보겠습니다. 1. docker-compose 란? compose는 도커 multi-container Docker application 들을 정의하고 실행시키는 Tool입니다. compose와 함께 YAML파일을 config로 application service를 사용 할 수 있습니다. 다음과 같은 세가지 step으로 compose를 사용할 수 있습니다. Dockerfile과 함께 app의 환경을 정의합니다. 그리고 이것은 어디서든지 (재)실행시킬 수 있습니다. docker-compose.yml 에 app을 만들기 위한 서비스를 정의하면, 독립적인 환경에서 함께 실행시킬 수 있습니다. do..
-
local 개발환경 세팅부터 배포까지 - 1부(Docker 란?)💻 프로그래밍/K8s & Docker 2019. 8. 11. 23:27
안녕하세요! 운동하는 개발자 Jay 입니다! local 개발환경 세팅부터 배포까지는 시리즈(?)로 포스팅 할 예정이며, docker로 개발환경 구축, fabric을 이용한 배포 까지 다룰 것 입니다. 오늘은 개발서버, 실서버 배포 전 로컬에서 테스트 할 수 있는 개발환경을 세팅에 대해 알아 보겠습니다. 1. local 개발 환경의 필요성 보통 자신의 로컬에서 개발을 하게되면 실제 서비스가 돌아가는 서버, 혹은 실서비스 전 개발서버에 배포를 하여 서비스의 동작을 확인합니다. 하지만, 아무런 테스트 없이 바로 개발서버, 실서버에 서비스를 배포하게 된다면 예기치 못한 장애와 버그들에 정신적 스트레스를 받을 수 있습니다. 그렇기에 로컬에서 우리가 만든 서비스를 테스트 할 수 있는 개발환경을 구성해야 합니다. 우..
-
쿼리를 줄이자! select_related vs prefetch_related💻 프로그래밍/Django 2019. 7. 21. 22:48
안녕하세요:D! 운동하는 개발자 Jay입니다. 회사에서 코딩을 하면서 가장 많이 했던 실수(지금도 하지만..) 중 하나가 불필요한 쿼리를 보내는 것이었습니다. 사실 SQL문에 대해 잘 알지도 못한 상태이기도 했고, 쿼리 보내는 코드를 잘 못 사용할 경우 서버가 다운될 수 도 있다는 생각 조차 하지 못했기 때문에...ㅎㅎ(로컬에서만 테스트하면 그럴 일이 없기 때문에..) 무튼 쿼리를 잘못 짜면, 반복적인 쿼리로 인하여 서버가 다운이 될 수 도 있습니다. 오늘은 Django ORM 사용할 때 Query 개수를 줄일 수 있는 방법 중 select_relaed, prefetch_related에 대해서 간단히 알아보도록 하겠습니다. * 쿼리셋과 캐싱 (알고 가야 할 내용) 각각의 쿼리셋은 DB에 Access 할 ..
-
LCS (Longest Common Subsequence) 최장 공통 부분 수열💻 프로그래밍/알고리즘 2019. 6. 23. 16:42
안녕하세요! 코딩하는 JAY입니다. 오늘은 오랜만에 알고리즘 포스팅을 하려고 합니다:D 오늘 포스팅할 내용은 LCS, 최장 공통 부분 수열입니다. 주의해야할 점은 LCS가 두개라는 점입니다. 1. 최장 공통 부분 수열 = Longest Common Subsequence 2. 최장 공통 부분 문자열 = Longest Common Substring 이 두개의 차이저을 아래 예시로 말씀드리겠습니다. 1. ABCD, ABZC = AB 2. ABCD, ABZC = ABC 1번과 2번 예시의 차이점을 아시겠나요? 아마 차이점을 바로 눈치채셨을것 같아요 ㅋㅋㅋ 1번은 두개의 문자열을 비교했을때, 연속적인 문자열을 추출합니다. 2번은 공통된 부분 수열을 추출합니다(연속X) 여기서 핵심은 연속이냐? 아니냐 입니다 ㅎㅎ ..
-
validation 체크 노가다를 줄여주는 Django form, modelform, formset 사용💻 프로그래밍/Django 2019. 4. 27. 19:21
안녕하세요! 코딩하는 JAY입니다. 오랜만의 포스팅이네요.. 항상 오랜만 ㅋㅋㅋ 오늘은 제가 회사 프로젝트를 하면서 진짜 고생 많이 하고, 배우게 돼서 정말 다행인 Form, ModelForm, Formset에 대해서 설명하겠습니다. 일단 각각의 정의(?)를 알아보겠습니다. 1. Form(in HTML): HTML폼은 사용자와 웹사이트 또는 어플리케이션이 서로 상호 작용하는 것 중 중요한 기술 중에 하나입니다. form을 사용하여 사용자는 웹사이트에서 웹서버로 데이터를 전송할 수 있습니다.(submit) 일반적으로 데이터는 웹 서버로 전송되지만 웹페이지가 데이터를 사용하기 위하여 사용할 수 도 있습니다. - 관련 참고글 : http://www.nextree.co.kr/p8428/ HTML : 폼(form..