테스트 환경 및 mariadb 버전 10.6.12-MariaDB-0ubuntu0.22.04.1 Failed to Connect to MySQL at \[server ip:3306\] with user ... 데이터베이스에 연결시 문제가 되면 위와 같은 에러를 확인할 수 있습니다. 사용자가 외부에서 접근할 수 있도록 권한을 주었다고 하더라도 mysql이나 mariadb 의 경우 bind-address에 대한 설정을 해주어야 합니다. 다만 대부분의 예제가 mysql 기준으로 되어 있고 mariadb도 이전 버전의 설치 경로로 설명되어 있어 비교적 최신 버전인 10.6.12 버전에서 bind-address 설정하는 방법을 알아보겠습니다. mariadb의 ip 대역을 확인하려면 다음과 같이 netstat 명령을..
Visual Studio Code - Word Wrap VS 코드를 처음 설치하고 텍스트 파일 및 소스파일을 열면 자동 줄 바꿈이 되지 않는 것을 볼 수 있습니다. Visual Studio Code 에서 자동 줄바꿈을 하는 방법은 다음과 같습니다. ▼ 우선 Visual Studio Code를 실행합니다. Code 메뉴를 선택해서 기본 설정 > 설정 메뉴를 열어줍니다. 단축키는 (Command + ,) ▼ 왼쪽 창 탭 메뉴에서 텍스트 편집기(Editor) 메뉴를 선택합니다. 설정 검색에 Word Wrap 으로 검색하거나 직접 스크롤 해서 메뉴를 찾고 기본값 off에서 on으로 변경해줍니다. off (기본값) on wordWrapColumn bounded ▼ 다음과 같은 단축키를 사용하여 자동 줄바꿈 기능을..
버전 표기법 /* 숫자 표기법 (예: 1.0, 2.3.1): 이 방법은 가장 일반적으로 사용되는 표기법입니다. 버전 번호는 일련의 숫자로 표시되며, 점으로 구분된 여러 섹션으로 나눌 수 있습니다. 일반적으로 주요 버전, 부 버전, 패치 레벨 등을 나타내기 위해 사용됩니다. 주요 버전은 대규모 변경 사항이 있을 때 증가하고, 부 버전은 중간 크기의 변경 사항이 있을 때 증가하며, 패치 레벨은 버그 수정과 같은 작은 변경 사항이 있을 때 증가합니다. 알파벳 표기법 (예: 1.0a, 2.3.1b): 이 방법은 주로 개발 초기에 사용되는 표기법입니다. 알파벳은 개발 단계를 나타내며, 주로 'a' (알파), 'b' (베타), 'rc' (릴리즈 후보) 등으로 표시됩니다. 알파 버전은 초기 개발 단계에서 사용되고, ..
CryptoSwift 크립토스위프트는 스위프트로 작성된 오픈 소스 암호화 라이브러리입니다. 이 강력한 라이브러리는 다양한 암호화 알고리즘을 제공하여 데이터 보호를 위한 안전하고 간편한 솔루션을 제공합니다. CryptoSwift은 스위프트 언어의 강력한 기능과 표현력을 활용하여 데이터 암호화, 해시 함수, HMAC, 인증 부호, AES, RSA 등 다양한 암호화 작업을 수행할 수 있습니다. 해당 라이브러리는 대칭 및 비대칭 암호화를 위한 AES, RSA, ChaCha20 등의 암호화 알고리즘을 제공합니다. 간편한 인터페이스를 통해 데이터를 안전하게 암호화하고 복호화할 수 있습니다. 다양한 해시 함수인 MD5, SHA1, SHA256, SHA512 등을 지원하여 데이터의 해시 값을 계산할 수 있습니다. 해시..
Rust 란 Rust는 Mozilla Research에서 개발한 시스템 프로그래밍 언어로, 안전성, 성능, 병행성을 강조합니다. Rust는 메모리 안전성을 보장하면서도 저수준 프로그래밍을 지원하며, 동시성 작업을 위한 기능을 제공합니다. Rust는 넓은 응용 범위를 가지고 있으며, 운영 체제, 임베디드 시스템, 웹 개발 등 다양한 분야에서 사용될 수 있습니다. Cargo 란 Cargo는 Rust의 공식 패키지 관리자이자 빌드 도구입니다. Rust 프로젝트의 종속성 관리, 라이브러리 설치, 빌드, 테스트, 실행 등을 편리하게 처리할 수 있도록 도와줍니다. Cargo는 Rust 커뮤니티에서 널리 사용되며, 프로젝트의 구조화와 의존성 관리를 간편하게 해줍니다. Cargo는 Cargo.toml 파일을 사용하여 ..
UIDocumentPickerViewController ▼ UIDocumentPickerViewController는 파일 선택 기능을 제공하는 뷰 컨트롤러로, 파일 선택 창을 표시하고 사용자가 파일을 선택하면 해당 파일에 대한 처리를 위임합니다. 선택한 파일은 delegate를 통해 알려주며, 이를 활용하여 원하는 작업을 수행할 수 있습니다. 다중 선택을 허용하거나 모달 프레젠테이션 스타일 등을 설정하여 사용자 경험을 조정할 수 있습니다. ▼ 다음 코드는 didPickDocumentsAt에서 선택된 파일의 URL을 가져와 출력합니다. 그런 다음, 선택된 파일이 PDF 파일인지 확인하고, PDF 파일인 경우 파일명을 디코딩합니다. 이후, Data(contentsOf:)를 사용하여 파일 데이터를 가져옵니다...
다국어 앱 스키마 언어 설정 Xcode로 다국어 앱을 제작할 때 여러 언어로 테스트해보기가 쉽지 않은데 Xcode에서 간단한 설정으로 다국어 테스트를 해볼 수 있습니다. 다만 실제 단말에서 테스트하기 위해서는 직접 단말에 시스템 설정에서 Region이나 App Language를 바꿔야 합니다. 하지만 단순히 언어의 Localization을 확인하기 위해서는 시뮬레이터를 여러 개 만들어서 사용해 보기 편리합니다. ▼ 프로젝트 파일을 열고 타겟이 아닌 프로젝트 메뉴에서 해당 프로젝트를 선택하고 하단에 Localizations 영역을 확인합니다. ▼ Xcode 상단바에서 프로젝트 아이콘을 눌러 Edit Scheme 메뉴를 선택합니다. ▼ Run 스키마의 Options 메뉴에서 App Languages를 Eng..
▼ 보통 Rounded Corner를 처리하려면 다음 코드와 같이 레이어에 cornerRadius와 masksToBounds를 주는 것이 일반적입니다. 하지만 이렇게 하면 사각형의 모서리 4방향 모두 Radius 값이 적용됩니다. ▼ 때문에 다음과 같은 익스텐션을 만들어서 활용하는 것이 편리합니다. UIBezierPath로 path를 생성하고 마스킹하는 형태의 방법입니다. 이렇게 하면 UIRectCorner 옵션을 받아서 각 모서리 별로 둥글게 처리할 수 있습니다. ▼ 다음은 .topLeft, .topRight 옵션을 준 모양입니다. 위쪽 왼쪽 오른쪽 모서리만 둥글게 처리된 것을 볼 수 있습니다. ▼ 이번에는 좌측 상단과 우측 하단만 주어서 아이콘 모양의 디자인을 만들수도 있습니다. 이밖에도 다양한 활용..
Xcode 14.3 (14E222b) 기존 엑스코드 버전에서는 문제가 되지 않지만 새롭게 변경된 Xcode에서 빌드를 하면 코코아 팟 에러가 발생합니다. 다음과 같이 libarclite_iphoneos.a 파일을 찾을 수 없다고 하며 앱을 빌드할 수 없는데 이럴 때는 코코아 팟에 빌드 타깃을 변경해주어야 합니다. File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a 플러터(Flutter) 개발에서도 이와 같은 버그가 많이 생기는 것 같고 이 때 역시 빌드 타깃을 변경해주면 해결되는 것 같습니다. 우선 다음과 같이 PodFile 에..
리눅스 파일 권한 리눅스를 사용하다보면 다양한 파일들의 권한을 변경해줘야 할 때가 많습니다. 리눅스 뿐만 아니라 맥이나 기타 OS 에서도 많이 사용하는 chown, chmod 명령을 통해서 파일의 권한을 변경하고 수정하는 방법을 알아보겠습니다. 오늘은 그 중에서도 하위 폴더를 전부 바꿔야 되는 이슈에 대응하기 위한 명령어를 알아보겠습니다. 파일 권한은 다음과 같이 읽기, 쓰기, 실행 권한으로 분류되며 User, Group, Other로 분류됩니다. chown 의 명령의 경우 파일의 오너쉽 관리를 위한 명령어 이며 chmod 명령어는 파일의 권한 관리를 위한 명령어 입니다. chown ▼ chown 명령어는 파일이나 폴더의 오너쉽을 변경할 수 있습니다. 다음과 같이 사용자는 root이며 그룹도 root로 ..
Node.js Node.js는 크롬 V8JavaScript엔진으로 빌드된 자바스크립트 런타임으로 JavaScript 개발을 위해서는 거의 필수로 설치해야 하는 툴입니다. 다음 사이트를 방문에서 직접 설치해도 되지만 brew를 이용해서 설치하는 방법을 알아보겠습니다. brew 패키지 매니저를 통해서 node를 설치합니다. 설치 확인을 위해서 node 명령을 실행해봅니다. npm 도 설치가 되었는지 버전을 확인해 보겠습니다. 만약 Homebrew가 설치 되어 있지 않다면 다음 사이트에서 설치를 합니다. 단순히 터미널에 복사된 스크립트를 붙여넣고 실행하면 됩니다. https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux)..
iOS 개발시 AppDelegate의 applicationWillTerminate 호출이 되지 않거나 macOS의 NSApplicationWillTerminateNotification이 호출되지 않을 때 다음과 같이 Info.plist에서 해당 값을 확인해 볼 필요가 있습니다. 해당 값을 NO 로 설정하고 앱을 재실행하면 terminator가 잘 호출 되는 것을 확인 할 수 있습니다. Application can be killed immediately when user is shutting down or logging out NSSupportsSuddenTermination ▼ 아래 코드는 위젯 상태를 업데이트 하기 위해서 applicationWillTerminate 호출시 로그아웃 명령을 하는 코드로 ..