전체 글

최근 친구와 시작한 사이드 프로젝트가 있습니다. 클럽하우스 프로필을 웹에서 조회 할 수 있도록 하는 프로젝트입니다. 개인적으로 이 프로젝트를 통해 처음 써본 기술이나 개념들이 많아서, 수동으로 배포를 마친 지금, 조금 뿌듯해서 어떤 기술을 썼는지, 왜 썼는지 적어보려고 합니다. 프로젝트 소개 프로젝트의 주소는 https://inssa.club 입니다. 다시 한번 설명하자면, 클럽하우스 프로필을 웹에서 조회 할 수 있도록 하는 프로젝트 입니다. 그래서 당신. 무슨 약을 하셨길래 22시간을 코딩한거야..? 당연히 22시간 연속으로 개발한 것은 아니고, wakatime에 찍힌 1일 코딩 시간 중 최장 시간을 기록한 날과 2위로 길게 코딩 한 날을 합쳐서 22시간이라고 했습니다. 먼저 인증부터 하겠습니다. 10..
기분 좋게 docker swarm으로 배포를 하려고 하는데, 문제가 발생했다. WAS 의 한 환경변수가 등록이 안되는것이었다! 그래서 두시간동안 삽질을 했다. 참고하길 바라며 글을 남긴다. 1. Docker Stack 에서는 .env를 지원하지 않는다. Docker Stack 에서는 .env를 지원하지 않는다. 그러니까, 우리가 흔히 하는 다음과 같은 사용이 되지 않는다는 것이다. ports: - "${PORTS}:8000" 그렇다. 만약 이런 상태로 실행하게 된다면, 해당 부분은 그냥 빈것으로 처리되어 실행된다. 그렇다면 어떻게 해야 할까? 답은 env_file 이다. 서비스 안에 env_file을 정의함으로써 .env 파일을 사용 할 수 있는데, 이는 다음과 같이 사용하면 된다. services: w..
이제 고3이다. 나는 달라진것이 없는데, 주변에서 바라보는 시선은 나를 다른 사람으로 만들려 하더라. 이맘때 쯤이면 한번쯤 느끼는 새로운 반의 풋풋함과 어색함은 이제 찾아 볼 수 없을것이다. 공부를 조금 못하더라도, '아 나는 시간이 많이 남아있으니까...' 핑계도 이제는 전혀 소용이 없는 나이가 되었다. 물론 나는 대학교 진학 대신 취업을 선택하여서 크게 해당이 되진 않지만 그래도 이런 생각, 누구나 중학교 때 한번쯤은 해보지 않았는가. 나는 취업을 생각하고 있다. 나는 돈을 많이 벌고 싶다. 마치 이태원클라스의 박새로이처럼, 내가 하고 싶은 일을 하기 위해. 내 소신대로 행동하며 살기 위해, 나를 무시하고, 나에게 무례한, 다른 사람들을 존중하지 않는 사람들로부터 나를 지킬 수 있는 유일한 방법이 돈..
https://sunrinsecurity.com 의 첨부파일들이 전부 사라졌다. 파일 업로드 부분의 테스트 코드를 바보같이 짜서 그랬다.. 파일 업로드 테스트 이후 업로드 된 파일들을 모조리 삭제하는데, 그게 프로덕션 미디어 폴더랑 같은 폴더여서, 테스트가 돌때마다 첨부파일이 사라지고 있던 것이었다. 아무튼, 열심히 파일을 복구해서 다시 서버에 파일을 복구했는데, 다운로드가 안되는것이다..! 엥..? 디버깅 뭐가 문젠지 모르겠어서 열심히 디버깅을 해 보았는데, 다음과 같은 결과를 얻을 수 있었다. 파일명이 영문이면 잘 다운로드가 된다 파일명이 한글이면 다운로드가 안된다 서버에 접속해서, 파일명이 한글인 친구들의 이름을 변경해보려 했는데 안되었다. 무엇을 잘 못 했는지 모르겠어서, 로컬(맥)에서 같은 환경..
잠시 redis.io를 들어가볼까요. Redis는 오픈소스(BSD License)이며, 데이터베이스로, 캐시로, 메시지 브로커로 사용되는 in-memory 자료구조의 저장소입니다. Redis는 string, hashes, list, set, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, 그리고 streams와 같은 자료구조를 제공합니다. Redis는 내장된 복제(Replication) 기능, Lua 스크립팅, LRU 정책(LRU eviction), 트랜잭션, 그리고 여러 디스크를 사용한 여러 레벨의 영속성을 갖고 있으며, Rdis Sentinel과 Redis Cluster를 사용한 자동 파티셔닝을 통해 높은 가용성을 ..
생활코딩의 이고잉 님과, 교육자로서 가져야 할 자세, 내가 가야 할 방향에 대한 글 글을 쓰며 지금은 새벽 네 시 입니다. 자기 전, 우연히 생활코딩 유튜브를 들어가게 되어 머신러닝과 관련한 유튜브를 보게 되었습니다. 저는 충격을 받았습니다. 그동안 접해본 머신러닝은 복잡한 수식, 그래프들로 이루어진 미지의 기술이었으니까요. 교양적인 수준으로 이것이 무엇을 가능하게 만들어줄지는 알고 있었지만, 어떤 원리로 이 마법을 가능하게 하는지는 몰랐습니다. 생활코딩 유튜브에서 접한 머신러닝의 설명은 보면서 계속 웃음이 났습니다. 잠깐이지만 보면서 웃음이 지어질 정도로, 머신러닝이 무엇인지 궁금해하게 만들고, 더 배우고 싶어 설레게 했습니다. 몇 가지 생각이 떠올라 정리하고 싶어 침대에 누워있다가 컴퓨터를 켰습니다...
리버스 프록시란? 일단 이 글을 읽을 사람이라면 리버스 프록시가 무엇인지 알고 있을것이라고 생각한다. 리버스 프록시가 뭔지 모르는데 리버스 프록시를 쓴다는게 말이 안되니까.. 쉽게 말해서 Nginx가 HTTP 요청을 받고, 그걸 다른 곳에 연결(프록시) 해주는 기능을 말한다. 이게 왜 리버스프록시 인지 설명하려면 글이 길어질테니, 읽는이의 수준을 감안하여 스킵하겠다. HTTPS 적용은 Let's encrypt를 사용하자! Nginx와 Let's Encrypt를 사용하면 손쉽게 HTTPS를 적용 할 수 있다. Nginx에서 사이트들의 설정파일을 담당하는 /etc/nginx/sites-available 에 내 서비스의 도메인(ex: mengmota.com)으로 파일명을 지정해놓고, 또 설정 파일안에서 ser..
1편에서는 힘들었던 이야기, 컴퓨터를 접하게 된 이야기, 그리고 꿈을 갖게 된 이야기를 적었습니다. 그리고 중학교 3학년이 되었습니다. 부모님이 너 그렇게 하다간 원하는 고등학교 못 갈 거라고 자만하지 말라고 지나가며 툭 던지셨던 말이 기억에 남습니다. 그날 밤, 혼자 생각을 하다가 깨닫게 되었습니다. '공부도 안 하고, 놀기만 하고, 주변에서 컴퓨터 잘한다고 하지만 진짜 그런가? 노력도 안 하는데? 난 거짓말쟁이였나보다' 많은 시간을 낭비했고, 이대로 가다간 정말 큰일 날 수도 있겠구나 싶었습니다. 그래서 당장 눈에 보이는 성과를 낼 수 있는 개발을 해야겠다고 생각했습니다. 웹과 앱 프로젝트 몇 가지를 기획하고, 결국 그해에 계획했던 모든 프로젝트를 진행해서 제가 입학하고자 했던 고등학교에 입학했습니다..
2021년이 되었습니다. 저는 19살(만 18살), 고3이 되었습니다. 신정도 구정도 꽤 지났는데, 1월 1일에는 아직 2020년 같았고, 구정에는 별 감흥이 없었습니다. 다른 사람들이 열심히 회고록을 적고, 신년 다짐을 하고 있을 때, 놀다가 지금에서야 글을 씁니다. 마지막 10대를 보내는 건 기대보다는 아쉬움이 더 큽니다. 멋들어지게 공들여 쓰고 싶지만, 또 날 것처럼 쓰고 싶어서, 그냥 생각나는 내용을 주절주절 적어볼까 합니다. 사람은 주변의 영향을 많이 받는 존재입니다. 드라마나 영화, 노래. 저는 책보다는 대중매체의 영향을 많이 받았습니다. 특히나 한국 드라마와 한국 노래를 많이 접했습니다. 많은 대중 매체에서 사랑을 중요하게 묘사하곤 합니다. 또, 아버지가 어머니에게 표현을 열심히 하는 모습도..
개발을 하다보면 앱의 배경 색, 혹은 AppBar(뒤로가기 버튼이나 햄버거 버튼이 있는 바) 의 색을 바꿀 때 상단바의 색상도 변경하고 싶어진다. 위 두 사진을 보면, AppBar 위의 StatusBar (상단바) 아이콘 색상이 다른것을 확인 할 수 있다. 사실, 만약 저 StatusBar (상단바) 아이콘의 색상이 고정되어 있다면 큰 문제가 되지 않는다. 그렇게 되면 아래의 사진처럼 코드를 짜버리면 된다. main.dart 에서 MaterialApp의 옵션으로 primaryColor, brightness 와 관련한 옵션을 줄 수 있기 때문이다. 위의 사진처럼, Theme Parameter 에 ThemeData를 통해서 brightness를 지정함으로써 StatusBar (상단바) 의 아이콘 색상을 밝게..
gRPC 시리즈에서 다룰 내용 왜 gRPC인가? gRPC로 unary RPC 구현 gRPC로 stream RPC 구현 gRPC로 REST API 구현 서론 전 편에서 프로토콜 버퍼에 대해 언급했었습니다. 프로토콜 버퍼를 사용해 REST 통신을 하던 구글은, '이거, RPC로 구현하면 되게 편하고 효율적이지 않을까?' 생각하게 됩니다. 먼저 우리는 RPC에 대해 알 필요가 있습니다. RPC는 쉽게 말해서 통신 기술 중 하나로, 로컬 함수를 호출 하듯 다른 프로세스에 있는 내용을 호출 할 수 있도록 하는 기술입니다. 네트워크 간 통신의 추상화가 아름답게 이루어져, 다른 프로세스에 있는 내용을 로컬 함수처럼 호출 할 수 있다는것이죠. RPC 개념에 대해 익숙치 않아도 괜찮습니다. HTTP 기반의 REST AP..
서론 JSON, XML 를 사용하여 통신을 하던 구글의 엔지니어들은 다음과 같은 생각을 갖게 됩니다. "더 빨리 통신하고 싶어!" 그래서 구글은 프로토콜 버퍼라는 해결책을 내놓습니다. 그게 뭔데? 프로토콜 버퍼의 사전적 정의는 다음과 같습니다. 프로토콜 버퍼(Protocol Buffers)는 구조화된 데이터를 직렬화하는 방식이다. 유선이나 데이터 저장을 목적으로 서로 통신할 프로그램을 개발할 때 유용하다. - 한국어 위키피디아 제가 공부하며 내린 한줄 요약은 다음과 같습니다. 통신 과정에서 사용하는 언어에서 자유로운 모델 정의, 통신 속도를 빠르게 하기 위한 인코딩, 그 외에 편리한 도구 제공 프로토콜 버퍼는 크게 다음과 같은 기능을 제공합니다. 모델 스키마 정의 프로토콜 버퍼 스키마를 여러 언어의 인터..
지원기에 이어 후기를 작성하게 된, 11기 연수생 서비언스 팀의 김연규입니다. SW 마에스트로 소개 SW 마에스트로(소프트웨어 마에스트로, 이하 '소마')는 과학기술정보통신부, 정보통신기술진흥센터에서 주관하고, 한국정보산업연합회에서 운영하는 SW 전문가를 양성하는 과정입니다. 요즘 수지와 남주혁이 나오는 드라마 스타트업에서 나오는 샌드박스 같은 지원 프로그램이라고 생각하시면 될거같습니다! 실제로 드라마를 보면서 어..? 싶은 부분들이 많았거든요. 아무튼, 과정이 변경됨에 따라 선발 인원수가 변경된 적도 있었지만, 제가 속했던 11기는 총 150명을 뽑았습니다. 소마 과정을 통해서 교육생들은 여러 혜택을 받을 수 있게 됩니다. 과정이 변경되면서 혜택도 매년 조금씩 바뀌지만 제가 받았던 혜택들은 다음과 같습..
이번 동아리에 지원한 신입생 분들 께 선린인고 20학번 신입생 여러분 원하는 동아리 준비하느라 수고 많으셨습니다 ㅠㅠ 저는 지원 페이지의 서버 로직을 담당하여 개발한 Layer7 19기 부부장 김연규라고 합니다. 여러분들의 지원을 관리하였던 지원 페이지에 대해 궁금할거같아, 나름의 비하인드(?) 스토리를 준비했습니다. 글 쓰는 재주가 없어서 재미 없을 수도 있는데, 그냥 이런 일 들이 있었다 생각하고 즐겁게 봐주시면 좋을것 같아요. 글에 들어가기 전 솔직히 말하자면, 시스템이라고 민망할 정도의 그냥 웹 서버 였습니다. 설레는 마음으로 신입생을 기다리며 개발을 했어야 했습니다. 그런데 제가 소프트웨어 마에스트로 11기 지원 준비 때문에 두시간 만에 급하게 만들어 낸거라 부족한 점 투성이였습니다. 기술적으로..
SW마에스트로 11기 지원기 소개 저는 SW 마에스트로 11기에 지원했던 김연규라고 합니다. 글에서 직접적으로 저의 실명을 언급하는 것은 처음인 것 같네요. SW 마에스트로로써 활동을 하다 보면 결국 제가 누구인지 알려지게 될 것 같기도 하고, 어차피 블로그 주소도 code-yeongyu 아닌 만큼 그냥 다 언급하고자 합니다. 저는 2020년 현재 선린인터넷고등학교 정보보호에 2학년으로 재학 중입니다. 두괄식으로 말하자면, 저는 SW마에스트로 과정 11기 연수생으로 활동하게 되었습니다. 글을 쓸 생각은 없었는데 기록을 하고 싶기도 하고, 저도 위 기수분들의 지원기를 읽으며 많은 도움을 받았기에 이렇게 글을 적게 되었습니다. 지원 과정 자체의 디테일한 부분을 이야기하기보다는, 제가 느꼈던 점을 위주로 적고..
mengmotaYeonGyu
Superman's Somewhere