본문 바로가기


소프트웨어개발/개발잡담

(18)
내 티스토리 블로그가 다음 검색에 노출되지 않는 문제 해결 티스토리 방문통계 기능을 통해서 제 블로그를 검색해서 오시는분이 어디서 검색하시는지 한번 살펴봤습니다. 워낙 방문객이 없는지라 살펴봐도 별 재미가 없기 때문에 아주 오래전에 살펴 보고는 신경 쓰지 않았었는데, 내 글에는 왜이렇게 무플일까 하는 생각과 함께 좀더 알아봐야 겠다는 생각이 들었죠. 어디보자.. 대부분은 구글 검색이고, 네이버 개미 눈물만큼.. 그래 뭐 네이버가 그렇지 뭐. 그럼 다음은.. 티스토리는 다음꺼니까 당연히 다음은 내편..... 음? 네이버가 19인데 다음 검색이 0이라니. 팀킬인가? 황당했습니다. 뭔가 문제가 있다 싶어서 본격적으로 파악에 나서기 시작했습니다. 구글을 검색해보니, 같은 문제가 있던 분들이 많이 있었고, 간단한 방법으로 해결했다는것을 보고 저도 바로 시작했습니다. 여러..
아직도 SVN 사용하는 분이 많으신가요? 비록 방문해 주시는 분들이 별로 없는 외로운 블로그이긴 하지만 저도 종종 블로그 유입 경로 통계를 확인하곤 합니다. 그럴 때마다 놀라워하는 것이 하나 있습니다. 그것은 바로, 저의 블로그에서 가장 많이 읽힌 글이 늘 변함없이 SVN에 관한 글이기 때문입니다. 7년도 전에 썼던 글인데, 사실 내용도 허술해서 괜히 썼나 싶을 만큼 지우고 싶은 글인데요. 아직도 이 글이 가장 많이 읽히고 검색되고 있다는 것이 놀라울 따름입니다. SVN 사용시에 branch와 merge 잘 이용하기 저 당시 다니던 회사에서도 머지않아 SVN 사용을 중단하고 Git으로 마이그레이션 했기 때문에 사실 저 글을 업데이트 한 이후로는 SVN을 사용해 본 적이 한 번도 없습니다. 일부로 사용을 피한 것이 아니라, 정말 눈 씻고 찾아봐도..
Vagrant up 수행시 새로운 VM이 생성되는 문제 현재 개발환경 구성을 위해 Vagrant를 사용하는데 여러모로 편리하다. 그런데 가끔 vagrant up을 하면, 기존의 VM을 구동하는 대신, 새로운 VM을 빌드하는 경우가 있다. VagrantFile 의 내용이 바뀌는 경우 생길 수 있는 일인데, 정확한 원인은 잘 모르겠다. 암튼, 개발환경 세팅이 끝난 상황에서, 새로운 VM이 설치되어 버리니 몹시 짜증나는 상황이 아닐 수 없다. 긴 시간의 설치가 끝나고 vagrant ssh 를 해보면, 역시나 새로운 VM으로 연결된다. 하지만 기존의 VM이 사라진 것은 아니기 때문에, 다시 복구가 가능하다. (처음에는 이걸 몰라서, 당황한 나머지 그냥 모든걸 새로 설치 했었다.. -_-) VirtualBox를 실행 해 보면, 두개의 VM이 구동 되고 있는 것을 알 ..
간단한 리눅스 서버 성능 향상 renice 혹은 setpriority() 를 이용한 프로세스 우선순위 스케쥴링이 원하는 대로 되지 않는 문제로 구글링을 하다가 발견한 내용을 공유한다. 다수의 서버 애플리케이션을 하나의 노드에 올려야 할 일이 있어서, 중요도에 따라 스케쥴링을 하기 위해 renice와 setpriority 함수를 이용하여 테스트 코드를 작성 하였다. 테스트 결과, 동일 터미널 내에서는 우선순위가 제대로 적용 되나 다수의 다른 터미널에서 실행하면 예상했던것과 다르게 적용 되는 것을 확인 하였다. 예를 들어, 동일한 우선순위를 가진 무한루프 프로세스를 터미널A 에서 4개 돌리고 터미널B 에서 1개 돌리면, 각각 20%를 점유하는 것이 아니라 터미널 B에서 돌린 1개가 CPU 1개를 100% 점유하고, 터미널A 에서 돌린 프..
콘솔에서 git 사용시 컬러 설정 거의 대부분 putty + vi를 이용해서 개발하기 때문에, git diff 를 콘솔에서 사용하는 경우가 매우 빈번하다. 이때 git의 기본 설정으로는 결과를 한눈에 분간해 내기가 어렵다. 다음과 같은 간단한 설정으로 color 기능을 켤 수 있다. git config --global color.ui auto 각각의 항목마다 세부 설정도 가능하다. 하지만 나의 경우 위의 커맨드하나로 충분했다. git config --global color.branch auto git config --global color.diff auto git config --global color.interactive auto git config --global color.status auto 출처: Stack Overflow ht..
AES 암호화, 그리고 AES-NI, 손에 잡힐듯 말듯한 보물. AES (Advanced Encryption Standard)는 현재 널리 사용되고 있는 표준 암호화 알고리즘의 통칭이다. 암호화 알고리즘은 수차례의 진화를 거듭해 왔으며, 암호화에 있어서만은 독자노선을 가지던 많은 회사들도 결국에는 현재는 AES에 많이 의존하고 있다. 현재 내가 참여하고 있는 시스템도 AES를 이용하여 비디오를 암호화 하고 있다. AES가 작은 데이터 뿐만 아니라 비디오와 같은 대용량 데이터의 암호화에 사용되면서, 성능의 중요성이 대두되었고, 2008년에는 인텔에서 AES 연산을 코어 레벨에서 수행하기 위한 instruction set을 제안하였다. 이는 실제로 엄청난 성능향상을 가져오는데, 소프트웨어 레벨의 연산보다 8배정도 빠른 암호화를 제공한다. 이는 AES-NI (AES New..
테크니컬 인터뷰 단골손님, 피보나치 수열 계산하기 요즘 인터뷰 질문들 훑다보니, 초반 웜업용 질문으로 피보나치 수열 값 구하는 코드가 심심치 않게 나온다. 그도 그럴것이, 연산 자체가 매우 간단하면서도 네가지 각기 다른 방법으로 작성 할 수 있기 때문이 아닌가 싶다. 첫재로, recursive 방식으로 구현한 코드.12345unsigned fibo_rec(unsigned n) { if(n == 0) return 0; if(n == 1) return 1; return fibo_rec(n-1)+fibo_rec(n-2);}Colored by Color Scriptercs 둘째로, iterative 방식으로 구현한 코드.1234567891011unsigned fib_itr(unsigned n) { if (n == 0) return 0; unsigned prev..
C++에서 데이터를 비트단위로 읽기 제작년부터인가 HEVC(H.265)의 필요성이 짙어지면서, 우리팀에서 제공하던 인크립션 서버들도 HEVC 비디오를 암호화 할것이 요구 되었다. 아주 오래된 시스템부터 최근에 개발된 시스템까지 그 필요성이 대두 되었는데, 그중 한 시스템은 여타의 상용 HEVC parser를 도입하할 필요까지는 없이 헤더안의 몇가지 필드만 필요로 했다. 그런데 그 과정이 상당히 복잡했고, 범용 파서를 사용할 경우 헤더 전체를 다 파싱하지 않고 그 정보들만 쏙 쏙 빼내는게 불가능 했다. AVC(H.264)와 HEVC의 헤더 구조는 매우 흡사한데, 새로 추가된 몇가지 정보들이 서로 각각 옵셔널하게 물려있어서 따로 떼어낼 수가 없었다. 그래서 딱 그 기능만 수행하기 위한 Parser 를 만들어야 했다. 비디오 스트림 헤더 par..