- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ; // Override point for customization after application launch. MyViewController *test = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:test]; self.window.rootViewController = nav; [self.window makeKeyAndVisible]; return YES; }
2016年3月23日 星期三
在 didFinishLaunchingWithOptions 時不使用 storyboard 直接載入 nib 檔
2016年3月20日 星期日
Setting Up Environment for PyQt 5 on Mac with Python 2.7
要用 Python 2.7 來開發 Qt 5,需要安裝下列三樣:
Ref: http://www.time-eater.net/?p=302
- SIP 4.17
- PyQt 5.5.1
- Qt 5
安裝 sip
- 下載 sip-4.17.tar.gz
- 解壓縮:tar -xf sip-4.17.tar.gz
- 切換目錄到 sip-4.17
- python config.py,產生 Makefile
- make
- make install
安裝 Qt 5
本來是用官網的 Online Installer,但選擇下載 Qt 5.6.1 後,不僅要吃 13.06 GiB,還一直卡在某個進度,只先好作罷。改用 Cakebrew 下載 Qt 5.6.0,而且只要 310.7M。安裝 PyQt 5.5.1
安裝方式和 sip 一樣
- 下載 PyQt-gpl-5.5.1.tar.gz
- 解壓縮:tar -xf PyQt-gpl-5.5.1.tar.gz
- 切換目錄到 PyQt-gpl-5.5.1
- python config.py,產生 Makefile
- 此時可能會有找不到 qmake 指令的錯誤,qmake 在安裝好的 PyQt 路徑下,設定好路徑就行了。export PATH=/usr/local/Cellar/qt5/5.6.0/bin:$PATH
- make (這裡會需要等一下子)
- make install
Ref: http://www.time-eater.net/?p=302
2016年3月14日 星期一
SetEnvironmentVariable VS getenv
最近發現一個奇怪的現象,
就是在 VS 的 cpp 裡呼叫 SetEnvironmentVariable 設定環境變數,
但從 Python code 裡印出 os.osenviron 卻看不到所設定的變數,
一查才發現,Python 裡的 os.osenviron 是用 getenv實作的。
GetEnvironmentVariable/SetEnvironmentVariable 是 Windows API,
而 setenv/getenv 是 CRT 函式。CRT 在開始的時候便會透過 Windows API GetEnvironmentStrings 將回傳值存入自己的資料結構之下(EX: MSVCR80!environ),
而此後 getenv 便是對這份副本做操作。
結論就是不要混用 SetEnvironmentVariable 和 getenv 啊!!
Ref:
就是在 VS 的 cpp 裡呼叫 SetEnvironmentVariable 設定環境變數,
但從 Python code 裡印出 os.osenviron 卻看不到所設定的變數,
一查才發現,Python 裡的 os.osenviron 是用 getenv實作的。
GetEnvironmentVariable/SetEnvironmentVariable 是 Windows API,
而 setenv/getenv 是 CRT 函式。CRT 在開始的時候便會透過 Windows API GetEnvironmentStrings 將回傳值存入自己的資料結構之下(EX: MSVCR80!environ),
而此後 getenv 便是對這份副本做操作。
結論就是不要混用 SetEnvironmentVariable 和 getenv 啊!!
Ref:
2016年3月12日 星期六
System permissions
Android 從 6.0 (API Level 23)開始,把 System permissions 分成了兩類 normal and dangerous permissions。
Normal Permissions
這類的權限對使用者的隱私或對其他 APP 的操作有極小的影響,所以這類的權限僅需要宣告在 AndroidManifest 裡,在安裝期間系統自然會賦予這些權限給 APP。- ACCESS_LOCATION_EXTRA_COMMANDS
- ACCESS_NETWORK_STATE
- ACCESS_WIFI_STATE
- BLUETOOTH
- BLUETOOTH_ADMIN
- CHANGE_NETWORK_STATE
- CHANGE_WIFI_MULTICAST_STATE
- CHANGE_WIFI_STATE
- EXPAND_STATUS_BAR
- INSTALL_SHORTCUT
- INTERNET
- KILL_BACKGROUND_PROCESSES
- MODIFY_AUDIO_SETTINGS
- NFC
- SET_ALARM
- SET_TIME_ZONE
- SET_WALLPAPER
- SET_WALLPAPER_HINTS
- UNINSTALL_SHORTCUT
- USE_FINGERPRINT
- VIBRATE
- WAKE_LOCK
Dangerous permissions
這類的權限對使用者的隱私或對其他 APP 的操作有潛在的影響,所以這類的權限不僅需要宣告在 AndroidManifest 裡,在執行期間,還需要經過使用者的同意。以下的 Permission groups 都是屬於 dangerous permission 的權限:- CALENDAR
- CAMERA
- CONTACTS
- LOCATION
- MICROPHONE
- PHONE
- SENSORS
- SMS
- STORAGE
- System Permissions
https://developer.android.com/guide/topics/security/permissions.html - Normal Permissions
https://developer.android.com/guide/topics/security/normal-permissions.html - Requesting Permissions at Run Time
https://developer.android.com/training/permissions/requesting.html
2016年3月7日 星期一
Creating a TableView in XIB
Creating a TableView in XIB
Ref: http://bcdilumonline.blogspot.tw/2014/08/creating-tableview-in-xib.html
Ref: http://bcdilumonline.blogspot.tw/2014/08/creating-tableview-in-xib.html
訂閱:
文章 (Atom)