ubuntu13.10 server:phpmyadmin出現缺少 mcrypt 外掛

最近升級到ubuntu13.10時,安裝了phpmyadmin卻遇到了以下訊息:
缺少 mcrypt 外掛。請檢查 PHP 設定

執行以下指令即可:

sudo mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
sudo php5enmod mcrypt
sudo service apache2 restart

git:快速切換到上一個branch

假設你現在的branch是master:

#開一個新branch->test
git branch test

#切換到test(我把co alias成 checkout,所以這行其實是git checkout test)
git co test

#切換到上一個branch
git co -

就是這麼簡單,這跟cd – 是一樣的。

設定Apache&mysql連線數(ubuntu)

Apache 要修改 /etc/apache/apache.conf
MaxKeepAliveRequests 10000
#預設是100

MySQL 的部份修改 /etc/mysql/my.cnf
max_connections=10000
#預設是100

之後在restart apache&mysql即可。

titanium android push notification:使用gcm module

使用Titanium開發android app,如果要實做push notification 功能可以使用gcm module,步驟如下:

1.上github,clone titanium gcm module
Github:https://github.com/MR-SC/titanium-gcm
原作者:https://github.com/liccowee/Google-Cloud-Messaging–Titanium-

2.下載下來後,修改timodule.xml,把裡面的package name改成你的app的package name,然後重新build~

<manifest package="my-package-name">

3.修改tiapp.xml
增加以下屬性,並且改成你自己的sender_id/package-name/project-name

<property name="com.activate.gcm.sender_id" type="string">1034207024214</property>
<property name="com.activate.gcm.icon" type="int">2130837504</property>
<property name="com.activate.gcm.component" type="string">
package-name/package-name.project-nameActivity</property>

4.修改index.js
在你的index.js增加以下code

var gcm = require('com.activate.gcm');

gcm.registerC2dm({
success:function(e){
//save token to your server
Ti.API.info('gcm deviceToken: '+ gcm.getRegistrationId());
},
callback:function(e){
//do something
}
});

以上為你的app再background running的時候,一切都會正常,因為callback函式會被觸發。
但是若你的app並沒有在背景執行,這個callback並不會被觸發,所以需要再加一些code,如下。

var last_data = Ti.App.Properties.getString('com.activate.gcm.last_data');
if(last_data){
Ti.API.info('has last_data ');
raw_data = JSON.parse(last_data);
//do something
Ti.App.Properties.setString('com.activate.gcm.last_data', null);
}

因為這個gcm module會把你從server push到手機的data存在Ti.App.Properties的”com.activate.gcm.last_data”屬性。
所以即使app不在背景執行,當使用者點了notification後會啓動app,然後再透過上面得到資料,然後就可以做你想做的事。但記得做完你想做的事要把該屬性設為null,否則下次又會拿到相同舊的資料。

以上為gcm module使用方法,僅供參考。

Titanium:製作Module(使用Mac)

在使用Titanium開發android & ios app的時候常常需要使用到module來擴充功能。
以下是製作module的步驟

Android module
1.打開Titanium studio在project explorer下點右鍵建立module
螢幕快照 2014-03-11 下午1.24.31

之後點選android module
螢幕快照 2014-03-11 下午1.29.18

說明:建立完後你可以自行在/src目錄下找到.java檔案,你可以自行編輯並且擴充你想要的原生功能。寫完後就可以開始編譯,步驟如下。

2.安裝apache ant
可以到官網看說明:http://ant.apache.org/

3.安裝android ndk
可以到android developer頁面看說明:
https://developer.android.com/tools/sdk/ndk/index.html

4.修改build.property
加入以下這行讓module找得到ank
android.ndk=/Users/xxx/Downloads/android-ndk-r9c

5.如果有需要可以修改.classpath
如果你需要引入一些外部lib,可以放在根目錄下的lib,然後修改根目錄下的.classpath檔案。
例如:
<classpathentry kind=”lib” path=”lib/facebooksdk.jar”/>

6.之後下ant 指令
在module根目錄下打ant指令即可,之後會多出一個dist目錄,裡面有一個壓縮zip檔,就是已經build完的module。

7.引入module
將.zip檔案放到~/Library/Application Support/Titanium 下解壓縮,titanium會自動將該module的zip檔解壓縮至正確的位置。

以上就是在Mac下製作android module的步驟清單,之後修改tiapp.xml將該module納進來即可。

Ios module
1.同android一樣create一個module,只是要改成選ios module

2.編輯.xcodeproj
修改module根目錄下的.xcodeproj,可以打open modulename.xcodeproj。
之後會開啓xcode。
之後可以在Classes下找到xxxModule.m,你可以編輯它,增加你要的功能。

3.Link Binary with libraries
如果你需要納入外部的library,可以在該project下新增,如下圖。
螢幕快照 2014-03-11 下午2.02.35
修改完存檔離開即可。

4.修改module.xcconfig
回到module根目錄下面,編輯module.xcconfig,增加OTHER_LDFLAGS屬性。
例如以下:
OTHER_LDFLAGS=$(inherited) -framework Foundation -framework CoreGraphics -framework UIKit -F”/Documents/FacebookSDK” -framework FacebookSDK

5.編譯
之後回到module根目錄打./build.py即可,會在根目錄下建立一個.zip檔,同樣放到根android一樣的位置並解壓縮即可。

以上爲製作Titanium ios module的步驟。

本篇文章爲製作Titanium andorid & ios module的方法,僅供參考。

ubuntu:使用sysv-rc-conf關閉更多系統服務(Service)

特別注意: 有些服務關閉會造成系統異常,如果您不熟悉這些服務是什麼,請勿動他,上網查詢明白後再決定是否關閉它:

安裝:

sudo apt-get install sysv-rc-conf

在我們開始搞亂它們之前,我要在這裡引入一些運行等級知識 ….全部開機進程執行順序如下:

  • 運行等級 S:開機進程中的第一個運行等級。/etc/init.d/rcS腳本將被調用到開啟並且/etc/rcS.d目錄下的所有進程將被執行。
  • 運行等級 1:單用戶模式。/etc/rc1.d目錄下的所有進程將被執行。
  • 運行等級 2,3,4,5:在debian系統裡是多用戶環境,可能不包含圖形用戶界面。同樣的,在相應目錄下的進程將被運行。
    • 注意** 這和RedHat,SuSE, 以及其它基於RPM的系統不同。

運行等級 0:關閉計算機

運行等級 6:重起計算機

執行:

sudo sysv-rc-conf

各個服務相關說明如下:

1. acpi-support – 你最好使其在S運行等級處於“X”狀態。

2. acpid – acpi守護程序.這兩個用於電源管理,對於筆記本和台式電腦很重要,所以讓它們開啟。

3. alsa – 如果你使用alsa聲音子系統,是的,開啟它。

4. alsa-utils -在我係統裡,此服務取代了alsa,所以我關閉了alsa並在S運行等級將此服務開啟。 **注意**,我所說的“關閉”是指在所有運行等級裡面去除所有“X”。如果在你係統裡沒有它,沒問題。讓我們繼續。

5. anacron – 一個cron子系統,當時間到達時用於執行任何沒有被執行的cron作業。當某種cron 作業時間準備好時,很可能你或許已經關閉了你的計算機。打個比方,updatedb被計劃在每天2點執行,但是在那個時候,你的計算機是關閉的,然後如果ananron服務如果是開啟的話,它將設法抓起那個updatedb cron… 我將它關閉是因為我不經常關閉我的筆記本,但是否開啟此服務完全取決於你。

6. apmd – 這是十分困惑我的一個服務。我已經開啟了acpid服務,那同時開啟apmd有啥好處呢?如果你的計算機不是那麼老,甚至不能支持acpi,然後你可以設法關閉它。無論如何,我是關閉它的。

7. atd – 就像cron,一個作業調度程序。我把它關了

8. binfmt-support – 核心支持其他二進制的文件格式。我讓它開著

9. bluez-utiles – 我把它關了因為我沒有任何藍牙設備

10. bootlogd – 開啟它

11. cron – 開啟它

12. cupsys – 管理打印機的子系統。我沒有打印機所以我關閉它了,如果你有打印機,開啟他。

13. dbus – 消息總線系統(message bus system)。非常重要,開啟它。

14. dns-clean – 當使用撥號連接,主要用於清除dns信息。我不用撥號,所以我關閉了它。

15. evms – 企業捲管理系統(Enterprise Volumn Management system). 我關閉了它。

16. fetchmail – 一個郵件接受守護進程,我關閉了它。

17. gdm – gnome桌面管理器。無論如何我關閉它了,因為我將系統用終端引導。如果你想直接引導到圖形用戶界面,這取決於你。

18. gdomap – 事實上我也不知道為什麼此服務必需開啟。我沒有在其他系統見過這個守護程序,所以我將其關閉並且我沒覺得我失去了什麼。開啟它對筆記本或者台式​​機有任何好處嗎?

19. gpm – 終端鼠標支持。如果你覺得你在終端使用鼠標更好,那麼在運行等級1 和2 開啟它。那正是你所需要的。

20. halt – 別更改它。

21. hdparm – 調整硬盤的腳本。我在運行等級2,3,4,5去除了它但是在S 運行等級添加了它。我覺得早點打開DMA,32bit I/O等等將對其餘過程有益。我自己也將原來的腳本精簡了一下。如果我知道我正做什麼,我覺得做過多的檢查沒用。相應配置文件是 /etc/hdparm.conf。

22. hibernate – 如果你的系統支持休眠,把它打開,否則它對你沒用。

23. hotkey-setup – 此守護進程為你的筆記本建立一些熱鍵映射。支持的製造商包括: HP, Acer, ASUS, Sony, Dell, 和IBM。如果你有那些品牌的筆記本,你可以打開它,否則它或許對你沒有任何好處。

24. hotplug and hotplug-net #激活熱插拔系統是費時的。我將考慮關掉它們。我在的/etc/network/interfaces文件作了很多修改,並將其設置為自動運行,而不是在熱插拔進程期間映射我的無線網卡。所以我可以將它們關掉。我已經測試過了,甚至我將它們關閉,ubuntu仍舊可以檢測到我的usb驅動器,我的數碼相機,等等。所以我認為關掉它們是很安全的**注意**如果在關閉熱插拔服務以後發現你的聲卡部工作了,你可以將服務打開,或者編輯/etc/modules文件並添加聲卡驅動模塊。經測試,後者比較快。

25. hplip – HP打印機和圖形子系統,我將其關閉了。

26. ifrename – 網絡接口重命名(network interface rename)腳本。聽上去很酷但是我把它關掉了。主要用於管理多網絡接口名稱。雖然我有無線網卡和以太網卡,兩者被內核標識為eth0和ath0,所以此服務對我不是很有用。

27. ifupdown and ifupdown-clean – 打開它,它們是開機時網絡及口激活腳本。

28. inetd or inetd.real – 查看文件/etc/inetd.conf 註釋掉所有你不需要的服務。如果該文件不包含任何服務,那關閉它是很安全的。

29. klogd – 打開它。

30. linux-restricted-modules-common – 你應該去查看下是否你的系統裝載有任何受限制的模塊。既然我需要madwifi ath_pci 模塊,所以我將其開啟。受限制的模塊可以從/lib/linux-restricted-modules查看到。如果你發現你沒有使用任何受限制的模塊,那關掉這個服務沒事。

31. lvm – 我沒有使用邏輯卷所以我將此服務關閉。讓它開啟如果你*確實* 有lvm(lvm是邏輯捲管理器在此不再擴充).

32. makedev – 打開它。

33. mdamd – Raid管理工具。不使用Raid所以我將此服務關閉。

34. module-init-tools – 從/etc/modules加載擴展模塊。你可以研究/etc/modules文件查看是否有一些你不需要的模塊。通常我們將此服務開啟。

35. networking – 在啟動期間通過掃描/etc/network/interfaces文件增加網絡接口和配置dns信息。讓它開著。

36. ntpdate – 通過ubuntu時間服務器同步時間。在開機的時候我不需要它,故我關掉了此服務。

37. nvidia-kernel – 我自己編譯了nvidia驅動,所以此服務對我沒用。如果你從受限制模塊中使用nvidia驅動,那打開此服務。

38. pcmcia – 激活pcmica設備。我將此服務打開在S運行等級而不是分別在2,3,4,5運行等級打開此服務,因為我覺得起先讓硬件設備準備更好。如果你在使用沒有pcmica卡的台式機的話,請關閉此服務。

39. portmap – 管理像nis,nfs等等之類服務的守護程序。如果你的筆記本或台式機是純粹的客戶端,那麼關閉此服務。

40. powernowd – 管理CPU頻率的客戶端程序。主要用於支持CPU speed stepping技術的筆記本。通常如果你在配置一台筆記本,你應該開啟此服務。如果是台式機,那此服務應該沒有用。

41. ppp and ppp-dns – 對我沒用,我不使用撥號。

42. readahead – **感謝mr_pouit!** readahead似乎是一種“預加載程序”。在開機時它將一些庫文件加載到內存,以便一些程序啟動的更快。但是它給啟動時間增加了3-4秒。所以,你可以留著它…或者不。 **更新**,經我測試我覺得加載程序沒有什麼不同。所以我決定關閉此服務。如果你有打開此服務的理由,那就打開它。

43. reboot – 別更改它。

44. resolvconf – 按照你的網絡狀態自動配置DSN信息,我將它打開著。

45. rmnologin – 如果發現nologin,那麼去除它。此情況不會在筆記本上面發生,所以我擺脫它。

46.​​ rsync – rsync守護程序. 我不打算在我的筆記本上使用rsync協議,所以我將其關閉

47. sendsigs – 在重啟和關機期間發送信號。順其自然。

48. single – 激活單用戶模式。順其自然。

49. ssh – ssh守護程序。我需要ssh,所以我將此服務打開。

50. stop-bootlogd – 從2,3,4,5運行等級停止bootlogd。順其自然。

51. sudo – 檢查sudo 狀態。我沒在一台筆記本或者台式​​機客戶端上看到任何使用sudo的好處,因此我關閉了它。

52. sysklogd – 順其自然。

53. udev and udev-mab – 用戶空間dev文件系統(userspace dev filesystem)。好東西,我將它們打開。

54. umountfs – 順其自然。

55. urandom – 隨機數生成器。可能沒什麼用處,但是我留著它。

56. usplash – 嗯,如果你想看到漂亮的開機畫面,順其自然。無論如何沃關閉此服務了。如果你想關閉它,你也可以編輯/boot/grub/menu.lst文件註釋掉splashimage行,除去開機splash核心選項。

57. vbesave – 顯卡BIOS配置工具。它能保存你顯卡的狀態。我將其開啟。

58. xorg-common – 設置X服務ICE socket。我將其從在S運行等級開啟移動到2,3,4,5,運行等級。如果我引導到單用戶模式,那我不需要此服務。在最初引導期間這種方法將不佔用時間。

59. adjtimex – 這也是調整核心hw時鐘的工具。通常你不會在開機列表中看見它。在非常少有的情況如果你確實在開機進程中看見它了,事出有因,因此最好順其自然。在我的情況裡,它是​​關閉的。

60. dirmngr – 證書列表管理工具(certification lists management tool)。和gnupg一起工作。你必須看看你是否需要它。在我的情況裡,我是關掉它的。

61. hwtools – 一個優化irqs的工具。不確定打開它的好處。在我的情況裡,我是關掉它的。

62. libpam-devperm – 在系統崩潰之後用於修理設備文件許可的一個守護程序。聽起來不錯,因此我打開它了。

63. lm-sensors – 如果你的主板內建一些傳感芯片,通過用戶空間(userspace)查看hw狀態可能是有幫助的。我運行了它,但是它提示“沒有發現傳感器”,因此我關閉了此服務。 64. mdadm-raid – 作用和mdadm服務相同。用來管RAID設備。如果你沒有此類設備,那儘管關掉它好了。

65. screen-cleanup – 一個用來清除開機屏幕的腳本。嗯,是否關閉它有你決定。在我的情況裡,我打開它了。

66. xinetd – 用來管理其他守護進程的一個inetd超級守護程序。在我的系統裡,xinetd管理chargen, daytime, echo和time (在/etc/xinetd.d 目錄找到的),我不關係任何一個,因此我關掉了此服務。如果在xinetd下你確實有一些重要的服務,那打開它。

說明:在這個有關服務的說明里不是很全。具體的大家參考自己到實際情況做吧。不知道的就不要更改了。

Titanium:實做Ios app的Push notification功能

以下是使用Mac實做Ios app的push notification功能:

step1.註冊Ios開發者帳號,一年要$99美元
由於開發Ios app一定要有開發者帳號,否則無法在實機上測試。註冊完開發者帳號後可以進入第二個步驟。

step2.製作certificate
螢幕快照 2014-02-09 上午9.11.48

點選Mac>應用程式->工具程式(資料夾)->鑰匙圈存取
進去之後上方bar的鑰匙圈存取->憑證輔助程式->從憑證授權要求憑證
之後輸入電子郵件,一般名稱與下方選儲存至硬碟。
之後儲存至桌面push.certSigningRequest
#注意:上面的檔名為你在titanium的project name,例如你的Titanium的id可能是com.companyname.push

螢幕快照 2014-02-09 上午9.20.52
之後下方點鑰匙,會發現剛剛已經儲存的push.certSigningRequest
點選右鍵並輸出成.p12檔至桌面

此時你應該有兩個檔案push.certSigningRequest與push.p12

Continue reading “Titanium:實做Ios app的Push notification功能”