전체 글
-
OkHttp VS Apache HttpClientcoding 2022. 2. 18. 17:21
새벽에 알림이 울렸다. 불길하다. 예감이 맞다. 장애가 발생했다. 허겁지겁 PC를 켜고 여기 저기 살펴봤다. 로그를 보고 깜짝 놀랐다. 예상과 달리 OkHttp에서 에러가 발생했다. 난 많이 쓰는 오픈소스라 안정성이 높을 거라 생각했다. 역시 버그는 나의 방심을 절묘하게 찾아 공격한다. 아~~ 머리 아프다!! 다시 도를 닦는 순간이다. 새로 개발하는 기능에 Okhttp를 도입했다. 기존 코드는 모두 Apache HttpClient로 개발했다. 내가 OkHttp를 도입한 이유는 이렇다. 사용법이 단순하다. 안드로이드에서 많이 쓰니 충분한 검증 왠지 대세를 안 따라가면 뒤쳐지는 느낌적 느낌 운영중 서비스는 고객사들의 상품을 크롤링하는 백엔드 시스템이다. 대용량 Http 요청이 기본이다. Apache Http..
-
(3) 튜링팀과 람다팀, 자바튜링과 람다 2016. 3. 18. 14:44
이 글은 월간 마크로소프트웨어 2015년 8월 자바 특집호에 기고한 글입니다. 원고가 길어서 두편으로 나눠 올립니다. 지금은 마소가 발행 중단되어 링크를 찾을 수 없습니다. # JVM 리그 프로그래밍 언어를 만들어야 하는 상황에 처했다고 생각해 보자. 풍부한 라이브러리와 좋은 개발툴이 지원되면 좋을 것이다. 개발자들이 좋아하는 Mac OS에서 개발도 하고 실행도 되면 좋겠다. 다양한 서버 환경에서 실행 되면 좋겠다. 이런 조건들과 많이 겹치는 게 하나 떠오른다. 바로 Java다. 만약 Java 언어를 빼고 JVM위에 새 언어를 실행할 수만 있다면 최고다. 다행히 Java는 이런 방식을 지원한다. Java 언어와 JVM은 실행에 있어 무관하다. JVM은 오직 Java bytecode만을 실행한다. Java..
-
(2) 튜링팀과 람다팀, 자바튜링과 람다 2016. 3. 18. 14:43
이 글은 월간 마크로소프트웨어 2015년 8월 자바 특집호에 기고한 글입니다. 원고가 길어서 두편으로 나눠 올립니다. 지금은 마소가 발행 중단되어 링크를 찾을 수 없습니다. # Java의 탄생 가상 머신 위에 애플리케이션을 실행하려는 사람들이 있었다. 마주한 환경은 녹녹치 않았다. 가상머신 위에 실행되는 Java는 1995년 제임스 고슬링(James Arthur Gosling)에의해 탄생했다. Java가 처음부터 지금의 모습은 아니었다. 20년을 보내며 많이 바뀌었다. Java가 태어날 당시 시대적 상황은 범용 언어인 C, C++이 대세였다. PC의 시대였고 Window가 시장을 거의 장악하고 있었다. Window에서 실행하는 소프트웨어를 개발하기 위해서는 Visual C++이나 비주얼 베이직로 개발해야..
-
(1) 튜링팀과 람다팀, 자바튜링과 람다 2016. 3. 18. 13:58
이 글은 월간 마크로소프트웨어 2015년 8월 자바 특집호에 기고한 글입니다. 원고가 길어서 두편으로 나눠 올립니다. 지금은 마소가 발행 중단되어 링크를 찾을 수 없습니다. 기계가 계산을 할 수 있다는 생각을 처음 한 사람은 누구일까? 계산하는 기계를 최초로 구현한 사람은 누구일까? 지금은 늘 손에 컴퓨터를 들고 다녀서 당연한 것들이지만 컴퓨터의 처음은 있었을 것이다. 이 당연한 컴퓨터를 만들기 위해 쏟은 열정에 관한 이야기다. 수학과 컴퓨터의 갈림 길에서 부터 시작한다. 만든 사람도 지금처럼 발전하리라 생각 못 했을 것이다. 수학으로부터 두 가지 흐름이 갈라져 나왔다. 튜링 머신 (Turing machine) 이미테이션 게임이라는 영화가 얼마전에 개봉했다. 같은 이름의 전기를 바탕으로 만든 영화다. 2..
-
Meta programmingcoding 2015. 7. 21. 18:25
메타프로그래밍은 코드로 코드를 생성하는 것이다. 코드를 데이터로 처리한다. 코드를 실행한 결과로 데이터 대신 코드가 리턴된다. 일명 Macro 라고도 한다. 이런 특성을 활용해 비슷한 코드를 줄일 수 있고 DSL(Domain specific language)를 만들 수 있다. 인공지능이나 분석에도 유리하다. 함수형 언어들이 대체적으로 메타프로그래밍을 지원한다. 메타프로그래밍은 두 가지가 있다. 첫 째는 코드로 코드를 생성하는 것이다. 둘 째는 코드로 코드를 생성하고 생성된 코드로 다시 코드를 생성한다. 첫 째는 한단계만 생성하는 것이고 둘 째는 몇 단계로 계속 생성하는 것이다. 보통 한단계 메타프로그래밍은 지원하는데 다중 메타프로그래밍을 지원하는 경우는 드물다. LISP, Clojure가 다중 메타프로그..