전체 글

"Premature optimization is the root of all evil" - Donald Knuth
재밌는 개발글이지만 아직 미분류

[2024-06-12] chapter 1.0 ~ 2.4 / keyword: integer type, NO Truthy/Falsy concept in Rust, panic! & Error with ROP

Today I learnedthe workshop runner ⇨ wr will verify my solutionIntegers Type is more variant4u32 == literal value 4 with type annotation u32declare variable named let In Rust, NOT USE truthy or falsy values. only type bool → Rust's philosophy around type coercion.Panic! VS. Resultsee: https://doc.rust-lang.org/std/macro.panic.htmlNOTEWhen to use Panic! vs Result for error handling system in R..

재밌는 개발글이지만 아직 미분류

[Staging] expiry (4)

Documenting will be soon. . . .일단 code crafts 진도 빼고나서 복습할 때 도큐멘팅 할 예정 참고 문서https://www.reddit.com/r/learnrust/comments/1ap0boe/make_your_own_redis_from_codecraftersio/https://stackoverflow.com/questions/23763031/what-does-p-stand-for-in-commands-such-as-redex-psetex-redis-milliseconds-bu/23763496#23763496https://redis.io/docs/latest/commands/expire/#how-redis-expires-keyshttps://github.com/code..

재밌는 개발글이지만 아직 미분류

[Staging] Handle concurrent multiple clients from the same client || async, multi thread, tokio (3)

Today I learnedKey Features of this PR멀티 클라이언트 처리: 여러 클라이언트를 동시에 처리하는 서버 구현PING/PONG 응답: 클라이언트의 PING 명령에 대한 PONG 응답 처리궁금한 부분 정리Tokio를 사용하여 Redis 비동기 프로그래밍 및 스레드 관리 → spawn 이 뭐지?TCP listener, stream 차이let mut buffer = [0; 1024]; 이 코드는 정확히 무슨 의미인지? 어떤 기능을 수행하는 것인지? mut 이라 선언한 이유?주요 개념비동기 프로그래밍: async와 await 키워드를 사용하여 비동기 작업을 정의하고 실행Tokio 런타임: 비동기 코드를 실행하기 위한 런타임 환경을 제공TCP 통신: TcpListener와 TcpStrea..

재밌는 개발글이지만 아직 미분류

[Staging] Respond to multiple PINGs (2)

WIP (Documenting)ref:TCP server in Rust using the std::net module.https://doc.rust-lang.org/std/net/index.htmlRelative to: #3Summary by CodeRabbitNew FeaturesIntroduced a multi-ping target in the Makefile for improved efficiency in network checks with the Redis server.Enhanced TCP server functionality to handle multiple requests from a single connection, improving responsiveness.Bug FixesImprove..

재밌는 개발글이지만 아직 미분류

[Staging] Bind to port 6379 and respond to "PING" with "PONG" by RESP (1)

Today I Learned1. 기본 정보Binding Port: Redis 서버는 기본적으로 TCP 6379 포트를 사용Redis generally uses RESP as a request-response protocol프로토콜: Redis Protocol (RESP2)2. RESP (Redis Serialization Protocol)2.1 RESP 특징다양한 데이터 타입을 지원하는 직렬화 프로토콜표준 ASCII로 인코딩된 제어 시퀀스를 사용하는 이진 프로토콜모든 RESP 데이터는 \r\n (CRLF)로 종료됨인코딩 예시:A → 65 문자 CR(\r) → 13LF(\n)) → 10SP( ) → 322.2 RESP 데이터 타입 분류simple 타입: 단순한 리터럴 값을 나타내는 프로그래밍 언어의 스칼..

재밌는 개발글이지만 아직 미분류

주니어 개발자 3년차의 2025 회고 - 불확실함 속에서 찾아가는 나만의 길

이제야 보이기 시작한 것들개발자로 진로를 전향하고 나서 스타팅 포인트에 서있을 때의 막연한 두려움과는 조금 다른 감정이 요즘 들기 시작했습니다. 내가 언제 가장 집중하게 되는지, 어떤 문제 앞에서 시간 가는 줄 모르고 몰두하게 되는지를 조금씩 알아가고 있어요.실시간 동시성을 고려한 / 대규모 트래픽을 다루거나 시스템 전체를 바라보며 설계하는 일, 복잡하게 얽힌 문제의 실마리를 하나씩 풀어가는 과정들. 이런 순간들에서 느끼는 재미와 성취감이 점점 더 명확해지고 있습니다.AI 시대, 개발자로서의 고민들가끔 알고리즘 문제를 풀다 보면 문득 이런 생각이 듭니다. AI가 나보다 훨씬 빠르고 정확하게 코드를 작성하는데, 굳이 내가 복잡한 구현에 매달릴 필요가 있을까? "AI가 점점 더 많은 것들을 대신하게 될 텐데..

알고리즘/프로그래머스

[프로그래머스 Lv.3] 여행경로: JavaScript 알고리즘 풀이 with DFS (Feat. 얕복 깊복 이슈)

들어가며요즘 알고리즘, 자료구조를 열심히 공부하고 있는데 그중 DFS/BFS 문제를 집중적으로 공략하고 있습니다. 아직 제가 재귀함수에 익숙하지 않기도 하고, 또 해당 문제는 사실 일반적인 DFS 문제이기는 한데, 얕복 깊복 개념 고려 안하고 막 풀었다가 예상과 다른 결과가 나와서 당황하게 되었던 문제입니다. 해당 이슈를 겪었던게 인상깊고 재밌어서 해당 문제 풀이를 포스팅하게 되었습니다.풀이코딩테스트 연습 - 여행경로 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr로직 설명 사용한 티켓이거나 출발지가 다..

알고리즘/SQL

ARM 맥북과 호환되지않는 버전의 mySQL을 docker-compose 로 설치 및 실행하는 방법

목표: docker-compose.yml 을 작성하여 OS 와 호환되지 않는 MySQL 구버전을 설치하고 mySQL 에서 user 계정을 관리할 수 있습니다. 들어가며 최신 버전 mySQL 의 경우에는 ARM 칩셋을 지원하기 때문에 docker pull 기능을 사용해서 쉽게 도커로 mySQL 을 실행시킬 수 있지만 애플 실리콘 칩셋 버전과 호환되지 않는 구버전인 경우 그렇게 해도 제대로 실행되지 않는 문제가 있습니다. 저같은 경우에는 M2 맥북으로 Live 서버의 버전과 맞추어서 개발을 진행해야하는데, 라이브 서버에서 사용하는 mySQL 버전이 5.7 구버전이라 곤란했던 적이 있었습니다. 그래서 유저의 실행 환경에 구애받지 않고 낮은 버전의 mySQL 을 실행할 수 있도록 docker-compose 를 ..

Infra/ELK stack

트러블슈팅: APM 서버가 Health Status Red 인 문제 해결

들어가며기존 레거시 APM 서버에서 로깅이 정상적으로 수집되지 않는 에러가 발생하여 확인해보던 중 elasticsearch cluster status 를 확인해보니 red 임을 확인하였습니다. 그때 해결 과정을 정리한 글입니다. 🚨 Unassigned shards 발생 원인 및 해결방법 $ curl -X GET "localhost:9200/_cat/health?pretty&v"epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1696402762 06:59:22 dorito red ..

Infra/ELK stack

[Elasticsearch] Elasticsearch 기본 구성 이해하기

Elasticsearch 관련 문서를 읽을 때 자주 나오는 키워드 위주로 개인적으로 공부하면서 간단하게 정리해보았습니다. * 7.15 버전을 기준으로 작성하였습니다. Basic Concept Elasticsearch 는 오픈소스/java로 개발된 아파치 루센을 기반으로 구축된 실시간 분산 및 분석을 수행하는 검색 엔진입니다. 이것저것이 많이 붙은 일종의 NoSQL 정도로만 이해하고 필요할 때 이 서비스가 지원하는 기능인지 찾아보면 될 것 같습니다. (저는 서버 로깅 APM 기능을 사용할 예정입니다.) 그리고 HTTP 프로토콜로 접근이 가능한 REST API 로 데이터 조작을 지원합니다. ELK stack 에서는 주로 Elasticsearch, Kibana, Logstash 로 구성하여 사용합니다. MVC..