안녕하세요, 하마연구소 입니다.Base64 인코딩은 바이너리 데이터를 사람이 인지할 수 있는 ASCII 문자로 표현하기 위한 방법입니다.영어 알파벳 대/소문자, 숫자, +(더하기), /(나누기,슬래시) 그리고 필요하다면 =(equal)만은 사용한 결과이기에 HTML이나 CSS 내부에 포함된 이미지 데이터 URL path 또는 쿼리파라미터 값으로 많이 사용됩니다.일반적으로 바이너리 데이터를 Base62로 인코딩하면 결과물이 다소 길어서 용량은 증가하겠지만, 일반 텍스트 편집기로 확인할 수 있다는 장점이 있습니다.또한 인코딩된 값을 직접 보면 무슨 의미인지 파악할 수 없으며 랜덤한 문자열로 보이기에 콘텐츠의 ID로 사용하기도 합니다.YouTube의 영상 ID가 이렇게 사용된 예시입니다.https://namu..
안녕하세요, 하마연구소 입니다.약 30여 년 전 컴퓨터를 처음 다루던 1990년대,저의 머리속에 남아있는 키보드는 이런 모양이었습니다.지금보면 투박하고 무뚝한 디자인에 각도를 조절할 수 있는 발과 함께 흰색 내지 회색 계열,그리고 작은 백스페이스키에 엔터키는 진짜 엔터키 모양,또한 구불구발한 선,윈도우키가 없는 101키!이것이 제가 기억하는 키보드 입니다.저는 아날로그 세계를 시작으로 현재 디지털 세상을 살아가고 있습니다.어린시절 아날로그 세계의 감성이 남아있습니다.저는 키보드에 전혀 관심이 없습니다.집에 있는 윈도우PC에는 적당히 저렴한 키보드가 연결되어 있고,회사에서 사용하는 맥북은 기본 내장 키보드를 사용합니다.애플의 키보드 연구원이 엄청난 노력, 시간, 비용을 들여 개발했을텐데 품질이 좋겠죠.최근..
안녕하세요, 하마연구소 입니다.ChatGPT라는 LLM 기반의 AI 서비스가 나오면서 저의 코딩 습관도 변하고 있습니다.기존에는 막히는 코딩을 해결하기 위하여 구글이나 포털에서 단순 검색하여 나와 동일하거나 비슷한 상황을 찾았고,그 찾은 게시글에서 해결방법이 있으면 막힌 것을 푸는것이고 아니면 다시 또 검색을 하였습니다.그러나 이제는 그냥 물어봅니다.ChatGPT에게...아니면 개발툴에 연동된 Copilot이 도움을 줍니다.월 몇 십 달러짜리 비서가 항상 대기하고 있는거죠.이제는 ChatGPT를 사용하는 것이 너무나 자연스러우며기존처럼 구글링하는 빈도가 현저하게 줄었습니다.포털 검색이 없으면 인터넷 사용하기 힘든 것처럼이러다가 AI 없으면 코딩을 못하는 날이 다가올지도 모르겠네요.AI 시대에 어떻게 살아..
안녕하세요, 하마연구소 입니다.spring-data-jpa에서 entity의 CUD 이력을 남기기 위한 audit 기능을 제공해줍니다.몇몇 설정한하면 아주 편리하죠.https://docs.spring.io/spring-data/jpa/reference/auditing.html Auditing :: Spring Data JPASpring Data provides sophisticated support to transparently keep track of who created or changed an entity and when the change happened.To benefit from that functionality, you have to equip your entity classes with a..
안녕하세요, 하마연구소 입니다.저는 갤럭시워치를 사용하고 있습니다.이유는?휴대전화가 갤럭시이기 때문이죠.만족스럽지 않은 것도 있지만 나름 잘 활용하고 있습니다.그런데 시계화면이 저에게 딱 맞는 것이 없어서, 기본 페이스로 이것저것 조절해가며 아쉬운데로 사용하고 있습니다.스토어에서도 만족 할만한 것은 아직 못찾았고요.그래서 만들기로 했습니다.생각보다 어렵지 않네요.삼성에서는 Watch Face Studio 라는 개발툴을 제공해줍니다.그리고 가이드도 있고요.https://developer.samsung.com/watch-face-studio/ko/overview.html 워치 페이스 스튜디오 | Samsung DeveloperThe world runs on you.developer.samsung.com 제가..
안녕하세요, 하마연구소 입니다.Kotlin 버전 2.0.0이 공식으로 출시되었습니다.https://kotlinlang.org/docs/whatsnew20.html What's new in Kotlin 2.0.0 | Kotlin kotlinlang.org 아직 무엇이 변경되었고, 얼마나 좋아졌는지 정확하게 모릅니다.솔직히 관심이 예전만큼 없습니다.지금도 만족하고 있거든요.그만큼 요즘은 코틀린의 깊숙한 기능을 사용하지는 않습니다.어차피 Java 기반의 어플리케이션 위에서 코딩의 편리성이나 효율성을 위하여 코틀린이라는 문법을 사용할 뿐입니다.그래도 시간내서 살펴보아야겠습니다.감사합니다.
안녕하세요, 하마연구소입니다.요즘 개인 프로젝트를 시작했으며 HTML 파싱이 필요하였습니다.고민하지도 않고 jsoup을 사용하고 있습니다.역시 부족한거 없이 잘 사용하고 있습니다.https://jsoup.org/ jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safetyjsoup: Java HTML Parser jsoup is a Java library that simplifies working with real-world HTML and XML. It offers an easy-to-use API for URL fetching, data parsing, extraction, and manipulation usin..
안녕하세요, 하마연구소 입니다. Java에서 프로그래밍 할 때 편의를 위하여 Lombok을 거의 필수로 이용합니다. 보통 클래스변수의 getter()와 setter()를 자동으로 생성해주는 @Data 어노테이션을 붙이는 것을 많이 사용합니다. 그리고 @Log, @Slf4j 등 logger 객체를 쉽게 얻을 수 있는 기능을 제공하는데, 꽤 유용합니다. 코드가 많이 간단해집니다. Kotlin으로 프로그래밍하면서 이와 같은 logger 객체를 쉽게 얻어주는 라이브러리를 찾아보았지만, 찾지 못했습니다. 최근 Kotlin 버전에서는 Lombok을 공식적으로 사용할 수 있게 되었습니다. (https://kotlinlang.org/docs/lombok.html) 하지만 아직(현재버전 1.5.21) @Log, @Log..
JSONP 처리를 기본 기능으로 제공하였지만, 스프링부트 2.1(스프링프레임워크 5.1)부터 없어졌다. 이미 Deprecated 처리되어 언제가는 없어질 것을 예상했지만, 담당하고 있는 시스템에서는 아직 JSONP가 필요하였다. 없어진 AbstractJsonpResponseBodyAdvice.java 소스: https://github.com/spring-projects/spring-framework/blob/5.0.x/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractJsonpResponseBodyAdvice.java spring-projects/spring-framework Spring Fra..
스프링 기반의 어플리케이션을 개발할 때, 환경설정으로 보안정보를 다루기 위하여 Vault를 이용하게 된다. 일반적으로 가장 간단하게 Vault를 이용하는 방법은 @VaultPropertySource 또는 @VaultPropertySources 어노테이션을 사용하는 것이다. import org.springframework.context.annotation.Configuration; import org.springframework.vault.annotation.VaultPropertySource; @Configuration @VaultPropertySource(value = { "secret/hippolab/wallet1", "secret/hippolab/wallet2", "secret/hippolab/wa..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.