분류 전체보기57 C Sockets - 기본 동작 정리 소개 C 언어에서 소켓 프로그래밍 중 accept() 와 connect() 에 대한 글입니다. '윤성우의 열혈 TCP/IP 소켓 프로그래밍' 을 통해 학습한 내용을 바탕으로 정리한 내용이니, 더 궁금하다면 책을 읽어보시는 것도 추천드립니다. 소켓 동작 방식 (TCP) 기본적으로 서버와 클라이언트 입장에서의 소켓 단계들을 설명드리고 그 중에서 중요한 부분 중 하나인 accept, connect 에 대해서 알아보겠습니다. 서버 소켓 입장 서버에서는 다음과 같이 총 6단계 정도를 거칩니다. 소켓 생성 - socket() 소켓 바인딩 - bind() 리스닝 - listen() 수락 - accept() 데이터 송수신 - read()/write() 종료 - close() 1. 소켓 생성 - socket() 소켓을 .. 2024. 3. 3. 라즈베리파이 4 과 파이썬, Firefox, Selenium - CLI 소개 라즈베리파이 4 에서 Firefox 브라우저를 Selenium 으로 실행한 내용에 대해 정리하는 글입니다. 깃헙 주소: - https://github.com/ankylos/ankylos-crawler 도커 허브 주소 - https://hub.docker.com/repository/docker/lambrosopos/ankylos-scraper/general 물론, 이미지를 실질적으로는 ArgoCD 를 통해서 띄우기 위한 별도 차트 레포는 비공개로 되어 있지만, 추후에 정리되면 해당 레포에 관한 부분도 정리해보도록 하겠습니다. 들어가기 전에... 실제 글을 시작하기 전에 더 명확한 이해를 위한 맥락을 조금 더 공유해보도록 하겠습니다. 크롤링과 스크레이핑 일단, 크롤링 서버라고 부르고 있지만, 실질적으로.. 2023. 11. 17. BigQuery 파티셔닝과 클러스터링 소개 이번 글에서는 GCP 에서 제공하는 데이터웨어하우스 서비스인 BigQuery 에서 제공하는 파티셔닝과 클러스터링에 대해서 소개하고자 합니다. 주로 대량의 데이터를 저장하고 처리하는 목적으로 사용되는 데이터베이스이기 때문에 테이블 설정이 잘 되어 있지 않는 경우에는 생각 이상의 비용을 초래할 수 있습니다. 물론, 쿼리 자체도 튜닝이 되면 좋지만, 동일한 쿼리라는 가정 하에 테이블 성능을 최적화하는 방법들에 대해서 알아보는 글입니다. BigQuery 비용 체계 제일 먼저 짚고 넘어가고 싶은 부분은 비용입니다. 사실 성능이 어느 정도 저하되었다고 하더라도, BigQuery 의 드레멜 엔진과 저장 방식을 통해 성능이 어느 정도 잘 나옵니다. 이러한 부분들이 있더라도 읽지 않아도 되는 데이터를 읽는 경우에는.. 2023. 11. 1. HTTP 1.0/1.1/2 소개 해당 글은 HTTP (Hyper Text Transfer Protocol) 의 3 개 버전에 대해서 알아보는 글입니다. 실제로 나온 버전은 3까지 있지만 다음 글의 주제로 남겨두고 1.0, 1.1 버전과 2 버전에 대해 습득하게 된 내용을 적고자 합니다. HTTP/1.0 1.0 버전은 1996년에 RFC 1945 로 발표가 되었고 아래 링크를 통해 직접 확인해 볼 수 있습니다. https://datatracker.ietf.org/doc/html/rfc1945 RFC 1945: Hypertext Transfer Protocol -- HTTP/1.0 The Hypertext Transfer Protocol (HTTP) is an application-level protocol with the light.. 2023. 10. 26. 네트워크 기본 분석 명령어 모음 소개 네트워크를 파악하기 위해서는 몇가지 방법이 존재합니다. 그 중에서 가장 기본적으로 사용되는 몇가지 명령어들을 소개하고자 합니다. 해당 명령어들은 리눅스 기반으로 소개되고 있습니다. 명령어 목록 ping ping (Packet Internet Grope) 은 네트워크 대상에 일정 크기의 패킷들을 전달하는 것이 목표입니다. 해당 패킷이 전송되고 전달받는 것을 확인하면서 패킷 송/수신 상태나 시간 등을 알 수 있습니다. ping 은 TCP/IP 프로토콜 중에서 ICMP 프로토콜을 통해서 동작하고 있고 만약에 해당 프로토콜이 지원이 되지 않는다면 실행할 수 없습니다. 마찬가지로 해당 프로토콜을 요청 대상에서 차단한다면 ping 은 사용 불가합니다. 실행 방식은 다음과 같습니다. $ ping www.goog.. 2023. 10. 19. k3s 라즈베리파이 클러스터 ArgoCD 설치 소개해당 글은 라즈베리파이를 활용해 클러스터를 구성하고 그 뒤에 무엇을 했는지에 대한 설명입니다. 특히 그 중에서 CI/CD 도구인 ArgoCD 를 설치한 내용을 글로 적어봤습니다. 목적개인적으로 사이드 프로젝트를 천천히 돌리다보니 수동으로 배포하는 과정이 반복되고 시간이 아깝게 느껴지는 순간들이 생겼습니다. 간단한 백엔드 서버를 클러스터에 배포하는 것도 처음에만 오래 걸리고 그 뒤로는 동일한 프로세스를 계속 반복하게 되었습니다. 그래서 배포 시간을 줄이고 개발 시간을 늘리면서 개발 사이클이 더 빨리 돌아갈 수 있도록 CI/CD 를 도입하기로 결정했습니다. CI/CD 소개Continuous Integration (CI) 과 Continuous Delivery (CD) 에 대해서 먼저 볼까 합니다. 사실,.. 2023. 10. 12. 라즈베리파이 클러스터 구축 소개 해당 글은 라즈베리파이 클러스터 구축을 하게 된 계기와 완료하고나서 들었던 생각과 배운 점 등을 기록하고 있습니다. 주로 계기와 구축 방법 등을 소개할 예정이긴 한데 해당 글 하나로 완성이 될 것 같지는 않아 추가로 글을 작성할 여지를 남겨 구축 계기와 구축 과정을 위주로 설명하도록 하겠습니다. 계기 클러스터를 구축하게 된 계기는 간단합니다. 퇴근하고 주로 개발 관련 영상들이나 책을 주로 보는데 어느날 유투브에서 즐겨보는 Jeff Geerling 이라는 분이 라즈베리파이로 클러스터를 구축한 것을 보게되었습니다. 처음 봤을 때에는 별 생각 없이 대단하다고 생각만 했지만 클러스터로 마인크래프트 서버도 만들고 k3s 도 설치하는 모습을 보면서 분산 시스템에 관하여 배울 수 있는 점들이 많을 것 같았습니다.. 2023. 10. 4. SQLite 를 통해 배우는 데이터베이스 여행 소개 최근 들어 이것저것 해보면서 재밌는 것을 찾아보는 시간들을 지났습니다. 그러면서 현재 업무 특성상 많이 접하는 데이터베이스에 대해서 문득 궁금증이 생겼습니다. 이전부터 데이터베이스 시스템에 대한 설계나 구조로 데이터를 효율적으로 조회하거나 저장하는 방법들 등에 대해서는 연구도 해봤고 실전도 조금 해봤습니다. 하지만 실제로 내부 데이터베이스 엔진이 어떻게 구성되고 코드 레벨에서 어떻게 구현이 되었는지 궁금해 본적이 없다는 것을 알게 되면서 한번 도전해보기로 했습니다. 여행 목표 이번 여행 목표는 데이터베이스 구조를 파악하고 전반적으로 코드가 어떻게 돌아가는지 확인하는 것입니다. 부가적인 목표는 C 언어도 학습하고 SQLite 와 다른 데이터베이스 시스템 (PostgreSQL 등) 이 어떻게 다른지 원.. 2023. 7. 8. 이전 1 2 3 4 ··· 8 다음