일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시스템 해킹
- programmers
- 네트워크
- 웹보안
- cloud run
- hackctf
- nodejs
- docker
- Batch
- pwnable.xyz
- gcp cloud build
- 회고
- gcp ci/cd
- spring Batch
- 프로그래머스
- 스프링 배치
- kotest
- 웹해킹
- Baekjoon
- sequelize
- 사이버보안
- 포너블
- gcp
- 보안
- node.js
- 리버싱
- 백준
- webhacking.kr
- 파이썬
- Python
목록전체 글 (112)
uju's Tech
보호되어 있는 글입니다.
이슈 TypeORM 에서 여러 개의 row가 업데이트 되거나 생성될 때 save 메서드를 사용할 수 있다. 변경되는 여러 개의 row에서 unique한 칼럼이 업데이트되거나 생성되는 경우도 있을 것이다. 여기서 unique constraint violate 에러가 발생할 수 있다. 이 에러는 어떤 경우에, 왜 발생하는 것일까? 그리고 어떻게 해결할 수 있을까? 예제 예를 들어서 설명해보겠다. Post가 있고 Post를 저장할 때 Label을 지정할 수 있다고 하자. 그리고 Label이라는 테이블은 id, name, post_id로 구성되어 있으며 name에는 unique constraint가 걸려있다고 하자. 현재 하나의 Post가 저장되어 있고 그에 대한 Label은 다음과 같이 저장되어 있다. Pos..
이번 포스팅에서는 TypeORM의 Replication 적용 부터 Master , Slaves를 지정하는 것을 다뤄보고자 한다. 개발을 하다보면 다양한 쿼리, 그리고 여러 쿼리들로 구성된 하나의 동작을 구현하게 되는데 어떤 동작인지, 어떤 쿼리인지에 따라 Master에 수행해야만 하는 작업이 있을 수도 있고, Read Replica에서 수행할 수 있는 작업이 있을 수도 있다. TypeORM도 replication이 적용된 데이터베이스에 대한 쿼리를 지원하는데, 그렇다면 TypeORM은 어떤 경우에 어떤 데이터베이스로 연결되는지 알아보자. TypeORM 은 Read, Write Replication이 있을 때 기본적으로 다음과 같이 데이터베이스를 선택한다. update, insert는 Master DB f..
반년 넘게 ... 미뤄오던 포스팅 주제.. 드디어 작성합니다..... :--( 우리는 요구사항을 구현하고 우리가 기대한 대로 동작하는지 확인하기 위해 테스트를 작성한다. 🤔 그런데 내가 테스트하고 싶은 코드가 테스트하기 어렵다면 어떻게 테스트할 것인가? 테스트하기 어려운 코드는 데이터베이스나 외부 API 등 외부의 무엇인가에 의존하고 있는 코드일 수도, 랜덤한 값에 의존하는 동작이 있는 등 동작 자체를 예측하기 어려운 코드일 수도 있다. 예제를 통해 알아보자 주사위를 굴려 나온 눈의 숫자가 3 이하면 한 칸을 이동하고, 4 이상이면 두 칸을 이동한다는 요구사항이 있는 게임을 구현한다고 하자. 이를 간단하게 구현한다면 아래와 같은 코드를 떠올릴 수 있을 것이다. 그러면 이 코드를 테스트하려면 어떻게 해야할..
벌써 2022년의 3/4 인 9월이다. 7월 부터 상반기 회고를 써야지 ~ 생각만 하다가 9월이 되어서야 밤 11시에 갬성 노래 틀어두고 작성해본다. (늦어도 했다는게 중요한게 아니겠나? 하하하ㅎ ㅏ...) 1️⃣ 2021년 회고에 작성한 2022년에 바라는 점 결산 상반기 회고를 쓰기에 앞서 2021년 내 회고를 한 번 읽어보고 결산(?) 을 해보고자한다. (https://uju-tech.tistory.com/entry/2021-%ED%9A%8C%EA%B3%A0) 2022 년에 내가 나에게 바라는 점 작성한 것을 지금 보니 참 해맑게 작성한 듯 하다 ,, Q. 운동 꾸준히? A. 주에 1회 승마 다니면서 최근에는 요가도 시작했다 ,, 살기위해 운동하는 사람들 중 하나가 되었다 큽,, Q. 코틀린, 스프..
이번 포스팅은 도메인을 namecheap에서 구매해서 CloudFlare에 연결하는 과정을 정리해보았다 : ) 도메인 구매 namecheap: 도메인 이름 등록 및 웹 호스팅을 제공하는 ICANN 인증 도에밍 이름 등록 기관 https://www.namecheap.com/?gclid=Cj0KCQjw3eeXBhD7ARIsAHjssr9Qh0zPVgug4v3BPnzVfIBL5A1Dfow71X0sJXEKPr9Oe3sg7TJBuegaAgwxEALw_wcB Buy a domain name - Register cheap domain names from $0.99 - Namecheap At Namecheap, you can register brand new domain names using hundreds of pop..
최근 회사 내에서 alpine linux와 debian 에서 cp가 다르게 동작하는 이슈가 있었는데 이유가 궁금해서 혼자 디깅해보았다. cp 이슈를 통해 여러가지 디깅해본 과정 및 관점을 기록 차원에서 남긴다. ( 찾아봤던 시간이 아깝기도 해서 ㅎㅎ주륵..,,,) 서론, 본론, 결론으로 이루어져있고 리눅스에 대해 조예가 깊지 않다는 점 감안하고 읽어주시면 좋을 듯 합니다. 잘못된 설명이 있다면 댓글 부탁드립니다. 서론 회사 내 프로젝트에서 Alpine Linux와 Debian 의 cp 명령어 동작 차이가 발생으로 인한 이슈가 있었다. 어떤 이슈인지는 인프랩 개발 블로그에 올라올 듯 하다. 어떠한 차이가 있었는지 간단하게 설명해보겠다. Alpine 파일 a: 1 , b:2 , c: -> a 파일 c에 a를..
Junit의 parameterize test가 kotest에서는 data driven testing 라는 이름을 갖는다. Data Driven Testing은 테스트를 작성할 때 직접 작성한 예제를 기반으로 테스트를 할 수 있다. 앞서 포스팅했던 Property Based Testing 인 광범위한 범위의 데이터를 무작위로 테스트하는 경우와 반대되는 경우에 사용할 수 있을 것 같다. 명확하게 해당 인자가 들어갈 경우 에러를 발생한 다거나 무조건 성공해야하는 예제를 직접 명시하여 테스트할 때 Data Driven Testing을 잘 사용할 수 있을 것 같다. Dependecy 추가 사용하는 버전은 알맞게 작성해주자. testImplementation("io.kotest", "kotest-framework-..