본문 바로가기

dev

(13)
납량 특집 개발 Quote 여름을 맞아 납량특집 Quote Big Ball of Mud데이터 구조는 무계획하게 구축됐거나 없는 것과 마찬가지다. 모든 것이 서로 꼬여있다. 중요한 상태 데이터는 모두 전역변수에 담겨있는 것 같다. 상태 데이터가 구획화되어 있더라도 시스템의 원래 구조를 사용하지 않고 뒷구멍으로 무분별하게 넘긴다.변수와 함수 이름은 알아보기 힘들거나 오해의 소지가 있다. 함수는 별 생각없이 정의한 긴 파라미터 목록을 가질 뿐 아니라 전역변수로 범벅이 되어 있다. 함수는 길이도 길고 복잡하게 꼬여 있을 뿐 아니라 관련 없는 작업을 여러 개 수행한다. 코드는 중복되어 있다. 제어흐름은 이해하기 어렵고 쉽게 따라갈 수도 없다. 프로그래머의 의도를 알아보는 것은 거의 불가능하다. 코드는 읽을 수도 없고 해독도 불가능해 보인다..
iBeacon에 대한 오해 애플이 내놓은 iBeacon때문에 요즘 비컨에 대해 자주 언급되는데, 꼭 풀었으면 하는 오해가 하나 있다. "비컨이 다양한 정보를 수집한다는 것"요즘 시중에 나와 있는 비컨(beacon)이라고 불리는 BLE기반 소형 장치들의 역할은 단 하나. 미리 입력되어있는 정보를 주기적으로 내보내는(broadcasting)하는 것. (그나마 그 정보들도 간단한 숫자 2개와 몇몇 문자열들로 된 단순정보임)비컨 자체에는 개인정보나 이동기록 등을 수집하는 기능이 전혀 없기 때문에 애초에 불가능한 일이다.민감한 정보들을 수집한다면 비컨을 활용하는 서비스가 있고 해당 서비스의 어플리케이션이 정보수집을 하는 것이다."그게 그거지 않냐"라고 하면 동의 없이 위치정보를 수집하는 앱이 나쁜거지 GPS센서가 잘못한거냐.라고 되묻고 싶..
vim 에서 split 한 후 열려있던 파일이 readonly 로 바뀔 때 ubuntu 12.04LTS를 새로 설치하고 vim을 사용하는데 sp와 vs로 여러개의 창을 열다 보니 가끔 기존에 열린 파일이 RO모드 (read only)로 바뀌는 현상이 일어난다. 아래와 같은 순서대로 파일을 열면 재현이 가능하다.vim foo.txt:vs . 로 현재 디렉토리 browsing 시작 (vs는 vsplit의 shortcut. 세로로 창이 나뉨)bar.txt 선택해서 열기 (커서는 bar.txt에 머물러 있다)Ctrl+W을 두번 눌러 foo.txt 창으로 커서를 옮김:sp . 으로 현재 디렉토리 browsing 시작방금 sp로 열린 새 창에 커서가 있어야 하지만 foo.txt창에 커서가 있고, foo.txt는 readonly로 바뀌어 수정이 불가능하다! 해결책: http://stacko..
ndk-build clean 시에 Syntax error 발생할 땐. 안드로이드 개발중 ndk를 사용하다가 clean을 하는데 아래와 에러가 나는게 아닌가.~/android-ndk-r8e/ndk-build cleanClean: gnustl_shared [armeabi-v7a]/bin/sh: -c: line 0: syntax error near unexpected token `('/bin/sh: -c: line 0: `rm -rf (TARGET_OBJS)'make: *** [clean-gnustl_shared-armeabi-v7a] Error 2알아보니 ndk r8e 버전에서 에러가 있다고 한다. 아래와 같이 고치면 bug fix 완료.$(ndk-dir)/build/core/build-binary.mk에서$(cleantarget): PRIVATE_CLEAN_FILES := ..
Data visualization에 관한 글. Harvard Business Review에 실린 Sinan Aral형님의 글을 오랜만에 읽었다. To Go from Big Data to Big Insight, Start with a Visual 내용부터 요약하자면 다음과 같다. NY times의 특정 기사에 대해 트위터 상에서 회자되며 나타나는 행동들 (해당 기사 언급, 대화-멘션-, 리트윗 등등)트위터로부터 NY times로 들어오는 트래픽의 양 (트위터 유저가 해당 기사 url을 클릭해서 기사를 읽는 행동) A와 B를 서로 비교해보면서 얻고자 하는 insight는 다음과 같다. 온라인에서의 행동이 컨텐츠 소비와 어떤 관계가 있는지 이해하고, 예측을 하기 위함 입소문을 통해서 사람들이 특정 기사를 얼마나 많이 읽고, 구독하고 이것이 광고 reven..
한번에 Python dictionary 여러개 생성 마땅한 파이썬 디버그 툴을 쓰지 않기 때문에 가끔 삽질을 좀 할 때가 있는데, 오늘의 삽질 이야기.종종 dictionary여러개가 필요해서 dictionary의 list를 U = [{} for i in rage(10)] 이런식으로 만들어서 사용하곤 했다.며칠전에 파이썬 레퍼런스를 뒤져보다가 예제 코드에 [{}]*10 이라고 써진 걸 보고는, “오 짧네” 하고 생각없이 썼는데 이게 오늘 아침에 삽질하던 원인이었음.결론부터 얘기하면[{}]*10 은 dictionary하나를 생성해서 그 reference 10개의 list를 주고[{} for i in range(10)] 은 실제로 서로 다른 dictionary 10개를 생성해서 return실제로 아래처럼 각 object의 주소가 같고 다른걸 확인!>>> [nx..
개발자와 테스터 테스터와 프로그래머는 대립하기도 한다. 프로그래머는 테스터가 버그를 찾아낼 때 공격받는다고 느끼기도 하지만, 테스터가 출시 전 버그를 찾는 것이 출시 후 버그가 나타나는 것보다 훨씬 더 낫다는 점을 명심해야 한다....프로그래머와 테스터 모두 같은 편이며 고품질 제품을 내놓아야 한다는 공동 목표가 있음을 명심해야 한다.테스트는 경험이 없는 신입에게 흔히 주어지는 역할이다. 이 역할을 맡긴 했지만 프로그래밍직을 원하고 있다고 해도 걱정할 필요는 없다. 테스트에는 좋은 점이 있다. 프로그래머가 되었을 때 쉽게 놓칠 수 있는, 최종 사용자 시각에서 제품을 바라보게 된다는 점이다. 회사에 가장 중요한 것이 있다면 그것은 최종 사용자 가치다."신입 개발자 생존의 기술. 지속적 성장을 위한 33가지 실천법" 중에서..
JNI 각 type별 Signature 알아내기 jni를 이용해서 cpp를 작성할 때 type에 따라 다른 signature를 필요로 할 때가 있는데 외우자니 머리는 꽉 차있고, 매번 찾아서 쓰자니 귀찮다. 그럴 땐 간단히 터미널에서 javap -s를 이용하면 됨.myClass.class 파일이 있는 경로에서 (e.g. 이클립스의 경우 bin/classes/com/example/mypackage)$javap -s myClass 를 입력하면 각 변수와 함수에 해당하는 signature를 알려줌.