간단한 토이 프로젝트를 진행하던 중, List의 요소를 랜덤하게 뒤섞되 문자열 인자의 값에 따라 섞는 방법을 결정해야 하는 경우가 생겼다.내가 써놓고도 뭔 소리인지 모르겠다. 더 자세히 말해보면, 상술한 기능을 하는 함수 A는 다음과 같은 요구 사항을 충족해야 했다:함수 A는 List 인자 하나와 문자열 인자 하나를 받아 다시 List를 반환해야 한다.함수 A에 의해 반환된 List는 첫 번째 인자로 전달된 List를 랜덤하게 뒤섞은 결과여야 한다.함수 A에 전달된 문자열 인자가 동일한 경우, 항상 같은 순서로 뒤섞인 List가 반환되어야 한다.즉, A("first")와 A("first")의 결과는 같지만 A("first")와 A("second")는 달라야 한다.아시다시피 Kotlin은 List의 요소를..
토스 개발 블로그를 보던 중, 아래 글을 읽게 되었다: 레고처럼 조립하는 토스 앱수많은 서비스를 담고 있는 대규모 iOS 앱에 어울리는 아키텍처는 무엇일까요? 프로젝트 간의 의존성과 모듈 간의 결합도를 낮춰, 더 효율적인 서비스 개발, 관리를 이뤄낸 과정을 소개합니다.toss.tech2023년 글이니 지금은 더 늘었겠지만, 코드가 100만줄이라니! 이 글을 보고 나니, 내가 개발에 참여 중인 애플리케이션의 라인 수와 개발자 별 코드 라인 수를 확인해보고 싶었다. git blame 기준이기 때문에 정확히 몇 줄의 코드를 작성했는지는 알 수 없지만, 현재 버전 기준으로 몇 줄이나 기여했는지 정도는 알 수 있으니 재미용으로는 참고할 수 있을 것 같다.전체 코드 수 확인git ls-files | xargs ca..

이슈 내용AWS API Gateway에 Edge-optimized(이하 엣지 최적화) 설정이 되어 있을 때, 임의의 리소스를 HTTP로(HTTPS 아님!) 호출한다고 가정하자.이 경우, 포스트맨으로는 정상적으로 호출이 되지만 curl로는 307 Temporary Redirect가 반환되는 기현상이 발생한다!또한, AWS API Gateway 호출 내역을 봐도 아무것도 찍히지 않는다. 즉, AWS API Gateway가 응답하지 않았음에도 누군가가 중간에 307로 반환하고 있는 것! 왜 포스트맨과 curl의 동작이 다르고, 누가 중간에서 요청을 가로채어 307 응답을 반환하고 있는 것일까?원인 분석원인을 분석해보면 다음과 같다:엣지 최적화가 설정된 AWS API Gateway는 게이트웨이 앞단에 Cloud..
UPDATE 쿼리로는 여러 레코드를 같은 값으로만 수정할 수 있기에, 여러 개를 각각 다른 값으로 수정해주어야 하는 경우에는 쿼리 한 방으로 처리할 수 없다고 생각했다.그러나 아래와 같은 방식을 사용하면 가능해용INSERT INTO ... ON DUPLICATE KEY UPDATE & VALUESVALUES 함수는 해당 컬럼에 삽입될 값을 의미한다고 한다. 때문에 Id가 PK인 my_table이 있다고 할 때, Id가 1, 2, 3인 컬럼의 순서를 각각 0, 1, 2로 갱신하는 쿼리는 다음과 같이 작성할 수 있다.INSERT INTO my_table (Id, `Order`) VALUES (1, 0), (2, 1), (3, 2) ON DUPLICATE KEY UPDATE my_table.`Order` = ..

백만년만에 쓰는 글Docker Desktop 유료화에 따른 선택이건, 다른 이유에서건 Rancher Desktop을 사용하는 도중 요런 에러를 만날 수 있다.Error Starting KubernetesError: /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl.ventura exited with code 1Last command run:/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl.ventura --debug shell --workdir=. 0 sudo update-ca-certificat..
[~] brew services list # service 상태 확인Name Status User Filemysql started ingnoh [...][~] brew services stop mysql # 삭제를 위해 service 중지[~] brew uninstall mysql # mysql 삭제# 대충 삭제 과정...# 오래 걸리진 않는다...[~] brew install mysql@8.4# 대충 설치 과정...# 이건 오래 걸린다...[~] brew services start mysql@8.4 # mysql 8.4 서비스 시작[~] mysql --help | grep my.cnf # 포트 번호 설정을 위한 my.cnf 파일 조회 ord..
메소드 호출시 내부 동작 과정에서 private extension function을 사용하는 MyClass라는 이름의 클래스가 있다고 하자. 해당 클래스는 인자로 전달 받은 값에 3을 더한 후 문자열로 변환한 값을 반환하는 하나의 메소드만을 공개하고 있으며, 이러한 기능을 Kotest로 테스트한다면 다음과 같다.class PlaygroundTest : StringSpec({ "convertToStringAfterAdd3 should return string of value after add 3" { // given val input = 5 val myClass = MyClass() // when val result = myClass.co..
로컬에서 이미지를 빌드하고 태깅을 잘 못 했다던지, 어떤 리포지토리에서 가져온 이미지를 이름만 바꿔 다른 리포지토리에 푸시한다던지 등등... 이미지 태그를 변경해야하는 일은 어쩌다 한 번씩 생기는 것 같다.로컬에 이미 이미지가 풀되어있는 상태라고 가정했을 때 아래와 같은 명령어를 입력하여 태그를 변경해줄 수 있다.[~] docker image tag [기존태그]:[기존버전] [변경할태그]:[변경할버전]결과는 docker images 명령으로 확인할 수 있다.
- Total
- Today
- Yesterday
- Git
- javascript
- Vault
- AWS IoT
- Linux
- JPA
- Node.js
- etc
- eureka
- terraform
- Docker
- kotlin
- Database
- Spring Cloud Config
- IntelliJ
- RancherDesktop
- mysql
- AWS
- spring boot
- jQuery
- JEST
- postgresql
- shell
- pgloader
- react
- Gradle
- Puppeteer
- hashicorp
- Java
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |