목록Python (11)
Joonas' Note
최근에 회사에서 간단하게 파이썬으로 스크립트를 작성하다가 데이터베이스를 사용해야할 일이 있었다. 간단한 목적이라 단순한 연산들만 있으면 되는데, 불필요하게 거대한 사이즈의 패키지들(SQLAlchemy, PyMongo 등)을 설치해야하는 게 불편했다. 왜냐하면 경험상 이것들은 초기에 별도로 설정해야하는 작업이 굉장히 많기 때문이다. 그래서 in-memory 여도 좋으니 간단한 설정으로 마치 json 객체처럼 사용할 수 있는 패키지가 있는 지 찾아보았는데, 이 당시에는 찾지 못했다. 개발을 꽤 마친 이후에 tinyDB 라는 아주 비슷한 동작의 패키지를 발견했다. (지금와서 보면 dict 호환성 측면에서 아주 미묘하게 다르다.) 그럼 패키지를 사용하지 않고 built-in 패키지인 json 으로 커버하자니, ..
패키지를 설치하다보면, 모종의 이유로 wheel을 직접 다운로드하는 경우가 있다. wheel을 직접 다운로드 하려고하면, 설치하려는 환경에 따라서 whl 파일이 엄청나게 많은데, 그럴 때마다 운영체제, 비트, python 버전 등을 전부 한번씩 확인하게 된다. 잘못된 whl 파일로 설치하려고 하면 아래와 같은 에러를 만나서 무척 피곤해진다. ~~.whl is not a supported wheel on this platform. 2018년에 TensorFlow의 GitHub repository에서 동일한 질문이 있었고 https://github.com/tensorflow/tensorflow/issues/9722 , 아래와 같이 엄청 간단한 커맨드로 쉽게 확인할 수 있었다. Linux/Mac $ pytho..
문제 이번 문제는 문제적남자 4화에 나온 뇌풀기문제이다. 6개의 9를 사용해서 100을 만드는 수식을 찾는 문제인데, DFS로 모든 경우의 수를 탐색하면 되는 전형적인 문제로 보인다. 숫자들 사이에 수식을 끼워 모든 경우의 수를 만들어보고, 파이썬의 eval 함수로 계산한 결과가 100 이 되는 경우만 세어보면 될 것 같다. 9와 사칙연산만 사용하기 6개의 9 사이마다 사칙연산을 끼워넣어서 100이 만들어지는 경우를 찾아본다. 4개의 연산자를 5개의 공간에 끼워넣으므로 경우의 수는 \(4^5 = 1024\) 가지밖에 되지 않는다. 정답은 12개로 생각보다 많은데, 이건 순열이 달라서 세어진 것이고 조합으로 보면 단 하나이다. (정답 아래에 적음) 정답 9+9+9/9+9*9 = 100.0 9+9+9*9+9..
우연히 발견해서 오랜만에 적어보는 코딩으로 풀어보기 게시글이다. 이번에는 코드 없이 풀어본 풀이도 있다. 문제 문제는 간단하다. 1부터 9까지의 숫자를 한 번씩만 사용해서, 수식이 올바르도록 비어있는 9개의 칸을 채우는 문제이다. 코딩 풀이 숫자를 한 번씩만 사용한다는 조건때문에, 전체 경우의 수를 탐색하면 \(9! = 362,880\)개 밖에 안된다. 그래서 모든 경우를 전탐색해도 여유롭게 풀만하다. 답을 찾는 데 10ms도 안 걸릴 것 같다. 코드 import itertools numbers = [i for i in range(1, 10)] count = 0 for p in itertools.permutations(numbers): a1, a2, a3 = p[:3] a4 = p[3] * 10 + p[..
vscode의 확장 프로그램(extension)은 javascript 베이스이기 때문에, javascript/ES6/Typescript 로 개발해야한다. (vscode가 electron 프레임워크로 개발한 웹 애플리케이션이기 때문에 그럴 것이라고 추측한다) 간단하게 작성하기에는 package.json 이라던 지 node 세팅이라던 지 귀찮은 환경 세팅들이 많아서 python으로 만들 수 없는 지 찾다가 이런 프로젝트를 찾았다. GitHub - CodeWithSwastik/vscode-ext: Create VSCode Extensions with python Create VSCode Extensions with python. Contribute to CodeWithSwastik/vscode-ext deve..
파일 내용이 10GB가 되는 것은 어떻게 정렬할까? 메모리에 올릴 수 있는 크기가 한정되어 있기 때문에, 10GB 짜리의 큰 파일을 한번에 읽어서 quick sort 같은 인메모리(in-memory) 정렬을 할 수 없다. Linux/Mac에는 sort 라는 명령어가 있고, Windows에서는 git bash를 깔면 사용할 수 있다. 이미 있는 커맨드인지 모르고 python으로 직접 구현했다. 더보기 과정 메모리에 올릴 수 있는 만큼만 쪼개어서 올린 후, 각각을 정렬하고 다시 합친다. 여기서 "메모리에 올릴 수 있는 만큼"은 적당히 128MB로 설정했다. 이를 자세히 각 단계별로 쪼개면 이렇다. 준비 - 나눠 담을 크기를 계산 분리 - 큰 세그먼트 단위로 나누어 쪼개어 담는다. 정렬 - 쪼개진 각 파일을 ..
스마일게이트에서 출시한 "그 게임", 로스트아크(LostArk)친구의 권유로 한번 시작해볼까 했습니다. 하지만, (사진 출처: https://brunch.co.kr/@clay1987/99)예. 캐릭터 생성 불가의 벽에 막혔습니다. 이미 시작한 친구들은 전부 프로키온에 있더군요. 이건 민주주의 사회에서 다수결 원칙에 따라 저는 프로키온을 가야했습니다.그렇게 새해 첫날부터 그 유명한 로스트끼룩을 경험했습니다.뚫어야 한다저는 프로키온 서버에 제 캐릭터를 만들기 위해서 조금의 노력을 기울여봤습니다.어떤거냐구요? 이 문단의 여백이 부족하여 아래에 따로 적었습니다. 하지만 노가다라는 것은 변함이 없습니다.로스트아크 인벤을 보면 '서버 현황 게시판'이라는 것 까지 있더군요. 서버 뚫기가 얼마나 어려운 지 여기서부터 ..