분류 전체보기
-
정규 표현식의 분류에 따른 차이점과 올바른 사용법Programmer/Computer Science 2015. 1. 19. 15:54
정규 표현식은 개발이나 운영에 중요한 도구다. 매뉴얼이 없어도 자유자재로 사용할 필요가 있다. 이 글은 유사성을 묶어서 알아야 하는 내용을 줄이고, 각 분류 간의 차이점을 드러내어 지식을 확장하는 방법을 사용하였다. 분류는 기본 정규식, 확장 정규식, 펄 호환 정규식(PCRE, Perl-Compatible Regular Expressions), 이맥스 정규식으로 나누어 살펴보겠다. 표준 정규식 정규 표현식 의미 . 임의의 한 문자 [] 문자 클래스 [^] 부정 문자 클래스. 문자 클래스 안의 문자를 제외한 나머지를 선택 ^ 문자열이나 행의 시작 $ 문자열이나 행의 끝 * 앞 요소를 0회 이상 {n} 앞 요소가 n개 {n,} 앞 요소가 n개 이상 {n,m} 앞 요소가 n개 이상, m개 이하 () 하위식. ..
-
초반에는 문제의 원인을 충분히 넓게 잡아라.Programmer/Programming 2014. 7. 15. 18:09
파일 읽기 플러그인에 다수의 기능을 추가했다. 추가된 기능은 원격 파일 읽기, 버퍼 읽기, 캐시 등이 있다. 원격 파일을 읽는 기능이 이전 버젼에 비해서 과도하게 CPU를 점유하고 있었다. 분석의 과정이 없이 추론에 근거하여 새로 추가된 원격 기능과 캐싱 알고리즘만을 의심했다. 그리고 내 시스템과 연동하는 HTTP 프록시 서버의 문제일 수 있다는 생각도 했다. 이전에 이런 접근 방법을 경고하는 글을 적었음에도 나란 인간은 같은 실수를 되풀이했다. 경험과 직감에만 의존한 추측과 코드 수정, 그리고 결과 보기를 반복했다. 이후 동료의 조언으로 프로파일링의 접근을 시도하였다. 이번 문제의 원인을 찾기 위한 제대로된 분석의 첫번째 시도였다. 아뿔싸! 나란 인간은 또다른 문제를 가지고 있었다. 여러번의 프로파일링..
-
문제를 인지하고 정의하는 능력이 중요하다Leader/Developer Leading 2014. 7. 1. 11:51
박상민님의 카카오 김범수 이사회 의장의 인터뷰의 중요 내용을 적었다. 박상민 / Sang-Min Park @sm_park 5월 30일http://m.mt.co.kr/new/view.html?no=2011101714343203791 늦게 읽은 카카오 김범수님 기사. "문제를 해결하는 능력보다, 문제를 인지하는 능력, 문제를 정의하는 능력이 어마어마하게 더 중요하다" --> 진리라 생각함. 박상민 / Sang-Min Park @sm_park 5월 30일"자신이 좋아하는 영역에 대한 스킬을 쌓으면서 동시에 관점을 바꿔 세상을 볼 줄 아는 것, 그 두개가 딱 만나는 선에서 답이 나오는 거 같아요." --> 진정 고수다운 생각.
-
리스프 개발 팁: 명령창 결과 저장하기Programmer/Programming 2014. 6. 27. 10:38
리스프에서 개발하기 가장 좋은 도구는 REPL 명령창이다. 따라서 저장할 내용을 표준 출력으로 보내면 개발이 수월할 것이다. 예를 들어, 당신은 `MY-SAVE' 함수를 개발하고 있다. 이 함수는 인자 `FNAME'으로 받은 파일명에 당신의 데이타를 저장한다. 개발 과정에서 수시로 파일을 열어서 내용을 확인해야 한다. 불편하다. REPL 명령창에 저장할 내용을 바로 확인하면 개발이 훨씬 편하겠다. 데이타를 저장할 형태로 가공하여 REPL 표준 출력하는 함수 `MY-WRITE'를 작성하자. 이 함수의 구현과 검증은 REPL을 벗어날 필요가 없다. 이제 함수 `MY-SAVE'는 단지 표준 출력을 저장할 파일에 연결한 후에 `MY-WRITE'를 호출하면 된다. (defun my-save (fname) (wit..
-
리습의 개발 방법을 배우자: 함수의 구현Programmer/Programming 2014. 6. 26. 10:37
구현이 어느정도 명확해졌으면 주로 바텀-업 방식을 사용한다. 바텀-업은 구현 결과를 눈으로 확인하며 구현하는 장점이 있다. 다소 복잡한 구현부가 있으면 스텁 함수(stub functions)로 대체한다. 스텁 함수를 사용하는 것은 이전 포스트에서 설명하였다. 스텁 함수를 예상하는 결과로 동작하도록 하드코딩 하는 것도 좋은 트릭이다. 2014/06/20 - [Programming/Functional] - 리습의 개발 방법을 배우자: 대도 웜퍼스 게임의 설계 2014/06/24 - [Programming/Functional] - 리습의 개발 방법을 배우자: 함수와 하위 함수의 설계 이번 포스트에서는 엣지 리스트를 연관 리스트(association lists, 줄여서 alist)로 변환하는 함수를 개발한다. ..
-
리습의 개발 방법을 배우자: 함수와 하위 함수의 개발Programmer/Programming 2014. 6. 24. 11:36
상위 함수에서 하위 함수를 구현해 나가는 것을 탑-다운 방식으로 설명하보겠다. 보통 큰 틀을 설계할 때는 탑-다운 방식이 적합하다. 2014/06/20 - [Programming/Functional] - 리습의 개발 방법을 배우자: 대도 웜퍼스 게임의 설계 2014/06/26 - [Programming/Functional] - 리습의 개발 방법을 배우자: 함수의 구현 이 게임의 배경이 되는 도시를 만든다. 주인공이 처음 방문한 도시이기 때문에 매 게임마다 새로운 도시를 만들어야 한다. [규칙 3.2] 새로운 도시를 만드는 것은 새 지도를 만드는 것이고, 지도라 함은 경로의 집합니다. 우리는 경로를 그래프로 표현한다. 경로의 끝이나 교차점을 노드라고 표현한다. 엣지는 경로의 최소 표현 단위로써, 두개의 노..
-
리습의 개발 방법을 배우자: 대도 웜퍼스 게임의 설계Programmer/Programming 2014. 6. 20. 16:06
1. 캐릭터 1.1. 리스프 에일리언 (주인공) 1.1.1. 총알 하나가 장전된 권총 1.2. 웜퍼스 (당신이 쫓고 있는 배신자) 1.2.1. 총상을 입었음 1.2.2. 성능 좋은 AK-47 소총을 가지고 다님 1.3. 반딧불이 (도시의 갱단) 1.3.1. 마주치면 행인을 눈을 가린채 다른 장소로 내던짐 1.3.2. 빛을 냄 1.4. 경찰 1.4.1. 주인공과 웜퍼스를 찾고 있음 1.4.2. 도로 중간에 장애물을 설치함 1.4.3. 싸이렌을 울림 2. 배경 장소 2.1. 도시 2.1.1. 처음 방문한 도시 3. 규칙 설계 3.1. 주인공의 공격이 실패하면 게임이 끝남 (1.1.1) 3.2. 매 게임마다 도시의 구성(장소, 도로, 다른 캐릭터의 위치 등)을 새롭게 만듬. (2.1.1) 3.3. 주인공은 임..