사용 버전: 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(...
사용 프로그램 : MuseScore 3 총보와 파트보에 대해서 알아보겠습니다. 총보는 모든 악기들의 보표가 표시된 악보입니다. 보표의 악기 순서는 다음과 같습니다. 목관악기, 금관악기, 타악기, 독주 악기(피아노, 하프), 현악기 파트보는 자신이 연주하는 악기에 대한 보표만 존재하는 악보입니다. 총보(score) 파트보(part) 위의 악보에서 Flute 1은 첫마디를 한 뒤, 31마디는 아무 음도 없습니다. 그래서 뒤에 31로 숫자 적힌 긴 막대로 표시됩니다. Flute 2의 경우는 앞 2마디를 쉬고, 연주하고, 뒤 29마디를 쉽니다. 끝. 카테고리: Music
사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.3.72 안드로이드 특정 SDK Version 설정하기를 해보겠습니다. 안드로이드 API에는 Level이 존재합니다. 안드로이드 버전에 따라 사용 가능한 level이 다릅니다. 아래의 경우 현재 SDK 최소 버전은 21인데, 사용하고자 하는 API는 23이라서 사용할 수 없다고 오류가 나온 상태입니다. 두 가지 해결 방법이 존재합니다. 하나는 app 용 build.gradle의 minSdkVersion을 23으로 수정하는 방법입니다. 위의 방법은 고작 API 하나 때문에 포기해야 하는 Android 버전이 많아집니다. 다른 하나는 23 이상인 버전에서만 작동되게 만드는 것입니다. Build.VERSION.SDK_INT를 사용하여 버전을 체크합니다. 위의 사진처럼 하게 되면, 낮은 버전에서는 위의 API가 작동하지 않고, 높은 버전에서만 작동되게 됩니다. 끝. 카테고리: Android
일본어 문장부호를 알아보겠습니다. 우리나라 대한민국에서 사용하는 문장부호들과 비교해보겠습니다. 한국의 작은따옴표('')를 일본에서는 낫표(「」)로 표시합니다. 한국의 큰따옴표("")를 일본에서는 겹낫표(『』)로 표시합니다. 한국의 쉼표(,)를 일본에서는 모점(、)으로 표시합니다. 한국의 마침표(.)를 일본에서는 고리점(。)으로 표시합니다. 한국의 느낌표(!)를 일본에서는 고리점(。)으로 표시합니다. 한국의 물음표(?)를 일본에서는 고리점(。)으로 표시합니다. 일본에는 마침표, 물음표, 느낌표가 모두 고리점으로 표시되기 때문에 잘 생각해서 문장을 이해해야 할 것 같네요. 끝. 카테고리: 언어 공부
사용 버전 : 5.1.0 kicad 기존 회로도 수정 및 추가에 대해서 알아보겠습니다. 'Schematic Layout Editor'를 눌러줍니다. 아래의 화면이 나옵니다. '키보드 A'를 누릅니다. 우리가 추가한 소자가 보입니다. 적당한 위치에 놓습니다. 전원을 연결할 커넥터도 추가해줍니다. 적당한 위치에 놓습니다. 시멘트 저항을 지나는 LED 회로를 추가하겠습니다. LED를 복사합니다. '키보드 C' 이번엔 직접 전선 연결 말고, 레이블 기능을 사용해 보겠습니다. '키보드 L'을 누릅니다. 적당한 이름과 크기를 설정하고, 확인을 누릅니다. 다음과 같이 놔둡니다. '키보드 C'로 복사를 해서, 맞은편 LED에도 붙여줍시다. '키보드 R'로 회전 가능합니다. 'Label'기능은 같은 이름을 가진 것끼리 전선으로 연결해줍니다. 선이 복잡하게 있으면, 보기 힘들기 때문에 Label을 많이 사용합니다. 나머지 부분은 다음과 같이 똑같이 만들어주세요. 'Assign PCB footprints to schematic symbols'를 눌러줍니다. 'Annotate'를 누릅니다. 다음과 같은 창이 나옵니다. 'View selected footprint'를 누르면, footprint를 미리 볼 수 있습니다. 적당한 footprint를 설정해줍니다. 확인을 눌러줍니다. 'Perform electrical rules check'를 눌러줍니다. 'Run'을 누릅니다. 이상이 ...
사용 언어: Kotlin 1.9.0 사용 버전: Android Studio Hedgehog 2023.1.1 Patch 1 안드로이드 컴포즈 Hilt를 알아보겠습니다. Hilt는 DI(Dependency Injection, 의존성 주입)를 편하게 하기 위한 라이브러리입니다. Dagger라는 DI 라이브러리를 Android에 사용하기 편하게 수정한 게 Hilt입니다. 공식 사이트입니다. https://dagger.dev/hilt/ 참고 프로젝트: https://github.com/Jaehwa-Noh/Practice-Amphibians/tree/compose-hilt-amphibians-app 우선, 이러한 dependencies가 필요합니다. app 용 build.gradle에 현재 필요한 두 개만 적어줍니다. implementation("com.google.dagger:hilt-android:2.50") kapt("com.google.dagger:hilt-compiler:2.50") kapt를 인식하지 못하네요. Project 용 build.gradle로 갑니다. kotlin("kapt") version "1.9.0"을 적어줍니다. 그 후, app 용 build.gradle로 와서 kotlin("kapt")를 적어줍니다. 그리고 밑에 kapt를 적고 correctErrorTypes = true를 적어줍니다. Sync now를 눌러주세요. 간편하게 사용하기 위한 Hilt Gradle Plugin을 추가해 줍시다. project 용 build.gradle로 갑니다. id("com.google.dagger.hilt.android") version "2.50" apply false 추가해 줍니다. app 용 build.gralde로 갑니다. id("com.google.dagger.hilt.android") enableAggreg...
사용 버전: Python 3.7.6, OpenCV 4.2.0 파이썬 OpenCV 빈 화면 만들기를 해보겠습니다. 검정 빈 화면을 만들기 위해서는 numpy가 필요합니다. img1의 경우는 color로 불러들었을 때를 위한 빈 화면이고, img2의 경우는 grayscale로 불러들었을 때의 빈 화면입니다. 끝. 카테고리: Python, cv2
사용 프로그램 : MuseScore 3 음악 악상기호(Musical symbols)에 대해서 알아보겠습니다. 아티큘레이션(Articulation marks) 스타카토(Staccato)입니다. 스타카토는 원래 음표 길이보다 짧게 끊어서 치기 때문에 통통 튀는 느낌이 듭니다. 악센트(Accent)입니다. 악센트는 소리가 크게 나도록 음을 연주합니다. 테누토(Tenuto)입니다. 테누토는 원래 음표 길이대로 치거나 조금 더 길게 치는 것을 나타냅니다. 페르마타(Fermata)입니다. 페르마타는 음을 길게 유지합니다. 보통 두 배 정도라고 하네요. 반복과 종결(Repetition and codas) 트레몰로(Tremolo)입니다. 작대기 하나는 8분음표 속도로, 작대기 둘은 16분음표 속도로, 작대기 셋은 32분음표 속도로, 작대기 넷은 64분음표 속도로 반복해서 칩니다. 도돌이표(Repeat signs)입니다. 도돌이표 사이를 한 번 더 반복합니다. 만약 왼쪽 도돌이표가 없으면, 악보의 처음으로 돌아갑니다. 다카포(Da capo)입니다. 곡의 처음으로 돌아가라는 뜻입니다. 세뇨(Segno)와 달세뇨(Dal segno)입니다. 달세뇨는 세뇨가 있는 곳으로 가라는 뜻입니다. 코다(Coda)입니다. 반복할 시, 양옆에 코다가 있는 마디는 연주하지 않습니다. 위의 프로그램에서는 왼쪽 코다를 코다 기호 대신, To Coda로 표시하는군요. 끝. 카테고리: Music
사용 버전: 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,...
사용 버전: OpenCV 4.5.2 사용 프로그램: Microsoft Visual Studio 2019 16.9.4 openCV 모폴로지 침식, 팽창하는 법을 알아보겠습니다. 영상의 팽창은 흰색 픽셀을 늘리는 역할을 합니다. 영상의 침식은 흰색 픽셀을 줄이는 역할을 합니다. 영상의 열기는 침식 후, 팽창을 실행하여 노이즈를 어느 정도 제거합니다. 영상의 닫기는 팽창 후, 침식을 실행하여 홀을 어느 정도 제거합니다. 사용할 이미지는 다음과 같습니다. 침식(Erosion)을 하기 위해서는 erode() 함수를 사용합니다. 괄호 안에는 InputArray(src), OutputArray(dst), InputArray(kernel), Point(anchor), int(iterations), int(borderType), const Scalar(&borderValue) 따위가 들어갑니다. src에는 원본 영상이 들어갑니다. dst에는 출력 영상이 저장될 Mat이 들어갑니다. kernel은 침식 영상을 만드는데 사용할 커널입니다. Mat()을 사용하면 기본 내장 커널을 사용합니다. anchor는 커널에서 값이 추출될 곳인데, 기본은 (-1, -1)로 가운데를 가리킵니다. iterations는 반복할 횟수입니다. borderType은 커널이 닿지 않는 가장자리 부분에 대한 정의입니다. 기본으로 BORDER_CONSTANT를 사용합니다. borderValue는 커널이 닿지 않는 가장자리 부분에 대한 값 정의입니다. 기본으로 morphologyDefaultBorderValue()를 사용합니다. 기본 커널로 5 ...
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.