Link+ IDE 사용 경험

(이 글은 워드프레스로 확인하여 주시기 바랍니다.)

Link+ IDE를 설치하고 나서 좀 사용해보았다. 메뉴얼의 양이 좀 상당히 많은 편이긴 한데, 이 메뉴얼 내용대로가 사실 리눅스 커널 프로그래밍에서 컴파일하고 설정하고 빌드하고 하는 여러 작업들을 다 가지고 있는 것이다보니 그렇게까지 어렵다고 생각하진 않았다.

뭐, 검색해보신 분들은 다 갖고 있겠지만, 최신판 메뉴얼을 확인해 보면 은근 양이 많아도 금방 따라할 수 있는 수준이다.

게다가 흔히 쓰는 배포판들의 경우에는 구성하기도 편하다. 우분투는 apt-get 명령어 몇 줄 입력해서 필요한 패키지 다 설치하고 하면 pre-install은 끝나는 수준. ㅡㅅㅡ

Screenshot - 2016년 03월 31일 - 16시 10분 05초

위의 화면은 분석하고 있는 리눅스 4.1.20 lts 커널을 열어서 qemu에 연동되어 시뮬레이팅하는 중이다. 디버깅도 되고, 시스템 콜 테스트도 가능한 거 같아서 좀 더 확인해서 보고 있다.

이런 게 있었으면 좀 더 빨리 할 수 있으려나…ㅠㅠ 안쓰신 분들 있으면 써보라고 하고 싶군요.

Linux Kernel Programming IDE(Link+ IDE)

(이 글은 워드프레스에서 보시길 바랍니다)

아이엠루트나 다른 리눅스 커널 스터디했다고 하는 자료들 보면 해당 환경들이 터미널에 vim 환경에 ctags, cscope 연동하고 해서 열심히 찾아보고 하는 환경들을 많이 설명해두었다. 이 환경들이야 익숙해지면 뭐 나쁠껀 없다고 본다.

그래도 IDE 환경을 원했다. 코드 뒤지고 수정하는 것 뿐만 아니라, 수정한 걸 그대로 가상 환경에서 돌려볼 수 있을 정도까지 할 수 있었으면 했다. 그래서 미친듯이 뒤졌었다. 아는 사림이 있었을지도 모르겠지만, 혼자서 뒤지고 볶고 해야 하는 입장에서 그냥 혼자서 찾았다. 그리고는 2.6 커널 + 이클립스 CDT + qemu 환경에 대해서 적어둔 것을 찾아서 한번 따라해봤는데, 안되더라. ㅠㅠ 글도 10년전의 오래된 글이어서 그냥 환경과 버전 차이때문인가 했는데 나만 그런 것도 아니었고… (10년전 글에 13년에 첫 덧글 달려있던 게 나처럼 안된다는 덧글이었다..)

이클립스 베이스 플러그인 결합인 데다가 지원되는 하드웨어 아키텍쳐도 x86, x86_64, ARM 플랫폼을 지원한다고 한다. 그러나 ARM 버전의 경우에는 아직 지원이 제대로 다 되진 않는 듯 하다. 문서상에도 아직 ARM에 대해서는 미완하다고 하니… static 버전에서는 아직은 안된다고 보면 된다.

Screenshot - 2016년 03월 30일 - 11시 15분 48초

Kernel Configuration & Compilation wizard, Multiple Kernel Configuration Options support, Multiple Kernel Compilation Options support, Kernel Compilation Time reduction, QEMU Emulator Support(Kernel Debugging), System Call Dev, Device Driver Auto Code Generation 등등 지원되는 거 많은 거 보면 유용하게 쓰고 있는 사람들은 많을 거 같다. 아직 나한테는 벅찬 툴이겠지만… 지금 연구하는 작업에 대해서 좀 더 빠르게 할 수 있다면 엄청난 툴일 것이다. 맨날 툭하면 러널 내부에서 내용 찾아보고 한다고 웹 네비게이션 뒤지고 커널 소스코드를 doxygen으로 빌드해서 링크 따라다니가 바쁜 것에 비하면 더 나은 환경을 제공해 줄지도..ㅠㅠ

일단 설치해서 써보고 또 정리해둬야지. ㅡㅅㅡ

The JDK is missing and is required to run some NetBeans modules

연구실 컴이 주분투로 바꾸고 나서 자바 프로그램 개발이나 웹 개발용 IDE로 NetBeans(넷빈즈)를 쓴다. 쓰는 사람 얼마나 되는지는 솔직히 모르겠지만…

근데 언제부턴가 다른 짓 땜에 아두이노 IDE 땜에 그런가 오라클 JDK 1.8을 깔고도 주분투가 openJDK 1.7을 설치하더라. ㅡㅅㅡ (이것들은 왜그런지 모르겠다 진짜..) 그리고 나서도 오라클 jdk 1.8을 써야 되어서 기본 jdk 설정을 해줬다. 그러도고 이런 오류가 넷빈즈에 떴다. 자바 개발을 할 필요가 없다면 모듈을 꺼도 된다는 옵션을 선택하고 넷빈즈를 써도 되겠지만… 그럴 수는 없는 상황이라 해당 해결책을 찾아서 해결했다.

Screenshot - 2016년 03월 26일 - 17시 56분 30초

우선 다들 알다시피 jdk 위치부터 찾아야할 것이다. 수동설치한 사람들이야 알아서 path가 지정되어 있을 것이지만, add-apt-repo를 통해 jdk를 설치한 사람들은 당연 저 위치(/usr/lib/jvm/)에 설치된다는 걸 알 것이다. (우분투 기준인데 페도라도 rpm 설치하면 비슷한지는 모르겠다)

그리고 나서 netbeans.conf를 변경해 줘야 한다. 설치된 위치에 etc 폴더 안에 존재한다.

Screenshot - 2016년 03월 26일 - 17시 59분 09초

마꿔야 할 값은 netbeans_jdkhome의 값인데, 해당 오류가 나타날 때에는 저 값이 제대로 된 값이 아니거나 경로가 이상할 것이니 찾아둔 경로를 지정해둔다.

Screenshot - 2016년 03월 26일 - 18시 02분 52초

의외로 간단한 작업이지만 난 좀 적어둬야겠단. 아무 이상없이 이 화면을 보기 위해서 말이지.. ㅇㅅㅇ;

모르는 게 아니었다…

자작업하다가 보면 뭔가 생소하게 보이는 것들이 너무 많았다. 

특히 자주 변하고 하는 웹 분야. 오랜만에 접하니깐 진짜 생소했다. ㅇㅅㅇ;; Nodejs를 처음 알아서 하나하나 살펴보면서도 이게 왜 이런가 저런가 했었는데 어느정도 다 보고나니 깨달은 결론은 하나였다. “이짓을 내가 아파치랑 IIS비교할 때에도 비슷한 짓을 했었지…” 어차피 이것도 웹 서버의 일종인데 말이지. ㅡㅅㅡ
이 이전에도 아이폰의 스위프트와 오브젝티브 C의 개발환경 변화의 차이. 걍 뭘로 구현하느냐의 차이와 각각의 장단점을 이해하고 하는데 며칠이면 되었지만 굳이 거기에 대해서도 모르는 건 아니었다. 타 언어간의 호환성과 장단점, 그리고 각각의 언어에 빗대어서 설명하고 하는 건 이미 다른 곳에서도 했던 것이었다.

그리고 지금 보고 있는 리눅스 커널… 다 뒤지고 볶고 하다가 이론적인 부분에 부딧혀서 아이디어 찾다보면 이미 학부때 시험봤고, 대학원에서도 운영체제 고급과정을 공부하고 Micro C/OS-2도 미친듯이 뒤져보면서 익혔던 이론들 그대로 있었다. 여기에 내 아이디어 넣는답시고 이런 저런거 또 삽질하고 하는 게 그랬지…

….진짜로 세삼스럽지만… 모르는 건 아니다. 잠시 잊고 있거나 처음 써볼 때 뭣모를 두려움을 가지고 봤을 뿐이었다. 근데 이런 걸 왜 자꾸 잊지..

착잡하다…

난 만들었던 프로그램을 하나 팔았었다. 그것도 외국에.

뭐 팔았냐고? 열역학 시뮬레이터다. 시뮬레이터 앱(iOS) 및 연산용 GPGPU(CUDA) 서버 및 소스코드, 빌드파일, 환경, 열역학 이론의 SUDO 코드, 논문(검색해서 나오는) 전부 다.

그리고 그 기업이 독일의 다른 기업에 합병당했다. 애당초 현재 이탈리아의 상황을 봐서는 시장에 문제가 있을 수 있다는 생각을 요즘 해봤지만… 지금 내가 재직하는 곳이 아니라서 별로 신경도 안썼다. (내 문제가 더 심각함. ㅡㅅㅡ) 합병된 이유도 더 넓은 곳에 자기들의 기계 및 기술을 팔기 위해 다른 회사랑 합병해서 넘어갔다고 한다. 사업도 비슷한 영역이지만 특허분야가 달라서 시너지 효과도 있었다 하고…

그리고 내 프로그램도 합병된 곳에서 좀 더 개량해서 쓰이기 위해 나한테도 도움을 요청했다.

그에 따른 수정 요구도 좀 있기도 하고… 당연 돈을 받으면서 하는 거다. 근데 왜 이리 착잡하지…?

“넌 널 욕한 사람이랑 같이 일 할 수 있어?”

어제 내방에 의자를 새로 사서 조립하러 가야 되는데 친한 동창넘이 전화해서 그녀석이 마시고 있는 바에 잠시갔다. (술마시면서 부를 땐 뭔가 들어달란 소리인지라…ㅡㅅㅡ) 간수치의 회복을 위해 난 그냥 선라이즈를 시켰다. (데킬라 선라이즈에서 데킬라 뺀 거. 걍 오렌지쥬스)

그리고는 나한테 “어떤 넘이 있었는데 일하면서 이런저런 일 제대로 되고 안되고 하는 거 땜에 충돌나서 싸웠던 사람이 있었는데 그 사람 퇴사하고 더 이상 볼 일 없겠다 싶었는데 갑자기 들어와서는 나더러 같이 일하라는데 널 졸라 욕한 사람이랑 일하고 싶겠냐?” 라는 내용으로 푸념을 했다. (요즘 이런 거 왜이리 많이듣지… 내가 한가해보이나…)

……난 뭐라 답해야 할지 모르겠다.

일하던 사람끼리 싸웠다가 다시 일해야 하는 건 일때문이기 때문에 어쩔 수 없이 할 수는 있다고는 생각하는데… 이녀석은 아닌가보다.

그래서 궁금해졌다. 일하다가 싸웠던 사람하고 다시 일을 한다…?

……아무래도 일이라는 요소에 한해서만이라면 할 수는 있다. 대신 그 외에 깊은 건 건드리지 말고 그냥 무시하면 되는 거 아닌가……

라는 애매한 결론을 지어봤는데…

아무래도 저게 맞는 거 같다. 왜냐면 일이니깐. 사장하고 싸우는 게 아닌 이상은 일에 대해서는 할 수 있다고 본다. 그 외에는 간섭해봤자 좋을 거 없지만. 그 선 넘어서 간섭이나 마주침이 있으면 그때 돌아오는 건 욕뿐이라고 본다. (비꼬아서라도 하더라, 욕.(경험담.))

그리고 선라이즈 잘 마심.

p.s. 그리고 사담으로 난 그냥 “사적으로 처음 만난 자리에서 처음 보는 상대한테 “씨발 개새끼”란 말을 들어서 그 사람이랑 연관된 사람들하고 하나 둘 죄다 고의적으로 안만나고 있는 건 개인적으로 있긴 함.” 이라고 해서 화재 돌리니깐…

이녀석 왈: “그거 년이지? 친한 남자들 보고는 오빠~ 그러면서 남자 꼬리치고 젊고 좀 생긴애들만 보면 졸라 좋아라 하는.”

어떻게 알았냐고 물으니

“너같은 녀석은 그런 거 안당하면 이상하지 짜샤. 그리고 그거 알면서도 너 부른 사람은 오라고 한 걸지도 모름.”

……개호구 취급이구나, 난.

강사 자격?

(반드시 블로그로 볼것)

잡담하다가 나온 이야기이다. 학원 강사도 자격이라는 게 있다는 걸…

근데 솔직히 다들 의아할 것이다. 보통 대학도 다니고 하다보면 과외한답시고 이리뛰고 저리뛰고 할 애들 많거든…

근데 뭐… 적어도 법에 있어서는 강의를 하는 데 있어서도 적합한 사람과 아닌 사람이 있다는 것이다. 그것도 법으로. ㅡㅡ

그러나 법의 내용은 상당히 간단하다. 해당 자격 안되면 강단에 서서 강의하면 안된다는 것이다. 근데 자격이 참…

스크린샷 2016-03-14 오후 4.24.35

대학 교수들도 교원 자격 없는데도 강의를 할 수 있는 것이 바로 저 이유에 해당되기도 하다만… 이건 고등교육법을 참고하시길.

근데 걱정과 달리 강사 자격이야 뭐 얼마든지 가질 수 있다. 교원 자격 빼고는. (교원자격 저건 임고니깐 당연히 대학부터 다르게 들어가야지.)

근데 문제는 학원 및 교습소의 기준이 법령으로 정한 것에 따라 하다보면 은근슬쩍 초 중등 교육법에 걸쳐져서 문제가 되어 불법학습소가 되는 경우가 많아서 그렇지…ㅡㅅㅡ 아닐 꺼 같다고? 은근 많다. 게다가 학원강사도 이젠 적법한 수준에서 소득세를 내야 하는 입장 된 지가 오래라…ㅡㅅㅡ

p.s. 학원의 설립ㆍ운영 및 과외교습 법령 반드시 찾아볼것.

p.s.2. 모르는 사람 없겠지만.. 수강생에게도 수강 및 해약에 관한 법률이 있고, 그에 따라 합법적으로 자기 의사에 따라 수강이 가능함.

http://oneclick.law.go.kr/CSP/CnpClsMain.laf?popMenu=ov&csmSeq=5&ccfNo=3&cciNo=2&cnpClsNo=1

 

윈폼 프로그램을 맥, 리눅스에서 빌드하기(?!)

마이크로소프트가 오픈소스 프로젝트를 진행하면서 모노(Mono)를 이용한 크로스플랫폼 지원한다는 이야기를 많이 들었을 것이다. 사실 모노로 가지고 그대로 개발한다면서 Gtk#을 이용하고 하는 사람들도 있고, Xamarin을 결재해서 하는 사람들도 많다.

근데 기존에 Visual Studio를 통해 개발했던 프로젝트들, 특히 윈폼 프로젝트의 경우에는 코드 변환을 해야 하는지 그대로 이용해야 하는지 모르는 사람들이 많다. 국내에서 아직 Mono를 많이 쓰는 걸 본 적이 없어서 그런지 정보도 별로 없다. 있어도 대부분 모바일 크로스플랫폼을 위해 이용하던 방법들이 많고…

게다가 전에 윈도우 프로그래밍을 하라고 했을 때에도 “그럼 맥용, 리눅스용 따로 만들어야되요?” 라고 질문도 받긴 했다. (사실 자바 쓰면 그럴 일 없겠지만… 개발에 환경설정에 이런 저런 시간 좀 더 덜쓰는 쪽을 먼저 알려주고 싶었을 뿐이었고, 실제로도 쓸 수 있는 걸 보여주고 싶으니깐.)

간단하다 xbuild 명령어를 통해 직접 빌드를 진행하면 된다.

스크린샷 2016-03-10 오후 12.57.54

*주의: xbuild의 경우에는 make와 같은 빌드 명령처럼 쓰이기 때문에 모노를 전체 설치한 경우에 이용하기 쉽다. 맥의 경우에는 pkg를 통해서 설치했으면 별 문제 없겠지만, 리눅스의 경우에는 만약 전체 설치 안되어있다면 전체 설치를 권장한다.

사용법을 맥북에서 녹화해서 직접 유튜브에 올렸다.

실행 동영상

이로써 맥, 리눅스에서 이용할 수 있는 방법을 공유했다. 단, 이걸로도 지원이 안되는 부분이 있다.

  • 프로젝트 내부에 있는 COM 레퍼런스 파일들은 무시된다.
  • VC++, vdproj(Setup and Deployment) 프로젝트의 경우에는 지원되지 않는다.

즉, 간단하게 보면 C#으로 짠 프로그램에 한해서만 보면 된다. 자세한 내용은 아래의 링크 주소를 통해서 확인할 수 있다.

http://www.mono-project.com/docs/tools+libraries/tools/xbuild/