일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 레일즈 캐시
- iamport
- trouble shooting
- 노마드코드
- redis
- API
- Rails
- 재태크
- Watcha pedia
- HTTP
- 경제
- 레일즈
- Cache
- django
- 주식
- 사업
- 북클럽
- 아임포트
- CU
- restful
- memcached
- redis transaction
- 노마드코더
- 투자
- 노개북
- Race Condition
- Python
- rails cache
- transaction
- Today
- Total
목록전체 글 (45)
Stay hungry, Stay foolish

개발을 하다가 한글이 이렇게 깨지는 것을 본적이 있으신가요? 원인은 encoding 설정이 잘못되어있기 때문입니다. 그러면 encoding이 무엇인지 살펴보겠습니다. encoding 이란 컴퓨터는 기본적으로 정보를 0, 1 Binary로 정보를 읽고 쓰고 하는데 우리 휴먼들은 01011101110000111 이걸 가지고 읽어보라고 하면.. 대략 난감할텐데요. 그렇기 때문에 숫자, 문자를 아래와 같이 binary로 치환된 문자열 set 을 가지고 컴퓨터는 정보를 읽고 쓰는거라고 할 수 있습니다. 이렇게 문자를 컴퓨터가 알아볼 수 있는 binary 로 바꿔주는 것을 문자 encoding 이라고 합니다 그렇다면 문자가 깨지는 이유는 뭘까? 위키에서 문자 인코딩을 찾아보면 종류가 엄청 많군요... 초창기에는 미..
최근에 코테를 봐야 할 일들이 많이 생겨서 부랴부랴 코테 공부를 하고 있습니다. 반복적으로 풀다보면 깨닫은 것 중 하나가 for loop 중 최댓값 or 최솟값 등을 체크 해야하는 문제들이 더러 있는데, loop 안에서 arr 전체에 max or min 메서드를 사용하면 O(n**2) 이 되어 버립니다. 이런경우는 이 전 max or min_cnt 등의 변수에 저장시킨 값과 현재 loop를 돌며 나온 cnt의 값을 비교시키는 방법을 사용하면 효율을 개선시킬 수 있습니다! 문제랑 코드 보겠습니다. You are given N counters, initially set to 0, and you have two possible operations on them: increase(X) − counter X is..

어느날 파이썬으로 프로그래밍을 하게된 날, 개발 공부를 python으로 시작했다고 말씀드리니 CTO 님께서 GIL에 대해 아는지 여쭤보시더군요 ?? GIL ?? I don'know what is it.. But, That word is rings a bell... GIL 이라는 단어 파이썬 공부를 했다면 뭔가 설명은 못하더라도 들어본것 같기는 합니다. 파이썬에서 GIL 모르면 파이썬 모르는거다 라고 까지 말씀을 해주시니 자세히 알아봐야겠다라고 생각했는데, 감사하게도 이번 파이콘에 세션 주제로 있더라구요! 해당 내용을 정리해보겠습니다! 먼저 GIL은 Global Intrepreter Lock의 약자인데 Lock은 여러 워커가 동시에 동일한 자원에 접근을 할 때 Violation 이 발생 할 수 있는상황을 ..

Iamport 를 활용한 결제 시스템 개발 과정을 이야기해보려 합니다. Iamport 적용 방법, 매뉴얼 등은 공식 document 에 상세히 나와있습니다 :) 저희 서비스는 순수 B2B 만을 통해서 수익을 창출하고 있었습니다. 하지만 오랜 기간 서비스를 진행하며 제품에 대한 검증은 어느 정도 마쳤으니 B2C로 확대를 해보자!라는 게 올해의 목표였죠. 올해에만 현재까지 총 4명의.. 개발팀 퇴사를 겪으며.... 여름이 다가올 무렵 B2C 신규 프로젝트가 시작되었습니다. 일단 제품 판매를 하려면 결제가 되어야 하는데... Ruby on Rails 언어 지원이 안되는 PG 사들이 많아 시간이 오래 걸릴 수 도 있겠다 싶었습니다. 그런데 찾아보니 2년전 MVP 단계에서 간단하게 구현된 결제 모듈이 존재하더군요..

decimal 로 설정하기 싫었으나 어찌 표현할 방법이 없어서 decimal 로 저장한 column 이 생겼다. 출력해보니 0.5 => 0.5e0 같이 지수로 저장되어 있더라.. 컴퓨터에서 decimal 로 연산하면 100% 정확한 값을 얻기는 어렵다. 예를 들어 0.1 + 1.1 == 1.2 -> false 가 나온다. 이렇다고 한다... 왜일까 실수의 저장 컴퓨터는 모두 2진수로 데이터를 저장하고 통신한다. 정수의 경우에는 2 -> 00000010, 20 -> 00001100 이런식으로 2진수로 저장하는데 무리가 없다. 하지만 실수의 경우에는? 2의-1승 은 0.5 -2승은 0.25 -3승은 0.125 -4승은 0.0625 ... 10진수 0.125 는 2진수 0.001 로 표현하면 된다. 하지만 1..

현재 운영하고 있는 서비스의 인덱스 페이지가 많이 아팠습니다. 페이지를 렌더링 하는 시간이 프로덕션 기준 7s (로컬에서는 10s 를 넘겼습니다 ㅠㅠ) 를 넘어가는 끔찍한 상태였습니다. 저 정도 로딩 속도면 유저분들 다 도망갔어도 할 말 없습니다... 근본적으로 개선을 하긴 해야겠다 마음먹었습니다. 음.. 근데, 어디가 문제지...? 해결과정 route53, nginx loadbalancer 부터 다 뜯어봐야 하는 건가... 싶어 절망할 뻔했으나 일단 눈에 보이는 것부터 체크하기로 했습니다. 무식하지만 정직하게 체크했습니다. 컴포넌트를 하나씩 빼서 그 부분만 렌더링 시키며 속도를 확인해 보는 방식으로 말이죠. 이런 식으로 컴포넌트를 하나씩 꺼내면서 속도가 유독 느리다 싶은 부분을 확인하다 보니 문제는 비..

브라우저의 기본 구조 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다. 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어. 렌더링 엔진 - 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시함. 통신 - HTTP 요청과 같은 네트워크 호출에 사용됨. 이것은 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행됨. UI 백엔드 - 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용. 자바스크립트 해석기 - 자바스크립트 코드를 해석하고 실행. 자료 저장소 - 이 부분은 자료를 저장하는 ..

내가 재직 중인 회사는 실시간 멘토링 서비스를 위해 Zoom의 thirdparty api를 이용한다. 그중 멘토링 클래스에 참여한 참여자들의 참석시간을 실시간으로 관리하며 내부 admin 및 고객 측에 제공하는 자료로 활용 중인데 해당 참석시간이 찍히지 않는 버그가 생겼고 이를 해결한 과정에 대해 작성해 보고자 한다. 아래 그림은 해당 기능에 관련된 flow 차트이다 위 flow 간 문제를 탐색하는 과정은 데이터가 보이지 않는 View file code에서부터 역산하며 탐색을 진행했다. Flow 간 문제 탐색 과정 1️⃣. DB(registrant) ← Contoller(zoom_webhook) View file에서 보이지 않는 zoom 참석시간의 데이터는 registrant 테이블의 joined_at ..

지금은 팀원들을 위한 어드민 운영 툴을 만드는 입장이지만, 작년까지만 하더라도 저 또한 어드민 운영툴을 사용하는 직원이었습니다.당시에는 루틴하게 자주 쓰는 기능인데도 반복적으로 불필요한 작업들이 반복되어야만 해서 굉장히 투덜거리면서 일을 했었습니다. 정확히 1년 10개월 정도 재직했었는데, 퇴사하기 몇 개월 전 해당 운영툴이 획기적으로 바뀌더군요. 감동이었습니다. 불필요하게 낭비되는 시간도 많이 줄었고 이미 퇴사는 마음먹었지만 이상하게 약간의 애사심..? 도 생기더군요 ㅎㅎ..현재 다니고 있는 회사의 상황을 보자면, 일단 팀원들이 야근을 너무 많이 합니다... 그리고 그걸 당연하게 생각하는것도 너무 가슴 아프더군요... 그래서 저는 옆자리에 야근 자주 하는 팀원을 계속 염탐했습니다 👀 사실 기존에 개발..

나의 유튜브 리스트는 개발, 요리, 운동, 경제 네 개의 카테고리가 90%를 차지한다. 그중 최근에 가장 재밌게 보고 있는 경제 유튜브 중 하나가 이분이다. 일단 최근에 알게 되었는데 거시적으로 접근하는 분석법이 상당히 임팩트 있고 인사이트가 뛰어난 분이라고 생각된다. 근데... 두둥탁 강연을 한다고 하시네...?? 이런 분의 살아온 이야기를 해준다는데 놓칠 수 없지.. 나의 학창 시절 이야기를 잠깐하자면 내가 동생, 후배들에게 항상 해주는 이야기가 빚내서 여행 다녀라.. 였다. 그런 말을 하는 가장 큰 이유는 경험이었다. 나를 성장시키고 남들에 비해 경쟁력을 갖추는데 가장 효과적이고 효율적인 건 당연 경험이라고 생각한다. 경험에는 간접경험과 직접 경험이 있는데, 취준생 시절 직장 경험이나 사업 등 다양..