전체 글

여러분 안냐세욤
· 미분류글
이번 주제는 주력 언어에 대한 생각을 해보는 좋은 시간이었다. 자바로 꾸준히 개발을 하면서 머릿속에 자리하게 된 하나의 개념이 있다면, 추상화다. [특징] 자바 하면 떠오르는 것은 객체지향이다. 나는 스파게티처럼 어지러운 코드를 의식적으로 지양한다. 그래서 코드를 짜기 전 큰 구조를 그려보는 것을 좋아하는데, 이것이 자바가 지향하는 객체지향과 유사한 맥락이라고 생각한다. 결국 프로그램이 깔쌈하게 돌아가려면 분리를 잘 해나가야 한다. 분리를 잘 하다보면 결국 추상화를 제대로 하게 되는 것 같다. 자바 프로그래밍을 하면서 이 추상화라는 것이 참 매력적이고 주요한 개념임을 느꼈다. 왜냐하면 프로그래밍뿐만 아니라 다른 학문에서 배우는 새로운 개념들, 아니면 일상생활에서 겪는 사건을 머릿속에 입력할 때, 추상화를..
(24.04.00) Item68: 일반적으로 통용되는 명명 규칙을 따르라. ## (24.04.00) Item67: 최적화는 신중히 하라. ## (24.04.00) Item66: 네이티브 메서드는 신중히 사용하라. ## (24.04.00) Item65: 리플렉션보다는 인터페이스를 사용하라. ## (24.04.16) Item64: 객체는 인터페이스를 사용해 참조하라. ##클래스를 타입으로 사용 금지 리턴, 변수, 필드, 파라미터 타입 모두 해당. 인터페이스 타입으로 선언해라. ##다만 구현체를 갈아끼울 때 조심하자. 예를들면 A클래스의 반복자의 특정 순회 정책에 따라 주변 코드가 동작하는 상황에서, B클래스로 갈아끼우면 순회 순서를 보장하지 않아 문제가 될 수 있다. 갈아끼울 구현체는 같은 기능을 제공하고 ..
· 미분류글
좋은 기회로 에 참여하게 되었다. 첫번째 글 주제는 "나는 왜 개발자가 되고 싶을까"... 허억.. 원래 나였으면 블로그에 공개하기에는 살짝(매우) 어려운 주제지만 이참에 박제해보는 것도 나쁘지 않을 듯하다. . . 아래 순서로 얘기를 해보겠다. 1. 성향 얘기 (주저리) 2. 결정 시점 3. 개발자가 되고싶은 이유 1. 성향 얘기 -- 창작 무엇이든 만들기를 좋아했다. 나름의 창작을 좋아했다고 할 수 있겠다. 손재주도 좋았다. 종이접기, 모형 만들기, 나만의 미니어쳐 (ex: 햄스터 마을...ㅋㅅㅋ 윽 부끄러), 나만의 그림 등.. 나름의 퀄리티에 신경쓰면서 누구나 우와아 할 만한 작품을 짜잔 하는 것을 좋아했다. 창의적이고 섬세한 작품을 내는 것을 뿌듯해했다. 특히 누구나 칭찬할 만한 결과물을 말이다..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
· JAVA
우리 서비스에서 일관된 데이터를 불러올 때 쿼리가 나가거나 재계산하는 것이 거슬려서 이번에 스프링 캐시를 도입해봤다. 스프링은 캐시 기능을 제공한다. 스프링 캐시 기능은 트랜잭션처럼 AOP를 통해 구현했기에 어노테이션을 사용하면 된다. 일단 간단히 어노테이션만 추가해뒀다. 현업에서 EhCache, Redis, Memcached를 많이 사용하는 것 같은데 일단은 나중에 공부 및 개선하도록 하고, 이번에는 찍먹해볼 겸 어노테이션을 통한 기본기본 캐시만 해보겠다. . . 일단 평점이랑 메뉴정보만 캐시해뒀다. 곧 코드 구조도 리팩터링 예정이라.. 남은 리뷰캐시는 그때 다시 생각해보기로 한다. 이제 로그에 잡다한 쿼리문이 안 보여서 좋다. 🪄공부 ✨ 캐시 저장소 두가지 구성방식이 있다. 하나는 JVM 로컬캐시에 ..
· JAVA
계기: 간만에 이펙티브자바 복습했다. 아래 내용을 프로젝트에 적용해보기로 결정했다! https://splendidlolli.tistory.com/672 [이펙티브 자바] null이 아닌, 빈 컬렉션이나 배열을 반환하라 ─ 8장:메서드:Item54 null이 아닌, 빈 컬렉션이나 배열을 반환하라 null이 아닌 빈 배열이나 컬렉션을 반환하라. null을 반환하는 API는 사용하기 어렵고, 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다. splendidlolli.tistory.com 🪄 리팩터링 케이스 1. return값을 사용하지 않는데 null 반환을 금지해야 할까? 아래와 같이 리턴값을 사용하지 않는 메서드라도, null을 반환하지 않게 했다. (코드의 일관성, 미래의 안정성을 근거로 ..
· JAVA
🪄 발단카카오 로그인을 구현하면서 클라이언트로부터 token 값을 넘겨받는 api가 많이 생겼다. 현황은 이 token을 검증하지 않고 있었다. 그러나 안전한 서비스를 제공하기 위하여 우리가 가진 jwt secret key로 token을 검증할 필요가 있어보였다. 그래서 오늘 실행에 옮겼다. 사실 지금처럼 검증하지 않더라도 유효하지 않은 token이 넘어올 경우 그냥 개인정보를 제공하지 않도록 처리되어있어서 현재 우리 서비스에 token 검증은 필요하지 않을 수 있다고 생각할 수 있다. 그렇지만, 유효하지 않은 토큰이 넘어올 경우에 대한 관리를 일관된 장소에서 할 수 있다는 장점이 있다고 보았다. 더 나아가, 유효하지 않은 token일 경우에 수행되지 않아도 될 불필요한 비즈니스 로직, 디버깅 비용을 감..
🪄 문제점ssh 접속한 터미널을 종료시키면, 터미널에서 실행한 프로그램도 함께 종료된다. 예를 들어 ssh 접속 후 python3 test.py로 py를 돌려놓은 뒤 터미널을 끄면 py 프로그램도 꺼진다. 🪄 이유SIGHUP(signal hang up) 때문이다. 이는 hang up 즉 접속을 끊을 때, 터미널과 연결이 끊어졌을 때의 시그널이다. 그래서 현재 세션 종료를 통해 SIGHUP 시그널을 쭈루룩 전달받은 프로세스는 종료된다. 다음은 해결 방법이다. 🪄 SIGHUP 시그널 피하기! (백그라운드로 실행)백그라운드로 실행하여 내가 원하는 프로세스가 SIGHUP을 받지 않도록 하면 된다. 그러한 명령어인 nohup가 있다. 나는 bert_server.py가 SIGHUP을 받지 않도록 백그라운드로 실행하..
히어로맛쿠키
자꾸 생각나는 체리쥬빌레