본문 바로가기
728x90

전체 글89

크로스 컴파일러 빌드에 Binutils가 필요한 이유? GCC는 단순히 “C 코드를 기계어로 번역”하는 프론트엔드(compiler front-end) 역할이에요.즉, GCC 자체는어셈블러(as)링커(ld)아카이버(ar)심볼 도구(nm, objdump, objcopy 등)이런 저수준 바이너리 도구들에 의존합니다.🔹 GCC는 “코드를 어셈블러 코드로 변환”한 뒤🔹 GNU Binutils의 as 를 호출해 오브젝트 파일을 만들고🔹 GNU Binutils의 ld 를 호출해 링크를 수행합니다.즉, GCC는 “Binutils가 없으면 실행 파일을 만들 수 없는 존재”입니다.그러므로 크로스 컴파일러에서는 '타킷 아키텍처용 Binutils가 필요합니다.예를 들어,지금 당신의 PC가 x86_64인데,임베디드 장비용 ARM 프로그램을 빌드하려고 한다고 가정해봅시다.로컬에.. 2025. 10. 18.
'부의 미래'가 켜는 경고등, 왜 우리 사회는 보지 못하는가 서론대학교 학부생 시절 Computer Science라는 학문을 공부하며 CS 중에서도 어떤 기술을 중심으로 공부해볼까를 고민하던 때가 있었다. 인공지능, 백엔드, Cloud, IoT, pwnable, ... 등등 이거저거 소위 말하는 "찍먹"을 하고 마지막으로 블록체인만 남겨두고 군입대를 하게 되었었다.군대에서 읽은 많은 블록체인 도서와 강의들은 나를 탈중앙화의 세상인 Web3 생태계에 매료시키기에는 충분했고, 정말 친하게 지냈던 교수님께서 블록체인 관련으로 공부해보는 것은 어떠냐라고 물어봐주신 것에 지금은 정말 감사하다고 생각이 든다(덕분에 블록체인도 한번 공부해보자는 계기가 되었다).블록체인 기술은 여러 측면에서 아주 재미있는 기술이다. 가상화폐의 개념으로 출발하여 사람들은 이 기술을 가상자산으로써.. 2025. 9. 10.
jetbrains IDE를 사용한 SSH 원격 개발 시 멀티 포트포워딩 jetbrains IDE를 사용할 때 ssh server에 연결하여 개발 시 멀티 포트포워딩을 어떻게 설정해야하는지 좋은 글을 찾아볼 수가 없어 외국 커뮤니티의 글을 찾아 적용한 내용에 대해 공유하려 한다. 아래 차례를 따라 진행하여 좋은 개발 경험을 가졌으면 좋겠다.1. SSH 서버에 연결하여 개발을 수행하면 내가 접속한 서버 IP로 표시된 버튼을 찾을 수 있다. 이를 클릭한다.2. 'Backend Status Details'라는 창이 뜨면 'Ports'라는 버튼을 찾아 클릭한다.3. '+' 버튼을 클릭하여 내가 포트포워딩하기 바라는 포트를 입력 후 하단에 'Apply'버튼을 클릭한다.4. 포트포워딩 설정이 잘 적용되면 localhost 환경에서 원격지 서버로 접속하여 개발 결과를 확인할 수 있다.이로.. 2025. 9. 10.
npm, soop-extension 라이브러리 (숲 채팅 크롤링-스크래핑) 이번에 전역 후 새로운 프로젝트를 진행하며 치지직과 숲의 채팅 데이터를 실시간으로 스크래핑(크롤링)할 필요가 생겨 전용 라이브러리를 찾아보았다. 보통 치지직이나 숲과 같은 라이브 스트리밍 서비스의 채팅 기능은 웹소켓 기반으로 동작하는 것을 확인하였다. 웹소켓 기반으로 데이터를 스크래핑하고 NoSQL DB(MongoDB 채택)에 데이터를 넣고, Message Queueing System(Kafka 채택)에 새로운 채팅을 저장한 신호를 다른 Micro Service에게 전달해야하는 상황이 필요했기 때문에 I/O 이벤트가 많이 발생할 것이라고 생각했고, 웹소켓 개발에 용이하고 I/O 기반 이벤트 처리에 최적화하기 좋은 node기반 프레임워크인 Nestjs를 사용하여 서버를 개발하기로 하였다.그런데 숲 채팅 스.. 2025. 9. 10.
PR 던진 후 github action 동작 시 secret_key 에러 이에 대해 자료를 조사하던 중 동일한 현상을 겪는 분의 글을 찾아 공유한다.https://leeeeeyeon-dev.tistory.com/32 ( 감사합니다 :) )위 글에 따르면 현재 나와 동일한 문제를 겪고 있다. 프로젝트에 참여하기 위해 우아한 형제들에서 사용하는 git flow 전략을 따르려 했고, repo를 fork 받은 후에 나의 origin repo에서 작업하고 모든 작업을 commit한 후 upstream으로 PR을 송신하여 새로운 코드를 적용하는 식으로 업무를 수행하려 하였다.프로젝트에 새로운 기능을 구현한 후 추가해야하는 상황에서 프로젝트 참여 초기 PR 송신 후 github action 파이프라인이 동작할 때 정상적으로 통과하지 못하는 문제가 발생하였다.분명 다른 분들이랑 동일한 방식.. 2025. 9. 9.
Spring Security에 JWT를 어떻게 적용했는가? 기존 세션 스토리지에서 JWT로 변경하였다. 인증 관련 컨트롤을 서버에서 온전히 처리하는 코드를 만들기 귀찮아서, 그냥 JWT를 사용하기로 하였다. 앞으로 사용자가 많아지면 좀 더 안전한 세션 기반 인증으로 로직을 변경하려한다.1. UserEntity이때 UserDetails를 구현하여 User 엔티티를 만드니 내가 온전히 컨트롤할 수 있었다. 아래 Entity 코드에서 유의하여 확인할 점은 UserDetails 인터페이스를 직접 구현하였다는 점이다. 대부분의 포스팅에서 Spring Security에서 제공하는 사용자 엔티티를 확장(extends)하는 방식으로 구현하였는데, 그렇게 구현하면 내가 원하는 필드를 추가하기 어렵고, 특히 원하지 않는 필드가 추가되어 DB에 필요없는 column이 생기면서 개발.. 2025. 9. 9.
ARP Spoofing 기반 SSL Captive Portal 시스템 구현기 서론2021년도 네트워크 보안 및 사용자 인증 실험 프로젝트에서 ARP Spoofing을 이용해 사용자의 트래픽을 가로채고, 자체 SSL 서버를 기반으로 Captive Portal을 제공하는 시스템을 직접 구축했다. 이 글에서는 해당 시스템이 동작하는 전체 흐름과 구현 과정에서 마주친 문제, 그리고 이를 해결한 방식에 대해 기록한다. 꽤나 오랜 시간이 흘렀지만, 최근 블록체인 업계로의 취업이 결정되어 남는 시간을 낭비하기 싫어 이렇게 이전에 했던 일들을 기록하며 시간을 보내려 한다.초기 Captive Portal 시스템의 경우 유튜브 영상에 나온대로 구현만하면 충분했기 때문에 난이도는 높지 않았지만, https 사이트로의 리다이렉트를 구현하려고 하다보니 생각보다 난이도가 올라간 감이 있었다.본론1. AR.. 2025. 9. 4.
git flow로 배포하기 아래 순서에 따라 배포하면 된다.git flow release start [version tag]Documentation/RelNotes/[version tag].txt 생성 후 커밋git flow release finish [version tag]단, 이때 태그가 생기도록 주의해야함git push origin developgit checkout maingit push origin maingit push origin --tags 2024. 7. 4.
SF14. SF color Lab 보호되어 있는 글 입니다. 2023. 7. 25.
728x90