본문 바로가기

전체 글397

https://google.com 통신 흐름 완전 분석 브라우저에서 https://google.com URL을 호출 했을 때 패킷이 어떻게 만들어지고 전송되는지를 알아보겠습니다.1. 도메인 이름을 IP 주소로 변환 (DNS 조회)브라우저는 google.com 도메인에 대한 IP 주소를 알아내기 위해 DNS 서버에 요청합니다. UDP 패킷을 만들고, DNS에 질의하면 DNS 서버가 응답을 해줍니다. DNS 서버가 응답해준 UDP 패킷에는 google.com 도메인에 대한 IP 정보가 담겨져 있습니다. 그리고 IP 정보를 로컬 PC의 DNS 캐시에 저장합니다. 테스트를 한번 해보겠습니다. 브라우저에서는 자체적으로 관리하는 DNS 캐시가 있기 때문에 윈도우에서 테스트 하는 방법으로 해보겠습니다. 윈도우 PowerShell 프로그램을 실행하고, ping google.. 2024. 11. 19.
내가 살인자의 마음을 읽는 이유 본, 깨p.33왜 특정한 몇몇만이 얼토당토않은 자기합리화로 그런 잔인하고 극악무도한 범죄를 서슴지 않고 저지르는 것일까? 그것은 바로 위에서 언급한 고립감 때문이다. 공동체에서 나의 존재가 소외되어 있다고 느끼는 사회적 배제감, 자신만이 고립되어 있다고 느끼는 이 생각들이 무력감으로 이어지고, 이 무력감이 분노로 치환되는 것이다. p.79세상에는 그 어떤 사건도 가벼운 사건은 없다. 보통 '살인 사건과 사기 사건은 다르지 않나?'라고 생각할 수 있다. 이것은 피해자의 입장이 되어보지 않아서 쉽게 하는 말이다. 피해 당사자가 되어보지 않으면 누구도 쉽게, 그리고 가볍게 범죄의 경중을 따질 수 없다. 그 어떤 범죄도 사소하고 가벼운 것은 없다. p.82이론과 실제는 반드시 같은 거야. 틀리다면 둘 중에 하나.. 2024. 11. 15.
NAT 종류에 따른 홀펀칭 NAT의 종류를 알고 있더라도 실제 WebRTC 에서의 홀펀칭을 대입해 보면 생각보다 복잡하고, 머릿속에서 잘 정리되지 않습니다.이때 가장 쉽게 이해하는 법은 NAT의 매핑 테이블을 기준으로 홀펀칭을 이해하는 방법이 가장 좋다고 생각합니다.각 NAT별 홀펀칭을 설명하기에 앞서 Peer에서 UDP 소켓을 생성하여 패킷을 전송하고 수신하는 코드를 잠시 살펴보겠습니다. Java를 예제로 한 샘플 코드입니다.import java.net.DatagramSocket;import java.net.DatagramPacket;import java.net.InetAddress;public class UdpClientExample { public static void main(String[] args) { .. 2024. 11. 12.
구본형 선생님께 배운 진짜 공부 본, 깨p.69새로운 것을 선택하기 전에 과거의 것은 모두 훌훌 털어 내야 한다. 하지만 우리는 그 끝에서 과거의 틀은 그대로 유지하려는 경향이 있다.중요한 선택을 해야 하는 시기에 항상 발목을 잡는 것은 과거에도 그리고 지금에도 내가 누리고 있는 것들이다. 과거에 연연하지 말고, 앞으로 5년 10년 뒤의 내 모습을 그려보자. 그럼 선택이 좀 더 쉬워질 것이다. p.70밤에는 아무리 늦게까지 깨어 있어도 이미 몸과 마음이 지쳐서 스트레스 해소거리를 찾을 수밖에 없습니다. 반면 일찍 자고 다음날 일찍 일어나면 정신은 맑고 몸은 에너지를 회복합니다. 그리고 그 좋은 에너지를 가장 먼저 내가 하고 싶은 일에 쓰는 것이죠.중요한 일, 우선 순위가 높은 일을 가장 먼저 해야 한다. 에너지가 충만한 시간에 중요한 .. 2024. 11. 10.
NAT 종류 WebRTC를 이용하여 서비스를 하게 되면 NAT 동작 원리에 대한 깊은 이해를 요구하게 된다.처음 WebRTC 스트리밍 서비스를 개발할 때에는 NAT 동작 원리에 대해서 신경쓰지 못했다. 막연하게 NAT에서 UDP 홀펀칭을 지원하고, WebRTC 라이브러리를 사용하면 P2P 통신이 가능하다고 이해했을 뿐이다. P2P 통신이 불가능한 상황이 발생할 수 있으므로 이럴 때에는 relay 통신을 지원하기 위한 turn 서버가 필요하다고만 생각했다. 서비스를 운영하고, 고도화 하는 과정에서 P2P 연결에 대한 의문점들이 계속 쏟아져 나왔다.개발 환경에서 테스트 할 때 항상 relay 통신만 되는 이유?회사 안에 있는 peer와 회사 밖에 있는 peer가 서로 스트리밍 연결이 될 때 항상 relay 통신만 되는 .. 2024. 11. 3.
규칙없음 p.40나중에 깨닫게 된 사실이지만 팀에 평범한 사람이 1~2명 섞여 있으면 팀 전체의 성과가 떨어진다. 탁월한 인재 5명과 평범한 사람 2명이 함께 있으면 그 팀은 평범한 팀이 된다. 왜일까? 매니저의 기운을 빼 최고의 성과를 내지 못하게 만든다. 그룹 토의 질을 떨어뜨려 팀의 전반적인 IQ를 낮춘다. 사람들이 싫어할 일을 하게 만들어 능률을 떨어뜨린다. 남보다 탁월한 능력을 발휘하고 싶은 직원을 회사에서 나가게 만든다. p.41재능이 뛰어난 베스트 플레이어들이 생각하는 좋은 직장의 조건은 호화스러운 사무실이나 멋진 체육관, 혹은 공짜 스시 같은 게 아니다. 그들에게 중요한 건, 재능 있고 협동심이 강한 사람들과 함께 일하는 즐거움이다. 모든 직원이 뛰어나면 서로에게 배우고 서로가 의욕을 불어넣어 성과.. 2024. 10. 25.
프로파간다 p.36괴벨스는 '거짓도 천 번 말하면 진실이 된다'고 했다.거짓 정보도 오랫동안 들으면 머리에 각인되고, 각인된 정보는 무의식중에 우리의 생각과 선택에 영향을 미친다. p.74이 책의 목적은 대중의 마음을 지배하는 메커니즘에 이어, 특정 생각이나 제품을 대중에게 선보이고자 할 경우 그러한 메커니즘을 어떻게 조작해야 대중의 지지를 끌어낼 수 있는지를 살펴보는 데 있다.소수가 다수의 마음을 지배할 수 있는 메커니즘이 있다는 사실이 놀랍다. 또 한편으로는 사람의 말과, 홍보, 광고 등을 온전히 받아들이지 않고, 비판적으로 생각해야 조종당하지 않을 수 있다는 사실이 안타까울 뿐이다. 인간의 심리를 이용하는 전략이 이 세상에는 너무 많다. p.78소수가 다수에 영향을 미치는 강력한 수단을 발견했다. 대중의 생각.. 2024. 10. 8.
남이 만든 그릇에 내 인생을 담지 마라 p.10결국, 행복한 삶이란 나만의 가치관을 명확하게 정립한후에, 나만의 속도로 나아가는 사람에게 찾아온다. 내 인생 그릇에 타인을 담아서도, 타인의 인생 그릇에 나를 담아서도 안 된다. 모든 인생은 다른 모양과 크기를 지닌다. p.11평균적인 삶이나 안정적인 삶이라는 틀에서 벗어나 나다운 인생을 살고 싶다면 지금부터 이 책을 읽으면서 내 마음을 괴롭히던 인생의 가짜 숙제들을 하나씩 지워나가 보자. 가짜 숙제들을 하나씩 삭제하다 보면 당신이 진정으로 살아 나가야 하는 진짜 삶을 찾아낼 수 있게 될 것이다. p.17기력이나 체력의 한계를 넘어섰는데도 성공하려면 더 열심히 해야 해. 좀 더 버텨보자라고 생각하며 스스로를 다그치다가 결국 건강을 해치고 마음의 병을 얻는 사람이 꽤 있다. 열심히 하는 것이 무조.. 2024. 9. 24.
WebRTC 테스트를 위한 Docker 환경 구성 Docker 환경 구축WebRTC를 테스트 하기 위해서는 로컬에 테스트 환경을 구축해야 합니다.윈도우 PC에 docker desktop이 설치되어 있다는 가정하에 turn 서버와 nginx를 docker 컨테이너로 구성해 보겠습니다. docker0 인터페이스docker는 호스트 머신의 네트워크와 격리된 가상 네트워크 환경을 제공하기 위해 docker0 브리지를 사용합니다.이 브리지는 Docker 컨테이너들이 호스트 머신과 외부 네트워크와 통신할 수 있도록 해줍니다. Host의 eth0 인터페이스호스트의 이더넷 인터페이스 입니다.Docker 컨테이너들이 외부 네트워크에 접근할 때 호스트의 eth0을 사용합니다. veth (virtual ethernet)docker 컨테이너를 생성하면 docker0 브리지와.. 2024. 9. 22.
기브 앤 테이크 p.29기버의 성공에는 어떤 특별한 점이 있을까? 일단 기버든 테이커든 매처든 누구나 성공할 수 있다는 점을 분명히 해두자. 물론 기버의 성공은 폭포처럼 쏟아지며 멀리 퍼진다는 점에서 다른 두 유형과 뚜렷한 차이를 보인다. 테이커가 승리를 거둘 때는 그 반대쪽에 패자가 있게 마련이다. 연구 결과에 따르면 사람들은 테이커의 성공을 질투하며 그들을 때려눕혀 콧대를 꺾을 방법을 찾으려 하는 경향이 있다. p.38우리 삶은 대부분 제로섬(한쪽이 이득을 보면 다른 쪽이 반드시 손해를 보는 상태) 게임이 아니며 모든 것을 고려할 때 기버는 결국 합당한 대가를 얻는다. 링컨과 호닉의 선택이 처음에 손해로 보인 이유는 우리가 시간의 지평선을 충분히 길게 잡고 내다보지 않았기 때문이다. 기버가 신뢰와 신용을 쌓는 데는 .. 2024. 9. 19.
그리드 p.15자연은 늘 변덕스럽다. 공장에서 석탄 태우는 과정을 안정적으로 조작하는 것은 어렵지 않지만, 바람은 결코 그처럼 안정적으로 불지 않는다. 태양광 역시 구름 때문에 우리가 그 에너지를 모으기 위해 만들어놓은 태양광 패널에 도달하지 못하는 경우가 너무 잦다. 태양광 패널에 그늘이 드리우면, 얼마나 오래 그늘이 드리우는지와 무관하게 전기 생산량은 곤두박질친다. 풍속의 변화는 매 순간 전류 생산량을 오르내리게 만들고, 이 때문에 전류의 전압이나 주파수는 예측할 수 없이 요동치고 만다. 전력 공급을 위해 만들어진 기계인 그리드는 잘 조율되어 그 변화를 예측할 수 있는 전류를 분배하는 기계로 설계 되었으며, 그렇지 못한 전류가 망에 더 많이 진입하면 할수록 그 운영 과정이 복잡해지고 예기치 못한 문제가 늘어.. 2024. 9. 9.
나는 다정한 관찰자가 되기로 했다 p.28그땐 몰랐다. 학교에 가든 박물관에 가든 아이가 알아서 나갔다가 때가 되어 집으로 돌아오는 하루가 얼마나 기적 같은 일인지당연한 것을 당연하게 생각하지 말고, 항상 감사한 마음을 가져야 한다. 그래야 작고 사소한 것에서도 감사한 마음을 가질 수 있다. p.36다정한 관찰자 따뜻한 시선으로 아이를 바라보며 상황에 따라 적절하고 다정한 말을 건네지만, 아이의 할 일을 대신해주거나 먼저 나서서 돕기보다는 스스로 해볼 시간과 기회를 주는 부모 유형 아이에게 닥친 곤란한 상황을 세심하게 파악하고 있지만 해결해주지는 않는다. 상황을 해결하기 위한 아이의 느린 노력과 긴 과정을 응원하며, 그런 아이가 도움을 요청한다면 최소한의 조언과 무한한 격려를 보낸다.이 세상은 문제의 연속이다. 아이들 스스로 문제를 해결.. 2024. 8. 30.
jenkins 빌드에서 github action 빌드 배포로 이전 요즘 핫하다는 github action 을 사용해 보았습니다.현재는 NAS에서 구동되고 있는 jenkins 에서 프로젝트 빌드를 한 후 배포를 하고 있습니다. https://lng1982.tistory.com/413현재 구조 code push -> github -> jenkins -> build -> jar 생성 -> shell script 실행 -> 서버 기동 github action 적용 후 변경되는 구조 code push -> github -> github action 실행 -> build -> jar 생성 -> ssh를 통한 NAS 서버 연결 -> jar 배포, shell script 배포 -> shell script 실행 -> 서버 기동 github action 적용은 어렵지 않았습니다. 프로젝.. 2024. 8. 20.
기후위기 부의 대전환 p.38경제학은 기후변화 문제의 본질을 이해하는 데 없어서는 안 될 필수 학문이다. 기후변화의 시작과 끝이 경제와 연관돼 있기 때문이다. 경제활동의 핵심인 생산과 소비 과정에서 인간은 온실가스를 배출한다. 온실가스는 기후변화를 유발하고, 기후변화는 인간과 생태계에 각종 피해를 가져온다. 자연재해에 따른 인명 손실과 경제적 피해, 열사병과 같은 건강 피해, 폭염에 따른 노동생산성 하락, 바닷물 온도 상승과 산성화로 인한 대규모 산호초 멸실 등이 그것이다. p.48애덤 스미스 '국부론' "우리의 저녁 식사가 가능한 것은 푸줏간 주인과 양조장 주인, 빵집 주인의 자비심 때문이 아니다. 오히려 그들의 자기 이익에 대한 애정 때문이다. 우리는 그들의 인간성에 호소하기보다는 그들의 자기애에 호소한다. 우리가 무엇을.. 2024. 8. 20.
군중심리 p.38고립된 개인은 갖지 못하고 오직 군중만이 획득할 수 있는 이 고유한 특성들은 여러 가지 원인에 의해 결정된다. 첫째 원인은 군중을 이룬 개인이 단지 군중의 숫자가 많다는 사실 한 가지만으로 자기가 무소불위의 힘을 가졌다고 생각한다는 것인데, 이 무적의 힘은 개인이 혼자 있을 때는 억누를 수밖에 없는 본능을 추구하도록 해준다. 개인은 군중이 익명이 되고 그 결과 무책임해져 항상 개인을 제지하는 책임감이 조금씩 사라져버리면 버릴수록 본능을 점점 덜 억제하게 될 것이다. 일체의 감정과 행위는 군중 사이에서 쉽게 전파되는데, 개인이 집단의 이익을 위해 자신의 개인적 이익을 아주 쉽게 희생할 정도다. 그것은 개인의 본성과는 완전히 상반되는 능력으로서, 이 능력은 개인이 군중의 일부를 이루지 않을 때는 거의.. 2024. 8. 16.