canaria's blog

響け! この歌に乗せ 愛を送るよ

0%

intro

想想還是寫一下好了,畢竟這算是我第一次摸Youtube Data API。寫下來留個紀錄。
月初某天在Discord群組內閒聊的時候,有人提到了百鬼不知道幾天不開台了。由於Youtube超過一段時間後,在影片頁面上只會顯示該影片是在幾週或幾個月前上傳。除非點進最新的影片內,不然看不到確切的上傳日期。
這也給我一個想法,是不是可以用Youtube API直接抓到最新的影片上傳日期呢?因此在那幾天打APEX的零碎時間下完成了這個小專案(?)

demo

懶得看code的人可以直接點網址,順便訂閱一下我家百鬼あやめ,按讚分享開啟小鈴鐺

Youtube Data API

由於Google App Script內建Youtube Data API,只要在頁籤內新增服務即可直接使用,因此我這邊採用Google App Script作為我的後端資料操作。
Google開放每個專案每天約100次的搜尋請求,在小範圍內使用應該是沒問題的。
詳細的說明可以參考官方文件以及Google App Script的example code,這邊只做簡單的介紹。

youtube頻道網址後面那一串就是channelId。首先依照channelId搜尋該頻道依照上傳順序排列的最新一部影片。
回傳的東西雖然很多,但這次我們只需要三個部分,分別為:︁直播狀態、公開時間、影片ID。

  • 直播狀態(liveBroadcastContent):共有三種可能的值,分別是預定開始直播(upcoming)、直播中(live)、毫無反應就是個影片(none)。
  • 公開時間(publishedAt):回傳的時間格式會長這樣 2022-03-11T15:33:11Z ,後續可以交由Day.js處理。這邊要注意的是,假如頻道主在17:30發送直播預告,18:00開始直播,這邊回傳的值依然會是17:30。
  • 影片ID(videoId):就是youtube的影片ID,這邊回傳時幫他補上了/embed/,方便接下來直接嵌入網頁。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function doGet(e) {

var cid ='UC7fk0CB07ly8oSl0aqKkqFg';
var results = YouTube.Search.list('snippet', {channelId: cid, type: 'video', order: 'date', maxResults: 1});

if (results.items[0]){

var livestatus = results.items[0].snippet.liveBroadcastContent;
var publishtime = results.items[0].snippet.publishedAt;
var videoid = results.items[0].id.videoId;

var ans = {
'live': livestatus,
'pubt': publishtime,
'vidi': 'https://www.youtube.com/embed/' + videoid
};

return ContentService.createTextOutput(JSON.stringify(ans)).setMimeType(ContentService.MimeType.JSON);
}
else {
return 0;
}
}

Day.js

首先我們要判斷頻道的狀態是即將直播直播中沒開台。如果是前兩者的話便將計時器隱藏,並嵌入直播影片。
再來透過Day.js,就算時間格式不同,我們也可以很簡單的算出現在和影片發布時間的間隔,在經過數值處理後就能得出:上次開台至今過了幾天幾時幾分幾秒了。
Day.js的功能還有很多,其他功能可以參考官方文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$.get('https://script.google.com/macros/s/nakiri-api/exec' , function(e) {

if (e.live == "none"){

/*顯示計時器*/

const startDate = dayjs(e.pubt);
setDate();
setInterval(() => setDate(), 1000);

/*每1000毫秒刷新一次*/

function setDate() {
let secs = dayjs().diff(startDate, 'second');
let mins = Math.floor(secs / 60);
let hours = Math.floor(mins / 60);
let days = Math.floor(hours / 24);
secs = secs - (mins * 60)
mins = mins - (hours * 60);
hours = hours - (days * 24);

let secs2 = secs.toString().padStart(2, '0');
let mins2 = mins.toString().padStart(2, '0');
let hours2 = hours.toString().padStart(2, '0');

$('#day').text(days);
$('#hour').text(hours2);
$('#min').text(mins2);
$('#sec').text(secs2);
}

}
if (e.live == "upcoming" || e.live == "live"){

/*隱藏計時器*/

$('<iframe>', {
src: e.vidi,
id: 'ytplayere',
frameborder: 0,
scrolling: 'no'
}).appendTo('#ytplayer');

}
else {
...
}
});

分享按鈕

這也算是我第一次做三個社群的分享按鈕,搭配了Font Awesome Icon和簡單的onclick事件來完成。
三個台灣常見的社群平台分享連結如下:

1
2
3
4
5
6
7
8
// twitter
http://twitter.com/share?text={TEXT_MESSAGE}&url={URL_MESSAGE}&hashtags={TAG_MESSAGE}

// facebook
https://www.facebook.com/sharer/sharer.php?kid_directed_site=0&sdk=joey&u={URL_MESSAGE}&display=popup&ref=plugin&src=share_button&quote={TEXT_MESSAGE}

// line
https://line.me/R/msg/text/?{TEXT_MESSAGE}

outro

透過這次的小專案,我稍微認識了Youtube Data API和Day.js。
希望未來能有更多點子讓我可以練手,也希望我家百鬼あやめ可以多多開台。

以上。

intro

進入公司當社畜後,因為公司業務的關係,我發現大量同事持有各式的網路證照,而其中又以cisco的為大宗。在通過試用期後一方面想證明自己的實力,一方面公司又對相關證照有全額補助,所以就決定來考考看了。

測驗資訊

  • 考試費用:美金300元 (約合新台幣8500元)
  • 證照費用:第一次申請紙本證書免費,隨附電子證書 (若需補發紙本證書則須美金15元)
  • 考試時間:於Pearson VUE官網報名時選擇之考試時間
  • 考試地點:恆逸教育巨匠電腦等考場,以Pearson VUE官網公布為準
  • 攜帶物品:身分證 (查驗用)、印有英文姓名之信用卡 (查驗用)

Cisco CCNA (200-301)

CCNA,全名Cisco Certified Network Associate,是cisco的網路認證,證明工程師已掌握網路的基礎知識,並可以進行路由器的安裝、配置和操作。
除非考場有其他安排,不然幾乎每個上班日都可以找到考場考試,考試時間的安排相當彈性。

cisco認證每隔一段時間就會改版,考試代碼也會隨之更動,200-301代表的正是考試代碼。改版後的教材和題庫都會發生變化,練習時要注意不要拿到舊版的教材或題庫,避免在實際考試時遇到的有所出入。
Cisco Certified

考前準備

CCNA的考試分為選擇題和拖圖題。選擇題有可能是單選或多選,托圖題則是將左邊的文字方塊拖動到右邊放開即可,非常直覺。
考試我主要靠公司內部的教育訓練文件、練習考古題,然後將旗標出版社的CCNA Certification Study Guide譯本作為參考書來準備。雖然只看考古題的話也能通過,不過建議照著書本的學習軌跡走,收穫會更多。
CCNA Certification Study Guide

考試流程及證照請領

報名流程可以參考恆逸考試中心的教學Pearson VUE官網報名。
如果需要開立發票才能報帳的話,則需要由考試中心代為報名(恆逸或巨匠都可以),而發票則是在考試後向考試中心索取。
報名後請在考試當天的指定時段到考場(建議提早30分鐘),方便工作人員進行作業,也助於緩和緊張情緒。

我選擇的考場是恆逸考試中心,在考場櫃台報到後,工作人員會跟你核對身分證印有英文姓名之信用卡,並拍攝大頭照以確認身分。所有流程完成後工作人員就會帶你進入考場。和所有考試一樣,需要將隨身物品放到置物區,考場會提供小白板和白板筆作為計算用途。
在考前會有一個問卷調查,詢問你的教育程度、公司資訊、距離考場的距離等。這邊要注意的是,其中你是否滿18歲你是否同意cisco相關規章請一定要選擇YES,否則考試可能會中斷(據說)。

CCNA的考試時間共170分鐘,考題約100題,及格門檻為825分/1000分。
需要注意的是,CCNA考試不能返回上一題修改答案,請確認答案沒有選錯再點NEXT送出,也請注意不要連點兩下NEXT跳題。
考試完成後會直接在螢幕上顯示是否通過,通過後工作人員會把成績單印出來給你(封面是剛才拍的超醜大頭照),收好後就可以回家等電子郵件寄來的正式通知啦!

通過考試後約一周就會收到通知信。我大概在考試完成的兩天後收到通知信,通知可以到cisco追蹤系統上進行確認及電子證書的下載。通過測驗後也會有一次免費的紙本證書申請機會。

cisco追蹤系統上填寫紙本證書申請後,再過一個月就能收到從美國寄來的紙本證書了!

outro

我是在去年4月份通過CCNA測驗的,距今也超過9個月了,是靠著模糊的記憶寫出這篇文章的。
我預計在今年中去考CCNP Enterprise,希望我未來考證照時,會記得留下一些學習紀錄。

以上。

intro

大學時的我百般無聊翻著wiki的時候,發現了安部菜々的CV三宅麻理恵擁有業餘無線電人員執照。在蒐集了一下資訊並稍微讀過題庫後,我就直接跑去考試了,前後不到一天真佩服我當時的行動力

測驗資訊

  • 考試費用:新台幣 200元
  • 證照費用:新台幣 500元
  • 考試時間:每週一或週五9:00~11:20或14:00~16:20 隨到隨考
  • 考試地點:NCC 北區 / 中區 / 南區 監理處
  • 攜帶物品:身分證 (查驗用)、1吋大頭貼 (證照製作用)

業餘無線電人員執照

業餘無線電人員執照共分為三等,三等為初級、二等為進階、一等為高級。
三等及二等的題庫約600題、一等的題庫約900題。

執照不得跳級考取,須通過三等後才能考取二等、需取得二等資格一段時間後才能考取一等。

根據我當年考試的規定,二等以上的業餘無線電人員執照需加考術科測驗,也就是摩斯電碼的聽寫。在聽完練習題庫的模擬試題後我決定直接放棄,因此當時我只考了三等。
不過摩斯電碼的術科測驗在109年改版的時候被拿掉了,目前無論等級都只需要考筆試測驗即可。因為三等及二等題庫的相似度很高,建議現在要考的人連續進行三等及二等的筆試,並直接請領二等的執照比較划算。

考前準備及考試流程

把NCC公布的 考試題庫 看一看,做一下NCC的 模擬測試 後我就直接去考了。
考題分為兩部分,前半為台灣的無線電相關法律規章,後半是相關的電磁學技術及原理等,都是四選一的選擇題。因為正式考題就是從題庫裡面抽的,所以只要題庫有看熟基本上都不會有問題。有興趣的人也可以翻一下大學的電磁學課本

考試流程很簡單,跟NCC監理處櫃台說要考試後,現場填寫報名表、查驗身分證並繳交考試費後就可以考試了。跟考駕照很類似,雖然規定的考試時間有40分鐘,不過由於考題不多,大概10分鐘以內就能答完了,答完可以先行離開找工作人員。如果要接著考二等的話,考完請重複上面的步驟(填寫報名表、查驗身分證並繳交考試費)進行二等的考試。

考試結束後回到櫃台,繳交1吋大頭貼、查驗身分證並繳交規費後,工作人員就會現場幫你製作熱騰騰的(用護貝機護貝的)業餘無線電人員執照了。

outro

業餘無線電人員執照是我大學考取的第一張證照,也是我畢業後像白紙一樣的履歷上,證照欄中的唯一一張證照。
面試官和我看到wiki時一樣,對這張證照充滿了好奇心(畢竟真的很少見)。多虧如此在面試時聊得滿開心的,最後也順利錄取進現在的公司。
雖然除了面試時拿來聊天外,目前這張證照對我來說沒太大的用處。但在工作一陣子,準備開始考其他證照時,這個經驗也給了不少動力。

至於到底需不需要考證照,每個人都有每個人的看法。這邊推薦一篇文章:

我真的需要考證照嗎? 考證照對就業找工作會有幫助嗎? 一篇考證照的反思與效益分析

以上。