發表文章

[筆記] 因為 Debian Jessie 停止支援造成 Dockerfile 執行 apt update 出錯

圖片
這幾天使用舊版 Laradock 的時候,在 build 到 laradock/php-fpm 相關的 Dockerfile 後發生問題了。
隨便放一個圖當社群網站的預覽圖錯誤訊息當 Dockerfile 嘗試執行 apt update(或 apt-get update)時出現以下錯誤W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages 404 Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.原因:Jessie PPA 已封存Debian 8(代號 Jessie)已經停止維護,官方套件庫(PPA)jessie 已經移至 archive.debian.org 封存,並且廢止 jessie-updates 套件庫(合併至jessie )。jessie 會自動從 deb.debian.org 轉址到 archive.debian.org。但是由於 jessie-updates 已經廢除,產生 404 錯誤,連帶影響到 Docker 建置失敗。以下是相關的資訊:
Removal of Wheezy and Jessie (except LTS) from mirrorsas Wheezy and Jessie have been integrated into the archive.debian.org structure recently, we are now removing all of Wheezy and all non-LTS architectures of Jessie from the mirror network starting today.解決方案將已廢止的 jessie-updates 從 sources.list 中移除:RUN sed -i '/jessie-updates/d' /etc/apt/sources.list # Now archived原本的 /etc/apt/sources.list 內容如果是長這樣:deb http…

小克的 Visual Studio Code 必裝擴充套件(Extensions)私藏推薦

圖片
沒錯,又是私藏推薦系列,不過這次是 Visual Studio Code。
(上一篇:小克 2017 不能沒有、2018 一定繼續用的必裝 app 下載私藏推薦 (Android/iOS))從 Sublime Text 3 跳到 VS Code 一陣子了,在微軟及社群頻繁的維護與更新下,總算是越用越順手。VS Code 擴充功能(Extensions,俗稱擴充套件)的生態也算是越來越完整,一點也不輸給 Sublime Text 或是 Atom 的外掛或擴充套件。算一算裝的擴充功能也有數十種了,到了要整理的地步(笑),那就寫一篇來記錄一下好了,這篇也會持續更新。我平時主力為 Laravel/PHP 開發,所以會有比較多 Laravel 和 PHP 的相關套件。所以以下就是我的私人珍藏、必裝、必備、必下載、不裝不行的 VS Code 擴充功能。(直接拿 app 那篇來改 XDDD)
如果你有喜歡的其他擴充功能沒列到,也歡迎留言告訴我(各種方面的都歡迎建議)
來放一個官方的圖給 Facebook 抓預覽
– ange2018.08.03 新增 PHPUnit Snippets2018.08.03 將 Better PHPUnit 替換成更好用的 VSCode PHPUnitChangelog2018.04.02 裝回 Git History2018.03.27 使用者設定中新增 emmet 和 trimTrailingWhitespace 設定2018.03.24 新增使用者設定2018.03.24 新增 Fira Code2018.03.24 初版效率提升強烈推薦類這個區塊表列的,應該是不裝我會覺得渾身不對勁的的擴充功能 😂Fira Code安裝方法在此
首先推薦的這個不是套件,而是字體,強烈建議安裝,爽度提昇超多!
Settings Sync
如果你有多台電腦,可以幫你同步設定檔和安裝的套件(透過 GitHub Gist),支援背景自動同步
Auto Close Tag
被 Sublime Text 慣壞的必裝,會幫你把右括號或結束標籤補上。現在 VS Code 有內建基本補完功能了,但是他支援更多符號和設定,例如我喜歡打 </ 的時候也幫我補上 HTML close tag。
Guides
這工具我找超久!在你的程式開關符號(例如左右大括號)拉一條線,方便…

[筆記] 設定了 POWERLEVEL9K_MODE 卻沒顯示圖示?

圖片
裝了 Oh My Zsh 後,應該很自然地都會想要裝上 Powerlevel9k 吧(咦?
然後也會很自然地想要把圖示通通都打開對吧(咦咦?這時候就會發現,奇怪我都已經照官方教學把 POWERLEVEL9K_MODE 設定的妥妥了(順便曬一下我陽春的 Powerlevel9k 設定):# ~/.zshrc POWERLEVEL9K_MODE='nerdfont-complete' POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon context virtualenv dir vcs) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs time) POWERLEVEL9K_SHORTEN_DIR_LENGTH=2 POWERLEVEL9K_CONTEXT_TEMPLATE="%n" POWERLEVEL9K_PROMPT_ON_NEWLINE=true POWERLEVEL9K_RPROMPT_ON_NEWLINE=false 怎麼還是沒有圖勒
我意思是,像下面官方示範的各種精美圖示,怎麼還是沒有出來勒?
原來是 官方 Wiki 安裝說明 針對 Nerd-Fonts 的段落忘記強調一句話,而在 Awesome-Powerline Fonts 段落有提及:You then need to indicate that you wish to use the additional glyphs by defining one of the following in your ~/.zshrcbefore you specify the powerlevel9k theme意思是,POWERLEVEL9K_MODE必須要比 ZSH_THEME 還前面啦!以我的例子為例,只要把POWERLEVEL9K_MODE='nerdfont-complete'這一行往前搬,像這樣:POWERLEVEL9K_MODE='nerdfont-complete' ZSH_THEME="powerlevel9k/powerlevel9k"現在圖示就正常顯示啦!

如何解決 macOS 安裝 Boot Camp 失敗

圖片
試著用 Parallels Desktop 來「還願」,結果所有原本應該暗到看不見的地方都出現了紫色濾鏡效果,該有反射的材質也都沒出現反射,整個壞了興致(意外的是用內顯跑其實蠻順的)。因此決定還是來裝個 Boot Camp(啟動切換)玩玩看。原本以為只要開啟「啟動切換輔助程式」,順順的按下一步就好。結果安裝超級不順利!TL;DR移除 OSXRESERVED、BOOTCAMP 兩個卷宗。改安裝 Windows 10 2018 April Update,而不是 Octobar Update。先說出問題的環境Macbook Pro 2018macOS 10.14.3Windows 10 光碟映像 (ISO 檔案) (2018 October Update)安裝遭遇錯誤結果竟然在安裝的時候失敗了!(裝三次結果都一樣)無法分割硬碟
分割磁碟時發生問題。請執行「磁碟工具程式」來檢查並修正錯誤。這裡我已經 幫大家 重試三次檢查磁區,甚至我還進去「macOS 回復」來修復過磁碟也是一樣。重新執行呢?當我們想說,失敗了那我重新安裝總可以吧?好的,就會遇到以下錯誤訊息:無法分割啟動磁碟或將磁碟回復為單一分割區。
啟動磁碟必須格式化為單一 Mac OS 擴充格式(日誌式)卷宗或用「啟動切換輔助程式」分割磁碟後才能安裝 Windows。接下來該怎麼做?好的,接著我們來試著刪除 Boot Camp 磁區。打開「磁碟工具程式」,看看現在磁區長怎樣?

這裡看到了多出來 OSXRESERVED、BOOTCAMP 兩個卷宗,以及一個磁碟映像檔(應該是掛載的 Windows 映像檔)。這裡我卡很久,我以為 OSXRESERVED 是 macOS 的還原磁區不敢刪除,但是 BOOTCAMP 卷宗刪除後,因為中間插了個 OSXRESERVED 卷宗,就無法合併回「啟動切換輔助程式」所說的「單一分割區」。意思是:我也無法移除 Boot Camp。後來陰錯陽差找到了 Apple 的說明文件:如果「啟動切換」輔助程式停止回應或指出「『啟動切換』安裝失敗」,引用內文如下:當您在裝有之前版本 macOS 的 Mac 上使用 2018 年 10 月版的 Windows 10 執行全新安裝時,會出現「『啟動切換』安裝失敗」錯誤。有趣的是,我目前已經是 macOS 的最新版,但文件寫說:在安裝 Windows 前,請將…

[筆記] 設定 Sourcetree 預設使用分頁開啟多個 repo

圖片
Sourcetree 支援使用分頁功能,可以在一個視窗裡一次開啟多個 Git 倉儲(repository),讓畫面非常簡單乾淨。但每次我都必須要開了好多個視窗後,才按 Window → Merge All Windows,未免也太麻煩了。後來在 [SRCTREE-4524] Add ‘Always Merge Windows’ option - Create and track feature requests for Atlassian products. 這篇找到了解法。原來 Sourcetree 是使用 macOS 原生的標籤頁(Tab,我還是比較習慣說分頁)來實作這個功能。因此解決方法是到 macOS 的「系統偏好設定」中的「Dock」,將「打開文件時偏好標籤頁」改成「總是」就可以了。這樣做的缺點是,所有使用 macOS 標籤頁功能的程式都會連帶受到影響。不過我目前也沒看到哪個程式有用這個功能就是了 🤔


本著作由小克製作,以創用CC 姓名標示-相同方式分享 4.0 國際 授權條款釋出。

VSCode 與 PhpStrom 常用快速鍵對應表

圖片
最近開始試著把工作環境從 Visual Studio Code 轉移到 JetBrains 的 PhpStorm,看看 IDE 是不是真的有比編輯器方便撰寫 Laravel。在學習並適應使用 IDE 提供的強大功能前,原本編輯器就有提供的基本功能總要先瞭解該如何使用。很明顯的,遇到的一大難題大概就是一堆上手的快速鍵要重新適應了。是也可以考慮都換成 VSCode 的 keymap,但之前從 Sublime Text 轉換到 VSCode 的時候不也撐過來了,就來試試看記憶新的吧。整理了一下常用的快速鍵,實在是變化太大了,能不能撐過去呢 🤔😂macOS 符號圖例因為我用 macOS,這次就以 macOS 的快速鍵為主,以下是圖示對應的鍵盤按鍵。圖示鍵盤按鍵⇧Shift⌃Control⌥Option⌘Command我常用的快速鍵以下中文名稱是參照 VSCode 鍵盤快速鍵所做的翻譯,而英文則是 PhpStorm 提供的 keymap 名稱,大家可以對照著看。名稱VSCodePhpStorm設定
Preferences…⌘,⌘,快速開啟檔案
File…⌘P⇧⌘O顯示所有命令
Find Action…⇧⌘P⇧⌘A在檔案中尋找
Find in Path…⇧⌘F⇧⌘F將選取項目加入下一個找到的相符項
Add Selection for Next Occurrence⌘D⌃G選取所有找到的相符項目
Select All Occurrences⇧⌘L⌃⌘G將行向下複製
Duplicate Line or Selection⇧⌥↓⌘D上移一行
Move Line Up⌥↑⇧⌥↑下移一行
Move Line Down⌥↓⇧⌥↓移至定義
DeclarationF12
⌘滑鼠左鍵⌘B
⌘滑鼠左鍵向後
Back⌃-⌘[
⌥⌘←向前
Forward⇧⌃-⌘]
⌥⌘→切換整合式終端機
Terminal⌃`⌥F12重新開啟已關閉的編輯器
Recent Files*⇧⌘T⌘E* 註:此為相似功能,可以到 Keymap 自行設定 Reopen Closed TabMurmur…還沒背起來的各種抱怨與理由
不是啊!按鍵太多了吧,指頭都要打結了 😢
然後開個終端機還要按 F12,在 Touch bar 版本的 Macbook Pro 超不方便的吧…

如何正確在 Laravel 撰寫 PHPUnit 單元測試(Unit Test)

本篇文章內容主要參考自 LaracastsLaravel 5.4 From Scratch: Testing 101,並且替換掉舊有寫法,改寫成新版(Laravel 5.6)的版本。我們會撰寫一個簡單的 Unit Test 測試,可以在獨立的測試資料庫中測試 model 操作 CRUD,同時不會因為測試 Create 操作而造成資料庫無限肥大下去。建立測試案例先建立一個測試案例,本篇以單元測試為例建立一個 PostTest.php。# Create a test in the Unit directory... php artisan make:test PostTest --unit 規劃測試內容例如我們想要測試以下 Post model 的 method 是否正常:# app/Post.phppublicstaticfunctionarchives(){returnstatic::selectRaw('year(created_at) year, monthname(created_at) month, count(*) published')->groupBy('year','month')->orderByRaw('min(created_at) desc')->get()->toArray();}我們可以先依據 Given-When-Then 格式來撰寫註解,規劃好我們要寫的測試內容。關於 Given-When-Then 可以參考本篇文末 延伸閱讀 段落的整理。# tests/Unit/PostTest.phppublicfunctiontestArchives(){// Given I have two records in the database that art posts,// and each one is posted a month apart.// When I fetch the archives.// Then the response should be in the proper format.}建立測試資料在這裡,我們需要兩筆資料來測試。這時我們可以使用 Model Factories 來產生我們需要的測試資料到資料庫中。關於 Mod…