분류 전체보기
-
[회고] 소주 1병 조지고 쓴 1년차 개발자의 아찔했던 순간들👨🏻💻 개발자 제이의 이야기 2019. 11. 27. 23:19
안녕하세요 저는 현재 판교에서 백엔드 개발자로 일하고 있는 JAY라고 합니다. 이번 글은 1년동안(2018-11-12 ~ 2019-11-12) 회사에서 했던 대표적인 실수와 어려웠던 점(?)에 대해 이야기 해보려고 합니다. (조금 프리하게 이야기하듯이 작성했으니 양해 부탁드려요!) 1. 월급루팡.. 나야나! 나야나! (혼돈의 카오스 회사 적응기) - 1개월차🤪 전 직장에서 지옥같은 2년을 보내고 2018년 11월12일에 지금의 회사에 입사했다. 전 직장(제조업)에서는 말이 개발자였지, 하는 일은 CS, 제조, QA, 문서... 뭐 대략 이런 일들이 90%였다. 물론 차장급 위이신 분들은 임베디드 개발, 서버 개발을 하셨고 정말 재밌어 보였다.(사실 이런걸 하고 싶..었는데..) 우리(아니 전)팀은 TCM..
-
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”와 같은 문자열은 전혀 압축되지 않습니다. “어피치”는 이러한 단점을 해결하기 위해 문자열을..
-
python에서 비동기 프로그래밍 하기 (feat. Asyncio)카테고리 없음 2019. 10. 1. 19:28
안녕하세요! 오늘은 Asyncio 라이브러리에 대해서 알아보겠습니다. Asyncio는 파이썬에서 비동기 프로그래밍이 가능하도록 해주는 라이브러리 입니다. 본문에 들어가기 앞서 동기(synchronous) , 비동기(asynchronous)에 대해서 간략히 알아 보겠습니다. 1. Synchronous(동기) vs Asynchronous(비동기) 동기(synchronous)는 어떤 작업이 실행되고, 그 작업이 처리되기 까지 다른 작업을 실행할 수 없습니다. 처음 실행한 작업이 처리되고 난 다음 순차적으로 다음 작업이 실행됩니다. 반면에 비동기(asynhronous)는 한 작업이 실행하고, 작업이 처리되고 끝날 때까지 기다리지 않고 다음 작업을 실행합니다. 처음 실행한 작업이 끝났다고 신호가 오면 다시 처리해..
-
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 할 ..