青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

2013年3月13日

     摘要: 原文:http://www.cnblogs.com/pifoo/archive/2011/05/28/webkit-webapp.htmlwebkit webApp 開(kāi)發(fā)技術(shù)要點(diǎn)總結(jié)如果你是一名前端er,又想在移動(dòng)設(shè)備上開(kāi)發(fā)出自己的應(yīng)用,那怎么實(shí)現(xiàn)呢?幸好,webkit內(nèi)核的瀏覽器能幫助我們完成這一切。接觸 webkit webApp的開(kāi)發(fā)已經(jīng)有一段時(shí)間了,現(xiàn)把一些技巧分享給大家 :1. view...  閱讀全文

posted @ 2013-03-13 17:12 RTY 閱讀(2212) | 評(píng)論 (0)編輯 收藏

2013年3月8日

Java Gossip: 國(guó)際化訊息

國(guó)際化的英文是Internationalization,因?yàn)閱巫种锌偣灿?8個(gè)字母,簡(jiǎn)稱I18N,目的是讓?xiě)?yīng)用程式可以應(yīng)地區(qū)不同而顯示不同的訊息,最基本的就是讓不同語(yǔ)系的使用者可以看到屬於自己語(yǔ)系的訊息,像是英文語(yǔ)系的看到英文內(nèi)容,而中文語(yǔ)系的可以看到中文的內(nèi)容。

為了在應(yīng)用程式中表示一個(gè)區(qū)域,Java提供有java.util.Locale類,一個(gè)Locale實(shí)例包括了語(yǔ)系資訊與區(qū)域資訊,例如說(shuō)"en"表示英文語(yǔ)系的國(guó)家,這個(gè)字母組合是在 
ISO 639 中定義的,而區(qū)域資訊則是像"US"表示美國(guó),這個(gè)字母組合則是在 ISO 3166 中定義的。

您可以這麼新增一個(gè)Locale的實(shí)例:
Locale locale = new Locale("zh", "TW");
 
如何將Locale用於訊息綁定呢?當(dāng)您使用ResourceBundle.getBundle()方法時(shí),預(yù)設(shè)就會(huì)自動(dòng)取得電腦上的語(yǔ)系與區(qū)域訊息,而事實(shí)上訊息檔案的名稱由basename加上語(yǔ)系與地區(qū)來(lái)組成,例如:
  • basename.properties
  • basename_en.properties
  • basename_zh_TW.properties

沒(méi)有指定語(yǔ)言與地區(qū)的basename是預(yù)設(shè)的資源檔名稱,當(dāng)沒(méi)有提供專用的語(yǔ)系、區(qū)域訊息檔案時(shí),就會(huì)找尋預(yù)設(shè)的資源檔案。

如果您想要提供繁體中文的訊息,由於訊息資源檔必須是ISO-8859-1編碼,所以對(duì)於非西方語(yǔ)系的處理,必須先將之轉(zhuǎn)換為Java Unicode Escape格式,例如您可以先在訊息資源檔中寫(xiě)下以下的內(nèi)容:
  • messages_zh_TW.txt
onlyfun.caterpillar.welcome=哈囉
onlyfun.caterpillar.name=世界

然後使用JDK的工具程式native2ascii來(lái)轉(zhuǎn)換,例如:
native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties

轉(zhuǎn)換後的內(nèi)容會(huì)如下:

  • messages_zh_TW.properties
onlyfun.caterpillar.welcome=\u54c8\u56c9
onlyfun.caterpillar.name=\u4e16\u754c

將這個(gè)檔案放於classpath可以存取的到的位置,您也可以提供預(yù)設(shè)的訊息檔案:
  • messages.properties
onlyfun.caterpillar.welcome=Hello
onlyfun.caterpillar.name=World

來(lái)測(cè)試一下訊息檔案,我所使用的作業(yè)系統(tǒng)是語(yǔ)系設(shè)定是中文,區(qū)域設(shè)定是臺(tái)灣,當(dāng)我使用下面的程式時(shí):
  • ResourceBundleDemo.java
package onlyfun.caterpillar;
 
import java.util.ResourceBundle;

public class ResourceBundleDemo {
public static void main(String[] args) {
ResourceBundle resource =
ResourceBundle.getBundle("messages");

System.out.print(resource.getString(
"onlyfun.caterpillar.welcome") + "!");
System.out.println(resource.getString(
"onlyfun.caterpillar.name") + "!");
}
}

會(huì)使用預(yù)設(shè)的語(yǔ)系"zh"與區(qū)域設(shè)定"TW",所以就會(huì)找尋messages_zh_TW.properties的內(nèi)容,所以會(huì)顯示以下的訊息:
哈囉!世界!

在使用ResourceBundle.getBundle()時(shí)可以給定Locale實(shí)例作為參數(shù),例如若您想提供 messages_en_US.properties,並想要ResourceBundle.getBundle()取得這個(gè)檔案的內(nèi)容,則可以如下撰寫(xiě):
Locale locale = new Locale("en", "US");
ResourceBundle resource = 
            ResourceBundle.getBundle("messages", locale);
 
則取得的訊息會(huì)是messages_en_US.properties的內(nèi)容。

posted @ 2013-03-08 11:03 RTY 閱讀(540) | 評(píng)論 (0)編輯 收藏

2013年2月17日

根據(jù)我的環(huán)境說(shuō)明一下:
1、Cordova的目錄:/Users/kevin/Projects/HTML5/cordova-2.4.0/cordova-android

2、AndroidSDK目錄: /Users/kevin/TBB/adt-bundle-mac-x86_64/sdk

3、設(shè)置方法:
(1)Terminal: 定位到Cordova的目錄。
       cd /Users/kevin/Projects/HTML5/cordova-2.4.0/cordova-android
 (2)設(shè)置環(huán)境變量
       export PATH=/Users/kevin/TBB/adt-bundle-mac-x86_64/sdk:/Users/kevin/TBB/adt-bundle-mac-x86_64/sdk/tools/:$PATH

 (3)執(zhí)行 ./bin/create ~/Desktop/myapp com.myapp.special MyApp

特殊說(shuō)明:
./bin/create /Users/kevin/CordovaProjects/Android/ChunMiaoPu com_chunmiaopu_android chunMiaoPuAndroid

會(huì)出現(xiàn)錯(cuò)誤:
An unexpected error occurred: "$ANDROID_BIN" create project --target $TARGET --path "$PROJECT_PATH" --package $PACKAGE --activity $ACTIVITY >&/dev/null exited with 1
Deleting project...


只有執(zhí)行如下才可以:./bin/create ~/CordovaProjects/Android/ChunMiaoPu com.chunmiaopu.android chunMiaoPuAndroid


~/MyWorkSpace/JiffAndroidApp 會(huì)自動(dòng)創(chuàng)建JiffAndroidApp目錄

devmatoMacBook-2:cordova-android kevin$ ./bin/create ~/MyWorkSpace/JiffAndroidApp me.jiff.AndroidApp JiffAndroidApp
An unexpected error occurred: ANDROID_BIN="${ANDROID_BIN:=$( which android )}" exited with 1
Deleting project...
devmatoMacBook-2:cordova-android kevin$ export PATH=/Applications/eclipseForADT-20130219/sdk:/Applications/eclipseForADT-20130219/sdk/tools/:$PATH  
devmatoMacBook-2:cordova-android kevin$ ./bin/create ~/MyWorkSpace/JiffAndroidApp me.jiff.AndroidApp JiffAndroidApp
devmatoMacBook-2:cordova-android kevin$ 

posted @ 2013-02-17 13:12 RTY 閱讀(1107) | 評(píng)論 (0)編輯 收藏

2013年2月7日

為你的Cocoa應(yīng)用程序加入更新支持:Sparkle 簡(jiǎn)介

發(fā)布于:2010-09-20 13:06閱讀數(shù):3141

作為一名桌面軟件開(kāi)發(fā)者,應(yīng)該提早考慮程序的更新問(wèn)題。如何將程序更新及時(shí)優(yōu)雅的推送給用戶,是維持用戶忠誠(chéng)度和提高軟件使用體驗(yàn)的一個(gè)重要方面。而作為Cocoa應(yīng)用程序開(kāi)發(fā)者,

轉(zhuǎn)自 ibuick.com,原文  http://ibuick.com/index.php/archives/add-automatic-update-support-over-cocoa-app-via-sparkle-framework


作為一名桌面軟件開(kāi)發(fā)者,應(yīng)該提早考慮程序的更新問(wèn)題。如何將程序更新及時(shí)優(yōu)雅的推送給用戶,是維持用戶忠誠(chéng)度和提高軟件使用體驗(yàn)的一個(gè)重要方面。而作為Cocoa應(yīng)用程序開(kāi)發(fā)者,我們可以選擇自己手動(dòng)來(lái)實(shí)現(xiàn)此功能,也可以選擇一些優(yōu)秀的開(kāi)源框架。Sparkle就是其中之一。

Sparkle是一個(gè)非常簡(jiǎn)單且易用的Cocoa應(yīng)用程序更新框架。本篇文章將使用一個(gè)簡(jiǎn)單的例子,教你如何使用Sparkle為你的Cocoa應(yīng)用程序加入更新支持。

1: 新建一個(gè)Cocoa Application,TestSparkle

wpid-wpid-xcodecocoaapplication-2010-09-10-16-11-2010-09-10-16-11.png

 

wpid-wpid-cocoaapplicationwithsparkle-2010-09-10-16-11-2010-09-10-16-11.png
2: 去到Sparkle下載Sparkle Framework,最新版本為 1.5b6,

wpid-wpid-sparkle-2010-09-10-16-11-2010-09-10-16-11.png
Sparkle Test App.app 是一個(gè)用來(lái)演示Sparkle更新框架的一個(gè)應(yīng)用程序。

Extras文件夾下提供了Sparkle的標(biāo)準(zhǔn)圖標(biāo),Release Notes模版,軟件簽名工具,源代碼和Appcast.xml示例文件,我們后面會(huì)再講到這些工具和文件。

With Garbage Collection, 是一個(gè)加入了Garbage Collection支持的Sparkle分發(fā)版,如果你的應(yīng)用程序運(yùn)行在有GC的環(huán)境下,則可以使用這個(gè)版本的Sparkle

Sparkle.framework 是通用分發(fā)版,筆者建議大家使用此版本的Sparkle

3: 鏈接Sparkle框架到TestSparkle工程

拖拽Sparkle.framework(或 with Garbage Collection下的 Sparkle.framework)到TestSparkle的Linked Frameworks下,在彈出窗口中記得選中”Copy items into destination group’s folder (if needed)”前面的復(fù)選框。

wpid-wpid-addsparkletotestsparkle-2010-09-10-16-11-2010-09-10-16-11.png

4: 為你的工程新建一個(gè)Copy Files Build Phase,

wpid-wpid-addcopyfilesbuildphase-2010-09-10-16-11-2010-09-10-16-11.png
5: 右鍵點(diǎn)擊這個(gè)新建的Copy Files Build Phase,并在彈出窗口中,點(diǎn)擊Destination下拉框,選擇Frameworks

wpid-wpid-copyfilesbuildphaseforframework-2010-09-10-16-11-2010-09-10-16-11.png
6: 將Linked Framworks下的Sparkle.framework拖拽到這個(gè)新建的Copy Files Build Phase 中

wpid-wpid-addsparkle-2010-09-10-16-11-2010-09-10-16-11.png
7: 在Interface Builder中打開(kāi)TestSparkle的MainMenu.xib(nib), 然后點(diǎn)擊Interface Builder–>Files–>Read Class Files

wpid-wpid-readclassfiles-2010-09-10-16-11-2010-09-10-16-11.png

8: 將Sparkle.framework中的所有頭文件選中并讀取

wpid-wpid-readheaderfiles-2010-09-10-16-11-2010-09-10-16-11.png
9: 從Library中拖拽一個(gè) NSObject到MainMenu主窗口.

wpid-wpid-addobject-2010-09-10-16-11-2010-09-10-16-11.png

10: 點(diǎn)擊此Object對(duì)象,點(diǎn)擊Inspector,設(shè)定此Object的Class為 SUUpdater

wpid-wpid-SUUpdater-2010-09-10-16-11-2010-09-10-16-11.png

11: 添加一個(gè)菜單項(xiàng)到到TestSparkle Menu,重命名為 Check For Updates…

wpid-wpid-Checkupdatesmenuitem-2010-09-10-16-11-2010-09-10-16-11.png

12: 將 Check for Updates…菜單項(xiàng)的Send Actions指向Updater Object的checkForUpdates方法

wpid-wpid-addactionforupdate-2010-09-10-16-11-2010-09-10-16-11.png
13: 保存Interface Builder的所有更改,退出Interface Builder。

14: 為了安全防止應(yīng)用程序更新遭到惡意篡改,我推薦對(duì)應(yīng)用程序更新添加數(shù)字簽名。

Sparkle使用DAS SHA-1 來(lái)對(duì)程序更新包進(jìn)行數(shù)字簽名。

打開(kāi)終端,進(jìn)入步驟2中存放已下載的Sparkle包的文件夾,進(jìn)入Extras–>Signing Tools,

執(zhí)行,

ruby generate_keys.rb

這個(gè)命令將會(huì)生成兩個(gè)文件 dsa_priv.pem 和 dsa_pub.pem,也就是私鑰和公鑰,請(qǐng)妥善保存這兩個(gè)文件,如果私鑰丟失,你得用戶將再也無(wú)法自動(dòng)通過(guò)已安裝的程序來(lái)獲得更新的更新。

15: 建立一個(gè) App Cast Feed文件

Sparkle的運(yùn)作機(jī)理其實(shí)非常簡(jiǎn)潔,本地應(yīng)用程序Info.plist中含有一個(gè)URL,此URL指向一個(gè)在你網(wǎng)站上的App Cast Feed XML文件。當(dāng)你發(fā)布更新的時(shí)候,上傳新的app到你的網(wǎng)站,更新此app cast xml feed。這樣,客戶端程序在運(yùn)行檢查更新時(shí),會(huì)根據(jù)Info Plist中的URL找到并Parse此文件,跟本地軟件版本進(jìn)行比對(duì)。如果發(fā)現(xiàn)更新,則提示用戶。這就是App Cast XML Feed文件的作用。

在步驟14中提到的Extras文件夾下,有一個(gè)App Cast XML Feed文件的模版:

 

http://you.com/app/2.0.html

Wed, 09 Jan 2006 19:20:11 +0000

http://you.com/app/1.5.html

Wed, 01 Jan 2006 12:20:11 +0000
<!-- Now here's an example of a version with a weird internal version number (like an SVN revision) but a human-readable external one. -->
http://you.com/app/1.4.html

Wed, 25 Dec 2005 12:20:11 +0000

我們可以看出,這其實(shí)是一個(gè)標(biāo)準(zhǔn)的RSS Feed格式的XML文件。我們只要修改相應(yīng)的項(xiàng)目即可。

下面我們就來(lái)一步步的演示如何使用Sparkle為你的程序加入更新支持。

16: 我們首先在本地搭建一個(gè)可用于測(cè)試軟件更新的網(wǎng)站。打開(kāi)Mac OS X系統(tǒng)偏好設(shè)置(System Preferences), 找到共享(Sharing),開(kāi)啟Web共享(Web Sharing),并通過(guò)點(diǎn)擊圖中所示URL測(cè)試Web共享是否成功開(kāi)啟。http://10.0.1.2/~buick 你的顯示可能與此不同,,,,

wpid-wpid-websharing-2010-09-10-16-11-2010-09-10-16-11.png
17: 打開(kāi)你的XCode中 TestSparkle 工程,編輯 TestSparkle-Info.plist,加入兩個(gè)屬性,SUPublicDSAKeyFile 和 SUFeedURL

wpid-wpid-info.plist-2010-09-10-16-11-2010-09-10-16-11.png

其中,SUFeedURL 將是指向一個(gè) App Cast XML Fee 的 URL,比如我的測(cè)試地址是 http://10.0.1.2/~buick/testsparkleappcast.xml ,SUPublicDSAKeyFile 指向公鑰,我們把剛才步驟14中生成的 dsa_pub.pem 加入到工程的Resources中,并在 TestSparkle-Info.plist 中指定此公鑰的名稱,,,,那么現(xiàn)在的TestSparkle-Info.plist應(yīng)該是這樣

整個(gè)配置完成,我們現(xiàn)在來(lái)構(gòu)建一個(gè)TestSparkle.app的1.0版本,點(diǎn)擊Build and Run

wpid-wpid-TestSparkle-2010-09-10-16-11-2010-09-10-16-11.png
啟動(dòng)TestSparkle.app, 在TestSparkle菜單下,確認(rèn)Check for Updates…按鈕處于可用狀態(tài),如果是灰色不可點(diǎn)擊,則返回Interface Builder修改。

wpid-wpid-checkforupdates-2010-09-10-16-11-2010-09-10-16-11.png

將此 TestSparkle.app 1.0 版本拷貝到別處備用。然后返回XCode,將應(yīng)用程序版本改為1.1,然后構(gòu)建工程。將TestSparkle.app 的1.1版本打包成zip文件,改名為T(mén)estSparkle_1.1.zip

將 dsa_priv.pem (私鑰) 和 TestSparkle_1.1.zip 拷貝到 Extras下的Signing Tool文件夾中,

wpid-wpid-signing-2010-09-10-16-11-2010-09-10-16-11.png

打開(kāi)終端進(jìn)入到此文件夾,執(zhí)行:

ruby sign_update.rb TestSparkle_1.1.zip dsa_priv.pem

wpid-wpid-sign-2010-09-10-16-11-2010-09-10-16-11.png
便可得到升級(jí)包的簽名,MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==

用文本編輯器創(chuàng)建一個(gè)xml文件(UTF-8 編碼),內(nèi)容如下:

http://10.0.1.2/~buick          The latest TestSparkle updates from localhost, more hot features and sweeties
en

Fri, 10 Sept 2010 0:00:00 +0300             http://10.0.1.2/~buick

注意(由于本網(wǎng)站HTML的設(shè)置問(wèn)題,如果你直接拷貝以上XML Feed文件到你本地測(cè)試可能會(huì)出編碼問(wèn)題導(dǎo)致XML Parse失敗,請(qǐng)到本文最后下載此文件,以及工程壓縮包)。

把此XML另存為 testsparkleappcast.xml

熟悉RSS Feed的讀者可能很容易理解此文件,,如果我們?cè)跒g覽器中直接訪問(wèn)此URL,我們會(huì)看到

wpid-wpid-feed-2010-09-10-16-11-2010-09-10-16-11.png

而我們要關(guān)注的只是這兩段:

這段指定的URL是一個(gè)介紹頁(yè)面,如果你希望在更新提示窗口中出現(xiàn)一個(gè)介紹新版本的頁(yè)面(或者說(shuō)release notes),則使用此URL定向到你網(wǎng)站上的新版本介紹頁(yè)面。

Sparkle非常貼心的為大家提供了一個(gè)模版,在Extras/Release Notes Templates 文件夾下可找到

enclosure sparkle:version=“1.1” sparkle:dsaSignature=“MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==“ url=“http://10.0.1.2/~buick/TestSparkle_1.1.zip” length=“436264” type=“application/octet-stream”/>

這段是實(shí)現(xiàn)Sparkle Update的關(guān)鍵,

sparkle:version=“1.1” 是指當(dāng)前更新包版本號(hào),客戶端程序就是根據(jù)這個(gè)版本號(hào)來(lái)和本地APP進(jìn)行比對(duì),如果發(fā)現(xiàn)不同則提示更新。

sparkle:dsaSignature=“MCwCFDZsrVGB+PewvxioJcvptkqchXi3AhQOZDJ4UukRM2/bYmZzzbHTxM2kpA==“ 這個(gè)就是我們剛才為更新包生成的數(shù)字簽名

url=“http://10.0.1.2/~buick/TestSparkle_1.1.zip” 指向更新包下載地址

length=“436264” 指更新包的大小,上傳上去前用 終端 ls -al 命令可查看

type=“application/octet-stream” 是一個(gè)想對(duì)固定的值,一般不用修改。

現(xiàn)在把testsparkleappcast.xml 和 TestSparkle_1.1.zip 拷貝到

你的用戶主目錄/Sites 下 (~/Sites,具體路徑依你個(gè)人配置而定)

wpid-wpid-path-2010-09-10-16-11-2010-09-10-16-11.png
然后在瀏覽器敲入 http://10.0.1.2/~buick/testsparkleappcast.xml

如果能夠看到類似網(wǎng)頁(yè),,,說(shuō)明一切正常。

下面找到我們剛才保存的TestSparkle.app 1.0版本,運(yùn)行并點(diǎn)擊 Check for Updates… 如果一切正常,你可以看到

wpid-update1-2010-09-10-16-11.png

點(diǎn)擊Install Update,如果更新成功,即可顯示:

wpid-complee-2010-09-10-16-11.png

然后再次點(diǎn)擊Check for Updates, 你會(huì)看到

wpid-latest-2010-09-10-16-11.png

最后希望你與Sparkle合作愉快。

點(diǎn)擊此處下載本次工程源代碼和示例XML Feed文件,另外,安裝包里面還帶有一個(gè)Sparkle的簡(jiǎn)體中文包,將它放入你的Sparkle.framework/Resources下即可。

posted @ 2013-02-07 14:14 RTY 閱讀(1088) | 評(píng)論 (0)編輯 收藏

2013年2月5日

文字色彩

可以用一個(gè)UIColor對(duì)象來(lái)定義文字的色彩。UIColor這個(gè)類提供了許多不同的方法,可以很輕松地調(diào)出任何顏色。你可以用靜態(tài)方法來(lái)創(chuàng)建 顏色,這樣它們會(huì)在停止使用后被釋放。可以用灰度值、色相或者RGB復(fù)合值等多種形式來(lái)創(chuàng)建顏色。要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的RGB色彩,可以指定一組4個(gè)浮點(diǎn)值, 分別對(duì)應(yīng)紅、綠、藍(lán)和alpha值(透明度),取值均在0.0~1.0之間。這些值表示了0%(0.0)~100%(1.0)的范圍:

  1. UIColor *myWhiteTransparentColor = [ UIColor 
    colorWithWhite: 1.0 alpha: 0.50 ];  
  2.  
  3. UIColor *myColorHue = [ UIColor colorWithHue: 120.0 / 360.0  
  4.         saturation: 0.75  
  5.         brightness: 0.50  
  6.         alpha: 1.0  
  7. ];  
  8.  
  9. UIColor *myColorRGB = [ UIColor colorWithRed: 0.75  
  10.         green: 1.0  
  11.         blue: 0.75  
  12.         alpha: 1.0  
  13. ]; 

如果你打算重用許多不同的UIColor對(duì)象,你也可以創(chuàng)建它們的實(shí)例:

  1. UIColor *myWhiteTransparentColor = [ [ UIColor alloc ]  
  2.         initWithWhite: 1.0 alpha: 0.50  
  3. ];  
  4.  
  5. UIColor *myColorHue = [ [ UIColor alloc ]  
  6.         initWithHue: 120.0 / 360.0  
  7.         saturation: 0.75  
  8.         brightness: 0.50  
  9.         alpha: 1.0  
  10. ];  
  11.  
  12. UIColor *myColorRGB = [ [ UIColor alloc ] initWithRed: 0.75  
  13.         green: 1.0  
  14.         blue: 0.75  
  15.         alpha: 1.0  
  16. ]; 

UIColor類還支持許多靜態(tài)方法,可以創(chuàng)建系統(tǒng)顏色,這些顏色都經(jīng)過(guò)iPhone的校正,以達(dá)到盡可能準(zhǔn)確的地步。這些方法如下所示,均來(lái)自UIColor.h:

  1. + (UIColor *)blackColor;        // 0.0 白色  
  2. + (UIColor *)darkGrayColor;     // 0.333 白色  
  3. + (UIColor *)lightGrayColor;    // 0.667 白色  
  4. + (UIColor *)whiteColor;        // 1.0 白色  
  5. + (UIColor *)grayColor;         // 0.5 白色  
  6. + (UIColor *)redColor;          // 1.0, 0.0, 0.0 RGB  
  7. + (UIColor *)greenColor;        // 0.0, 1.0, 0.0 RGB  
  8. + (UIColor *)blueColor;         // 0.0, 0.0, 1.0 RGB  
  9. + (UIColor *)cyanColor;         // 0.0, 1.0, 1.0 RGB  
  10. + (UIColor *)yellowColor;       // 1.0, 1.0, 0.0 RGB  
  11. + (UIColor *)magentaColor;      // 1.0, 0.0, 1.0 RGB  
  12. + (UIColor *)orangeColor;       // 1.0, 0.5, 0.0 RGB  
  13. + (UIColor *)purpleColor;       // 0.5, 0.0, 0.5 RGB  
  14. + (UIColor *)brownColor;        // 0.6, 0.4, 0.2 RGB  
  15. + (UIColor *)clearColor;        // 0.0 白色, 0.0 alpha 

創(chuàng)建好UIColor對(duì)象之后,就可以將其賦給文本視圖的色彩屬性了:

textView.textColor = myColorHue; 

posted @ 2013-02-05 15:24 RTY 閱讀(681) | 評(píng)論 (0)編輯 收藏

2013年2月4日

NSString *str = @"011597464952,01521545545,454545474,454545444|Hello this is were the message is.";

NSArray *firstSplit = [str componentsSeparatedByString:@"|"];
NSAssert(firstSplit.count == 2, @"Oops! Parsed string had more than one |, no message or no numbers.");
NSString *msg = [firstSplit lastObject];
NSArray *numbers = [[firstSplit objectAtIndex:0] componentsSepratedByString:@","];

// print out the numbers (as strings)
for(NSString *currentNumberString in number) {
NSLog(@"Number: %@", currentNumberString);

posted @ 2013-02-04 14:22 RTY 閱讀(5559) | 評(píng)論 (0)編輯 收藏

功能創(chuàng)建一個(gè)test.plist文件,textInput作為輸入,displayLabel作為顯示,有一個(gè)按鈕來(lái)觸發(fā)保持程序triggerStorage;

-(void)triggerStorage
{
    displayLabel.text = textInput.text;
    
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths    objectAtIndex:0];  
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];   //獲取路徑
    
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];  //讀取數(shù)據(jù)
    NSLog(@"dic2 is:%@",dic2); 
    
    //創(chuàng)建一個(gè)dic,寫(xiě)到plist文件里
    NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:displayLabel.text,@"IP",nil]; //寫(xiě)入數(shù)據(jù)
    [dic writeToFile:filename atomically:YES];   

}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    NSMutableArray *resultData; 
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths objectAtIndex:0];
    NSLog(@"path = %@",path);   
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"]; 
  
    //讀文件
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];
    NSLog(@"dic is:%@",dic2);    
    if(dic2 == nil)
    {
        //1. 創(chuàng)建一個(gè)plist文件 
        NSFileManager* fm = [NSFileManager defaultManager];
        [fm createFileAtPath:filename contents:nil attributes:nil];        
    }
    else
    {
        resultData=[dic2 objectForKey:@"IP"]; 
        if([dic2 count] > 0)
        {
            displayLabel.text = resultData;
        }
        else
        {
            displayLabel.text = @" ";
        }
    }
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]   //按鈕的初始化及觸發(fā)條件設(shè)置
                                               initWithTitle:@"保存" 
                                               style:UIBarButtonItemStylePlain 
                                               target:self 
                                               action:@selector(triggerStorage)] autorelease];    
    [super viewDidLoad];
}

------------------------------------------------------------------------------------------------------------------------------------------------------------

參考代碼:

plist 文件讀寫(xiě)
    //1. 創(chuàng)建一個(gè)plist文件
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path=[paths    objectAtIndex:0];
    NSLog(@"path = %@",path);
    NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];    
    NSFileManager* fm = [NSFileManager defaultManager];
    [fm createFileAtPath:filename contents:nil attributes:nil];        
    //NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    
    //創(chuàng)建一個(gè)dic,寫(xiě)到plist文件里
    NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:@"sina",@"1",@"163",@"2",nil];
    [dic writeToFile:filename atomically:YES];
    
    //讀文件
    NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];

    NSLog(@"dic is:%@",dic2);

posted @ 2013-02-04 13:49 RTY 閱讀(7747) | 評(píng)論 (1)編輯 收藏

2013年1月8日

《移動(dòng)應(yīng)用開(kāi)發(fā)解決方案》Embarcadero HTML 5 Builder
2012年10月28日 ⁄ 最新素材, 行業(yè)軟件暫無(wú)評(píng)論 ⁄ 被圍觀 324 views+

002364cf_medium.jpg
Embarcadero HTML 5 Builder | 464.2 mb

HTML5 Builder允許開(kāi)發(fā)者在可視化IDE中使用Javascript、HTML5,jQuery mobile以及CSS3開(kāi)發(fā)Web和移動(dòng)應(yīng)用。關(guān)心跨平臺(tái)移動(dòng)支持的開(kāi)發(fā)者,可以使用同一份公共HTML5/CSS3/JavaScript代碼,支持iOS,Android,黑莓以及Windows Phone。HTML5 Builder不僅僅關(guān)注客戶端開(kāi)發(fā),它還集成了服務(wù)端PHP以及數(shù)據(jù)庫(kù)(如MySQL)的支持。
HTML5 Builder是增強(qiáng)并重命名的RadPHP。通過(guò)對(duì)客戶端解決方案的更多支持,尤其是對(duì)HTML5和CSS3的支持,我們感覺(jué)新名字更適合其新能力,并且更符合當(dāng)前的市場(chǎng)。作為一個(gè)完整的端到端Web開(kāi)發(fā)解決方案,HTML5 Builder繼續(xù)支持PHP后端解決方案(具體講,就是Zend框架以及數(shù)據(jù)訪問(wèn)組件)。

HTML5 Builder is Embarcadero's Web and Mobile application development solution enabling corporate and ISV developers to visually design and create apps for Web, iOS, Android, BlackBerry and Windows Phone using a single HTML5, CSS3, PHP and JavaScript codebase.

HTML5 Builder is the replacement for RadPHP in the Embarcadero product portfolio for Web and Mobile application platforms. With this groundbreaking new developer solution you can now build web and mobile apps with a single codebase using web standards - and deliver your apps to users via desktop and mobile Web browsers or natively "on device" via Apple, Android, BlackBerry and Windows Phone mobile app stores.

About Embarcadero Technologies
Embarcadero Technologies, Inc. is a leading provider of award-winning tools for application developers and database professionals so they can design systems right, build them faster and run them better, regardless of their platform or programming language. Ninety of the Fortune 100 and an active community of more than three million users worldwide rely on Embarcadero products to increase productivity, reduce costs, simplify change management and compliance, and accelerate innovation. Founded in 1993, Embarcadero is headquartered in San Francisco, with offices located around the world.

VIP服務(wù)

posted @ 2013-01-08 16:31 RTY 閱讀(683) | 評(píng)論 (0)編輯 收藏

     摘要: Parse .strings file with PythonParse .strings file with Pythonup vote1down votefavoriteI'm trying to write a small Python script to parse the .strings file in my iPhone application project and determi...  閱讀全文

posted @ 2013-01-08 13:44 RTY 閱讀(604) | 評(píng)論 (0)編輯 收藏

2013年1月7日

cocoa中雖然有[[NSFileManager defaultManager] fileExistsAtPath:filename]來(lái)檢查文件是否可寫(xiě)的方法,但是對(duì)文件目錄卻不起作用,沒(méi)辦法只好自己寫(xiě)一個(gè)比較山寨的方法:

bool IsDirectoryWritable(NSString *dir)
{
    bool result = false;
    
    if(![[NSFileManager defaultManager] fileExistsAtPath:dir])
        return result;
    
    NSString* fileName = [dir stringByAppendingFormat:@"/  _#t.txt"];
    NSData *data = [fileName dataUsingEncoding:NSUTF8StringEncoding];
    [data writeToFile:fileName atomically:NO];
    
    result = [[NSFileManager defaultManager] fileExistsAtPath:fileName];
    if(result)
    {
        [[NSFileManager defaultManager] removeItemAtPath:fileName error:NULL];
    }
    
    return true;
}

這個(gè)方法的不好之處就是有可能用于嘗試的fileName可能已經(jīng)存在(雖然已經(jīng)起的很奇怪了快哭了),這樣會(huì)導(dǎo)致返回結(jié)果不準(zhǔn)確,也有可能測(cè)試文件創(chuàng)建成功了但是刪除卻失敗了,那么也會(huì)導(dǎo)致下次測(cè)試不準(zhǔn)確,。如果哪位高人有更好的辦法,麻煩指教。

posted @ 2013-01-07 23:24 RTY 閱讀(700) | 評(píng)論 (0)編輯 收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线观看视频| 久久亚洲图片| 亚洲精品一区二| 国产人成精品一区二区三| 欧美精品播放| 久久只有精品| 性久久久久久久| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品99久久99久久久二8| 欧美一区二区三区免费视频| 最近中文字幕日韩精品| 久久久91精品| 欧美一区深夜视频| 亚洲午夜精品一区二区三区他趣| 欧美三级日本三级少妇99| 久久婷婷国产综合精品青草| 亚洲欧美中文日韩v在线观看| 裸体女人亚洲精品一区| 欧美一区二区视频网站| 亚洲资源在线观看| 亚洲午夜激情网站| 正在播放日韩| 亚洲深夜福利| 亚洲天堂成人| 亚洲影院色在线观看免费| 一区二区三区成人| 一本久久知道综合久久| 一区二区三区|亚洲午夜| 99国产精品私拍| 亚洲伦理在线免费看| 亚洲精品免费在线观看| 99精品国产热久久91蜜凸| 亚洲精选国产| 中文日韩在线| 亚洲专区国产精品| 午夜国产精品视频| 欧美一区二区视频97| 久久不射2019中文字幕| 久久久国产91| 欧美插天视频在线播放| 亚洲第一在线| 亚洲精品四区| 亚洲小说欧美另类社区| 亚洲欧美日韩在线综合| 欧美一区亚洲二区| 久久久久久久久久久一区| 久热精品视频在线免费观看| 欧美国产大片| 欧美三级电影精品| 国产欧美精品日韩精品| 国产在线精品成人一区二区三区| 欧美日韩国产成人在线观看| 欧美性开放视频| 国产亚洲成av人片在线观看桃| 欧美成人午夜免费视在线看片| 亚洲欧美综合| 久久久噜久噜久久综合| 欧美激情亚洲视频| 国产精品老女人精品视频| 国产亚洲精品aa| 91久久精品国产91久久性色| 亚洲视频在线观看三级| 久久精品人人做人人爽| 欧美成人午夜激情视频| 日韩视频免费观看高清完整版| 母乳一区在线观看| 亚洲人成欧美中文字幕| 亚洲性图久久| 久久久久久久欧美精品| 欧美日韩国产专区| 国产色爱av资源综合区| 亚洲日本激情| 欧美在线一二三四区| 欧美国产日韩免费| 亚洲一区二区三区四区视频| 久久午夜av| 国产精品亚洲激情| 亚洲精品国产精品久久清纯直播 | 红桃av永久久久| 亚洲精品欧洲| 久久精品成人欧美大片古装| 亚洲电影免费观看高清完整版在线观看| 久久成人亚洲| 亚洲国产高清在线| 亚洲一区在线播放| 欧美激情成人在线视频| 国产欧美一区二区在线观看| 日韩午夜黄色| 美日韩精品视频| 亚洲永久免费av| 欧美精品一区二区高清在线观看| 欧美精品1区2区3区| 国产一区二区三区久久精品| aa级大片欧美三级| 牛夜精品久久久久久久99黑人| 久久综合网络一区二区| 99国产精品| 米奇777在线欧美播放| 国产日韩欧美一区在线 | 欧美激情在线| 亚洲在线视频网站| 欧美日韩精品中文字幕| 亚洲大黄网站| 欧美有码在线视频| 一区二区三区日韩| 欧美人与性动交cc0o| 亚洲风情亚aⅴ在线发布| 欧美在线播放一区二区| 国产精品美女久久久久av超清 | 蜜臀久久99精品久久久画质超高清| 欧美美女bb生活片| 日韩视频在线一区二区三区| 欧美国产激情| 欧美精品一区在线发布| 亚洲一二三区在线| 亚洲欧美日韩精品| 狠狠88综合久久久久综合网| 欧美成人一区在线| 欧美精品一线| 欧美一区二区三区四区在线 | 亚洲一区精品在线| 国产欧美日韩一区| 久久综合网络一区二区| 猛男gaygay欧美视频| 99这里只有久久精品视频| 亚洲视频在线观看三级| 国产主播一区二区三区四区| 欧美大片一区二区| 欧美日韩一区二区视频在线| 久久爱91午夜羞羞| 欧美成人乱码一区二区三区| 麻豆乱码国产一区二区三区| 在线日韩中文| 久久爱www.| 美女91精品| 亚洲主播在线观看| 久久精品欧美日韩| 一本大道久久a久久综合婷婷| 午夜亚洲性色福利视频| 久久精品国产免费观看| 亚洲日本欧美| 亚洲免费伊人电影在线观看av| 欧美日本国产一区| 久久久久国产一区二区三区| 久久综合一区| 午夜精品理论片| 另类图片综合电影| 亚洲欧美日韩人成在线播放| 久久久亚洲欧洲日产国码αv| 激情伊人五月天久久综合| 亚洲精品日韩欧美| 狠狠色综合播放一区二区| 日韩亚洲欧美中文三级| 在线电影一区| 一本色道久久综合一区| 1769国内精品视频在线播放| 亚洲一级片在线观看| 亚洲欧洲另类国产综合| 欧美一区二区三区四区在线观看| 国内揄拍国内精品少妇国语| 99热精品在线观看| 亚洲国产欧美在线人成| 亚洲一区二区黄色| 亚洲最新合集| 老司机成人网| 久久成年人视频| 欧美三级在线视频| 亚洲电影免费在线| 国内视频一区| 亚洲欧美日韩在线不卡| 亚洲一区二区四区| 欧美国产日韩一区| 免费视频亚洲| 国产中文一区二区| 亚洲影院污污.| 一区二区激情| 欧美成人免费视频| 男女精品网站| 狠狠入ady亚洲精品经典电影| 欧美国产精品人人做人人爱| 国产色爱av资源综合区| 亚洲午夜精品国产| 亚洲天堂激情| 一本色道综合亚洲| 欧美一区二区三区免费视| 国产精品成人在线| 亚洲欧美中日韩| 欧美全黄视频| 亚洲激情第一区| 在线视频国产日韩| 久久久久久穴| 久久综合九色99| 娇妻被交换粗又大又硬视频欧美| 牛夜精品久久久久久久99黑人| 欧美高清视频www夜色资源网| 亚洲一区二区在线播放| 欧美日韩一区二区三区四区五区| 小黄鸭精品密入口导航| 国产精品久久久久久亚洲毛片| 久久婷婷色综合|