今天在2017iT邦鐵人賽系列文章列表中發現有關Node.js的教學, 跟著走一遍後決定把學習過程記錄下來。

資料來源:https://ithelp.ithome.com.tw/users/20103526/ironman/1081  Node.JS - 30 天入門學習筆記 系列

前置動作:

1. setup Sublime Text (我裝的是Sublime Text3) https://www.sublimetext.com

2. setup Node.js (我用v8.11.3)  https://nodejs.org/en/

 

 

* Node.js 三大類模組 *

Core Modules (原生模組)<httpurlquerystring...>
Local Modules (自建模組)
Third Party Modules (第三方模組)

 

 

* Node Package Manager (NPM) *

用命令提示字元輸入 npm -v 確認有無安裝NPM 
C:\> npm -v 


若要更新npm 套件
C:\> npm install npm -g 


查看npm指令如何使用 
C:\> npm help 

 

 

* 建立Node.js Web Server *

試run :

 

 

* 處理 Http Request *

 

* Node.js 檔案系統 *

* 非同步讀取檔案 *

fs.readFile(fileName [,options], callback)

-fileName: 檔案的完整路徑及檔名,格式字串。

-options: options 可能是一個物件或字串,包含"編碼"及"flag"。這裡預設的編碼是 utf8 , flag是 “r"。

-call back: 是帶兩個參數的function,err及file data,當我們執行readFile完成時, 要做的事, 例如: 回傳file data

 

創建一個測試文字檔:

試run:

 

* 同步讀取檔案 *

 

* 寫入檔案 *

fs.writeFile() 寫入檔案,如果檔案存在,會覆寫原本檔案資料;否則會自動新增檔案並寫入資料。

fs.writeFile(filename, data[, options], callback)

參數:
-fileName: 檔案的完整路徑及檔名,格式字串。

-data: 要寫入的檔案內容。
-options: options 可能是一個物件或字串,包含"編碼"及"flag"。這裡預設的編碼是 utf8 , flag是 “w"。
-call back: 只帶一個錯誤參數err的function,當我們執行writeFile完成時, 要做的事。例如: 寫入成功的訊息顯示;失敗時,丟出err。

 

*開啟檔案*

fs.open(path, flags[, mode], callback)

 

*開啟並讀取檔案*

fs.read(fd, buffer, offset, length, position, callback)

fs.read(fd, buffer, offset, length, position, callback)

參數:

  • fd: 透過 fs.open() 方法返回的文件描述符。
  • buffer: 數據寫入的緩衝區。
  • offset: 緩衝區寫入的寫入偏移量。
  • length: 要從文件中讀取的字元數。
  • position: 文件讀取的起始位置,如果 position 的值為null,則會從當前文件游標的位置讀取。
  • callback: 回呼函式,有三個參數err, bytesRead, buffer。
    err 為錯誤訊息, bytesRead 表示讀取的字元數,buffer 為緩衝區對象。

 

*刪除檔案*

fs.unlink(path, callback);

參數:

  • path: 檔案路徑。
  • callback: 只帶一個錯誤參數err的function,當我們執行unlink完成時, 要做的事。例如: 刪除成功的訊息顯示;失敗時,丟出err。

 

 

 

文章標籤

♥Weiwei♥ 發表在 痞客邦 留言(0) 人氣()

 

 

 

 

 

開頭先來說說我自己對於MongoDB的一些概念

 學習動機: 

1. 近幾週搜尋職缺時常常看見MongoDB被列為必要或是加分條件

2. 自己目前只接觸過關聯式資料庫(Oracle、MySQL、PostgreSQL、MSSQL),想了解 document-oriented如何運作與應用

 學習之前對於MongoDB的認識程度: 

0% (看過名字而已)

 

這次的學習參考資料來源:

1. <30天之你好MongoDB 系列> by我是小馬克 大大; 網址: https://ithelp.ithome.com.tw/users/20089358/ironman/1064

2.  [mongoDB]mongoDB和noSQL的簡介 by雷伊的工作心得; https://goo.gl/vHi6eH

 

|---------------------------------------------------------------------------------|

今日學習內容架構:

 什麼是MongoDB

 MongoDB的優缺與缺點

 MongoDB的組成 DocumentCollection

|---------------------------------------------------------------------------------|

 

什麼是MongoDB >

文件導向式(document-oriented)資料庫

noSQL的一種

字源是humongous

沒有提供MySQL的join功能

使用BSON的格式來存取資料

關聯式資料庫是row的概念,而MongoDB是document的概念。

例如

data[

  { Name:"Mary",

   Age:15

  }

  { Name:"Amy",

   Age:20

  }

]

|---------------------------------------------------------------------------------|

 

MongoDB的優缺與缺點 >

優點:

 Schema-less   彈性的Schema )   延伸學習:http://blog.xuite.net/flyingidea/blog/67641474

 易於擴展  ( 橫向擴展 → 易於多台伺服器之間進行資料分割

 性能佳 ( 預分配, 盡可能把多的內存用作cache

缺點:

 不支援事務操作  (不保證一致性→不適用於銀行、會計系統)

 較占空間  因 預分配&欄位占空間

|---------------------------------------------------------------------------------|

 

MongoDB的組成 >

- Document

MongoDB的核心,一個key對應一個value,key有區分大小寫且不能相同(重複)!

下面這個例子是兩種不同Document!

{ name : "mark" }

{ Name : "mark" }

- Collection

概念似於關聯式資料庫的table(collection)有很多個row(document)

動態的!  一個collection裡的document可以是各種類型 => 關聯式資料庫的table被schema綁死死

collection與document之間的架構關係如下圖所示

 

|---------------------------------------------------------------------------------|

 

< 學習MongoDB第一天的感想 >

好神奇啊!!

關聯式資料庫用久了,從來都沒有想過table可以有這樣的架構XD

明天繼續學習!

 

 

 

 

文章標籤

♥Weiwei♥ 發表在 痞客邦 留言(0) 人氣()

 

 

今(06/29)晚突然想用Java練習實做連線資料庫

帶著一股衝勁馬上set up XAMPP

參考網路上找到的code並創建table

 

途中臨時想起要去修改root的密碼,並新增了一組帳密(想用這組來練習實作)

不小心修改到別的帳號 囧

當下想說沒差

結果一run 發現被拒絕連線了 QQ

 

打開phpmyadmin發現剛剛是用一個不是我預設要使用的帳密嘗試連線,但我程式那邊也沒有key錯

後來不知道哪來的靈感,就決定打開config文件一打開還以為是亂碼 哈哈 見識淺薄)

然後用搜尋的方式,發現了那組奇怪的帳密 !

把奇怪帳密的部分都修改我預設要實作的那組後,重新嘗試進入phpmyadmin

成功了!!!

 

 

文章標籤

♥Weiwei♥ 發表在 痞客邦 留言(0) 人氣()

題目如下 (取自Leetcode並自行隨意翻譯)

從S字串中,找出J字串裡面包含的所有字元的個數。

Example 1

J字串中包含a、A兩種字元;而在S字串中有1個a,2個A因此答案為1+2=3

Example 1:

Input: J = "aA", S = "aAAbbbb"
Output: 3

Example 2:

Input: J = "z", S = "ZZ"
Output: 0

 

在discuss看到有大大只用一行的程式碼寫出,看完實在是驚呼連連(我見識淺薄

public int numJewelsInStones(String J, String S) {
    return S.replaceAll("[^" + J + "]", "").length();
}

也因為看到這個解答,了解了正規表達式的用法,"^"符號代表except, 例如[^abc] 代表這個字元是除了"a" "b" "c"以外的

 

<參考資料來源>  

正規表達式:https://www.javaworld.com.tw/jute/post/view?bid=20&id=130126&sty=1&tpg=1&age=0
一行solution:https://leetcode.com/problems/jewels-and-stones/discuss/113574/1-liners-PythonJavaRuby

♥Weiwei♥ 發表在 痞客邦 留言(0) 人氣()

終於從大學畢業了,

雖然還會繼續待在這個養老城市實習,

但也是時候開始找尋美好的未來。

 

不過,真的是跨出了這一步,才發現自己是有多麼的不足。

這一年來的實習工作內容,若只能用一句話形容,那就是

參考這個參考那個;複製貼上;select delete update。  (這樣是三句話吧)

總覺得現在才發現沒有練到程式方面的技術真的很可惜,

不過至少,在資料庫這方面,學到了蠻多的知識!

學校沒教過的語法、一些對使用者來說超方便的功能、查看語法的效能等等,

果然學校老師不教的更加珍貴呢(笑)

 

說了這麼多心內話,我還是趕緊加快腳步複習JAVA,不然leetcode刷不起來真的很挫折......

我不想錯過這個難得的機會啊!!!

♥Weiwei♥ 發表在 痞客邦 留言(0) 人氣()