2017年2月13日 星期一

升級 Laravel 5.4 出現 Call to undefined method dispatch()

參考 http://stackoverflow.com/questions/42057797/laravel-5-4-artisan-migrate-fails-with-call-to-undefined-method-dispatch。

如果升級時,執行 php artisan 相關指令沒事,就不用理會這個。但如果出現類似錯誤,先把 bootstrap/cache 底下的檔案都刪掉,然後執行

php artisan cache:clear
php artisan view:clear

2016年11月11日 星期五

處理 Safari 無法播放 video mp4 的一些問題

最近開始覺得 Safari 大概是未來的 IE。

在使用 HTML5  的 video 播放影片時,遇到兩種影片播不出來的情況。

情況一

較少人會遇到,就是尚未更新成最新的 OS 作業系統,(我的情況是作業系統 OS X EI Capitan, safari版本: 9.0.2),很不巧的我是用自己 server 的 https,當你的 SSL 憑證不是可以信任的,safari 無法載入 mp4,解法是什麼,就只好把 https 改成 http 了。

這個問題找好久,而且還要找到一台尚未更新 OS 的 Mac 來測真的很有困難。參考: http://stackoverflow.com/questions/25709713/safari-will-not-play-mp4-over-https, Cannot view Quicktime movies over HTTPS in Safari or UIWebView

另外新版的 OS 沒有這個問題,即便我是 https,像我更新到 sierra 就沒有這個問題。


情況二

是針對 iphone 上用 safari 看 video 會出現播放鍵,而且還不會自動播放。
這個問題,要從 2 個方向著手:

1. 請先處理掉播放鍵的顯示,處理的意思就是隱藏。用 css 把 video 標籤的 video::-webkit-media-controls-start-playback-button 隱藏起來,如:

video::-webkit-media-controls-start-playback-button {
  display: none;
}

可以參考: displaying html5 video in ios without play button overlay


2. 自動播放的問題比較麻煩,但是 IOS 10 有辦法,至於 10 以下的就很難說。
video 標籤的自動播放,要加上 autoplay  屬性,若你要針對 ios 10 的 safari,請你再加上 playsinline 的屬性。如:

<video loop muted autoplay playsinline>
   <source src="01.mp4" type="video/mp4">
</video>

注意, autoplay 跟 playinline 這兩個屬性一定要同時擁有,才會在 safari 自動播放! 這個部分你可以參考:

(1) IOS 10 支援  playinline 所以直接使用沒關係:  New <video> Policies for iOS

(2) 但是 ios 10 以下的,可能要靠 javascript 套件來處理:  https://github.com/bfred-it/iphone-inline-video (網路上看到有人推薦的,但我自己是沒有試過)


至於較舊版本的 safari,如果沒有特別想要處理,就記得放 poster 屬性在 video 上,如果影片播不出來,至少也別讓它看起來是空的。


情況一的問題讓我頭痛很久,有時候要注意,當你 google 不到這些問題的時候,可能真的不是大部分的人會遇到的問題,無奈,https 錯了嗎 QQ

2016年11月1日 星期二

[工作筆記] 原來 IE 不支援 SVG 的 animation...

參考: [SVG animation is not working on IE11] http://stackoverflow.com/questions/33812303/svg-animation-is-not-working-on-ie11

因為今天在處理一個 svg 的動畫發現在 IE 跑不出來,原本以為是因為使用 stroke-dasharray 跟 stroke-dashoffset... ,結果得到的解答是只有 Edge 會支援 SVG 的 Transition 跟 animation。簡單來說目前沒有特別方便快速的解法,網路上的解法建議是轉用 svg 的 library 像是 GreenSock 。

連我都還沒使用到 Edge 的人了,直接放棄在 IE 上的效果,結案。不過依舊要寫兩份樣式,先偵測瀏覽器是否為 IE,在 <body> 上 append 一個新的 css class,再用 .ie something, 跟 .not-ie something.. 類似的方式去做替換 SVG 的方案。

2016年10月19日 星期三

更新 macOS Sierra 之後 compass 指令不見

昨天更新 macOS Sierra 之後,執行 compass 出現 Operation not permitted - /usr/bin/compass,後來找到了一個方式,就是先切換成 root,再安裝:

sudo su

sudo gem install -n /usr/local/bin compass

不過要小心,在你更新完作業系統的之後,也請你先更新 xcode,再來處理這些 compass 路徑的問題。xcode 的安裝試試在 cli 執行 xcode-select --install,或是打開你的 App Store 找到他,然後更新,再來處理 compass 的安裝。


若這個解法不適合你,或者你是使用 homebrew 在安裝的話,你可以參考: Compass install fails on OS X 10.11 due to new rootless mode #2018。祝你也順利 :)

2016年10月17日 星期一

[工作筆記] git filemode 設定,避免檔案權限不同而進 git status

最近工作常常在 windows 跟 Mac, Linux 上切換來切換去,發現在 Mac 掛磁碟機近來的 Repo 莫名其妙都進 git status 變成需要 diff 的檔案,明明也沒修改什麼,也有可能是因為用 afp 掛進來的,然後我也完全忘記有檔案權限這件事情,還好同事英明,快速指出原因。

要讓 git 忽略這個問題,只要設定 git 的 filemode 就行:

git config core.fileMode false

若想要設定成全域,加上 --global 就可以。

參考:

2016年10月16日 星期日

Chrome 開發人員工具 console 的一些快速選擇的用法

開發工具一直都是前端人員的求生工具之一,相信大家在使用瀏覽器 Debug 時通常也都會開啟 F12 的開發人員工具,最近我從書上學到一些快速 & 覺得實用的 selector (也許是老掉牙的知識了?!),紀錄一下:


(1) $0 選取目前被鎖定的元素
假如你已經在頁面上選擇某個元素了,那可以直接利用 $0 去選擇到你選到的 DOM。另外若你有載入 jQuery 的話,就可以直接利用 $($0) (或是 jQuery($0))去操作它。

其實 $( ) 代表的是 document.getElementById,但如果你裝的 library 也有 $( ) 這個 function,就會被你裝的 library 給取代。不過還好用 jQuery 感覺是沒差。

利用選取工具,去選擇你要的 DOM。

直接使用 $0:

而且 chrome 會記錄歷程,假設你選取過四個不同的 element,可以利用 $0, $1, $2, $3,而 $0 是拿最近一次選取的元素,最多,記錄到 $4 這樣。

如果是想要用 CSS 選取元素,可以用 $$(),相當於 document.querySelectAll()。比方說取得所有的 img,可以用 $$(img)。




(2) $x('XPATH') 使用 XPath 選到符合的元素
使用 $x() 這個函示可以直接把 XPath 的值當作 selector,首先你可以在選取的 selector 按下右鍵,複製 XPath,或是你知道規則,也就不需要複製。


接著利用 $x( ) 將 XPath 當作 selector 進行 Query:


(3) $0 拿最近一次計算的值的結果




除了這些還有 clear() 可以清除 console 的內容。
dir({key: value}),dir ( ) 函示可以放入一個 object,會以可以展開的形式呈現。
table(object),以 table 的形式列出資料,這個功能我超愛,看起來很有新鮮感 :

Firefox 也有哦


若你有興趣知道更多,其實官方文件都有,建議可以去看看 :) 會有挖到寶的感覺

2016年10月14日 星期五

轉址 301 與 302 的不同

剛開始在買這個 domain 的時候,其實 winwu.cc 以及 www.winwu.cc 都可以連到,問題是我希望搜尋引擎以 www.winwu.cc 為主要的網址,那麼,沒有 www 這個 domain 或是利用其他 domain 時,我要把 user 導到 www.winwu.cc,這時候要選擇哪一種轉址呢?!


2016年10月13日 星期四

Compass 編譯的 Warning: DEPRECATION WARNING on line ..._deprecated-support.scss:

在跑 Gulp Compass 編譯 scss 時,一直出現這個 Warning 讓我覺得很焦躁,雖然是可以不管他。

詳細的錯誤訊息是:
DEPRECATION WARNING on line 92 of 
XXXX/compass/css3/_deprecated-support.scss: #{}
interpolation near operators will be simplified
in a future version of Sass. To preserve the current behavior, use quotes:

unquote('"$ie6-"#{$legacy-support-for-ie6} 
"$ie7-"#{$legacy-support-for-ie7} "$ie8-"#{$legacy-support-for-ie8}')

You can use the sass-convert command to automatically fix most cases.

然後我找到了一個 github 上 issue 的解法,請尋找 mrpatricko 的回答,方法是要我們去修改你的那隻 _deorecated-support.scss,第 87 行,當然你也要對照一下是不是那一行,然後把那幾行利用雙引號刮起來,原本的單引號再變成雙引號。

建議是先備份一支起來,再做修改,以免改錯,不知如何還原.. 。改這種 source 我總覺得怕怕的,但很成功的 warning 被趕走了 :)

結論: 不過就是要改一行 scss 而已,花了好久把環境備好..

2016年10月8日 星期六

九月份


今年的九月份說起來也蠻忙的,我在 Women Who Code Taipei  講了四次的基礎前端講座,若您有興趣也可以看看這些投影片,但是精華部分比較少,這四次的上課走法講求希望讓來參與課程的同學可以實作,所以投影片內容都不多,上課時話比較多。有些投影片若內容不完整,我也是透過口頭說明,可能是剛好有一兩週比較忙 QQ

第一週
第二週
第三週
第四週


您也可以持續關注 Women Who Code Taipei 的活動,http://www.meetup.com/Women-Who-Code-Taipei/events。四周短短加起來不到10小時上課時數,不過有些同學也是很認真的交作業,很不簡單 :)  當初我也有點掙扎四周可以講些什麼內容 XD

---

九月份還有另外一個比較重大的變化就是離職,我換了一家新公司,新的開始,很希望可以待上個 3 年以上。離開的那家公司有很多不捨,總而言之,雖然今年有很多不順心的事,但也只能往前看了,很久沒有經歷過這種人生低潮期,(上一次是高中時期),希望會越來越好...

2016年9月26日 星期一

讓 git 將大小寫檔名修正視為不同的檔案

修改資料夾大小寫時,發現只修改大小寫沒有被視為 change 過的檔案
(這樣就沒辦法 commit 呀 !!)

將 git 的這個設定打開: git config core.ignorecase false

可以讓 git 將大小寫修正視為不同的檔案,這樣 git status 就會看到變化,進而可以正常 commit.


(久久沒發文竟然是因為這種小問題... QQ)

2016年7月28日 星期四

TIL - 文章筆記 看了一篇線性回歸的文章


這篇作者寫的線性回歸,涵蓋 Ng 在 Coursera 上的 ML 第三章的內容。
線性回歸是一個分類的演算法。

線性回歸說起來是還蠻簡單的:

1. 準備你的資料
2. 把資料灑到圖上 (graph)
3. 然後畫一條線 (應該會有最適合的.. 看題目是什麼...),可以把灑在圖上的資料做個切分 這條線叫做 Dicision Boundary.

---

* g (...) 也稱為 sigmoid function,我們用這個 function 來約束預測的結果,使結果只會介於 0 ~ 1,單位是百分比值,如結果是 .95 則預測結果是 95%。
* Dicision boundary 是一條可以把你的資料區分成兩塊 (也就是分類) 的線。
* 如果你需要非線性分類,選擇類神經網路或是 support vector machines (SVM)。

2016年7月26日 星期二

TypeScript 的 tsconfig.json 簡介

tsconfig.json 是 TypeScript 編譯時看的編譯設定檔案,能幫助你指定編譯的 TypeScript 檔案,輸出目錄等工作事項,像我在使用 Atom 編輯器時,若你的資料夾裡面有 .ts 檔案,而且你也有裝 IDE 針對 TypeScript 的一些 package,他會幫你掃掃看有無 tsconfig.json,若沒有會給你提示訊息。

2016年7月25日 星期一

TypeScript 簡介

TypeScript 是一個 JavaScript 型別化的超集 (“typed superset”),講『超集』兩字,要是沒有 google 我自己也都無法理解...,這裡有百度的解釋,若用那個網址的解釋圖來理解第一句話,大概是這個樣子: (BTW 我真的很認真在校正這一段,如果有畫錯請告訴我 QQ,我個人以前念書的時候就很沒自信看什麼子集, 超集...)

2016年7月21日 星期四

調整 Angular 2 編譯自動產生的 .js .map 檔路徑

最近照 Angular 2 的 Tutorial 做了一個 Heroes Dashboard,通常建立好 TypeScript 的檔案之後,會自行編譯出相對應的 .map 以及 .js。

這麼多檔案一同擠在 app 目錄下實在很崩潰,所以打算做個調整,把不是 TypeScript 的檔案都移到其他地方去,讓 app 保持在真正開發用的程式區域。


後來我才發現原來 systemjs.config.js 已經有提示我把 map 的 app 設定改為 dist 了。這個 dist 的資料夾表示輸出 .js .map 的資料夾路徑,你也可以換成你要的路徑。

1. 首先把 system.js.config.js 的 var map = { app: 'dist', ... 約略第八行的設定改為 'dist' (原為 app)
2. 在你的目錄下建立一個 dist 資料夾
3. 修改 tsconfig.json,在 compilerOptions 新增一個 outDir 的 key,值為 dist.  (你的輸出的資料夾目錄)

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "dist"
  }
}


處理完之後,記得重新 npm start.
這樣子 app 底下就會乾淨一點了... (另外 app 原本產生出來的 .map, .js 要自己刪掉哦! 也別不小心刪到 TypeScript (.ts) 的檔案...)

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...