이 블로그는 더 이상 업데이트되지 않습니다.

최신 내용을 확인하시려면 여기를 클릭해주세요.

OS (6)


Yosemite에서 Synergy 직접 빌드하여 사용하기

멀티플랫폼간 마우스 및 키보드를 공유해주는 유명한 프로그램인 Synergy(http://synergy-project.org)가 어느새 유료화되었다. 다운로드 페이지로 가보면, 1인당 5달러를 결재하면 평생 사용할 수 있다… 라고는 한다.

하지만 원래 Synergy는 오픈소스 프로젝트다. 그것도 GNU 라이센스가 적용되어 있는 프로젝트이다. 이는 Synergy의 Github 페이지(https://github.com/synergy/synergy)로 가보면 확인할 수 있다. 따라서 그냥 Github에 공개된 코드를 직접 빌드하여 사용하기로 했다. 작업한 환경은 OS X 10.10 Yosemite이다.

http://synergy-project.org/wiki/Compiling 에 가보면 환경별 컴파일 방법이 간단하게 설명되어 있다. 따라서 나는 해당 내용을 따라서 Synergy를 컴파일해서 사용해 보기로 했다.

일단 필요한 의존성 모듈을 설치해야 한다. 나는 brew를 이용해서 cmake, qt를 설치했다.

$ brew install cmake
$ brew install qt

 

의존성 모듈을 설치한 후에, 공식 문서에 나와있는 것과 같이 수행한다.

$ ./hm.sh conf -g1
Mapping command: conf -> configure
Running setup…
Setup complete.
Error: Arg missing: –mac-sdk <version>

 

그럼 위와 같은 오류가 발생한다. mac sdk 옵션이 없어서 발생하는 오류인 듯 싶어 옵션을 주어 실행해봤다.

$ ./hm.sh conf -g1 –mac-sdk 10.10
Mapping command: conf -> configure
Error: Arg missing: –mac-identity <name>

 

이번에는 mac identity 옵션이 없다고 한다. 그럼 준다. 일단 test라고 주었다.

$ ./hm.sh conf -g1 –mac-sdk 10.10 –mac-identity test
Mapping command: conf -> configure
cmake version 3.0.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
Creating dir: build/release
Entering dir: build/release
CMake command: cmake -G “Unix Makefiles” -DCMAKE_BUILD_TYPE=Release ../..
— The C compiler identification is AppleClang 6.0.0.6000054
— The CXX compiler identification is AppleClang 6.0.0.6000054
(중간 생략)
— Looking for pthread_create in pthread
— Looking for pthread_create in pthread – found
— Found CURL: /usr/lib/libcurl.dylib (found version “7.37.1”)
— OSX_TARGET_MAJOR=
— OSX_TARGET_MINOR=
CMake Error at CMakeLists.txt:168 (message):
Mac OS X target must be 10.x
— Configuring incomplete, errors occurred!
See also “/Users/nesswit/Downloads/synergy-master/build/release/CMakeFiles/CMakeOutput.log”.
Going back to: /Users/nesswit/Downloads/synergy-master
Error: CMake encountered error: 256

 

색다른 오류가 나를 반겼다. 보아하니 OSX_TARGET_MAJOR와 OSX_TARGET_MINOR 옵션이 적용이 되지 않은듯 했다.

이를 해결하기 위한 간단한 patch 파일을 작성했다. 자세한 내용은 아래와 같다.

 

해당 패치를 적용하고 실행한 결과는 아래와 같다.

$ ./hm.sh conf -g1 –mac-sdk 10.10 –mac-identity test
Mapping command: conf -> configure
cmake version 3.0.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
Entering dir: build/release
CMake command: cmake -G “Unix Makefiles” -DCMAKE_BUILD_TYPE=Release -DOSX_TARGET_MAJOR=10 -DOSX_TARGET_MINOR=10 ../..
— OSX_TARGET_MAJOR=10
— OSX_TARGET_MINOR=10
— Configuring done
— Generating done
— Build files have been written to: /Users/nesswit/Downloads/synergy-master/build/release
Going back to: /Users/nesswit/Downloads/synergy-master
QMake command: qmake gui.pro -r -spec macx-g++ “MACX_LIBS=-framework ApplicationServices -framework Security -framework cocoa -framework ServiceManagement” QMAKE_MACOSX_DEPLOYMENT_TARGET=10.10 QMAKE_MAC_SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
Entering dir: src/gui
Going back to: /Users/nesswit/Downloads/synergy-master

 

생각대로 잘 동작한다. 이대로 빌드를 진행하자.

$ ./hm.sh build
Entering dir: build/release
Scanning dependencies of target arch
[ 0%] Building CXX object src/lib/arch/CMakeFiles/arch.dir/Arch.cpp.o
(중간 생략)
Log: Deploying plugins from “/usr/local/plugins”
Log: Created configuration file: “Synergy.app/Contents/Resources/qt.conf”
Log: This file sets the plugin search path to “Synergy.app/Contents/PlugIns”
Going back to: /Users/nesswit/Downloads/synergy-master
Error: [Errno 2] No such file or directory: ‘/Library/Frameworks/QtCore.framework/Contents/Info.plist’

 

내가 설치한 qt는 brew로 설치했기 때문에 /Library/Frameworks/ 아래에 있지 않다. 따라서 해당 경로를 수정해야 한다.

이는 아까 패치파일을 적용한 ext/toolchain/commands1.py 파일의 826번째 줄 쯤에 있다. 해당 코드를 아래와 같이 수정한다.

 

이후, clean한 후 root 권한으로 다시 빌드했다.

$ ./hm.sh clean
(생략)
$ sudo ./hm.sh build
Entering dir: build/release
[ 0%] Building CXX object src/lib/arch/CMakeFiles/arch.dir/Arch.cpp.o
(중간 생략)
WARNING: Plugins = PlugIns
Going back to: /Users/nesswit/Downloads/synergy-master

 

경고.. 가 뜨지만 더 이상은 그냥 무시하기로 했다.

그럼, 정상적으로 생성된 Synergy.app 파일을 bin 폴더에서 확인할 수 있다.




Windows 8의 바탕화면 우클릭 메뉴가 느리게 작동할 때

Bootcamp로 사용하는 Windows 8.1의 바탕화면 우틀릭 메뉴가 엄청나게 느리게 동작하기 시작했다. 관련 자료를 찾아보니 그래픽 카드 드라이버를 설치하면서 등록된 우클릭 메뉴 하나가 이상하게 동작하기 때문인 듯 했다.

windows 8과 windows 8.1에서 발생하며,  NVIDIA CPL Context Menu Extension(바탕화면에서 NVIDIA의 우클릭 메뉴)가 문제가 되는 경우가 대부분이다.

해결 방법은 다음과 같다.

1. http://www.nirsoft.net/utils/shexview.html 에서 ShellExView를 다운받는다.

2. 다운받은 ShellExView를 우클릭하여 관리자 권한으로 실행한다.

3. 메뉴의 options에서 Filter by Extension Type의 Context Menu를 선택한다.

3.1 혹시 NVIDIA CPL Context Menu Extension 란 녀석이 있다면 그 녀석을 클릭하고 좌측 상단에 빨간 버튼을 눌러 중지시킨다. (없다면 4번 항목으로.)

3.2 메뉴의 options에서 Restart Explorer를 클릭한다.

3.3 바탕화면에서 우클릭하여 문제가 해결되었는지 확인한다. (해결되지 않았다면 4번 항목으로.)

3.4 문제가 해결되었다면, NVIDIA의 우클릭 메뉴가 문제다. 딱히 사용하지 않아도 지장이 없다면 여기서 완료. 이후 항목을 진행할 필요는 없다.

4. 리스트 중 분홍색 배경을 가진 녀석들은 서드파티 프로그램에 의해 설치된 녀석들이다. 이 녀석들을 모두 선택한다. (ctrl 키를 누른 채로 클릭하면 여러 항목을 동시에 선택할 수 있다.)

5. 좌측 상단의 빨간 버튼을 눌러 중지시킨다.

6. 메뉴의 options에서 Restart Explorer를 클릭한다.

7. 바탕화면에서 우클릭하여 문제가 해결되었는지 확인한다. (해결되지 않았다면, 당신은 망했다. 윈도우 기본 Shell extension에 의해 발생했거나 Shell extension에 의해 발생한 문제가 아닐 가능성이 있다.)

8. 해결되었다면, 4~5번 항목에서 중지했던 녀석들 중 하나만 다시 초록 버튼을 눌러 활성화시킨다.

9. 다시 문제가 발생할 때 까지 6-8번 항목을 반복한다.

10. 다시 문제가 발생하였다면 방금 다시 활성화시킨 그 녀석이 문제다. 이름과 경로를 잘 보고 검색하여 문제를 해결하거나, 그냥 해당 extension을 비활성화시킨 채 사용하자.

 

출처: http://social.technet.microsoft.com/Forums/windows/en-US/5353106e-5b19-4a26-8446-72bedf40b169/rightclick-context-menu-in-desktop-appearing-slow-win-81?forum=w8itprogeneral




Google에서 응용 프로그램 지정 암호를 얻어야 합니다.

  • 2014/02/14
  • OSX

OSX 10.9.1의 Mail client를 구글 계정을 이용하여 IMAP으로 동기화하려고 하니, 뜬금없이 “Google에서 응용 프로그램 지정 암호를 얻어야 합니다.”라면서 계정 연동이 되지 않았다.

한국어로 바로 검색해 보았으나 해결방법이 보이지 않아 영어로 검색하니 바로 해결되었다. 아래 링크를 참조.

https://support.google.com/mail/answer/1173270?hl=en

(혹 위 링크가 정상적으로 동작하지 않는다면, Authorizing applications & sites page 페이지로 이동하여 새로운 비밀번호를 생성한 후, 구글 계정 비밀번호 대신 생성된 비밀번호를 입력하여 계정 연동을 시도하면 된다.)




Linux의 time과 Windows의 timethis

프로그래밍을 하다 보면, 자신이 작성한 프로그램을 실행하는데 걸리는 시간을 알고 싶을 때가 있다.

각 언어별로 어찌저찌 함수든 메서드든 추가해서 소요시간을 출력하도록 프로그래밍을 할 수 있겠지만, 배보다 배꼽이 더 커지기도 하고 언어마다 그 방법들을 모두 따로따로 적용한다는 것은 고역이다.

그래서인지, linux에서는 기본적으로 명령의 실행 시간을 출력하는 명령이 내장되어 있다. 바로 time이라고 하는 명령인데, 그냥 “time [원하는 명령]” 만 입력하면 실행시간이 출력된다.

그럼 Windows는 어떨까?

안타깝게도 Windows에서는 기본 명령으로 실행 시간을 출력해주는 명령은 존재하지 않는 듯 하였다. 그러나 Windows 2000 Resource Kit에 포함되어 있는 timethis가 이 역할을 대신할 수 있다.

어째서인지 MS에서 이 프로그램을 다운받을 수 있는 경로를 찾지 못했으나, 어떤 친절한 분께서 거의 완벽히 같은 기능을 하는 프로그램을 만들어 제공하고 있었다(http://blog.topfivesoftware.com/2013/03/timethis-utility-for-windows-get.html).

MS에서 찾을 수 있는 다운로드 링크는 다음과 같다.
(http://support.microsoft.com/kb/927229)

혹은 아래의 링크로 직접 다운받을 수 있다.
(timethis.zip)

압축을 풀어 WindowsSystem32 에 이름을 timethis.exe로 바꾸어 넣어주면 명령 프롬프트에서 바로 실행할 수 있다.




PPTP VPN 서버

간단하게 우분투를 VPN 서버로 만드는 방법을 알아보자.
PPTP로 만들면 windows 환경에서 따로 클라이언트 프로그램이 없어도 쉽게 연결할 수 있다.

설치

$ sudo apt-get install -y pptpd

local / remote ip 설정

/etc/pptpd.conf 파일 최하단에 다음을 추가한다.

locapip 192.168.13.1
remoteip 192.168.13.100-200

DNS 설정

/etc/ppp/pptpd-options 파일에서 ms-dns 항목을 주석을 풀고 수정한다.

ms-dns 8.8.8.8
ms-dns 8.8.4.4

사용자 추가

/etc/ppp/chap-secrets 파일 내용을 수정한다.
ID * Password * 순서로 사용자를 한명씩 추가하면 된다.

# Secrets for authentication using CHAP
# client    server    secret        IP addresses
userId1        *       Password1    *
userId2        *       Password2    *
userId3        *       Password3    *
userId4        *       Password4    *
userId5        *       Password5    *
userId6        *       Password6    *

NAT 설정

사용자가 VPN을 통해 인터넷에 접속하려면 필요하다.
다음 명령어를 실행한다.

$ sudo su
# iptables -t nat -A POSTROUTING -s 192.168.13.0/24 -o eth0 -j MASQUERADE
# iptables-save > /etc/iptables.rules
# exit

그리고, /etc/rc.local 파일에 다음과 같이 추가해준다.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# 여기 한 줄을 추가한다.
/sbin/iptables-restore < /etc/iptables.rule

exit 0


IP forwarding 설정

ip 포워딩을 허용하기 위해 커널 파라미터를 수정한다.
/etc/sysctl.conf 파일에서 net.ipv4.ip_forward=1 항목의 주석을 풀어주자.

.
.
.
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
# 여기 한 줄의 주석을 해제한다.
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1
.
.
.

그 후, 바뀐 설정을 적용하기 위해 reload 해준다.

$ sudo sysctl -p

MTU 설정

네이버나 다음 같은 국내 포털 사이트들을 접속하기 위해 MTU를 수정해준다.
/etc/ppp/ip-up.local 파일에 다음과 같이 추가한다
(파일이 존재하지 않으면 생성해주자.)

ifconfig $1 mtu 1500

만약 위 설정으로 잘 동작하지 않으면 $1 을 ppp0 으로 바꿔보자
그리고 실행 가능하도록 권한을 수정한다.

$ sudo chmod a+x /etc/ppp/ip-up.local 

pptpd 재시작

다음 명령어를 실행한다.

$ sudo service pptpd restart

위의 과정을 거치면 모든 설정이 완료된다.
시스템을 재시작해도 똑같이 적용된다.

* 참고
http://noise1.tistory.com/5
http://blog.riobard.com/2011/11/12/pptp-vpn-on-ubuntu/
http://blog.naver.com/PostView.nhn?blogId=ilinuxer0&logNo=60167759305




Boot Loader 가 망가지면?

http://ubuntuforums.org/showthread.php?t=1769482

우분투를 비롯한 리눅스를 사용하면서 윈도우와 멀티 부팅을 사용한다면, 누구나 한번쯤은 부트로더가 꼬여서 부팅이 안되는 신비한 경험을 했을 것이다.

이때 당신을 도와줄 아주 좋은 친구 Boot-Repair!

우선 우분투 Live Cd 또는 Live USB로 부팅하자.
그리고 터미널을 열고 아래와 같이 입력해준다.

그 후의 일은 심플한 GUI와 함께 하라는 대로 해주면 된다!

좀 더 자세한 설명은 아래 링크에서 확인.
http://www.howopensource.com/2012/05/reinstall-recover-grub-from-ubuntu-12-04-live-cd-usb/
http://ubuntuforums.org/showthread.php?t=1769482
http://deviantcj.tistory.com/493