2013年12月22日 星期日

Olaccount如何進行備份及還原

備份步驟如下:

1. 選擇自動備份功能,第一次使用軟體詢問時打勾;或於設定中將自動備份功能開啟。

2. 手動備份:利用匯出/匯入功能,選擇'匯出CSV檔案'功能。

*. 以上功能皆會將備份檔案儲存於SDCard的OLAccount資料夾(於根目錄內)。

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

還原步驟如下:

1. 將備份資料存出,位置在SDCard的OLAccount資料夾(於根目錄內)。

2. 若存出後有用EXCEL進行編修過,請先以附屬應用程式的記事本另存新檔為UTF-8格式(於存檔鈕的左方編碼下拉式選單選擇)。

3. 將該檔案儲存到新手機SDCard的OLAccount資料夾(於根目錄內)。(若沒有資料夾,可以自己建一個,或是先使用帳本的自動備份或手動備份,帳本會自動建立)

4. 進入OLAccount程式,選擇匯出/匯入功能,點選"選擇檔案",選擇剛剛放進資料夾的檔案。

5. 點擊"匯入CSV檔"功能。

---------------------------------------------------------------------
**. 備分功能儲存在SDCard中,若是SDCard損壞則無法還原,可自行將備份檔案寄送至Mail。

功能位置:
選擇匯出/匯入功能,先設定常用Mail;再利用寄送e-Mail送至自己的信箱。

2013年10月31日 星期四

iOS小抄_讓CLLocationManager持續在背景執行

到TARGETS的Info中,於Custom iOS Target Properties加入:

Required background modes,並在子項中加入App registers for location updates。


2013年9月30日 星期一

給他魚吃,不如教他釣魚。

自己喜歡學釣魚、教釣魚,不代表大家都喜歡,

無謂的堅持放在自己與一起有堅持的人身上,

每件人事物都在不經意的情況下企圖教你些「事情」,

:D

2013年6月21日 星期五

SQL Spatial小抄_查詢geometry欄位為wkt字串

久沒寫一下就忘記了,小抄一下。

SELECT [OBJECTID],[Name],[Shape].STAsText() as WKT FROM table

Binary格式:
SELECT SHAPE.STAsBinary() as WKB FROM suburbs WHERE SHAPE IS NOT NULL

2013年5月15日 星期三

ArcGIS Server Flex Viewer的事件傳遞(AppEvent)

一般在Flex裡面進行事件傳遞,都是以dispatchEvent來進行傳遞,例如:
dispatchEvent(new Event(LOCATE_RESULT_CLICK, true));
但在ArcGIS Server Flex Viewer內註冊了自己的事件傳遞,也就是利用AppEvent這一個as來進行操作,
所以當我們看到某個widget內以AppEvent.addListener的方式註冊事件,
在別的widget想要呼叫時,就必須使用AppEvent來進行呼叫。


方式:
AppEvent.dispatch(AppEvent.REFRESH_LEGEND);

iOS小抄_設定可利用iTunes管理document資料夾

沒作筆記,一下子又要忘記了,趕快寫一下。

步驟:
於plist右鍵,點擊Add Row,增加Application supports iTunes file sharing項目,並將屬性設為YES。

就可以將iPad接上電腦後,以iTunes直接拉檔案到該App的document資料夾。

2013年4月11日 星期四

iOS學習_UILabel配合字數調整高度(使用sizeWithFont)

有很多時候我們在呈現簡介,備註或說明等欄位時,會遇到文字過長UILabel無法一次顯示的狀況,最好的辦法莫過於從資料庫撈出的字數與想要顯示的字體大小來計算出UILabel應該有的寬高,而在iOS的字串內有一個很讚的方法:sizeWithFont。
CGSize stringSize = [datastring sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(canputwidth,CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];
說明:計算datastring在17字體大小下,擺在canputwidth的寬度中,並且以文字換行的方式計算CGSize。

獲得CGSize後即可由stringSize.width與stringSize.height取得需要的寬高,在利用setFrame來重新給定UILabel的高度。

程式碼:
-(void)someMethod:(NSString*)name { int fontsize = 17; CGSize labSize = [self calwordH:name canputwidth:self.view.bounds.size.width]; UILabel *fieldlb = [[UILabel alloc] init]; fieldlb.font = [UIFont systemFontOfSize:fontsize]; fieldlb.backgroundColor = color; fieldlb.text = name; [fieldlb setNumberOfLines:0]; fieldlb.lineBreakMode = NSLineBreakByWordWrapping; [fieldlb setFrame:CGRectMake(0.0f,0.0f,labSize.width,labSize.height)]; [self.view addSubview:fieldlb]; } -(CGSize) calwordH:(NSString *)string canputwidth:(int)canputwidth { CGSize s = [string sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(canputwidth,CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping]; return s; }

iOS6以後NSLineBreakByWordWrapping改為NSLineBreakByWordWrapping。

2013年3月21日 星期四

iOS學習_使用企業帳號發布


很謎的企業用帳號,很有趣的帳號管理,:D

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

開發使用:

1. 在Mac,開啓鑰匙圈,確認偏好設定內的,憑證,線上憑證狀態協定(OCSP與CRL為停用)

2. 選擇選單鑰匙圈存取>憑證輔助程式>由憑證授權要求憑證,匯出憑證授權。(EX:CertificateSigningRequest_enterprise_ola.certSigningRequest)

3. 電子郵件填寫已經加入企用帳號的Apple ID,取名稱(enterprise_ola),並選擇儲存到磁碟,勾選指定密鑰配對資訊。

4. 選擇密鑰大小2048與RSA演算法。

5. 進到 https://developer.apple.com

6. 點擊iOS Dev Center

7. login步驟三的Apple ID

8. 登入後,點擊右側iOS Provisioning

9. 選擇左側選單Certificates,於Development上傳剛剛建立的檔案(CertificateSigningRequest_enterprise_ola.certSigningRequest)

10. 重新整理網頁以後,可以下載XXX.cer檔案,雙擊兩下存入鑰匙圈。

11. 回到網站,選擇左側選單的Provisioning。

12. 點擊New Profile,建立一個新的Provision,AppID在開發階段可以先用:Xcode iOS Wildcard App ID

13. 下載後雙擊兩下進到Xcode Organizer的Provisioning Profiles。

14. 至project/Build Settings/Code Signing Identity,更改Debug使用的憑證,測試是否可以正常由Xcode灌到測試機當中。

------------------------------------------
發佈使用:

1. 至網頁的Certificates Distribution下載發佈用的Certificate(EX:Ola Engineering Consultants, inc.,Taiwan)

2. 雙擊兩下進到鑰匙圈的憑證內。
*.若是Provisioning Profiles出現valid signing identity not found,則去檢查鑰匙圈內的憑證是否有跟著對應的鑰匙,若無則必須去取得第一個建立Certificate的人,
利用其電腦匯出p12檔案,再雙擊加入要持圈即可。(或是Revoke企業帳號內的Distribution Certificate並重新建立,但往後有人需使用則必須你電腦匯出的p12檔案)

3. 建立AppID,該名稱似乎無法刪除與更改,請謹慎命名。(Bundle Identifier可至XCode的targets內summary查。

5. 至Provisioning的Distribution建立Provision

6. 選擇In House,輸入Profile name。

7. 下載後雙擊兩下,進到Xcode Organizer的Provisioning Profiles

8. 至專案info的Configurations增加Inhouse項目。

9. 至project/Build Settings/Code Signing Identity,更改Inhouse使用剛剛下載的憑證。

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

開始匯出,發佈:

1. 先準備一個要放置下載位置的網站,於該網站的MIME類型加入ipa與plist

.ipa | application/octet-stream
.plist | text/xml

2. 開好要放入下載app資料夾,並記錄該位置(EX:http://ola.com.tw/appdownload/)

3. 於Xcode選擇Product > Archive > Distribute

4. 選第二個Save for Enterprise or Ad-Hoc Deployment

5. 於儲存時,勾選下方的"Save for Enterprise Distribution",並輸入Application URL與Title
Application URL:http://ola.com.tw/appdownload/ola.ipa
Title:ola app

6. 將匯出後的檔案(ipa與plist)放置到步驟2的位置(EX:ola.com.tw/appdownload/內)

7. 於上述位置準備下載頁面,下載按鈕撰寫方式如下:

8. 使用ios產品下載看看。

2013年3月4日 星期一

豐泉台_煞終於倒囉!

就在5.2的前夕,豐泉台四王終於倒了!
感謝:阿龍、辰藍、飛魚、若琪、kaka、飆魔、拉拉、真影、努力實習的cc、++與超人氣ola。

可以快樂迎接5.2魔獸與蟲族之心了!!

2013年2月16日 星期六

我懂了的實踐!

1月25日傍晚騎車回家時,突然想懂了一個其實很簡單的概念,一值沒有時間可以來實做看看,最後做了一個簡單的雛型,雖然離預想的成果似乎還有一段差距,而且有非常多額外跑出來的問題,但已經有了整個架構的核心部份,剩下來就是解決這些亂七八糟的問題、逐步完成架構上的模組與重構目前的核心。

整個構想只是想處理一個很單純的事情,就是做一個"可能可以實際執行"的dynamic layer離線架構,初步完成了種坐標與屬性查詢。

沒什麼意義的系統雛型圖:


很多事情要說出來很難,要想出來很難,但是說完想完要捲起袖子做更難,說和想是個開始,但實踐也還是起頭的一部份;願成為一個能說點話、能想點事情但有手藝的老工匠。

2013年1月25日 星期五

阿~~~~我懂了~~~~~

最近跟人聊天時,我常常說:「很多事情做了才會在某些時刻激發其他的想法,如果我們一值不嘗試新的東西那麼你就放棄了這些可能突然蹦出來的想法」,就像學寫程式,難道你能肯定學寫vb6完全沒有幫助你更快瞭解asp.net嗎?學寫asp.net沒有幫助你更快學會Flex嗎?學寫Flex沒有影響在Java上的思維?學寫Java沒有讓Objective-C觸類旁通?某些成果常常是由很多事情的累積而成的。


但是上面這些跟這篇沒有很大的關係,我只是在騎車回家途中,突然產生一個因為下午測試而讓我現在異常興奮的想法,興奮到一邊騎車一邊突然大叫「阿~~~~我懂了啦~~~~~」


:DDDDDDDD


key:3 kind of service、small data、local identify


這實在是很值得吃個羊肉盧慶祝一下。

ArcGIS Server JS API測試_client端以csv檔案格式於地圖上展點

一個突然蹦出來的會議,只好重新打開很久沒開啟的ASP.NET專案,開始對那些新增、刪除、修改的表單做一些很無趣又產量驚人的敲敲打打,但這樣無聊的東西實在是很難連續兩三天,所以今天下午決定挑一個之前有在想、又有趣、又切合目前需求的題目來測試一下,目標:

以ArcGIS Server JavaScript API將client端的點資料展在圖面上,並且有簡單的屬性顯示。

看一下資料格式:


成果:


心得:
1. 測試1600點一次展繪大約1秒,拖動時的手感也還算順暢。
2. JavaScript真的不好維護,常常因為不小心的錯誤找很久。
3. 這樣的功能要能夠防呆,必須要非常嚴謹的程式碼。
4. 沒有回Server喔! :D
5. 是一個感覺很有用的應用,你懂的,ㄎㄎ。


本篇僅紀念js這麼弱的人,半天竟然測出小成果,但是下星期又要回到現實,繼續敲敲打打了。 :D

2013年1月17日 星期四

六週年慶

六週年,以accepted開頭,勢必需要一個有氣勢的延續,取名在家也可以享受高級餐廳的服務大作戰!

前菜:洋蔥燻鮭魚
配菜:白酒蛤蜊+香炒野菇
湯品:海鮮濃湯
麵包:法式吐司
主菜:香煎羊排
飲料:蘋果冰茶
甜點:香蕉布朗尼
六週年快樂。

2013年1月11日 星期五

Android學習_如何開始使用Google Maps Android API v2

前一陣子想要測試一些Google Map的東西,才發現他默默的在2012年12月3日推出了Google Maps Android API v2(官方資料),而原本申請key與使用的方式變的不太一樣。

要讓手機正確出現Google map需要下列步驟:
1. 建立個人的keystore。
2. 由個人的keystore查詢SHA1碼。
3. 利用SHA1碼至Google apis網站申請key。
4. 於eclipse安裝Google Play services。
5. 於要使用Google Map的專案加入google-play-services_lib的Library。
6. 於專案的AndroidManifest與layout.mal加入需要的設定。
7. 利用第一步驟的keystore匯出專案為apk檔案。
8. 以adb安裝上述apk檔案。


詳細步驟:
1. 建立個人的keystore。
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -keysize 2048 -validity 10000)
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。


2. 由個人的keystore查詢SHA1碼。
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得SHA1的語法(keytool -list -v -keystore "C:\Program Files\Java\jre6\bin\yourkeyname.keystore"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。(語法中加上-v才會顯示SHA1碼)


3. 利用SHA1碼至Google apis網站申請key。
A. 連至申請網站https://code.google.com/apis/console/
B. 若是第一次使用按Create Project。
C. 選擇左邊列表的Services,並且將google Maps Android API v2調整成"on"。
D. 選擇左邊列表的API Access,並且點擊右下角的Create new Android key。
E. 輸入步驟二得到的SHA1與專案的Package名稱(中間以分號分隔),例:SHA1碼;tw.com.maptest。
F. 記住API key。


4. 於eclipse安裝Google Play services。
A. 進入Android SDK Mnanger(eclipse→windows→Android SDK Mnanger)。
B. 安裝Extras的Google Play services。


5. 於要使用Google Map的專案加入google-play-services_lib的Library。
A. 於eclipse→File→import,選擇Android下的Existing Android Code Into Workspace。
B. 由Browse選擇→[android-sdk-folder]/extras/google/google_play_services/libproject/google-play-services_lib
C. 於要使用Google Map的專案按右鍵,選擇Properties。於左側選單選擇Android,並於下方Library上述加入的專案google-play-services_lib。


6. 於專案的AndroidManifest與layout.xml加入需要的設定。
A. 打開AndroidManifest加入必須的設定。
於application標籤之上(注意下述程式碼必須置換yourpackagename成你的package名稱):
<permission android:name="yourpackagename.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="yourpackagename.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
於application標籤中加入(注意下述程式碼必須置換GoogleMapAPIKey成剛剛申請到的Key):
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="GoogleMapAPIKey"/>
於application標籤下加入:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
B. 打開layout.xml,將介面先改為較單純的內容,待測試OK後再更改為自己需要的介面。
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment"/>
C. java用最單純的內容先進行測試: package yourpackageName; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

7. 利用第一步驟的keystore匯出專案為apk檔案。
A. 專案右鍵選擇Android Tools→Export Signed Application Package。
B. 依照步驟可以匯出帶有簽章的apk檔案(過程中必須輸入最初設定的keystore密碼)


8. 以adb安裝上述apk檔案。
A. 利用adb指令(adb install Name.apk)

最後,執行程式,確認手機有連上網路,迎接你的地圖吧。

這篇有幫助到你了話,請留"YA~~~看到圖了"


2013年3月22日由劉佺網友補充如何在不匯出專案的情況下,使用debug.keystore來進行實機測試:
以下為完整留言,感謝他的補充:
不過隨即發現不用匯出成apk這麼麻煩,如果用他預設的debug.keystore去產生api key,就可以直接從eclipse/Run As去選擇自己的裝置
預設的debug.keystore可以從Preferences \ Android \ Build \ Default debug keystore去查詢
步驟二的語法就會變成:keytool -list -v -keystore "C:\Users\使用者名稱\.android\debug.keystore"
預設的debug.keystore的預設密碼是:android;這樣去申請,DEBUG時測試起來就會比較快(非常多 XD),就不用每次都匯出成專案了

剛才測試的時候發現,申請完以後,如果要改成自己之前新建的keystore
1. 先查自定密碼的keystore的SHA1碼
2. 到Google的API Access分頁
3. 選擇右邊的Edit allowed Android apps...
4. 將前半的SHA1碼改掉,分號後面的專案名稱不動
結果API key也不會變動,匯出專案時就可以用自訂的密碼了
實際安裝起來Google Map也可以正常顯示
----------------------------------------------------------------

2013年1月10日 星期四

SQL_程式無法連線到SQL Server相關問題排解

在裝機時其中一個很重要的事情,就是確認程式是否可以正確連線到資料庫,若是無法正常連線,可以逐步測試來確認有可能出問題的設定:

0. 確認輸入之伺服器名稱正確,包含安裝兩台以上之SQL Server是否有增加實體名稱(伺服器/實體名稱)

1. 以本機確認Windows驗證(伺服器/實體名稱)是否可以通過:若是無法通過,應確認SQL Server在安裝時的管理者是否還存在於windows帳號當中,若原設定的管理者被刪除,唯有重建資料庫與重灌一途。

2. 以本機確認SQL驗證(伺服器/實體名稱)是否可以通過:若是無法通過,請用管理者帳號確認該SQL帳號是否已於安全性的登入中正確顯示。

且確認該資料庫是否設定為"SQL Server及Windows驗證模式。


3. 以本機確認SQL驗證(ip/實體名稱)是否可以通過:若是無法通過,至SQL Server組態管理員確認是否有開啟TCP/IP設定。

4. 以本機確認驗證通過後,是否可以正常開啟要查詢的資料庫:若是跳出無法存取資料庫XXX,則確認該SQL帳號是否有給定存取該資料庫之權限。

5. 以另一台伺服器測試SQL驗證(ip/實體名稱),若無法連線:
(1) 至SQL Server組態管理員查看ip設定為何?若有指定之port,連線時必須以"ip/實體名稱,port"來連線。
(2) 至SQL Server組態管理員或服務管理查看SQL Browser服務是否有開啟。
(3) 以telnet測試,該port是否可使用。(安裝請參考)
(4) 確認防火牆是否有開啟,若有開啟確認是否有輸入相關規則。(包含:TCP/1433與UDP/1434)

(5) 若是express版本,沒有指定特定port,而使用動態port,則需增加規則。(讓sqlserver.exe可穿越防火牆)

*.但微軟於官方文件提到:另一種設定具名執行個體到固定通訊埠的方法,就是在防火牆中為像是 sqlservr.exe (針對 Database Engine) 等 SQL Server 程式,建立例外。 雖然這樣做很方便,但是當您使用具有進階安全性 MMC 嵌入式管理單元的 Windows 防火牆時,其通訊埠編號將不會顯示在 [輸入規則] 頁面的 [本機通訊埠] 欄中。 如此一來可能會讓您更難以稽核哪些通訊埠已開啟。其他考量是 Service Pack 或累積更新可能會變更 SQL Server 可執行檔的路徑,因而使防火牆規則失效。

(6) 詢問該單位網路管理員,是否有別的防火牆設備或軟體,請他開啟相關連接埠。


以上,若是還是無法正常連接資料庫,那就回家休息一下。