분류 전체보기
-
[Javascript] Codility Lesson 5 - GenomicRangeQuery알고리즘, 자료구조/Codility 2022. 5. 15. 15:37
문제: https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ 문제 요약: A,C,G,T로 이루어진 문자열 S가 주어지며 각 문자는 순서대로 1,2,3,4 값을 갖는다. (A=1, C=2, G=3, T=4) 문자열 S의 길이 범위는 [1... 100000] 이다. 동일한 길이의 배열 P,Q가 주어지며, 배열의 요소 범위는 [0... N - 1] 이다. 배열 P,Q의 길이 범위는 [1... 50000] 이다. P[i]
-
[MySQL] Table Lock (feat. Deadlock 💀)데이터베이스/MySQL 2022. 4. 18. 02:10
틀린 내용을 발견하시면 말씀 부탁드립니다! 🙇 특정 테이블이 업데이트될 때 동작하는 트리거에서 수정할 부분이 있어 수정 후 저장을 하려고 했는데 계속 Table Lock 걸리는 이슈가 생겼다. 이슈는 (팀장님이) 해결했는데,-뭔지는 모르겠지만 트랜잭션 1개가 계속 동작하고 있었고 해당 트랜잭션을 kill하니 트리거 수정 내용이 정상 반영됨- 정확히 어떤 상황에서 Lock이 발생하고 이를 해결하기 위해 뭘 확인해야 하는지 궁금한 관계로 이번 기회에 정리하기로 했다. SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; # 문제있는 트랜잭션을 찾아 TRX_ID를 kill cf) INFORMATION_SCHEMA.INNODB_TRX: 트랜잭션이 락 때문에 대기 상태인지 뿐만 아니라 ..
-
[Javascript] 병렬 처리와 함께 작업 순서가 유지되어야 하는 경우언어, 프레임워크/Javascript & Typescript 2022. 4. 6. 20:47
틀린 내용이 있을 수 있습니다. 발견하시면 말씀 부탁드립니다! 🙇 회사에서 운영 업무 자동화에 이용할 API를 개발했다. 해당 API에서는 서드파티 연동을 위해 외부 API 호출을 하면서 동시에 내부 DB 요청도 수행한다. 이러한 일련의 작업을 수행하는데 n초가 소요되며 유저 수(m)만큼 반복해야 하기 때문에 단순히 계산해도 n*m 초 이상이 걸린다. 속도 개선을 위해 병렬로 처리하려 하니 순서가 보장되지 않아 DB 요청에서 데이터가 꼬이는 이슈가 발생했다. (각 작업을 마치고 고유키와 로그를 저장하는 플로우를 위해 순서 유지는 필수이며, 속도 vs 순서 유지 중 하나만 선택해야 한다면 순서 유지를 골라야 하는 상황이다.) 개선 -작업 순서 유지와 함께 병렬 처리- 을 하기 위해, 자바스크립트의 비동기 ..
-
[MySQL] 테이블의 auto increment number 가져오기데이터베이스/MySQL 2022. 3. 28. 07:25
고유키가 필요할 때 테이블의 auto increment를 활용하는 경우가 있다. 이럴 때 사용할 수 있는 쿼리. SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = [db name] AND TABLE_NAME = [table name]; 이외에 참고할 수 있는 쿼리를 정리한 링크 (상황에 따라 알맞은 것을 사용하면 될 것 같다) https://thispointer.com/4-ways-to-get-last-inserted-id-of-a-mysql-table/#four 4 ways to get last inserted id of a MySQL table – thisPointer To provide the best experi..
-
[MySQL] GROUP_CONCAT length 제한데이터베이스/MySQL 2022. 3. 4. 02:27
작업 중에 group_concat을 활용하여 객체를 요소로 갖는 배열 형태를 반환하게끔 했는데 길이 제한 때문에 텍스트가 잘리는 이슈가 발생했다. 구글링 해보니 group_concat은 1024 문자가 기본값이라고 한다. 이 정도 길이는 택도 없었기 때문에 group_concat의 최대 길이를 변경했다. SET SESSION group_concat_max_len = 150000; 글로벌하게 적용하고 싶다면 GLOBAL 키워드를 사용하면 된다. SET GLOBAL group_concat_max_len = 150000; 아래 쿼리를 실행하면 group_concat의 기본 길이 확인할 수 있다. SHOW VARIABLES LIKE '%GROUP_CONCAT%' 참고자료 https://sebhastian.com..
-
동일한 내용의 메일을 중복해서 보낼 시 Gmail에서 내용 숨김처리됨기타 2022. 2. 25. 00:23
운영 자동화 작업 중 하나인 메일 발송 자동화 작업을 진행하며 발견한 이슈(?)이다.(이슈라고 말하는 이유는 숨김 처리할 내용이 아니며, 메일 스타일이 이상... 해보였기 때문) 테스트를 하다보니 개인 gmail 주소에 동일한 내용의 메일을 여러 번 보내게 되었고 처음 발송한 메일을 제외한 나머지 메일들의 콘텐츠가 잘리는 현상을 발견했다. 현재 사용 중인 Mailchimp 템플릿이 이전에도 종종 깨지는 이슈가 있었기 때문에 처음에는 템플릿의 html 코드를 살펴보았다. 하지만 딱히 문제가 되는 부분을 찾지 못해 바로 구글링...! 검색을 하다가 스택오버플로우에 올라온 글을 하나 발견했다. https://stackoverflow.com/questions/11078264/how-to-get-rid-of-sh..
-
[Nest.js] Express와 비교했을 때 Nest.js의 장점이라고 생각한 것백엔드/Node.js 2022. 2. 22. 23:50
NestJS가 다른 프레임워크에 비해 나은 점이 무엇인지 구글링을 해보았는데 막연한 내용들이 많아 그냥 내가 느낀 점만 써보겠다. 강의를 듣고 간단히 코드를 작성해보며 느낀 NestJS의 가장 큰 장점은 개발자가 구조를 크게 고민하지 않아도 되는 것이다. Node.js의 또 다른 프레임워크인 Express는 자율성이 너무 뛰어나다 보니 개발자가 구조를 자유롭게 짤 수 있는데, 이게 잘하면 약이고 못하면 독이 된다고 생각한 입장에서 NestJS의 이러한 점은 일단 평타는 치게 하는 느낌 이었다. 지원되는 모듈도 많다고 하는데 이 부분은 내가 많이 써본 게 아니라 잘 모르겠고, 예외 처리하는 모듈 지원하는 걸 보고 오~ 했다. (찾아보니 express도 비슷한 모듈이 있음. 이번 기회에 알게 되었으니 기록!..