2009년 2월 27일 금요일

haskell 동영상 강의

Video Lectures
Lectures (in English) by Jürgen Giesl. About 30 hours in total, and great for learning Haskell. The lectures are 2005-SS-FP.V01 through 2005-SS-FP.V26. Videos 2005-SS-FP.U01 through 2005-SS-FP.U11 are exercise answer sessions, so you probably don't want those.

우왕국. http://www.haskell.org/haskellwiki/Tutorials 에서 찾은 링크인데 잠깐 들어보니 좋네. 딴나라 말이라 좀 난감하긴 한데 독일사람이 영어하는거라 좀 들을만 하다...(발음이야 좀 이상하지만 느리게 말해주는 편. 뭐 강의 뒤쪽가면 말이 빨라지거나 하진 않겠지....)

2009년 2월 26일 목요일

웹기반 IDE bespin

http://labs.mozilla.com/projects/bespin/

당장은 이딴거 관심 밖이지만 기억은 해두자.
협업 에디팅을 지원하는 에디터들 중에는 그나마 쓸만 할것 같은데
어쩌다 가끔 필요하긴 하니까..

추가.
가입하고 잠깐 써봤는데 절라 느리네.
한글입력이 안되는거 같기도 하고
되는지 안되는지 확인이 어려울 정도로 느린걸 보니 뭔가 좀 비정상인거 같은데

emacs 기반 개발환경을 제공하는 common lisp 로그라이크 엔진

RLX: a cross-platform graphical roguelike engine

emacs 를 저렇게도 활용하네.
스샷에 보이는 cell 모드가 이 http://www.emacswiki.org/emacs/CellMode 셀모드인가 아님 따로 만든건가.. 어쨌건 셀모드 사이트는 링크가 지금 죽은 상태.

그외 걸린 링크들도 그럴싸해보이길래 적어둔다.

소스는 아직 안받아보고 스샷만 구경한 상태..
그런데 플레이어 입장으로 보면 별로 재미있어 보이는 스샷은 아니네. 낄낄

2009년 2월 24일 화요일

haskell 로 간단한 소켓 서버와 클라이언트 제작 두번째

이전글 에서는 코드가 전체적으로 Socket 기반으로 돌아가는데 뭐랄까.. 이게 그다지 좋은 방법이 아닌가보다. haskell 의 경우 입출력이 Handle 을 통해서 이루어지게 디자인 되어있어서 Socket 을 바로 입출력에 쓰기엔 제공되는 api 들이 좀 난감한 면이 있다.

그래서 이전 코드에서 세션핸들러 함수들이 Socket 을 받던것을 Handle 을 받도록 수정해봤다. 그리고 핸들(소켓) 을 닫는 책임을 세션핸들러 쪽으로 옮겨버렸다... 세션함수 작성시 클로즈를 잊지말고 해야 하는 부담이 있긴 하지만 이게 좀더 유연할거 같다.


이건 서버쪽 소스

펼쳐두기..

이건 클라이언트쪽 소스

펼쳐두기..





haskell 로 간단한 소켓 서버와 클라이언트 제작

이건 서버 소스. serveTcp 가 핵심. 이 함수에 포트번호와 소켓핸들러 함수를 넘기면 된다.

펼쳐두기..


이건 클라이언트 소스

펼쳐두기..


으음... 이건 패킷이 너무 단순해서 별 의미는 없지만 위에 withTcp 나 serveTcp 는 자주 쓰일 함수들이라 적어둔다. 다음에는 현재 Socket 기반인것을 Handle 기반으로바꾸고.. 바이너리패킷을 쏘는걸 한번 만들어보고.. 그담엔 서로 주고받는걸 만들어보자...



2009년 2월 20일 금요일

MozRepl 자바스크립트 REPL 환경

웹개발은 전혀 모르고 자바스크립트도 마찬가지지만 자바스크립트가 REPL 스타일 개발이 된다길래 적어둔다. 언젠가 공부해야 할 상황이 오면 필요하겠지.

자바스크립트는 http://www.slash7.com/articles/2006/07/26/javascript-boot-camp-tutorial 보면 대강 어떤지 이해가 가겠더라. DOM 쪽 들어가면 좀 난감해지긴 하지만 ECMA script 자체는 존나 좋군.

2009년 2월 19일 목요일

netcat

으음.
netcat.. 존재를 알고는 있지만 막상 필요할때는 항상 까먹어서 걍 스크립트질하기 때문에 지금껏 써본적이 없는 놈. socat 은 처음알았네.

기억해두고 다음엔 좀 써먹어보자.

2009년 2월 17일 화요일

haskell 로 프로젝트 오일러의 22번 문제를 풀어봤다

-- http://projecteuler.net/index.php?section=problems&id=22

import Data.List(sort)
import Data.Char(ord)

-- 으험.. 스플릿 함수가 안보이네. 직접 만들어봤는데 좀 추해보인다.
split :: Char -> String -> [String]
split c s = split' [] s
where split' acc [] = acc
split' acc s = let (tok, remains) = break (==c) s
in split' (tok:acc) (safeTail remains)
safeTail [] = []
safeTail x = tail x

-- 문자열들을 받아서 , 로 스플릿 하고 앞뒤에서 한글자씩 잘라냈다.
-- 따옴표 제거
names s = map (tail . init) $ split ',' s

nth x = (ord x) - (ord 'A') + 1 -- 'A' 에서 몇번째 문자냐
scoreName = sum . map nth -- 이름의 점수
scoreIndexedName (name,index) = (scoreName name) * index -- 점수에 인덱스 곱

solve input =
let splitted = names input -- 쪼개고
sorted = sort splitted -- 정렬하고
indexed = zip sorted [1..] -- 인덱스붙여서
scores = map scoreIndexedName indexed -- 점수내고
in sum scores --

main = do
input <- readFile "/tmp/h/names.txt"
print $ solve input

2009년 2월 13일 금요일

앵밴드 매크로 인스크립션 도움말

몇달에 한번씩 로그라이크를 하는 편인데 앵밴드는 키를 여러번 눌러야 할 일이 많아서 매크로가 필수고 이걸 자꾸 까먹길래 여기 적어둔다.

출처는 http://www.thangorodrim.net/help/inscriptions.html 이곳.

A Really Quick Guide to Magic Inscriptions..


예를 들어 현재 플레이중인 프리스트는 위 예제처럼 첫번째 마법책을 @p1!d!k!v 이라고 해놓고 매크로에서 f12 를 누르면 p1fp1gp1aR\r 를 실행하게 해서 그지역에 쓸쑤있는 탐지마법들을 뿌리고 마나 회복까지 끝내도록 해뒀다..

매크로에 리턴을 포함시키려면 \r 쓴다는거.. 나중에 다시 하려고 하면 기억 못하겠지.


2009년 2월 11일 수요일

haskell-mode 에서 ^J 가 찍혀대는 문제 해결

http://www.nabble.com/problem-with-echo-prompting-in-ghci-(visible-in-emacs)-td20451779.html

ghc 6.10.1 로 올리고 haskell-mode 도 올리고 보니 이런 문제가 생기네.
적당히 구글링해서 해결.


혹시나 내용백업해둔다.

펼쳐두기..