2016年1月25日 星期一

[自言自語] 關於程式新手的感想

前陣子看了一堆鼓勵程式新手的文章,
因此身為一個半吊子又非本科系出身工程師的我,
也想跟著風潮寫些什麼紀錄我的攻城屍工程師人生。

說來也是無心插柳柳橙汁柳成蔭,
雖然我從國中就開始學電腦,
但電腦程度了不起就是可以玩玩遊戲而已。
雖然國高中時多少上了些計概和程式基礎(VB),
我依然沒想過自己會走上工程師這條路。

畢竟我當初是選文組的嘛(菸

至於我會走上工程師這條路,
大概還是因為小時候不懂事。
好不容易大學聯考算幾乎落榜地考上新莊大學歷史系,
但是兩年間幾乎沒上什麼課,
考試成績也依然悲催,
到學校只是為了去圖書館看書和去計中上網,
現在想想那時還是真是廢物啊......

反正這麼荒唐兩年後就直接退學了!

離開學校後我先過著等當兵外加網遊廢人的一年時間,
就算過完十二天國軍夏令營後,
我還是再當了幾個月的廢人。
直到一個契機才讓我開啟了前往工程師之路的大門......

那時候(2004~2005年)很流行個人架站之類的事,
拜此風潮,我也多少研究一下個人架站這回事,
稍微玩過 xoops 、 Discuz! 之類的玩意。
然而玩過以後發現只靠這些基本的東西不能滿足我,
因此我就買了一本 PHP + MySQL 的入門書,
從第一章的到最後一章內容讀過也實作過一遍。

不得不說,當時其實是一種挑戰,
因為會發現自己很多東西都不懂不知道,
做起來怎麼都搞不清楚為什麼書上的範例可以正常跑,
自己做出來的東西怎麼樣就是沒辦法得到一樣的結果。
在這段新手期,根本就是考驗自己的信心,
要不是我當時已經退無可退,堅持各種亂改求正解(?),
或許我會直接放棄。

就這麼自學了一段時間後,我就很不怕死的地以一介新手身份開始投履歷。
想當然爾,當然沒人會用菜鳥,
在踹過幾家後好不容易有家小公司願意錄用我,
雖然工作內容包山包海,
從公司email(直接用 Google Apps,那時還自己弄 bind,我真的不知道我當初怎麼處理的),
公司網站主機移機(從 hinet 虛擬主機移到家用 PC 的 Server,那時 hinet 的虛擬主機空間還真的小的要命,雖然是以現在的眼光看啦......),
網站修改(直接硬改一堆 PHP flat code),
到電腦設備維護(幹,我哪知道網路怎麼不能用啊?)
直到現在我也無法理解程度根本就是幼幼班的我怎麼能夠應付這些事?
對業界的認識總算是有一點了,雖然自己也依然懷疑這樣的程度能夠應付些什麼?

就這樣陸陸續續待了幾家公司,
我基本上都是在工作上學習。
除了早期針對新程式技術會買幾本書自己看自己實作外,
現在的我幾乎不買技術書籍,
更多時候我是看著別人寫的 Code 學習,
有問題找 Google / StackOverflow,
努力做些不能賺錢的玩具鍛鍊實力。
雖然依然不敢說自己能夠獨當一面處理各種狀況,
但是大部分狀況應該還是可以勉強應付。

以下算是過來人給新手的建議:

  • 不要妄想找到一本完美的入門書才開始學習:如果你真的想學一門技術,去書店隨便找一本相關的書,按照書中的教學實例全部實作過一遍,確定你可以重現每個範例的結果,或是吐嘲作者的範例有錯,然後就把書丟掉。接著用你自己的想法和所學寫一個小東西出來,不懂的就去 Google ,想一下該怎麼解,不要只想著 Copy / Paste 解決,因為你永遠不會有記憶。
  • 世界上不是只有一個解答:一個程式語言當然可以解決很多問題,但是閒著沒事多學別的程式語言也是無妨的,可以增加自己的見識,也增加解決方法的搜尋廣度。
  • 別光只看書,實作比較重要:實作才能增加自己的經驗值,你就算讀了一堆技術書籍卻不實作,了不起就是個活書架,你還是沒有實力應付現實的問題。哪怕是做別人眼中的玩具也好(在下就做了很多這樣的玩具),你還是比讀了一堆技術書的人來著好。
  • 不要妄想戰語言/技術:如標題,能戰這種東西的人不是平庸的你,只有那些技術的發明人才夠資格去找其他語言技術戰。你所要做的是冷靜分析哪些東西在哪些狀況有比較好的表現,哪些狀況可能會有狀況要處理,然後在碰到狀況時能夠提出方法處理。

2016年1月20日 星期三

[野人獻曝] 來講一下 youtube-dl 的使用

youtube-dl 大概是我看過最可怕的下載影片工具了,
雖然看名字你會認為她只能抓 youtube 的影片,
但實際上主流的影音網站的影片他都能抓。
(雖然這工具主要著墨於 youtube 就是了

安裝方法就不說,
反正 windows 用戶就抓一個可執行檔就可以跑了,
linux / mac 下個指令應該也可以輕鬆安裝。

以下列出常用的指令:
  • 簡單地抓影片:執行後會去抓最高畫質的影片並放在當前所在目錄。如果是播放清單的話,會整份清單上的影片都全跑一次。
    [youtube-dl路徑] 影片url/或youtube播放清單
  • 抓取指定畫質的影片:只限 youtube,其他網站沒試過
    可以先用 [youtube-dl路徑] --list-formats 影片url 列出所有可用的 fmt
    接著再下 [youtube-dl路徑] -f [fmt代碼] 影片url
  • 只要影片中的音樂檔
    [youtube-dl路徑] --extract-audio 影片url
    如果還需要限定音質水準的話,可以多加 --audio-quality [0-9] ,0 品質最高,9 最低
    也可以限定要輸出什麼編碼的檔案,只要多加 --audio-format [aac|vorbis|mp3|m4a|opus|wav] 即可。
  • 只下載播放清單中的第 N ~ M 間的影片
    [youtube-dl路徑] 播放清單網址 --playlist-start N --playlist-end M ,不過要記得如果是要從第一部影片開始抓的話 N 是要填 1 。
    如果是要從第五個影片開始抓的話就只要加 --playlist-start 5 就好了
  • 改變下載檔名
    [youtube-dl路徑] 影片url -o "名稱或是名稱模板"
    其中名稱模板可以放一堆變數替換掉,不過這就要翻說明內容才知道。沒設定這個選項的話,下載的檔名會是「影片標題_影片ID」。
其他還有一狗票選項可以設定,可以讓你的影片收藏更加豐富。
要說的話這東西的缺點就是只有文字列模式,
所以可能會用得很不習慣,
不過一旦習慣了,
大概會覺得一狗票抓影片的工具實在都弱爆了。
(回想起以前還要裝 GreaseMonkey Script 或是 extension 才能下載影片實在是......