전체 글

sin prisa pero sin pausa
개발자의 삶/기타

[인프콘 2023] 인프콘 2023 후기

들어가며 https://www.inflearn.com/conf/infcon-2023 인프콘 2023 - INFCON 2023 인프런이 만드는 IT인의 축제, 인프콘으로 초대합니다. 인프콘과 함께 배우고 나누고 성장하세요. 다양한 발표 세션, 핸즈온, 네트워킹까지 만나보세요. inflearn.com 인프콘 2023에 다녀왔다. 이 글은 남들처럼 청강한 세션에 대해서 자세히 설명하거나 자료조사를 해서 뭔가를 알려주는 후기가 아닌 그냥 정말 다녀온 개인 소감이다. 운이 좋게도 공식 홈페이지에서 신청 후, 참가자로 선정되었다는 안내를 받았다 같이 신청하신 분들이 모두 선정되지 않아서 혼자 가게되었다는 점은 아쉽지만 그럼에도 갈 날을 두근두근 기다렸다. 10시부터 시작이라는 글에 느긋하게 9시 반쯤 도착하면 되겠..

개발자의 삶/Java

[Java] Comparable vs Comparator

들어가며 알고리즘 문제를 풀다가 문득 아무생각 없이 쓰던 Comparable 과 Comparator 에 대해서 찾아보던중 너무 잘 설명해주신 글을 찾았다. https://st-lab.tistory.com/243 자바 [JAVA] - Comparable 과 Comparator의 이해 아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객 st-lab.tistory.com 내 포스팅은 잊지 않기 위해 요약 및 재포스팅 할 뿐 자세한 설명은 위 링크를 보고 이해하는 편이 훨씬 좋을 것이다. Comparable? Comparator? 기본적으로 Comparab..

개발자의 삶/기타

[인프콘 2023] 참가자 선정 !! 야호 !

운좋게도 인프콘 2023 에 참가자 선정이 되었다 ! 주변에 같이 신청한 사람들이 다 선정이 안되어서 혼자 가게 생겼지만.. 그래도 기대를 안고 듣고싶은 세션을 골라봤다. 듣고싶은 세션들이 넘쳐나서 아직도 동 시간대에 뭘들어야 하나 고민중이다 ㅜㅜ 하지만 스프링의 아이돌인 영한님과 토비님의 세션은 무조건 듣기 !! 사실 다른분들의 세션도 알차보이고 궁금하지만... (영한님과 토비님을 실물로 볼수 있다니 이건 못참지) 다녀와서 후기도 남겨야겠다 기대된다 !! https://inflearn.com/conf/infcon-2023/session

사이드 프로젝트/2022 관광데이터 활용 공모전

[Oracle Cloud] Comehear Cloud 이전기(AWS > OCI) - (2)

들어가며 이전 글까지 Oracle cloud 환경에 기존 스프링 부트 프로젝트를 배포해보았다. 인스턴스 생성부터 배포까지 성공적이었지만 아직 기존 프로젝트의 환경은 aws의 s3, rds 를 바라보고있었다. 이제부터 이 부분을 바꿔본다. Comehear 프로젝트는 처음에 말했다싶이 Jpa 를 활용한 스프링 부트 프로젝트였다. Jpa를 공부할 당시 실무에 적용해보고싶은 마음에 공모전에서 사용하게 되었는데 사용할 당시에도 mybatis를 쓰지않고 객체 지향적으로 개발을 하는 것 자체가 너무나 신기하고 재밌는 경험이었다. 이번에 클라우드 환경을 이전하면서 Jpa의 매력에 대해 한번 더 빠지게 되었다. RDS > ADW 기존 AWS RDS(Relational Database Service)를 사용하던 것에서 O..

사이드 프로젝트/2022 관광데이터 활용 공모전

[Oracle Cloud] Spring boot 배포(gradle, jar) - (2)

들어가며 이전 글에서 Oracle Cloud 인스턴스를 생성했다. 이번에는 생성한 인스턴스에 Comehaer 앱을 배포해보도록 한다. 참고로 Comehear는 spring boot + gradle 를 활용한 앱이다. 우선 설치한 인스턴스에 SSH를 이용하여 접속한다. JDK 설치 1. 루트권한 전환 sudo -s 2. jdk 11 버전 다운 Comehear의 환경이 자바 11이었기 때문에 동일하게 맞춰주었다. wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz 3. 압축 해제, 설치, 이동 tar xvf openjdk-11.0.2_linux-x64_bin.tar.gz sudo mv jdk-11.0.2/..

사이드 프로젝트/2022 관광데이터 활용 공모전

[Oracle Cloud] Spring boot 배포(gradle, jar) - (1)

들어가며 이 글은 2022년 관광공모전에서 만들었던 Comehear의 서버환경을 AWS 에서 Oracle Cloud로 이전하면서 작성하게 됐다. Oracle Cloud 오라클 클라우드(Oracle Cloud)는 오라클사 관리 데이터 센터의 글로벌 네트워크를 통해 서버, 스토리지, 네트워크 애플리케이션, 서비스를 제공하는 오라클이 제공하는 클라우드 컴퓨팅 서비스이다. Oracle Cloud는 AWS와 같은 클라우드 컴퓨팅 서비스다. 이것저것 차이가 있겠지만 가장 큰(?) 차이라면 AWS는 1년 무료 프리티어를 준다면 Oracle Cloud는 평생무료 프리티어를 제공한다는 점이다. 물론 스펙차이라거나 환경차이가 있겠지만 아무래도 평생무료라는 메리트는 절대 작지않다. 무료스펙은 아래와 같다. 자세한 사항과 가..

사이드 프로젝트/2022 관광데이터 활용 공모전

[Oracle Cloud] Comehear Cloud 이전기(AWS -> OCI)

2022 관광데이터 활용 공모전을 끝낸지 벌써 1년여가 되어간다. 이번년도에도 도전해볼까 했지만 일이 바쁘기도 했고, 사랑스러운 아기가 태어나서 육아휴직 3개월 끝에 복귀했더니 접수기한이 얼마 안남았었다. 이거다 싶은 아이디어가 떠오르지 않기도 했고.. ㅎㅎ 기획서를 작성하기에는 시간이 부족했다. 이 글을 작성하게 된 계기는 1년여가 지난 지금 Comehear 서버를 배포했던 AWS의 프리티어가 다음달이면 만료되기 때문이다. 공모전 이후 꾸준히 관리나 홍보를 하지 않기도 해서 유입이나 사용량이 크진 않지만 유지만 하는데도 돈이들기 때문에 프리티어가 끝나면 내릴 생각이었다. 그러다 문득 이정도 트래픽이면 Oracle Cloud에서 평생 무료로 쓸수 있겠다는 생각에 AWS 에서 Oracle Cloud 로 서..

개발자의 삶/Java

[Java] 메소드 참조(Method References)에 대하여 ( 이중콜론 :: )

들어가며 이전 글에서는 람다식과 스트림에 대하여 알아봤다. [Java] 람다식(Lambda Expression)과 스트림(Stream)에 대하여 - (1) 들어가며 언젠가 모 기업에서 면접을 볼때 이런 질문을 받은 적이 있다. 자바 8 이전과 이후에 달라진 점에 대해서 알고 있나요? 나는 대답을 못했었던 기억이 있다. 그 기억을 더듬어 정리하는 kedric-me.tistory.com 예시 코드를 들던 중, 아무렇지 않게 작성하고 지나갔던 메소드 참조에 대해서 알아볼까 한다. 메소드 참조(Method References) 란 무엇인가 You use lambda expressions to create anonymous methods. Sometimes, however, a lambda expression d..

개발자의 삶/Java

[Java] 람다식(Lambda Expression)과 스트림(Stream)에 대하여 - (2)

들어가며 이전 글에서 람다식에 대해 알아보았다. [Java] 람다식(Lambda Expression)과 스트림(Stream)에 대하여 - (1) 들어가며 언젠가 모 기업에서 면접을 볼때 이런 질문을 받은 적이 있다. 자바 8 이전과 이후에 달라진 점에 대해서 알고 있나요? 나는 대답을 못했었던 기억이 있다. 그 기억을 더듬어 정리하는 kedric-me.tistory.com 이번 글에서는 람다식을 쓰는 핵심인 스트림에 대해 알아보려고 한다. 사실 예전에 이미 람다식과 스트림에 대한 글을 남긴적이 있었다. 다만 그때는 겉핥기 식으로 당장에 필요한 스트림 메소드만 살펴봤다면 이번에는 스트림에 대해 나름 깊이 있게 알아보고자 한다. - 스트림(Stream) '스트림' 이란, 데이터의 집합(배열이나 콜렉션 등)에..

개발자의 삶/Java

[Java] 람다식(Lambda Expression)과 스트림(Stream)에 대하여 - (1)

들어가며 언젠가 모 기업에서 면접을 볼때 이런 질문을 받은 적이 있다. 자바 8 이전과 이후에 달라진 점에 대해서 알고 있나요? 나는 대답을 못했었던 기억이 있다. 그 기억을 더듬어 정리하는 시간을 가져보려고 한다. 각 버전마다 변경점이 있지만 자바 8 버전에서의 큰 변경점이라고 한다면 람다식(Lambda Expression)과 스트림(Stream), 옵셔널(Optional) 등을 들 수 있겠다. - 람다식(Lambda Expression) 람다식은 자바 8에서 도입되었다. 람다식이란 파라미터를 받아서 값을 반환하는 짧은 코드 블록을 말한다. 람다식은 메소드와 유사하지만 이름이 필요하지 않고, 본문 내에서 바로 구현이 가능하다. - W3Schools 개념적으로는 무슨말인지 잘 이해가 안간다. 간단한 코드..

개발자의 삶/Java

[Java] 오토박싱(Autoboxing), 언박싱(unboxing)

이전 글에서 Primitive type 과 Reference type에 대해서 공부했다. 이번에는 오토박싱(Autoboxing)과 언박싱(Unboxing)에 대해 알아보자 - Autoboxing and Unboxing Oracle Java Doc에서는 이렇게 말하고있다. Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes..

개발자의 삶/Java

[Java] 원시 타입(Primitive type), 참조 타입(Reference type), 래퍼클래스(Wrapper Class)

- Java의 자료형 자바의 자료형에는 원시 타입(Primitive type), 참조 타입(Reference type) 두가지 타입이 있다. 1. 원시타입 (Primitive type) Primitive type은 stack 메모리 공간에 값 자체가 저장되며 boolean, int, long, char 등이 있다. 2. 참조타입 (Reference type) Reference type은 heap 메모리 공간에 저장되며 해당 객체들의 주소를 stack 메모리 공간에 저장한다. 기본형 이외 대부분의 타입들을 말하며, 배열, 클래스 인터페이스 등이 있다. int a = 1; // stack 에 저장 Integer b = new Integer(); // heap에 저장하고 주소값을 참조 3. 래퍼 클래스 (Wr..

개발자의 삶/Swift

[Swift] 기초 문법3

- assert, guard assert - 특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수 - assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용 guard - 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 경정 하는 것 - guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨 var value = 0 assert(value == 0) value = 2 assert(value == 0, "값이 0이 아님") func guardTest(value: Int) { guard value == 0 else { return } print("안녕하세요") } guardTest(value: 2) // 아무것도 안나옴 guardTest(..

개발자의 삶/Swift

[Swift] 기초 문법2

- 구조체 /* struct 구조체 이름{ 프로퍼티와 메서드 }*/ struct User { var nickname: String var age: Int func information() { print("\(nickname) \(age)") } } var user = User(nickname: "ked", age: 20) print(user.nickname) user.nickname = "albert" // 변경 user.information() // method 호출 - 클래스 /*class 클래스 이름 { 프로퍼티와 메서드 }*/ class Dog { var name: String = "" var age: Int = 0 init() { // 인스턴스가 생성되면 호출 } func introduce() ..

개발자의 삶/Swift

[Swift] 기초 문법1

- 상수와 변수 // 상수 let a: Int = 20 // 변수 var b: Int = 100 - 컬렉션 타입 // Array // 데이터 타입의 값들을 순서대로 저장하는 리스트 var numbers: Array = Array() var names: [String] = [] numbers.append(1) // 추가 numbers[0] // 조회 numbers.insert(1, at: 2) // index로 추가 numbers.remove(at:0) // index로 삭제 // Dictionary // 순서없이 key, value 한 쌍으로 데이터를 저장하는 컬렉션 타입 var dic: Dictionary = Dictionary() var dic: [String, Int] = [:] var dic: [..

사이드 프로젝트/가족공유앨범 by Flutter

[Flutter] 서버개발자의 첫 앱 배포 수난기

서버 혹은 웹만 개발하던 내가 처음으로 개인적인 앱을 출시해봤다. 아래는 앱 다운로드 링크다. https://play.google.com/store/apps/details?id=com.jnot.rojjealbum 로쩨앨범 - Google Play 앱 가족 사진 공유 앨범 play.google.com - 선결론 결론만 먼저 말해보자면 재밌는 경험이었고, 계속 경험중이다. 앱은 에러도 많고 기능도 충분치 않지만 출시해봤다는데 의의를 둔다. 이 앱을 만들게 된 목적도 있기 때문에 조금씩이지만 에러도 수정해 나가고 있다. 출시자체는 안드로이드만 진행했다. ios는 개인 폰이 아이폰이라서 로컬 빌드로 진행했다. 구글스토어와 달리 애플 앱스토어는 매년 돈을 내야해서 출시를 안한건 아니다.(사실맞다) 앱을 개발하는 ..

사이드 프로젝트/가족공유앨범 by Flutter

[Flutter] 가족공유 사진앨범 만들기

계기 시간이 참 빠르게 지나간다. 어느새 12월이 되었다. 다음 달이면 로쩨가 세상에 나온다. 로쩨를 위해 해줄 수 있는게 뭐가 있을까 생각하다가 아빠가 나름 개발잔데 뭔가 하나 만들어줄순 없을까 생각이 들었다. 문득 로쩨사진을 양가 부모님 단톡방에 따로 보내는 수고스러움을 겪고 있는 아내를 보고 이거다 싶었다. Flutter 선택의 이유 Java를 주로 사용하기 때문에 보통 서버 혹은 웹 관련 일들만 했었다. 그러다 올해 친구와 같이 진행한 Come Hear 프로젝트 이후 앱개발에 관심이 생겼다. 데이터를 다루는 서버도 매력 있었지만 내가 내린 데이터로 화면을 꾸미는 친구를 보고 뭔가 재밌겠다는 생각이 들었던 것 같다. 그러다 가족공유 사진앨범을 만들어보고 싶다는 생각이 들었고 나는 아이폰을 쓰기 때문..

사이드 프로젝트/2022 관광데이터 활용 공모전

2022 관광데이터 활용 공모전 - Come Hear

한국관광공사 x 카카오 에서 주관하는 '2022 관광데이터 활용 공모전' 에 참가한 후기랄까, 회고를 남겨보려고 한다. 결론부터 말하자면 공모전을 끝까지 진행하면서 많은 시행착오와 다른 역할군의 필요성들을 느꼈고 이것저것 경험해볼 수 있었던 정말 좋은 경험이었다. 이 경험이 사실 제일 큰 결론이자, 결과라고 생각한다. 부수적으로 우수상을 수상했다. Come Hear 소개 시각장애인은 어떻게 여행할까? 시각장애인은 동행한 사람들의 설명으로 여행을 한다고 한다. 단순히 보는 여행이 아닌 모두가 들을 수 있는 여행 앱. Come Hear. 여행을 듣다. 기획의도 - 일반 사람들이 흔히 하는 여행이 아닌 특별한 앱을 만들어보자 - 시각장애인은 어떻게 여행할까? - 시각장애인이 여행을 즐길 수 있도록 보는 여행이..

개발자의 삶/DevOps

[DevOps] CI/CD

본 포스팅은 인프런 - Dowon Lee 님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 듣고 정리한 내용입니다. 강의링크 CI (Continuous Integration) - 작업된 코드의 컴파일, 테스트, 패키징 작업이 포함 CD (Continuous Deployment) - CI에 의해서 패키징된 결과물을 서버에 배포하는 작업 - 지속적인 배포와 지속적인 제공 JenKins - CI/CD 툴 - 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다 - 젠킨스 이미지 다운로드 docker pu..

개발자의 삶/MySQL

[MySQL] 경도 위도 기반으로 범위 내 데이터 구하기

현재 위치(경도,위도) 기반으로 범위 내 데이터를 구해야 할 이슈가 생겼다. 예시 - 현재 위치 37.579651 (Latitude) 126.977041 (Longitude) - DB 정보 table : locationMap 위도 : MAPX_LAT 경도 : MAPY_LON - 검색할 반경 : 20 = 20km (1km = 1) SELECT * FROM locationMap WHERE (6371*acos(cos(radians(37.579651))*cos(radians(MAPX_LAT))*cos(radians(MAPY_LON) - radians(126.977041))+sin(radians(37.579651))*sin(radians(MAPX_LAT)))) < 20 limit 0, 30 위처럼 쿼리를 날리면 ..

개발자의 삶/Spring

[Spring] Password Encoder (비밀번호 암호화)

왜 사용하는지, 어떻게 돌아가는지는 하는 법 이후에 알아보도록 하자. gradle 에 spring-security-crypto 추가 dependencies { implementation 'org.springframework.security:spring-security-crypto:5.7.1' } maven을 쓴다면 아래처럼 추가 org.springframework.security spring-security-crypto 5.7.1 PasswordEncoder Bean 등록 @Configuration public class CommonConfig { @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createD..

개발자의 삶/Apple

[APPLE, JAVA] 애플 연동해제 구현 (Sign Out of Apple ID)

https://developer.apple.com/kr/news/?id=12m75xbj 6월 30일부터 시작되는 계정 삭제 요구 사항 - 최신 뉴스 - Apple Developer App Store 심사 지침 5.1.1(v)에 설명된 대로, 계정 생성을 지원하는 앱은 2022년 6월 30일부터 사용자가 앱 내에서 계정을 삭제할 수 있도록 허용해야 합니다. 해당 기한은 본 요구 사항을 적용하는 developer.apple.com 2022년 6월 30일 부터 iOS앱은 탈퇴 시, 애플 연동해제를 필수로 넣게 됐다. - 사족 ( 애플 연동해제를 넣게 된 과정 ) 더보기 2022 관광공모전을 준비하면서 우리가 준비한건 iOS앱이기 때문에 당연하게도 애플로 로그인을 넣어야했다 나는 서버를 맡았기에 앱을 맡은 친구..

개발자의 삶/기타

[swagger] Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException"

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException" 서버 API 제공을 위해서 swagger 설정을 하다가 해당 에러가 발생했다. 구글링해보니 Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생한다고 한다. 따라서 application.properties 에 아래처럼 추가해주면 된다고 한다. spring.mvc.pathmatch.matching-strategy = ANT_..

개발자의 삶/IntelliJ

[Intellij] invalid source release: 11

Execution failed for task ':compileQuerydsl'. > invalid source release: 11 공모전 준비로 Querydsl 을 활용한 기본 프로젝트 생성 후, 빌드하는데 해당 오류가 났다. 첫줄만 보고 querydsl 문제인줄 알고 엄청 헤맸다. 그러다 다음 줄인 'invalid source release: 11'을 보고 아 버전문젠가..? 싶어서 확인해봤는데 뭐지.. 11로 다 설정되어있었다. 좀더 찾아보니 settings 에서도 설정을 바꿔주어야 했다. (Settings > Build, Execution, Deployment > gradle) 나는 gradle이라서 저 부분을 수정했지만 maven의 경우 바로 위에 있는 Maven탭에서 수정하면 되는 것 같다...

Kedric
KeLog