[octave] 2. octave 설치 방법들

아니, 설치방법 그냥 홈페이지에 있잖아? 라고 하려고 해도….. 그렇게 설명하기 힘든게 옥타브 환경 같습니다. 이유를 좀 설명할께요. 우선 다운로드 사이트를 확인합시다.

처음부터 소스 빌드과정과 리눅스, BSD라니… 여기서 뉴비들은 덜덜거릴 수 있습니다.

맥하고 윈도우는 밑에 있습니다. 근데 맥은 왠지 모르게 wiki를 알려주죠?

윈도우를 제외하고는 거의 코드 빌드를 이용하거나, 옥타브에서 제공하는 ftp에서 제공하는 바이너리 빌드된 녀석을 make로 만들어서 이용하는 것이 가장 최신의 버전을 이용할 수 있습니다. 저는 리눅스 민트와 윈도우를 이용하고 있습니다만, 리눅스 민트의 경우에 그냥 뭣모르고 sudo apt install octave를 입력해서 하면 바로 설치는 깔끔하게 되는데, 버전이 6버전이더군요. 패키지 관리자에 아무래도 6버전대를 제공하는 듯 합니다.

그래도 기왕 쓰는데 최신 버전 쓰는 게 낫지 않나…

그래서 일단 제일 쉬운 윈도우는 exe 인스톨러 받아서 설치하면 됩니다. 처음 쓰시는 분들에게는 윈도우 과정을 추천합니다. 근데 윈도우 64비트는 버전이 둘 있는데, 64bit linear alg for large data라고 있는 것이 바로 메모리가 64G 이상의 고용량 메모리를 이용한 연산이 되는 버전입니다. 일반적으로는 그냥 64비트용을 이용하면 충분히 가능합니다.

윈도우에서 GUI로 실행한 환경

윈도우 설치법 및 리눅스 설치법은 별도로 기회되면 작성해보겠습니다.

[octave] 1. octave 시작하기

octave 관련된 간단한 글을 쓰고 싶었는데, 이 기회에 시작합니다.

회사 다니면서도, 아는 중학생과 고등학생 몇명에게 옥타브를 가르쳐 주면서 그냥 간단한 것만 보여주면서 수치해석에 대한 이야기를 간단하게 원격으로 강의를 했었습니다. 근데 애들이 생각 이상으로 즐겁게 시도해보기도 하는 걸 보면서, 쉽게 접근 가능한 녀석으로 가르쳐 주는 것도 좋을 거 같아보이더군요.

뭐, 대학 오면 매트랩(matlab)도 써보고 하면 그쪽에서 충분히 익히겠지만, 전 이쪽이 좀 더 좋아보입니다. 그 이유를 좀 정리하면…

  1. GPL 라이센스의 오픈소스이다.
    이건 엄청 중요하다고 생각합니다. 접근성이 엄청 좋은 것이니깐요. 쉽게 설치해서 쓸 수 있는 것은 시작하기 쉽다는 것이기도 하니깐요.
  2. 여러 운영체제에서 이용 가능하다.
    이게 윈도우, 맥, 리눅스 뿐 아니라 안드로이드에서까지도 사용이 가능합니다. ios도 되었으면 좋겠는데….ㅠㅠ
  3. MATLAB 문법과 거의 비슷하게 이용할 수 있다.
    일부 차이점은 존재하지만, 그것들을 제외하면 어느정도 matlab 코드를 이해하면서 사용할 수 있습니다. 필요하면 그대로 짜서 만들면 그만이니깐요.
  4. 다양한 패키지를 무료로 내려받아서 적용할 수 있다.
    이거 은근 사용하는 사람들이 많아서 좀 많은 패키지들이 존재합니다. 이들을 무료로 받아서 이용할 수 있고, 그를 통한 지식을 습득할 수도 있습니다.

그러나, 이렇게 적어도 좀 단점이랄 것들도 당연히 존재하는데, 단점에 대해서 이야기하면 다음과 같습니다.

  1. 느리다.
    뭐 아주 못쓸 정도로 느린 건 아닌데…. 이걸로 실무에서 쓴다고 하면 그냥 돈주고 매트랩 쓰는 곳들도 많을 것입니다. 근데 이건 개인적으로는, 리눅스 환경이나 윈도우 환경에서 메모리 엄청 때려박는 환경은 그나마 나을지도요.
  2. MATLAB 대비 지원 기능이 떨어진다.
    자료형 관련부터 시작해서 여러모로 matlab에서는 지원하는 자료형 변수, 함수가 octave에는 없을 수 있습니다. 이런 것들은 코드 만드는데 좀 어려울 수 있는데, 이런 것들도 충분히 코드로 짤 수 있으면 문제 없다고 봅니다.
  3. 프로그래밍 환경만 제공하는 octave는 사용에 제약이 있다.
    매트랩은 수치해석 관련한 여러 툴박스를 가지고 있습니다. 이를 통해서 여러 환경을 지원해줄 수 있는데, 그에 반해서 octave는 코드를 짜서 돌리는 것에만 한정된 환경을 제공하기만 해서, 사용성 관련해서 떨어진다고 볼 수 있습니다.

장점과 단점이 명확하지만, 전 그래도 좋은 접근성을 통해서 여러모로 이용할 수 있는 옥타브를 추천하고 그를 간단한 강의로 사용법을 정리해보고 싶어지더군요. 못하는 것이 아니라 좀 번거로운 것이니깐요. AMD GPU로도 딥러닝, 인공지능을 구현하고 할 수 있지만 굳이 사람들이 CUDA 땜에 엔비디아 GPU로만 딥러닝, 인공지능을 이용하는 것과 같은 거라고 보고 있습니다.

그래서 하나하나 쉬운 걸 해보는 걸로 한 번 쭉 써보고, 이걸 가지고 여러모로 활용하는 내용들도 조금씩 적어서 하나하나 정리해보려고 합니다.

잘부탁합니다~

p.s. 좀 많이 써보고 많은 사람들과 내용 공유도 했으면 좋겠네요. 커뮤도 있긴 할텐데… 그래도 내가 써봐야지 말하기 편하죠. ㅇㅂㅇ

인텔 맥에서 부트캠프 이용 시, 가상화 안되는 문제 해결 – 시스템 무결성 보호 비활성화

지금 뭐 여러모로 돈이 나갈 일이 많아서 오랫동안 써오던 맥북 프로 15인치 2015 버전에다가 부트캠프를 쓰고 있습니다. 그리고 거기에 윈도우를 설치해서 쓰고 있죠. 아직 전 윈도우 개발이 주인 개발이 여럿 있어서요…ㅠㅠ

그런 와중에, 언제부턴가 가상화가 사용할 수 없는 현상이 발생하더군요. 테스트 머신인 가상머신이 있는데…. 그걸 써야 되는데…왜…..ㅠㅠㅠㅠㅠㅠㅠㅠ

안돼…ㅠㅠ

그러던 와중에, 맥을 쓸 일이 있어서 맥으로 부팅을 해서 맥을 업데이트 하고, 여러모로 작업 후 다시 윈도우로 돌아와도 안되더군요….ㅠㅠ

‘보통 맥을 쓰다가 다시 돌아오면 된다고는 하던데…뭐지….ㅠㅠ’

하다가 발견한 녀석이 있었으니,

바로 시스템 무결성 보호라는 녀석이었습니다. 설명에 대한 것은 링크로 달아뒀습니다.

OS X El Capitan과 iOS 9에 적용된 오래된 기술이더군요. 간단히 말하면, 유닉스 기반의 운영체제이기 때문에 rm -rf / 같은 명령어면 그냥 시스템 싹 다 날려먹고 그럴 수 있으니, 그걸 보호하기 위해 root 권한을 무시하는 루트리스(rootless)라는 녀석을 쓰는 거더군요.

이러면 root 권한이 있더라도 쉽게 변경할 수 없도록 되었고, 그 안에는 애플 소프트웨어 업데이트와도 연계되어 있어서 업데이트가 꾸준히 되어서 항상 시스템 관련된 부분을 보호하는 형태가 되는 것입니다.

써놓은 거 보면 그냥 SELinux라고 보면 이해가 확 될 겁니다만… 그게 뭐야 씹덕아 라고 하면…ㅠㅠ

SELinux 정도는 알아야 합니다! (퍽!)

뭐, 그 덕분에… 솔직히 그냥 아무 잘못없이 시스템 망가지는 건 있을 수 없게 되긴 했습니다. 일반 이용자 입장에서는요…

대신 아마 시스템 유틸리티나 그쪽 관련된 개발 하던 사람들은 그냥 포기하고 나가지 않았을까 싶은데… 생각보다 코드 인젝션 처리해서 유틸리티 만들던 사람들이 많아서요. 그게 불가능한 상황이니 그냥 개발 포기하는 그런 형태가 되었을 꺼 같군요.

근데 이녀석이, CPU의 가상화 기능과도 연관이 있더군요. 하긴, 프로세서 관련된 것들은 보호받는 쪽이 제조사나 os 제공자의 입장에서는 확실히 문제가 없는 거니깐요…

뭐, 좀 잡설이 길었는데, 이거 해제하는 방법은 간단합니다.

초기 부팅할 때, 전원 누른 다음에 Command + R을 누르면 복구 모드에 들어갑니다. 그때에 터미널을 열어서 다음과 같은 명령어를 입력하면 됩니다.

csrutil disable

다시 설정하려면 아래와 같이 입력하면 됩니다.

csrutil enable

어렵지 않죠? 그렇게 해서 다시 가상화가 사용되게 되었습니다. ㅠㅠ

평화로운 개발 환경이 다시 왔습니다. ㅠㅠ

[Oh! 반면교사 시즌 2] 앞에서 다른 팀에서 시간 다쓰고는 2일밖에 안남았는데 그 안에 해결해주세요 하면서 절차는 다 지키라고..?

ㅎ… 지금 회사 D-1 인데… 인수인계 때문에 힘들다. 근데 그것보다… 이 시리즈 쓰는 소재는 많은데… 생각하면 그냥 머리만 아프다.

여기 일은 수주하면서 특수 버전에 대한 기능 수정이 들어가야 하는데… 개발 및 배포 단계에 대해서 다음과 같은 절차를 거칩니다.

참고로, 회사 비밀땜에 일부 내용은 뺐습니다.

  1. 이전에 작성한 버전의 소스코드 폴더 복사합니다.
  2. 폴더명에 버전 올립니다.
  3. 개발자 노트북으로 복사합니다.
  4. 사양서 작성, 체크리스트 작성, 버전 정보 기록, 코드 수정을 합니다.
  5. 코드 내에 버전이력.txt 파일에 버전에서 수정한 내용 적습니다.
  6. 테스트를 합니다. 테스트 시트에서 각 부서 통과할 때마다 각 부서마다 버전 관리 기록 문서를 작성합니다.
  7. 테스트 프로그램을 사내에 배포합니다. 사내 배포정보에도 버전 관리 기록 문서 작성합니다.
  8. 테스트 후, 폴더 압축합니다.
  9. 압축 파일과 압축 안한 폴더를 다시 서버에 복사합니다.
  10. 서버 내에 버전 관리 엑셀 파일에 버전 업데잍트 정보 작성합니다.
  11. 수정 완료 정보에 대한 기록을 기록물 관리 서버에 업로드 합니다.
  12. 모든 기록물을 대조하여 버전 관리 기록이 하나라도 빠졌는지 확인합니다.
  13. 릴리즈용 프로그램 빌드를 합니다.
  14. 릴리즈 관리 문서를 작성하고, 릴리즈 버전 관리 문서를 작성합니다.
  15. 릴리즈 프로그램을 릴리즈 담당자에게 전달합니다.
  16. 릴리즈 담당자가 관런 버전 기록물을 만듭니다.
  17. 오더에 따라 출하되는 프로그램마다 버전 기록물을 만듭니다.
  18. 릴리즈 끝.

저희 팀만 해도 이 단계대로 해야 정상인 것입니다.

근데 저희만 일을 하는 게 아니라, 수주이기 때문에 앞에서 수주 관련 설계를 해야 하고, 클라이언트쪽에서 개발하는 시스템에 따라서도 커스터마이징이 들어가는지도 다 따지고 해서 소프트웨어 검토에 들어오니… 2일 밖에 안남았습니다.

근데 수정 사항은 2일 꼬박 다 써도 모자랍니다.

그래서 저 과정 중 일부가 생략되어서 나가기도 합니다. 주로 문서 관련해서가 생략될 때가 많습니다. 문서는 나중에 만들면 되니깐요.

근데 그러다가 저처럼 사람 나가고 하는 일 생기면, 그땐 이야기가 다릅니다.
그럴 때에 뭐 관련해서 인수인계 다 해주고 가야 하는데…
바쁘니깐 펑크난 문서들이 발생합니다. 그것도 한두곳이 아니라 여러 곳에서요. 그래서 까입니다.

근데 시간은 제대로 줄 수 있는 상태에서 까시죠? 저거 다 지키면서 앞에서 다 까먹고 남는 시간에 작업해야 할 일 터지면서 무슨넘의…

….하…. 저 단계 관련해서도 다른 할 말이 좀 많네요.

[Oh! 반면교사 시즌 2] “외부랑 연결 안되면 보안 문제없는 거 아냐?” 라면서 이상한 주장을 펼치는데는 뭐가 있구나

이건 내가 반면교사 시리즈에 넣어야 할지 말지를 좀 고민하고 있다가… 일단은 넣기로 했다. 오씨 까는 시즌 1때에도 오씨 까는 것보다 전반적인 이해 부족으로 인한 문제점을 적은 내용도 조금 있었으니깐…..

당연하게도, 해외 개발회사랑도 일을 많이 한다. 그러다 보면 당연히 영미, 유럽 회사들도 만나게 되는데…

이 글을 읽는 분들도 잘 알겠지만, 일본인들 영어 실력 진짜 극과 극이다. 잘하는 사람들은 잘 대화되고(그래도 일본인인 거 티가 확 난다.) 못하는 사람은 진짜로 못한다. 심각하다. 회사 공식문서를 영어 일본어 동시 작성한다 하면 일본어를 그냥 구글 번역으로 돌리고 끝인 경우도 많다. (내 계약서 관련해서, 그리고 내 퇴직 관련 문서에서 그렇게 그냥 구글 번역 돌려서 작성해준 문서 많다.) 그러다 보니, 미국 회사에서 3년 일하고 온 내 경력은 이들에게 있어서 중요한 거다. 가끔 기술 관련 영어 번역이나 통역에 쓰이니깐.

그리고 이번 케이스에서의 스토리처럼, 외국 회사들 관련해서 미팅 있으면 통역해야 하니깐…

….뭐, 잠시 딴 이야기로 좀 샜습니다만…

그래서 외국 회사들은 자기네 시스템, 솔루션을 가져다가 쓰고 그러면 보통 여러모로 물어보는 것이 참 많습니다. 한국 회사들 물어보는 건 쨉도 안될 수준으로요. (한국 대기업들은 좀 다르려나… 제 경험에는 순수 자기들 기술 가진 중견기업에서는 사전에 엄청 묻는 경우는 얼마 없더군요.) 그러다보니 여러모로 대답을 해줘야 할 경우가 많은데, 거의 항상 마지막에 나오는 이야기는 다음과 같습니다.

“귀사의 솔루션의 보안적인 측면은 어떻습니까?”

라고 물을 때, 제일 힘드네요. 왜냐….

결론부터 말하면,

“저희 회사 시스템은 외부 네트워크와 연결되지 않는 분리된 시스템으로 동작하기 때문에 외부 보안적인 측면에서는 전혀 문제가 없습니다.”

…뭐, 틀린 말은 아닙니다. 실제로 시큐리티 엄청 신경쓰는 연구소라던가 그런 곳들은 격리된 네트워크를 쓰고, 필요한 repo 같은 것들은 전용 서버 만들어서 거기서 받아서 하죠. 미러 서버를 만들어서 외부 업데이트와 내부 망을 나눠서 처리하기도 하고요.

그래서 솔직히 저 대답에 뭐 잘못된 건 없다고 봅니다. 실제로 회사 팜플렛에서 회사 솔루션의 전체 구성도를 보여주고 있고, 그게 어떻게 전체적인 구조 안에서 동작하는지를 파악하는 전체적인 설명을 들으면 충분히 납득이 되는 상황이 많이 일어나곤 합니다.

뭐, 실제로 제조된 기계의 입장으로 봐도 그렇게 단독으로 구성된 시스템에서 뭐 건드릴 거 없습니다 진짜로… 그런 임베디드 기계들 뭐 한둘도 아니고요.

근데 이걸 생각보다 다른 곳에서 악용하는 케이스를 보게 될 줄은 몰랐습니다. 누가요? 바로 그분입니다. (욕쓰기도 아깝습니다 이젠…) 그리고 팀장도, 주임도 생각 외로 그렇게 생각합니다. 그 백그라운드를 설명하겠습니다. 설명 들으면 진짜로 뒷목 잡을 껍니다.

일전에 게임이라는 단어가 들어있다는 이유로 개발 관련된 사이트도 차단했다고 했죠? 뭐 프로그램 다운로드 사이트들도 마찬가지입니다. 일본에서는 다운로드 사이트를 공식 홈페이지가 아니라 옛날 옛적에 한국처럼 서드파티로 다운로드 하는 곳에서 받아서 쓰는 그런 습관들이 여전히 남아있는 거 같습니다. 실제로 일본 내에도 그런 사이트들 판을 치고(한국은 거의 죽었죠. 개인 수준의 사이트들밖에 안남았습니다. 그리고 그들마저도 공문으로 시달리고요.) 한국으로 치면 옛날 네이버 다운로드 같이 프로그램 모아서 다운로드 하도록 되어있는 그런 사이트들이요. 요즘은 그런 사이트들 가면 이상한 프로그램 설치하고 해서 여러모로 말이 많아서 잘 안가게 되지만…

뭐, 저런 것들이 여전히 남아있어서 그런지 지금도 보면 그런 다운로드 사이트 같은 곳들에 대해서는 여러모로 차단을 다 걸어두고 있습니다. 그리고 다운로드 관련으로도 여러모로 제약을 걸어두고 있습니다.

그럼 대체 궁금하죠? 아니, 필요한 프로그램들은 어떻게 쓰라는 거냐? 그냥 메모장, 그림판 뭐 이런것만 쓰라는 거냐??? 할 수 있겠죠?

바로 저 ㅆㄴ의 부서인 정보관리과에 사용 신청을 하면, 자기들이 다운로드 받아서 백신도 돌려보고, 문제 없는지 보고, 보안 관련해서 문제 없는지 보고 그렇게 해서 다 통과 되면 인스톨러를 제공해 주겠다고 합니다. 반대로 당신들이 멋대로 접근하면 바이러스나 악성 프로그램을 받을 수 있다는 기적의 논리로요.

……….

자, 전에 글에서 저 기적의 논리에 대응해서 제가 지금 회사의 보안이라는 것을 설명한 적이 있습니다. 백신에 안걸리면 장땡인 논리입니다. 저들은 오픈소스라서 소스코드를 제공해도 코드 분석은 커녕 돌릴 수 있는 프로그램을 가져와라라고 저한테 역으로 협박을 합니다. 그러면서 저런 내용에 대한 대안이 저딴 보안입니다.

그럼 그냥 저런 거 지켜가면서 회사 생활 하면 되는 거 아닌가요? 라고 물을 수 있는 분들께….

그런 곳에서 쓰는 프로그램의 최종 만능 툴이 일본 SI 시장의 최고 대명사인 사쿠라 에디터입니다. SI 현장에서 다른 건 다 안되는데 저 에디터는 무조건 OK라는 소리의 그 주인공…

저딴 걸로 스스로 갈라파고스 되는 케이스를 보고 있습니다. 그나마 다행인 것이 북미, 유럽권 외국인들도 있는 회사라서 저런 에디터만 쓰는 환경은 아니라서 여러 프로그램들을 쓰긴 합니다만…

저 이상한 주장이 이상하다는 걸 못느끼는 팀장급, 주임급들이 넘쳐난다고 생각해보세요…. 라고 하고 전 일단 이번 글은 마칠께요. 머리아파요…..

[Oh! 반면교사 시즌 2] 파이썬을 써야 하는데 pip를 접속할 수 없어요, nodejs로 짜인 걸 확인해보고 싶은데 npm을 접속할 수 없어요!!!!

이전 편에서 이렇게 썼습니다.

“그리고 저 환경으로 급할 때 요긴하게 쓴 파이썬 스크립트도 장난아니게 많습니다. 근데 정작 사내에서 파이썬 쓰는데 문제가 또 있는데…(이건 다음 편에서)”

네, 그 다음편입니다.

요즘 뭐 개발하는 데 있어서 패키지 관리자의 소중함은 다들 아실 껍니다. 누가 완전 추가 패키지 없이 기본 패키지만으로 자기네 전용 패키지 만들어서 쓰고, 그걸로 갖고 그냥 순수하게만 씁니까….

라고 하면 저렇게 해야 하는 특수 분야 분들이 어떻게 받을 지 모르겠지만(진짜 STL도 버거워서 쌩개발 해야 하는 그런 분야 분들은 어쩔 수 없는 거 압니다. ㅠㅠ), 일반적인 개발에서는 있는 라이브러리 잘 쓰는 거 다들 아실꺼라 봅니다.

ㅎ 근데…..

와. 패키기 관리자를 다 막았네요. 심지어 일부 개발 언어나 환경은 사이트 자체를 막았습니다.

구라같죠? 진짜입니다.

근데 이게 막은 이유가 뭐 있나 싶으면…있습니다.

바로 “Game”, “게임”, “ゲーム”라는 단어가 들어가 있기 때문입니다.

…………….

…………..

무슨 개소리냐 싶겠지만, 일단 들어보세요. 저 개소리가 이해만 되고 납득이 안되는 상황을 보여드립니다.

당연하겠지만, 회사에서 일하는 컴으로 게임하는 건 안되는 겁니다. 회사 컴은 일하라고 주는 거니 놀라고 주는 게 아니니깐요. 그러니깐 직장인들 좀 놀고 할 수 있는 것이 정보 공유를 통한 커뮤니티 사이트가 되기도 하고 그런 거죠 뭐….

근데 이걸 무식하게 생각해서…..

“아예 그냥 게임 관련 모든 사이트를 다 막아버리면 되는 거 아냐?”

라는 특정한 마인드의 분들이 다수 모여있는 곳에서 정해진 것이 바로 키워드에 따른 접속 차단입니다. 그럼 이걸 키워드로 막게 되니깐,

게임 사이트들 다 막고, 게임 뉴스나 게임 정보 관련된 사이트 다 막고, 게임 개발에 관련되어있는 사이트를 다 막습니다. 그러니 게임 개발에 필요한 것들은 그냥 다 막아요. 스크립트 언어 관련해서 루아도 막고, 파이썬도 막고… 게임 서버 관련된 것도 막습니다. 뭐 여러모로 막습니다.

그러나, 유일하게 피해가는 곳이 있으니! 그것은 마이크로소프트입니다.

근데 왜 마소는 안막아? 엑스박스 게이밍 있잖아? 다이렉트 X 게임 개발에 쓰잖아? 라고 생각하실 분들…
마소는 어차피 여기서 윈도우 개발도 하고 해야 하니 당연히 예외처리 했습니다. 그분들이 거기까지 멍청하진(??) 않습니다.

자, 이렇게 쳐막았으니 당연히 파이썬 안됩니다. js 관련된 거 다 안됩니다.

…..왜 이꼴이 났는지 이해가 되시죠?

그리고 그 중심에는 그 썅년이 또 껴있습니다. 그 썅년 아이디어입니다.

이걸 회사 입장에서 이해하는 분들이 있을 수 있지만… 개발에 특정 언어 하나만 가지고 모두 다 할 수 있는 경우 있나요? 이것저것 필요하면 쓰는 거고, 빠르게 개발할 수 있는, 빠르게 처리할 수 있는 거면 그냥 쓰면 되는 겁니다. 그런 거에 이것저것 따지거나 하는 건 없다고 보는데….

이렇게 이것저것 다 막아놓은 관계로 개발한 거 빠르게 테스트 할 테스트 프로그램 외부에 널려있는 것도 파이썬 없어서 못돌리고 그래서 C#으로 테스트 프로그램 싹 다 개발해서 테스트 합니다. 그렇게 힘들게 테스트 프로그램까지 짜서 돌려서 문제 없이 싹 다 만들고 했는데 나중에 개발에 시간 많이 걸렸다, 다음에 이 공수 어떻게 줄일꺼냐 하는 소리나 들어야 했습니다.

….이걸 미쳤다고 이야기 안하면 그냥 평생 그러고 살라고 하고 싶습니다.

[Oh! 반면교사 시즌 2] 회사에서 말하는 보안과 회사에서 검증하지 않은 소프트웨어 == 회사에서 쓰는 백신으로 안돌려본 소프트웨어

이전 편의 좀 연장으로 쓸께요. 원래 쓰고 싶었던 내용은 그 다음에 쓰기로…. 왜냐, 저딴 개소리를 하는데 있어서 뭔가 이상하다 싶으면 이걸 보면 됩니다.

저딴 일이 있고나서 저한테 안내라면서 저를 회의실로 불렀습니다. 회사 보안에 맞는 소프트웨어를 써야 한다고 말이죠. 그래서 제가 물었습니다.

“회사 보안에 맞는 소프트웨어는 어떤 것이냐. 지금 보면 라이센스 만료되고, 개발 중단되어서 끊긴 그런 소프트웨어들 엄청 보이는데 이런 프로그램들이 더 문제지 않느냐?”

하니깐 하는 소리가

“사내에서만 쓰니깐 문제 없다.”

……

그래서 다시 묻습니다.

“그럼 프로그램들이 보안이 취약한지, 내가 쓰고 있는 오픈소스나 재단, 비영리 프로그램들이 보안이 취약한지 어떻게 아느냐?”

“백신 돌려본다.”

……………………..

미치겠습니다. 또 묻습니다.

“그럼 백신이 안잡아내는 프로그램이면 전부 OK인거냐?”

“우리가 돌렸을 때 문제 없고, 업무에 꼭 필요하면 된다.”

……………..

그래서 제가 그자리에서 3분만에 프로그램 하나 짰습니다. 백신에 당연히 걸리는 프로그램니다. (이정도 단순한 바이러스는 다들 교양으로 하나 짤 수 있잖아요.) 근데 웃긴데 짜고 돌리는데도 바이러스로 인식 안합니다.

“그럼 이거 돌려봐라.”

근데 회사 백신이 못잡습니다. 바이러스 아니랍니다.

“이 프로그램 백신에 걸려야 정상이다. 근데 왜 안잡냐.”

“프로그램 정보가 없어서 안걸린 거 같다.”

“프로그램 정보가 없으면 오히려 예외 처리를 해줘야 할 만큼 잘 잡아야 정상 아니냐?”

입 쳐 다뭅니다. 그리고 저 이야기가 틀린 소리냐면 그것도 아닙니다. 개발 처음 하시거나 회사에서 처음 프로그램 내보고 하면 아실 껍니다. 프로그램 정보가 없어서 백신 프로그램들이 차단하고 난리인거… 백신은 그게 당연한 겁니다.

…………진짜 썅년입니다.

뭐 그러고는 할 말 있나 지켜보는데 결국 말하는 거라고는

“회사에서 인정 못하는 프로그램은 안됩니다.”

라고 해서 또 질문 합니다.

“이 소프트웨어는 여러 파트너 맺어져 있고, 실제로 마소나 몇몇 유명한 회사 직원들도 컨트리뷰터로 참여하고 있는 프로그램이다. 그리고 이걸 각종 백신회사에서도 검증하고 배포하는 곳에서도 안전한 프로그램으로 이미 다 인식하고 있는 프로그램이다. 이건 왜 안되는 거냐.?”

입 다뭅니다.

“파이참 개발한 젯브레인스는 지금 여기 회사 개발보다 몇십배는 많고 몇배는 똑똑한 사람들 모여서 만드는 상용 프로그램의 커뮤니티 버전이다. 당신이 지금 이 프로그램의 보안 문제를 검증할 수 있는 실력이라면 이 프로그램에서 어떤 문제 때문에 안되는지 나한테 설명해라.”

“파이썬 언어 자체를 사용 금지하도록 해뒀는데, 이걸 왜 사용하면 안되는지에 대해서 나한테 설명해라. 내가 이 정보 그대로 번역해서 파이썬 재단에 파이썬 언어의 중대한 결함 시스템으로 해서 당신 이름하고 같이 공유하겠다.”

입 다뭅니다. 짜증납니다. 그래서 짜증 좀 냅니다.

“당신이 말하는 보안이라는 수준이면, 당신은 지금 이 프로그램이 컴퓨터에서 돌면 바이러스나 각종 유해 프로그램처럼 돌 것이라는 것을 전부 다 알고 있다는 소리인데, 그러면 그런 해안이 없어서 전 세계 사람들에게 검증받고, 수많은 회사들이 써보고 문제 없다고들 이야기하는 소프트웨어를 개발한, 이용하는 전 세계의 모든 사람들이 당신보다 멍청한 사람들이라서 이걸 쓰는거냐?”

당연히 대답도 안합니다.

“그래서, 내가 이런 툴을 쓰려면 어떻게 해야 하냐.”

그러니 이제서야 답할 내용 튀어나오니 바로 답합니다.

“정보보안과에 신고해 주시기 바랍니다. 신고 후에 검증하고 결과 통보까지 4주 걸립니다.”

………………………

제정신 아닌 년입니다.

참고로 그 뒤에 어떻게 되었냐면요….

저 년은 제 근처에 얼씬도 안하고, 정보 보안 관련해서 저한테 단 한톨도 말 안합니다. 대신 제 위에 있는 사람 통해서 간접적으로 들어오는데, 그분들도 뭣도 모르고 다 털립니다. 이게 회사 입사 4일만에 있던 이야기입니다.

그리고 지금까지도 그때 금지한 프로그램들은 여전히 금지입니다. 저 빼고요. 이러고도 미친년 소리 안나오면 이상한 겁니다.

[Oh! 반면교사 시즌 2] 나는 (회사에서 검증하지 않은 소프트웨어를 쓴) 너를 자를 수 있어!

이게 뭔 제목인가 싶겠지만… 사실입니다. 그리고 지금 이 회사 정보보안과 주임이라는 년이 꺼든 협박입니다. (순화된 표현을 쓰기도 아까운 년입니다. 그래서 년으로 씁니다.)

개발을 하기 시작하면 당연하게도 개발 환경을 구축합니다. 그리고 개발환경 구축하면서 원하는 개발 툴이나 확장 프로그램들을 설치해서 쓰는 경우가 허다합니다. 이건 누구나 다 그럴 껍니다. 요즘 오픈소스로 나온 것들도 많고 그냥 프리웨어 환경으로도 여러모로 구축하고 시작하니깐요.

그러나, 보안이라는 이유로 프로그램 다운로드를 금지하고, 공식 사이트를 못들어가게 하는 미친 환경이 실존할 거라고는 생각 못했습니다. 진짜로요….

….ㅎ 진짜.

일본에 넘어오기 전에 구현한 회사 프로그램이 있는데, 그건 패키지 관리자를 통해서 몇몇 라이브러리를 이용하여 만든 프로그램입니다. 그래서 이걸 인수인계 하는 과정에서도 이 개발 환경을 보여주는데 패키지 관리자에 접속이 안됩니다. 회사 네트워크에서 블락했습니다. 마이크로소프트의 패키지 관리자를 블락하는 사상 초유의 미친 환경을 봤습니다. 개지랄을 하니깐 풀어줍니다.

그리고 다서 얼마 안 지나서는 회사 서버 접속이 이상하게 안되는 일이 있어서 정보관리과를 불렀더니, 그들이 제 노트북을 뺏어갑니다. 원인을 모르겠다고요.

그리고는 고치라는 서버 접속문제는 안고치고는 제 노트북에 깔린 프로그램에 대해서 문제시합니다.

그때 깔린 프로그램들이 뭐냐면요..

  • visual studio
  • visual studio code
  • jetbrain
  • sourcetree
  • winmerge
  • vim
  • WSL2로 깔린 ubuntu
  • wireshark
  • nmap
  • putty
  • sqlite browser
  • python
  • nodejs

이 중에 비주얼 스튜디오와 비주얼 스튜디오 코드를 제외하고는 뭔지 모른다는 이유만으로 전부 삭제할 것을 저한테 명령하였습니다. 진짜로요. 근데 이걸 개발을 관장하는 과장도 이 이외의 프로그램들을 왜 썼는지 알려줘도 어찌해야 할 지 모릅니다.

그러면서 저 정보보안과 주임년이 날린 개소리가 가관입니다.

“나는 (회사에서 검증하지 않은 소프트웨어를 쓴) 너를 자를 수 있어! 말 안들으면 인사과에 퇴사 조치 시키겠다.”

무슨 이런 대사도 아니고 진짜…

그때 퇴사 결심을 했었는데 그게 입사 3일만의 일이었습니다. 진심으로 저걸 지금 여기 입사를 위해서 멀리에서 찾아온 외국인한테 하는 소리라고 지껄이는 건가 싶습니다.
그러고는 사내 툴이라면서 보여주는 몇몇 것들은 이미 라이센스 만료된 소프트, 개발 끊긴지 몇십년 된 소프트, 윈도우 xp 환경 권장 소프트… 전부 안돌아간다면서 거부했습니다. 노트북은 최신껄 줬으면서 대체 왜…?

그리고 저 환경으로 급할 때 요긴하게 쓴 파이썬 스크립트도 장난아니게 많습니다. 근데 정작 사내에서 파이썬 쓰는데 문제가 또 있는데…(이건 다음 편에서)

p.s. 이런 것들이 진짜 바글바글한게 일본이란 나라라면, 일본은 희망이 없습니다. 일본에서 사쿠라 에디터 쓰는 이유가 있습니다. 메이드 인 재팬 뽕 채우는 정신승리용 에디터입니다.

[Oh! 반면교사 시즌 2] (내가 참가하지 않은) 이전 회의때 정해진 걸 왜 이제서야 물어?

되게 간단한 유틸리티 개발 요구가 있었다. 그래서 회의를 잡고 요구사항 히어링 하면서 기능에 대해서 정의를 싹 했다. 그리고 정의된 내용에 대해서 다시 회의를 잡고 이게 맞는지 최종 컨펌을 또 잡는다. (이게 일본회사 스타일이고, 이딴 짓 땜에 피로감이 장난 아니다.)

그렇게 해서 최종으로 정해진 내용을 가지고 유틸리티를 하나 개발해줬다. 그렇게 어려운 것도 아니었기 때문에 금방 끝났다. 그리고 그날 테스트까지 다 마치고는 넘겨줬다. 이게 그냥 단 하루만에 될 정도였다.

근데 퇴근시간에 돌아가려고 할 때, 나한테 이거 아닌데? 하는 소리가 전해졌다.

ㅎ 진짜…..

그래서 다음날 회의를 잡으려고 했다. 근데 출장갔단다.

……………

그러고 다음주가 되었다.

그리고 나서 회의하는데, 원래 이게 아니란다. 이 유틸리티로 정리할 파일의 포맷이 잘못되었다고 한다.

그래서 뭔가 했더니, 원래 이 유틸리티의 결과물을 또 받아다가 처리할 프로그램이 또 있다고 한다. (…????) 그러니 그 프로그램에서 읽을 수 있도록 파일 포맷을 맞춰야 한다는 것이다.

그래서 난 그자리에서 지난번에 결정된 내용을 싹 다 말했다. 그러면서 저 말을 끼워맞추니

나: 그 다른 처리 프로그램이 요구하는 내용이 원래 더 있어야 하는 거네요?
X: 응.
나: 그 프로그램은 왜 저한테 이야기가 안되었죠?
X: 이미 전에 이야기 했잖아?
나: 언제요?
X: OO일에.
나: 저 이거 관련해서 첫 회의 진행한 날이 ㅁㅁ일인데요? (ㅁㅁ = ㅇㅇ + 3일)

그제서야 내가 참가하지도 않은 자기네 내부 회의 내용을 이제서야 말한 것이다.

ㅎ ㅅㅂ….

그러고는 출장 가있는 동안 사내 정보 공유하면서 내가 그 유틸 한거 어찌되었냐? 아직도 못했냐? 그러면서 부서란 부서에 죄다 쪼고 있었다고 한다. 그래서 위에 팀장들한테 졸라 까인 건 덤이다.

일단 그 연동해야 하는 소프트 관련해서 정보 얻고 뭐 하고 해서 이틀 걸렸서 완성 다 하고 깔끔하게 끝났는데, 일 끝나면서도 하는 소리가 또 가관이었다.

“앞으로는 사양 제대로 확인하고 해요.”

…..이래서 이 회사는 발전이 없는 곳이라도 본다. 그냥 하루빨리 퇴사일이 와야지 별 수 있냐….

snoopy – 리눅스 커맨드는 history 말고도 별도로 저장해두자. ㅠㅠ

리눅스 커맨드 환경에서 계속 쓰다보면 생각지도 못하게 꼬인 짓들을 할 때가 많다. 그럴 때, 어떤 걸 했는지 헷갈려서 이런 저런 생각 막 하다가 결국 history 쳐보는 게 제일 빠르다는 걸 알긴 한데…..

history도 저장하는 커맨드 수가 한정되어 있다. (근데 이건 당연히 그래야..)

근데 history로도 어떻게 할 수 없는 그런 것들은…. 그냥 커맨드 로거 프로그램 같은 것들로 어떻게 해야 한다. 안그러면 진짜…ㅠㅠ

내 기억력이 그렇게 좋지 않다는 걸 요즘들어서 깨닫고 있는지라..

그래서 snoopy를 써서 요즘은 커맨드 로깅을 좀 하고 있다. 쓰는 법은 github에도 나와있고 해서 뭐 여러모로 편하게 설치해서 쓸 수 있고, 이런 걸로 성능저하 신경쓸 정도도 아니고…

이런 툴들 하나하나 알아둬서 나쁠 건 없으니 알아두자.