Swift (스위프트): 사진 라이브러리, 카메라 사용 (스토리보드)

info.plist에서 권한 허용을 묻는 메시지를 설정합니다.   사진을 표시하고자 하는 뷰 컨트롤러 안에 이미지 피커 컨트톨러를 생성합니다. // 사진: 이미지 피커 컨트롤러 생성 let imagePickerController = UIImagePickerController()   viewDidLoad에 컨트롤러와 delegate를 연결합니다. 또한 앱을 최초로 실행했을 때 권한 허용 여부를 묻는 메시지를 출력하는 코드를 작성합니다. (import Photos 필요) override func 더보기…

Swift(스위프트): 피커뷰(Picker View)를 이용해 폰트(글꼴) 리스트 불러오기 (iOS, 스토리보드)

1) 스토리보드에 폰트를 선택할 피커뷰(picker view)와 미리보기 할 레이블을 배치합니다.   2) 다음 IB(InterfaceBuilder) Outlet 연결을 통해 컨트롤러에 UI 컴포넌트를 연결합니다. class SettingViewController: UIViewController { @IBOutlet weak var lblFontExample: UILabel! @IBOutlet weak var pkvAvailableFontList: UIPickerView! //….// }   3) 폰트 목록을 저장할 배열을 생성합니다. // 폰트 리스트의 이름들 저장 배열 더보기…

Swift(스위프트): 프로퍼티 리스트(property list; plist) 읽어오기

출처: Swift 5: How to read variables in plist files?   아래와 같은 plist(property list) 확장자의 파일이 있고 이 파일은 프로젝트의 루트 폴더에 있습니다. <?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”> <plist version=”1.0″> <dict> <key>animals</key> <array> <dict> <key>name</key> <string>Tiger</string> <key>picture</key> <string>tiger_running</string> </dict> <dict> <key>name</key> <string>Jaguar</string> <key>picture</key> <string>jaguar_sleeping</string> 더보기…

iOS 앱을 위한 다양한 오프라인 옵션

원문: The Many Offline Options for iOS Apps   오프라인 모드는 더 이상 앱에 추가하도록 선택할 수 있는 추가 기능이 아닙니다. 많은 사용자가 기대하는 것입니다. 저는 개발자들이 더 나은 방법으로 해결할 수 있는 문제에 대해서 (본인들이) 선호하는 오프라인 솔루션(Core Data)을 강요하는 것을 종종 보았습니다 . 앱이 오프라인에서 작동하도록 하는 방법에는 더보기…

자바스크립트 예제: 텍스트에서 유튜브(YouTube) URL을 감지하고 해당 URL을 자동으로 플레이어로 전환

이 예제는 아래와 같이 게시판 등에서 글을 작성할 때 유튜브 주소를 추가하면, 해당 주소에서 유튜브 동영상 ID를 추출한 후 iframe 플레이어 형태로 변환합니다.   1. 텍스트에서 유튜브 URL을 가져오는 정규표현식을 작성합니다. // 유튜브 URL 찾는 패턴 const youtubeUrl = /(http:|https:)?(\/\/)?(www\.)?(youtube.com|youtu.be)\/(watch|embed)?(\?v=|\/)?(\S+)?/g 이렇게 하면 아래와 같이 유튜브 주소를 찾을 수 있습니다.   더보기…

리액트(React): 모달 팝업시 뒷배경(오버레이) 스크롤 되지 않게 하기

body 태그의 css를 변경합니다. position을 fixed로 하고, top의 위치를 현재 스크롤 위치로 설정한 뒤 overflow-y: scroll; width: 100%; 을 추가 지정하면 스크롤바로 인해 배경의 위치가 움직이지 않고도 스크롤 방지를 할 수 있습니다. useEffect를 사용해 css를 변경하며, 모달이 사라질 때에는 useEffect의 return을 사용해 body의 cssText를 리셋시킨 다음 window,scroll을 이용해 현재 스크롤 위치로 더보기…

워드프레스 ‘댓글 승인제’를 사용중인 경우 댓글 달았을 경우 메시지 표시하기

워드프레스는 특성상 해외 스팸 댓글이 많이 달리기 때문에 사이트를 운영중인 경우 위의 설정처럼 댓글 승인제를 설정하고 사용하는 경우가 많습니다. 그런데 댓글 승인제를 설정해도 댓글 후 아무런 경고 메시지를 보내지 않기 때문에 댓글을 다는 사용자가 시스템 오류 등으로 댓글이 안달린 것으로 착각할 수 있습니다. 그래서 댓글 작성 후 성공 메시지를 표시하려면 더보기…

리액트(React): Redux-saga 기초 사용법 요약 (상태 관리시 부수효과 관리하는 미들웨어)

리액트(React): React Redux 요약 정리 redux-saga 깃허브 역할 redux-saga는 애플리케이션에서 일어나는 사이드 이펙트(side effects) (데이터를 불러오는 비동기 처리나 브라우저 캐쉬에 접근하는 행위들)을 쉽게 관리하며 효과적인 실행, 손쉬운 테스트 그리고 에러 핸들링을 쉽게 해준다.   특징 saga 패턴을 차용 (참고 블로그) 미들웨어로서 역할을 수행 (React는 Redux 액션을 수행하면 Redux-Saga에서 디스패치하여 Redux의 더보기…

iOS 프로그래밍 예제(Swift): 마이크를 통한 소음 데시벨 감지 (마이크 권한 설정, 녹음 진행)

이 예제는 아이폰의 마이크를 통해 소리가 들어오면 dBFS(위키백과 링크)를 측정하여 조용한 상태인지, 소음이 있는지를 검사합니다. 먼저 마이크 권한을 물어보는 메시지에 대한 설정이 필요합니다. 다음 마이크 녹음을 진행하면서 dBFS를 측정하고, 이 값에 따라 소음이 어떤지 메시지를 나타냅니다. dBFS가 -50을 벗어나는 경우 조용한 상태, -10 ~ 0 인 경우 시끄러운 상태이며 0을 더보기…

자바스크립트 예제: 스크롤 이벤트를 사용한 이미지 지연 로딩(lazy loading) 라이브러리 없이

참고 자바스크립트: IntersectionObserver (1) 이미지 lazy-loading 구현 jQuery: 제이쿼리 이미지 지연 로딩(lazy loading) 플러그인 (jQuery Lazy) 자바스크립트: 무한 스크롤 (스크롤 이벤트 이용, 라이브러리 없이)   intersectionObserver를 사용하지 않고 마우스 스크롤 이벤트를 이용해 이미지 지연 로딩(lazy loading)을 하는 방법입니다. 이미지 지연 로딩이란 웹 페이지를 렌더링할때 이미지를 불러오지 않고 사용자가 특정 영역을 더보기…