본문 바로가기

내가 첫 직장을 그만둔 이유 나는 2007년 10월에 첫 직장에 입사했다. 사무용 복합기를 만드는 제조업 회사에서 신생된 소프트웨어 개발 부서에 배치되었다.나는 그 회사에서 8년을 일하고 2015년에 나온다. 오늘 11년전 발표했던 아이폰 프레젠테이션을 보게되었다. 우연히 첫 직장에 입사한 해의 일이다.거기에는 Alan Kay의 인용구가 나온다. "People who are really serious about software should make their own hardware."("제대로 된 소프트웨어를 만들고 싶다면 하드웨어도 직접 만들 수 있어야 한다.")- Alan Kay 당시 내가 일한 회사에서는 복합기의 엔진을 만드는 원천기술을 가지고 있지 않았다.그래서 회사를 나오기 전에는 소프트웨어의 일부를 고치기 위해서라면 원천..
mailtrack.io 추적 회피하기 Y모사에 오퍼제의가 와서 메일을 보았는데 아래에 이상한 배너가 같은 것이 있었다. 한눈에 추적기를 달아놓은 느낌을 받았다. 아마 안보이는 이미지 등을 같이 메세지 본문에 넣어서 로딩되면 서버에서 읽었다고 판단하게 끔 하지 않았을까 추측했다. 메일 원본을 열어보니 역시나 ID가 부여된 이미지 링크가 있었다. 해당 이미지는 고유의 ID가 있기 때문에 웹서버로 HTTP GET 요청이 오면 카운팅을 해서 언제 최초에 열었고, 총 몇 번이 열었나를 기록하게 되어 있다고 추측을 할 수 있다. mailtrack.io 무력화하기원리는 위에서 알아본 것과 같이 서버에 요청을 날리는 것이기 때문에 무력화하는 방법 또한 간단하다.해당 이미지 요청을 서버로 가지 못하게 하면 된다.172.217.25.197mailtrack.i..
6TB 하드디스크 Mac OS 확장(저널링) 포맷 - 1.4GB의 정체는? 6TB 하드디스크를 구입해서 Mac OS 확장(저널링)형식으로 포맷을 했다.그런데 아무것도 쓰지 않았는데 용량이 이미 1.4GB를 사용하고 있다고 나온다!무엇 때문에 1.4기가를 점유하고 있는지 궁금하다.
DiskUtility - 디스크 유틸리티의 보안 옵션에는 디스크의 데이터를 복구하지 못하도록 덮어씌우는 옵션이 있다. 총 4 가지 옵션이 있다. 기본 옵션은 사용하지 않는 방식이다. 다음은 2패스로 덮어 씌우는 방식인데, 임의의 값을 덮어 씌우고,그 다음에는 0이라는 값을 덮어 씌우는 방법이다. 다음은 DOE-compliant 3-패스 지우기이다. 마지막은 가장 강력한 방법으로 7번 덮어 쓰는 방법이다. 마지막 방법이 얼마나 걸리나 궁금해서 해보았다. 1TB의 하드 디스크를 FireWire 800 인터페이스 (100MB/s)로 연결해서 수행하였다.대략 하루 정도가 걸렸다. 1~2 패스는 금방 진행이 되는데, 3패스 부터는 시간이 꽤 걸린다. 4패스5패스6패스 7패스 완료!처음 2패스 때 시간이 2018-08-16 06.46.50..
[codility] FrogJmp 문제 시간 복잡도를 중요하게 생각하고 풀어야 하는 문제이다.처음 문제를 보고 for loop 가 생각했는데, 초기값과 증가하는 구문이 루프 앞과 바디로 들어가면서 결국 종료 조건을 보는 부분만 남게 되었다. 그래서 while로 바꾸었다. 1차로 만든 버전은 아래와 같이 되었다.public int solveWithLoop(int X, int Y, int D) { int cp = X; int count = 0; while (cp < Y) { cp = cp + D; count++; } return count; } 그런데 테스트를 돌려보니 실패가 난다.시간복잡도는 선형이다.시간이 오래 걸리는 것은 계산 제한 시간을 초과해 버리는 것이 문제이다. 그래서 계산을 하는 것으로 바꾸었더니 통과가 된다.시간복잡도는 상수.pu..
Sublime Text 라이센스 구매 미뤄오다가 IntelliJ IDEA 사고 나서 결제. 뭐, 라이센스를 등록한다거나 해서 기능상 크게 달라지는 것은 없다.다만 개발자에게 밀린 월급을 주는 것 같은 느낌.
[codility] Lesson 2 Arrays CyclicRotation - 입력에 대한 체크를 하자! 2번째 문제였다.배열을 K번 회전시키는 문제이다.값을 일일이 복사하는 대신 시작을 가리키는 포인터를 바꾸는 것으로 하기로 하였다.값을 복사하는 것보다는 하나만 바꾸는 게 아무래도 비용이 적게 들 것이므로... 그런데 테스트 결과가 이상하게 나온다. 분명 효율성보다는 정확성을 본다고 했는데 회색으로 87%인 것이다.밑으로 스크롤해서 보니 작은 배열(아마도 크기가 0인?)인 경우 런타임 에러가 발생하고 있었던 것이다. 결국 방어코드를 넣고 나서야 100%가 될 수 있었다. 실무에서도 코드를 짜다보면 입력에 대한 방어코드를 짜는 것은 필수이다.작은 코드라고 해서 생략했더니 결과가 안나오는 것이다. 기본은 빼먹지 말자!
IntelliJ IDEA ultimate 반값 구매 회사의 라이센스의 문제가 있는지 아래와 같은 메세지가 자꾸 뜬다. 그러던 중 어떤 분이 반 값할인 하고 있다는 정보를 투척! - https://www.jetbrains.com/promo/friends/ 옆에 있는 쪼꼬에게 정보를 공유하니 속 쓰려한다. 아마 제 값주고 산 것 같다. (미안 ㅠㅜ)그리고 2018.2 버전으로 업데이트! 회사에서 개인 라이센스를 받아서 사용하는 것이 걱정이라면 아래 글을 읽어 본다면 안심이 될 것 같다.Can I use my personal license for commercial development?