Koltin에서 형변환은 직관적이다. 보통 to~() 방식으로 메소드명이 붙어있다. 자주 사용하는 메소드에는 toInt(), toLong(), toString() 등이 있다. String to Number fun main() { val i = "123" println(i.toInt())// 123 println(i.toLong())// 123 } String을 숫자형으로 형변환 한 결과이다. Chat to Number 그런데 Chat 타입을 변환해보면 얘기가 달라진다. 형변환 실패 fun main() { val i = '1' println(i.toInt())// 49 println(i.toLong())// 49 } 너무나도 당연히 1이 나올줄 알았으나 아니었다... 내부 코드를 확인해보니 1.5부터는 심..
loop문에서 continue와 break를 사용해야 했다. Java에서 작성하던 방식과 비슷하게 작성햇는데 내가 생각한 대로 동작이 일어나지 않아 레퍼런스 문서를 찾게 되었고, 잘못 사용했다는 것을 깨달아 블로그에 정리한다. 1. break / continue 우리가 흔히 사용하는 break, continue는 for문 안에서 사용할 수 있다. fun main() { for (i in 1..5) { if (i==3) break print("$i ") } } // 결과 1 2 문제는 Iterable.forEach() 에서는 break, continue를 사용할 수 없다는 점이다. 아래와 같이 작성하면 break 때문에 compile이 불가능하다. fun main() { (1..5).forEach { i ..
문제 배경 Spring Boot로 테스트를 돌리던 중 아래와 같은 에러가 발생했다. [in @coroutine#1] i.n.r.d.DnsServerAddressStreamProviders : Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java...
Visual Studio Code에서 폴더 찾아갈 때 마다 귀찮다. 프로그래머는 귀찮아야 발전한다는데...ㅎㅎㅎ Mac을 사용하는 경우, Automator를 이용하면 편하게 이것저것 커스텀할 수 있어 편하다. Automator란? 반복 작업이나, 자신만의 커스텀한 동작을 실행할 수 있는 Apple 의 고유 앱을 말한다. 아이폰에서 많이 사용하는 "단축어"와 유사하나, 할 수 있는 범위가 더 크다. Automator로 Visual Studio Code 여는 빠른 동작 생성하기 1. 스포트라이트(command + space bar) 로 automator 검색 2. "빠른 동작" 선택 3. 왼쪽의 메뉴에서 "쉘 스크립트 실행 선택" 현재 수신하는 작업흐름: "파일 또는 폴더" 선택 항목 위치: "Finder..
공식사이트는 아무래도 기본 정보만 있다보니 찾아도 예시는 안나와 있는 경우가 많다. 그럴 때 모르거나 궁금한 점을 google에 많이 검색하게 되는데, 사실 양질의 블로그 포스팅을 보기 힘들다. 그 중에 제일 깔끔하고, 읽기 편하며 공신력 있는 사이트인 벨덩 Baeldung 기본적으로 JAVA & Spring 참고하기 좋다. https://www.baeldung.com/spring-redirect-after-login Baeldung - Kotlin 요즘에 회사에서 코틀린을 주언어로 사용하는데, 밸덩에서 아예 kotlin 사이트도 생겼다. 참고하기 매우 좋음 https://www.baeldung.com/kotlin/kotlin-overview Baeldung - Java 뉴스레터 여기서 발행하는 Java..
아직도 Regex 문법은 너무 헷갈리고 어렵다. 서버에서 직접 돌리면서 테스트하기에는 시간이 오래 걸려서 온라인에서 테스트를 해보고 옮기는 것을 선호하는 편이다. Kotlin & Javascript & Python .. etc Regex test 현재 코틀린 프로젝트를 작업중인데 regex 테스트를 찾다가 발견한 사이트. Kotlin 뿐만 아니라 javascript, python 등 다양한 언어를 제공한다. 아직은 Kotlin만 테스트 해보았다. 설명도 꽤 자세한 편이라 좋다. https://regex101.com/r/SbbVQJ/1 regex101: build, test, and debug regex Regular expression tester with syntax highlighting, expla..
Scala 프로젝트를 Kotlin 프로젝트로 컨버팅하는 과정에서 알게된 사항들 정리 Converting 필요한 Scala 코드 val pre = "PREFIX:" val str = "PREFIX:test" str.slice(pre.length, str.length)// test Scala의 slice() 함수를 이용하여 특정 문자열에서 잘라내기 Converting 한 Kotlin 코드 val pre = "PREFIX:" val str = "PREFIX:test" str.substring(pre.length, str.length)// test 정리 Scala - slice() /* from
코드상에서 http header 대소문자가 혼용되어 사용되고 있어 문제없는지 찾아보기로 했다. HTTP Header 대소문자 구분 Field names are case-insensitive and ought to be registered within the "Hypertext Transfer Protocol (HTTP) Field Name Registry" 필드명은 대소문자를 구분하지 않으며 "Hypertext Transfer Protocol (HTTP) Field Name Registry"에 등록되어야 한다. 예시 Cache-Control: no-cache 와 cache-control: no-cache 는 동일하게 취급된다. HTTP Header name 규칙 찾다보니 Header name 규칙이 궁금..
Spring Boot 로 Kotlin - thymeleaf 개발을 하면서 HTML을 수정할 때마다 reload 하는게 귀찮아서 프로젝트에 live reload 설정을 추가했다. (배포나갈 때는 설정하면 안됨!) 무슨 코드가 수정되든 reload 되는데 서버 수정하면 너무 오래 걸리기 때문에 HTML 코드 수정할때만 켜놓는것을 추천하다. 1. IntelliJ에서 Live reload 설정하기 1. Preferences 진입(단축키: cmd + ,) 2. Build Tools > Gradle > Build and run using 설정을 IntelliJ IDEA로 설정 3. Advanced Settings > Allow auto-make to start even if developed application ..
회사 서비스에서 로그를 확인하던 중 로그가 한번에 보이는 게 아니라 줄바꿈이 되어 칸마다 다르게 보여 불편했다. var msg = `🚀${prData["user"]["login"]} 가 PR 리뷰를 요청하였습니다.🚀\n` msg += ` - 프로젝트: ${body["repository"]["full_name"]} \n` msg += ` - PR: ${prData["html_url"]} \n` msg += ` - 제목: ${prData["title"]} \n` msg += ` - 내용: ${prData["body"]} \n` console.log(`message :: ${msg}`) 이러면 로그가 한줄로 보일 줄 알았는데.. 줄바꿈마다 표로 따로 나와서 매우 불편했다. 서비스팀에 문의하니 여러 의견이 있었..