Xcode 6 beta下執行XE6 iOS程式問題解決

螢幕快照 2014-06-18 下午3.23.12

因為學習Swift語言的關係,就把XCode6 beta版本也安裝上來!不過卻發生要在iOS Simulator執行程式XE6開發的程式時,出現”Can’t load simulator framework’的錯誤訊息。

因為在網路上遍尋不著解決方案,索性自己發揮柯南精神解決。於是把問題鎖定在XCode的command line上面,在一番測試後果然找到問題就是它了~

在Xcode的Preferences中,有個Locations頁籤,裡面有command line tool,預設是 xcode6。改回成Xcode 5.1.1就可以了!分享給各位~

螢幕快照 2014-06-18 下午3.23.31 螢幕快照 2014-06-18 下午3.23.45

Delphi XE6 GCM+Kinvey推播

詳盡原文刊登於 Codedata

當APP不在前景執行時,能夠用自己的平台或伺服器發送通知給行動的一項技術。在iOS平台上有APNS(Apple Push Notification Service),而Android平台上則叫做GCM(Google Cloud Messaging),在今天我們先以Android的GCM搭配BaaS服務Kinvey為例子。

Google Cloud Messaging

1.進入網站 https://console.developers.google.com
07
2.輸入專案名稱跟專案ID
08
3.完成後,記得專案編號(等等在其他設定會用到)
09
4.接著點選API 找到 Google Cloud Messageing for Anroid 後按關閉按鈕打開

1112

五、點選建立新的金鑰

13

六、點選伺服器金鑰

14

七、如果沒有特別允許使用IP可以略過後按建立就行了

 

15

八、一樣要記得API金鑰
17

kinvey申請

在行動裝置的開發領域目前有個BaaS(後端即服務:Backend as a Service)的技術概念。BaaS是指為行動裝置開發者提供整合雲端的基礎服務,像是資料/文件的儲存或是帳號管理、訊息推送、社群網路整合等….
而在Delphi XE6中支援二個熱門的服務為Kinvey及Parse,在這邊我們以Kinvey做為例子。
1.進入Kinvey網站(http://www.kinvey.com/)按下Sign Up註冊
01

2.註冊帳號只要電子郵件跟密碼就行了

02

3.點選Individual 個人帳戶的Get Started即可

 

 

03

4.接著建立一個新的專案,平台的話選擇Other(其他)的REST API即可
04
5.建立完成後,右下角的API Keys要記下來06

6.接著我們要建立可以存取服務的使用者,點選上面的Addons,在Core內有Users點入22

7.接著點選Add User新增使用者23

8.只要輸入帳號密碼就可以,我們建立一個test使用者24

9. 建立完成後可以看見使用者列表

25

10.接著建立待會使用的 Push Notification,一樣在Addons的目錄下有一個Messaging,裡面有一個Push

18

11.接著我們將剛才在Google控制台的專案編號填入Project ID、API金鑰填入API Key,接著按下Save GCM Configuration。右上角會由inactive轉為active。這樣就完成了相關的申請跟設定,不過先別關掉它。等等會再使用到!19 20 21

程式開發

1.我們延續剛才的通知範例,在畫面加上ListView元件,將Align設為Bottom

螢幕快照 2014-06-17 下午3.40.05

2.接著在畫面上放上二個元件,一個是TKinveyProvider以及TPushEvents

螢幕快照 2014-06-17 下午3.40.38

螢幕快照 2014-06-17 下午3.41.01

3.PushEvents1中的AutoActivate、AutoRegisterDevice設為True以及Provider指定KinveyProvider1

螢幕快照 2014-06-17 下午3.41.33

4.設定 OnPushReceived事件,在裡面的程式寫上

螢幕快照 2014-06-17 下午3.42.21

1
2
3
4
5
procedure TForm1.PushEvents1PushReceived(Sender: TObject;
  const AData: TPushData);
begin
  ListView1.Items.Add.Text := AData.Message;
end;

5.接著在KinveyProvider1設定相關參數
螢幕快照 2014-06-17 下午3.43.31

6.最後開啟專案目錄下的AndroidManifest.template.xml(這個檔案是Delphi編譯過程中產生AndroidManifest.xml的範本檔。

在幾個位置加入設定
.<%uses-permisson%>後面加上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- GCM connects to Google Services. -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!--
     Creates a custom permission so only this app can receive its messages.
     NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,
     where PACKAGE is the application's package name.
    -->
    <permission android:name="%package%.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
    <uses-permission android:name="%package%.permission.C2D_MESSAGE" />
    <!-- This app has permission to register and receive data message. -->
    <uses-permission
    android:name="com.google.android.c2dm.permission.RECEIVE" />

.</intent-filter></activity> 後面加上

1
2
3
4
5
6
7
8
<receiver
android:name="com.embarcadero.gcm.notifications.GCMNotification" android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND"
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <category android:name="%package%" />
  </intent-filter>
</receiver>

接著就可以執行程式了!
程式執行後,我們回到Kinvey網站,輸入要推播的訊息後按 Send Push Notification
pushmessage

可以看到程式的Listview會出現推播的訊息。

1907712_10152077090231541_3460962835102390423_n

最後附上原始碼

https://github.com/superlevin/xe6notification

Discuz 降低流量開啟gzip功能

/config/config_global.php 內找到
$_config[‘output’][‘gzip’] = ‘0’;

改成

$_config[‘output’][‘gzip’] = ‘1’;

可以用
GIDZip Test檢查
http://www.gidnetwork.com/tools/gzip-test.php

網頁gzip壓縮檢查

http://gzip.zzbaike.com/

HTTP Compression Test

http://www.whatsmyip.org/http-compression-test/

Check Gzip Compression

http://checkgzipcompression.com/

Gzip 分析

http://www.gongju.com/gzip/

學習ROR的中文教學資源Rails 101&Rails 102

網路大神Xdite自己寫的教學手冊,前陣子為了極力推廣學習ROR將Rails 101這本電子書免費開放下載。今天又將Rails 102開放了~

Rails 101 是給初級新手入門的手冊

https://leanpub.com/rails-101

而Rails 102 是給高級新手的更瞭解 Ruby on Rails 相關知識以及MVC架構的知識

https://www.gitbook.io/book/rocodev/rails-102

修改Mac OS截圖預設儲存路徑與格式

Mac OS有一個很多人都喜歡的截圖功能

  • Command + Shift + 4 自己選擇區域截圖
  • Command + Shift + 4 + 空格 點選特定視窗截圖
  • Command + Shift +3 全螢幕截圖
  • Command + Control + Shift + 3 全螢幕截圖暫存記憶體
  • Command + Control + Shift + 4 自己選擇區域截圖暫存記憶體

雖然Mac截圖功能很方便,不過很討厭的一點是預設存放的路徑在桌面。如果截取多張一點的話,整個桌面亂到不行!當然是有方式可以更改截圖功能預設的路徑以及圖片類型(從png改成gif 或jpg)

假設我們要將截圖存到桌面上的Photos資料夾的話

一、建立Photos資料夾,資料夾路徑為 /Users/apple/Desktop/Photos
螢幕快照 2014-06-09 下午10.02.00

二、打開終端機,輸入以下指令


defaults write com.apple.screencapture location (完整路徑名稱)

螢幕快照 2014-06-09 下午10.03.44

三、終端機輸入以下指令,或重新登出再登入

killall SystemUIServer

P.S 如果要更改預設的截圖格式從png改成jpg的話,一樣輸入以下指令

defaults write com.apple.screencapture type jpg

最後別忘了重覆步驟三。

RAD Studio XE6, Delphi XE6, C++ Builder XE6網路研討會

看到信箱躺著網路研討會的訊息,覺得還不錯分享給大家了!其實我還蠻常三更半夜參加Embarcadero總公司發佈的研討會~

報名連結

如果您苦於尋找快速, 強大的移動平台和Windows/Mac開發工具, 那麼您一定要來體驗一下RAD Studio XE6, Delphi XE6, C++ Builder XE6, 因為RAD Studio XE6可讓您使用一套程式碼同時開發Windows, iOS/Android和Mac平台的應用程式.
邀請您一起來探討 XE6 新的 VCL/Windows 及 FMX multi-device 開發優勢,讓您的 app 應用開發更上層樓。

日期: 2014 年 6 月 17 日星期二
時間: 10:00 AM – 11:00 AM CST

透過.htaccess設定虛擬主機上傳限制

.htaccess是apache上的設定檔,一般都會開放讓使用者設定。.htaccess可以設定的很多,盜連、檔案列表、轉址….包羅萬象,不過今天只是要告訴大家修改上傳限制的方式而已,新增一個.htaccess的檔案,透過php_value可以修改php.ini的設定,例如我要把遠振虛擬主機上的某個網站設定上傳限制10M,我可以丟個.htaccess檔案,裡面放2行就可以了!但是其他網域就不變。

php_value upload_max_filesize 10M
php_value post_max_size 10M

Discuz!更新到3.2版了!!

如果有架設論壇的朋友肯定對Discuz!這套論壇程式不陌生,台灣目前百大網站中許多論壇程式也是使用Discuz架設!

目前已更新到3.2的版本~更新的部份如下

優化 部分頁面,提升效率
調整 插件機制,提供更多接口
新增 對微信登錄、微社區的支持
修復 舊版中存在的已知問題和安全隱患