2015년 4월 9일 목요일

오랜만에 맥 OS로 부팅을

언제가 마지막이었는지 기억도 안난다. 오랜만에 맥 OS로 부팅.

그런데, 부팅하다가 복구 화면으로 넘어간다. 뭐지. 다시 부팅을 해봐도 당연히, 마찬가지.

타임머신에서 복구 하자. 백업 목록이 뜨는데, 최종 백업이 3월 10일. 딱 한 달만이군.


오랜만에 부팅하지만, 역시 맥의 UI가 마음에 든다. 안정된 느낌.

윈도우와 오가며 사용할 일이 많으니, 맥의 한영 전환키와 스크롤 방향을 윈도우와 맞춰야 겠다.

한영 전환키 변경 방법은 여기를 참고해서 변경. 스크롤 방향은 시스템 설정/마우스에서.

2015년 4월 4일 토요일

새벽까지의 코딩

새벽 네시을 넘어까지 코딩을 하다가, 결국 원하는 결과를 보고 잠을 잤다. 오랜만에 자바 스크립트를 읽고 수정했다. 내가 원하는 방식으로 동작하도록 하기 위해 고치면서 또한번 몹쓸(?) 자바스크립트의 매력(?)을 느낀다.ㅎㅎ

최근에는 C++로 주로 코딩을 해서 그런지, 더 심하게 이질감이 느껴졌다.

Meteor나 React에 관심은 두고 있으면서 실무에 사용할 기회가 없다. 장난감 프로젝트라도 하나 만들어서 해볼까 싶다.


Windows에서 Jenkins 사용하기

일단 설치. 설치 경로는 C:\Jenkins 등 공백 문자가 없는 곳으로 지정한다. C:\Program Files (x86)\Jenkins에 설치하면 ruby-runtime plugin 등이 설치되지 않는다.

설치 완료 후 자동으로 로컬호스트:8080을 브라우저가 연다.

포트 번호를 바꾸고 싶다.

C:\\Jenkins\Jenkins.xml을 수정해서 8080을 다른 번호로 변경.

CMD창에서 jenkins.exe stop 하고, jenkins.exe start로 재시작한다.

브라우저로 변경된 주소를 연다.

기본 설정은 누구나 접근이 가능하고, 어떤 작업도 할 수 있게 되어 있다.

Manange Jenkins 메뉴에 들어간다.
먼저 사용자를 하나 만든다. Manage Users 클릭.

사용자 등록.

다시 Manage Jenkins > Configure Global Security로 간다.

Enable security 체크.

Security Realm에서 Jenkin's own user database 선택.

Allow users to sign up은 체크 해제.

위에서 사용자를 먼저 만든 이유는 아무나 등록할 수 없도록 하기 위해서다. 사용자를 먼저 만들어 놓지 않으면 설정을 변경하고 저장한 순간. 로그인도 못하고, 사용자 계정 등록도 못한다. 그런 경우에는 이 곳 참고.

Authorization에서 Matrix-based security를 선택했다. 원하는 것을 선택해서 설정하자.

그리고 Save.

다시 로그인을 해야 한다.

이후, Bitbucket plugin, Build Authorization Token Root Plugin, Batch Task Plugin, Yammer Plugin을 설치했다. 설치에 필요한 선결조건들은 알아서 설치된다.

Bitbucket plugin은 너무 간단해서 별 쓸모가 없었다. 사용자 인증을 해야 사용할 수 있게 해놓았기 때문에 Build trigger URL을 token으로 외부에서 인증없이 호출하기 위해 Build Authorization Token Root Plugin을 설치.

Yammer Plugin을 설치할 때 선결조건인 ruby-runtime이 설치가 안되어서 한참 헤맸다. 문제는 Jenkins의 설치 경로 때문인데, 처음에는 기본 설치 경로인 C:\Program File (x86)\Jenkins에 설치를 했었다.

Yammer Plugin을 사용하려면, 앱 등록, 토큰 생성 등을 해야 한다.

오늘 몇시간 삽질한 결과 Bitbucket에 특정 모듈에 변경이 생기면 빌드를 하고, 그 결과를 Yammer에 포스팅하도록 했다.

권한 문제로 빌드시 git checkout이 제대로 안되는 경우 여기를 참고해서 설정한다. 귀찮으면 Service 관리도구를 열어서 Jenkins의 실행 계정을 사용하고 있는, git이 문제 없이 정상 동작하는 로컬 사용자 계정으로 설정해도 된다.

2015년 1월 10일 토요일

Android폰에서 IFTTT 사용하기

Android에서 IFTTT를 설치하고 계정을 활성화 하니, 새로운 channel이 여러개 생기는데, 아이폰에서는 가능하지 않은 것들이다.


  • Android Device
    • Android powers devices that are beautiful and available in many shapes and sizes. Unlock new functionality for each of your devices with the Android Device Channel.
  • Android Location
    • The Location Channel is a native Android Channel that allows Recipes to use information from cellular, Wi-Fi and GPS networks to determine your approximate location.
  • Android Notifications
    • The Notifications Channel is a native Android Channel that sends short message alerts to your devices.
  • Android Phone Call
    • The Phone Call Channel is a native Android Channel that provides a set of Triggers and Actions built around calls placed to and from your phone.
  • Android Photos
    • The Photos Channel is a native Android Channel that allows you to use your device's camera and photo gallery in Recipes.
    • Note: Active Android Photos Recipes upload all new photos taken on your device.
  • Android SMS
    • The SMS Channel is a native Android Channel that allows you to receive Short Message Service (SMS) messages on your device and send messages to other phone numbers.
    • Note: Standard carrier rates may apply.
  • Android Wear
    • Android Wear organizes your information, suggests what you need, and shows it to you before you even ask.

번호 정보를 이용해서 스팸인지 미리 알 수 있는 '후후' 같은 서비스나 통화 내역 녹음 같은 기능 때문에, 메인 폰으로는 안드로이드 폰이 좋다. 그런데, 카메라.. 카메라 때문에.. 아이폰을 놓을 수가 없다.

Python에서 로그 설정

기본적인 코드 구성.


2015년 1월 5일 월요일

오랜만에 C++ 코드를 보고 있다

오랜만에 C++ 코드를 보고 있다. 게다가 C++11. 마지막으로 C++ 코드를 작성한 때가 언젠가 기억이 나지 않는다. 처음 C++를 사용한 때는 학부에서 OS과목을 들을 때. 학기말 프로젝트를 C++로 작성해서 냈었다. 운영체제의 스케쥴링을 시뮬레이션 하는 프로그램이었던 것으로 기억한다. 최근 C++11을 보니, 추가된 것들이 많다. 하나씩 찾아서 보고 있다.

코드 읽기를 위해 사용하는 도구는 Source Insight. 오랜만에 찾아서 다운로드하고 설치했는데, 인터페이스도 그대로고, 홈페이지 디자인도 아주 오래되어 보인다. 그래도 여전히 최고의 소스코드 읽기 도구. (그런데, 파이썬은 지원이 안되네?)

2015년 1월 1일 목요일

지난 3년간 사용한 도구나 기술들

새로운 한 해가 시작되는 마당에 지난 3년간 내가 사용해왔던 것들을 한번 적어본다.

  • iOS development
    • Xcode
    • Objective-C with Cocoa Touch Framework
  • Android development
    • ADT
    • Java
  • Web / Server development
    • Google AppEngine using Python
    • Flask (Python Web Framework)
    • Celery (Distributed Task Queue, Python)
    • JavaScript
    • PHP
    • jQuery
    • AngularJS
  • Image Editing
    • GIMP
    • Pixelmator