brew로 swiftlist 설치▼ CocoaPods을 사용해서 설치 할게 아니라면 brew를 실행해서 swiftlint를 설치한다.brew install swiftlint .swiftlint.yml 파일 생성▼ Xcode에서 Empty 파일을 생성하고 파일명을 .swiftlint.yml 으로 지정한다. 파일 숨김 처리를 함으로 Xcode에서 경고창이 ㄸ는데 Use "." 로 선택하고 창을 닫는다.다음은 프로젝트 룰에서 제거할 목록이다.disabled_rules: - colon - comma - control_statement - identifier_name - shorthand_operator - empty_count - line_length - type_name - force_cast..
안녕하세요. 오늘은 옵시디언의 홈페이지(Homepage) 테마에 대해서 알아보겠습니다. 홈페이지 플러그인은 특별한 노트 즉 자주 사용하는 노트를 앱이 실행된 후에 바로 노출하는 플러그인입니다. 노트가 될 수도 있고 Canvas, 워크스페이스 가 될 수도 있는데 아무래도 다양한 정보를 포함할 수 있는 Canvas를 사용하는 것이 여러 이점이 있을 걸로 생각됩니다. 저는 단축키 ⌘ + ⌥ + H 를 이용해서 홈페이지 열 수 있도록 설정해 놓았습니다. ▼ 저는 이렇게 홈페이지를 만들어서 자주 사용하는 노트들을 정리하고 특히나 마지막으로 수정된 리스트를 dataview를 이용해 노출하고 있습니다. ▼ 해당 플러그인을 설치하고 제일 먼저 설정해줄 것은 홈페이지의 위치입니다. 캔버스나 노트를 설정할 수..
커밋 메시지가 없는 커밋을 만들어야 할 경우도 있을 수 있습니다. 하지만 이를 허용하기 위해서는 --allow-empty 옵션을 포함해야 합니다. 이는 메시지 없이 커밋을 생성하는 옵션과 파일의 내용이 변경되지 않은 상태에서 커밋을 생성하는 옵션 두가지가 있습니다. ▼ 이 옵션은 커밋 메시지가 비어 있는 커밋을 허용합니다.git commit --allow-empty-message -m ''▼ 이 옵션은 내용의 변경이 없는 빈 커밋을 허용합니다.git commit --allow-empty -m "This is an empty commit"
SwiftUI 에서 많이 사용되는 @State는 보통 내부에서 사용하기 떄문에 초기값을 할당하고 작업하는 경우가 많습니다. 하지만 외부에서 주입해서 사용할 경우 일반 문자열을 대입하면 에러가 발생합니다. 스위프트UI 에서 @State 값을 동적으로 할당하는 방법을 알아보겠습니다. 다음 코드를 작성해서 초기값을 설정하려면 다음과 같은 에러가 발생합니다. struct PasscodeView: View { @State private var passcode: String init(code: String) { self.passcode = code }}Error: Cannot assign value of type 'String' to type 'State' "String 문자열을 State 타입에 할당 ..
#Preview Xcode에서 CoreData, SwiftData를 Preview에서 보기 위해서는 @Query로 조회한 데이터를 사용할 수 없습니다. 이럴 때는 직접 데이터를 만들어서 테스트하는 방법이 있습니다. 우선 ModelConfiguration 객체를 인 메모리 only 행태로 생성합니다. 그리고 테스트 객체를 만들기 위해 ModelConfiguration 를 통해 ModelContainer를 만듭니다. 마지막으로 만들 때 사용할 모델을 추가해 줍니다. 그리고 이제 Preview에서 사용할 새로운 테스트 객체를 생성합니다. Container를 만들 config 객체는 isStoredInMemoryOnly를 true로 설정합니다. #Preview(traits: .sizeThatFitsLayout)..
Obsidian 이미지 링크 옵시디언을 사용하면 다른 노트앱에 비해서 이미지를 사용하는 빈도가 크지는 않습니다. 아무래도 이미지 내장 시 git에 저장할 내용이 많아지기 때문이죠. 마크다운으로 이미지를 추가하는 경우 다음과 같은 태그를 사용해서 이미지를 링크합니다. 로컬 이미지 ![[이미지 주소]] 웹 이미지 ![](이미지 주소) Obisidian 이미지 사이즈 조정 이미지 사이즈를 변경하려면 파이프( | ) 기호를 이용해 사이즈를 지정합니다. 보통 맥에서 스크린 샷을 찍어서 옵시디언에 넣으면 사이즈가 너무 커서 문제가 되는데 다음 태그를 이용해서 이미지를 줄일 수 있습니다. ![[이미지 주소|100]] 마찬가지로 웹 이미지의 경우 이미지 이름을 넣는 곳에 파이프 기호를 추가해줍니다. ![|100](이미..
iOS 개발시 UIPasteboard 클래스를 이용해서 클립보드에 저장된 데이터를 읽고 쓰는 것이 허용됩니다. UIPasteboard 클래스의 general 속성을 이용해서 pasteboard 객체를 가져와 string 속성에 저장할 수 있습니다. SwiftUI 에서도 동일하게 사용할 수 있습니다. 다음 예제는 문자열을 클립보드에 저장하는 기능을 합니다. let p = UIPasteboard.general p.string = "OK" 반대로 값을 가져와 사용해야 하는 경우 다음과 같이 처리합니다. if let str = p.string { // str 은 클립보드의 데이터 } 다만 iOS 14 이전에는 사용자 동의 없이 클립보드 데이터를 액세스 할 수 있었습니다. 하지만 보안상 문제가 되어 사용자의 동의..
Visual Studio Code 명령 팔레트 종종 파일을 실행하거나 만들때 에디터를 사용하고 싶을때가 있습니다. 특히나 가벼운 툴로 열고 싶을 때가 많습니다. 엉뚱한 프로그램으로 파일이 열릴 때도 있고 또는 터미널에서 실행할 때는 Vim 과 같은 프로그램을 쓰지만 이 또한 불편할 때가 있습니다. 그래서 오늘은 터미널에서 쉽게 가벼운 에디터로 텍스트 파일이나 수정 파일을 열 수 있는 방법을 소개 해드리겠습니다. ▼ 1. 처음 Visual Studio Code를 실행시키면 다음과 같은 화면을 볼 수 있습니다. ▼ 2. Command + P 버튼을 눌러서 명령 팔레트를 실행시킵니다. 그리고 shell 이라고 입력한뒤 엔터를 눌러줍니다. ▼ 3. 이제 Code에서 스크립트를 사용할 수 있는 권한을 묻게 됩니..
리눅스 표준 스트림 유닉스 및 유닉스 계열 운영 체제에서 프로그램(프로세스)과 환경(주변기기) 사이에 미리 연결된 입출력 통로 파일 디스크립터 유닉스에서는 모든 개체를 파일로 관리하며, 프로그램(프로세스)가 파일에 접근하기 위해서 특정 파일의 디스크립터를 이용해 파일에 접근합니다. 셀은 입력과 출력을 위한 세 가지 기본 파일 디스크립터 (File Descriptor - 이하 FD)를 모든 프로세스에 제공합니다. 입력(스트림), 출력(스트림) 줄여서 I/O라고 칭합니다. stdin (FD 0) - 키보드 입력 stdout (FD 1) - 화면 stderr (FD 2) - 오류 실제 /dev 디렉토리를 확인하면 다음과 같이 파일 디스크립터를 파일 형태로 가지고 있는 것을 볼 수 있습니다. 유닉스(Unix)는..
1. 특정 파일을 무시 # DB 접속 파일을 제외 mysql.php 2. 모든 세팅 파일을 무시 # 애스터리스크 (*) 기호를 사용하여 패턴을 정의할 수 있다. # 이런 문자를 셸 글로빙(globbing)이라고 합니다. *.ini 3. 제외하면 안되는 파일 설정 # 설정 파일은 제외하면 안 됨 !mysql.conf 4. .gitginore와 동일한 위치의 파일에 대한 설정 # 현재 디렉터리 안에 있는 파일 무시 /my.txt 5. /my/ 디렉터리 안의 모든 것을 무시 # /my/ 디렉터리 안의 모든 것을 무시 /my/ 6. 하위 디렉터리 패턴 파일 무시 # doc 디렉터리 아래의 모든 .txt 파일 무시 doc/**/*.txt
eventChangedNotification 최근에 스위프트 UI 프로젝트를 진행하고 있습니다. 또한 새롭게 나온 SwiftData 를 적용하면서 여러가지 문제를 해결해 가고 있던 중 CloudKit 동기화까지 진행하게 되었습니다. SwiftData 가 효율적이고 좋은 것은 맞는 것 같지만 너무 자료가 없고 사용자체가 너무 추상화 되어 있기 때문에 세세한 컨트롤이 좀 어렵다고 생각합니다. 물론 제가 그걸 몰라서 그렇긴 하겠지만요. 첫 번째 난관이 Cloud 킷의 로드 완료 이벤트를 알고 싶었는데 해결이 되서 블로그에 남깁니다. ▼ 우선 이벤트 수신을 위해서 @State 로 다음 변수를 선언합니다. eventChangedNotification 는 이벤트가 변경될 때 마다 수신하게 됩니다. @State pr..
~ tilde * asterisk, star ' apostrophe, qutation mark, quote ` backtick, grave accent - hyphen, dash " double qutation mark, double quoutes ! exclamation _ underscore , comma @ at + plus sign . dot # number sign, hash, sharp = equals sign / slash $ Dollar sign | vertical bar, pipe () round bracket, parentheses % percent \ backslash {} culry braket, brace ^ caret ; semicolon [] square bracket & am..