Development 120

Brackets) Unable to access the extension registry. Please try again later. 에러 해결

문제 Brackets 에서 플러그인을 설치하려고 하는데, Available에 접속이 되지 않았습니다. 구글에 검색해보니 Adobe가 망했다는 등 말도 안되는 말이 많았는데요, 어쨌든 플러그인을 설치 해야 하는 상황이었기 때문에 문제를 해결 해야 했습니다. 원인 최근 설치 파일에서 extention manager 부분의 기능이 제대로 동작하지 않고 있다고 하는데요, Adobe의 새로운 도메인이 SSL 구현으로 인해서 정상적으로 이전이 되지 않아서 생기는 문제 입니다. 해결 config.json 파일을 편집해서 간단하게 에러를 해결 할 수 있습니다. 단계별로 사진과 함께 올릴테니 천천히 따라하시면 누구든 어렵지 않게 해결 하실 수 있습니다. 1. config.json 파일 찾기 일단 Applications ..

일간 에러 2021-11-12

save(object) 메서드 먹통 문제 dao.save(object)를 아무리 호출해도 저장이 되지 않아 테스트 케이스를 통과 하지 못하던 에러. 저장만 안되고, 기존에 이미 있던 DB를 조회 하거나 수정 하는데는 문제가 없어서 당황스러웠다. 원인 Spring Data JPA를 사용할때는 save 메서드를 당연하게 사용했는데, 이번에는 다중 쓰레드에서의 DB 커넥션을 관리해줘야 하는 상황이다 보니, Hibernate가 제공하는게 아닌 다른 구현체를 상속해서 데이터 접근 객체를 만들어 사용하고 있었다. 하다 하다 안되어서 메서드 목록을 보니 create 메서드가 따로 있기에, 그럼 save와 어떤 식으로 차이가 있는지 살펴보려고 코드를 타고 들어가니.. public abstract class Abstra..

Rebase 활용해 Commit 합치기

Rebase Rebase는 한 branch에 있는 내용을 다른 branch에 병합하는 두가지 Git 유틸리티 중 하나 입니다. 다른 하나는 이미 모두가 사용하고 있는 git merge 입니다. merge는 항상 이후로 향하는 변경인 반면에, rebase는 git의 history를 다시 작성 하는 강력한 기능을 가지고 있습니다. Rebase는 manual과 interactive 이렇게 두 가지 메인 모드를 가지고 있습니다. 여러가지 역할이 가능 한 rebase 지만 이번 posting에서는 이미 커밋한 몇개의 커밋을 하나로 합치고 새로운 커밋 메시지를 남기는 용도로 사용 해 보겠습니다. 문제 커밋을 했는데 깜빡한게 있는 경우가 생겼습니다. 19 분 전에 커밋을 하자 마자 코드가 너무 지저분 하다는 생각이 ..

Development/Git 2021.11.03

Programmers Weekly Challenge 12주 후기

12주의 Programmers Weekly Challenge 가 끝났습니다. ​ 취업 하자마자 위클리 챌린지가 시작 된 덕에, 매주 월요일에는 점심 식사를 빠르게 마친 후 프로그래머스에 새로 공개된 문제를 푸는 재미로 한주를 시작했었는데. 문제를 기다리던 즐거움이 사라진다는게 상당히 아쉽습니다. 한편으로는 취업한지 어느 덧 12주가 흘러가서. 12주동안 스스로의 성장에 대해도 되돌아보는 시간도 되었습니다. ​ 갑자기 2,4,6,7 주차 총 4개의 문제가 사라져 버려서 프로그래머스에 문의도 해 보았는데요 내부 사정이라고만 답을 해 주었습니다. 아무래도 라이선스 문제가 있지 않았을까 추측이 되지만 정확한 이유는 모르겠습니다. ​ 그래도 다행인건 문제 풀이를 했던 코드들은 모두 남아 있습니다. 문제까지 남기지..

Development/DevLife 2021.10.30 (1)

SSH를 이용한 Proxy, Dynamic Port Forwarding (SOCKS)

Dynamic Port Forwarding 을 이용하면 ssh client의 로컬에 SOCKS 프록시 서버로 동작하는 소켓을 만들 수 있습니다. 클라이언트가 해당 포트에 접속하면, 그 연결은 리모트(ssh server) 머신으로 포워딩 되며, 목적지의 dynamic port로 전달 됩니다. 이 때, SOCKS proxy를 사용하는 모든 어플리케이션은 SSH 서버에 접속되며, 서버는 모든 트래픽을 실제 목적지로 전달 합니다. Linux, macOS 등 Unix 시스템에서는 아래와 같은 방법으로 dynamic port forwarding(SOCKS)을 생성 할 수 있습니다. ssh -D [로컬아이피:]로컬포트 [USER아이디@]SSH서버 ​ 바로 실습 해 보겠습니다. 아래의 주소의 curl을 보내면 외부 아..

Development/DevOps 2021.10.28

JAVA로 알아보는 힙 (Heap) 자료구조

Heap Heap은 최소값 및 최대값을 최대한 빠르게 찾아내기 위해 특별히 고안된 자료 구조 입니다. 완전 이진트리(마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 트리의 형태)를 기본으로 하고 있으며, 그 목적에 걸맞게 두개의 타입으로 나뉩니다. Max-Heap Max-Heap 에서 root 노드의 key는 무조건 해당 노드의 자식 노드들의 key보다 크거나 같습니다. 또한 같은 속성이 모든 sub-tree 들에게도 재귀적으로 적용됩니다. 간단히 말해 Max-Heap 트리에서 자식 노드에 딸린 트리 하나 하나가 모두 Max-Heap의 조건을 만족합니다. Min-heap Min-Heap 에서는 반대로 root 노드의 키값이 모든 자식들의 키 보다 작거나 같습니다. 또한 재귀적으로 자식 트리들 하나..

Github / Gitlab SSH 공개 키 등록하기

Git CLI와 GUI 저는 MacOS에서 Github repository에 접근 할 때 Github Desktop을 사용 하고 있습니다. ​ Github Desktop의 완성도는 꽤나 괜찮은 편입니다. TypeScript로 작성 되어 있으며, Release Note를 확인해 보시면 거의 1주일에 한번 꼴로 꾸준히 업데이트가 됩니다. 심지어는 Microsoft에 인수된게 무색하게 발빠르게 Apple M1 칩셋에 대응도 했습니다. https://github.com/shiftkey/desktop/ Linux 버전의 Fork도 있어서 한번 테스트 해 보려 합니다. 이렇게 빠르게 치고 올라온 배경에는 Github Desktop이 완전한 Open Source 라는 강점이 있습니다. 반면 atlassian의 Sou..

Development/Git 2021.09.25

나만의 라이브러리 만들어 jitPack으로 배포하고 Maven/Gradle 에서 사용하기

Intro 나만의 유틸리티 / 모듈 프로젝트를 배포 해야 하는 이유 중복 코드 프로젝트를 진행하다 보면 여러 프로젝트 에서 공통으로 사용되는 유틸리티성 클래스를 만들 때가 있습니다. Apache의 Commons같은 경우가 재 사용 가능한 자바 기반의 컴포넌트들을 아놓은 통합 프로젝트로서 그런 용도로 사용됩니다. 하지만 모든 사용자에게 맞는건 아니여서 누구든 자주 사용하던 자신만의 유틸성 클래스를 꼭 만들게 되는데요. 여기저기 사용 된다고 해서 한번 만든 유틸성 클래스를 여러곳에 복사해서 붙여넣으면, 작업하다가 어디에선가 문제가 발견되었을때 여태까지 해당 클래스를 사용한 모든 클래스를 하나 하나 열어 코드를 일일히 찾아서 바꿔줘야 하는 번거로움이 있습니다. 자신만의 하나의 유틸리티성 통합 프로젝트를 만들어..

Development/DevOps 2021.09.12

IntelliJ IDEA 에서 javadoc 주석 다는 단축키 지정하기

IntelliJ IDEA 에서 javadoc 주석 다는 단축키 지정하기 Eclipse에서는 Command+Option+J ( Windwos는 Alt + Shift + J) 를 입력 하면 간단하게 javadoc comment 를 달 수 있습니다. ​ 예를 들어 아래와 같은 코드가 있을 때 ​ arrayConverter 메서드에 커서를 올린 후, 해당 단축키를 입력 하면.. 아주 간단하게 javadoc을 작성 할 수 있습니다. 하지만 IntelliJ IDEA 에서는 해당 단축키가 없기 때문에 /** 를 입력 후 엔터를 치는 방식으로 입력 해야 하는데요, ​ ​ 지금부터 그 단축키를 지정 해 보도록 하겠습니다. ​ 일단 인텔리제이 에서 해당 Action의 이름을 찾아 보니 fix doc comment 라고 쓰..

블로그에 포스팅 읽는데 걸리는 시간 표시해주기 by reading-time.js

블로그에 포스팅 읽는데 걸리는 시간 표시해주기 by reading-time.js https://shanepark.tistory.com/224 에 이어지는 글 입니다. 이번에는 블로그에서 직접 적용을 시켜보도록 하겠습니다. ​ ​ 블로그 적용하기 전 화면입니다. 작성 일 우측에 공간이 꽤 남기 때문에 해당 공간이 넣으면 되겠습니다. 우측 상단 버튼을 눌러 블로그 관리에 들어 갑니다. ​ 그러고 나서 좌측의 꾸미기 메뉴에 보면 "스킨 편집" 버튼이 있습니다. ​ 거기에서는 html 편집 으로 들어갑니다. 이제 수정할 요소가 어느 부분에 있는지 찾아야겠죠? Mac 에서는 Command + Shift + C, 윈도우에서는 Ctrl + Shift + C 를 누르고 찾고자 하는 요소에 마우스를 올립니다. 제목이 있..

reading-time.js 활용해 읽는 시간 표시해주기

요즘 해외 뉴스나 블로그 등 에서 많이 사용 되고 있는 reading time 라이브러리 입니다. 보통 글의 header 부분의 제목 바로 다음에서 해당 article을 읽는데 대략 어느 정도가 걸리는지 시간으로 알려줌으로서 독자들이 빠르게 대강 읽을 지 혹은 천천히 꼼꼼히 읽을지를 그것도 아니면 안읽고 말지에 대해 결정하게끔 도와 줍니다. 보통 이런식으로 얼마나 걸릴지를 미리 가늠할 수 있게 해줍니다. 저도 reading-time.js 를 블로그에 도입 하고자 그 기능들을 확인 해 보고 있습니다. 함께 하나씩 따라 해 보면서 기능을 익혀보겠습니다. ​ https://github.com/michael-lynch/reading-time 일단 공식 Github repository에 들어가 정보를 수집 해 보..

티스토리 이미지 클릭시 원본 사이즈 모달 구현하기

티스토리 이미지 클릭시 원본 사이즈 모달 구현하기 ​ 티스토리는 기본적으로 lightbox를 지원합니다. 그런데 이게 지원하는 정도가 아니라 아에 해당 css와 js 파일을 뺄 수 없을 정도로 못 박아 두었습니다. 뭐 사용하기에만 편하면 된다 생각하는데, 문제는 제가 티스토리를 순수 markdown으로 작성하고, 첨부하는 이미지들도 Github에 올리고 링크를 연결하는 방식으로 올리다 보니, Tistory의 기본 lightbox가 작동하지 않았습니다. 그래서 저는 티스토리 블로그에서 이미지를 클릭 할 때 이미지를 크게 볼 수 있게끔 스스로 구현해야 했는데, 쉽게 될 줄 알았는데 꽤나 헤맸습니다. 처음에는 어차피 강제적으로 들어 가 있으니 lightbox를 사용 해 보려고 했는데 생각처럼 잘 되지 않았습니..

Development/HTML ⁄ CSS 2021.08.26 (6)

Sourcetree 에서 잘못된 비밀번호로 저장소 접근 안될때 해결방법

원인 소스트리에서는 한번 입력된 비밀번호가 잘못 되어도 절대 다시 입력하라고 하지 않고, 계속해서 비밀번호가 틀렸다는 메시지만 주구 장창 띄웁니다. 심지어 8월 13일 부로 Github에서는 password authentication을 공식적으로 제거하고는 personal access token 만을 사용하도록 정책을 변경 했는데요. 이미 오래전 부터 경고해왔기 때문에 갑작스러운 일은 아닙니다. ​ 하지만 Sourcetree에서는 인증에 실패하였을때 새로 비밀번호를 입력하게끔 해주지 않기 때문에 대책이 필요합니다. 예전에도 팀원 분중 한분이 소스트리에 Gitub 비밀번호를 잘못 입력했다가 로그인 되지 않아서 지웠는데도 계속해서 비밀번호 입력하라는 창은 뜨지 않고 인증 실패만 나오니까, 구글에 "소스트리 ..

Development/Git 2021.08.24 (5)

IntelliJ) 인텔리제이 세로줄 없애기

인텔리제이를 처음 사용하는데 의문의 세로줄이 있습니다. 꽤나 거슬려서 제거하는 방법을 검색하는데 잘 나오지 않아서 Stack Overflow를 검색해서 방법을 알아내어 공유합니다. 1. Preferences(Cmd+,) 에 들어갑니다. Wndows나 Linux에서는 Settings(Ctrl+Alt+S) 입니다. 2. Editor -> General -> Apperance 로 들어갑니다. 3. Show hard wrap and visual guides (configured in Code style options) 의 체크를 제거합니다. 4. OK 를 누르면 이제 세로줄이 깔끔하게 사라져 있습니다. 이상입니다.

docker container에서 localhost 접속하기 host.docker.internal

docker에서 컨테이너들이 실행 중인 서버를 바라 봐야 할 경우가 있습니다. Docker Compose를 이용해 여러개의 도커 컨테이너를 실행해서 하나의 어플리케이션을 담당한다고 했을때, 하나의 네트워크로 연결해 사용하게 되는데요. 정작 컨테이너에서 로컬 서버에는 어떻게 접근해야 할까요? 제 맥북에서 사용중인 Docker에는 컨테이너가 아직 PostgreSQL 하나밖에 없어서, 이 컨테이너를 이용해서 시도 해 보겠습니다. ​ 제 컨테이너 같이 DB 서버라면 사실 필요할 일은 없지만, Apache나 NginX 같은 웹 서버의 경우는 흔하게 필요한 상황이 발생 할 수 있겠습니다. ​ 일단 해당 Container로 접속 해 보겠습니다. GUI환경이라면 위에 보이는 CLI 버튼으로 쉽게 접속 해 터미널을 띄울..

Development/DevOps 2021.08.21