2011년 9월 19일 월요일

primes less than 100

(-. c e. ,/ c */ c) # c =. }. >: i. 100

100보다 작은 소수를 출력한다. 아... 어렵네. c는 임시변수.

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

2011년 9월 16일 금요일

average = sum divided by count

average =. +/ % # average 1 2 3 4 5 3 김창준 씨를 통해서 알게된 J라는 언어는 참 특이한 언어다. 기존에 알고 있던 프로그래밍의 틀을 깬다고 해야 하나? 가끔씩 매뉴얼을 들여다보고 도전해보지만 늘 어렵다. ㅠ.ㅠ

2011년 9월 8일 목요일

no comments

re.sub(r"(?s)/\*.*?\*/", "", source)
re.sub(r"//.*", "", source)

주석을 제거한 코드가 필요하여 작성한 코드이다. 정확하지는 않지만 그럭저럭 쓸만하다. 이 두 줄을 작성하는데도 많은 시행착오를 겪어야 했다. 완성하고 나면 뿌듯하지만 ...

2011년 9월 7일 수요일

bsearch

void * bsearch ( const void * key, const void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

잘 쓰이지는 않지만 이미 구현되어 있다! C의 한계 덕분에 인자는 다섯 개나 되고, 그 중 두 개는 void *, 하나는 void* 두개를 받는 함수 포인터라는 정말 못생긴 모양을 갖게 되었지만... 직접 구현하거나 구글에서 출처를 알 수 없는 코드를 복사하여 붙여넣기보다는 그냥 구현되어 있는 것을 이용하는 것은 어떨까?

--코드리뷰하다가

2011년 9월 6일 화요일

font family

<span style="font-family:맑은 고딕">어쩌구 저쩌구</span>

폰트라는 것이 해당 시스템의 상황에 따라 달라질 수 있기 때문에 CSS에서는 대표적인 5개를 명시해놓았다. 폰트패밀리를 지정할 때 선호하는 순서대로 나열할 수 있는데, 그중 마지막은 대표폰트 5개 중 하나를 지정해주는 것을 권장한다.

그렇지 않을 때는? 큰 기대를 하면 안되지... 그런데도 위처럼 '맑은 고딕'으로 해놓는 경우가 아직도 많은 것 같다. 제대로 안보이면 어쩔수 없고.. 라는 의미인가? 안타깝다.

twitter followers

import simplejson, urllib
print simplejson.load(urllib.urlopen('http://api.twitter.com/1/users/show.json?screen_name=jooyunghan'))['followers_count']

작년 말, 팀원들이랑 서로 트위터에서의 팔로워 수를 비교해 본 적이 있다. 200명 정도는 되어야 하지 않겠냐는 말도 나왔다. 오랜만에 다시 살펴볼 겸해서 트위터 팔로워 수를 가져오는 코드를 만들어봤다.

2011년 9월 2일 금요일

throw up

Exception up = new Exception("Something is really wrong.");
throw up;

발표 끝에 재미난 코드를 추가하려고 검색하다가 발견한 것. Exception을 만들면서 변수에 담아본 적이 없는데 그걸 깨트리니 이런 재미가 생기는구나.

-- 어딘지는 까먹었음.

2011년 9월 1일 목요일

testMethod()

public void whyMyTestMethodDoesntRun() { ... }

JUnit을 이용하여 단위테스트를 하다가 자신이 만든 테스트 메소드가 실행되지 않아서 고민하는 개발자님~ JUnit3까지는 테스트메소드의 이름이 test~ 로 시작해야만 한답니다.

JUnit4에서 어노테이션을 사용한 이유가 있었네.

-- 실제 경험에서

compare ints

return v1 - v2;

정수형의 비교함수를 구현할때 간단하게 이렇게 했던적이 많았는데, v1이 큰 양수고 v2가 큰 음수라고 하면 오버플로가 발생하여 잘못된 결과를 가져올 수 있다.

-- 'the Practice of Programming' 에서

list size == list asSet size

어떤 리스트에 담긴 값들이 서로 다른지 확인해야 하는 경우에 직접 이중루프를 돌리는 것보다는 이미 제공되는 set 라이브러리를 이용하면 어떨까?

new TreeSet(list).size() == list.size();

추가1. Set은 요소들의 중복을 처리해준다는 점을 응용한 것이다. 어떤 리스트에서 중복을 제거하고 싶을때도 set을 이용하면 된다.

Hello world

printf("Hello world");

이 한줄을 시작으로 참 많은 코드를 작성해왔다. 물론 내가 처음 돌려본 프로그램은 기억도 잘 나지 않는 BASIC 프로그램이었지만 C를 배우면서 처음으로 프로그램을 배운것 같다.