비빕빱 재료들 40

HardHat 튜토리얼 1편

HardHat Tutorial 을 직접 번역해 봤습니다. 😎 더불어 개인적으로 유용했던 팁 또는 이해하는데 도움이 되는 개념들을 적어봤습니다. >> 사용 스펙 MacOS InteliJ IDE Node.js TypeScript npm Solidity 1. Overview HardHat 초심자들을 위한 튜토리얼 이 튜토리얼은 빠르고 간단하게 컨트랙트 개발 환경을 구축하는 걸 목표로 한다. 이더리움 기반 구축을 용이하게 하는 개발 환경인 HardHat을 사용하면 스마트 컨트랙트 및 DApp 구축 프로세스의 반복 작업을 관리 및 자동화할 수 있으며, 관련 워크플로우에 더 많은 기능을 쉽게 도입하도록 만든다. 또한 개발을 위한 로컬 이더리움 네트워크인 Hardhat 네트워크를 통해 컨트랙트를 배포, 테스트 실행,..

블록체인 뿅뿅 2023.02.24

[JAVA] 커스텀 어노테이션 만들기.. 그런데 Path Variable를 곁들인

위와 같이 컨트롤러 단에서 API를 통해 들어오는 jwt 토큰과 Path Variable로 들어오는 유저 아이디가 같은지 확인하고 아니라면 Unauthorized 에러를 보내는 어노테이션을 만드려고 했다. 이전에 Argument Resolver를 통하여 파라미터에 어노테이션을 붙여 사용해 본 적은 있으나, 메소드에 어노테이션은 붙여본 적이 없어 이참에 한번 도전해보기로 했다. 서비스단에서 검사하는 대신 커스텀 어노테이션을 쓰는 이유를 간략하게 설명하자면, AOP를 통해 반복되는 코드를 줄이고 재활용성을 높이기 위해서이다. AOP는 Aspect Oriented Programming의 줄임말로 비즈니스 로직에서 핵심 로직이 아닌 공통적인 부분(로깅, 보안 등)을 분리시켜 비즈니스 로직에선 핵심 로직만 집중할..

[Typescript] TypeORM 0.3.x 메이저 Changes + 0.3.x에 대한 의견

TypeORM은 2022년 3월 18일을 기준으로 0.3.0 버전을 출시했다. (링크) 0.2.x 와 다르게 달라지거나 deprecated 된 부분이 많기도 하고, 릴리즈 노트 또는 공식 docs에 적혀있지 않고 issue에만 언급된 changes도 있어 마이그레이션할 때 참고했던 것들을 정리하기로 했다. (매번 느끼지만 typeorm 공식 문서는 업데이트도 느리고 설명도 간단하게만 적혀있어 불편할 때가 많다ㅠㅠ) 차례는 다음과 같다. Config 만들기 Repository 만들기 Repository 사용하기 0.3.x으로 바꾸는 게 좋을까? Config 만들기 0.2.x에서 config를 주입할 때 사용하던 ConnectionOptions은 0.3.x에서 deprecated되었다. 대신 DataSouc..

[React] 대시보드 특화 프레임워크 Refine 맛보기

💡 refine을 이용하여 간단한 CRUD 페이지를 개발할 수 있다. (feat. Taliwind.css) refine | Build your React-based CRUD applications, without constraints! | refine Refine offers lots of out-of-the box functionality for rapid development, without compromising extreme customizability. It ships with Ant Design System, an enterprise-level UI toolkit. refine.dev GitHub - refinedev/refine: Build your React-based CRUD applic..

기타 딩가딩가 2022.11.18

[React] React 간단 맛보기

📌 백엔드 개발자도 React를 알고싶다! 그런데 typescript를 곁들인. 회사에서 관리자 페이지를 만들기로 했는데, 프론트도 일부 맡게 되어서 불가항력으로 React를 공부하게 되었다. 최근 프론트 쪽에도 관심이 생겨서 클론 코딩 강의를 들으려고 했는데, 그 전에 React에 대해 간단하게라도 알고 가면 좋겠다 싶어 정리를 해보았다. 리액트를 깊게 파진 않고 필요할 것 같은 기본 개념과 코드 등만 가져왔다. 차례는 다음과 같다. 1. 메뉴판 :: 리액트란? 2. 시식코너 :: 리액트 중요 개념 및 기능 3. 에피타이저 :: 리액트 작업 환경 4. 메인디쉬 :: 리액트 프로젝트 실습 5. 디저트 :: 참고자료 🧾 메뉴판 :: 리액트란? 정의 페이스북에서 제공해주는 프론트엔드 라이브러리. 구조가 MV..

기타 딩가딩가 2022.11.18

[Infra] Github Actions 간단 실습(2) ~ 헤로쿠 배포 ~

[Infra] Github Actions 간단 실습(1) ~ 빌드및 테스트 ~ 에서 이어집니다 지난 글에선 github actions을 이용해 깃허브에 올라오는 코드를 빌드 및 테스트하는 워크플로우를 작성해보았다. 이번엔 github actions를 이용해 깃허브에 올라오는 코드를 서버에 배포하는 워크플로우를 작성해보겠다. 여기서 사용할 서버는 heroku로, 여기를 참고하면서 진행하면 도움이 될 것이다. 0. 헤로쿠 무료 플랜 제거 헤로쿠는 2022년 8월 25일, 다가오는 11월 28일부터 무료 플랜과 무료 data service를 더 이상 제공하지 않으며 비활성 계정들도 점진적으로 삭제할 거라 발표했다. (링크) 차후 학생과 비영리 단체를 위한 지원 프로그램을 개설할 거라 했지만 학생 계정만으로도..

[Infra] Github Actions 간단 실습(1) ~ 빌드및 테스트 ~

최근 대학교 동아리 사람들과 간단한 스프링 프로젝트를 만들고 있다. 백엔드 일부와 인프라 전반을 맡게 되었는데, 인프라를 전부 맡은 적은 처음이라 조금 부담이 있었다. 그래도 하다 보니 생각보다 할만해서 재미있게 하고 있다. 최대한 간단하게 CI/CD 환경을 구축하기 위해 헤로쿠와 깃허브 액션을 쓰기로 했다. 순서는 다음과 같다. 1. develop 브랜치를 베이스로 한 PR 브랜치가 올라온다. 2. 깃허브 액션에서 PR을 감지하고 빌드 및 테스트를 돌린다. 3. 빌드와 테스트가 성공적으로 끝나면 코드 리뷰를 진행하고, develop 브랜치에 머지한다. 4. 깃허브 액션에서 머지를 감지하고 헤로쿠 서버에 배포한다. 0. 깃허브 액션이란? 깃허브에서 제공하는 CI/CD 서비스. 레포지토리에서 어떤 이벤트가..

[TypeScript] MissingDriverError: Wrong driver: "undefined" given. 에러 해결

데이터베이스 세팅을 하는데 해당 에러 때문에 2주간 고생을 했었다. 다른 팀원들에게도 도움을 구했었는데 다름 팀원들 컴퓨터에서는 잘 돌아가서 혼란을 많이 줬었다... env 파일을 지정해놨음에도 왜 저렇게 뜨나 해서 디버깅을 돌려보니 env 파일을 왕따시키고 있는 것 마냥 변수를 아예 먹고 있질 못했다. 많은 방법을 시도했음에도 불구하고 에러가 해결되지 않아 편법으로 터미널을 이용해 직접 환경 변수를 먹이거나 docker compose 파일에서 env file을 지정해주는 식으로 해결을 했다. 그러나 언제까지고 편법으로 승부할 수는 없는 법이다... 시도했던 방법들은 아래와 같다. 여기를 많이 참고했다. 1) export = config 를 module.exports = config 로 변경 별 차이 없..

[Infra] kubernetes 간단 정리 (1)

회사에서 쿠버네티스를 쓴다고 해서 저번에 팀리더와 간단한 실습을 했다. 하라는 대로 따라하면서도 대체 무슨 일이 일어나고 있는 건지 감이 잘 잡히지 않았다.. 🥹 마침 시간적 여유가 생겨 간단하게라도 정리해보려고 한다. 진짜 간단함. 완전 입문용. 쿠버네티스란 컨테이너 관리 툴. 좀 더 정확히는, 컨테이너를 쉽고 빠르게 배포, 확장하고 관리를 자동화해주는 오픈소스 플랫폼이다. 컨테이너 관리 툴은 쿠버네티스 이전에도 많이 있었지만(Docker의 스웜, AWS의 ECS, 하시코프의 Nomad, Mesos의 Marathon 등) 쿠버네티스 스펙과 기능이 넘 좋아서 등장 이후로 사실상 일인자가 된 듯 하다. 쿠버네티스를 쓰면 뭐가 좋을까? 1) 모니터링이 쉬워진다 컨테이너가 여러 개 있는데, 그 중 하나의 컨테..

[Infra] heroku로 스프링 프로젝트 빠르고 쉽게 배포해보기

시작하기에 앞서 배포가 뭐임? 📌 배포를 알기 전에 잠깐!! 컴파일과 빌드와 배포의 차이는 알고 있나요? --본인이 번역가라고 해보자-- 1. 영문으로된 글을 한글로 번역하는 것은 컴파일이다. 2. 번역한 글을 책으로 엮는 것은 빌드이다. 3. 완성된 책을 고객들이 읽을 수 있도록 서점에 진열하는 것은 배포이다. 4. 1~2번 과정을 하나로 묶어 '빌드한다'고 하기도 한다. 순서대로 보면 컴파일-빌드-배포지만 “빌드하고 배포하죠” 안에서 빌드는 보통 컴파일을 포함하고 있다. --프로그래밍적 관점으로 보자면...-- 1. 컴파일: 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일 2. 빌드: 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일 3. 배포: 빌드가 완성된 실행 가능한 파..