사용 버전: Python 3.6.8 사용 프로그램: Atom 1.40.1 x64 파이썬 urllib.parse.quote()에 대해서 알아보겠습니다. 괄호 안에는 string, safe, encoding, errors 인자가 들어갑니다. urllib.parse.quote()는 아스키코드 형식이 아닌 글자를 URL 인코딩 시켜줍니다. String 인자에는 string, bytes 형식이 들어갑니다. String 형식. Bytes 형식 Safe 인자에는 URL encoding에서 제외할 문자를 넣습니다. 기본으로 '/'이 설정되어 있습니다. Encoding 인자에는 인코딩 이름이 들어갑니다. string에 들어가는 문자와 맞지 않으면 오류가 나옵니다. 기본적으로 'utf-8'이 들어갑니다. Error 인자에는 'strict', 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace', 'namereplace', 'surrogateescape', 'surrogatepass'가 들어갑니다. 기본적으로 strict가 설정되어 있습니다. unicode 오류를 알려줍니다. Ignore의 경우 오류는 무시하고, 변환할 수 있는 것만 변환합니다. Replace는 에러 글자를 '?'로 변환해줍니다. 그리고 quote(...
사용 버전 : KiCad 5.1.0 kicad PCB 만들기에 대해서 알아보겠습니다. 'PCB Layout Editor'를 눌러줍니다. 만약 아래와 같은 알림 창이 뜬다면, 선택은 자유입니다. 내용은 그래픽 카드를 사용할 것인지, 말것인지 입니다. 쓰면 속도도 좋고, 부드러워진다고 설명하고 있군요. 다음과 같은 창이 뜹니다. 'Update PCB from schematic'을 눌러줍니다. 'Match Method'와 설정을 적절히 선택해줍니다.(저처럼 하셔도 됩니다.) 그리고 'Update PCB'를 눌러줍니다. 다음과 같이 마우스를 따라다니는, footprint가 생성됩니다. 적당한 곳에 클릭합니다. footprint 이동은 '키보드 M', footprint 회전은 '키보드 R'입니다. 'Hide board ratsnest'를 켜면, 전선이 연결되어야 할 가이드 선이 표시됩니다. 'Ctrl + 좌 클릭'은 선택된 패드에 연결될 부분만 밝게 표시합니다. 해제 방법은 빈 땅에 'Ctrl + 좌 클릭'하면 됩니다. 옆에 있는 '레이어'는 PCB의 어느 영역에 그릴 것인지를 선택할 수 있게 해줍니다. F.Cu는 PCB 윗부분 전선 B.Cu는 PCB 뒷부분 전선 F.Paste는 PCB 윗부분 SMT 접착제 B.Paste는 PCB 뒷부분 SMT 접착제 F.Mask는 PCB 윗부분 패드 B.Mask는 PCB 뒷부분 패드 Edge.Cuts는 PCB의 전체 모양 F.SilkS는 PCB 윗부분 하얀 선 또는 글자 B.SilkS는 PCB 뒷부분 하얀 선 또는 글자 전선을 그려봅시다. 'Route tracks'를 눌러줍니다. 레이어를 보시면, F.Cu에 화살표가 있으니, 전선은 F.Cu 레이어에 그려집니다...
사용 언어: Kotlin 1.9.22 사용 버전: Android Studio Iguana 2023.2.1 안드로이드 Room database FTS를 알아보겠습니다. FTS는 Sqlite에서 제공해 주는 Full-text search(글자 검색)를 위한 가상의 table(테이블)입니다. 아래는 Sqlite fts 문서입니다. https://www.sqlite.org/fts3.html 이 문서에 따르면 517,430개의 data에서 어떠한 글자를 찾는데 일반 table은 22.5초가 걸린 반면 FTS3에서는 0.03초 밖에 안 걸렸다고 하네요. Sqlite 기반인 Room 또한 FTS를 지원합니다. Android Room Fts4 문서입니다. https://developer.android.com/reference/androidx/room/Fts4 우리는 DBA(데이터베이스 관리자)가 될 만큼 지식이 많이 필요하지 않기 때문에 바로 Summary를 봐줍니다. Sqlite 문서입니다. 여기에 따르면 FTS tables는 일반 table과 같이 INSERT, UPDATE 그리고 DELETE로 관리합니다. 자료를 가져오는 것은 동일하게 SELECT를 사용합니다. 다른 점은 아래와 같습니다. 1. 다른 가상 테이블과 마찬가지로 색인을 만들거나 트리거를 붙일 수 없습니다. 추가적인 column은 ALTER TABLE로 추가하거나 이름을 변경할 수 있습니다. 2. rowId를 제외한 모든 columns는 TEXT 형식입니다. 3. rowId 대신 사용할 수 있는 docId를 제공합니다. 4. FTS MATCH 명령어로 full-text를 검색할 수 있습니다. 5. FTS auxiliary 함수를 제공합니다. snippet(), offsets() 그리고 matchinfo()가 있습니다. 6. 모든 FTS tables는 숨겨진 column이 있습니다. 테이블 이름과 동일하며, blob 타입으로 MATCH나...
사용 프로그램 : MuseScore 3 총보와 파트보에 대해서 알아보겠습니다. 총보는 모든 악기들의 보표가 표시된 악보입니다. 보표의 악기 순서는 다음과 같습니다. 목관악기, 금관악기, 타악기, 독주 악기(피아노, 하프), 현악기 파트보는 자신이 연주하는 악기에 대한 보표만 존재하는 악보입니다. 총보(score) 파트보(part) 위의 악보에서 Flute 1은 첫마디를 한 뒤, 31마디는 아무 음도 없습니다. 그래서 뒤에 31로 숫자 적힌 긴 막대로 표시됩니다. Flute 2의 경우는 앞 2마디를 쉬고, 연주하고, 뒤 29마디를 쉽니다. 끝. 카테고리: Music
사용 버전: Android Studio 4.1.1 사용 언어: Kotlin 1.4.20 안드로이드 Notification with Full Screen을 알아보겠습니다. 알람이나 전화 같은 경우 사용자에게 큰 화면으로 Notification을 보여줘야 합니다. 이때 사용하는 게, FullScreenIntent입니다. 기본 Notification이 필요합니다. https://shwoghk14.blogspot.com/2020/09/android-notification.html FullScreen으로 띄울 Activity를 하나 만듭니다. 저는 FullScreenNoonActivity로 만들었고 모습은 아래와 같습니다. 위의 Activity를 이용하여 NotificationCompat.Builder가 있는 곳에 fullScreenIntent를 만듭니다. setContentIntent는 설정할 필요 없습니다. setFullScreenIntent를 설정합니다. priority는 PRIORITY_HIGH가 필요합니다. 그리고 Android 10 이상의 경우 권한이 필요합니다. AndroidManifest.xml에 USE_FULL_SCREEN_INTENT를 추가합니다. 실행해봅시다. 분명 FullScreenIntent로 실행했음에도 Heads-up Notification이 나옵니다. 눌러봅시다. ...
사용 버전 : KiCad 5.1.0 kicad 새로운 소자 추가하기에 대해서 알아보겠습니다. 추가할 소자는 시멘트 저항을 추가해 보겠습니다. 'Symbol Editor'를 눌러줍니다. 아래와 같은 화면이 나옵니다. 파일 - 'New Library...' 적당한 위치에 저장합니다. 만든 라이브러리를 KiCad의 어떤 프로젝트든 적용하고 싶다면, 전체 적용을 눌러주고, 이번 KiCad 프로젝트에만 적용하고 싶다면, Project를 눌러줍니다. 라이브러리에 추가된 것을 확인할 수 있습니다. 클릭 후, 'Create new symbol'을 눌러줍니다. 이름과 레퍼런스 이름을 적어주고, 확인을 누릅니다. 입력한 문구가 나타났습니다. 라이브러리에 수정 중인 상태는 색깔과 '*'문자가 생성됩니다. 우리가 추가할 시멘트 저항은 핀이 2 개입니다. 그리고, 네모난 형태를 가지고 있습니다. '키보드 M'으로 적당히 이동시켜줍니다. 'Add graphic rectangle to symbol body'를 눌러줍니다. 다음과 같이 네모를 그려줍니다. 네모 위에 마우스를 대고, '키보드 E'를 눌러줍니다. background를 선택해주고, 확인 누릅니다. 다음과 같이 네모에 색깔이 채워졌습니다. '키보드 P'를 눌러, 핀을 추가해줍니다. 저항이라, 'Pin name'은 안 적으셔도 상관없습니다. 'Pin number'은 'footprint'와 연결되기 때문에 잘 적어주셔야 합니다. 적당한 위치에 놔둡니다. 동일하게 한 번 더 합니다. 핀 회전은 '키보드 R'입니다. 저장해줍니다. 'Save a...
사용 버전: Python 3.7.6, OpenCV 4.2.0 파이썬 OpenCV 빈 화면 만들기를 해보겠습니다. 검정 빈 화면을 만들기 위해서는 numpy가 필요합니다. img1의 경우는 color로 불러들었을 때를 위한 빈 화면이고, img2의 경우는 grayscale로 불러들었을 때의 빈 화면입니다. 끝. 카테고리: Python, cv2
사용 언어: Kotlin 1.7.10 사용 버전: Android Studio Chipmunk 2021.2.1 Patch 1 Android Minimum touch target size를 알아보겠습니다. 사용자의 사용성을 위해서 구글에서는 안드로이드 터치 영역 크기를 최소한 이 정도는 해야 한다고 권고하고 있습니다. https://support.google.com/accessibility/android/answer/7101858 바로 48dp x 48 dp 크기입니다. 해당 크기가 사용성을 고려했을 때 최소한의 크기입니다. 이것보다 크기가 작다면 경고를 볼 수 있습니다. 아래는 layout 파일에서 볼 수 있는 경고 창입니다. 현재 터치 영역의 크기가 30dp x 30dp이므로 이것을 48dp x 48dp로 만들라고 알려주고 있습니다. 끝. 카테고리: Android
사용 버전: Python 3.6.8, Kivy 1.11.1 사용 프로그램: Atom 1.43.0 x64 기획: URL 소스 자료를 내 컴퓨터에 저장하는 앱. 파이썬 파일을 exe 파일로 만들어 보겠습니다. PyInstaller를 사용합니다. pip로 설치합니다. pip install pyinstaller 설치가 다 되었으면, 확인해봅니다. 잘 설치되었네요. 자, 만들어 봅시다. Shift + 마우스 오른쪽을 눌러 프로젝트가 있는 창에 PowerShell을 엽니다. cmd를 쳐서 cmd를 실행합니다. python -m PyInstaller --name [exe 파일 이름] [메인 python 파일 위치] 다시 명령어 창이 뜨면, 진행이 다 된 것입니다. dist와 build 폴더가 생기고, spec 파일이 생깁니다. URL Download.spec 파일을 열어줍니다. coll 부분을 다음과 같이 수정합니다. 저장 후, 다시 pyinstaller를 사용합니다. 기존의 파일이 사라진다는 경고문이 나오는데, y를 눌러줍니다. 완료되면, dist 폴더로 가서 Download.exe를 실행합니다. 실행이 됩니다. 하지만 Location을 누르면, 정상 작동하지 않고 꺼집니다. 이를 해결하려면, 다시 만들어야 합니다. cmd로 실행해보면, 이러한 문구가 나옵니다. 모듈 win32timezone이 없다. spec에 추가해줍니다. hiddenimports에 적어줍니다. 다시 pyinstaller로 exe 파일을 만듭니다. 잘 작동되는 것을 확인할 수 있습니다. 끝. 앱: https://play.google.com/store/apps/details?id=starlight.jaehwa.one 코드: https://github.com/shwoghk14/Kivy_for_Starter 카테고리: BlackSmith,...
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.