horizontalSpacer 나 verticalSpacer 컴포넌트를 그냥 가져다 놓으면 일정 수준의 사이즈 값이 들어와 있다. 40*20 인가 그랬는데, 그것도 일정 사이즈를 잡고 있는 것 같다. 내가 쓰는 이유는 공란이 생길때 딱 컴포넌트를 모으기 위함이지 스페이서 자체에 길이를 줄 요량이 아니었으므로, 이 부분을 꼭 체크해서 sizeHint 값을 0x0 으로 주도록 한다.
파이썬이란 언어가 엄청 간단하고 쉽다. 그리고 변수도 막 넘기고, 배열, dict, list, 이런것도 대충 막쓴다. 그러다 난 생각이 넘겨주고 받을때 복사되는지 C언어처럼 reference 주소를 넘겨주는 방법이 있는지 등등이 궁금한데... 그냥 쓰다고 좋은 글이 있어 소개 https://eslife.tistory.com/1053 [파이썬] 함수 호출 CALL BY VALUE/CALL BY REFERENCE 파이썬에서 함수 호출 시 call by value/ref 를 설명하는 간단한 예제입니다 1. bool, 문자열, 숫자, 리스트, 딕셔너리를 함수에서 변경했을 때 def testFunc2(bValue, sString, nValue, list, dic): bValue = Tr.. eslife.tisto..
해시코드 (해쉬코드) 머든 생성해보기 파이썬은 머든 어렵지 않네, hashlib 를 import 하고 사용하면 된다. https://docs.python.org/3/library/hashlib.html hashlib — Secure hashes and message digests — Python 3.10.5 documentation hashlib — Secure hashes and message digests Source code: Lib/hashlib.py This module implements a common interface to many different secure hash and message digest algorithms. Included are the FIPS secure hash al..
여러 쓰레드에서 접근할 때 막는 방법, 찾아둔 거 저장 합니다. 아래 예제는 flask 에서 gunicorn 으로 proxy 하면 work thread 가 동시에 뜰 수도 있는데, 공유 자원을 lock 해서 한놈만 접근하도록 하는 코드 인듯. https://stackoverflow.com/questions/18213619/sharing-a-lock-between-gunicorn-workers Sharing a lock between gunicorn workers Is there a good way to share a multiprocessing Lock between gunicorn workers? I am trying to write a json API with Flask. Some of the API..
아주 간단한 날짜 바꾸기도 검색해야 하다뉘. 좌절이지만 date.replace 함수로 변경이 가능하다 아래 예제를 참고하세요. from datetime import datetime today = datetime.now() newdate = today.replace(year=2022, month=1, hour=11, minute=59) Pexels에서 Karolina Grabowska님의 사진: https://www.pexels.com/ko-kr/photo/4016522/
그냥 기본 rotate 방식의 로깅 처리 RotatingFileHandler를 이용하여 구현해 뒀다. 막상 용량이 차서 파일을 새로 만드는 순간 에러가 발생한다. permission error winerror 32 [winerror 32] 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다 로깅 처리하는 방법은 아래 글을 참고하고, 2022.05.18 - [Django] - Django - logging middleware 간단 버전 누군가가 쓰고 있다고 파일을 생성해서 처리할 수 없다라고 뜬다. 사용자 코딩이 없는 관계로 약간 당황, 머 그래도 구글링 https://southsandstore.sakura.ne.jp/Programmer/django%E3%81%A7%E3%80%8C..
장고에서 쿼리 스트링으로 전달되는 문자열을 수정해서 다시 보내려고 시도하려고 한다. 이런 쿼리스트링이 저장된다는 QueryDict 라는 놈은 변경이 되지 않네. 이걸 다른 객체로 복사하고, 수정/삭제/추가 등의 변경을 한다음 QueryDict.copy() Python 표준 라이브러리의 copy.deepcopy()를 사용하여 객체의 복제를 생성하여 리턴한다. 복제는 변경가능하므로 값을 변경할 수 있다. 출처: https://engineer-mole.tistory.com/121 [매일 꾸준히, 더 깊이:티스토리] 문자열로 변환해서 사용하면 된다. 다시 쿼리 문자열에 대입할 수 없고 걍 문자열 변수로 넘겨주고 템플릿에서 적당히 받아서 다시 처리하자. 내가 사용한 코드는 그냥 참고로 아래에 둔다. s_page ..
한글이 잘 안되는 경우가 있다. 유니코드로 저장되어 버려서 이게 한글인지 코드인지 구분이 안된다. 먼저, 파일 오픈할때는 encoding 옵션을 꼭 주고, f = open('test.txt','w', encoding='utf-8') dump 호출 할때 아래와 같이 하면 해결! dump 옵션에 allow_unicode=True 옵션 추가 yaml.dump(test, outfile, default_flow_style=False, allow_unicode=True) https://devgwang.tistory.com/4 pyyaml 모듈 pyyaml은 파이썬에서 yaml 양식을 가진 파일을 다룰 때 사용하는 모듈이다. 공식 사이트는 Python - PyYaml Module 이며, 사용 가이드 및 버전 정보를 ..
매번 찾아 보는게 귀찮어 필요한 내용은 정리해 둔다. 출처를 분명히 밝혀둔다. https://wikidocs.net/36797 7.3 QTableWidget `QTableWidget`을 사용할 때는 미리 행과 열 크기를 지정하고 아이템을 삽입한다. 행과 행과 열의 크기는 생성자에서 지정할 수도 있고, `setRowCount(ro ... wikidocs.net table = QTableWidget(6,3) table.setAlternatingRowColors(true) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) for i=0 in range(table.rowCount()): for j=0 in range(table->columnC..
redirect 를 하는데 쿼리 스트링을 같이 넘기고 싶을때, 이 간단한 것도 찾아봐야 하나 암튼 reverse 를 이용해서 아래처럼 하면 해결이 된다. return redirect(reverse_lazy("devices:page", kwargs={"pk": pval}) + "?" + request.GET.urlencode()) 참고한 사이트 주소는 여기 https://stackoverflow.com/questions/19784810/redirect-to-a-url-with-query-string-in-django Redirect to a url with query string in Django How can I go to a specific URL with parameters like if I have..
Django 4 버전 이상에서 CSRF 체크하는 부분이 좀 더 엄격하게 되어 있다는 사실을 에러가 나면 알게된다. 이전에 아무 문제 없이 잘 돌았는데, 새로 설치하다 보니 장고가 최신버전으로 설치되고, 잘 동작하던 웹 서비스가 갑자기 CSRF 에러를 발생시키며 404 에러 등을 찍는다....이러면 이렇게 수정하면 된다. https://not-to-be-reset.tistory.com/552 CSRF 토큰 오류 에러 내용 django 에서 DEBUG 옵션을 True로 둔 뒤, POST 요청을 보내면 아래와 같이 에러 내용이 출력된다. 1. 웹 브라우저에서 접속 시 403 error CSRF verification failed. Request aborted 2. django log For.. not-to-b..
서비스를 만들다 보면 여러가지 텍스트가 많이 있다. 한국사람만 쓰면 그냥 한글로 하면 되는데, 국제화 시대에 맞추려면 이런 표기말들은 언어별 테이블에서 가져다 쓸 수 있도록 해야 한다. 친절하게 이런 기능들은 이미 Django 에 내장되어 있다. 일단 아래 함수를 먼저 알아야 하고, 그 함수를 라벨이나 다국어가 필요한 곳에는 반드시 적용해 둬야 한다. ugettext 함수나 ugettext_lazy 함수로 라벨을 등록해 두자. from django.db import models from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ class Article(models.Model):..
제목이 거창한데 Django Ninja API 엔진에 기본 인증 방식에 Redis 를 이용하여 사용자별 JWT 토큰 값을 하나만 관리하도록 설정해 보았다. 머 Blacklist 비슷한거 아닌가? 로그인 한 후에 Redis 에 사용자 ID 키로 토큰을 저장해 두고, 다시 Login API가 호출되면 새로운 token이 발행되도록 한다. 이렇게 하면 사용기한이 남은 토큰이라도 재 발행되는 순간 쓸 수가 없게 된다. Redis 대신에 그냥 Session 정도 사용되도 될 듯 하지만 머 일단 구색으로 class AuthBearer(HttpBearer): def authenticate(self, request, token): try: print(request.headers) print(request.headers..
파일 생성을 임의로 막 할 수 없기에 메모리상에 데이터를 zip 으로 묶어서 다운로드 해야 하는 경우가 생긴다. 대부분의 예제들이 파일을 기반으로 되어 있어서 response 로 바로 내려주는 것을 찾기 어려웠는데, 아주 좋은 예제가 있어서 소개한다. 이미 많은 곳을 거쳐서 테스트 했는데 아래 코드가 그나마 동작 가능한 코드이다. https://stackoverflow.com/questions/67454/serving-dynamically-generated-zip-archives-in-django import io def my_downloadable_zip(request): zip_io = io.BytesIO() with zipfile.ZipFile(zip_io, mode='w', compression=..
pymongo 를 쓰니 편리하게 find 함수로 mongo shell 처럼 검색을 할 수 있다. ObjectID로 검색하려니 ObjectID 로 바꾸는 함수가 별도로 필요로 해 보이는데 (원격 쉘 접속으로 명령을 전달하는 것이 아니니깐) 아래와 같은 귀중한 코드를 구할 수 있었다. 좋은 분들이 많다. 꼭 방문해 주세요 https://ssamko.tistory.com/38 [pymongo] ObjectId로 검색하기 mongodb(pymongo)를 사용하다보면 ObjectId로 검색해야 할 일이 종종 생긴다. mongodb shell에서는 간단하게 아래와 같이 호출할 수 있지만 db.getCollection('collection_name').find({'_id':ObjectId('5f6d775c2.. ss..