Spring 기본 - JWT 인증 시스템
·
카테고리 없음
https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시 시스템으로 사용 중람다 표현식, Stream API 등 중요한 기능이 도입된 버전장기적으로는 점차 마이그레이션하는 추wooncloud.tistory.comhttps://wooncloud.tistory.com/162 Spring 기본 - Service 계층이전 내용https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시..
JWT (JSON Web Token) 설명
·
개발 아카이브/개발 관련 지식
JWT 기본 구조JWT는 점(.)으로 구분된 3개 부분으로 이루어져 있다.xxxxx.yyyyy.zzzzz각 부분은 Base64URL로 인코딩되어 있다.1. Header (헤더)역할: 토큰의 타입과 서명 알고리즘 정보{ "alg": "HS256", "typ": "JWT"}alg: 서명에 사용된 알고리즘 (HS256, RS256, ES256 등)typ: 토큰 타입 (항상 "JWT")2. Payload (페이로드)역할: 실제 전달하고자 하는 정보(클레임 Claims){ "sub": "user123", "name": "김철수", "role": "admin", "iat": 1516239022, "exp": 1516242622}클레임 종류Registered Claims: 표준 클레임 (sub, exp,..
Spring 기본 - 게시판 만들기
·
개발 아카이브/JAVA
https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시 시스템으로 사용 중람다 표현식, Stream API 등 중요한 기능이 도입된 버전장기적으로는 점차 마이그레이션하는 추wooncloud.tistory.comhttps://wooncloud.tistory.com/162 Spring 기본 - Service 계층이전 내용https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시..
JAVA equals, hashCode 오버라이드시 instanceof와 getClass 차이
·
개발 아카이브/JAVA
인텔리제이에서 equals()나 hashCode()를 생성할때 instanceof와 getClass 중에 어느걸 사용할꺼냐 선택하는 경우가 있다. instanceof 방식상속 관계를 허용.부모 클래스와 자식 클래스 간의 비교가 가능.더 유연하지만 대칭성(symmetry) 원칙을 위반할 수 있다.@Overridepublic boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof MyClass)) return false; MyClass myClass = (MyClass) obj; // 필드 비교 로직 return Objects.equals(name, myClass.name);} getClass(..
Spring 기본 - DTO (Data Transfer Object) 패턴
·
개발 아카이브/JAVA
https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시 시스템으로 사용 중람다 표현식, Stream API 등 중요한 기능이 도입된 버전장기적으로는 점차 마이그레이션하는 추wooncloud.tistory.comhttps://wooncloud.tistory.com/162 Spring 기본 - Service 계층이전 내용https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시..
Spring 기본 - Service 계층
·
개발 아카이브/JAVA
이전 내용https://wooncloud.tistory.com/161 Spring 기본 시작 - 세팅부터 CRUD API 까지1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시 시스템으로 사용 중람다 표현식, Stream API 등 중요한 기능이 도입된 버전장기적으로는 점차 마이그레이션하는 추wooncloud.tistory.com Service 계층 추가왜 Service 계층이 필요할까?Controller: HTTP 요청/응답 처리만 한다.Service: 실질적인 비즈니스 로직 처리를 service에서 모두 함.Repository: 데이터베이스 접근만 한다.Service 패키지와 클래스 생성src/main/java/com/example/demo_a..
Spring 기본 시작 - 세팅부터 CRUD API 까지
·
개발 아카이브/JAVA
1. 자바 설치 (Java JDK 17 이상 설치)Java 8 (2014년 출시)여전히 많은 기업에서 레거시 시스템으로 사용 중람다 표현식, Stream API 등 중요한 기능이 도입된 버전장기적으로는 점차 마이그레이션하는 추세Java 11 (2018년 출시)현재 가장 널리 채택되고 있는 LTS(Long Term Support) 버전Oracle의 상업적 지원이 필요 없는 OpenJDK 기반으로 무료 사용 가능많은 새로운 프로젝트들이 Java 11을 기준으로 개발Java 17 (2021년 출시)최신 LTS 버전으로 채택률이 빠르게 증가하고 있음Spring Boot 3.0+ 등 주요 프레임워크들이 Java 17을 최소 요구사항으로 설정https://wooncloud.tistory.com/160 Java 17..
Java 17 다운로드 방법
·
개발 아카이브/JAVA
주요 Java 17 배포판1. Oracle JDK 17다운로드: https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html특징: Oracle의 공식 배포판라이선스: 개발/테스트는 무료, 상업적 사용 시 유료2. Eclipse Adoptium다운로드: https://adoptium.net/temurin/releases/?version=17특징: 커뮤니티 기반, 가장 인기 있는 오픈소스 배포판라이선스: 완전 무료 (OpenJDK 기반)3. Amazon Corretto 17다운로드: https://aws.amazon.com/corretto/특징: AWS에서 지원하는 무료 배포판라이선스: 완전 무료4. Microsoft Build o..
Jules - 구글 Gemini에게 코딩 오마카세 시키기
·
개발 아카이브/AI, 인공지능
해당 글은 AI 정보들을 모아 보관하는 글입니다.급변하는 기술인만큼 포스팅 시간이 지날수록 잘못된 정보일 수 있습니다.https://jules.google/ Jules - An Asynchronous Coding AgentJules creates a PR of the changes. Approve the PR, merge it to your branch, and publish it on GitHub. Also, you can get caught up fast. Jules creates an audio summary of the changes.jules.google 예전에 OpenAI에서 Codex를 내놓으려 할 당시, 구글에서 먼저 jules를 출시했다.Codex를 써보고 싶었으나, 월 200달러인가 ..
Google Stitch - AI에게 UI 디자인 시키기
·
개발 아카이브/AI, 인공지능
해당 글은 AI 정보들을 모아 보관하는 글입니다.급변하는 기술인만큼 포스팅 시간이 지날수록 잘못된 정보일 수 있습니다. https://stitch.withgoogle.com/ Stitch - Design with AI stitch.withgoogle.com최근에 사이드를 하면서 늘 고민이였던게 UI 디자인이었는데, 그만큼 CSS 프레임워크에도 많이 의존도 하고 UI 컨셉도 생각하기 정말 어려운 부분이긴 했다. AI가 UI 디자인을 해주는게 없나? 생각했지만, 최근에 구글이 Stitch를 내놓으면서 이거다 싶었다. Google Labs에서 새로 내놓은 실험적인 도구. 프롬프트나 이미지를 입력하면 몇 분 안에 UI 디자인과 프런트엔드 코드를 생성해준다고 한다. 그래서 해본 찍먹. 사진에서 보면 알지만 만들어..
Uint8Array.from()이 반복문보다 빠른 이유
·
개발 아카이브/Javascript
코드 비교변경 전: 수동 반복문 (느림)const bytes = new Uint8Array(binaryString.length);for (let i = 0; i 변경 후: Uint8Array.from() (빠름)const bytes = Uint8Array.from(binaryString, char => char.charCodeAt(0));성능 차이가 나는 이유1. 내부 구현 최적화수동 반복문의 처리 과정:JavaScript 인터프리터가 각 반복을 처리매번 조건 확인 (i )개별 인덱스 접근과 할당증가 연산 (i++) 반복Uint8Array.from()의 처리 과정:네이티브 C++ 코드로 구현벡터화된 연산 가능 (SIMD)메모리 접근 패턴 최적화루프 언롤링 자동 적용2. JavaScript 엔진 최적화V..
TypedArray와 일반 배열과의 성능 차이 정리
·
개발 아카이브/Javascript
protobuf를 알아보다가 Uint8Array를 알게되고, 그러다가 TypedArray을 알게 되었다.자바스크립트 쓰면서 타입이 없어 비효율이 많다는 점을 내면속에 알고만 있었는데, 이런 부분을 보완한 Array가 있다고 해서 알아봤다.당연히 이런것들이 존재했을 법 한데, 새삼 이제야 알게된다.TypedArray는 단순히 타입이 있는것 뿐만 아니라 많은 용도들이 있는데 신기해서 가져와 봄. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray - JavaScript | MDNTypedArray 객체는 이진 데이터 버퍼에 기초하여 배열과 같은 보기를 만들어냅니다. 하지만 Typed..
protobufjs로 JSON보다 10배 빠른 데이터 통신하기
·
개발 아카이브/Javascript
https://github.com/protobufjs/protobuf.js/ GitHub - protobufjs/protobuf.js: Protocol Buffers for JavaScript & TypeScript.Protocol Buffers for JavaScript & TypeScript. Contribute to protobufjs/protobuf.js development by creating an account on GitHub.github.com Protocol Buffers란?Google이 개발한 언어 중립적 데이터 직렬화 형식JSON/XML보다 3-10배 빠름더 작은 크기로 데이터 전송성능 중요한 애플리케이션에서 사용.proto 파일 구조package ecommerce; // 네임스페..
Claude Code Usage Monitor for macOS - 메뉴바에서 클로드 토큰 사용량 실시간 모니터링
·
개발 아카이브/개발 관련 지식
Claude Code를 쓰다 보면 토큰 사용량이 궁금한데, 이걸 macOS 메뉴바에서 실시간으로 볼 수 있게 해주는 앱이다. Swift로 만들어진 네이티브 macOS 앱이고, 원래 Python 버전(Claude-Code-Usage-Monitor)을 macOS용으로 포팅한 거라고 한다.주요 기능들실시간 모니터링6초마다 업데이트토큰 사용량을 색깔별로 표시 (초록/노랑/빨강)메뉴바에 사용률 퍼센테이지랑 번레이트 이모지 표시번레이트 추적최근 1시간 기준으로 얼마나 빠르게 토큰을 쓰고 있는지 보여줌이모지로 속도 표시:🐌 100 토큰/분 미만 (여유로움)🚶 100-300 토큰/분 (보통)🏃 300-600 토큰/분 (좀 빠름)🚗 600-1000 토큰/분 (꽤 빠름)✈️ 1000-2000 토큰/분 (빠름)🚀 ..
크롬 AI 번역 API - Translator API
·
개발 아카이브/Javascript
해당 내용은 포스팅 시각 기준 실험적인 기능입니다. 그래도 좋은 기능이 나와서 포스팅합니다.해당 기능은 MDN에 포스팅 되어 있지만, 크롬에서만 선두적으로 개발해둔 실험적 기능이라 다른 브라우저에서는 지원하지 않습니다.그래도 크롬 기반에서는 쉽게 번역 기능을 구현할 수 있겠네요. https://developer.mozilla.org/en-US/docs/Web/API/Translator Translator - Web APIs | MDNThe Translator interface of the Translator and Language Detector APIs contains all the associated translation functionality, including checking AI model a..
ASCII Art - 터미널에 힙한 텍스트 그림 넣기
·
정보/유용한 사이트
최근에 oh my zsh를 설치하면서, 터미널을 설치하면 위와 같은 아스키 아트가 나온다.우리 회사에서도 flow api 서버에서는 터미널에서 서버를 실행하면 위처럼 아스키 아트가 나온다.그것보고 내가 예전에 LLM 서버에도 적용한적 있었다. 간단간단하게 만들었는데, 도커 터미널에서 보니 뭔가 깨지는 느낌이 들어서 아쉽다.AWS 서버에서 보면 예쁘게 잘 나온다. 그래서 많은곳의 터미널이 예뻐지고 힙해지길 바라며, 이 아스키 아트를 만들 수 있는 사이트를 공유해볼까 한다.https://patorjk.com/software/taag/ Text to ASCII Art Generator (TAAG) patorjk.com 이 링크로 들어가도 좋고, 구글에 ASCII Art Generator 라고 치면 나온다. ..
FossFlow - Isometric Diagramming Tool
·
정보/유용한 사이트
FossFlow는 워크플로우를 쉽고 직관적으로 관리할 수 있게 도와주는 오픈소스 툴이다. 처음엔 가볍게 둘러보려는 마음으로 살펴봤는데, 예상보다 더 깔끔하고 직관적인 인터페이스가 인상적이었다. 보통 워크플로우 관리 도구는 처음에 설정이 복잡하거나 학습이 오래 걸리는 경우가 많은데, FossFlow는 그런 어려움 없이 금방 사용할 수 있었다.사용 경험 및 주요 기능개발자 문서를 만들때 유용하겠다 싶었다. 보통 excalidraw를 이용해서 다이어그램을 그리거나 아키텍처를 그렸는데, 특히 아키텍처 그림을 그릴때 FossFlow 쓰는게 좋을것 같다고 생각이 들었다. 사용성에 있어서 드래그 앤 드롭 방식으로 간편하게 노드를 추가하거나 연결할 수 있는 부분이 매우 편리했다.복잡한 프로세스를 설정할 때도 흐름이 명..
iCalendar 기본 문법
·
개발 아카이브/개발 관련 지식
최근에 캘린더 기능을 만들게 되면서, 구현하다 보면 반드시 만나게 되는 것이 있습니다. 그건 바로 iCal(iCalendar) 문법이라는건데, 연동을 생각하는 캘린더 서비스를 만든다면 무조건 알아야 할 내용입니다. 각 캘린더 서비스들이 서로 연동을 위해 iCal이라는 특별한 형식의 데이터를 주고 받습니다. 실제로 많은 문법과 기능들이 있는데, 이번 포스트에는 가볍게 다뤄보겠습니다. 나중에 기회되면 더 자세하게 다뤄보겠습니다.왜 iCal을 알아야 할까?대부분의 캘린더 시스템이 iCal 형식으로 데이터를 주고받습니다. 다른 형식도 있지만 대체적으로 iCal을 사용합니다.구글 캘린더, 애플 캘린더 등과의 연동이 필요한 경우 필수적입니다.표준화된 포맷으로, 한 번 익혀두면 다양한 프로젝트에서 활용할 수 있습니다..
Google Apps Script에 ChatGPT 연동하기
·
개발 아카이브/Javascript
구글 앱 스크립트 (Google Apps Script)구글 앱 스크립트는 JavaScript 기반의 클라우드 스크립팅 언어로, 구글 워크스페이스 제품군(Google Sheets, Docs, Forms 등)을 자동화할 수 있는 도구입니다. 이를 통해 사용자는 다양한 작업을 자동화하고, 반복적인 작업을 쉽게 처리할 수 있습니다. 구글 앱 스크립트로 스프레드시트 자동화구글 스프레드시트에서 반복적인 데이터 입력이나 복잡한 데이터 처리 작업은 시간이 많이 소요될 수 있습니다. 구글 앱 스크립트를 사용하면 이러한 작업을 자동화하여 생산성을 높일 수 있습니다.예를 들어, 데이터를 자동으로 정리하거나 특정 조건에 따라 데이터를 필터링하는 스크립트를 작성할 수 있습니다. 구글 스프레드시트 자동화에 ChatGPT를 사용하..
fffuel - Free SVG generators, color tools & web design tools
·
정보/유용한 사이트
https://www.fffuel.co/ Free SVG generators, color tools & web design tools🚀 On fffuel you'll find a collection of free SVG makers to create cool backgrounds, seamless patterns, gradients, textures, shapes and blobs. Use the generated vector patterns directly on the web or in your favorite design app. 🤹‍♂️ The SVG andwww.fffuel.co 웹을 꾸미다가 SVG이면서 다양한 패턴이 필요해 찾다 좋은 사이트를 발견했습니다. 사이트에서 "fffuel은 그라데..
[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법
·
개발 아카이브/Javascript
Sveltekit에서 버튼이나 a tag에 라우터 url이 걸려 있으면,그 버튼을 hover만 해도, 라우터에 걸린 +page.server.js 가 실행됩니다.위의 코드를 보면 href에 user 라우터가 걸려있습니다.user 라우터에는 +page.server.js 가 있습니다.위에서 말한대로 버튼을 hover만 해도, +page.server.js 가 실행됩니다. SvelteKit에서 버튼을 호버했을 때 그 버튼을 클릭하면,가는 페이지의 +page.server.js의 load 함수가 실행되는 것은의도된 동작입니다.  왜 그럴까요?SvelteKit이 페이지 전환을 미리 준비하기 위해 preload를 수행합니다.preload은 사용자가 링크나 버튼을 호버했을 때, 해당 링크가 가리키는 페이지를 미리 로드하여..
JavaScript에서 export { }와 export default의 차이점
·
개발 아카이브/Javascript
>> 그래서 적어본 export와 export default의 차이점!      출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fbootcamp.uxdesign.cc%2Fnamed-export-vs-default-export-in-es6-a2370b062f17&psig=AOvVaw3526ddTwrULsBlVYSnaxql&ust=1715784990773000&source=images&cd=vfe&opi=89978449&ved=0CBQQjhxqFwoTCKiR16azjYYDFQAAAAAdAAAAABAE JavaScript 모듈 시스템은 코드를 구성하고 재사용하기 위한 방법을 제공하고 있습니다.그 중 export는 2가지 방법이 있습니다. Named Export ..
가볍게 써보는 AI 개발 1차 후기
·
이야기/개발일지
24년 3월 8일부로 플로우에 AI 기능이 추가되었다. 1월 초부터 AI 기능을 만들기 시작했다. 단 2달 만에 여러 기능을 찍어내기 위해 야근도 많이 하고 고생도 많았다. 선두를 달리고 있던 부장님도 AI 개발의 길을 개척하느라 많은 고생을 하셨다. AI 개발은 우리 회사의 1분기 핵심 과제였다. 그래서 많은 주목을 받았다. 나는 이 주목받는 곳에서 일하는 것이 즐거웠다. 2달 동안 급하게 기능을 만들면서, 뭔가 부족해도 “일단 이대로 가자!” 하며 만들어진 것이 많다. 대표님이 빠른 출시를 통해 경쟁사 견제를 주 목표로 삼았기 때문에, 이해는 한다. 하지만 더 사용성이 좋은 방향으로 개선되었으면 한다. ‘임시’가 ‘완성’이 아니길 바라면서.. 배운것도 많고 배울 것도 많다. 이번 AI 프로젝트를 통해..
2023년 하반기 회고
·
이야기/개발일지
쓰고 지우고 쓰고 지우고 하다가 다시 쓴다. 나쁜말은 다 빼고 좋은말만 간단히 해보자. (그렇게 말했던 간단히는 없었다.) 사실은 23년 하반기를 좋은 말을 해보려고 해도 나에겐 정말 심리적으로 힘든 일만 있었던 것 같아서 감정이 조금 새어 있을 수 있다. 하지만 페르소나를 써서라도 웃는모습 보여주며 힘내본다. 웃으며 살다보면 그것이 어느순간 내 모습이 될 것이니 말이다! 아자아자! 먼저 회사 이야기를 하자면, 나의 하반기 회사에서 했던 일은 단 하나로 설명할 수 있을 것 같다. 유지보수!! 하반기의 반 이상은 배포담당자를 맡으면서, 최대한 서비스의 안정성을 지키기 위해 노력했다. 배포담당자 하반기에 한번 서버가 크게 멈춘적이 있다. 언제인지 자세히 기억은 나지 않으나, DB 버전을 업데이트 하면서 생긴..