본문 바로가기

전체 글

(291)
[python] 파이썬 re 모듈 동작 방식 문제 상황 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 조건에서 접두사가 매칭되는 경우를 찾으면 false을 반환하라고 한다. 맨 처음 작성한 코드에서는 "접두사"라는 표현에 집중하여 re 모듈을 이용하여 정규표현식 비교 코드를 작성했다. import re def solution(phone_book): phone_book.sort() for i in range(0, len(phone_book) - 1): if re.search(f'^{..
[python] f-string(Literal String)과 string concatenation의 비교 f-string은 파이썬에서 문자열 덧셈을 가장 효율적으로 처리한다고 알려져 있으며, 이에 관련된 벤치마크 결과도 존재한다. 그렇다면 정말 f-string이 효율적인지 알아보기 위해 f-string과 문자열 concatenation을 수행하고 값을 반환하는 함수를 dis 모듈을 통해 디컴파일하여 바이트 코드 수준으로 비교해보자. dis — Disassembler for Python bytecode Source code: Lib/dis.py The dis module supports the analysis of CPython bytecode by disassembling it. The CPython bytecode which this module takes as an input is defined in t..
[WEB] MutationObserver API https://developer.mozilla.org/ko/docs/Web/API/MutationObserver MutationObserver - Web API | MDN MutationObserver 는 개발자들에게 DOM 변경 감시를 제공합니다. DOM3 이벤트 기술 설명서에 정의된 Mutation Events 를 대체합니다. developer.mozilla.org WEB API 중에는 'Observer'이라는 표현이 붙는 종류의 API들이 존재하는데, 이들은 등록된 특정 이벤트가 감지되면 콜백에 정의된 동작을 수행한다. MutationObserver은 이러한 API 중 하나로, DOM 상에서 발생하는 특정 변경사항을 감시하는 역할을 수행한다. 사용법 const mutObserver = new Mut..
최대 공약수, 최소 공배수 https://mathbang.net/206#gsc.tab=0 최대공약수와 최소공배수의 관계 최대공약수와 최소공배수를 구하는 방법을 이해했나요? 대부분의 경우에 최대공약수와 최소공배수는 소인수분해를 이용하는 방법으로 구해요. 이 방법은 초등학교 때 많이 해봤던 방법이니까 mathbang.net 최대 공약수(Greatest Common Divisior, GCD): 두 수 이상의 여러 수의 공통된 약수 최소 공배수(Least Common Multiple, LCM): 둘 이상 수들의 공통된 배수 중 가장 작은 수 두 수 A, B가 존재할 때 LCM(A,B) = A * B / GCD(A,B)의 관계가 성립한다. GCD(A,B)는 A 및 B를 구성하고 있는 값이므로 A와 B 각각을 GCD(A,B) * n의 꼴로 ..
[nodejs] prisma ORM 라이브러리 https://www.prisma.io/ Prisma | Next-generation ORM for Node.js & TypeScript Prisma is a next-generation Node.js and TypeScript ORM for PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, and CockroachDB. It provides type-safety, automated migrations, and an intuitive data model. www.prisma.io prisma는 타입스크립트 환경에서 사용 가능한 ORM 라이브러리 중 하나로, 모델의 정의를 자바스크립트 또는 타입스크립트 파일에 선언하는 대신 prisma schema라는 별도의 설정 파일을..
[nodejs] mysql2 라이브러리 mysql2 https://github.com/sidorares/node-mysql2 GitHub - sidorares/node-mysql2: fast mysqljs/mysql compatible mysql driver for node.js :zap: fast mysqljs/mysql compatible mysql driver for node.js - GitHub - sidorares/node-mysql2: fast mysqljs/mysql compatible mysql driver for node.js github.com mysql2 라이브러리는 nodejs 환경에서 mysql에 접근하기 쉽도록 도와주는 라이브러리로, 기존에 별도로 존재하던 라이브러리를 대중적으로 사용되던 mysql 라이브러리와 동일한..
[WEB] console.log로 객체를 출력하지 말자 인터넷에서 자바스크립트 관련 정보를 찾다가 다음과 유사한 코드를 봤다. const something = document.createElement('something'); console.log(something); something.innerHTML = 'hello'; console.log(something); something.innerHTML += ' my world!'; console.log(something); 코드의 요점은 웹 브라우저에서 엘리먼트를 생성한 후 innerHTML을 수정, 엘리먼트를 출력하는 것이다. 코드 자체는 단순하고 결과도 쉽게 예상할 수 있을 만했는데, 의외로 예상하지 못한 결과가 나타났다. 아마 이 글을 보는 대부분의 사람들은 다음과 같은 결과를 예상했을 것이다. "" "h..
브라우저 동작 관련 읽어볼만한 내용들 https://developer.chrome.com/blog/inside-browser-part1/ Inside look at modern web browser (part 1) - Chrome Developers Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline. developer.chrome.com 2018년 기준 웹 브라우저가 어떻게 구성되는지 4부에 걸쳐 설명한다. https://web.dev/howbrowserswork/ 또는 https://d2.naver.com/helloworld/59361 ( 한글 번역 ) How ..