http://www.quicklisp.org/
유사한놈들이 몇가지 있지만 윈도우에서 쓰긴 어려워서 수작업으로 다운받는 식으로 쓰곤 했는데 저놈은 윈도에서도 그럴듯하게 돌아간다. 잘 기억해두자.
헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤헤
2010년 10월 21일 목요일
2010년 10월 1일 금요일
xmarks 가 살아나나..
http://blog.xmarks.com/?p=1945
에버노트 유료유저가 2% 정도였군...
흠.
기억해둘만한 수치다.
dropbox 수치도 궁금해 지는데 찾아보면 나올라나?
http://gigaom.com/2010/03/26/case-studies-in-freemium-pandora-dropbox-evernote-automattic-and-mailchimp/
에버노트 유료유저가 2% 정도였군...
흠.
기억해둘만한 수치다.
dropbox 수치도 궁금해 지는데 찾아보면 나올라나?
http://gigaom.com/2010/03/26/case-studies-in-freemium-pandora-dropbox-evernote-automattic-and-mailchimp/
2010년 9월 28일 화요일
xmarks 가 문닫다니
http://www.reddit.com/r/programming/comments/djw05/xmarks_shutting_down_in_jan/
reddit, YC news 등등 난리났군
현재 메인링크는 내려간 상태라 reddit 링크 걸어둔다.
foxmarks 시절부터 정말 잘 쓰던 놈이고 dropbox 처럼 한번 깔고 잊어버리면 되는 킹왕짱 서비스였는데 정말 아쉽다.
reddit, YC news 등등 난리났군
현재 메인링크는 내려간 상태라 reddit 링크 걸어둔다.
foxmarks 시절부터 정말 잘 쓰던 놈이고 dropbox 처럼 한번 깔고 잊어버리면 되는 킹왕짱 서비스였는데 정말 아쉽다.
2010년 8월 25일 수요일
do {...} while(0) 와 C4127 워닝
http://cnicholson.net/2009/03/stupid-c-tricks-dowhile0-and-c4127/
참고하자.
난 위글중 덧글에서 제시한 false 를 리턴해주는 인라인 함수를 쓰는 방식을 사용중.
음 역시 워닝레벨 높이면 여러모로 피곤하다.
추가.
아래쪽 덧글에 false 리턴하는 인라인 함수를 부르는 코드가 최적화되면서 날아가지 않고 바이너리에 남는 다는 말이 있네. 좀더 읽어보고 써야 겠다.
참고하자.
난 위글중 덧글에서 제시한 false 를 리턴해주는 인라인 함수를 쓰는 방식을 사용중.
음 역시 워닝레벨 높이면 여러모로 피곤하다.
추가.
아래쪽 덧글에 false 리턴하는 인라인 함수를 부르는 코드가 최적화되면서 날아가지 않고 바이너리에 남는 다는 말이 있네. 좀더 읽어보고 써야 겠다.
2010년 8월 11일 수요일
GUI 프로토타이핑 툴들
오리지날 위키에 정리가 잘 되어있다.
http://c2.com/cgi/wiki?GuiPrototypingTools
무료이고 코딩없이(비개발자가) 사용가능해야 한다는 조건으로 몇개 찾아봤는데
pencil 이 가장 나아보인다.
http://pencil.evolus.vn
http://c2.com/cgi/wiki?GuiPrototypingTools
무료이고 코딩없이(비개발자가) 사용가능해야 한다는 조건으로 몇개 찾아봤는데
pencil 이 가장 나아보인다.
http://pencil.evolus.vn
2010년 7월 9일 금요일
haskell 로 Win32 HelloWorld 만들어봤다..
haskell 에 Win32 패키지가 어느정도 써먹을수 있는지 궁금해서 google 에서 win32 api hello world 코드를 찾아내서 haskell 로 옮겨봤다. 다시 생각해보면 미친짓이었음.
http://www.codepedia.com/1/Win32APIHelloWorld
http://www.codepedia.com/1/Win32APIHelloWorld
펼쳐두기..
--
-- http://www.codepedia.com/1/Win32APIHelloWorld
--
-- haskell 에 Win32 패키지가 있길래 대강 구글링해서 찾은 아래 코드를
-- haskell 로 옮겨보려고 시도해봤다. 창을 띄우긴 했지만 여러모로
-- 문제가 남은 상태..
--
-- Win32 패키지로 GUI 코딩하는건 미친짓이다.
-- C++ 로 api 써서 창띄우는것도 짜증나는 일인데..
--
import Control.Exception
import Control.Monad
import Foreign
import Graphics.Win32
import System.Exit
import System.Win32
import Data.Bits
-- 시작부터 어려웠다. ClassName 만드는데 mkClassName 이 쓰인다는거
-- 알아내는것부터 시작해서 hInstance 얻어오기 등등..
--
-- 어쨌거나 기본적인 win32 어플을 돌리기 위한 RegiserClass,
-- CreateWindow, ShowWindow, UpdateWindow, GetMessage, DispatchMessge
-- 등은 모두 불러 쓸수 있다.
--
main = do
inst <- getModuleHandle Nothing -- WinMain 은 인자로 주지만 여기선 그런거 없다.
className <- newTString "Hello" -- 이거 메모리 안새나? 코드 따라가보면 runRegionT 까지 떨어지는데 저게 뭔지 당최 모르겠네.. 아 mkClassName 이라고 unsafe 함수도 있으니 기억해두자
atom <- register inst className -- 리턴받아봐야 쓸모없지만 코드를 이쁘게 할라고..
hwnd <- create inst className 400 300 "안녕" wndProc
wasVisible <- showWindow hwnd sW_SHOWNORMAL -- 마찬가지 리턴받을 필요 없지만..
() <- updateWindow hwnd
messagePump hwnd
-- 윈도 클래스 등록
register inst className = do
let style = foldr1 (.|.) [cS_VREDRAW, cS_HREDRAW]
icon = Nothing -- loadIcon
cursor = Nothing -- loadCursor
brush = Nothing -- getStockBrush,...
menuName = Nothing
registerClass (style, inst, icon, cursor, brush, menuName, className)
-- 윈도 생성
create inst className width height title wndProc =
let wndName = title
style = wS_OVERLAPPEDWINDOW
x = Nothing
y = Nothing
w = Just width
h = Just height
parent = Nothing
menu = Nothing
proc = wndProc
in do
createWindow className wndName style x y w h parent menu inst proc
-- 메시지 펌프, getMessage 리턴값보고 깔끔하게 종료하는 부분은 못짰음
messagePump :: HWND -> IO ()
messagePump hwnd = allocaMessage loop
where loop wm = forever $ do
getMessage wm (Just hwnd) -- 음 종료처리를 어떻게 하지? getMessage 에서 FALSE 리턴 주기 전에 익셉션이 떨어져버린다. 예외 잡아야 하나?
dispatchMessage wm
-- 윈도 프로시져.. 씨바 존내 성가심. WM_PAINT 에 뭔가 그럴듯한거 뿌리려다 그냥 포기했다.
wndProc :: WindowClosure
wndProc hwnd wm wparam lparam
| wm == wM_DESTROY = do
-- 어라.. postQuitMessage 가 없다.
-- postMessage 도 없다.
-- 소스 뒤져보면 postMessage 는 TODO 로 표기되어있다...
-- 그리고 WM_QUIT 보내면 getMessage 에서 FALSE 떨어질줄 알았는데 여전히 익셉션만 잡힌다...
sendMessage hwnd wM_QUIT 0 0
print "quit"
return 0
| wm == wM_PAINT =
allocaPAINTSTRUCT $ \ps -> do
withDC hwnd ps $ \dc -> do
-- 어라.. drawText 뭐 이런게 안보인다. 만만한 도형이나 몇개 그려보자
rc <- getClientRect hwnd
brush <- createSolidBrush $ rgb 100 100 100
fillRect dc rc brush
deleteBrush brush
brush <- createSolidBrush $ rgb 200 200 200
fillRect dc (10,10,100,100) brush
deleteBrush brush
return 1
| otherwise =
defWindowProc (Just hwnd) wm wparam lparam
-- begin..end 는 전형적인 bracket 사용케이스겠지. 근데 이걸 쓰니 읽기가 더 흉하다?
withDC :: HWND -> LPPAINTSTRUCT -> (HDC -> IO a) -> IO a
withDC hwnd ps body = bracket open close body where
open = beginPaint hwnd ps
close _ = endPaint hwnd ps
2010년 7월 7일 수요일
msvc 디버깅 커맨드 윈도우
http://msdn.microsoft.com/en-us/library/c785s0kz.aspx
간단히 말해서 gdb 에서 call fun() 을 하려면 visual studio 에서는 ? fun() 하면 된다.
visual studio 는 거의 안써서 매번 까먹음ㅋ
간단히 말해서 gdb 에서 call fun() 을 하려면 visual studio 에서는 ? fun() 하면 된다.
visual studio 는 거의 안써서 매번 까먹음ㅋ
2010년 7월 5일 월요일
emacs-for-python
http://gabrielelanaro.github.com/emacs-for-python/
저놈을 쓰고 싶은 욕구는 당장 없지만 PyFlakes 라는놈이 눈에 보이길래 적어둔다.
pycheck, pylint 모두 써봤는데.. 다음엔 저놈 한번 써보자.
저놈을 쓰고 싶은 욕구는 당장 없지만 PyFlakes 라는놈이 눈에 보이길래 적어둔다.
pycheck, pylint 모두 써봤는데.. 다음엔 저놈 한번 써보자.
2010년 6월 25일 금요일
AstroGrep
http://astrogrep.sourceforge.net/
보통은 gnu global, cscope 등의 태그 프로그램이나 hgtk 의 검색기능을 쓰지만
가끔 급하게 내가 관리하지 않는, 그것도 생소한 언어의 소스들을 뒤져볼때가 있다.
그럴때 윈도 상황이라면 xp 의 검색기능을 종종 썼었는데..
윈도7 검색기능은 병신이 됐더라.
급히 파일내검색을 하고싶은데(grep) win7 은 정말 머저리 같이 돌더군.
적절히 뒤져서
http://superuser.com/questions/60173/how-to-search-inside-files-in-windows-7
에서 AstroGrep 이란걸 알게되서 사용중.
보통은 gnu global, cscope 등의 태그 프로그램이나 hgtk 의 검색기능을 쓰지만
가끔 급하게 내가 관리하지 않는, 그것도 생소한 언어의 소스들을 뒤져볼때가 있다.
그럴때 윈도 상황이라면 xp 의 검색기능을 종종 썼었는데..
윈도7 검색기능은 병신이 됐더라.
급히 파일내검색을 하고싶은데(grep) win7 은 정말 머저리 같이 돌더군.
적절히 뒤져서
http://superuser.com/questions/60173/how-to-search-inside-files-in-windows-7
에서 AstroGrep 이란걸 알게되서 사용중.
피드 구독하기:
글 (Atom)