2016年7月24日

在樹莓派上玩 Node.js

Node.js on Raspberry Pi


樹莓派很有趣,用 javascript / jQuery 開發應用軟體更好玩。
當然,先得在樹莓派上安裝 Node.js 才行。

安裝過程很容易,三行指令就搞定囉!
但不要直接用 apt-get 直接安裝 nodejs,因為版本太舊,若已裝了,先移除吧。

移除:

sudo apt-get remove nodejs -y


安裝 4.x 版的 Node.js


curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs


(或) 安裝 6.x 版的 Node.js


curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs



玩 Node.js 免不了要運用別人貢獻的模組,何必一直發明輪子呢?

sudo apt-get install -y build-essential


接下來,更新一下 npm 吧!

sudo npm update npm -g


最後,查一下安裝好的版本...

node -v
npm -v


來玩 Node.js 吧!

2016年7月1日

Drupal 7 的 node 結構

7.x - Node object core structure (不含 fields)

$node->nidNode ID.
$node->vidThe revision ID of the current version of this node.
$node->typeType of node (e.g. book, page, forum), which is also the entity bundle.
$node->languageThe default language for this node.
$node->titlePage (or, more accurately, node) title.
$node->uidUser ID of node creator.
$node->statusunpublished/published (NODE_NOT_PUBLISHED | NODE_PUBLISHED).
$node->createdUNIX timestamp of node creation date.
$node->changedUNIX timestamp of last time node was changed.
$node->commentWhether comments are allowed on this node (COMMENT_NODE_HIDDEN | COMMENT_NODE_CLOSED | COMMENT_NODE_OPEN)
$node->promotePromoted to front page (NODE_NOT_PROMOTED | NODE_PROMOTED).
$node->stickySticky (NODE_NOT_STICKY | NODE_STICKY).
$node->tnidThe node ID of the translation source (or parent, if node is a translation).
$node->translateDoes the translation need to be updated (0|1)?
$node->revision_uidThe user ID of the user who created the current revision.
$node->bodyArray. Body content of node. Long text field with summary.
Note: Don't assume that this field will exist, as it is possible to remove it via Manage Fields on each content type. Similarly, modules that define a custom node content type may not even attach a body in the first place.
$node->logMessage left by the creator of this revision, explaining the changes.
$node->revision_timestampUnix timestamp showing when current revision was created.
$node->nameUsername of node creator.
$node->pictureUser avatar of the node creator.
$node->cidCID of last comment?
$node->last_comment_timestampTimestamp of last comment (Unix Epoch C).
$node->last_comment_nameName of last comment author
$node->last_comment_uidUID of last comment author.
$node->comment_countNumber of comments made on node.
$node->dataSerialized string of data associated with the node.
$node->rdf_mappingW3C standard to describe structured data. Seehttp://api.drupal.org/api/drupal/modules!rdf!rdf.module/group/rdf/7

透過 Field API 所加入的欄位結構

例如加入名為 foo 的文字欄位,要取出其值可用:

$val = $node->field_foo[LANGUAGE_NONE][0]['value'];


如果覺得這樣不方便,可用 meta wrapper 來包:

$wrapper = entity_metadata_wrapper('node', $node);
$val = $wrapper->field_foo->value();


要用哪一種?  其實都可以,如果只是要讀取某欄的值,先用

drupal_set_message('debug: ' . print_r($node->field_foo, TRUE));


確認該欄的結構後,直接取值就好。

若有多個值要存取,改用 wrapper 才會較有感。


2011年8月8日

Google 工具列 (Toolbar) 不再支援 Firefox 5+

OMG ! Google Toolbar 不支援 Firefox 5 ,且未來也不再支援 Firefox 5 以上的版本...


官方說法是: Firefox 的內建功能及其眾多外掛模組,已可達到 Google 工具列所提供的功能。



工具列不適用於 Firefox 5 或更新版本

如果您使用的是 Firefox 5 或更新版本,就無法使用「Google 工具列」。不過,您可以試著透過下列一或多項 Firefox 附加元件,在瀏覽器中加入類似的功能:


問題是,許多人已經習慣用 Google toolbar 了,且也不是每個人都有能力去找外掛來拼出原本的功能呀!

有點被強迫改用 Chrome 的感覺... = =

2010年11月23日

ubuntu vsftpd 無法刪除目錄

學生主機使用 ubuntu + vsftpd 來提供個人 FTP 網路空間。

本學期讓學生用 Drupal 架站,一直遇到 FileZilla 無法刪除部份目錄的問題,神奇的是,其他班級的授課老師及學生都沒有反應相同的問題,觀看 /var/log/vsftpd.log , /var/log/messages 記錄檔,也沒相關的訊息,真是頭疼,還好只是自己上課的班級有此情形。
/var/log/vsftpd.log
--- FAIL RMDIR: Client ---
由於已排除權限相關問題,且並非所有目錄都無法刪,問 Google 也找不到相似的情形。

經過一連串的測試,最後終於找到原因!就是 Drupal 部份模組資料夾裡有 .DS_Store 隱藏檔,難怪無法刪除目錄!

奇的是,FileZilla 表示,理論上會顯示所有 . 開頭的隱藏檔,實際上還是隱藏了,雖然 FileZilla 有提供「伺服器 > 強制顯示隱藏檔案」的功能,但要使用者手動去切換,這樣不人性化,只好從 FTP Server 上著手。

問了男人 (man) 有關 vsftpd.conf 的相關設定,找到了以下說明:
force_dot_files
If activated, files and directories starting with . will be
shown in directory listings even if the "a" flag was not used by
the client. This override excludes the "." and ".." entries.

Default: NO
於是乎,在 /etc/vsftpd.conf 裡加上
force_dot_files=YES
重啟 vsftpd 後,呼!終於正常了!

2010年10月15日

取消 Compiz 對 gcin 選字框的特效

Ubuntu 裡的 Compiz 特效很讚,尤其是開啟 Animations 及 Animations Add-On 後,各種視窗、選單及對話框,都可好好修改特效。

問題是,預設如果針對 type=Normal 做 Open 及 Close 的特效後,中文輸入法 gcin 的選字視窗也跟著玩特效,這樣在快打時就很傷眼力。

解決方式:在 Animations 的 Open Animatiion 及 Close Animation 分頁裡,各加一組設定,並把位置調到第一筆。


  • Open Effect : None
  • Duration : 50 (沒影響)
  • Window Maatch : (name=gcin)
  • Options : (留空即可)

2010年10月7日

Xen Networking

Networking by BenJr.tw

很實用的 Xen 網路概念, 受教了! ^^

2010年9月13日

Ubuntu Server 使用固定 IP

Ubuntu 安裝後預設都是利用 DHCP 來取得 IP,但因為 Ubuntu Server 開機實在是驚人的快,還是用固定 IP 較好,免得因比 DHCP Server 早開機而取不到 IP。

1. 修改 /etc/network/interface 設定檔
$ sudo vi /etc/network/interface

預設使用 dhpc ,找到下列兩行:
# The primary network interface
auto eth0
iface eth0 inet dhcp

依自訂 IP 修改為:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
2. 檢查一下 /etc/resolv.conf 有關 DNS 是否設定正確修改
nameserver 192.168.1.1
nameserver 168.95.1.1
domain example.com
search example.com
3. 如果有裝 dhcp-client 就移除吧
$ sudo apt-get remove dhcp-client
4. 重新啟動網路
$ sudo /etc/init.d/networking restart

如果是用 ssh 連入的,執行上行命令後一定會斷線,要改用新指定的 IP 重新連線了。