기본 콘텐츠로 건너뛰기

12월, 2015의 게시물 표시

esp8266 - nodemcu와 그 친구들

nodemcu 가 계속 버전업을 해서 다양한 모듈들을 아주 쉽게 사용할 수 있도록 적극적인 지원을 하고 있다.

물론 이 모듈들은 http://nodemcu-build.com/ 같은 곳에서 추가/삭제를 자유롭게 하여 커스텀 빌드를 만들 수 있다.

하나씩 살펴보자.

WS2812WS2801BMP085TSL2561HX711DS18B20DHT11, DHT21, DHT22, DHT33, DHT44u8glib - sh1106_128x64, ssd1306, ssd1309_128x64, ssd1327_96x96_gr, uc1611 ... 헉헉 목록만 봐도 숨찬다.
RGB LED 계열 WS2812
WS2801 (Strip 형태)
압력 센서 BMP085
조도센서
TSL2561
무게센서 (load cell)
HX711
온도센서 DS18B20

온습도 모듈
DHT11
DHT21

DHT22
DHT33

DHT44


디스플레이류 (양이 매우 많다)

ILI9163

ILI9341

PCF8833

SSD1351
이외에도 엄청 다양;;;;; 자료 찾기가 겁난다.
물론 꼭 ESP8266에서만 작동하는 모듈들은 아니지만 실제로 사용시에 속도 문제로 바이너리를 사용해야하는 경우도 있고 라이브러리 사용이 복잡하다던가 여러가지 경우가 있을 수 있으므로 우선적으로 고려해두면 좋다.

iOS/swift - segue 연결 후 중간에 가로채기 하고자 할때 : shouldPerformSegueWithIdentifier

segue로 storyboard를 연결해 놓고 특정 조건일 때 해당 segue로 연결을 막고 싶은 경우가 있다.

가령 특정 메뉴를 들어가고자 할땐 로그인이 되있지 않다면 로그인 화면으로 유도하려면 segue를 중간에 가로채야 한다.


UIViewController 안에서 shouldPerformSegueWithIdentifier 를 사용하여 구현할 수 있다.
NeedLoginSegue 로 이동할 경우 사용자 정보( checkUserInformation(userDefaults) )가 false면 LoginSegue 를 열게 하는 코드는 다음과 같다.
overridefunc shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool { if identifier == "NeedLoginSegue" { ifcheckUserInformation(userDefaults)==false { self.performSegueWithIdentifier("LoginSegue", sender: nil)             } returnfalse         } returntrue     }
unwind와 함께 빈번하게 쓰는 패턴이니 기억해두자.

iOS 앱 제출 전 점검사항.

App 정보
현지화 가능한 정보 이름: 255자 개인정보 취급방침 URL : (선택사항)
일반정보 번들ID - reverse domain 기본언어 - 한국어 등 SKU - App Store에 표시되지 않는 App의 고유한 ID 카테고리 - (2개) 건강 및 피트니스 게임 교육 금융 날씨 내비게이션 뉴스 도서 라이프 스타일 비즈니스 사진 및 비디오 생산성 소셜 네트워킹 쇼핑 스포츠 엔터테인먼트 여행 유틸리티 음식 및 음료 음악 의학 잡지 및 신문 참고 카탈로그
가격 및 사용가능 여부
제출 준비 중 -  버전정보 App 동영상 미리보기 최대 5개 스크린 샷 4.7, 5.5, 4, 3.5, iPad, iPad Pro
설명 - 4000자 키워드 - 100자 지원 URL
마케팅 URL - 선택
App 정보
App 아이콘 - 아이콘은 App Store에서 사용되며 최저 해상도가 72DPI이고 RGB 색상 영역에 있는 JPG 또는 PNG 형식이어야 합니다. 레이어나 둥근 모서리가 있어서는 안 됩니다. (png일 경우 투명 알파채널이 있어도 안됨)
거래 담당자연락처 정보 - 한국 App Store에서 App과 함께 표시되는 추가 정보를 제공할 수 있습니다. 이 정보는 한국 App Store에만 나타납니다.
대한민국 App Store의 거래 담당자 연락처 정보를 표시합니다.
저작권 - App에 대해 독점 권한을 가진 개인 또는 법인의 이름으로, 앞에 권한을 획득한 연도가 옵니다(예: ‘2008 Acme Inc.’). URL을 제공하지 마십시오.
App 심사 정보 연락처 정보 - App 심사 팀에서 궁금한 점이 있거나 추가 정보를 필요로 할 경우에 연락할 조직의 담당자입니다.
데모 계정 - App에 대해 전체 접근 권한을 얻기 위한 사용자 이름과 암호입니다. 이 계정은 심사 과정 중에 사용되며 만료되어서는 안 됩니다. 메모 필드에 추가 계정을 위한 세부 정보를 포함하십시오.
메모 - 심사 과정 중에 도움이 될 만한 App에 대한 추가 정보입니다. App별 설정처럼 App을 테스트하는 데 필요할 수 있는 …

Xcode swift

http://en.swifter.tips/selector/

notification 을 observe 할일이 있어 찾아봄.

NSNotificationCenter.defaultCenter().addObserver(self,
        selector: "callMe", name: "CallMeNotification", object: nil)

selector는 그냥 string이네
대신 저 callMe

@objc private func callMe() {
    //...
}

이렇게 써야하는 것.
참으로 불완전하다.

unwind(segue 되돌아가기)도 좀 헤메었다.
부르는 쪽에서 exit를 아래와 같이 만들고 (함수명은 자유)

@IBActionfunc unwindToHomeDetail(segue:UIStoryboardSegue) {

}
unwind를 실행하는 쪽에선 Navigation Controller 안에 있지 않으면 작동하지 않았다. 두 개를 동시에 쓸땐 어케되나.

http://stackoverflow.com/questions/23755974/cocoapods-pod-install-takes-forever 도중 cocoapod이 무한 install 대기 시 pod repo remove master pod setup pod install 아이고 고맙습니다.
괴로운 문제가 또
UIView에 테두리를 어떻게 두르느냐? 코드로 안하고 방법이 없나.
Picker로 사진을 찍을때 1280x960 으로 처리할 수 있다.
scale 문제
func scaleImage(image: UIImage)->UIImage { // 이미지를 354*472 로변환, po let sizeRatio:CGFloat = 354.0/image.size.width/2 let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(sizeRatio, sizeRatio)) let hasAlpha = fa…