Category Archives: Apple

[Apple] WWDC 2015 Keynote Summary

OS X, iOS by Craig

OS X

  • Yosemite -> 55% adoption rate (7% for windows 8.1)
  • El Capitan -> Experience, Performance
  • Experience
    • Spotlight, Built-in apps,
    • Shake mouse cursor, it goes magnified.
    • Gestures(swipe to delete, etc)  on Mail adopt iOS’s
    • Comes ‘Pin Site’ and music mute function on Safari
    • Spotlight now have New, Weather and even moving
    • Tab of new mail when it’s full screen
    • Split screen by full screen button(green one), click, hold and drag.
    • Easy access to SpaceBar
  • Performance
    • Metal for Mac: OpenGL natively runs on Metal
    • Metal is computed powered by OpenCL and OpenGL
    • Commercial that adopt Metal: 2K, Unity, Blizzard, Feral, Unreal Engine, The Foundry, Campo Santo, Autodesk, aspyr
  • Free update on Fall, 2015

iOS

  • Adoption rate: 83% (12% for Android)
  • iOS 9: Foundation, Intelligence, Apps, iPad
  • Siri 1B request per week, 5% miss, 40% faster
  • Siri is now Proactive Assistance
  • Swipe to left can search now
  • API for Search now opened
  • Deep linking to Apps from search result
  • Privacy: Anonymous, Not associated with Apple ID, Randomized identifier, Not linked to other Apple Services, Not shared to third party, …
  • ApplePay – UK in July
  • ApplePay app is Wallet
  • Notes has formatting now, can make checklist, can drawing inside notes. (응: Just like an Evernote)
  • Transit app could show routing bus, train and subway
  • News apps iOS9-NewApps

 

 

 

 

 

 

 

 

  • iPad
    • QuickType
    • Two-finger trackpad over keypad to moving cursor
    • Shortcut to App Switching like OS X
    • Multitasking
      • Slideover on right
      • Split-screen for touching divider on Slideover
      • Picture-in-picture
    • Developer APIs with Size Classes and Auto layout for iPhone and iPad
    • PIP on iPad Air, iPad Air 2, iPad mini 2, iPad mini 3
    • Split-screen on iPad Air 2
  • Extend Battery life with single switch called ‘Low Power Mode’
  • Need only 1.3 GB for upgrading to iOS 9
  • Dev (69:40)iOS9-NewFeatures

 

 

 

 

 

 

 

    • OCR accessory setup
    • Search extensibility
    • Audio unit extension
    • VPN plug-in extension
    • Swift 2
    • Map customization
    • Direct document
    • UI testing in Xcode
    • Notification actions
    • Third party notifications
    • Sensor profile
    • App thinning
    • Motorized windows profile
    • Flyover and Walkthrough  <=== ???
    • New Health data types
    • Code coverage
    • Gaming APIs
    • Automated shades profiles
    • Layout guide
    • Shortcut Bar
    • Object-oriented Contacts
    • New multitasking APIs
    • New HomeKit profiles
    • iCloud open in place
    • Home security profile
    • Storyboard references
    • App transport security API
    • Stack view
    • Wireless CarPlay
    • HomeKit iCloud remote access
  • New framework – GameplayKit, Model I/O, ReplayKitiOS9-NewFrameworks

 

 

 

 

 

 

 

  • HealthKit
  • HomeKit – Security over iCloud
  • CarPlay without plug-ins
  • Swift 2 – Whole Module Optimizations (73:12)Swift2

 

 

 

 

 

 

 

    • Recursive nested functions
    • Availability checking
    • Multi-payload enums
    • Swift 1.2 to 2.0 Migrator
    • Shorter compile time
    • New playgrounds
    • @testable
    • Improved option sets
    • do { }
    • Parallelized WMO
    • Markdown in comments
    • Protocol extensions
    • Faster debug mode
    • Faster runtime
    • defer
    • Objective-C generics
    • Nullability in Objective-C
    • Error handling model
    • Mutability warnings
    • Synthesised “headers” in Xcode
    • C function pointer APIs
    • Pattern matching in “if”
    • guard
    • SIMD support
  • Swift 2 is Open Source by the end of 2015
  • Public beta on July, 2015
  • Free upgrade in Fall, 2015
  • Upgrade to iOS for all of iOS 8 devices

App Store

  • 100 Billion App downloads
  • 30B dollars to Developers
  • 98% of all Fortune 500 companies have an iOS app
  • In 2015 the App Store has 1,500,000 apps
  • There are 195,000 educational apps in the App Store (81:45)
  • The average person has 119 apps (83:30)
  • 850 apps downloaded every second

watchOS by Kevin Lynch

  • Enhancement
    • Photo face
    • Time-Lapse face
    • Complications – customized watch face with watchOS SDKs
    • Time Travel
    • Night-stand for clock
    • Communicating
      • Friends, Digital Touch
      • Reply to Email
      • FaceTime Audio
      • Health & Fitness
    • Transit
  • WatchKit – Native App Support: You could app logic directly on Apple Watch now (94:58)
  • Apple Watch connect directly to Wi-Fi with WatchConnectivity.framework
  • New Features (95:35)watchOS-NewAPIs
    • Accelerometer => Golf Swing
    • Watch Connectivity
    • Security
    • HomeKit
    • Core Foundation
    • Audio
    • Video
    • NSURLSession
    • Core Motion
    • MapKit
    • ImageIO
    • WatchKit
    • Core Graphics
    • ClockKit
    • HealthKit
    • EventKit
    • CoreData
    • Digital Crown
    • Contacts
    • Microphone
    • Taptic Engine
    • Core Location
    • Animation & Layout
    • PassKit
  • Developer Beta available today
  • Free upgrade on Fall, 2015

One more thing…

  • Apple Music by Eddy Cue
  • New music ecosystem
  • Revolutionary music service
  • 24/7 global radio => b1: Beats One by Apple
  • Connecting fans with artists
  • Lauching +100 countries on 30th June, 2015
  • Android app coming in Fall, 2015
  • Apple Music for $9.99 USD per month with 1st 3 month free
  • Apple Music for $14.99 USD for 6 family members

[iOS] How to build FreeRDP for iOS properly

Install HomeBrew for OS X
Goto http://brew.sh
Run followings on Terminal.app.
 
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
 
Run brew command for install CMake and PkgConfig.
 
brew install cmake pkg-config
 
 
Download FreeRDP-master from github
Download FreeRDP-master.zip from github.
Read carefully README.iOS file.
 
Enter scripts directory and edit  OpenSSL-iFreeRDP.diff file like followings:
Add “ -miphoneos-version-min=4.3” on armv7 and armv7s lines.
before
+”darwin-armv7s-cc”,”/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang:-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/__IOSSDK__ -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch armv4 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib”,
+”darwin-armv7-cc”,”/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang:-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/__IOSSDK__ -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch armv4 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib”,
After
+”darwin-armv7s-cc”,”/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang:-arch armv7s -miphoneos-version-min=4.3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/__IOSSDK__ -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch armv4 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib”,
+”darwin-armv7-cc”,”/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang:-arch armv7 -miphoneos-version-min=4.3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/__IOSSDK__ -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch armv4 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib”,
 
Run followings on Terminal.app.
cd scripts
./OpenSSL-DownloadAndBuild.command
 
Move openssl directory into external directory if not exist.
cd scripts
mv openssl ../external
 
Run followings on Terminal.app.
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/iOSToolchain.cmake -GXcode -DPKG_CONFIG_EXECUTABLE=/usr/local/bin/pkg-config
 
 
Make a script for changing absolute paths to relative paths
Run vi on Terminal.app or TextEdit.app and add followings in `changePathToRelative.command`.
#!/bin/sh
#
# Written by Henry Kim on May 28, 2015, 11:10
#
PROJECT=”FreeRDP.xcodeproj/project.pbxproj”
TARGET=$(PWD)

if [ -f $PROJECT ]; then
cp $PROJECT $PROJECT.bak
cat $PROJECT.bak | sed -e ‘s|’$TARGET’|\$\(SRCROOT\)|g’ > $PROJECT.new

        mv -f $PROJECT.new $PROJECT
        echo “Successfully replaced into relative pathes on iOS project file”

else
echo “No iOS project file in this directory”

fi
 
Save above script file and change a permission and run.
$ chmod +x changePathToRelative.command
$ ./changePathToRelative.command
Successfully replaced into relative pathes on iOS project file
 
Now you can open FreeRDP.xcodeproj anywhere !!!
 

[Apple] appledoc으로 문서화documentation 하기

Apple의 Documentation과 흡사한 나만의 문서화를 해봅시다!

우선 다음의 appledoc 소스를 받아서 컴파일하여 appledoc 실행 파일을 얻을 수 있습니다.
https://github.com/tomaz/appledoc

appledoc 2.0 이전까지는 html과 publish 템플릿templates 없이도 appledoc이 잘 생성되었으나 최근 버전인 2.2부터는 Templates 폴더가 반드시 필요합니다.
Templates 폴더는 docset, html, publish 이렇게 세 개의 폴더로 구성되어 있습니다.

appledoc은  GUI 애플리케이션이 아니라 Terminal.app을 열고 명령어로 입력해야 수행이 됩니다.
터미널에서 다음과 같이 명령을 입력하고 엔터를 치면 도움말을 볼 수 있습니다.

$ appledoc --help
Usage: appledoc [OPTIONS] <paths to source dirs or files>

PATHS
 -o, --output <path>                     Output path
 -t, --templates <path>                  Template files path
     --docset-install-path <path>        DocSet installation path
 -s, --include <path>                    Include static doc(s) at path
 -i, --ignore <path>                     Ignore given path
-x, --exclude-output <path>             Exclude given path from output
     --index-desc <path>                 File including main index description

PROJECT INFO
 -p, --project-name <string>             Project name
 -v, --project-version <string>          Project version
 -c, --project-company <string>          Project company
     --company-id <string>               Company UTI (i.e. reverse DNS name)
--- 중략 ---

보시다시피 Apple documentation 형식의 docset을 만들려면 많은 옵션들을 붙여줘야 합니다.

appledoc 소스 폴더에 보면 AppledocSettings.plist 이란 파일이 존재합니다.
AppledocSettings.plist는 위의 많은 옵션을 직접 터미널에서 입력하지 않도록 미리 필요한 사항을 입력된 상태로  appledoc을 실행할 수 있도록 도와주는 기본 설정 파일입니다.
다음의 그림을 보시면 AppledocSettings.plist의 설정 내용을 확인할 수 있습니다.

AppledocSettings

특히 Project Information에 해당하는 company-id, project-name, project-company는 반드시 입력해야 docset을 생성할 수 있습니다.

AppledocSettings-ignores

ignore에는 docset에 제외할 프로젝트 폴더 내의 파일 또는 폴더를 적어줍니다. appledoc은 기본적으로 Objective-C 소스 파일만 인식하므로 Xcode Project 파일 등을 기입할 필요는 없습니다. 문서화할 필요가 없는 외부 라이브러리 또는 프레임워크를 포함하는 폴더를 적어주면 됩니다. (위 그림의 html 폴더는 굳이 기입할 필요가 없는 폴더겠지요. 왜 적었남? ^^)

$ appledoc .
appledoc version: 2.2 (build 963)

Running for files in locations:
- .

Settings used for this run:
--project-name = LibneoBLE
--project-version = 1.0.2
--project-company = ALTERANT
--company-id = kr.alterant

--templates = /Users/me/iOS/LibneoBLE/trunk/LibneoBLE_Sources/../__AppleDoc__
--output = ../Documentation
--index-desc = (null)
--ignore = ThirdParty
--ignore = ExternalAPIs
--ignore = html
--ignore = Libraries
--ignore = Frameworks
--ignore = Testing
--docset-install-path = ../
--xcrun-path = /usr/bin/xcrun

--docset-bundle-id = kr.alterant.LibneoBLE
--docset-bundle-name = LibneoBLE Documentation
--docset-desc = 
--docset-copyright = Copyright © 2014 ALTERANT Inc. All rights reserved.
--docset-feed-name = LibneoBLE Documentation
--docset-feed-url = 
--docset-feed-formats = atom
--docset-package-url = 
--docset-fallback-url = 
--docset-publisher-id = kr.alterant.documentation
--docset-publisher-name = ALTERANT
--docset-min-xcode-version = 3.0
--docset-platform-family = 
--docset-cert-issuer = 
--docset-cert-signer = 
--docset-bundle-filename = kr.alterant.LibneoBLE.docset
--docset-atom-filename = kr.alterant.LibneoBLE.atom
--docset-xml-filename = kr.alterant.LibneoBLE.xml
--docset-package-filename = kr.alterant.LibneoBLE-1.0.2

--clean-output = NO
--create-html = YES
--create-docset = YES
--install-docset = YES
--publish-docset = NO
--html-anchors = appledoc
--keep-intermediate-files = NO
--keep-undocumented-objects = NO
--keep-undocumented-members = NO
--search-undocumented-doc = YES
--repeat-first-par = NO
--preprocess-headerdoc = YES
--print-information-block-titles = YES
--use-single-star = NO
--merge-categories = YES
--merge-category-comment = YES
--keep-merged-sections = NO
--prefix-merged-sections = NO
--crossref-format = <?%@>?
--use-code-order = (null)
--exit-threshold = 0

--warn-missing-output-path = YES
--warn-missing-company-id = YES
--warn-undocumented-object = YES
--warn-undocumented-member = YES
--warn-empty-description = YES
--warn-unknown-directive = YES
--warn-invalid-crossref = YES
--warn-missing-arg = YES

--logformat = 1
--verbose = 3

NORMAL | Initializing...
NORMAL | Parsing source files...
NORMAL | Ignoring path './ExternalAPIs'...
NORMAL | Processing parsed data...
WARN | Invalid [[neoBLE sharedManager] reference found near neoBLE.h@118, unknown object : [neoBLE !
WARN | Invalid [[neoBLE sharedManager] reference found near neoBLE.h@151, unknown object : [neoBLE !
WARN | Invalid [notification userInfo] reference found near neoBLE.h@181, unknown object : notification !
WARN | neoBLEBeaconRangingTypeEnter is not documented!
WARN | neoBLEBeaconRangingTypeExit is not documented!
WARN | neoBLEBeaconRangingTypeDetermine is not documented!
NORMAL | Generating output...
Generation step 4/4 failed: GBDocSetInstallGenerator failed generating output, aborting!
Documentation set was installed, but couldn't reload documentation within Xcode.
Xcode got an error: No documentation set present at specified path.
NORMAL | Finished in 853ms.

output 폴더를 기입하지 않으면 기본적으로 docset은  Xcode 에 바로 인스톨이 됩니다.
Xcode 기본 docset 폴더는 다음과 같습니다.

~/Library/Developer/Shared/Documentation/DocSets

수행이 완료되면 다음과 같이 docset이 생성된 것을 확인할 수 있습니다.

kr.alterant.LibneoBLE.docset

docset 파일에서 마우스 우측버튼을 눌러서 Show Package Contents > Contents > Resources > Documents 폴더에 html파일이 생성된 것을 확인할 수 있습니다.

kr.alterant.LibneoBLE.docset.html

 

이제 index.html을 두번 클릭하면 최종 생성된 Apple Documentation을 확인할 수 있습니다.

AppleDoc-Output-1AppleDoc-Output-2AppleDoc-Output-3

 

코드 상에서 코멘트Comment를 입력하는 형식은 다음의 참고 사이트를 참고 바랍니다.
참고 사이트) https://github.com/tomaz/appledoc/blob/master/CommentsFormattingStyle.markdown