Swift(스위프트): 제네릭(Generics) – 제네릭 타입, 제네릭 함수, 연관 타입(Associated Type), where 조건절

출처 Generics – The Swift Programming Language    제네릭 (Generics) 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식입니다. 예를 들어, Swift의 Array와 Dictionary 유형은 모두 제네릭 컬렉션입니다.   제네릭이 해결하는 문제 swap(교환) 함수를 구현하고자 합니다. swap은 더보기…

자바스크립트 + abcjs: 노트 프로그래밍 방식으로 하이라이트, 노트 선택(클릭) 방지하기

노트 프로그래밍 방식으로 선택 먼저 ABCJS.renderAbc의 옵션 파라미터에서 add_classes가 true여야 합니다. (아래 노트 클릭(선택) 방지하기 단락의 코드 참조) add_classes: true,   추가하였다면 아래 클래스 목록을 참고하여 abcjs-[클래스이름] 의 HTML DOM에 abcjs-highlight 클래스를 추가하면 됩니다. (태그 이름은 <g>)   예를 들어 악보에서 네 번째 노트의 클래스 이름은 abcjs-n3 입니다. 0부터 시작(zero-based)이므로 더보기…

Swift(스위프트): 앱 최초 설치 후 한 번만 실행하는 작업, 버전 업데이트시에만 실행하는 작업 만들기

Swift(스위프트): 앱 최초 설치 후 한 번만 실행하는 작업, 버전 업그레이드시에만 실행하는 작업 만들기 1: 아래 코드를 프로젝트 내에 추가합니다. import Foundation func checkAppFirstrunOrUpdateStatus(firstrun: () -> (), updated: () -> (), nothingChanged: () -> ()) { let currentVersion = Bundle.main.object(forInfoDictionaryKey: “CFBundleShortVersionString”) as? String let versionOfLastRun = UserDefaults.standard.object(forKey: “VersionOfLastRun”) as? String 더보기…

RxSwift(ReactiveX + Swift): 기본 개념 및 스토리보드 예제 (요약)

RxSwift(ReactiveX + Swift): 기본 개념 및 스토리보드 예제   기본 용어 명령형 프로그래밍 (Imperative Programming) 컴퓨터가 실행할 명령을 순차적으로 작성하는 프로그래밍 방식입니다. 선언적 프로그래밍(Declarative Programming)과 대조적인 방식입니다.   예제 코드 let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] var numbersLessThanFive: [Int] = [] for index in 더보기…

Xcode 프로젝트에 이미지 자르기(crop) 기능 추가: iOS Swift 라이브러리 Mantis 사용 (스토리보드)

Xcode 프로젝트에 이미지 자르기(crop) 기능 추가: iOS Swift 라이브러리 Mantis 사용 카메라 또는 사진을 선택하면 화면에 보여주는 프로젝트가 있는데, 여기서 선택 후 화면에 표시하기 전 크롭(crop) 기능을 이용해 이미지를 자르는 기능을 추가하고자 합니다. Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드)   직접 구현하려면 매우 더보기…

Xcode 프로젝트에 코코아팟(CocoaPods) 설치 및 디펜던시 추가 방법

Xcode 프로젝트에 코코아팟(CocoaPods) 설치 및 디펜던시 추가 Xcode를 이용해서 iOS 프로젝트 등을 개발할 때 서드파티 라이브러리를 사용할 일이 많은데, 대다수 라이브러리들이 CocoaPods(코코아팟)라는 디펜던시 관리자를 이용해 프로젝트 내에 설치해야 합니다.   1. CocoaPods가 설치되지 않았다면 터미널 실행 후 아래 커맨드를 이용해 설치합니다. 인텔(Intel) CPU가 설치된 맥 sudo gem install cocoapods   더보기…

리액트 + 타입스크립트 (React + TypeScript): HTML 요소, 폼의 이벤트 처리

리액트가 아닌 일반 타입스크립트에 대한 이벤트 처리는 아래를 참고하세요, 타입스크립트(TypeScript): HTML 요소에 이벤트 추가   리액트 + 타입스크립트 (React + TypeScript): HTML 요소, 폼의 이벤트 처리 아래와 같이 폼에 대한 이벤트 처리를 하는 JSX를 사용한 리액트 Hook이 있다고 가정합니다. import { useState } from ‘react’ function App() { const [text, 더보기…

Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드)

Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드) 기본적으로 아래 글과 동일한 내용이나 사용성이 개선되었습니다. Swift (스위프트): 사진 라이브러리, 카메라 사용 (스토리보드)   코드 목록 코드에 대한 설명은 밑에 있습니다. This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently 더보기…

Swift(스위프트): Codable을 사용하여 사용자 정의 오브젝트를 UserDefaults에 저장 (프로토콜 지향 접근 방식)

원문 Save custom objects into UserDefaults using Codable in Swift 5.1 (Protocol Oriented Approach)   Swift(스위프트): Codable을 사용하여 사용자 정의 오브젝트를 UserDefaults에 저장 (프로토콜 지향 접근 방식) iOS는 Int, String, Float, Double, Bool, URL, Data 또는 이러한 유형의 컬렉션과 같은 UserDefaults에 직접 저장할 수 있는 여러 유형의 객체를 지원합니다. 하지만 더보기…

Swift(스위프트): 컬렉션 뷰의 셀을 길게 누르면(long press touch) 애니메이션 나타나도록 하기

참고 iOS 프로그래밍: 컬렉션 뷰 (Swift, 스토리보드) – 컬렉션 뷰 추가, 커스텀 셀 작성   Swift(스위프트): 컬렉션 뷰의 셀을 길게 누르면(long press touch) 애니메이션 나타나도록 하기 개요 기존의 프로젝트 코드를 기반으로 롱 프레스 터치(길게 터치하기) 작업을 추가하고, 롱 프레스 시에 셀이 살짝 작아졌다 놓으면 다시 원상 복귀하는 애니메이션이 추가되도록 만들어 더보기…