Windows에서 개발환경 구축하다가 원인을 모르고 gitignore가 동작하지 않은 경험이 있어서 이를 어떻게 해결했는지 기록으로 남기기로 했다.
windows에서 wsl을 사용하지 않고 vscode로 코딩을 하다가, .gitignore파일을 echo "node_modules" >> .gitignore로 생성을 했는데 이것이 문제의 원인이었다.
이런식으로 파일을 생성하게 되면 .gitignore 파일의 텍스트 인코딩이 UTF-16LE로 설정되게 되는데, git에서 이 인코딩을 제대로 인식하지 못해서 gitignore에 파일 명을 넣어놔도 git에서 제대로 동작하지 못하는 것이다. 이를 UTF-8 인코딩으로 다시 바꾸어서 저장을 해주면 잘 동작하게 된다.
그리고 SSAFY 모집시기가 다가올 때 쯤에 항상 SSAFY 지원자들이 모인 카카오톡 오픈 채팅방이 있는데, 한번 검색해서 들어가 보면 가끔 꿀 정보들이 들어올 때가 있다.(익명의 수료생의 난입이라던지..) 그러니 꼭 찾아서 들어가보도록 하자.
SSAFY에 꼭 붙고싶은데 자신이 없어요!
나도 오다가면서 광고로 봤던 것 같은데 SSAFY에 합격하기 위한 학원도 존재한다고 한다. 취업 학원인 SSAFY에 선발되기 위한 학원이 따로 있다... 이제 그 학원을 붙기 위한 학원도 생기는 것이 아닌가 싶기도 하다.
SSAFY에서 많은 인원을 뽑긴 하지만, 그 SSAFY 조차도 경쟁률이 치열하기 때문에 이러한 현상이 생기는 것이지 않을까 싶다.
SSAFY를 수료하면 취직이 보장되나요?
그런 건 없다고 한다. 하지만 관리의 삼성 답게, 열심히 하지 않을 수 없는 환경들을 만들어 준다고 한다.
낙오되지 않으려면 빡세게 구를 수 밖에 없고, 그러다 보면 과거의 자신 보다는 훨씬 실력이 늘어 있게 된다고 한다.
해병대 병영캠프마냥 SW빡개발 캠프를 원한다면 지원해보는 것이 좋을 것 같다.
SW 취업을 위한 여러가지 학원들이 있는데, 이러한 학원들 수강 후기들을 보면 수업은 듣되 강제성이 없어서 스스로 공부를 잘 안하다가, 비싼 수강료를 내고 배웠는데 왜 나는 실력이 늘지 않고 이해되는게 별로 없느냐 하는 식의 후기들이 꽤나 많다.
하지만 SSAFY는 돈을 받으면서 듣는 교육이기도 하고 그에 따른 외부적 동기부여들도 주기 때문에, 학원 가서 돈 쓰고 사기당한 것 같은 느낌은 전혀 받을 일은 없을 것이다.
SW를 단기간에 배우려고 하니까 힘들구나 라는 반응과, 그래도 많이 늘어서 많은 도움이 된 것 같다 라는 반응들이 나올 듯 하다.
추천할 만 한 프로그램인가요?
본인이SW 개발자쪽으로 취직을 하려고 하고, 취직이 잘 안되는 상태(SW외 전공자나 SW전공자지만 실력이 부족한 상태)라면 무조건 추천한다. 이미 본인이 실력이 뛰어나서 이름있는 IT회사에 들어가거나, 본인이 만족할만한 기업에 들어갈 실력이 있다고 생각한다면 구태여 할 필요는 없다.
주변에 SSAFY를 했던 지인들의 이야기를 들어보면, 공부를 하려는 열정이 높은 사람들이 모여있어서 그런지, 매우 동기부여가 잘 되는 분위기라고 한다.
그리고 비전공자나 컴퓨터공학 전공자이지만 실력이 부족한 친구들은 그 부족한 실력 만큼 엄청난 노력을 쏟으면서 빡세게 공부하고 스터디를 한다고 한다. 빡세게 굴리지만 또 빡세게 구를 수 있는 환경을 만들어 주고, 그 만큼 아주 빠르게 실력이 늘어서 도움이 꽤나 된다고 한다.
컴공 Foundation 및 알고리즘 & 코딩 수업 및 다양한 주제의 프로젝트를 진행하며 교육시켜준다고 한다.
커리큘럼도 실무에 필요한 부분과 기본기들을 두루 가르쳐주므로 범용적이면서 괜찮은 것 같다.
그리고 혼자서 고독한 취준을 하는 것 보다는, SSAFY에서 같이 취준을 할 동료들을 많이 구하면 정신적으로도 많이 의지가 되고 좋은 기회가 될 것 같다.
고로, SW개발자로서 취직을 준비하고 있고, 공부나 프로젝트 등을 하면서 1~2주 취준이 아닌 조금 더 장기적인 관점에서(6개월 이상) 취준을 빡시게 할 계획이 있다면, 혼자 취준하는 것 보다 SSAFY에 지원해서 하는게 100배 이상 좋다. (같이 공부할 동료도 얻고, 지원금도 받고, 수업도 듣고, 컨설팅도 받는다.)
다른 비슷한 프로그램들이 있나요?
우아한 테크코스
배달의 민족으로 유명한 우아한 형제들에서 주최하는 우아한 테크코스라는 과정이 있다. 다만 뽑는 인원수가 훨씬 소규모이며, IT회사에 좀 더 특화되고 집중적인 커리큘럼을 갖고 있다고 한다. 금전적인 지원은 ssafy보다 덜 한 것 같은것이 조금 아쉽다.
네이버 커넥트 재단 - 부스트캠프
네이버 커넥트 재단에서 운영하는 교육 프로그램이다. 1기를 하고 나서 매년 2기, 3기 이런식으로 이어질 줄 알았는데, 했다 안했다 한다. 아마 첫 기수 운영하고 뭔가 결과가 마음에 들지 않았다던지 그래서 그런 거일지도 모르겠다.
네이버쪽에서 운영하는 프로그램이다 보니, 일단 선발부터 쉽지는 않고, 많은 인원을 뽑지도 않는다.
그리고 1기때와 지금 기수때와 방향이 이미 꽤 다르고 기수마다 계속 바뀌므로, 공고가 나오면 그때 그때 달라진 정보 등을 확인해보는게 좋을 듯하다.
블로그들 특성상, 어느정도 틀린 내용이 있을 수 있으나 전체적으로 틀을 잡는데는 도움이 많이 될 것이다.
컴퓨터 공학 입문
영어권에서는 컴퓨터 과학(Computer science)이라는 단어로도 자주 쓰이는데 엄밀하게는 컴퓨터 공학과 과학은 다르긴 하지만, 여기서는 그러한 단어의 엄밀한 뜻 보다는 "프로그래밍을 지속적으로 하기 위한 기초체력과 같은 지식"라고 이해하시면 편하다. 우선 이러한 지식을 알려줄 수 있는 강의 사이트들을 추천해보도록 하겠다.
Hadi Partovi가 이끄는 비영리 단체로, 미국의 모든 학생들이 컴퓨터 과학을 배우도록 장려하기 위해 만들어진 사이트이다. 한국어도 어느정도 지원하고, 엔트리와 마찬가지로 블럭 코딩으로 게임과 같은 방식으로 프로그래밍을 재미있게 배울 수 있는 환경을 웹 상에서 제공한다.
32비트, 64비트 하는 것은 워드 사이즈를 말하는 것입니다. 32비트 머신(CPU)라면 그 머신의 기본 데이터 처리 단위는 32비트가 되고, 64비트 머신이면 그 머신의 기본 데이터 처리 단위는 64비트가 되는 것입니다.
비트는 정보 처리의 단위니깐, 당연히 64비트 머신은 32비트 머신보다 한번에 처리할 수 있는 데이터의 크기가 2배가 되겠지요?
가능한 CPU와 운영체제 조합
32비트 64비트가 CPU에도 있고 운영체제에도 있습니다. 이분법적으로 나누어 생각해보면, 컴퓨터 시스템은 하드웨어와 소프트웨어가 있죠.
CPU는 하드웨어가 될 것이고, 운영체제는 소프트웨어가 됩니다.
그리고 CPU에 32비트, 64비트가 있고 운영체제에도 32비트, 64비트가 있는데 각자 HW / SW이므로 총 4가지 조합이 있을 수 있겠지요? 다음과 같이말입니다.
CPU
운영체제
가능여부
동작
32bit
32bit
O
32bit
64bit
X
불가능
64bit
32bit
O
32bit (하위호환)
64bit
O
64bit
위와같이 생각하시면 됩니다.
32bit CPU에는 64bit 운영체제를 설치할 수 없습니다. 대신 32bit 운영체제를 설치할 수 있고, 32bit 모드로 동작하겠지요.
64bit CPU에는 32bit / 64bit 운영체제를 둘 다 설치할 수 있는데, 다만 32bit 운영체제를 설치하면 32bit 모드로 동작하게 됩니다. 64평짜리 집을 사 놓고, 32평만 사용하는 그런 느낌이지요.
다만 가능은 하다(호환된다) 라고 보시면 됩니다.
이렇게 나중에 나온 더 신식인 녀석(64비트 CPU)가 이전에 나온 구식인 녀석(32비트 CPU)을 사용할 수 있게 해주는 것을 하위 호환성(backward compatibility)라고 합니다.
32비트 시스템과 64비트 시스템의 차이
이제 32비트 시스템과 64비트 시스템의 차이에 대하여 이야기해보도록 하겠습니다.
메모리 주소 공간 크기의 차이(Memory addressing space size)
일단 기본처리 단위가 다르다보니, 프로세서의 레지스터의 크기부터 차이가 납니다. 32비트 프로세서의 범용 레지스터의 크기는 32비트 즉 4바이트이고, 64비트 프로세서의 범용 레지스터의 크기는 64비트, 즉 8바이트입니다.
이렇다 보니, 프로그램 카운터(Program Counter)의 크기로 각각 4바이트 8바이트가 되는데요.
메모리의 주소 모드(address mode)는 기본적으로 바이트당 주소를 하나 할당하는 방식(byte oriented addressing)이므로, 32비트 머신은 최대 32bit의 메모리 어드레싱이 가능하게 됩니다.
//(2^32//)byte의 메모리 주소 공간을 갖는다고 보면 되는데, 이는 4GB에 해당하게 됩니다. 따라서 32비트 머신은 최대 4GB의 메모리밖에 사용할 수 없는 셈이죠.
지금 이 글을 쓰는 시점에도 Windows 10의 커널 메모리 사용량이 꽤 크기 때문에, 쾌적한 컴퓨터 사용 환경을 위해서 가정용 개인 컴퓨터(PC)에도 보통 8GB이상의 메모리를 사용하곤 합니다. 이러한 점을 고려했을때, 32bit 프로세서와 운영체제의 조합은 조금 열악한 환경이 될 수 있겠지요.
그렇다면 64비트 머신은 //(2^64//)인 16엑사바이트의 메모리 주소를 갖겠군요! 라고 생각하실 수 있겠지만, 실제로는 하위 48bit만 사용합니다. 256TB에 해당하는 어드레싱 모드 범위인데요, 왜 그런가 하면 16엑사바이트만큼 큰 양의 메모리 어드레싱이 필요하지 않기 때문이지요.
나중에 필요한 메모리 사이즈와, 실제로 그러한 거대한 크기의 메모리를 만들 수 있다면, 언젠가는 64비트 주소 공간을 다 활용할 수도 있겠지만, 적어도 지금은 아닙니다.