쓸일이 있어서... 응시를 했다. (무쓸모가 될 가능성이 높지만)


LPIC-1 은 101-400, 102-400 두개의 시험을 쳐서 통과하면 자격을 준다.

왜 아직 Certifications 에 아무것도 없는진 모르겠지만 시간이 지나면 넣어주겠지...

글 수정하는 동안에 Certificate 메일이 왔다.


시험당 60문제, 800점 만점에 500점 이상시 통과. 60문제인데 문제마다 배점이 다르다.

시험당 $170 였는데, 난 결제하니 한화로 20만 9천원 정도 나오더라.. 두개보면 42만원..ㅠㅠ


원래 리눅스를 쓰던 사람이라면 대부분의 문제의 답을 이미 알거나, 한번 보면 바로 알 정도의 난이도?

물론 주로 사용하는 배포판에 따라 좀 갈리긴 할 듯.


근데 그런거 상관없이 덤프에서 보기 순서 안바꾸고 나오니 암기만 잘하면 딸 수 있다... 그래서 더 돈이 아깝다..



시험 응시

1. lpi.org 에서 회원가입 및 LPI ID 를 발급받는다.

2. Pearson VUE 에서 시험 신청을 한다

1) 회원가입 및 로그인

2) For test taker

3) LPI 검색

4) LPI ID 입력

5) 원하는 시험장소 및 시험시간 선택 (시험 장소에 따라 가능일자 / 시간이 다르다)

6) 결제

3. 시험장소(보통 학원)에 응시하러 간다

1) 시험치러 왔다고 말한다

2) 신분증, 같은 이름의 카드(영문 이름 때문인 듯)가 필요

3) 서명하고 사진촬영

4) 컴터 앞에 앉아서 시험치고 끝


시험 시간은 응시 장소에 따라 꼭 정해진 시간을 지킬 필요는 없는 것 같다. 30분 일찍 갔는데 그냥 쳤음.



덤프

내가 구한 덤프는

- 2015년 4/8월자 덤프(101-400, 102-400). 85~120문제 정도로 구성

- 2012년 12월 28일자 덤프(117-101, 117-102). 50여문제를 한 Exam 으로 해서, 여러개 시험으로 구성. 70~110페이지


* 원래 117-101, 117-102 란 이름이였는데 각 101-400, 102-400 으로 바뀌었다.


인데, 첫번째꺼만 봐도 될 듯. 두번째껀 그냥 앞쪽 시험 2개 정도만 훑어보고 들어갔다.



101-400

커널과 관련된 부분은 그냥 외웠고, 그걸 제하면 한번씩 해봐서 알거나, 새로운 명령어 하나 배운다는 기분으로 공부했다.

물론 덤프에 나오는 문제 위주로.


117-101 덤프에서도 몇문제 나왔는데, 뭐 몰라도 통과할 수 있거나 안봤어도 맞출 수 있었을 듯

8분만에 풀고 나왔다. 너무 일찍 나왔다고 다음 시험은 그러지 말라더라.


+ 1월 9일 오늘 아는 사람이 응시하고 왔는데, 101-400 덤프에서 1문제 정도 나오고 다 달라서 당황하셨다고 한다. 다행히 500/500 으로 통과하셨다지만... 102-400 은 그대로 나왔다고 하네... 왜지?;;


102-400

xwindows, 프린터(cups) 같은 것들이 나오는데 난 거의 안써본 것들이라 외웠다.

쉘스크립트나 네트워크 쪽 문제들은 그냥저냥...

뜬금없이 SQL 쿼리가 나오는데(리눅스 시험에서 대체 왜?) 뭐... 어렵진 않다.


전체적으로 101-400 에 비하면 덤프를 처음 봤을때 답을 모르겠는 문제들이 많았음.

근데 어차피 덤프보고 공부/외우면 된다. 102-400 덤프에서 다 나온 것 같다.


102-400 덤프에 문제 오류가 3~4개 정도 있었던 것 같은데.. 그냥 스스로 고칠 수 있거나 틀려도 탈락 안한다.

117-102 덤프는 설명이 다 달려있어서 좋더라.


마찬가지로 8분만에 다 풀었는데, 앞시험에서 나오고 나니 30분 정도는 앉아있어 달라고 하셔서 나머지 20분을 멍하게 시간때우다가 나왔다.



총평

시험치기 전날 2~3시간 정도 보면 매우 쉽고 무난하게 통과한다.

리눅스 시스템을 처음 접한 사람이라면 잘 모르겠다.


뭐 틀렸는지 안 알려준다. 궁금하다.


(1) 레지스트리 수정으로 CapsLock -> 한/영전환 매핑


글에 이어서 작성하므로 서론은 생략.


====================


우선 CapsLock 을 눌렀을 때 대신 한영전환으로 바꾸는건 부트캠프에서 Cmd+Space 로 한영전환 하기 에서도 했으니 패스.


SuperUser - Using CapsLock LED for other purposes

이 글을 참고해서 LED 변경법을 알았는데, kbd 값이 PC 마다 다른 것 같아서 그냥 0~5 까지 다 루프를 돌도록 만들었다.


현재 언어 설정을 받아오는 법이 문제였는데, 영어, 한국어 키보드 레이아웃 자체를 변경하는게 아니라

한국어 키보드 레이아웃에서 IME 자체적으로 영어/한국어 변경을 하는식이라 GetKeyboardLayoutName 으로는 무조건 한국어로만 나오는 문제가 있더라. (AutoHotKey - Detecting the currently-active language)


그래서 조금 뒤져보니 뭔가 알수 없는 방법으로 한국어 Layout 하에서 현재 상태가 한국어인지 영어인지 알아내는 법을 찾았다.

영어일때는 ErrorCode 가 0, 한국어일때 Error 가 나서 ErrorCode 가 1이 되는 뭔가 이상한 방법을 쓰는데 원리는 모르겠음.

AutoHotKey - 한글입력인지 영어입력인지 구분

AutoHotKey - 절대한영전환


요걸 잘 섞어서


CapsLockIME.ahk


이런 스크립트를 만들 수 있다.


led.ahk 는 위 링크에서 받아도 되지만 링크가 깨질 수도 있으니 -> led.ahk


====================


그리고 대부분이 다운받아 쓸 컴파일된 바이너리

CapsLockIME.exe


부트캠프에서 Cmd+Space 로 한영전환 하기

글에서의, CommandKeys 와 함께 쓰고싶다면

CmdKeys CapsLockIME.exe



영어일때 CapsLock LED가 꺼지고 한글일때 CapsLock LED가 켜진다.

윈7, 윈10 에서 테스트 해봤음.


원래 CommandKeys 프로그램과 같이 그냥 시작메뉴에 넣어두고 쓰면 된다.



참고 URL은 위에 링크 다 걸었음.



== Git ==

https://github.com/iolate/CapsLockIME

부트캠프에서 Cmd+Space 로 한영전환 하기


글을 쓴 적이 있는데.. 

이번엔 CapsLock 으로 한영전환하기를 해봤다. 사실 난 안쓰지만... 형의 요구로...


CapsLock 키를 주로 쓰는 사람이 많이 없으니 요즘 Control 키 등으로 매핑해서 사용하는 사람이 많아지는 것 같다.

나의 경우도 맥에서 Expose(바뀐 이름을 모르겠다)로 매핑해서 사용중이기도 하고.


기본적으론 한영전환으로 바꾸지만 조금만 바꾸면 다른키로 매핑도 가능.


겪은 과정을 다 적을거라서

(1) 레지스트리 수정으로 CapsLock -> 한/영전환 매핑

(2) AutoHotKey 를 이용하여 CapsLock -> 한/영전환 매핑 및 LED 제어

두개의 글을 작성한다.


====================


레지스트리 수정으로 키매핑을 하는 방법은

키보드의 설정 바꾸기 #1 Registry Scancode Map 수정 Shift+Space 한영전환 Capslock2Ctrl

글을 조금 수정하면 된다.


요약하자면


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

경로에 "Scancode Map" 이름으로 2진값 항목을 만들어서

00000000 00000000 02000000 72003a00 00000000

내용을 적어주면 되지만 그냥


CapsLock2IME.reg


얘를 다운받아서 실행시켜줘도 된다.


이미 비슷한 프로그램이나 방법으로 설정한 적이 있다면 덮어써지니 주의.



== 참고 ==


Microsoft MSDN - Keyboard and mouse class drivers


CapsLock: 0x003A

한/영: 0x0072


== Git ==

https://github.com/iolate/CapsLockIME

'기타' 카테고리의 다른 글

Prism 설정  (0) 2018.11.27
[Win] CapsLock 키로 한영전환하기 - (2) AutoHotKey 를 이용하여 매핑 / LED 제어  (4) 2016.10.09
dd-wrt dns 설정  (1) 2015.01.15
청소년 나이 제한 정리  (0) 2014.01.28
티스토리 RSS 설정  (6) 2013.12.05

ROS 는 TCP layer에서 두개 이상의 기기의 Communication 도 지원한다.

두 기기가 같은 공유기를 잡고있다면 IP 설정만으로 되고, 그게 아니라면 두 기기를 이더넷케이블 등으로 직접 연결한다음에 설정을 해주면 됨.


편의상 두 기기는 P (Primary, Master) / S (Secondary, Slave) 로 표기한다.


1. 두 기기의 연결

우선 두 기기가 라우터나 스위치를 끼고 물려있다면 상관없지만, 이더넷 케이블로 서로 다이렉트 연결할 것이라면 static ip 설정을 해줘야한다.

이미 공유기 등을 통해 서로 접근가능한 상태라면 건너뛰자!


예전엔 crossover cable 이라고, 이런 목적으로 사용할때 tx/rx 를 바꿔서 만든 utp 케이블을 사용해야하는데, 요즘 기기는 알아서 인식한다. 오히려 crossover cable 을 사용하면 인식을 못하기도 하니, 10년 넘은 장비가 아니라면 그냥 일반 utp 케이블을 꼽도록 하자.


여튼, 두 기기 모두 /etc/networking/interfaces 파일을 열어서 아래 구문을 추가해준다.

인터페이스 이름(eth0)은 필요시 알아서 수정하고, 이미 설정이 되어있다면 수정해주자.


auto eth0

iface eth0 inet static

address 172.16.1.X

netmask 255.255.255.0


보통 10.0.0.X 대역을 많이 사용하는데, 나의 경우 학교가 10.0.0.0/8 대역을 사설망으로 사용하는터라 172.16.1.0/24 대역을 사용하였다.

P는 172.16.1.2, S는 172.16.1.1 을 할당하였음


연결확인은 서로 ping 을 날려보자. ssh 연결 테스트도 좋고..


2. 환경 변수 설정

ROS_IP, ROS_MASTER_URI, ROS_HOSTNAME 3개의 환경변수를 설정해줘야한다.


# Primary

export ROS_IP={IP_of_P}

export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=$ROS_IP


# Secondary

export ROS_MASTER_URI=http://{IP_of_P}:11311

export ROS_HOSTNAME={IP_of_S}


이렇게 설정해주면 된다.


나의 경우엔

# Primary

export ROS_IP=172.16.1.2

export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=$ROS_IP


# Secondary

export ROS_MASTER_URI=http://172.16.1.2:11311

export ROS_HOSTNAME=172.16.1.1


이렇게 된다.


각 기기의 ~/.bashrc 최하단에 넣어주고 재부팅 혹은 $ source ~/.bashrc 하면 끝


3. 테스트

https://erlerobotics.com/docs/Robot_Operating_System/ROS/Basic_concepts/Examples/Publisher_and_subscriber.html


간단하게 timestamp 를 publish 하고 subscribe 하는 샘플 코드가 있다.

파이썬 코드는 굳이 컴파일(catkin_make)까지 할 필요 없으니 하단의 python 코드 두개를 기기에 적당히 복붙하고

$ python talker.py

$ python listener.py

로 실행해줘도 된다.



4. Erlebrain 에서의 mavros


환경변수가 설정되지 않고 실행된 topic 들은 다른 기기에서 subscribe 가 안된다.

보통 roscore 등을 직접 실행하는 경우엔 상관없겠지만,

내가 사용하려는 Erlebrain 의 경우 roscore 와 mavros 등을 자동실행해서 데몬처럼 유지시켜준다.

즉, 자동실행되는 mavros 의 토픽은 Secondary 에서 topic 을 subscribe 하는게 안된다...


이래저래 머리를 굴려보다 결국 mavros 를 실행하는 부분을 찾아서 환경변수 설정을 끼워넣었다.

좀 더 범용적인 해결책을 원했지만.. 어차피 딴거 별거 없기도 하고........


Erlebrain2 기준 /lib/systemd/system 경로의 service 파일들을 통해 프로세스가 실행되며,

그 스크립트들은 ~/ros_catkin_ws/install_isolated 에 위치한다.

즉, ~/ros_catkin_ws/install_isolated/setup-mavros.bash 파일을 열어서

rosrun 직전에 위에서한 환경변수 설정을 다시 해주면 된다.


수정 후 재부팅하면 S 에서도 subscribe 가 잘된다.


mavros 가 아닌 다른 topic 에 대해서도 필요하다면 비슷한 방법으로 해결을 보자.

혹은 ~/ros_catkin_ws/install_isolated/setup.sh 파일을 수정해도 될 것 같긴 하다. (안해봄)

setup-~~.bash 형태의 스크립트들이 쟤를 source 하고 시작해서...



참고

http://wiki.ros.org/ROS/NetworkSetup

http://wiki.ros.org/ROS/Tutorials/MultipleMachines

https://erlerobotics.com/docs/Robot_Operating_System/ROS/Basic_concepts/Configure_your_network.html


매번 검색하기 귀찮아서 작성함

그냥 UNetbootin 을 사용하는것도 괜찮은 선택지인 것 같다.


디스크 목록 보기

$ diskutil list


디스크 추출

$ diskutil unmountDisk /dev/disk#


ISO -> IMG

$ hdiutil convert -format UDRW -o ~/path/to/output.img /path/to/input.iso

$ mv /path/to/output.img.dmg /path/to/output.img


Flashing image

$ sudo dd if=/path/to/output.img of=/dev/rdisk# bs=8m


압축된 이미지 Flashing

$ gunzip -c /path/to/image.gz | sudo dd of=/dev/rdisk# bs=8m



bs 는 한번에 작업할 block size. 1m 을 쓰라고 하는 곳도 있는데.. 뭐 상관없겠지


dd 작업 중간에 Ctrl+T 를 누르면 작업상황을 확인할 수 있다.

교내망에 있는 서버 하나가 접근이 꼬여서 원인을 찾다가 기록함.


우선 서버들의 네트워크 구성


메인서버 - Windows Server 2012 R2    - 교내망(10.x.x.5), 가상 스위치(192.168.137.1, host)

서버 A - Ubuntu 14.04                  - 교내망(10.x.x.6), 가상 스위치(192.168.137.6), 도커

서버 B - Ubuntu 14.04                  - 교내망(10.x.x.7), 가상 스위치(192.168.137.7)

서버 C - CentOS                            - 가상 스위치(192.168.137.2)


교내 다른 장비에서 메인서버, 서버 B 로는 교내망 주소로 바로 접근이 되는데,

서버 A 는 교내망 주소를 사용해도 서버 B 를 거쳐야만 접속이 되었다.

똑같은 교내망 IP 인데 말이지..


원인을 찾아보다가 서버 A의 outbound ip 가 메인서버의 ip 로 찍히는 것을 발견,

기본 라우터 설정을 바꿔주면 왠지 해결될 것 같은 느낌이 왔다.


서버 A:~$ ip route list

default via 192.168.137.1 dev eth1 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.6 

172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.6

서버 B:~$ ip route list

default via 10.x.x.1 dev eth0 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.7 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.7 


이유는 모르겠지만 서버 A의 기본 라우터가 eth1 로 되어있다. 바꿔주자.


서버 A:~$ sudo ip route change to default dev eth0 via 10.x.x.1

서버 A:~$ ip route list

default via 10.x.x.1 dev eth0 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.6 

172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.6



via 뒤의 아이피는 eth0 의 gateway 주소를 적어주면 된다.


이후 ssh 접속이 잘됨을 확인.

재부팅해도 유지된다.


왜 바뀌었는지 모르니 다음에 또 바뀔 가능성이 있을 수 있지만.... 일단 해결!

난 직접 서버에서 최신버전을 갱신하는 식으로 해야할 줄 알았는데...

apple 에서 json 으로 결과를 뱉어주는게 있다.. 씐기..


잊어먹을까봐 적어둠.


http://itunes.apple.com/lookup?bundleId=[bundleIdentification]


으로 쿼리를 보내면 스크린샷 이미지, 장르, 버전 등의 앱정보를 JSON 으로 반환해준다.

이를 읽으면 됨.


아래 출처에 코드도 있음.



출처:

http://stackoverflow.com/questions/6256748/check-if-my-app-has-a-new-version-on-appstore

Apple 개발자 페이지에서 App ID 등록 및 Push 인증서 발급까지 끝낸 이 후.


0. 개발용 인증서 등록

잘 까먹는 과정 중 하나라서..

Push 서비스를 이용하려면 개발용 인증서 새로 발급해야 한다. 와일드카드 ㄴㄴ

발급 후 다운받을 수 있는 .mobileprovision 파일을 실행 후

프로젝트 Build Settings -> Code Signing Identity 에서 해당 인증서 선택


==========


1. .cer 파일을 실행해서 키체인에 등록

2. 키체인 - 인증서 카테고리 에서 인증서 찾아서 (앱아이디로 검색)


3. 왼쪽 접힌걸 열어서 인증서와 개인키를 같이 선택, 우클릭 -> 2개 항목 보내기

ㄴ 정확한건 아니지만, sandbox 용은 개인키와 함께, production 용은 인증서만 선택해서 추출해야 작동을 하는 것 같다.

원래 잘 되던게 언제부턴가 이러던데, 정확한 원인이나 이유는 잘 모르겠음.


4. .p12 포맷으로 적당한 곳에 저장. 비밀번호는 설정안해도 된다.

5. $ openssl pkcs12 -in cert.p12 -out cert.pem -nodes

6. 위에서 비밀번호를 지정했다면 해당 비밀번호를, 아니라면 그냥 엔터

7. 완성


궁금하니 직접해보도록 하자.




동아리 등 카카오톡 단체 채팅방에 있다보면, 일명 "사진 테러", 사진이 주구장창 많이 올라올 때가 있다.


와이파이에 연결된 상태라던가.. PC 카톡을 하고 있다면 상관없지만,

현재 LTE 를 사용 중이라면? 내 데이터가 얼마 남지 않았다면?!!



사진을 왕창 올린 후 시작되는 대 탈주 시대..



이런 문제를 카카오톡도 어느정도 인지를 해서인지,

데이터 네트워크인 상태에서 고용량(3MB 이상) 사진을 다운받으려하면 바로 받지 않고 용량을 표시해주며 다시 한번 다운 받을지 선택지를 주게 된다.



Mac OS 에 있는 기본 바탕화면 중 하나.

9MB 가 넘는 용량에, 카카오톡에서는 "눌러서 보기" 라는 메뉴로 데이터 낭비를 방지한다.



하지만 이런 용량 큰 사진도 채팅방에 올라오면 미리보기로 작게 사진이 표시된다.




데이터가 아깝다고 나가는 사람들 대부분은 저 작은 사진 때문에!

채팅방에 바로 뜨는 저 사진은 나의 선택과 상관없이 무조건 표시된다.


채팅방에 사진이 우후죽순 계속 올라오고 내 데이터가 없으면 걱정될만도 하지.


자, 그럼 본론으로 돌아와서.

저 작은 사진의 용량은 어느정도 될까?


저렇게 작은 사진은 섬네일(thumbnail) 이라고 부르며, 

로딩 속도를 빠르게 하고 데이터를 절약하기 위해 본래 큰 사이즈의 사진을 작게 리사이징한 이미지들을 일컫는다.


업로드한 사진은 섬네일용으로 크기를 줄여서 카카오톡 서버에 추가로 저장되며, 위의 예시 사진의 경우엔 그 주소가

http://th-m4.talk.kakao.com/th/talkm/oWqVfrX2Dm/VIcT3QJjULUAtKhU8xxVv1/aas3nr_120x68.jpg

가 된다. (어떻게 알아내는지는 귀찮으니 패쓰, 여러가지 이유로 시간이 지나면 다운로드 안될 수 있음.)


다운 받아보면  이런 귀여운 크기와 작은 용량의 사진이 되어있음을 알 수 있다.


용량은 약 2KB


귀찮아서 많은 사진을 테스트해보진 않았지만,

섬네일 사진은 모두 대략 1~4KB 정도의 크기로 리사이징됨을 알 수 있었다.


즉, 최소 200여장 이상의 사진이 카톡방에 올라와야 1MB 를 소모한다.


물론 텍스트보다는 데이터를 많이 소모하지만, 

단순히 카톡방에 사진이 올라오는 것 만으로 데이터 폭탄을 맞을 만큼 데이터를 많이 소모하지는 않는다.


걱정하지 않아도 된다는 소리.

NFS 설치

# yum install nfs-utils


NFS 서버 설정

# vi /etc/exports

[Path]    [Client IP]([Options])


Options

ro - 읽기 전용 (기본값)

rw - 읽기/쓰기 모드

root_squash - Client의 root를 익명 사용자(nobody)로 매핑 (기본값)

no_root_squash - Client의 root를 NFS 서버의 root로 매핑

all_squash - 모든 사용자를 익명 사용자(nobody)로 매핑

sync - Client와 NFS 서버간 동기적 통신 모드 (기본값, 안전성 향상)

async - Client와 NFS 서버간 비동기 통신 모드 (속도 향상)

secure - 마운트 요청 시 포트를 1024 이하로 할당 허용 (기본값, 1024 이하 포트는 root만 설정 가능)

insecure - 마운트 요청 시 1024 포트 이상도 할당 허용

anonuid=<uid>

anongid=<gid>



설정 후

# systemctl restart nfs-server


재부팅 후에도 자동으로 실행되게끔
# systemctl enable nfs-server
도 해준다.


* 서버에서

# showmount -e 127.0.0.1

을 실행해보고,

clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)

에러가 나온다면,
# service rpcbind start
을 해주자.



클라이언트에서

$ showmount -e <Server IP>

로 서버의 exports 리스트를 확인할 수 있다.


테스트 마운트는

# mount -t nfs <Server IP>:<Server Path> <Client Path>

로 가능.


/etc/fstab 설정도 가능하다.

<Server IP>:<Server Path> <Client Path> nfs hard,intr 0 0


이때 옵션(예시에서 hard,intr)은 

19.4. Common NFS Mount Options

여기서 찾아보자.



참고

NFS 서버 구성 - http://blog.helperchoi.com/76

http://unix.stackexchange.com/questions/64915/nfs-connection-refused

http://www.unixmen.com/setting-nfs-server-client-centos-7/

+ Recent posts