kotlin-jdsl 기여 일기
Back-end/Java, Kotlin2024. 4. 6. 16:10kotlin-jdsl 기여 일기

큰 건 아니지만, 난 지금까지 kotlin-jdsl에 약 3개 정도의 작은 PR을 반영한 적이 있다. 가장 염원한 것은 중위 연산, 연산자 오버로드였지만 아쉽게도 해당 논의건은 승인되지 않았다 .. ㅎ 이 글은 기여하면서 느끼고 배운 것들에 대해 작성했다. 느낀 것 코드 내부가 정말 이쁘다 아름답지 않은가? 얼마 전에 조사한 JPA 내부구조와 비교하면 정말 아름답다.. (미안하다 하이버네이트) 처음보는 데도 어떤 클래스가 무슨 역할을 하는지 지례 짐작하는 것이 어렵지 않았다. 무엇보다 OCP를 바로 떠올릴만큼 확장에 유연했다. 아, 그리고 Lint라던가 Commit 규약이라던가 하나라도 안 맞으면 PR을 못올린다 ㅠ 잘 체크해볼 것! 정성이 담긴 리뷰 우테코 이후 이런 리뷰는 오랜만인 것 같았다. 거기선..

코틀린에서는 일급 컬렉션이 필요할까
Back-end/Java, Kotlin2023. 12. 7. 17:05코틀린에서는 일급 컬렉션이 필요할까

발음 때문인지 난 코틀린하면 코뿔소가 생각났다... 블로그를 많이 못해서 예전에 github 블로그에 기술한 것을 다시 정리 겸 가져 왔다 https://progress0407.github.io/backend/2023/02/18/%EC%BD%94%ED%8B%80%EB%A6%B0%EA%B3%BC_%EC%9D%BC%EA%B8%89%EC%BB%AC%EB%A0%89%EC%85%98.html 위와 같이 의문형으로 적은 것은 First-Class Collection을 창안한 사람의 생각을 정확히 알지는 못하기 때문이다 그렇지만 기억에 따르면 동욱님의 글을 보면서 파악한 것은 일급컬렉션은 아래의 정의를 따른다 - "List of 객체"를 감싼 행동을 정의할 수 있는 새로운 클래스 단순하게 말해 아래와 같은 것이 일급..

IDEA에서 Kotlin을 사용 중 감동한 건에 대해서... (null 검증)
Back-end/Java, Kotlin2023. 5. 21. 20:58IDEA에서 Kotlin을 사용 중 감동한 건에 대해서... (null 검증)

주말에 코틀린 코딩 중에 감동을 했다... 바로 젯브레인 IDEA에서 리펙터링 추천을 한 거에 대한 건데... 평소 같으면 Optional의 orElseThrow를 통해서 예외 처리를 했겠지만, 코틀린의 문법 + IDEA의 지원을 믿었나 역시나 다를까... 위 캡쳐처럼 엘비스 연산으로 줄일 수 있는데, 안하겠냐고 추천을 한다!! 역시... 흑흑 감동 젯브레인과 그의 자녀 코틀린.. 난 오늘도 감동하면서 코딩을 한다 (쮸르륵...)

Java ZoneDateTime 에 대해서
Back-end/Java, Kotlin2023. 5. 8. 23:34Java ZoneDateTime 에 대해서

GMT, UTC부터 이해하면 많은 도움이 된다 우선 둘은 거의 동일한 용어이다 (실제로는 둘 사이의 시차가 몇미리초 정도 차이가 난다고 한다) 초기에는 영국에서 그리니치 천문시를 만들고 (GMT) 후에 UTC가 되었다 영국시 기준으로 0시라 가정할 때 우리나라는 상대적으로 +9시간을 더해서 시차를 계산한다 단순히 일시를 나타내는 LocalDateTime과는 달리 ZoneDateTime은 Zone에 따른 시차까지 고려한다 ZoneDateTime은 크게 두가지 정보 ZoneId는 아시아/서울 등의 지역 정보 ZoneOffset은 +9 등의 단순 시각 정보를 갖는다 ZoneOffset은 ZoneId를 상속한다 존이 다르더라도 epoch 시각으로 변환해서 대소관계를 비교할 수 있다 (isEqual()를 사용해야..

Back-end/Java, Kotlin2021. 7. 14. 09:55Thread에 대한 것들

쓰레드 생성은 아래와 같다. 방식은 크게 두가지이다. class ThreadSapmle extends Thread { @Override public void run() { StringBuffer sb = new StringBuffer("Running ThreadSample "); } } public Class Main { public static void main(String[] args) { ThreadSample th = new ThreadSample(); ThreadSample th2 = new ThreadSample(); th.start(); th2.start(); } } class RunnableSapmle implements Runnable { @Override public void run()..

Annotaion 처리부 구현 (값 주입, Trim)
Back-end/Java, Kotlin2021. 4. 27. 23:26Annotaion 처리부 구현 (값 주입, Trim)

[Object].getClass() : 해당 클래스의 인스턴스를 만들 때 필요한 정보를 리턴한다. .getClass() 와 .class는 비슷한 역할을 하는 것으로 보이는데, 두 개의 차이는 전자는 RunTime에 결정되고 후자는 CompileTime 에 결정된다고 한다. 아래는 구현부이다 ! 리펙터링이 필요하지만.. 오늘은 다메다메.. 값 주입 @Retention(RetentionPolicy.RUNTIME) public @interface InjectionNumber { int data() default -1; } public class Target { @InjectionNumber(data = 1234) int a; int b = 123000; String c; } public class Main {..

Reflection : 그누므 리플렉션이 모야 !!  (ft. 애노떼이숀, 쩨네릭)
Back-end/Java, Kotlin2021. 4. 8. 21:26Reflection : 그누므 리플렉션이 모야 !! (ft. 애노떼이숀, 쩨네릭)

주위에서 하두 리플렉션 얘기를 많이 들어서 이참에 한번 보기로 햇다. 5초식 리플렉션을 이용한 리팩토링 완성ㅎ - 자바로 PC방 프로그램만들기 (opentutorials.org) 5초식 리플렉션을 이용한 리팩토링 완성ㅎ - 자바로 PC방 프로그램만들기 ㅎㅎ 이것도 곧 올리겠습니다. 리플렉션을 어떻게 설명할까하다가.. 지쳐가지고 중간에 업로딩을 안했었거든요. ㅠㅠ 제작에 꼭 필요한 부분은 아니지만, 리팩토링하다가 재밌어서 올려봅니 opentutorials.org (참고 !! - 감사합니다 ㅎㅎ) 한 클래스가 다른 클래스의 정보를 열람할 수 있는 것을 말한다. 이게 가능한 이유는 컴파일 후에 바이트코드가 static영역에 저장되는데 클래스 이름을 안다면 이 영역을 조사하여 알아낼 수 있다는 것이다. pack..

Back-end/Java, Kotlin2021. 3. 29. 21:15[디자인 패턴] Observer

public interface BroadcastStations { List subscriberList = new ArrayList(); default void register(FamilyHouse fm) { subscriberList.add(fm); String msg = String.format("[%s] : %s님이 구독하였습니다.\n" , this.getClass().getSimpleName() , fm.getClass().getSimpleName()); out.println(msg); } } class Netflix implements BroadcastStations { } class Watcha implements BroadcastStations { } 해당 interface를 상속받아서 Net..

[디자인 패턴] Strategy  (ft. 오바와치)
Back-end/Java, Kotlin2021. 3. 27. 13:19[디자인 패턴] Strategy (ft. 오바와치)

회사에서 !! 갓사수의 Strategy 패턴을 보고 feel을 받은 나는 오버워치의 에코 영웅을 대상으로 전략 패턴을 작성해 보았다. 오버워치의 4번째 옴닉 영웅인 에코는 자신을 상대 영웅으로 복사하여 전투에 임할 수 있다. public interface Echo { public void attack(); public OverwarchHeros getSymbol(); } 에코 인터페이스는 공격과 심볼을 표시할 수 있다. public enum OverwarchHeros { H01("Soldier76"), H02("Reinhardt"), H03("Tracer"); private String name; OverwarchHeros(String name) { this.name = name; } public Str..

Back-end/Java, Kotlin2021. 3. 14. 23:53json인듯 아닌듯 한 데이터를 jsonParsing하기

여러 개의 파일을 읽어 들여서 json인듯 아닌듯 한 파일을 읽어서 json 데이터로 가공한 뒤에 json으로 읽어서 특정 조건에 맞는 데이터를 추출한 다음에 엑셀 장표에 옮기면 된다. package jsonParser; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FilenameFilter; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json..

외부에서 다운받은 jar 추가하기
Back-end/Java, Kotlin2021. 3. 14. 21:08외부에서 다운받은 jar 추가하기

module path에 추가하면.. 왠지 인식을 못한다. classpath 누른 다음 Add External JARs... 를 하자

Back-end/Java, Kotlin2021. 3. 7. 13:52스프링 위에 공통 클래스를 만들기

우선 싱글톤 패턴을 직접 만들어서 스프링 클래스 위에 올리려고 하였으나... 계속 mapper를 주입받지 못하기 때문에 스프링의 IoC 컨테이너에 올려주는 것으로 전략을 바꾸었다. 1. 초기 버전 -- mapper 주입 안됨 (아마 static이라서 그런것으로 보인다...) @Component public class VoUtil { private VoUtil() { } // 싱글턴 private static class LazyHolder { public static final VoUtil INSTANCE = new VoUtil(); public final static void setProperty(BoardMapper _mapper) { mapper = _mapper; } } public static V..

image