본문 바로가기
  • 조금 느려도, 꾸준히
반응형

전체 글59

[ec2, appleboy/ssh-action] ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain 오류 발생 시 상황 appleboy/ssh-action 깃헙 액션 플러그인을 통해 aws ec2 로 연결 시도 시 다음과 같은 오류가 발생하였습니다. [ERROR] ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain 해당 태스크에 대응하는 github workflow 구성 파일 (yml) 은 다음과 같습니다. - name: Deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.STAGE_HOST }} username: ${{ secrets.STAGE_HOST_USERNAME }} key: ${{ secre.. 2023. 5. 5.
[시쓰는 AI] 냄비의 희생 냄비야, 우리를 위한 음식을 지켜줘 뜨거운 불 위에서 참을성 있게 견뎌줘 그 속에서 우리는 먹을 걸 기다리며 냄비야, 그 희생을 잊지 않아 끓는 물에 음식을 담아 숨을 쉬듯이 시간을 보내며 언젠가는 맛있게 먹을 수 있게 냄비야, 그 기다림에 감사해 그렇게 담겨진 음식의 향기는 어느 날 우리를 찾아와 냄비야, 그 추억에 미소 짓게 만들어 뜨거운 불 위에서 우리들을 지켜줘 냄비야, 늘 우리를 위해 있어줘 우리가 살아갈 수 있게 그리고 우리의 기억 속에 너의 희생을 끝없이 감사하며 기억할게. 글: chat GPT 그림: stable-diffusion/v2.1-512px 2023. 4. 30.
[spring boot / kotlin] kotlin으로 JPA entity 작성하기 Spring boot 프레임워크에서는 @Entiy 어노테이션을 사용해서 어플리케이션의 엔티티 객체와 데이터베이스 테이블을 매핑해 객체지향적으로 데이터베이스의 데이터를 관리할 수 있다. JPA 엔티티를 매핑하는 것은 기본적인 작업이지만 어플리케이션 개발의 객체지향적 관점과 데이터베이스의 관계지향적 관점을 조율하는 것은 고려해야 할 사항이 많고 비즈니스와도 밀접한 관련이 있어 아주 중요한 작업이다. 따라서 단순히 JPA 엔티티를 데이터베이스 테이블과 매핑하는 것을 넘어서 엔티티 설계를 잘 해야 한다. 이번 글에서는 위에서 언급한 설계의 레벨은 제외하고 kotlin으로 JPA엔티티를 매핑하는 과정에서 어떻게 엔티티 클래스를 작성해야 할 지 고민했던 과정을 적으려고 한다. Java 언어를 사용한 엔티티 작성 예.. 2021. 11. 21.
[Spring boot / kotlin dsl] kotlin Querydsl 초기설정 이번에 회사에서 신규 프로젝트를 kotlin 과 spring boot 를 사용해서 개발하기로 했다. kotlin, spring boot 둘 다 처음 접해보기 때문에 기본 개념과 동작 원리부터 공부를 하고 있다. 그러나 공부와 별개로 프로젝트 진행은 되어야 하기 때문에 어제부터 동료 개발자 분과 초기 프로젝트 세팅을 진행했다. 기술스택은 kotlin, spring boot 2.3.5, JPA + querydsl, liquibase, Gradle + kotlin dsl 로 정해졌다. 따라서 동료 개발자분은 spring security 부분을, 나는 jpa + querydsl 을 초기 설정하였다. 그러나 kotlin dsl 기반의 gradle을 이용해서 querydsl 을 설정하는 방법에 대한 문서가 많이 없.. 2021. 11. 16.
[javascript] Optional Chaining (?.) # Optional Chaining 자바(타입)스크립트를 사용하여 개발하다 보면 자주 사용하게 되는 연산자로서 어떤 객체의 프로퍼티에 접근하거나 함수를 호출할 때 참조의 대상이 nullish 인 경우 에러를 발생시키는 대신 undefined 를 리턴하도록 작동한다. mozila 문서에서는 optional chaining의 기능을 다음과 같이 설명하고 있다. optional chaining 연산자 (?.) 는 체인의 각 참조가 유효한지 명시적으로 검증하지 않고, 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다. 즉 누락될 가능성이 있는 속성을 참조하는 경우 optional chaining 을 이용하여 짧고 간결하게 표현식을 구성할 수 있다. # Usage Optional Chaining 은 .. 2021. 11. 9.
블로그를 운영해보면서 느낀점 # 책임감 가끔씩 블로그 관리 페이지에 들어가서 방문 통계를 보곤 한다. 방문 유입 경로를 확인해 보면 구글 검색 비중이 제일 높은 것은 그대로이지만, 요즘엔 외부 사이트로부터 직접 유입이 조금씩 생겨나고 있다. 네이버 카페 등 외부 사이트로부터 이 블로그로 직접 유입이 되었다는 것은 누군가 해당 사이트에 이 블로그의 글을 공유했다는 것이다. 내가 쓴 글을 다른 사람이 공유했다는 사실이 쑥스럽기도 하고 기쁘기도 했다. 그리고 더 좋은 글을 쓰고 싶은 욕구와 함께 책임감을 느끼게 되었다. 이 블로그의 글 중 안드로이드의 SlidingUpPanelLayout 에 대한 글과 핸즈온 머신러닝 관련 글들은 작성한 지 1년이 넘은 지금까지도 하루 방문 유입수가 가장 많은데, 예상치 못한 결과였다. 당시에는 방문자 .. 2021. 11. 8.
초보 개발자, 오픈소스 컨트리뷰터가 되어보다 제목은 거창하게 써놓았지만 사실 개발을 몰라도 기여할 수 있었던.. 너무나도 사소한 PR이었다. 그래도 처음으로 오픈소스에 기여했다는 사실에 의의를 두어 블로그에 글을 남기게 되었다. 나중에는 이런 일로는 간에 기별도 안 갈 만큼 활발한 오픈소스 활동을 하는 나를 바라며.. # 발단 회사에서 업무를 하면서 사내 서버 코드를 살펴보던 중, 우연히 다음과 같은 일을 겪었다. 사내 서버는 php로 구성되어 있으며 DateTime 라이브러리로 Carbon을 사용하는데(javascript 의 Moment 처럼), Carbon의 diff 라는 함수의 주석이 중간에 끊겨있었다. 주석이 중간에 끊겨 있으니까 다음 내용이 너무 궁금했다. 사람을 가장 화나게 하는 두가지 첫번째는 말을 중간에 하다 마는 것이고 두번째는 오.. 2021. 11. 5.
[Scroll Magic] Failed to execute removeChild on Node 에러 해결 포트폴리오 사이트에 이력서 페이지를 추가하려고 react-router 를 이용하여 resume 페이지를 추가하였는데, 제목과 같은 에러를 만나 해결 방법을 정리해 두고자 한다. # 문제 상황 resume 페이지를 추가하고, 상단 탭의 resume 버튼을 누르면 react-router-dom 의 useHistory 훅을 이용하여 resume 페이지에 해당하는 url을 푸시한다. 의도했던 동작은 url을 푸시하면서 resume 페이지가 보여야 하는데, resume 컴포넌트가 마운트 되지 않고 아래와 같은 에러를 내뱉었다. 새로고침을 하면 resume 페이지가 정상적으로 보이는 것을 확인했다. # 원인 고찰 우선 새로고침 시 resume 페이지가 정상적으로 보이는 것을 확인했으므로, url을 푸시하여 resu.. 2021. 11. 1.
입사 2주차, legacy 너란 놈은 회사에 입사 후 벌써 2주가 지나갔다. 2주동안 내가 제일 많이 했던 일은 두가지였다. 운영팀과 소통, 그리고 legacy 파악. 사내 슬랙에 ask_dev 라는 채널이 있는데, 그곳에는 타 부서로부터 개발팀에게 처리를 요청하는 티켓들이 올라온다. 요즘 들어 서버와 DB 관련된 티켓들은 대부분 내가 처리하고 있었기 때문에, 그만큼 운영팀과 소통할 일이 많았다. 사실 소통을 하기는 했지만, 대부분 티켓을 처리하면서 내가 모르는 부분들을 관련 담당자분께 물어보는 비중이 컸다. 개발팀 요청 티켓은 대부분 고객 CS나 운영팀이 사용하는 CRM 기능 수정/추가 등에 관련된 것이었고, 그것들은 거의 99% legacy 코드 및 DB 에 의존하고 있었기 때문에 legacy 코드와 DB 구조를 파악하는 것은 지금 내 .. 2021. 10. 31.
npm install 할 때 자주뜨는 node-gyp ERR 개발하면서 처음 package install 을 하면 저 에러를 자주 만난다. 단순히 에러 로그만 확인해보면 node-gyp 라이브러리 cmake 파일을 빌드하는 데 실패한 것 처럼 보인다. date-fns 라이브러리 설치할 때도 저 에러를 자주 만나는데, node-gyp 의존성을 가진 라이브러리라 그런 것 같다. 아무튼 저 에러는 node 버전을 변경하면 빠르게 우회할 수 있는데, 에러 원인이나, 관련하여 자세한 정보는 아래 issue에서 확인 가능하며 https://github.com/nodejs/node-gyp/issues/809 이 글에서는 해결 방법만 간단히 정리해 보기로 했다 # node 버전 관리 도구 (nvm) 을 사용한다 macOS 기준으로 homebrew 를 이용해 쉽게 설치 가능하다... 2021. 10. 30.
그것은 성공의 실타래를 감아 나가는 실패였다. # 갑자기 문득 그럴 때가 있다 일과를 마치고 집에 와서 남은 태스크들을 마무리하고, 잠에 들 시간이 되면 나는 보통 미래에 대해서 생각하며 잠에 든다. 내일은 무엇을 해야 하지 부터, 앞으로 어떻게 커리어를 쌓아 나가지, 훗날에는 무슨 일을 해야 하지 등 아직 도래하지 않은 시간에 대해 상상하고, 때론 걱정하고, 낙관하기도 하며 그렇게 잠에 든다. 돌아보니 후진 기어가 없는 자동차처럼, 앞만 보면서 그렇게 살아온 것 같아 오늘은 나의 하루를 돌아보기로 했다. 나의 하루를 돌아보니 지난 1년을 돌아보게 되었다. 하지만 지난 1년의 반성을 글로 적으면 회고록이 되기 때문에 얼마 안남은 신년에 정리하기로 마음을 먹고 오늘은 가볍게 나에게 주어졌던 하루에 대해서만 생각해 보았다. 아침 8시에 알람이 울리면 조.. 2021. 10. 28.
햇님에게 햇님에게 내가 널 가린다 생각지 말아 서운해 하지 말아 커튼을 치고, 네 앞에서 등을 돌린 걸, 아직 난 매서운 열병을 앓고 있는 네 사랑을 조금은 받아들일 시간이 필요할 뿐야 매일 새벽이나, 저녁 쯤 앞산이나 뒷산 구석에 숨어 우는 널 보아. 석류처럼 붉게 상기된 네 얼굴이 되려 아름다워 우는걸 알면서도 멍하니 널 훔쳐본 적 있어 차갑게 식어 나리는 네 눈물을 온몸으로 맞으며 생각했어 나는 참 못됐다. 마침내 온 세상을 붉게 물들인, 걷잡을 수 없이 커진 서늘한 너의 슬픔을 사랑하게 되었어 얼음장같이 차가운 내 이기심에 세상이 온통 하얗게 질려버릴때 비로소 한걸음 멀어지는 법을 깨달은 네가 비로소 너의 사랑에 눈뜬 나의 주위를 여전히 서성이겠지 떠나가지 못하고 추위에 떠는 내 앞에 말없이 펼쳐낼 분홍빛.. 2021. 10. 26.
반응형