All Posts

使用 VS Code 建立基於 MinGW 的 C/C++ 編輯環境

使用 VS Code 建立基於 MinGW 的 C/C++ 編輯環境

C/C++ 在編輯環境的建立上是相對複雜的語言,我們習慣使用功能強大的 IDE 來幫我們把瑣碎的雜事給包裝起來,例如:函式庫連結、編譯任務、Debug 等等,不過有時我們並不希望安裝過多肥大的 IDE 在電腦上,更多的時候我們希望能夠用簡單的文字編輯器就完成我們的任務。VS Code 是現今最好的編輯器之一,我們可以使用它強大的插件以及內建的 Debug 功能來完成在IDE上的工作流程。 安裝 MinGW-w64 MinGW-w64 是以釋出壓縮包的方式發佈,我們可以透過 MinGW-w64 的 SourceForge 專案下載到目前最新版的 MinGW-w64 首先先到 MinGW-w64 的專案頁 選擇合適的 MinGW-w64 版本進行下載, 例如:Toolchains targetting Win64/Personal Builds/mingw-builds/7.2.0/threads-posix/seh/x86_64-7.2.0-release-posix-seh-rt_v5-rev1.7z 解壓縮到

Javscript 中 (...) Spread 運算子的妙用

Javscript 中 (...) Spread 運算子的妙用

最近可能會很常看到程式碼中常常出現...這種三個句點的運算子,他有兩種功能,一種是當做Spread運算子,另一種是Rest參數,這篇文章先來探索一下Spread運算子的功能,以及他的威力所在。 在ES6時有了array相關的spread語法,而到ES2016+進而支援了object的spread,現在最新版的瀏覽器以及NodeJS中皆可以不需要進行轉義就可以使用。 Spread運算子我們可以簡單的想成是array或者object的展開。我們透過一個簡單的例子來看看 合併陣列 我們想要合併兩個陣列,如果我

將Node核心模組Promisify化

將Node核心模組Promisify化

NodeJS的核心模組們一直以來都是以callback的形式來表現非同步行為,而callback會引起一個十分嚴重的callback hell問題。所幸在ES6時有了Promise的實作,大家將他視為是callback hell的一個解決之道,不過NodeJS可能礙於歷史因素,或者兼容性問題,並沒有將核心模組重新實作為Promise的形式,因此有了許多將Node核心模組轉換為Promise的方法,我們稱為Promisify,而在NodeJS 8.0.0的時候也有官方實作的Promisify方法可以使用

React State vs Redux 該如何抉擇

React State vs Redux 該如何抉擇

React框架將資料流的概念帶入前端。資料流向各個components,因此在components中控管資料有兩個管道,一個是props另一個則是state,React根據這兩個物件的變化來動態的渲染DOM。React有個重要的規則,就是資料的傳遞是單向的,僅能由Parents components傳遞給Child components,會有這個規則是因為React撰寫時希望降低components之間的耦合度,如果資料能由Child傳遞給Parents,這樣子會造成Parents依賴于Child,

Tailwind - 快速客製化的CSS框架

Tailwind - 快速客製化的CSS框架

Tailwind是一個新興的CSS框架,不同於Bootstrap以及Foundation這些框架的地方是,Taiwind並不是一個UI工具包,在Tailwind中甚至沒有任何的UI組件,也沒有包含任何主題。他有的是一堆預先定義好的class,而這些class也僅僅是用簡單的CSS所組成,我們可以使用這些現有的素材組合出自己的風格。 使用Tailwind並不能像Bootstrap一樣,加入幾個class即能擁有一個美觀且功能完善的組件,相反的是我們可以客製化的組合一些class來做出獨一無二的組件,

使用VSCode對React進行Debug

使用VSCode對React進行Debug

VSCode是我目前最常用的編輯器,大大小小的專案都可以使用他來完成。記得一開始學習React時,使用的編輯器Atom,但是因為Atom開啟的速度以及他不定時的崩潰讓我轉到VSCode,從此就回不去了。 眾多的編輯器中,我認為VSCode在Debug方面是做的最完善的一個了,善用Debug工具能夠事半功倍這件事情我想是不爭的事實。使用React developer tools於瀏覽器中進行Debug是每個react開發者都會遇到的一件事,但是難以設定中斷點來逐步執行是我覺得是十分彆扭的一件事,我們總是需要將想要觀察的

使用Nignx之Proxy_pass反向代理Node程式

使用Nignx之Proxy_pass反向代理Node程式

在Production的環境下,我們會想要將我們的NodeJS所架設出來的Server給代理到Nginx或者Apache這種專業的Http server上。很多人可能會好奇,Express或Koa本身就有http的功能了,為何需要多此一舉,反向代理反而還多了一層架構。 我認為多了這個Nginx前端有下面幾點好處 Port 80與Port 443只有一個,如果我們有多個不同的網站程式需要架設,就會遇到Port衝突的問題,例如近期內崛起的純前端框架,背後需要一個後端API支援,如果兩者都想要架設在https上,使用

Koa教學(五)-Cookie&Session

Koa教學(五)-Cookie&Session

Cookie&Session Cookie Session Cookie&Session 終於來到了教學的尾聲,回顧我們從一開始從中間件直接回傳hello koa,緊接著我們加上了router以及logger,讓我們擁有管理URL的能力,再到使用模板引擎,動態渲染出網頁,上一章我們學會如何處理用戶傳送過來的表單。而我們這個章節將要介紹最後一個重要的環節,也就是如何將用戶瀏覽的狀態給儲存下來。 Http是一種無連接,無狀態性的協定。Server沒有任何記憶能力,因此他不知道這個Client是否曾經連線過,Server只在乎Client這個請求需要些什麼,我盡力傳送你想要的資訊給你,

Koa教學(四)-Parsing request

Koa教學(四)-Parsing request

Pasing request Get - QueryString parsing 在Controller中爬取QueryString looper模板 POST - Body Parsing 安裝koa-bodyparser 使用koa-bodyparser Tracecode Pasing request 這一個章節我們來聊聊如何讀取一個請求的內容。 撰寫網站的時候,我們會希望前端使用者能傳遞一些請求,後端伺服器讀取了使用者的請求後做出相對應的服務,達到互動的效果。例如:使用者輸入帳號密碼登入網站,或者讓前端使用者可以有管道可以查詢後端的資料庫等等。 在前端我們可以透過表單來達到這個目的,或者也可以使用AJAX的方式來達成。而請求送出後,伺服器能夠

Koa教學(三)-Views&Static

Koa教學(三)-Views&Static

Views&Static 這章節的教學將會包含如何使用使用views中間件渲染模板,動態的產生網頁內容。另一個主題是設定static中間件,讓我們可以簡單的傳送一些靜態物件,如圖片、音效、影片、腳本等等。 Views 前面幾個教學到現在我們總是簡單的回傳一些字串給前端 router.get('/', async (ctx) => { ctx.body = "<h1>Hello Koa</h1>"; }); 在第一章的時候,我們也曾經使用readFile的方式,載入預寫好的html檔案,但是這種方式難以架構一個具有大型規模的網站。我們網頁上的資訊必須動態產生,如先讀取資料庫後動態的調整頁面的內容。如果我們用傳統的方式的話,光是字串處理的時間就會消磨掉一