ListView에 header, footer가 있다는 것을 최근에 알았다. 이걸 몰라서 ScrollView 안에 있도록 작업하느라 상당히 곤란했었는데.... 어쨌든 원래 header, footer를 만들어 넣는 방법 자체는 어렵지 않다. 직접 View를 만들어서 ListView에다가 set 해주면 된다. 문제는 이런 방식이 개인적으로 별로 마음에 들지 않는다는 것이었다. 그냥 원래 레이아웃(ListView가 포함된)을 inflate할 때 자동으로 다 해줬으면 했다. 여기저기 분산되어 있는게 좀 맘에 안 들기도 했고... 아쉽게도 기본적으로는 불가능했다. 대신 ListView를 상속받아 확장된 커스텀 View를 만드는 것으로 가능하다. HeaderFooterListView라고 대충 이름 지었다. 소스는 g..
코딩으로 밥 벌어먹고 살다보면 당연히 남이 짠 소스를 많이 보게 된다. 그나마 실시간으로 같이 개발해나가는 과정에서는 괜찮은데, 누군가가 작업해놨던 프로젝트를 이어서 받는 경우엔 당혹스러운 경우가 종종 생긴다. 그 중 하나가 바로 컨텍스트에 관련된 문제들이다. 정말 괜찮은 프로그래머라는 가정 하에, 그들이 작업해놓은 코드는 일단 당시 상황상으로는 어쩔 수 없는 선택이었을 가능성이 높다. 그 이유로는 프레임워크 자체의 문제 등이 있다. (프로젝트 일정이 촉박해서 그런 경우는 제외하도록 하자. 뛰어난 프로그래머라면 시간이 부족하더라도 나쁜 코드를 남겨두는 경우가 드물다.) 이런 경우에는 내가 그 코드를 보고 "왜 이렇게 짰지? 분명 더 나은 방법이 있을텐데?" 하고 긴 고민을 해봐도 무용지물인 경우가 흔하다..
content에 유니코드가 있는 상태로 response를 그냥 만들어서 return 해버리면 unicode escape sequence(\u로 시작되는 문자열)이 출력되버린다. response를 받는 곳에서 알아서 encoding, decoding을 잘 하면 문제가 없지만 나 같은 경우에는 API 서버에서 return 값이 이런게 나온다는게 굉장히 맘에 안 들어서 해결하고 싶었다. 일단 브라우저에서 테스트하는 경우가 많은데 브라우저에서 볼 때 정상적인 한글 문자열을 볼 수가 없으니 좋지 않다고 판단했기 때문이다. 나 같은 경우에는 json 데이터를 출력해주기 위해 원래 Flask의 jsonfiy 함수를 이용하여 response를 만들어 return 시켰었는데, 이것이 문제였다. 내부적으로 유니코드들을 제..
프로토콜을 짤 때 CRLF 단위로 메세지를 구별하기로 했어서 StreamReader.ReadLine 메소드로 메세지 읽는걸 처리했었다. 인터넷에 검색하다보니까 통짜로 소스 올라와 있던게 있길래 조금 개량해서 썼다. 근데 이게 문제점이 NetworkStream에 메세지가 2개 이상이 왔을 때 발생했다. 동기 방식으로 구현했다보니 읽을 데이터가 있을 때만 ReadLine 메소드를 호출하게 해야해서 NetworkStream.DataAvailable로 ReadLine 메소드를 호출할 때를 확인했다. 그런데 ReadLine 메소드를 호출하면 NetworkStream에 있는 데이터를 일단 StreamReader에 가져와버려서 한 번에 여러개의 메세지가 와 있을 때 ReadLine 메소드 한 번으로 모든 메세지를 읽..
http://www.wisdomandwonder.com/article/6449/installing-jess-71p2-in-eclipse-4-2 위의 자료대로 따라하면 된다. 간단히 요약하면 jess 사이트에서 다운로드 받고, 다운로드 받은 압축파일을 압축해제 한 후 거기에 있는 eclipse 폴더의 내용물들을 eclipse 디렉토리에 추가하면 된다.각각의 압축파일을 풀면 4개는 plugin 디렉토리가 생기고, 1개는 feature 디렉토리가 생긴다. 각각의 폴더 내용물들을 eclipse 디렉토리 안의 해당 이름의 디렉토리 안에 옮겨준 뒤, eclipse를 재부팅하면 된다. 중요한 점은1. Luna 버전에서는 안 된다.2. Java 프로젝트를 만들고 거기서 돌리는데, Run을 할 때는 Java applic..
- Total
- Today
- Yesterday