tag: 개발 이야기

뜻을 가늠하기 어려운 개발언어 용어들

2013년 5월 12일

얼마 전 생활코딩에서 즉시실행 익명함수라는 표현을 보고 깜짝 놀랐다. 근래에 JavaScript로 몇번 개발을 해봤다면 예제를 보면 이게 무슨 의미인지 바로 이해할 수 있겠지만 "이건 아무래도 과하지 않은가" 라고 생각했다. 이렇게까지 거창한(?) 이름이 붙는 내용이었나 하고.

개발을 배우다보면 첫눈에 이해하기 힘든 한자 조어들이 꽤 있다. 함수, 변수와 같은 용어도 프로그래밍 강의 첫시간에 나와서 쉽게 쓰는거지 그 자체로 상당히 어려운 용어다. 객체 생성자, 논리 연산자 정도는 어떤 내용을 정의한 단어인지 쉽게 이해(내지는 유추) 할 수 있지만 대리자, 비동기와 같은 단어는 쉽게 내용을 생각해내기 어렵다. 용어의 정의는 모두가 동의할 수 있고 그 정의한 용어가 해당 용례에 대한 대표성을 띌 수 있어야 한다. 용어 함의적이라면 문제가 생길 수 밖에 없다.

물론 개발에만 국한된 것이 아니라 대다수의 학문에서 사용되는 용어가 과도하게 한자로 조어되는 경향이 있다. 한자문화권이기에 이해도 되고, 서양-일본-한국의 경로로 학문이 들어오는 경우도 적잖은 영향이 있을듯 하다. 배경은 뒤로 밀어두고서 단순히 직역해 한자로 옮겨 조어를 만드는게 올바른가에 대해 좀 생각해볼 필요가 있다.

영어권 환경에서 일을 하다보니 가장 크게 느끼는, 한국과 다른 점은 용어에 대한 설명이 거의 필요 없을 정도로 쉽게 이해한다는 점이다. 디자이너도, 세일즈도, CS담당자도 모두 개발용어를 거침없이 쉽게 사용한다. 영어권이니까. 그 개발용어 자체로도 별다른 설명없이 알 수 있다는 것이 얼마나 큰 장점인지 모른다. 그런 언어적 이점에 명확한 설명을 선호하는 문화적 배경이 영어권 IT기업이 가지는 장점이라고 본다. (이와 관련해서는 적자면 내용이 더 많을 것 같아 여기까지)

단어만으로 더 쉽게 이해할 수 있는 개발언어 용어를 만들 순 없을까. 모두가 쉽게 이해할 수 있는 용어는 위에서 말한 것처럼 충분히 매력적이다. 한자어로 단어를 만들더라도 단순 사전식 직역 말고 보다 정서에 맞게 옮길 순 없을까. 앞서 언급한 즉시실행 익명함수를 예로 해보면, 함수란 원래 호출하면 바로 실행되는건데 즉시실행이란 표현도 좀 재미있는듯 하다. 익명함수는 어딘가에 선언 없이 바로 사용하는거니까, 임시함수 실행, 호출 정도가 되지 않을까. (하루종일 고민한 단어가 이 수준이라 아쉽긴 하지만;)


추가. 작성하고 나니 이전에 SICP 번역서가 생각났는데, 쉽게 풀어쓴 용어가 기존에 조금이라도 알고 있던 사람들에게는 요즘말로 멘붕을 야기했다는 후기. 차라리 한자로 쓴, 이전의 용어체계가 훨씬 이해하기 쉽다는 얘기였다. 쉽게 이해할 수 있는 용어는 매력이 있지만, 그런 용어의 정의는 역시 말처럼 쉽게 되지 않는다.

새로운 테마로 변경 Twenty Twelve

2012년 11월 14일

오랜만에 wp 사이트에 들어가서 좋은 테마 없나 찾자마자 튀어나온 새로운 테마 Twenty Twelve. 2012년 9월부터 제공했는데 여태껏 보지 못했다니 내가 너무 소홀했나보다.

이전 Twenty Eleven 과 같이 Responsive Design이 적용되어 있으며 테스트해본 결과 상당히 Twenty Eleven에 비해 훨씬 깔끔하고 이쁘다. 기본 글꼴도 Open sans로 설정되어 미려함을 더해준다.

Twenty Eleven에 Open Sans를 적용해 썼었는데 글꼴 자체가 이런 깔끔한 분위기에 더 맞는듯 하다. 오랜만에 정말 제대로 설레는 테마가 나온듯!

내려받기는 아래의 링크에서 가능하며 wp 대시보드에서도 당연히 바로 설치 가능하다.

http://wordpress.org/extend/themes/twentytwelve

Mercurial, totoiseHg 에서 리비전 기준으로 파일 추출하기

2012년 10월 1일

몇번이고 키워드를 바꿔 검색해봤지만 나오질 않았다. 그래서 영어로 검색했더니 바로 나오는… 영어로 검색하면 커맨드 라인으로 추출하라느니 얘기가 많이 나온다. 혹시나 같은 고민 하는 분 있을까 싶어 글을 적어본다.

업데이트 또는 특정 이유로 인해 해당 리비전에서 업데이트 된 파일을 추출할 경우 TortoiseHg에서 아래와 같은 방식으로 처리할 수 있다.

screenshot

  1. 추출하고자 하는 리비전에서 우클릭 후 export > archive…
  2. 추출할 리비전을 선택
  3. Only files modified/created in this revision 체크
  4. 경로 설정… 나머지 필요것 설정 후 Archive

(이런 별 것 아닌 부분에 이렇게 시간을 허비할 줄은 몰랐다.)

맥에서는 Atlassian SourceTree를 사용하면 mercurial, git을 동일한 UI에서 사용할 수 있어 둘 다 별 차이 없는 기분으로 쓸 수 있지만 윈도우에서는 그렇게 멋진 도구를 아직 보질 못했다. 그래서 그나마 간편한 TortoiseHg 설치하고 사용하는 중이고 만족하는 편. 그렇게 복잡한 기능을 사용하고 있지 않아서 어떤 Version Control이든 크게 차이를 느끼지 못하고 있다.

Mercurial을 위한 서비스는 bitbucket에서 제공하고 있으며 소규모 개발을 위한 private 리포지터리도 무료로 준다. 로컬 작업용으로 많이 쓰고 있어서 bitbucket을 사용해본 적이 거의 없지만 GitHub를 조금이라도 본 적 있다면 상당히 비슷한 느낌으로 사용할 수 있다.

wordpress plugin 개발 후기

2012년 8월 20일

WordPress에 폼메일을 위한 강력한 플러그인이 참 많은데 그 중 contact form 7이 유명하기도 하고 편리하다. 이 폼메일과 mailchimp를 연동하기 위해 플러그인을 검색해봤지만 3rd party integration plugin은 있는데 영 사용하는 방법이 직관적이지 않아서 contact form 7 with mailchimp plugin을 만들게 되었다.

독립적으로 운영되는 plugin이 아닌 dependancy가 있는 plugin이지만 wordpress에서 기능 확장을 어떤 방식으로 하는지 알 수 있는 좋은 기회였다.

플러그인에서 가장 기본적인 방식은 hooking 인데 값을 변경하거나 프로세스를 추가하고 싶은 소스에서 do_action()을 찾아 메소드를 add_action()을 통해 붙여주면 hooking으로 실행되는 방식이다. 쉽게 생각해보면 소스에 일종의 색인이 있는데 그 색인에 기능을 연결해주면 그곳을 통과할 때 그 기능도 실행이 된다는 것.

더 나아가 워드프레스 플러그인 개발에 확장성을 고려한다면 do_action()을 메소드의 before, after 또는 각 프로세스 부분마다 미리 넣어주는 것이 중요하다.

워드프레스 관리자에 메뉴를 추가할 때도 submenu 관련 함수와 해당 메뉴에 접근했을 때 실행될 function을 연결(binding 하는 느낌으로..)하면 해당 메뉴가 생성되며 그 페이지로 들어갔을 때 해당 function이 실행이 된다.

워낙에 reference가 잘 되어 있어서 필요한 method는 금방 금방 검색해서 찾을 수 있었다.

filter도 mailchimp로 전송하는 내용을 치환하는 부분에서 사용하긴 했는데 기존 contact form 7에 것 그대로 사용해서 자세히 들여보지는 않았는데 callback method도 사용 가능한 것으로 보아… 모르겠다. 나중에 더 자세히 보고.

환경설정을 저장할 때는 get_config()랑 set_config()가 있는데 따로 데이터베이스 작업 없이도 알아서 저장된다. custom post type도 따로 작업 없이 가능하다.

각각의 contact form에 맞는 mailchimp 데이터를 저장하기 위해 custom post type을 사용했는데 해당 post를 잡아내 post_id를 가져오려는데 WP_Query()의 s 파라미터를 사용했다. 더 간편한 방법이 있을 것 같은데 문서 찾아봐도 잘 모르겠어서 그냥 while statement로 작업했다.

한두번 작업 더하면 익숙해져서 뭐든 할 것 같은 이 근거없는 자신감!

joomla에서도 플러그인 작업을 해봤는데 MVC로 구현할 수 있는 샘플 플러그인으로 작업했는데 모델, 컨트롤러, 뷰컨트롤러, 뷰 이렇게 4단계인 기분이었다. 줌라는 그냥 CI처럼 추가기능 개발하고 그냥 데이터베이스에 바로 쿼리 넣고 받아오고 이랬는데 wordpress는 wp만의 스타일을 느낄 수 있어서 좋았다.

drupal이나 magento도 경험해볼 기회가 왔으면 좋겠다.

테마 변경

2012년 1월 16일

늘 이것저것 테마를 사용해보곤 하지만 기본적으로 지원해주는 테마보다 깔끔한 것이 없는 기분이 들어 결국 이 테마를 설정하는데 오늘은 사진도 바꿔보고 색도 바꿔보고 했더니 정말 색다른 느낌!

2012년에 들어 하고싶은, 해야 할 계획도 참 많이 세워야지 하고 시작했는데 벌써 1월도 반이나 지나갔고 온전히 다이어리 앞에 마주하지 못해서… 올해에는 글도 열심히 쓰고 공부도 열심히 하는 한 해가 될 수 있으면 좋겠다.

tomcat 7.0 가상호스트 virtualhost 설정

2012년 1월 10일

java는 기껏해야 headfirst 한권 읽은 수준인데 tomcat 서버 설정을 하려니 막막했다. 검색을 해봐도 한글 문서는 흔치 않았고… 며칠 생각했는데 답은 그냥 레퍼런스에서 나오는 내용이었다. 바로 레퍼런스 봤으면 5분도 안되서 해결했을 내용 XP

tomcat에서 도메인을 기준으로 여러개의 사이트를 운영 즉, 가상호스트를 설정하려면 아래와 같이 하면 된다.

<Hostname="localhost" appBase="webapps"
  unpackWARs="true" autoDeploy="true"
  xmlValidation="false" xmlNamespaceAware="false">
</Host>
<Host name="www.testdomain.com" appBase="new_webapps"
  unpackWARs="true" autoDeploy="true"
  xmlValidation="false" xmlNamespaceAware="false">
</Host>

appBase 경로는 tomcat 경로를 기준으로 되어 있고 절대경로를 입력해줘도 된다. 그리고 ROOT라는 파일 또는 디렉토리가 default값으로 설정되는데 심볼릭 링크로 /home/아이디 식으로 주면 그쪽 파일로 연결된다. ftp 생각하면 유저 발급해주고 이렇게 걸어주면 편하다. (SVN 없는… 상황에서는;)

그런데 이렇게 걸었더니 문제가 www 없이 도메인을 입력하고 들어가면 not found가 되거나 localhost로 연결이 된다. 그냥 apache라면 alias를 지정해주면 되었는데… xml 형태라 어떻게 해줘야하나 몰라서 host를 동일하게 추가해보기도 했고 name에 와일드카드(*)를 넣어보기도 했다. 당연히 결과는…ㅋㅋ 답은 레퍼런스에서 찾았다.

<Host name="www.testdomain.com" appBase="new_webapps"
  unpackWARs="true" autoDeploy="true"
  xmlValidation="false" xmlNamespaceAware="false">
  <Alias>testdomain.com</Alias>
</Host>

다시금 레퍼런스의 중요함을 깨닫는 순간이었다;;