2014年9月30日 星期二

『Node.js』開始的開始,Node.js 簡介


未來的三十天裡會陸陸續續的撰寫本系列文章分享給大家。最近看了些書籍、電子書、網路爬文,一直都想寫個文章做個記錄,以免忘記,彙整一下所看、所聞、所實作的 Node.js 技術,如果有寫不好的地方也請多多指教囉

這一兩年,Node.js 的議題越來越熱門了,而且快速的開發中,版本的升級也相當快,Node.js 是一個使用當前速度較快的 Javascript 引擎, 運行在服務端的開發平台。它使用了 Google 的 V8 虛擬機(Google Chrome 瀏覽器使用的 Javascript 執行環境),解析與執行 Javascript 語法,你可以想像是在運行 PHP, Puby, Python 一樣的服務端模式,只是根據 Node.js 的做法它不用像 PHP, Python, Ruby on rails 一樣安裝 Apache, Nginx 的 Http 服務器,因為它本身內建就有 Web server 支援。

Node.js 它可以實現 Javascript 沒有完善的功能,比如說實現 Javascript 沒有的模組觀念、操作系統 API、網路通訊的功能。 

到底,Node.js 技術現在趨勢如何?我們可以看以下用 Google Trend 網頁分析 Node.js, ruby on rails, angular.js  的熱門搜尋變化,由這張圖看起來,大概是在 2013 年的時候,出現了交叉變化,Node.js 漸漸得越來越多人去了解它。由此圖看得出來,ruby on rails 有著驚人的表現,到這幾年趨於平緩,但我覺得每個語言都有它表現不凡的技術與能力,其他語言也互相學習技術上優點避掉缺點。本系列將學習  Node.js 的應用,一起來探討探討囉。 



網址在此:https://www.google.com.tw/trends/explore#q=node.js%2C%20ruby%20on%20rails%2C%20angular.js&cmpt=q

Node.js 它不是

我們都知道學習一套語言會需要知道是什麼樣的一套語言,或是能達到什麼樣的處理,但是更需要反向思考瞭解的是,它不是哪些領域的,或者它不能做到的範圍
  • Node.js 不是一種獨立語言
  • Node.js 不是一個 Javascript 框架 (eg. Rails, Django, CakePHP)
  • Node.js 不是 Client-Side (eg. jQuery, YUI, Extjs)
  • Node.js 不是多執行緒

Node.js 能做些什麼

Node.js 不只是能做一個網站,它可以開發一些:
  • 檔案上傳工具
  • 社群網路的大規模網站
  • Websocket 服務器 (例如:聊天室)
  • 可以處理複雜邏輯的網站
  • 命令行工具
  • 交互式終端程式
  • JSON 的 API
  • Javascript 編輯器
  • 單元測試工具
今天就介紹到這裡,待續... 

2014年9月25日 星期四

『MySQL』取得資料後新增到另一張資料表

直接看如何打這樣的指令
INSERT INTO tableNew (col_new_1, col_new_2, col_new_3, col_new_4) SELECT col_old_1, col_old_2, col_old_3, col_old_4 from tableOld

2014年9月24日 星期三

『JSP』使用 Sitemesh 實作 Master Page 打造網頁樣板

最近在找一個 JSP 運用的像 ASP.NET 的 Master Page 的方法,達成一個母板面的做法,不需要在每一頁還需要從新寫一份載入的頁面,因此,剛好找到一個 Sitemesh 框架看起來挺簡單又好用,它是一種輕量型網頁的佈局及修飾的框架,採取一種 Servlet Filter 的方式達成,先看一下行為模式的做法 (圖片來自官網):

開始實作第一步:下載 sitemesh jar 檔

請先到此網站下載 jar 檔案:https://github.com/sitemesh/sitemesh3/downloads

版本:Sitemesh 3

第二步:新增專案

建立 Java web application > Dynamic Web Project 之後,請將剛才下載的 sitemesh jar 檔案,放在 /WebContent/WEB-INF/lib/ 目錄底下,並且新增 /index.jsp 及 /layout/master-page.jsp 檔案




第三步:配置 sitemesh3 過濾器

打開 /WEB-INF/web.xml 之後增加 filter,在 </web-app> 之前加入:
<filter>
   <filter-name>sitemesh</filter-name>
     <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>sitemesh</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>

第四步:編輯裝飾頁(母頁)與被裝飾頁

從我們剛剛建立好的  /index.jsp ,及 /layout/master-page.jsp 修改一下

首先是 index.jsp 頁面,呈現的內容是:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>新否現景列送有運界</title>
</head>
<body>
 <p>簡著以受一?的方望爸開下分主他必童什張紅,然立所多難知?時舞務做省事錯員二麼始念,先營展年的洲車畫放可……料作地演光腳位商孩兩何個意地東司精如創原不上負性直此嗎有族;經下回處市出戲燈到利人了,立輕策筆當子是經家華大羅,苦解院家情依手天,巴裡新小期國來地?邊進了、速高外自了會無國用新;環手性。準下大心本。黃你夜變,不張車失評球告到國為:麼每男計中在不點路才。
  運的學告取錯適時,這個也去而戰通調一,果就創治,就叫張傷一;他標黃獨的友地的示香更覺去亞機而我他一麼,到統院我成、事眾族著讀裡才!務持現有多;小發中母部外一大笑願政大小你那張心,達行評改下失?人到乎山下車!然家這他滿……給客經出好金是成定理找之下部畫,青造變如分天不接那方龍毛在致世實一顧興讓羅過落都需氣深;學操產然皮告不愛道兒很利;人麼養,西親家道角,走關小門企帶四自化我極育老長行歡品覺放學立童我化青。意的洋:所西舉路規有象力重德裡來跟所教們不爸?
 </p>
</body>
</html>

接著是裝飾頁 /layout/master-page.jsp
sitemesh 有預設幾個 tag 使用,以下示範有:

  • <sitemesh:write property='title' />
  • <sitemesh:write property='head' />
  • <sitemesh:write property='body' />


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><sitemesh:write property='title' /> | demo sitemesh3</title>
<sitemesh:write property='head' />
</head>
<body>
 Hello Sitemesh3 <h1 class='title'>
  <sitemesh:write property='title' />
 </h1>
 <hr />
 <sitemesh:write property='body' />
</body>
</html>

第五步:增加配置文件 sitemesh3.xml

這邊做了一個 mapping 的機制,把裝飾頁面跟  /* 對應

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
  <mapping path="/*" decorator="/layout/master-page.jsp"/>
</sitemesh>  


第六步:看看運行結果




2014年9月13日 星期六

『MongoDB』NoSQL 之 MongoDB 學習指南。在 OS X 上透過手動安裝與設定

下載 MongoDB 

在這邊我的環境是用 mac osx 10.9.4,到官方網站 http://www.mongodb.org/downloads 找到 Mac OX 64bit 區塊,下載 mongodb-osx-x86_64-2.6.4.tgz 檔案,接著我們用指令進行安裝,解壓縮 tgz 檔案

解壓縮之後,把它挪到 /usr/local/mongodb 資料夾

$cd ~/Download
$tar xzf mongodb-osx-x86_64-2.2.3.tgz
$sudo mv mongodb-osx-x86_64-2.2.3 /usr/local/mongodb


MongoDB 資料

預設時,資料會寫到 /data/db/ 資料夾,在這裏手動建立儲存位置,去建立 /data/db

$sudo mkdir -p /data/db
$whoami
/User/Weiju
$sudo chown /User/Weiju /data/db

建立 ~/.bash_profile 參數設定環境變數

$cd ~
$pwd
/User/Weiju
$touch .bash_profile
$vim .bash_profile

編輯 .bash_profile 檔案

export MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

檢視版本

$mongo -version


預設之下,mongodb 安裝完之後,下一次開機又要重新啟動。在這邊設定一下自動啟動方法:

找到

$sudo vim /Library/LaunchDaemons/

新增 mongodb.plist,並且建立以下參數


載入系統排程

$sudo launchctl load /Library/LaunchDaemons/mongodb.plist
ps -ef | grep mongo


馬上來試看看

第一種:試試新增一筆資料
第二種:跑個廻圈+寫入好了


good, got it.

2014年9月12日 星期五

『Node.js』透過 npm 更新 Node.js


最近準備要寫 Node.js,預備好先將 Node.js 更新到最新版本,該怎麼做呢,請看如下:

1. 首先先檢查現在的版本是多少
$node -v

2. 清理  npm 的快取
$sudo npm cache clean -f

3. 用 global 安裝  n
$sudo npm install -g n

4. 可以選擇 node.js n 安裝版上面的穩定版本
$sudo n stable

5. 最後再看版本現在是什麼
$node -v


步驟請看上圖