TLS 연결 단계 중 client hello를 살펴 본다. TLS연결은 Client Hello로부터 시작이 되고,client는 자신이 사용할 수 있는 가장 높은 protocol 버전과 ciphersuite 리스트를 전송한다. 아래는 이와 관련 된 wireshark의 일부 내용(Client Hello)이다. server는 client hello 메시지로부터 protocol을 선택(높은 것 부터 확인해서 서버에서 사용 가능한)하고ciphersuite도 선택하게 된다. (선택하는 알고리듬 방식은 다양한 듯)아래는 이와 관련 된 wireshark의 일부 내용(Sever Hello)이다. 정상적인 선택이 되지 않으면 연결을 종료하며, client는 TLS connect failed를 전달 받게 된다.답답한 것은 ..
많은 파일 이름에서 특정 패턴을 찾아서 일괄 변경하기 위한 시도는 오래전부터 있었습니다.아마도 가장 흔한 방법이 rename 일텐데, rename의 설치 방법에 따라 동작 여부가 약간 달라 문제가 있죠. 일반 pkg에 built-in되어 있는 rename은 파일 명에서 패턴을 찾아 변경하는 옵션이 제공되지 않습니다.그래서 shell로 도전하게 되었습니다. 일단 결과부터 놓고 풀어나갑니다.아래는 파일 이름에서 A_A를 찾아 B_B로 변경하는 명령어 입니다. $ find . -type f | xargs -I{} sh -c 'mv -v $0 ${0/A_A/B_B}' {} ; 하나하나 풀어가며 의미를 알아봅니다. $ find . -type f현재 폴더에서 파일 리스트를 가져옵니다. $ find . -type f..
여러가지 이유로 웹셸(Web-Shell)이 필요 했습니다. 보통 Shell을 사용하기 위해서는 terminal에 접속을 해야 하는데, 이때는 console이나 telnet, ssh등의 서비스를 이용하게 됩니다.또한 그러한 서비스를 이용하기 위해서는 putty나 Xshell등과 같은 접속 프로그램이 필요하죠. - OS가 Linux, Unix같은 계통이면 패스.. 또한 80 포트는 열려 있지만 보안상의 이유로 telnet, ssh는 막혀 있는 경우가 종종 있습니다.그리하여 80으로.. 웹 브라우저에서 사용할 수 있는 Shell을 만들게 됩니다. 단, 일반 bash와는 다르게 모든 명령어를 사용할 수 있을 필요는 없습니다.어쨌든 보안을 생각해야 하므로 시스템에 장애를 유발할 수 있는 무언가는 안됩니다. - r..
웹, 크롤링, 자동화, HTML, 슬랙, 패킷... 사진 이러한 걸로 무엇을 만들 수 있을까? 나이가 먹을 수록.. 경력이 차오를 수록.. 보이지 않는 레벨의 코딩보다는 눈에 바로 보이는 그런 코딩에 흥미가 생긴다.이를테면 삶을 좀 더 윤택하게 해주는.. 그런 "무언가" 나중에 나이가 더 들고 나서 딸 아이가 "아빠는 하는 일이 뭐야?"라고 질문했을 때 어떤 대답을 할 수 있을까? 어린 딸 아이를 이해 시킬 만한 그런 일을 하고 있으려나... 그나마 다행인 것은 코딩에 흥미를 잃지 않고 있다는 점... (웃음)
김치찌개가 생각나는 퇴근 길 가볍게 들릴 수 있는 식당을 소개 합니다. 바로 대치동에 위치한 얼큰이 찌개마을 인데요. 일단 식당에 위치한 메뉴 사진을 보면 김치찌개 이외에도 다양한 메뉴가 있습니다. 메뉴는 대치동을 고려했을 때 생각보다 저렴합니다. 이 식당의 김치찌개는 약간 특별합니다. 이유는 바로, 김치가 포기 상태로 들어간다는 점. 그리고 고기도 자르지 않은 상태로 들어가 있습니다. 개인 취향대로 싹뚝싹뚝 잘라 먹으면 되겠죠? 보글보글 끓기 시작하는 김치찌개. 양은 냄비가 구수하게 느껴지고 군침이 넘어갑니다. 직장인들의 애환... 퇴근 길의 소주 한잔이겠죠 신메뉴로 비빔국수도 있네요. 다음 기회를 노려봅니다. 퇴근 길 김치찌개가 생각난다면 추천합니다.무엇보다 사장님이.. 저를 고등학생으로 까지 봐주셨..
multi-thread 환경의 application에서 thread의 동작을 제어하는 가장 노멀한 방법은 pthread_cond_wait, pthread_cond_signal가 되겠습니다. 이 방법의 단점으로는 signal에 의해 wait가 풀리고 동작하는데 걸리는 시간이 N초라고 가정했을때 다시 signal을 받아야 하는 시간이 N초 보다 길어야 한다는 점입니다. 그렇지 않다면 signal의 유실이 초래되어 원치 않는 결과가 도래 된다는 것입니다. 물론 이러한 상황이 존재하는 프로그래밍은 좋지 않은 방법이기에 그런 상황은 애초에 만들지 않는게 좋겠지만, 늘 예외는 있으니까요. 그렇다면, wait하는 N초 동안 받는 signal을 모두 처리 하기 위한 방법으로는 semaphore가 있습니다. semaph..
MySQL Client command-line에서 테이블이나 필드의 이름이 긴 경우 확인을 위한 명령어가 필요한 경우가 있습니다.예를 들어 테이블 이름이 기억나지 않는다면 show tables로 확인 할 테고, 필드의 이름은 desc로 확인 하겠죠? 일반 리눅스의 readline처럼 자동 완성 기능이 있다면 얼마나 편할까요?마침 필요한 기능이 정확하게 존재합니다. 바로 rehash를 사용하는 것인데요, 사용법은 여러가지가 존재합니다.Clinet 모드로 접속할 때 사용은 아래와 같습니다. $ mysql -u root -pxxxx --auto-rehash 혹은 my.cnf 파일을 수정 (이 방법은 매번 --auto-rehash를 입력해야 하는 불편함을 없애주겠네요) [mysql] auto-rehash Cli..
회사 바로 앞에 버스 정류장이 있는데, 퇴근해서 내려가 보면 눈앞에서 떠나는 버스..요즘은 버스가 정류장을 떠나면 잘 세워주지도 않죠?- 안전을 위해 당연한 거죠? 그래서 이제는 버스의 도착 시간을 미리 알아야겠다는 생각이 들었습니다사실 버스 홈페이지나 국토부 등에서 정보를 쉽게 구할 수는 있는데, 로그인이나 웹페이지 여는 것조차 우리에겐 귀찮습니다.- (검은 바탕에 흰 글씨)터미널이 눈에 더 익는 것도 사실이고 ^^;; 일단 웹에서 제공하는 서비스를 웹페이지 개발자 모드로 분석하고 PHP에서 curl 하기로 했습니다결과는 XML이기 때문에 그에 맞게 parsing 했습니다. 소스는 아래와 같습니다. 리눅스 터미널에서 실행은.. 대략 이렇게 하면 되겠죠?while [ 1 ] ;do clear;php bu..
ocr 부터 captcha 까지...orc 아니다 (..) 2단계 인증을 위해 통상 사용되는 그림 문자를 입력 할 수 있는 폼을 개발하고자 했다.웹 개발자가 아니다 보니 어디부터 시작해야 하는지, 검색어는 무엇으로 해야 하는지 무지했다. 우연치 않게 알게 된 검색어는 ocr검색을 진행하다 보니 뭔가.. 닭 잡는데 소 잡는 칼 쓰는 느낌...?인공지능이.. 학습을 어쩌고.. 구글에서 인수를 했고.. 음? 절대 컴파일이며 인식이 잘 되지 않아서 그런 것은 아니고..여하튼.OCR광학 문자 인식(Optical character recognition; OCR)은 사람이 쓰거나 기계로 인쇄한 문자의 영상을 이미지 스캐너로 획득하여 기계가 읽을 수 있는 문자로 변환하는 것이다. 이미지 스캔으로 얻을 수 있는 문서의 ..
crawling.[컴퓨터] 크롤링; (검색 엔진에서) 분산 저장되어 있는 정보를 수집하여 검색 대상으로 복제·보존하는 기술. 크롤링은 여러 방면에서 사용되는데 일반적인 소프트 유저라면..- 기상청 날씨를 긁어온다- 식단 표를 긁어온다 등으로 사용할 수 있겠습니다.이야기는 많이 들었었는데 이번에 필요하게 되어 직접 크롤링을 해봤습니다. 발단은 이러합니다.이번 회사에서 인터뷰어 활동을 하게 되면서 이력서 검토도 하기 되었는데문제는 작은 중소기업이다 보니 구직 사이트에 이력서가 새로 들어왔는지 종종 접속해서 확인하는 시간이 아까웠습니다. (많은 이력서가 쏟아 지는게 아니다 보니까..) 그래서 아래와 같은 요구 조건으로 개발을 시작했습니다.- 주기적으로 구직 사이트(기업 계정)를 크롤링- 새로운 이력서가 있으면..
Linux는 bash 터미널에서 실행한 명령어를 기록하는 history라는 built-in 명령어가 있습니다.history 결과를 실시간으로 파싱 하고자 하는데, 기왕이면 message파일 처럼 tail 로 붙잡고 있기를 바랬습니다.하지만, history라는 명령어 자체가 실행 결과가 떨어지는 명령어라 녹록하지 않죠.하지만. 걱정하지 마세요. history도 결국은 파일로 관리 됩니다. .bash_history 자신의 home 폴더 밑에 보면 해당 파일을 찾을 수 있습니다.하지만. 정작 방금 실행 시킨 명령어는 .bash_history에 안보입니다. 이것은 현재 bash 터미널이 종료 되기 전까지 일정 버퍼를 메모리에 들고 있기 때문인데,이것(history결과)을 파일(.bash_history)로 동기화..
일단 터미널에 접속했을 때 출력 되는 문구(보통은 환영 문구?)는 기본적으로 /etc/motd 라는 파일로 제공됩니다.이번에는 어디 한번 이 문구를 잉여롭게 변경해보고자 합니다.어떤 것이 잉여로운건가요? 바로 색상을 넣는 겁니다.바로 결과부터 살펴봅니다. 이런 느낌입니다. 일반적인 텍스트 파일에 색상 넣는 방법만 알면 간단한데요.색상은 아래와 같은 방법으로 넣습니다. ^[[1;31m앞에 ^[ 기호는 여기를 참고해서 넣도록 합니다. (일반 특수문자가 아님) 색상 표는 아래와 같습니다. Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red ..
인터넷이 발달함에 따라서 검색이 무척 용이해졌다. 이제는 "개발=검색" 이라는 공식을 내세우는 관리자(혹은 개발자)를 심심치 않게 찾아볼 수 있다. 요즘은 특정 키워드나 개발과 관련된 검색을 하면 sample code를 쉽게 찾아 볼 수 있고 그 코드를 바로 적용 시키고 돌려보는 이들이 무척 많다. 그리고는 프로그램이 원활하게 돌아가지 않는다고 comment를 작성하고 Q&A를 활용한다. 사실 여기서 간과하고 있는 재밌는 사실은.. sample code는 사실 pseudo code 였다는 점. 그것이 pseudo code 인지 조차 모르고 무조건 "복사&붙여넣기"로 코드를 개발하고 있다니..!! 여기 좋은 예제가 있다.Embedded 환경의 C/C++에서 특정 directory의 내용을 가져올 때 ope..
프로그래머 면접 신입 편 바로가기 짧은 경력이지만, 인터뷰어로 참여한 경험을 바탕으로 안타까운 구직자들의 현실을 기록합니다. 제가 다 했습니다.프로젝트 하면서 본인의 모듈이 아닌 부분까지 모조리 본인이 개발했다고 이력서에 기재하는 스타일나아가 타 팀의 프로젝트나, 주워 들은 이야기 까지 동원되는 경우도 있음모듈에 대해 상세히 물어보기 시작하면, 그 부분은 본인 파트가 아니었다고 이야기 함 (그럼 이력서에 솔직하게 프로젝트에서 본인의 파트는 뭐였다고 써놨어야지..) 네. 해봤습니다.어느 수준까지 해봤냐고 물으면 대답 못하는 스타일예를 들어 커널 컴파일 직접 해봤냐고 물어보면 주절주절 대답 함. 하지만 정작 이미 존재하는 Makefile에 make 타이핑 해본게 끝. 저는 당당합니다.모든 분야에 박식한것 처..
여유가 창의력으로 이어진다.요즘 아이들은 창의력이 들어갈 틈이 없다. 그런데 이게 아이들의 이야기 만은 아닌 게 안타깝다.흔하지 않은 케이스(저커버그, 알파고 등)로 정부가 찬란한 미래를 광고한다.그로 인해 업계를 얄팍하게 보고 진출하는 젊은이가 많아지면서 IT업계의 진입 장벽은 낮아지며..대충 밥 비려 먹고 살기 위해 개발자가 되는 케이스도 종종 있다.- 개발에 대한 즐거움은 당연히 없겠죠. 그리고 뜬금없이 야근은 열정이 아니라는 본인 상황에 맞지 않는 주장을 펼친다.- 네. 야근은 열정이 아니고 회사는 님 수준에 맞는 돈을 주면 되는 거죠. 내년에도 내후년에도.- 보통 어중간한 사람들이 평균적으로 이런 말을 잘 합니다. 부족한 실력 탓에 아등바등 살다 보면 여유가 없어지고 결국 창의력 문제로 이어진다..
- Total
- Today
- Yesterday