사용 언어: Swift 5 사용 버전: Xcode Version 16.4 (16F6) iOS 오류 Undefined symbol Testing.Trait를 알아보겠습니다. Xcode를 최신 버전으로 업데이트해서인지, OS를 최신 버전으로 업데이트해서 인지, 잘 되던 빌드가 갑자기 안되었습니다. 오류 내용은 다음과 같습니다. Showing Recent Messages Could not find or use auto-linked framework 'CoreAudioTypes': framework 'CoreAudioTypes' not found Could not find or use auto-linked framework 'Testing': framework 'Testing' not found Could not parse or use implicit file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/SwiftUICore.framework/SwiftUICore.tbd': cannot link directly with 'SwiftUICore' because product being built is not an allowed client of it Undefined symbol: associated type descriptor for Testing.Trait.TestScopeProvider Undefined symbol: protocol descriptor for Testing.SuiteTrait Undefined symbol: method descriptor for Testing.SuiteTrait.isRecursive.getter : Swift.Bool Undefined sym...
사용 버전 : 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.0 사용 버전: Android Studio Hedgehog 2023.1.1 안드로이드 컴포즈 Coil library를 알아보겠습니다. Coil은 Kotlin Coroutines를 사용하는 이미지 불러오는 라이브러리입니다. 이미지 URL 주소를 넣으면 그것을 불러오고 Cache(캐시) 처리까지 해줍니다. 이것을 수동으로 구현하려면 코드가 양이 많은데, Coil을 쓰면 간단하게 사용할 수 있습니다. 아래는 공식 사이트입니다. https://coil-kt.github.io/coil/ Coil은 Glide와 많이 비교되는데요. Glide 또한 이미지를 불러오는 라이브러리입니다. 아마 Glide는 Java로 이루어져 있고, Coil은 Kotlin으로 이루어져 있을 겁니다. 요즘은 앱들이 대부분 kotlin으로 만들기 때문에 라이브러리도 kotlin 쪽으로 옮기는 추세로 보입니다. Coil에는 이러한 장점이 있다고 하네요. Compose에서 사용법을 알아봅시다. 앱 용 build.gradle에 implementation("io.coil-kt:coil-compose:2.5.0")를 적어줍니다. Sync now를 눌러주세요. AsyncImage를 사용하는데요. 아래처럼 여러 속성들을 정의할 수 있습니다. 아래처럼 정의를 해봤습니다. 어랏. onLoading에 진행 바를 넣고 싶은데, 넣어지지 않는군요. 그렇다면 SubcomposeAsyncImage를 사용합니다. 최종 형태입니다. 실행해 볼까요? 참고 프로젝트: https://github.com/Jaehwa-Noh/Practice-Amphibians/tree/compose-amphibians-app 끝. 카테고리: Android, Compose
사용 버전 : KiCad 5.1.0 kicad 회로도 만들기에 대해서 알아보겠습니다. 우선, 프로젝트를 만듭니다. 파일 - 새 파일 - Project... 'Create a new directory for the project'를 눌러주면, 폴더도 같이 생성됩니다. 'Schematic Layout Editor'를 눌러줍니다. 맨 처음 실행하면, 라이브러리 설정이 나옵니다. 추천(recommended) 하는 항목을 선택합시다. 위와 같은 화면이 나옵니다. '키보드 A'를 눌러줍니다. led와 저항이 있는 간단한 회로를 그려보겠습니다. 적당한 위치에 '마우스 좌 클릭'을 합니다. 화면 이동은 '마우스 휠 버튼'입니다. 같은 과정으로 저항도 추가합니다. 소자의 회전은 '키보드 R'입니다. '키보드 P'를 눌러줍니다. 5V를 넣어줍니다. GND도 넣어줍니다. 사이에 전선을 넣어줍니다.'키보드 W'입니다. 저항과 LED 위에 '?'가 있습니다.이것은 소자가 확정되지 않았다는 뜻입니다. 확정해줍니다. Annotate schematic symbols를 눌러줍니다. Annotate를 눌러줍니다. complete(완료) 되면, 닫기를 눌러줍니다. 아래 그림과 같이 '?'가 사라지고, 숫자가 자리 잡은 것을 볼 수 있습니다. 저항 위에 있는 'R'을 저항값으로 변경해봅시다. 위와 같이, 마우스를 올리고 '키보드 E'를 눌러줍니다. 변경 창이 나옵니다. 5k로 변경하고, 확인을 눌러줍니다. R이 5k로 변경된 것을 확인할 수 있습니다. 다음은 풋프...
사용 버전: Kicad 5.1.4 저번 시간에 이어서 Freeroute를 사용해보겠습니다. 각 PCB 제조사마다 디자인 룰이란 것이 존재합니다. 우리는 그것에 맞추어서 선이나 구멍을 만들어줘야 합니다. 디자인 룰 설정을 합시다. 우선 PCB Layout Editor을 실행합니다. 파일 - Board Setup을 누릅니다. Design Rules - Net Classes를 누릅니다. 위의 창에서 디자인 룰을 설정합니다. '+'를 눌러 디자인 룰을 새롭게 만들든지, 기존의 Default를 변경하든지 편하신 대로 조정해줍니다. 유격: 선과 선 사이 간격 트랙 두께: 선 굵기 Via Size: Via 납 지름 비아 드릴: Via 구멍 지름 uVia Size: 모름 uVia Drill: 모름 dPair Width: 모름 dPair Gap: 모름 저는 Power Class를 추가하여, +5V와 GND에 Assign To Selected Nets로 한꺼번에 적용시켰습니다. 나머지 전선은 Default Class 적용을 받고, +5V와 GND만 Power class 적용을 받습니다. Ctrl + S로 저장을 한 번 해줍니다. 파일 - 내보내기 - Specctra DSN... 을 눌러줍니다. 적당한 위치에 dsn 파일을 저장합니다. NetBeans에서 Autoroute를 실행합니다. Open Your Own Design을 눌러, 아까 저장한 dsn 파일을 불러옵니다. Autorouter를 눌러줍니다. 전선 긋기, 최적화하기 순으로 진행되고, 완료가 되면, Postroute completed라는 문구가 나옵니다.전선 긋기나 최적화 중 마우스 왼쪽 버튼을 누르면, 그 상태로 정지됩니다. 최적화가 필요 없으면, 정지 후 바로 PCB에 사용하셔도 됩니다. File - Export Specctra S...
사용 프로그램 : MuseScore 3 총보와 파트보에 대해서 알아보겠습니다. 총보는 모든 악기들의 보표가 표시된 악보입니다. 보표의 악기 순서는 다음과 같습니다. 목관악기, 금관악기, 타악기, 독주 악기(피아노, 하프), 현악기 파트보는 자신이 연주하는 악기에 대한 보표만 존재하는 악보입니다. 총보(score) 파트보(part) 위의 악보에서 Flute 1은 첫마디를 한 뒤, 31마디는 아무 음도 없습니다. 그래서 뒤에 31로 숫자 적힌 긴 막대로 표시됩니다. Flute 2의 경우는 앞 2마디를 쉬고, 연주하고, 뒤 29마디를 쉽니다. 끝. 카테고리: Music
사용 버전 : Windows 10 home 윈도우 기본 실행 앱 설정하기에 대해서 알아보겠습니다. 저는 예제로, xml 파일의 기본 실행 앱을 변경해보겠습니다. '.xml'파일의 기본 연결 프로그램이 internet explore인 것으로 보입니다. 다른 프로그램으로 변경해보겠습니다. 기본 실행 앱 설정하기 방법에는 두 가지가 있습니다. 첫 번째는 다음과 같습니다. 설정을 열어줍니다. 앱을 눌러줍니다. 기본 앱 - 파일 형식별 기본 앱 선택을 눌러줍니다. 변경할 확장자를 찾아주고, 프로그램을 눌러줍니다. 그러면, 아래와 같이 앱 선택이 나옵니다. 변경하고 싶은 앱으로 선택하면 완료됩니다. 하지만, 저는 위의 앱 선택 목록에 원하는 프로그램이 보이지 않네요. 두 번째 방법입니다. 파일 우측 클릭 - 연결 프로그램 - 다른 앱 선택 (만약 연결 프로그램에 원하는 프로그램이 있다면, 그냥 선택하시면 됩니다.) 추가 앱을 눌러줍니다. 다행이 제가 찾는 프로그램이 있군요. 프로그램을 선택합니다. (항상 이 앱을 사용하여 .xml 파일 열기를 클릭하면, 항상 해당 프로그램으로 열립니다.) 만약 없다면, "이 PC에서 다른 앱 찾기"를 눌러 찾아주세요. 해당 설정이 마치면, 완료입니다. 위와 같이, 맨 처음 internet explore였던 아이콘이, MuseScore 3으로 변경되었습니다. 끝. 카테고리: Windows
사용 버전: Android Studio 4.0 사용 언어: Kotlin 1.3.72 안드로이드 Text Fields Softkeyboard 비활성 하기를 알아보겠습니다. Text Fields를 누르면 자동으로 Softkeyboard가 나타납니다. 눌러도 키보드가 자동으로 나타나지 않게 하려면, showSoftInputOnFocus를 사용합니다. 끝. 카테고리: Android
일본어 문장부호를 알아보겠습니다. 우리나라 대한민국에서 사용하는 문장부호들과 비교해보겠습니다. 한국의 작은따옴표('')를 일본에서는 낫표(「」)로 표시합니다. 한국의 큰따옴표("")를 일본에서는 겹낫표(『』)로 표시합니다. 한국의 쉼표(,)를 일본에서는 모점(、)으로 표시합니다. 한국의 마침표(.)를 일본에서는 고리점(。)으로 표시합니다. 한국의 느낌표(!)를 일본에서는 고리점(。)으로 표시합니다. 한국의 물음표(?)를 일본에서는 고리점(。)으로 표시합니다. 일본에는 마침표, 물음표, 느낌표가 모두 고리점으로 표시되기 때문에 잘 생각해서 문장을 이해해야 할 것 같네요. 끝. 카테고리: 언어 공부
사용 언어: 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나...
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.