2016/12/31

回顧 2016 技術學習狀況

在 2016 年即將結束的今天,回顧 2016 一整年的學習狀況

除了忙於專案外,也學習了不少新技術,更新了一些觀念


在今年的前端技術變化及進步也蠻大的,我所接觸的列舉如下:

  • TypeScript - 今年的變化速度也是飛快 (搭配的工具也變化迅速: tsd, typings, @types)
  • Vue.js 1.0 to 2.0
  • AngularJS 2
  • Laravel Elixir

後端程式框架,持續邊開發邊學習
  • Laravel 5
  • ASP.NET MVC 5
  • ASP.NET Core 1.0

測試是今年開始才真正去接觸及實作
  • Selenium
  • Gherkin
  • PHP - PHPUnit
  • PHP - Behat
  • JS - Cucumber.js
  • .NET - SpecFlow
  • .NET - MSTest


另外,今年的開源成果,共發佈了一個 Laravel 套件,及兩個 Visual Studio Code 的外掛



明年 2017 年,相信又有許多新的挑戰等著我~ 繼續帶著熱情,加油吧!



2016/11/28

如何在 Windows Server 2012 安裝 Microsoft Security Essentials

Microsoft 自從 Windows 7 之後, 已有提供掃毒軟體 Security Essentials. 從 Windows 8 之後則是已經內建 Windows Defender.

然而在 Windows Server 一直找不到好用的防毒軟體, 最近剛好架了一台測試主機, Google 搜尋了一番, 映入眼簾的一篇文章吸引到我了~~ 針對 Windows Server 2012 提出的解決方案.

以前曾經試著安裝 Security Essentials 到 Windows Server, 但因為相容性問題, 一直沒解決, 這回找到了好方法, 可以繞過這個限制, 順利安裝!

2016/11/26

[CentOS] 如何在 CentOS 7 安裝使用 Visual Studio Code

自接觸客戶的 CentOS 系統, 為了要可同步並熟悉它的操作, 自己也架了一台虛擬機使用.

說實在的, 如果是個人使用的話, 我比較推薦 Ubuntu 比較人性化, 也比較不會有一些預期外的事發生.

不講別的, 在有 GUI 的主機上只有 Vim 或 gedit 來做 coding 的工具就弱掉了!

- Vim 通常是逼不得已, 或是應急小改編輯用. 真要拿來做開發用, 還是免了吧. :p

- gedit 也只是像 notepad 的功能編輯文字用

Visual Studio Code 不僅免費用, 重要的是它跨平台的特性, 而且愈來愈好用, 開發網站, 至少這個基本的編輯器一定要有.

不廢話了~ 先來安裝 Visual Studio Code 吧!!

2016/11/23

[Homebrew] 如何在 Mac 切換 Node 版本

Node 的版本更新得很頻繁,不知不覺已來到 7.1.x 版了

原本還持續使用 v6.9.1 (Node 6 LTS) 的版本

只因為更新 Yarn, 它自動幫我升級 Node 到 7.1

但,這個更新,造成有些前端使用 glup 搭配 sass 的套件失靈



當下立刻聯想是 Node 升級的原因

既然都更新 Node 到最新版本了,而且要更新 Yarn 又需要 Node 7 的版本,只好找找是否有切換的方法

果然,我也不是單一的受害者,有網友也遇到相同的情況

2016/11/18

[Linux] CentOS 7 主機遇到 file_put_contents(): failed to open stream: Permission denied 的解決方法

今日在客戶的 Linux (CentOS 7) 主機遇到從來未遇過的事, 不管權限加到多高, 擁有者, 該設定的讀寫權限全設定了。卻仍在網站的 log 看到 file_put_contents(): failed to open stream: Permission denied.

弄了一下午,終於找到原兇了,原來是 SELinux 搞的鬼!

查看 SELinux 的設定狀態
sestatus

暫時關閉,不用重開機的方法
setenforce 0

要完全關閉則需修改 /etc/sysconfig/selinux 把 SELINUX 的設定值從 enforcing 改成 disabled,存檔後再重新開啟主機即會套用設定
SELINUX=disabled

另外在這之前,網站曾處在 httpd 403 forbidden 的錯誤,一併記錄以免忘記 這也是因為 SELinux 在搞鬼,只要下以下指令即可
restorecon -r /var/www/html

以上都是用 root 權限去設定的 感謝有一群社群技術支援的朋友們,才解開這個羅生門~ 

References:

Visual Studio for Mac Preview 搶先玩


Mac 也有 Visual Studio 啦! 今天可以下載 Preview 版搶先玩~

2016/10/10

[Cmder] 解決中文顯示問題

一直以來在 Windows 用 Cmder 來打指令沒有特別想過中文的顯示問題

因為大多數指令或目錄都是英文

直到最近在玩 PHPUnit 的 --testdox 功能, 如果是用中文來命名測試的話, 顯示會出現亂碼, 這時就特別想解決中文的顯示問題



2016/09/30

[Selenium] 變更使用 ChomeDriver 來執行 Selenium Web UI 測試

Selenium 預設是用 Firefox 為預設的瀏覽器來執行測試

但是因為 Firefox 更新版本後 (目前版本 49.0.1), 造成執行錯誤, 之前是哪個版本我也沒特別記


我遇到的錯誤訊息為:
WARN - Exception: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.
顯示的畫面長這樣:



在一番掙扎後, 決定換不同的瀏覽器來試試看.

結果換了 Chrome 後, 一切就都正常了, 測試了 Windows 10 及 macOS Sierra 都能正常運作!!

有時堅持是好的, 有時要換個角度, 反而能找到另一片天~

2016/09/25

[TypeScript] TypeScript 2.0 之後定義檔 (*.d.ts) 的安裝方法

TypeScript 2.0 發佈後, 可以不用再用最早的 TSD 及過渡時期的 Typings 來下載定義檔了.

可以用 npm 來統一安裝管理

先確認目前的 TypeScript 版本 (今天查是 2.0.3)

tsc -v

如果還在 1.8.x 那麼可以更新囉!!

npm install -g typescript

現在要安裝定義檔, 可以用 @types/[PACKAGE] 來表示

例如 vue 的定義檔

npm install --save @types/vue


在 tsconfig.json 檔可以加上以下區塊 (types 是 TypeScript 2.0 以後才支援喔, 查看 schema)

    "types": [
        "vue"
    ]


Microsoft 也提供定義檔搜尋工具, 可以好好運用: http://microsoft.github.io/TypeSearch/


終於又可以再少一些怪怪的語法, 太多太雜都快記不住了 (所以筆記還是要不斷更新才行 XD)

2016/09/21

[macOS] 系統更新至 Sierra 後 Homebrew 權限不足問題解決方法

今早 macOS 已經開放下載更新,當然我也不會落後!



更新系統後,在執行例行公事 Homebrew 檢查,出現沒有權限



2016/09/02

[.NET] 解決 EF 錯誤: there is already an open datareader associated with this command which must be closed first

筆記錯誤解法, 供未來翻查

情境:

foreach 中又有巢狀的查詢物件條件, 造成 lazy loading 出現錯誤


錯誤訊息: 
There is already an open datareader associated with this command which must be closed first.

2016/08/21

[IIS] Windows 10 + IIS 10 + PHP + Laravel 環境設定

大多數 在 Windows OS 下執行 Laravel 專案都會用 WAMP 環境 - 像是 wagon, UwAmp, 或是 Xampp 以 Apache 為 server 為基礎的伺服器環境.

今天來點不一樣的~ 用 Windows IIS 來架設 PHP 專案環境.

重要的是在 Windows 10 的 IIS 上安裝 PHP Manager 及 URL Rewrite 有些小細節需要微調



2016/08/20

[Laravel] Laravel 5.3: Elixir - BrowserSync 的啟用方法

Laravel 5.3 已將 Elixir 版本升級至 6.0,預設不會像過去的版本全都把 node 的 packages 都下載下來。

Elixir 所有的功能全都保留,只不過當執行 gulp 時,若沒有下載的 package,會提示要求下載。這樣的改變,對於某些用不到的功能,也不需要全都強迫安裝喔!

2016/08/14

[Docker] 初體驗快速建置環境與常用指令

聽了很久的 Docker, 但始終沒去實際操作

週末花了點時間, 玩一下這個不同於虛擬機的輕量級虛擬化解決方案, 感覺非常好!! =)

Windows 安裝 Docker 及設定

安裝很簡單, 但在 Windows 需注意的是它會需要啟用 Hyper-V (但開啟後, VirtualBox 就不能使用 64 bit 的 OS, 兩個會有衝突)



除非需要 GUI 桌面操作 VirtualBox 的虛擬機, 不然其實 Docker 就可以滿足開發需求

2016/08/11

[MSSQL] Reset identity 重設識別編號

MSSQL 資料表重設 ID 識別

通常用 TRUNCATE 即可清空重來

TRUNCATE TABLE TABLE_NAME;

若出現 "無法截斷資料表 'TABLE_NAME',因為該資料表正由 FOREIGN KEY 條件約束參考。"

不想刪掉資料表重建的方法, 可先將相關資料先行刪除後, 再重新 RESEED 至 0

DBCC CHECKIDENT ('TABLE_NAME', RESEED, 0);


指令雖簡單, 還是筆記一下, 免得又忘了


References:

2016/07/28

[Laravel] 版本 5.3 的資料夾結構改變

Laracon US 2016 正在如火如荼地展開中, 當然其中的亮點是即將發佈的 Laravel 5.3

在新功能搶先看之前, 先瞭解新版資料結構的改變

Laravel 5.3 的資料夾結構



2016/07/24

[VSCode] Laravel Blade Snippets 外掛釋出

Laravel Blade Snippets - 支援 Blade 程式碼片斷, 以及 Blade 語法高亮顯示



外掛介紹: Laravel Blade Snippets

2016/07/19

[PHP] XDebug 之愛恨糾結設定

XDebug 在跑測試時需要, 要跑 Code Coverage 時也需要, 唯獨在一個情況下是希望關閉的, 就是執行 Composer 的時候

但是 Composer 對於 PHP 的專案來說, 又是扮演著超級重要的角色, 但若是 XDebug 開啟又會造成它的效率不佳的問題



2016/07/13

[Laravel] 解決 Failed to listen on 0.0.0.0:8000 的問題

第一次遇到 Failed to listen on 0.0.0.0:8000 這個問題

完整的報錯訊息:
Failed to listen on 0.0.0.0:8000  (reason: 嘗試存取通訊端被拒絕,因為存取權限不足。)



1. 先檢查是否有其他 service 用到 8000 的 port

2016/07/10

[BDD] 實作 PHP 測試 - Behat + PHPUnit

先來一篇 PHP 的 BDD 測試實作

實作測試環境:

  • PHP 7.0.8
  • Behat 3.1
  • PHPUnit 5.4
實作的檔案及步驟已放在 GitHub - php-bdd-behat-demo


[BDD] 玩玩 Cucumber 規格描述做測試

最近玩了一些測試相關的技術, 有一些個人小小的心得

在 PHP, 常用的有 PHPUnit, PHPSpec, Behat

在 .NET 常用的有 MS Test, NUnit, SpecFlow

2016/06/29

[.NET Core] 解決在 Mac 上發生 Unhandled Exception: System.TypeInitializationException 的問題

.NET Core 1.0 已在 2016/6/27 正式釋出

當然第一時間就先來更新執行囉

結果第一彈就出現錯誤,Unhandled Exception: System.TypeInitializationException


原本想說是 SDK: preview2-003121 版本的問題,所以就有了移除 pkg 的文章生出來

但還是不甘心問題沒有解決,決定發問,結果是 OpenSSL 的版本必須至少 1.0.2 版本以上

完整的討論串請見:https://github.com/dotnet/core/issues/173


問題解決!可以著手開發囉~ Happy Coding!

如何在 Mac 開發 ASP.NET Core 網站 (範例為 RC2 版本仍適用於 1.0 版本)

2016/06/28

[Mac] 如何完整移除 pkg 程式

平時在 Mac 上安裝程式很簡單,要移除也很簡單。唯獨 .pkg 的安裝程式是安裝很簡單,要完整移除卻有很多步驟

今日是 .NET Core 1.0 發佈的日子,早上興高采烈來迎接,卻遇到了大災難!

官網提供的 installer 這回不是很 ok (安裝的版本為 dotnet-dev-osx-x64.1.0.0-preview2-003121.pkg)

在建立新專案出現以下錯誤



在錯誤還未被修正前,只好把它先移除了

以下是我的解除步驟:

2016/06/24

[Laravel] 如何連接 SQL Server 資料庫及注意事項

通常開發 Laravel 使用的資料庫大多為 MySQL 或是 Sqlite, 今天遇到網友發問連線至 MS SQL Server 的問題.

我好像也沒真正去連 SQL Server, 那麼就來手動測試一下連線至 MS SQL Server 看看吧!

環境:

  • Windows 10
  • SQL Server 2014
  • Apache 2.4.18 (Win32)
  • Laravel 5.2.39
  • PHP 5.6.9 / Microsoft PHP Driver for SQL Server v3.2
  • PHP 7.0.6 / Microsoft Drivers for PHP for SQL Server v4.0.4

必備元件:

下載 Microsoft PHP Driver for SQL Server



現在官網上的下載版本只支援到 PHP v5.6, 所以只能下載 3.2 版本, 測試的 PHP 版本為 5.6.x

另外若是使用 PHP 7 的朋友, 可以到 GitHub 下載 Azure/msphpsql v4.x 的版本

https://github.com/Azure/msphpsql/tree/v4.0.4

2016/06/07

[VSCode] 如何在 Visual Studio Code 啟用 Terminal 指令列

今日收到 1.2 的升級通知, 其中一項重大更新就是 Terminal

隨著開發使用指令的機會愈加頻繁, Terminal 的整合使用也愈顯重要

在 Visual Studio Code 已可以設定 tasks, 可以在不需開啟 Terminal 的情況下做些建置動作

但是有更多的時候, 還是脫離不了打指令執行某些任務


使用版本: Visual Studio Code 1.2.0

在 VS Code 裡開啟 Terminal 很簡單,快速鍵 Ctrl + ` 即可開啟 (Windows 及 Mac 上都是相同快速鍵)


另外目前在 Windows 10 要能正確開啟,需要做些變更設定如下:

2016/06/03

[TypeScript] Typings 更新至版本 1.0 後的指令變更

版本: typings 1.0.4

我們在寫 TypeScript 時都需要利用 Typings 來協助定義檔的管理.

今天在使用 typings 指令時, 被提醒要更新至 1.0.4 版本

結果要下載 vue.js 的定義檔, 卻發生錯誤, 無法正確下載


原本在 typings 0.x 的版本指令

typings install vue --ambient --save


typings 1.0 後變更指令

更新至 typings 1.0.x 之後指令需變更為

typings install dt~vue --global --save

加上 dt~ 代表是從 DefinitelyTyped 下載

另外還有 env~ 及 npm~ 的選項, 若不特別註明, 則預設來源為 npm

2016/05/26

[Laravel] 解決在 Windows 下 Laravel 跑 glup tdd 測試路徑及 phpunit 版本相衝問題

在 Laravel 執行 phpunit 測試有兩種方法

1. 直接下指令 phpunit

2. 搭配 Laravel-Elixir 執行 gulp tdd 或 gulp watch


遇雷環境一 (執行 phpunit):
  • Windows 10
  • Node.js 5.11.0
  • Laravel 5.2.32
  • PHPUnit 5.3.4



在此雖然是顯示 PHPUnit 4.8.26 (此為在 Laravel 裝的 PHPUnit 版本, 而本機上為 5.3.4)
卻會出現 PHP Fatal error, 產生 Exception

解決方法一:

將本機上的 phpunit 降版至 4.8.26

移除全域的 phpunit 版本
composer global remove phpunit/phpunit

安裝全域特定版本的 phpunit
composer global require "phpunit/phpunit=4.8.26"



再跑一次, 可以正確執行測試

2016/05/18

[.NET Core] 在 Mac 上開發 ASP.NET Core (RC2) 網站

距上回發文開發 ASP.NET Core RC1 網站,短短半個多月的時間,又要更新文章啦!

從 ASP.NET Core RC 2 開始,過去在 RC1 以前用的 DNVM, DNU, DNX 都不再適用了 (終於不用記其他指令了),已統一使用 NET Core CLI (指令統一用 dotnet ...超好記)

開發工具再簡化,現在只需要 dotnet 及 yeoman 的指令工具及 Visual Studio Code 編程器


2016/05/10

[Angular 2] 如何用 angular-cli 建立專案

環境版本

  • Windows 10
  • Node.js 6.1.0
  • angular-cli 1.0.0-beta.1


環境要求

至少要安裝 Node.js 4.0 以上的版本

安裝 angular-cli

npm install -g angular-cli

[VSCode] 升級 Visual Studio Code 1.1.0 可以放心用中文界面囉

自從 Visual Studio Code 更新至 1.0.0 版後,就支援各國語系的界面。

但是卻因為翻譯翻過頭,連平常要下的指令也都被翻了,突然指令找不到無法執行,整個卡呀!

然而早已習慣英文界面,而且下指令能夠正常,至今一直維持英文版界面操作。

剛剛熱騰騰的更新通知,Visual Studio Code 1.1.0 發佈更新,當然立馬更新囉!



瞄了一下 Bug 修復中有一條~ Don't localize command names on the command palette.

這個就是遲遲不變更界面的主要原因呀!!

如今最大問題解決了,非中文界面不可的朋友快更新吧!



這樣看起來是不是感覺特別好? :)

[.NET Core] ASP.NET Core RC2 不再相容於 DNX

離 ASP.NET Core RC2 發佈的時程愈來愈接近了, 5 月中預計就會發佈, 而 ASP.NET Core 1.0 RTM 在 6 月底也會釋出.

不過, 原本在 RC1 會使用到 DNX 來執行相關作業, RC2 將只相容於 .NET CLI.

GitHub aspnet 的公佈文: ASP.NET Core RC2 is no longer compatible with DNX



好吧~~ 又有一波變更, 等 RC2 出來再更新我的建置文囉!! 好消息是, 在 RC2 之後到 RTM 之間, 已不會有太大結構上的變更, 也就是可以花時間投入好好研究了!!

2016/05/01

[.NET Core] 如何在 Mac 上開發 ASP.NET Core (RC1) 網站

原本稱 ASP.NET 5,現在已更名為 ASP.NET Core 1.0。(MSDN blog - An Update on ASP.NET Core and .NET Core)



去年 5 月寫了一篇 在 Mac 上使用 Visual Studio Code 執行 ASP.NET 5,是時候再來更新一下了,開發步驟愈發簡單。

2016/04/28

[.NET Core] 如何在 Mac 上建立 .NET Core 專案

在 Mac 上建立 .NET Core 的專案愈來愈簡單了,連安裝設定也相效簡易許多

.NET Core 提供各平台的安裝方法:http://dotnet.github.io/getting-started/



現在就一步一步跟著我實作吧!

2016/04/26

[TypeScript] 如何更新舊有的 TSD 至新的 Typings 定義檔管理

早前開發 TypeScript 有使用 TSD 的定義檔管理, 現在都轉移至 Typings.

TSD 與 Typings 的使用方法相差雖不大, 目前仍有一些小細節需要注意

原本 tsd:
tsd install jquery --save

現在 typings:
typings install jquery --ambient --save

--ambient 參數在 Typings 是為全域性的定義, 目前 DefinitedTyped typings 都是屬於全域.

那麼如何更新舊有的 TSD 到 Typings 呢?

1. 刪除舊的 typings 資料夾

rm -rf typings

2. 轉移原 tsd.json 升級至新的 typings

typings init --upgrade
rm tsd.json
typings install

3. 依需求更新 tsconfig.json


還好更新起來很簡單, 只是記得要加上 --ambient 參數來載入定義檔! 多記一個單字囉~

[TypeScript] 如何用 Vue.js 搭配 TypeScript

TypeScript 是由 Microsoft 開發的 Open Source 程式語言。它是 JavaScript 的超集合。

TypeScript 的幾個特性:

  • TypeScript =  靜態型別 + 動態型別
  • TypeScript 涵蓋 JavaScript 語法,並支援  class, interface, module
  • TypeScript 最終編譯結果是 JavaScript

想要更了解 TypeScript 可以看看這一篇 快速瞭解 TypeScript 是什麼東西

先來實做一個簡單的 TypeScript 應用吧!

2016/04/25

[Node.js] 解決 npm ERR! cb() never called! 的問題

近期玩 Angular 2, 在執行 npm install 時發生問題

出現的錯誤訊息是:

npm ERR! cb() never called!


這問題是在 Angular 2 beta 7 版, 變更至近期的 Angular 2 beta 15 版時才發現到的

原先本機的 Node 版本為 v 5.9.0, npm 版本為 3.8.3

練習時, 使用的是 Angular 2 beta 7, 安裝正常使用

剛好在開新專案, 用目前 Angular 官方提供的最新版本 beta 15 時, 安裝即出現 npm ERR!


解決方法:

1. 清掉 cache

先清一下 cache 再重裝看看是否行得通

npm cache clean

2. 更新 Node 版本

Google 爬了許多文的結果是 Node v5.9.0 也有這樣的問題, 更新版本後就好了!


Windows 更新方式:

直接至 https://nodejs.org 下載最新 stable 的版本

Mac 更新方式:

用 Homebrew 的方法:

brew doctor
brew upgrade node


我本身遇到的情況的確在更新至版本 v.5.11.0 後就沒有這個問題囉!

2016/04/24

[Laravel] 如何使用 Elixir 的 BrowserSync

我想這是常常遇到的雷, 沒有記錄下來總是會忘記

目前測試的版本:
  • Laravel 5.2.29
  • laravel-elixir 5.0.0

1. 建立 Laravel 專案

composer create-project laravel/laravel myproject --prefer-dist

2. npm 安裝套件

npm install

3. 修改專案中的 gulpfile.js

mix.browserSync({
    proxy : 'localhost:8000'
});

2016/04/18

[VSCode] 如何在 Visual Studio Code 整合呼叫 Dash API 文件


Viausl Studio Code + Dash = 加速在編寫程式時查詢 API 文件的速度及效率


2016/04/15

[VSCode] 如何變更 Visual Studio Code UI 介面語系

Visual Studio Code 1.0 釋出後,自動變更成本機的語系,自動中文化了

如果想要維持使用英文版介面,可以這麼做

鍵盤輸入 Ctrl + Shift + P 跳出指令輸入框

輸入 語言 -- 即可找到 "設定語言"

只需把 Locale 的值變更成希望呈現的介面語系即可

繁中: zh-TW
英文: en-US

變更後,儲存並重開 Visual Studio Code 即可


可變更的語系列表: VSCode - Display Language

Visual Studio Code 1.0 正式釋出

千呼萬喚始出來之 Visual Studio Code 1.0



2016/04/12

[Laravel] 解決使用 tinker 出現 PsySH history file found 的問題

Laravel 的 tinker 指令

php artisan tinker

結果出現錯誤訊息:

PsySH history file found at '/Users/USERNAME/.config/psysh_history'.  
Please delete it or move it to '/Users/USERNAME/.config/psysh/psysh_history'.

解決方法:

1. 可以直接把 ~/.config/psysh_history 刪掉

rm ~/.config/psysh_history

2. 把它移到自己家目錄的 .config/psysh/ 資料夾中

cd ~/.config
mkdir psysh
mv psysh_history ~/config/psysh/

2016/03/27

[Node.js] 在 Mac 上使用 Homebrew 更新全域 npm 的解決方法

近期在 Mac 上更新 npm 的全域版本時 (npm update npm -g),造成會出現一些奇怪的問題,在未更新前其實一切都正常

一般作業像是使用 gulp 也都沒有問題,但是若是要顯示一些資訊,例如列出全域的安裝套件,卻會出現一些 ERROR 訊息

後來把整個原本的 /usr/local/lib/node_modules 全部刪掉,重新再安裝 Node 並手動安裝 npm  後,終於又恢復正常啦~ 沒有 ERROR 的訊息感覺才正確!

參考資料:



以下指令說明:

  • 把原本裝的全域套件先列出存到 ~/node_modules.txt
  • 刪除整個 /usr/local/lib/node_modules 資料內容
  • Homebrew 解除安裝 node
  • Homebrew 安裝 node 但不要 npm
  • 建立 ~/.npmrc 的檔案,內容是 prefix=~/.node 即為 npm  的安裝目錄
  • 下載安裝 npm
  • 把 ~/.node/bin 的路徑加到 ~/.bash_profile
  • 重載 ~/.bash_profile
  • 重新安裝原本的全域套件
  • 刪掉暫存的 ~/node_modules.txt 檔案


執行的指令:

ls -1 /usr/local/lib/node_modules > ~/node_modules.txt
sed -e "s,/\+$,," -e "s,^/\+,," ~/node_modules.txt
rm -rf /usr/local/lib/node_modules
brew uninstall node --force node
brew install node --without-npm
echo prefix=~/.node >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sh
echo 'export PATH="$HOME/.node/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
for i in `cat ~/node_modules.txt`;do npm install -g $i;done
rm ~/node_modules.txt

2016/02/13

[編程工具] 輕量好用的程式編輯器 Visual Studio Code

寫程式只要有文字編輯器, 都可以完成工作! 但是, 好的程式編輯式, 幫助可就大大加分囉~
這十幾年來用過無數種編輯器, 細數真的也不少吶, 記事本不算在內的話, 有 UltraEdit, BBEdit, Notepad++, Sublime Text, etc. 有些可跨平台, 有些沒有. 但是其實跨平台可使用是我最想要的功能啊~減少學習曲線是一個, 再著是用同一款熟悉的工具對效率也是一大重點!

Visual Studio Code 是除了最強的 IDE - Visual Studio 外, 還不算是完美, 但我覺得還不錯用的程式編輯器.

以下是個人喜愛的功能, 跟大家分享, 也許你也會愛上它!
  1. 開啟速度快
    有時候只是想要開一兩支程式, 改些小東西, 不用動用到 IDE 啦
  2. Highlight 程式碼
    基本款~ 一定要的, 業界大多語法都支援, 查 code 才會一目瞭然
  3. IntelliSense
    程式寫多了會有忘性, 這功能不僅是提示, 也是加速開發的好物
  4. Emmet
    有在寫網站應用程式的必備工具, Visual Studio Code 已經是內建, 不用再裝外掛喔
  5. CSS 顏色提示
    超~方~便~ 一看便知顏色碼是什麼顏色, 視覺一併兼顧
  6. Sippets 可自定
    常用的程式片斷自己也可以把它存起來, 隨時取用


2016/02/10

[Windows] 取消使用者必須登入密碼才能使用電腦的限制

常需要在虛擬主機上做環境測試, 每次還需要登入密碼有點麻煩, 尤其時間一久了, 也會忘記

乾脆把密碼驗證部分拿掉

這只建議在測試的電腦上做, 個人電腦還是保持需輸入密碼的安全性設定

在執行視窗輸入: netplwiz



勾消 "必須輸入使用者名稱和密碼,才能使用這台電腦" 的選項



我的測試 VM 為 Windows Server 2012

2016/02/06

[Node.js] 升級至 Node 版本 5.5.0

今日不知為何興起把 npm 更新, 結果出現 minimatch 模組找不到

npm install -g npm

出現錯誤:

Error: Cannot find module 'minimatch'

怎麼也不能正常行使 npm 的指令

原本開發機上的 Node.js 版本為 4.2.0, 到官網上看到最近的版本為 5.5.0, 乾脆一併升級好了

怪的是更新完仍然無法正常使用 npm 的一些相關指令, 而這回出現的是 npm-cli.js 有錯誤, 指令不能正常運作

列出所有安裝的全域套件

npm ls -g --depth=0

只要能正確列出就沒問題




最終解決方法:

把原本安裝的 Node.js 完全移除, 把所有的 AppData 下的 npm 也刪掉 (全域的套件要全部重新下載過, 可能 5.5 的結構有變更過, 留著舊版的也會出現錯誤)

還是用全部重新來過的方式,才沒有問題,真的是砍掉重練! 順便清掉一些沒在用的全域套件也是好事啦!

至於 Vusial Studio 幫我裝的 vs-tac 的套件,再想辦法裝回來了...

2016/02/01

[VirtualBox] 解決更新版本出現 VT-x/AMD-V 不可用的問題

今天把 VirtualBox 從 5.0.4 版更新至 5.0.14 版後
開啟原本的 64位元 ubuntu 虛擬機時, 出現以下訊息:

VT-x/AMD-V 硬體加速在您的系統不可用。您的 64 位元客體將會偵測 64 位元 CPU 失敗且無法開機。


之前遇過類似的問題~ [閱讀:找不到64位元選項的解決方法]

現在只要看到第一句: VT-x/AMD-V 不可用

只要開啟命令提示字元,輸入以下指令即可

bcdedit /set hypervisorlaunchtype off

再重新開機即可!!

2016/01/30

[Mac Tips] 擷取視窗但不要有陰影的方法

在 Mac 擷取畫面很簡單,比較一下不同的擷取方式及結果


區域:Cmd + Shift + 4




視窗:Cmd + Shift + 4 + Space

(含陰影~範圍還不小耶)

視窗不含陰影:Cmd + Shift + 4 + Space + Option(Alt)

(完整視窗~不含陰影)


[Git] error: There was a problem with the editor 'vi' [解決 SOLVED]

今天突然遇到 commit 訊息時出現

error: There was a problem with the editor 'vi'
之前倒沒有這個問題,不知道跟我最近在變更 VIM 設定有無關聯

git commit 是會預設取 vi 為編輯器



當然如果用 git commit -m 的方式就不會有這個問題

既然出現問題,還是手動指定一下好了

解決方法: 設定 git 預設編輯器即可



[Vim] 網頁開發必備外掛 emmet-vim

透過 vundle 外掛管理程式來裝 emmet-vim

安裝 vundle, 請參考 Vundle 安裝


開啟 ~/.vimrc 檔案

注意:請務必加在 vundle#begin/end 之間

Plugin 'mattn/emmet-vim'

存檔


在 Vim 下指令 :PluginInstall 即完成安裝

[Vim] Vim 外掛套件管理 Vundle.vim 安裝方法

用 GUI 的編輯器用習慣,因為常有一些套件可以增加工作效率

而 Vim 這個古老的編輯器也是經常使用,怎麼都沒想過要來加外掛呢?

最近看到 Vim 的加強功能,決定來把 Mac 上的 Vim 改裝一下,首先要裝套件管理程式 Vundle 先裝好~


Vundle 安裝 (路徑請裝至 ~/.vim/bundle/ 下)

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

2016/01/17

[TDD] 基礎 PHPUnit 設定

設定 PHPUnit 專案環境

開始一個簡易的 PHPUnit 專案之前
  1. PHP 5.5+ (5.4 不再更新了, 就升級吧!!)
  2. 先確認 Composer 已安裝
  3. 安裝全域用的 PHPUnit (composer global require phpunit/phpunit)
專案的資料夾結構如下:
Project/
    |-- tests/  (放測試的檔案)
    |-- src/    (放置原始碼)
開啟 Terminal 或 Cmd 等指令輸入工具
用 Composer 安裝 PHPUnit 套件於專案中使用
composer require phpunit/phpunit --dev
修改 composer.json 檔案, 將 src 對應至 autoload
依需求變更 namespace
{
    ...

    "autoload": {
        "psr-4": {
            "": "src/"
        }
    }
}
執行更新 autoload 的檔案
composer dump-autoload
新增 PHPUnit 的設定檔 phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
</phpunit>
最基本的設定就完成囉!!

[VS2015] 解決無法開啟檢視 Razor View *.cshtml 的問題

最近更新套件會發現一些怪怪的問題, 造成無法順利開啟 *.cshtml 的 Razor View 檔案
而且這情況全都只有在開啟 *.cshtml 時才會發生


以下是其中一個錯誤訊息, 這是從 Controller 要產生一個對應的 View 時發生的錯誤

Error: There was an error running the selected code generator.



另一個超嚴重的錯誤是完全無法開啟 Razor 的 View 檔~~~ 完全無法編輯 View 就太嚴重了!!!





只好又再搬出 reset user data 的絕招

2016/01/12

[Windows 10] 環境變數 設定變得超簡單

以前在 Windows 系統要設定環境變數時都很費眼力

PATH 的值就是一大串文字用 ; (分號) 區隔

以前最常做的方法就是先把 PATH 的值複製下來, 貼到記事本等文字編輯器, 改完值之後, 再整串貼回去

這最怕改錯或貼錯, 或是少貼, 另一點是字串長度問題, 最後貼上被 CUT 掉

Windows 10 最近的更新終於變得人性化了~~~ (感動吶...淚)

你看看~ 這樣編輯變數是不是變得容易多了?? 新增, 編輯, 刪除, 排序... UI 簡潔有力!!



2016 程式語言排行榜


TIOBE Software 公佈了 2016 一月程式語言排行

我所熟悉的程式語言幾乎都落在 10 名以內~~ Java, C#, PHP, VB.NET, JavaScript

至於 Objective-C 玩過一陣子...但是實在不愛它的語法結構~ Swift 的出現倒是變化不少, 有空再來研究研究~

p.s. 沒想到 VB.NET 的成長幅度居然這麼大


資料來源: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html