[Python] Sorted()에서 key 정렬 기준에 따라 속도가 달라지는 이유 Python sorted()와 key 정렬기준 최적화 과정 1. 들어가기에 앞서들어가기에 앞서 말하자면 이 글은 가설을 세우고 다시 정정하는 과정을 담고 있다. 따라서 가설이 맞다고 생각하면서 읽기보다는, 그 과정에서 어떤 오류가 있었는지를 살펴보면 더 유용할 것이다. 2. sorted()에서 같은 정렬 기준을 사용했는데, 실행 속도가 다르다코딩 테스트 문제 리트코드937 - 로그 파일 재정렬을 풀다가 예상보다 정렬 속도가 느리게 나오는 경우를 발견했다. 교재에 있는 답안을 그대로 제출했더니 전체 제출된 답안의 런타임 중에 좌측과 같은 분포가 나타났고, 그 후 다른 답안을 참고하여 sorted()의 key 파라미터를 수정하여 제출했더니 우측의 분포가 나타났다.내가 참고한 교재에서는 정렬 시 아래와 같은 .. 2025. 3. 16. [대용량 이미지 태깅] 프로젝트 개요 및 향후 계획 + 수정예정 대용량 이미지 태깅 및 분석 기능 프로젝트해당 사이드 프로젝트는 이미지를 업로드하면 자동으로 태그를 생성하고, 나중에 쉽게 검색할 수 있도록 만드는 것이 핵심 기능이다.어떤 이미지?당시엔 유용하다고 생각하고 핸드폰에 저장한 스크린샷과 사진들은 많지만 그 정보들을 정리하는 일은 좀체 없다. 그간 쌓인 것을 수동으로 폴더를 정리하거나 검색하는 것도 역시 번거롭다. 대용량 이미지 태깅과 분석 프로젝트는 이렇게 개인의 핸드폰에 쌓여있는 스크린샷에 있는 데이터를 정리하고 유용하게 가공하는 것이 목표다. 모듈화하지만 대량의 이미지 데이터를 다루는 기능을 구현해내는 것 이상으로 확장성을 고려한 모듈화를 통해 변화하는 요구사항에 유연하게 대응할 수 있는 구조를 만들어보려 한다.처음부터 완벽한 시스템을 만드.. 2025. 3. 2. [대용량 이미지 태깅]대용량이미지 핸들링을 위한 클라우드 아키텍처 선택 : AWS Lambda와 S3의 활용 이미지 업로드 프로젝트를 클라우드에서 운영하려면 몇 가지 선택지가 있다. EC2를 띄우고, 직접 서버를 운영하는 방법이 가장 익숙한 방법이다. 하지만 이 방법은 유지보수 부담이 크고, 트래픽이 늘어나면 서버를 추가해야 한다. 무엇보다 EC2는 계속 켜져 있어야 하므로, 사용여부와 상관없이 지속적으로 비용이 발생한다. 클라우드를 쓰는 이유는 필요할 때만 사용하고, 불필요한 비용을 최소화하기 위해서다. 따라서 서버를 유지하지 않고도 이미지 업로드 및 처리가 가능한 구조를 고민하게 됐고, AWS Lambda와 S3 조합이 가장 현실적인 선택이라는 결론을 내렸다. 대용량 이미지 업로드를 위한 클라우드 아키텍처 선택 과정Lambda를 선택한 이유: 서버 없이 돌아가는 시스템Lambda를 선택한 이유는 단순하다. .. 2025. 2. 16. [MSSQL][SQL SERVER] SQL 성능 최적화: 캐싱과 동적 평가(Dynamic Evaluation)의 함정 연말연초라 그런지 프로그램 사용량이 늘어 성능 이슈가 늘었다. 업무상 성능 개선이 시급히 필요한 시점에서 SQL 튜닝을 하면서 새로 배운 점을 정리하고자 한다. (쿼리나 함수명, 변숫값은 예제로 새로 작성하였다.)문제의 쿼리: 병목WHERE a.Status LIKE '%' + @InputStatus + '%' -- 문제 부분실행계획을 분석해보니 위의 LIKE 연산자 조건 비교 부분에서 프로시저 전체의 56%에 달하는 비용이 발생하고 있었다. LIKE 연산자로 검색하려는 문자열의 앞에 '%'가 올 경우 인덱스를 활용하지 못한다. LIKE 조건에 일치하는 패턴을 찾아야 하는데 찾고자 하는 값이 문자열의 어느 부분에서 시작하는지 알 수 없으므로 전체를 스캔해야 하기 때문이다.@InputStatus는 'Orde.. 2025. 1. 5. [대용량 이미지 태깅]대용량 이미지 업로드를 위한 Presigned URL 사용과 CORS 에러 해결 과정 사용자가 평소에 저장만 하고 다시 보지 않는 캡처 이미지에서 정보를 추출하고 정리하는 Django + Python를 통해 구현하고자 한다. 목표과 방법목표대용량 이미지 업로드 시스템을 구축하는 것이 목표였다. 서버 부하를 줄이고, 업로드 속도를 최적화하면서 보안도 강화해야 했다. 이를 위해 Presigned URL을 사용하기로 했다.Presigned URL?Presigned URL은 AWS S3에서 제공하는 기능으로, 클라이언트가 서버를 거치지 않고 S3에 직접 파일을 업로드하거나 다운로드할 수 있도록 임시 권한을 부여하는 URL이다. 이 URL은 만료 시간과 접근 권한이 포함되어 있어, 지정된 시간 이후에는 접근이 불가능하다.임시 접근 권한: URL은 생성 시점에 설정된 시간까지만 유효하다.제한된 권한.. 2024. 12. 22. [SQL]SQL: SQL 정의, 특성, 기능, 예시, ACID SQLD를 딴 지 벌써 2년이 다 되어가서 보수교육을 들으라는 안내 메시지가 왔다. 약 4시간에 달하는 분량의 동영상인데 이렇게 보게 된 김에 보면서 SQL에 대한 기본적인 내용을 정리하고 보충하기로 했다.SQL: 구조화된 질의 언어SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 저장, 관리, 조회, 수정, 삭제하기 위해 사용되는 표준화된 프로그래밍 언어다. SQL은 1970년대에 개발되어 이후 ANSI(미국 국가표준협회)와 ISO(국제표준화기구)에서 국제 표준으로 지정되었다. SQL의 주요 특징1. 모든 관계형 DBMS에서 사용 가능SQL은 ANSI/ISO 표준을 기반으로 설계되어, 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서 동일한 방식으로 사용.. 2024. 11. 24. [MSSQL] MSSQL에서 서버 및 데이터베이스 수준 DML 권한 확인하기: 동적 쿼리 예시 서버 및 데이터베이스 수준 DML 권한 확인하기이번에 처음으로 IT감사에 대응하면서 DBMS에서 직접 DML권한을 가지는 계정 목록을 제출해 달라는 요구를 받았다. 해당 요구사항에 맞게 쿼리를 작성하며 서버 수준의 게정과 데이터베이스 수준의 계정, 그리고 각각의 매핑 관계에 대해 자세히 알아보는 계기가 되었다. 자료조사를 하면서 DML 원한이 있는 유저를 조회하고 결과를 PIVOT 테이블 형태로 변환하는 쿼리를 작성하여 자료로 제출했으나 다시 보니 간과한 점이 다소 보인다. 권한 조회 쿼리를 작성하면서 접한 개념과 해당 쿼리를 작성할 때 고려한 것과 개선점을 정리하고자 한다. **SQL SERVER 19 버전을 기준으로 작성되었다. 사용자 권한의 계층구조처음 요청자료를 접했을 때는 database_pri.. 2024. 11. 17. [SQL조인][조인 순서] 왜 조인을 할 때 ON절에서 조인 대상 테이블의 alias가 먼저 올까 ON절의 alias 순서가 JOIN에 미치는 영향SELECT a.customer_id, a.customer_name, b.order_id, b.order_dateFROM customers AS aJOIN orders AS bON b.customer_id = a.customer_id; ON절은 왜 다들 이렇게 작성할까'ON b.customer_id = a.customer_id'조인을 위한 ON절에서 흔히 조인 대상이 되는 테이블의 alias를 먼저 적은 쿼리를 흔히 볼 수 있다.SQL JOIN을 처음 가르쳐주시던 강사님도, 회사 선배도 다 저렇게 쓰길래 관례거니 하고 써왔는데 막상 왜 b가 a 앞에 오는지는 제대로 고민해 본 적이 없었다. 왜 다들 JOIN 키워.. 2024. 10. 25. Map<String, Reflection> mapOfLife, 삶의 지도 글또 10기 지원을 위해 ‘삶의 지도’란 주제로 작성한 글입니다.‘태양은 똑바로 봐도 거울은 절대 못 보겠어’. 테일러 스위트프의 Anti-hero에 나오는 가사다. 삶의 지도에 대해 이야기한다면서 갑자기 미국 가수부터 언급하게 되었다. 내가 삶에 대해 생각하면 가장 먼저 떠오르는 표현이기 때문이다. 지금도 이 노래를 들으며 글을 쓰고 있다. 뜨겁게 빛나는 먼 대상은 눈이 부셔도 똑바로 보지만 나를 비추는 거울은 바로 보지 못 한다. 누구에게나 자신을 돌아보는 것은 어렵나보다.개발자 글쓰기 모임에 지원하려는데 또 나타난 것을 보면 거울을 마주보는 것은 피할 수 없는 일 같다.글또에 지원하는 이유에 대해 적다보면 내가 어떤 사람인지도 자연히 설명될 것 같다. 글또에 지원하는 동기는 주기적으로 글을 써서 .. 2024. 9. 22. [Oracle]SQLPlus에서 'set autotrace on' 설정 시 에러 조치 오라클(Oracle) 21C버전에서 SQLPlus에서 'set autotrace on' 설정 시 에러 조치(맨 하단에 요약있음) 1. 에러 1: SP2-0618: 세션 식별자를 찾을 수 없습니다. PLUSTRACE 롤이 사용으로 설정되었는지 점검하십시오SQL Plus 에서 set autotrace on을 입력하면 아래와 같은 에러 메세지가 나타났다.SP2-0618: 세션 식별자를 찾을 수 없습니다. PLUSTRACE 롤이 사용으로 설정되었는지 점검하십시오SP2-0611: STATISTICS 레포트를 사용 가능시 오류가 생겼습니다구글 검색 결과 해당 에러에 대한 해결법이 버전별로 혼재되어 있어 21C버전에 맞게 조치방법을 정리하고자 한다. 2. 에러1의 원인에러 메세지에서 파악할 수 있듯 PLUSTRACE.. 2024. 6. 9. 이전 1 2 3 4 5 다음