본문 바로가기

전체 글

(230)
[leetcode 19] 리스트의 끝에서 N번째 노드 삭제하기 링크드리스트의 head가 주어졌을때 끝에서부터 n번째 노드를 삭제하시오. ex1 ) head = [1,2,3,4,5], n = 2 풀이법 그냥 풀면 어렵고 링크드리스트의 길이를 구한다음 풀면 쉽다. - 링크드리스트의 길이를 구하고 그 길이를 L 이라고 하자. - 그러면 삭제해야하는 노드는 L - n 번째의 노드가 된다. - L - n 번째노드를 L - n + 2 노드와 교체하면 끝 풀이 class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: dummy = ListNode(0) dummy.next = head first = head L = 0 while first: L += 1 first = first.next L -=..
[리트코드] max sliding window 문제 어떤 배열이 주어질때 k크기의 윈도우가 배열을 이동할때 최대 값들을 저장하여 배열로 리턴하라는 문제이다. leetcode.com/problems/sliding-window-maximum/ Sliding Window Maximum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 최적화 없이 풀기 사실 최적화만 하지 않아도 된다면 쉬운문제이긴 하다. O(kn) 으로 풀면 아래와 같다. 파이썬의 슬라이스 문법을 사용하여 슬라이딩 윈도우를 이동시키고, 그때마다 ..
파이썬 패키징, 배포 툴의 과거와 현재 개인적으로 배포 관련해서 관심이 많은 편인데, 파이썬을 꽤 오래 사용하고 있으면서도 파이썬을 잘 배포하려면 어떻게 해야 하는지 고민을 별로 하지 않은 것 같아서 좀 찾아보게 되었다. 결론을 미리 말한다면 현재는 그나마 안정된 상태이지만, 과거에는 혼파망(혼돈 파괴 망각)이 딱 어울리는 상황이었다. 이 글에서는 과거의 혼란했던 상황과 현재의 상태를 다룬다. 2000년 최초의 파이썬 패키징 라이브러리 distutils 필자가 파릇파릇한 신입생이던 시절인 2000년도에 파이썬 1.6.1에 처음으로 추가된 라이브러리이다. 파이썬이 첫 릴리즈 된 게 1991년이니까 9년 만에 패키징 라이브러리가 나왔다는 것이다. 또한 distutils는 정말 딱 파이썬 코드를 패키징 하는 기능만 있었다. 메타데이터를 수집은 하고..
Effective Unit Testing 지식을 전해주는 책과 지혜를 전해주는 책이 있는데, 이 책은 지식보다는 지혜를 전해주는 것에 초점을 맞춘책이다. 테스트를 그저 버그의 예방을 위해서 작성하는 경우가 많지만, 이 책은 한걸음 더 나아가서 테스트를 작성하면서 어떻게 소프트웨어의 설계를 점진적으로 개선해 나갈 수 있는지에 대해서 알아본다. 나는 아직 까지는 개발 하면서 테스트가 주는 이점 보다는 테스트 작성에 대한 부담을 많이 가지고 있다. 왜냐하면 처음에는 간단하게 시작되지만, 어플리케이션이 커지고 복잡해지면서 동시에 같이 양이 많아지고 복잡성과 유지보수 때문에 고민을 많이 하게 되기 때문이다. 테스트를 만들면서 설계를 단순히 하게되는 경험도 몇번은 있었지만, 테스트를 어떻게 효과적으로 잘 만들수 있는가에 대한 고민을 참 많이 했던것 같다...
자바스크립트 자료구조와 알고리즘 표지르 보면 알겠지만, 고슴도치 보인다. 오라일리 스타일의 동물이 있는 컴퓨터 서적이다. 이런 책은 보통 정말 딱딱한 경우가 많은데, 책이 두껍지 않아서 그런지 딱딱하다기 보다는 재미있게 읽은 것 같다. 자료구조와 알고리즘 책은 보통 C나 자바로 공부하는 경우가 대부분인 것 같은데, 자료구조 자체가 매우 유연하게 설계된 자바스크립트라서 그런지 책을 읽으면서 어렵다는 느낌보다는 '재미있다' 라는 느낌이 더 들었던 것 같다. 위의 사진을 보면 알겠지만, 책에 코드가 정말 많다. 그리고 설명은 그렇게 많지않다. 이 책의 저자는 마치 궁금하면 코드를 보고 생각해봐! 라고 말하는 것 같다. 이런 부분은 좋기도 하고 안좋기도 한데, 왜냐하면 이 책을 자바스크립트에 익숙하지 않은 사람이 본다면 무슨말을 하는 코드인지..
파이썬을 활용한 베이지안 통계 이 책은 누구를 위한 책인가?200페이지 정도되는 기술서적 치고는 매우 얇은 책이다. 보통의 C언어 기본서 같은 경우는 200페이지라면 거의 일주일 만에 볼 수 있지만, 이 책은 베이지안 공식을 활용해서 삶속의 다양한 문제들을 어떻게 푸는지 재미있게(?) 설명한 책인지라, 파이썬과 통계학을 동시에 알아야하는 책이다. 최근에 유행하는 학문트렌드인 융합의 장르가 되겠다. 그러면, 파이썬이 먼저인가 통계가 먼저인가? 이 책은 파이썬에 대해서는 거의 가르쳐주지 않는다. 책에 있는 예제를 풀기 위해서는 책의 저자 앨런 B. 다우니가 만든 'thinkbayes.py' 라는 파이썬 모듈을 사용해야하는데, 이 모듈은 numpy라는 모듈과 scipy 그리고 matplotlib이라는 모듈에 의존성이 있다. 그래서 파이썬을..
인포그래픽 잘 맹글기 http://blog.crazyegg.com/2013/01/16/beginners-guide-to-infographics/ 위의 링크에 있는 글을 간추린것. 1. 인포그래픽은 공유적인것(sharable)이다.2. 인포그래픽은 링크걸 때 사용할 쓸 무지 좋은 미끼꺼리다.3. 인포그래픽은 브랜드 인지도를 만들어준다. 인포그래픽을 어떻게 만드나?1. 주제를 정해라2. 정보/배경지식을 모아라3. 뼈대를 만들어라4. 컬러팔레트/그 이상의 것을 제공하라 인포그래픽 배포1. 이미지를 최적화하라2. 표준 이미지 포맷을 사용하라.3. 쉽게 공유가능하도록 페이지에 끼워넣기 가능한 html코드를 제공해라.4. 소셜 공유버튼을 달아라. 인포그래픽 자랑하기1. 소셜미디어에 공유해라.2. 당신의 업계의 블로거들에게 접촉해봐라.3..
유저추가하기 root계정으로 들어가자gyus라는 유저를 추가해보자.adduser gyus비밀번호를 설정하자.passwd gyus패스워드 설정하기
[ubuntu]scala, play2 설치, 제거 스크립트 아래 링크에 있는 걸 해볼려고 가상머신 우분투에 열심히 설치했는데, 다시 설치하는 귀찮음을 방지하기 위해 공유함.http://yobriefca.se/blog/2012/05/08/starter-for-10-scala/?utm_source=twitterfeed&utm_medium=twitter 몽고디비는 스크립트화할수 있으나..그냥 apt-get install mongodb로 설치하시길... (이거는 나중에 생각나면 만들어서 올릴게요. ; ) http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages (요거 보고 따라하세용)스칼라 설치#!/bin/bashwget http://www.scala-lang.org/downloads/distrib/files/sc..
[scip]연습문제 1.3 문제를 한글로 누가 적어놓은 사람 없나..ㅠㅠ ;Exercise 1.3. ;Define a procedure that takes three numbers as arguments and ;returns the sum of the squares of the two larger numbers.(define (sum a b) (+ a b)) (define (square a) (* a a)) (define (largerNumber2 a b) (cond ((> a b) a) ((= a b) a) ((< a b) b) ) )(define (largerNumber3 a b c) (square (sum (largerNumber2 a b) (largerNumber2 a c))))(largerNumber3 2 2 2) (l..
[nodejs] [아웃사이더]님 책3장 노드의 기본모듈 정리 3장 노드의 기본모듈 (1,2장은 그냥 읽기만 했음 설치는 아래 링크 참조)http://godpage.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1004%EC%97%90%EC%84%9C-nodejs%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 - 개인적으로 여러버전을 사용하려고 할때 환경변수의 패스를 수정하는게 아니라 심볼릭 링크를 만들어서 연결하는게 편한것 같음. 책에는 안나와 있지만..- process : 노드js의 프로세스에 관한 모듈 nextTick : CPU연산이 많은 작업을 비동기로 실행할수 있도록 도와주는 메서드란다. nextTick에 등록된 함수는 바로 실행하지 않고 이벤트 큐에 등록한다. 싱글스레드가 현재 작업을 완료하고 나서 다..
Subversion의 프로퍼티 자주 쓰는거 소스관리 프로그램은 개발자라면 거의 쓰고 있을 텐데, 알면 편한 Subversion의 프로퍼티들을 정리한다. (사실 누가 정리해놓은거 있으면 그냥 그거 보고 싶은데 없는듯?! ) 락이 필요한파일인 경우 svn:needs-lock : *파일의 타입지정 svn:mime-type : 커밋할때 무시 svn:ignore : *파일에 실행권한을 부여(chmod 755 * 랑 같음) svn:executable : *윈도우즈랑 리눅스랑 개행을 운영체제에 맞게 자동으로해줌 svn:eol-style : native
eclipse에서 자바 코드 템플릿 사용하기 외우고 있는 코드를 매번 쓰는건 꽤나 귀찮은 작업이다. 그래서 이클립스에 템플릿으로 등록해놓고 사용하니 매우 편하다. 이클립스의 Windows -> Preferences순으로 클릭하면 Preferences 화면이 나온다. 여기서 Java > Editor > Templates 순으로 가야된다. 내가 자주 사용하는 건 테스트 케이스 static 클래스 임포트랑 로그 변수를 자동으로 입력해주는 템플릿을 자주 사용한다. 등록해보자 log4j 변수용으로 하나 만들고 테스트 케이스 클래스 임포트 용으로 하나 만들자. addlog를 타이핑하고 컨트롤과 스페이스를 같이 누르면 addlog라고 뜰것이다. 그걸 선택하면 아래와 같이 템플릿으로 설정한걸 이클립스에서 넣어준다. 아래는 템플릿 추가할때의 구문들이다. log4j..
[리눅스 명령어] rm 정리 rm [-dfirv] 파일명/디렉토리명 -d : 디렉토리의 링크를 제거한다. 관리자 권한 필요 -f : 존재하지 않는 파일이 있어도 에러를 내지 않는다. -i : 파일을 삭제해도 좋은지 확인한다. -r : 디렉토리를 재귀적으로 삭제 -v : 로그를 표시해줌 사용예 $ rm file1* [file1 로 시작하는 파일을 모두 삭제] $ rm -r dir1 [dir1 디렉토리를 삭제 - 하위폴더 포함]
카산드라의 한계들 아래글은 http://wiki.apache.org/cassandra/CassandraLimitations 여기 있는 글을 발로 번역한겁니다.. ;-) 변경이 안될것 같은 것 - 모든 데이터는 하나의 머신의 하나의 로우로 있어야 한다. 왜냐하면 row키는 단지 리플리케이션을 위한 노드를 결정하는데 쓰이며, 모든 데이터는 하나의 키로 연결되어 있기 때문이다. - 하나의 컬럼값은 2기가 이상 커질수 없다. (큰값들이 메모리에 읽기 요청이 들어오는 것보다는 "작은 수의 MB"가 더 적절하다. ) - 컬럼당 row의 최대값은 2000,000,000(20억)개이다. - 키와 컬럼명은 64키로 바이트 이하이어야 한다. 현재 코드 베이스의 산물들 - 카산드라는 키와 컬럼이라는 2단계의 인덱스를 가지고 있다. 슈퍼패밀리..
System.currentTimeMills() 랑 Date().getTime()중에 어느게 더 빠를까? System.currentTimeMills()가 더 빠르다. Date 클래스의 생성자에서 System.currentTimeMills()를 사용하고 있으니 Date를 생성하는 비용이 플러스로 더 든다. public Date() { this(System.currentTimeMills()); } 그러니깐 그냥 현재시간의 밀리세컨드를 구하고 싶으면 그냥 System.currentTimeMills()를 쓰자. OK? 만약에 시간을 더 잘게 쪼개서 보고싶다..?! 라고 한다면, System.nanoTime()을 쓰자. 나노초까지 보여준당. long startNano = System.nanoTime(); //뭔가 CPU에게 일을 시키자 long elapsed = System.nanoTime() - startNano;..
Astyanax 조사#1 카산드라의 모니터링 툴을 만드는 중인데, 클라이언트도 조사할 필요가있어서 정리 차원에서 일단 발번역. 이상한 부분이 많겠지만, 저의 영어실력이 미천하여..ㅠㅠ 원문은 아래에 있습니다. http://techblog.netflix.com/2012/01/announcing-astyanax.html 다음에는 카산드라 맛보기 코드를 올려야징. Astyanax는 뭔가용? - 넷플릭스에서 공개한 오픈소스 카산드라 클라이언트 - 헥터의 코드를 리팩토링해서 만듦. 이름도 헥터의 아들이름인 아스타이낙스 - 헥터에서 많은 컨셉을 빌려왔다. - 컨넥션풀과 클라이언트 API구현은 다르다. - 중점적으로 다룬 관심사는 컨넥션풀과 카산드라 각각을 커스터마이즈하고 개별적으로 개선할수 있도록 둘의 API사이에 깔끔한 추상화를 제공하..
[nodejs]nodejs로 만들어본 간단한 파일 서버 아래 링크에 있는 예제인데, 버전이 달라서 그런지 그대로 치면 안돌아간다.. 그래서 최신 버전(그래봐야 0.6)으로 변경해서 올림. http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ 파일명 simpleStaticFileServer.js 실행 $ node simpleStaticFileServer.js 브라우저에서 아래 URL에 접속 http://localhost:8080/simpleStaticFileServer.js 요딴식으로 나온다. (파일경로를 정확히 지정해 줘야하니 살짝 귀찮.....ㅡㅡ;) 소스 var util = require("util"), http = require("http..
우분투 10.04에서 node.js설치하기 패키지 매니저로 설치하기 이렇게 sudo apt-get install python-software-properties sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs 또는 요렇게 sudo apt-get install nodejs-dev 소스를 받아서 컴파일 소스를 받아서 컴파일 해서 설치하고 싶은 사람은 아래를 보시길 nodejs의 소스를 받아온다. wget http://nodejs.org/dist/v0.6.8/node-v0.6.8.tar.gz /usr/local/에 압축을 풀고 심볼릭 링크를 걸어줌. $ mv node-v0.6.8.tar.gz /usr/local/ $ cd /usr/l..
GenericObjectPool 메모 GenericObjectPool의 설정에 관한 메모이다. 아래의 사이트에서 번역해 온 내용임을 밝힌다. 누군가 벌써 해놨을지도 모르지만.. http://commons.apache.org/pool/apidocs/org/apache/commons/pool/impl/GenericObjectPool.html 설정가능한 ObjectPool의 구현체 적절한 PoolableObjectFactory과 관련하여 GenericObjectPool은 임의의 오브젝트에게 견고한 풀링을 기능적으로 제공한다. GenericObjectPool은 수많은 설정가능한 파라메터를 제공한다. * maxActive : 주어진 시간에서의 풀(클라이언트가 보고있거나, 대기상태에 있는)에 의해 할당되어 관리되는오브젝트의 최대수. 설정이 양수가 아닌..
[펌]아마추어와 프로의 차이 여기서 펌 http://blog.daum.net/jg997/2329281 1.프로는 불을 피우고, 아마추어는 불을 쬔다. 2.프로는 자신이 한 일에 대해 책임을 지지만, 아마추어는 책임을 회피하려고 급급 한다. 3.프로는 기회가 오면 우선 잡고 보지만, 아마추어는 생각만 하다 기회를 놓친다. 4.프로는 돌다리도 두드리고 건너지만, 아마추어는 두드리고도 안 건넌다. 5.프로는 자신의 일에 목숨을 걸지만 아마추어는 자신 일에 변명을 건다 6.프로는 여행가이고, 아마추어는 관광객이다. 7.프로는 남의 말을 잘 들어주고, 아마추어는 자기 이야기만 한다. 8.프로의 하루는 25시간이지만, 아마추어의 하루는 24시간뿐이다 10.프로는 뚜렷한 목표가 있지만, 아마추어는 목표가 없다. 11.프로는 행동을 보여 주고, ..
homebrew 설치관련 링크 http://dalinaum-kr.tumblr.com/post/2986196227/hello-homebrew 여기보고 따라했는데 잘된다. .bash_profile은 없으면 만들자. /etc/.bash_profile /$user/.bash_profile 순으로 적용된단다. 아래꺼는 내꺼 설정 앨리어스 (알리어스?)랑 패스설정해줬다. #bash_profile alias ll='ls -al' alias ls='ls -vGF' PATH=$PATH:$HOME/bin:/usr/local/bin:/usr/loca/sbin 적용은 user$ source ~/.bash_profile 해주면 됨! 요거는 리눅스시스템에서의 환경설정 파일 설명해놓은 링크 http://chanyi.egloos.com/4491641
[vim] .vimrc 파일 없을때 맥으로 c 프로그래밍좀 공부할려고 했드만 vim에서 문법에 색을 안입혀주는게 아닌가..?! 그래서 찾아보니 .vimrc파일을 수정해주라네.. 근데 찾아보니 없음. ㅡㅡ; 개발자 정신을 발휘한다면... 없으면 만들라?! 그래서 찾아보니 진짜 없으면 만들면 됨..ㅡㅡ; 순서는 이렇소. $ cd ~ $ vi .vimrc [.vimrc파일 내용] " add for next lines set tabstop=4 set ai " auto indenting set history=100 " keep 100 lines of history set ruler " show the cursor position syntax on " syntax highlighting set hlsearch " highlight the last s..
java Enum 정리 Enum 열거형. 가장 간단히 enum을 정의 하는 법 enum EnumName { EnumValule1, EnumValue2, ... } EnumValue의 젤 뒤에 세미콜론을 넣어도 오케이 enum EnumName { EnumValule1, EnumValue2, ...;} EnumValue의 젤뒤에 컴마랑 세미콜론을 넣어도 오케이(생긴건 약간 이상함) enum EnumName { EnumValule1, EnumValue2, ...,;} EX) enum Gender {MALE, FEMALE} enum Status {STAT1, STAT2, STAT3;} enum 종족 { 휴먼, 엘프, 드워프, 호빗, } 사용법 enum에 정의된 EnumValue는 정수(public static final) 처럼 취급 ..
새로운 공부/놀거리 발견 요즘에는 정말 개발하기 편한게 너무 많이 나온다. DB도 관계지향적 DB에서 요즘에는 NoSQL이라는 것도 나오고... 자바로 스트러츠2 + 스프링 + 마이바티스로 연결해서 쓸때에 너무 소스 코딩을 많이 해야되어서 굉장히 불편했는데.. 자바도 쾌속개발이 가능한 툴들이 계속 나오고 있다. 7월달에 샘플코드라도 돌려 봤으면 하는 것들 리스트를 정리해두려한다. mongodb 공식사이트 : http://www.mongodb.org/ 한글 강좌 : http://www.ibm.com/developerworks/kr/library/j-morphia/index.html?ca=drs- 소개 블로그 : http://blog.doortts.com/178 한글 서적 : http://www.yes24.com/24/goods/5..
[APM 환경구축#2] 아파치 & php 설치하기 apache 설치 #설치할 폴더로 이동 > cd /usr/local/ #설치파일 받기 > wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.19.tar.gz #압축풀기 > tar zxvf httpd-2.2.19.tar.gz #설정하기 - 시스템 체크 makefile 생성 > ./configure --prefix=/usr/local/apache --enable-module=so --enable-mods-shared=all --enable-so --enable-ssl=shared --with-ssl --enable-rewrite #컴파일하기 설치하기 > make > make install 아직 까지는 간단! PHP 설치 PHP는 아래 링크를 참..
[APM 환경구축#1] centos에 mysql 5.5.13 설치하기 자세히 나와 있는곳이 없어서 너무나 큰 왕삽질을 했다...ㅠㅠ 5.5.x 버전은 cmake라는 걸 이용해서 컴파일을 해야하는데 우선 cmake라는 녀석부터 설치를 해보자. #CMAKE 설치에 필요한 라이브러리 설치 > yum -y install zlib curl > yum -y install gcc g++ cpp gcc-c++ > yum -y install openssl openssl-devel > yum -y install libtermcap-devel ncurses-devel libc-client-devel bzip2-devel > yum -y install bison #CMAKE를 받자 >wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz #압축 풀고..
이클립스에서 m2eclipse 설치후 webapp 폴더 여는게 귀찮을 때 소나타입의 페이지에 있는 m2eclipse 설치하기를 그대로 따라하면 될 것을... 괜히 인터넷에서 찾아보고 했다.. m2eclipse를 설치후에 참으로 고민되는게 webcontents 폴더를 여는게 무진장 귀찮다는 것인데... 이클립스에서 한방에 보이게끔 하는 플러그인이 또 따로 있었다. m2eclipse가 설치된 상태에서 설치해야하는데.. 성질 급하신분들은 아래링크에서 영어로 읽으시고. http://m2eclipse.sonatype.org/installing-m2eclipse.html 그냥 m2eclipse Extras라는 플러그인을 하나더 설치해주시면 된다. 아래처럼 하면됨. 1. m2eclipse를 설치한다. 2. m2eclipse Extras를 설치한다. m2eclipse Extras 업데이트 ..
APM apche php mysql 연동 정리된 링크 http://www.lovelgw.com/Blog/entry/Apache 참 고마우신 분이다..^^;
리눅스에 sendmail 설정하기 http://sangchul.kr/4888388