읽기 좋은 코드의 중요성을 다시 한 번 느낍니다…

저는 이전에 임베디드 할 때에도 별로 소스코드 레벨에서는 협업이라고 할 것이 없었습니다. 아, 있었어도 별로 문제가 안되었던게… 10년동안 C랑 C++을 했던 사람이 그냥 그 스타일대로 하던 거 뭐…. ㅡㅅㅡ

근데 요즘 회사에선 프로토타입이나 어느 개발이나 파이썬을 씁니다. 그러면서도 제가 파이썬에서 사용되는 코드 규약이나 그런 것들을 지키지 못하거나, 서로 협력하면서도 발생할 수 있는 일부 커뮤니케이션에서도 제 독단적인 일들이 발생하는 것을 확인하게 되더군요. 저도 아직 멀었다는 생각도 듭니다.

그러면서 코드 규약에 대해서 생각해보는 시간을 좀 갖게 되었습니다. 중요한 건 남들이 이해할 수 있는 코드인 것도 있지만, 만약 내가 없더라도 문제없이 누군가가 내 코드를 수정할 수 있는가에 대한 것…

거기에 내가 왜 이런 코드를 짰는지에 대한 의문이 해소되지 않으면 안된다는 것도…

여러모로 다시 한 번 생각하게 되는군요.

반면교사가 되는 남을 까면서도 하지 말아야 하는 걸 배워야도 하지만… 가끔은 저도 이렇게 하나씩 못하는 걸 발견했을 때 다시 생각해서 수정해야 하는 걸 발견하는 것도 중요한 거라고 다시 생각해봅니다.

근데 기무춍상은 좀 까야됩니다.

의외로, 공식 문서를 이해하는 게 더 빠른 해결책이 될 수 있습니다.

제가 이번에 좀 여러모로 삽질을 하게 된 일이 있는데…. 삽질하면서 검색을 안해본 게 아닙니다. 그런데, 블로그 정보나 유튜브로 영상 올려놓은 정보는 생각 이상으로 제각각인 경우가 많습니다. 오래되어서 참고가 될 수 없다거나, 자기만의 방식으로 설명하거나, 지금은 지원 안되는 서드파티를 사용한 특수한 코드거나, 강의용이거나…

다양한 이유로 이용하기 어려운 것이 정말 많다는 것을 느꼈다.

근데 이럴 때일수록, 공식 문서를 뒤져서 이런 기능이 있는지부터 찾아보거나, 이렇게 이용할 수 있는 무언가가 있는지를 우선 찾아봐야 한다. 그렇게 안되면 그때부터 머리 써서 만들어야 하는 것이 된다.

생각보다 많은 기능들이 개발에 필요할 거 같아서 만들어진 기능들이 많이 존재한다. 그걸 제대로 써본 적이 없거나 해서 그렇지.

설치, 운영에 대해서도 생각보다 자세하게 적혀있는 내용 또한 많이 존재한다. 특히 고급, 전문 기술의 프로그램들일수록 환경 의존적이거나, 환경에 따른 확장 가능성이라던가 하는 게 정말 많아서…

서드파티를 쓴 다고 해도 서드파티에서 제공하는 공식 문서가 기본 베이스이다. 그 외에 기능에 대해서 검색하거나 새로 만드는 건 그렇다 쳐도, 이미 어느정도까지 제공해주는지조차 모르는 상태에서는 제대로 된 판단을 하기 어렵다.

그래서 공식문서가 생각 이상으로 이해가 되거나 도움되는 경우가 정말 많다. 가끔 공식이 이상한 특수한 것들이 있긴 한데…. 그건 좀 예외다만, 그런 것들은 생각보다 오래 못가는 경우가 많으니 패스.

이어서 CUDA도 최신으로 설치해봤다 + 추가 잡소리…

cuda 설치 방법도 일단 내가 맘대로 해봤다. 뭐, 드라이버만 설치 제대로 되어있다면 여러모로 어려운 건 아니었다. 드라이버때의 삽질을 생각하면….. (괜히 엿날리는 게 아니었나 싶었다. 편리하다고 누가 그랬냐.)

그리고 여러 설명을 넣는 것도 좋긴한데, 영상으로 만들어서 남겨서 놓는 것도 나쁘지 않겠다는 생각이 들었다. 그래서 글로도 설명을 계속 하는 것도 좋지만, 설명이 너무 어려운건 영상으로도 남겨놓으려고 한다.

뭐 영상 편집에 그렇게 돈드는 것도 아니고… 내가 막 버튜버를 할 것도 아니고 말이지…

ubuntu 22.04 lts에서 최신 nvidia 글카 설치하는 삽질…

왜 삽질이냐…. 결론적으로 성공은 했는데, 성공하는 과정동안에 알아낸 게 너무 어이가 없었다. ㅠㅠ 이건 따로 영상으로도 만들었다.

삽질 경험을 어쩌다보니 영상으로 남기게 되었다. 글로 쓰는 거랑은 별개의 기록이지. ㅡㅅㅡ

결국 알아내서 제대로 설치하게 된 것이…

  1. 요즘 최신 드라이버는 gcc-12가 필요하다!!!!!!!!!!!
  2. g++-12도 필요하다!!!!!!!
  3. ubuntu 22.04 lts는 그냥 gcc 설치하면 11의 최신 버전이 설치된다. ㅠㅠ

그래서 삽질이었다. ㅠㅠ

뭐, 그래도…

진짜 이거 지르느라 오래 걸렸다. ㅠㅠ

4060 ti 16G 모델 사다가….

오래된 녀석이라도, 최대한 쓸 수 있다면 써줘야지. ㅡㅂㅡ


잘 박아다가…..

케이스 사서 조립하는 거 귀찮아서 이러는 거…. 맞을지도.

잘 모셔두고 쓰고 있다. ㅇㅅㅇ 잘 써먹어보자.

워드프레스 닷컴 계정으로도 설치형 워드프레스를 관리할 수 있습니다. Jetpack만 활성화 되어있으면요.

Jetpack은 워드프레스에 기본적으로 있는 기능으로써, 간단한 보안 설정을 해줄 뿐 아니라 여러모로 편리한 기능 같은 것도 도와줍니다. 그런데 이걸 이용하려면 워드프레스 닷컴 계정을 요구할 텐데, 없으면 그냥 만드세요.

나중에 https://wordpress.com/sites 라는 곳에서 jetpack을 활성화환 사이트를 별도로 관리할 수 있습니다.

그러고 나면 뭐가 더 좋냐면… 워드프레스 앱으로도 로그인해서 글쓰고 할 수 있게 됩니다. 이건 좀 나중에 설명 더 드리기로 하고…(오류가 나서 추가 설정이 더 필요하기도 해서요.)

스팸에 대한 처리 등 간단한 보안은 제대로 지원하고 하니깐 좀이나마 안심되는 워드프레스 환경을 이용할 수 있게 됩니다.

QEMU를 이용하면 임베디드 하드웨어 에뮬레이팅이 접근하기 쉽습니다.

저는 요즘 개발에서는 한 발 뒤로 빠져있는 입장이긴 한데, 그래도 여러모로 개발 관련 질문을 여럿 받습니다. 지금까지 해온 것도 있고 해서..

특히 임베디드를 좀 오랫동안 해왔고, 주변에 여전히 임베디드 하는 선배분들도 많고, 극소수지만 임베디드 하겠다고 하는 애들도 많이 보는데….

하드웨어 구매하기 좀 애매한 사정의 친구들이 보일 때가 있습니다. 그럴 때에는 그냥 전 QEMU를 이용하여 에뮬레이션 하는 방법을 알려주곤 합니다. QEMU 자체는 가상화되 지원하지만 CPU 아키텍쳐를 에뮬레이션 해주기도 하기 때문에 다양한 환경 기반으로도 작업을 해볼 수 있기 때문입니다.

뭐 하드웨어 가격 얼마나 한다고 하겠지만, 해보신 분들 아실 껍니다. 하드웨어 하나만 삽니까? 이것저것 뭐 한다고 더 지르고 그러면서 생각 이상으로 지출 많이 생기는 거 뻔한데….

기회가 되면 직접 돌려보는 것도 좋겠지만, 저는 아직 힘들면 우선 RTOS 같은 것들을 가르칠 땐 QEMU를 통한 환경으로 가르쳐 주는 것도 좋은 방법이라고 생각해서 관련 노하우를 전달해주곤 합니다. FreeRTOS 같은 녀석 이용할 때 QEMU 쓰는 게 얼마나 편한데요. 특정 타겟팅 환경 에뮬레이션 해서 이용하는 것도 편하고요.

…이참에 노하우로 정리해야 할 것들이 계속 늘어서 큰일입니다.

기무춍상 001 – 기무춍이 되기 위한 조건

왜 이거부터 시작할까 싶은데… 이거 시작글에서 적었다. 사람만 다를 뿐이지, 같은 조건으로 같은 루트를 타고 일본으로 들어와서 같은 절차를 밟고 그대로 한국으로 리턴하는 케이스다. 그렇다면 그사람들은 거의 대부분이 기무춍이 되기 위한 조건을 가진 상황이라는 거다.

유학에 대해서 많은 사람들이 도피성으로 유학을 하는 경우가 많다. 근데 취업을 도피성으로 하는 경우를 볼 거라고는 난 생각도 못했다. 한국에서 취업이 안되는 정확한 이유에도 본인이 포함 안되면서 당연하게 난 안될꺼야 하고는 일본취업으로 방향을 틀었다는 애들이 많다. 이게 좀 웃긴데… 한국에서도 일을 했고, 미국에서도 일을 했고, 일본에서도 일을 하면서도 느꼈지만 일은 어느 나라에서 해도 큰 차이 잘 안났고(업무 내용은 차이가 났지만 업무 환경과 태도를 말하는 거다.) 일본에서 못하는 거면, 한국에서도 못한다. 그러니 취업은 도피성으로 하는 것이 아닌데… 어이없는 상황이다. 근데 생각 이상으로 많다. 그리고 그런 사람들이 국비나 붓캠으로 일본취업 연계까지 가서 보니 블랙이었다 그런 소리 하더라.

저기에 실력도 어정쩡하게 있는 스타일은 일본 취업을 도전이라고 생각합니다. 일본에 개발 능력이 없다고 생각하니깐요. 실제로 없는 곳도 있습니다. 이건 나중에 잡소리쯤에서 따로 설명하거나 하죠. 한국에서는 제대로 된 곳 취업도 못하는 수준인데, 일본에선 대기업으로도 갈 수 있다는 그런 느낌? 으로 뭔가 옛날에 다큐도 있었죠. 그게 실력있는 대기업인지는 차차 나중에 보기로 하고… 뭐 그런 것들 때문에 한국에서 실력 출중하게 보고 당장 쓸만한 경력직 혹은 그에 준하는 수준으로 뽑으려고 하다보니 이쪽도 도피를 합니다.

그리고 마지막으로, 굉장히 어정쩡한 인간관계에서 발생합니다. 근데 이건 딱 집어서 뭐라 하기 어렵군요. 알고보니 그랬다 케이스가 많네요. 그리고 그들한테는 당연한건데 다른 부류한테는 당연한 게 아니고.. 말하면 싸움만 나니 이건 그냥 그렇다고만 알아두세요.

이게 왜 조건이냐고 물었을 때, 해답은 간단합니다. 일본 취업에서 제일 중요한 자기 분석이라는 게 전혀 안되는 사람들의 특징입니다. 그래서 정상적인 일본 취업 루트를 제대로 타지 않는 상황에서 쉬운 방법으로 일본에 들어와 블랙기업을 입사했습니다. 어떤 과정인지는 더 자세히 쓸 일이 있겠으니 넘기겠습니다. 그런 상황에서 회사 탈출을 위해서 여러모로 노력을 해야 하는데… 저런 것이 깔려있는 상태에서 전직(일본에서는 이직도 전직이라고 표현합니다.)을 하던 제 2 신졸(대학 졸업을 최근에 한 경력 1,2년 짜리를 신입으로 취급해주는 취업 시스템)을 하던 뭔가를 노력해서 해야 하는데 그 노력은 별로 하기 싫은 상태가 되었으니… 귀국하던 일본에서 더 어이없는 선택을 하던 합니다. 그런 것들이 한인사회 욕쳐먹게 하는 짓들의 원인이 되죠. 귀국은 상관없습니다. 한국에서 it 취업을 다시 하던 다른 분야 취업을 하던 어떻게던 살겠지만, 더 어이없는 선택을 통해서 기무춍이 되는 과정으로 들어오는 거죠.

꼭 기억하시기 바랍니다. 취업이라는 거 자체로도 현실적인 자기 삶이 결정되는 것인 만큼 중요하고 신중하게 해야 합니다. 거기에 해외 취업은 더더욱 신중하게 해야 하고, 밖으로 나오면 의지할 수 있는 사람 있어도 그사람만 믿으면 안됩니다. 진짜 ㅄ되기 십상입니다. 그리고 도망치지 마세요. 기무춍이 되고 나서는 이미 늦었습니다.

기무춍상 000 – 왜 이 시리즈는 만들어졌나…

지금 많이 잃어버려서 어찌 할 지 좀 고민인 Oh! 반면교사는 아주 쌩 패악질의 기준이었던 미국에서 겪은 한국인 오모씨 이야기를 거의 각색했다. 그러면서 하면 안되는 짓에 대한 반면교사를 쓰고 싶었다. 이전 글들을 잃어버려서 이거 어찌 할 지 여러모로 고민중이다.

근데, 이 기무춍상은 왜 시작하냐고 하면… 일본 IT 취업에서 보고 있는 개막장 스토리를 투영하고 싶었다. 솔직히 여기서 적응 잘 해서 나가는 사람들 많은데, 그분들 이야기가 아니다. 상당히 많은 사람들은 일본으로 넘어오는 이유가 일본이 취업 잘된다는 이유 + it는 취업 더 잘된다라는 걸로 해서 넘어와서는 온갖 병신같은 일을 당하거나 저지르거나 해서 2,3년 하다가 귀국하고는 한국에서 경력자로 인정받으려고 하는데, 현실은 진짜 미안하지만 개판인 케이스를 너무 많이 들었고, 나도 좀 봤고, 제대로 정착해서 사는 사람들 통해서도 들려오는 이야기가 너무 많았다.

그것도 엄청 정형적이다. 똑같은 패턴으로 들어와서 똑같은 패턴으로 망하고 귀국후에도 똑같은 패턴이라는 것이다. 진짜 신기할 정도로 똑같은 이야기들이 엄청나게 많이 나온다. 어디서 실패하는 법을 똑같이 배워오는 듯 하다고할 정도로… 가끔 보면 볼수록 스트레스 받는다. 술안주거리로 흘려들으면 좋겠는데, 기무춍 같은 것들이 있다 간 클라이언트를 만났을 때 내가 한국인인 것을 알게 된 순간 그들의 태도가 변한다는 걸 직접 경험하는 것이다. 스트레스를 받는 이유를 알겠는가?

나는 성공 케이스는 그렇게 이야기 할 필요 없다고 생각해서 솔직히 성공 이야기는 잘 안쓴다. 잡소리에도 안쓴다. 그런 거 보면 결국은 좋은 타이밍에 자기가 뭔가를 할 수 있을 정도로 안에서 열심히 살아왔던 사람들이 좋은 타이밍에 기회 잡고 잘 되는 케이스인데… 누구나 다 그럴 수 있냐고 하면 또 아니다. 그냥 위인전 읽고 나도 저렇게 될꺼야 한다고 해서 그게 되나?

근데, 실패 케이스는 정말 많은 데다가…. 제발 이런 인생 살지 말아야 된단 걸 보여줘야 한다고 본다. 그러면서도 나도 이딴 식으로 되고 싶지 않다. 제목인 기무 춍부터 한국인 멸시다. 일본 안에서도 제대로 인정받는 한국인들은, 제대로 자리잡고 생활하는 한국인들은 이렇게 불릴 일도 없다. 뭐 그렇다고 일본 회사들이 일본 사회들이 잘하냐고 물으면 그것도 아니라 거의 양쪽을 다 까는 스토리도 있을 것이다. 미국은 비자에 대한 허들이 좀 많이 높기 때문에 미국 같은 곳에서 병크 저지르는 것은 거의 그 개발자 자체를 까면서 하지 않아야 할 일을 서술하게 되겠지만.. 이 글에서는 그 개발자 자체만을 까진 않을 거 같다.

[양병석 칼럼] 개발자에게 학벌이 중요할까?…부트캠프 출신 비전공자 인재들을 겪어보니 ①의 후기

잘 들어가지도 않는 sns에 공유되어 있던 것이 있어서 우연히 읽어보게 되었습니다.

[양병석 칼럼] 개발자에게 학벌이 중요할까?…부트캠프 출신 비전공자 인재들을 겪어보니 ①

결론부터 말하면, 옳은 이야기 하셨습니다. 근데 욕 좀 많이 드실까봐서 걱정입니다.

부트캠프 출신이라면서 본 분들 중에서 유형이 거의 딱 4가지 분류가 되는 분들이 많았는데

  1. 전공자가 뭔가 좀 더 하고 싶어서 학교도 참가하면서 이것도 참가함
  2. 전공자인데 학교에서 실력은 딸리고, 학원 가서 비싸게 다시 배우긴 싫고, 붓캠은 하면 뭔가 이력서나 넣기 좋아보이고 하는 애매한 부류
  3. 비전공자인데 부트캠프에서 열심히 해서 잘하는 케이스
  4. 비전공자인데, 일단 수업 따라는 가는데 그 뒤가 불안한 분들

사실 어떤 것이던 상관없이 개발자는 현업으로 있다고 해도 계속해서 배우고 배워서 계속 발전해야 하는 사람들입니다. 그런데 1,3번의 분들은 사실 현업에서 일을 하더라도 자기가 모자라는 걸 해나가기 위한 감을 잡았습니다. 특히 3의 경우에 그런 분들은 커뮤니케이션만 충분하면 개발 업무를 잘 해낼 수 있는 분들입니다. 정말 고도의 개발을 해야 한다 하면 좀 남들보다 더 오래 걸리긴 하겠지만요.

문제는 2,4의 분들인데…. 솔직히 2번 부류의 분들은 걱정 안합니다. 2는 뭐 알아서 나중에 개발 안하실 분들입니다. it 관련 일이 뭐 개발만 있는 것도 아니니깐요. 이때의 경험으로 개발자와 커뮤니케이션만 잘 되고, 뭐 그거 아니어도 알아서 잘 하실 겁니다.

진짜 문제는 4번의 분들인데… 이분들은 취업을 위해서 it를 선택했는데도 불구하고 양병석님 글에서처럼의 문제들이 나타난다는 것이다. 그래서 오래 못간다. 기본 지식이 모자란 건 계속해서 일하면서 공부하다보면 는다. 근데 그걸 나중에 취업하고 나서 얼마 안되어서도 일이 그냥 되는 걸 보면서 무시하게 되는 경향이 발생하는데… 그때 제대로 당한다.

이게 당하면 어떻게 당하는지 모르겠다면, 본인이 코드 몽키 취급을 당하고 싶은 건지 제대로 개발자 취급을 당하고 싶은건지가 취업 후에 몇년 후에 결정된다. 당장의 취업에만 눈이 가기 때문에 그에 대한 선택을 하는 일을 하고 있지만, 나중에 봐봐라. 계속 그 과정에서 머물 수 있는 줄 아나? 전공자들 대학 4년동안 한 공부가 당장은 그들에게 잘 모르겠지만 그게 하나 둘 대입되면서 베이스가 되어주는 거랑 달리, 붓캠으로 된 분들은 이런 현실에 대해서 좀 제대로 쓴소리 한번 듣고, 진지하게 고민하면서 살아야 된다.

그런 거 없이 그냥 몇몇 특정한 사람들이 비전공자인데 붓캠 해서 유명 기업 들어갔다 그런 거 믿고는 자기도 그럴 수 있다고 생각하고 그러면 되게 위험하다. 그래서 난 저 칼럼에 대해서 나쁘게 생각 안한다. 오히려 과거에도 있었지만, 이런 쓴 이야기 하는 사람들이 꼭 한번 이상은 심각하게 공격당하더라. 과거에도 그래왔고, 지금도 아마 그럴 것이다. 그럼에도 저렇게 써주시는 거에 감사하다. 저런 쓴소리가 한번씩은 있어야 하는데 그런 게 없다는 것이 진짜 위험하다는 생각 든다.

DKMS(Dynamic Kernel Module Support)란?

이전에 드라이버 코드를 받아서 빌드해서 쓰라는 내용에서 DKMS를 언급했는데, 간단하게 이게 뭔지는 적어줘야 할 거 같아서 적어봅니다. 정리하는 내용이니 좀 딱딱할 수 있군요.

DKMS(Dynamic Kernel Module Support)는 리눅스에서 커널 모듈을 동적으로 빌드하고 설치, 제거할 수 있게 해주는 프레임워크입니다. DKMS는 커널이 업데이트될 때마다 커널 모듈을 자동으로 재컴파일하고 설치해주는 기능을 제공합니다. 이를 통해 시스템 유지보수가 더 용이해지고, 커널 업데이트 시 커널 모듈의 호환성 문제를 최소화할 수 있습니다.

DKMS의 주요 기능과 장점은 다음과 같습니다.

  • 자동 재컴파일: 커널 업데이트 시, DKMS는 등록된 모든 모듈을 자동으로 다시 컴파일하고 설치합니다. 이를 통해 커널과 모듈의 버전 불일치 문제를 방지할 수 있습니다.
  • 모듈 관리: DKMS는 모듈의 설치, 제거, 업데이트를 관리할 수 있는 명령어를 제공합니다. 사용자는 손쉽게 모듈을 추가하거나 제거할 수 있습니다.
  • 버전 관리: DKMS는 여러 버전의 모듈을 관리할 수 있으며, 필요에 따라 특정 버전의 모듈을 선택하여 사용할 수 있습니다.
  • 이식성: DKMS는 다양한 리눅스 배포판에서 사용할 수 있으며, 배포판에 관계없이 일관된 방식으로 모듈을 관리할 수 있습니다.

DKMS 설치

DKMS 설치 및 사용에 대해서는, 대부분의 리눅스 배포판에서는 패키지 관리자를 통해 DKMS를 쉽게 설치할 수 있습니다. 요즘은 기본으로 깔려서도 나오는데 없으면 설치하면 됩니다. 제가 주로 쓰는 우분투 기반에서는 다음 명령어를 사용하여 설치합니다.

sudo apt-get install dkms

모듈 추가

DKMS에 모듈을 추가하려면, 모듈 소스 코드를 포함한 디렉토리를 준비하고, DKMS 설정 파일을 작성해야 합니다. 예를 들어, mymodule-1.0이라는 버전의 모듈을 추가하려면 다음과 같이 합니다.

/usr/src/mymodule-1.0 디렉토리에 모듈 소스 코드를 저장합니다.

/usr/src/mymodule-1.0/dkms.conf 파일을 생성합니다. 이 파일에는 모듈 이름, 버전, 소스 디렉토리 등의 정보가 포함됩니다.

PACKAGE_NAME="mymodule"
PACKAGE_VERSION="1.0"
BUILT_MODULE_NAME[0]="mymodule"
DEST_MODULE_LOCATION[0]="/extra"
AUTOINSTALL="yes"

모듈을 DKMS에 추가합니다.

sudo dkms add -m mymodule -v 1.0

모듈 빌드 및 설치

모듈을 빌드하고 설치하려면 다음 명령어를 사용합니다.

sudo dkms build -m mymodule -v 1.0
sudo dkms install -m mymodule -v 1.0

모듈 제거

DKMS에서 모듈을 제거하려면 다음 명령어를 사용합니다.

sudo dkms remove -m mymodule -v 1.0 --all

이와 같이 DKMS는 리눅스 커널 모듈 관리를 보다 쉽게 만들어주며, 커널 업데이트 시에도 모듈의 호환성을 유지하는 데 큰 도움이 됩니다. 그래서 요즘은 드라이버 관련되어서는 dkms로 모듈화 하는 것이 더욱 안정적으로 유지해줄 수 있어서 많이 이용하는 편입니다. 알아두면 좋기 때문에 한번 정리해봅니다.