2021年7月14日 星期三

XBOX 遊戲目錄 6歲以下 幼兒遊戲清單 @ XBox One S

當年買 XBOX ONE S 時,想說花五千左右買來當 藍光DVD播放器 的,結果...不小心就再加碼了停產的 Kinect 感應器、連接線,接著又入坑買了些體感的遊戲,像是首選目標是 Just Dance 以及 Kinect 運動大會:對抗賽 ,事實證明,果真該先查遊戲品價再買 XD Kinect 運動大會 似乎鳥掉不少,玩起來滿常跟感應狀態不順,大概只有玩網球跟保齡球比較順吧。不過 Just Dance 的體驗滿讚的,堪稱完美的體感互動。

近一年半,因為台灣疫情的關係,開始在 XBox.com 較大筆的消費買了不少遊戲,當時以直在想 XBox Store 裡一堆 18禁 血腥遊戲,還真不知該買什麼遊戲給小孩,之後在網路上找了一下,找到不少人推薦樂高的遊戲,入門款:樂高玩電影 LEGO THE MOVIE VIDEOGAME,趁著 XBox Store 特價時候,入手小試身手。以下的遊戲就偏向把手遊戲,對於 Kinect 體感就停留在 Just Dance 才會打開來用了。

先提使用 XBox Store 就是買數位版遊戲心得,好處:
  • 不定期會有大幅度的特價
  • 購買不用等實體光碟片寄到家
  • 不用擔心 XBOX 遊樂器哪天開始挑片
缺點:
  • 遊戲很大時,要等下載很花時間,家裡網速不快時,都可能會等上數小時才能下載完畢(20GB 遊戲大小,每秒 10MB/s 下載,要花 35分鐘)
  • 遊戲不玩時,不像實體遊戲片可以在二手市場交易,之前買的 Just Dance 2018 是實體光碟片,想玩買新的一代時,就把舊的在二手市場賣了,可以回收一半以上還滿不錯的(買一千多賣六七百)。
接著來聊聊樂高遊戲了!請留意,樂高遊戲,某個角度上還是帶有暴力意識,分級來說都是建議12歲以上的小孩的,例如要打掉建築物、打壞人等等,只是 XBOX 上太少幼兒把玩的遊戲,就試著引導他們當作解題遊戲。若很在意分級設計,還是避開比較安心。

買樂高遊戲還有個重點:可以兩人一起玩的。

小孩第一次接觸樂高遊戲,在看不懂文字上果真難上手,需要大人陪著,但大概撐過去後,便開始感受到遊戲有趣的點:解題、尋找成就感。雖然他們根本連劇情都不懂,也不懂樂高音樂以及出場的角色們,但小孩很會腦補,就像玩扮家家酒那樣。看著小孩這樣兩週玩著這款玩到幾乎破關,覺得滿驚訝的。大概一天玩 2 小時左右。有些場景因為沒有讀劇情,不懂文字上描述解題方向而卡關著,推論應該有八成都可以自己摸索,剩下兩成要去幫忙點一下。

第一次感受到長劇情遊戲帶給小孩的樂趣。回想起以前玩 PC 或 TV 遊戲時,其實很多看不懂也繼續玩,像是國小玩超任的熱血硬派也看不懂日文,一樣暑假天天玩天天練功了一個多月。(現在靠模擬器跟電腦加速玩,大概一週內就能破關)

爾後趁 XBox Store 不定期特價(感覺兩三週會有一輪樂高系列遊戲特價),就順便收購老遊戲而不是買最新不特價的遊戲,收藏了:
其中,我自己覺得 The LEGO Movie 2 Videogame 複雜度又比第一代高,就算玩過第一代也不一定能上手,因為複雜度上更重文字的描述,像是要建制對應的東西,選單更加複雜,可能將近要花 50% 時間帶小孩玩,相較之下還是 The LEGO Movie Videogame 適合學齡前小孩把玩,算是致敬第一代才收藏 XD 整體上其實可以不用花錢買它的,他比較偏給青少年玩的遊戲。

依序嘗試了 The LEGO Movie Videogame、The LEGO NINJAGO Movie Video Game、LEGO® CITY Undercover、The LEGO Movie 2 Videogame、LEGO Marvel Super Heroes、LEGO® The Hobbit™,感覺 NINJAGO 跟 LEGO Marvel Super Heroes還滿快上手的,其餘有的是劇情看不懂稍微複雜就卡關了。由於樂高很經典,再加上上述遊戲都稱得上老遊戲了,在網路上還滿多攻略,甚至 bilibili 還有玩家闖關的影片紀錄,若擔心不會玩,可以先查一下

此外,在 NETFLIX 上剛好有很多樂高小電影,也可以搭配播來看看,像是 NETFLIX - 樂高玩電影 2

其他推薦遊戲:
扣掉樂高後,迪士尼大冒險跟 Woodle Tree Adventures 都是很超值的遊戲!有興趣可以嘗試迪士尼大冒險,裡頭的遊戲可以玩上好一陣子。以上的價錢都是台幣。

有興趣的可以一週逛個 XBox Store 優惠區一下 https://www.xbox.com/zh-tw/games/all-games?cat=onsale ,看看有沒有想收藏的遊戲。只是,現在 Switch 當道,不需刻意為了玩這些遊戲買 XBox ,親子遊戲還是 Switch 比較多。

2021年7月7日 星期三

MacBook Pro 13吋 換喇叭揚聲器 Speaker @ A1502, Retina, 13-inch, Early 2015,

MacBook 13 A1502 Speaker

Macbook 已經用了五年多了,大概年初開始發現喇叭破音,有看到很多坊間解法,像是拆掉喇叭後,試圖找到破點,甚至塗上一點薄薄的白膠來修復,但我第一次看拆喇叭的影片,就懶了 XD

接著原本單邊正常,撐了兩三個月終於一起壞光光了... 於是乎進入藍牙小喇叭的用法,結果因為疫情關係要看個直播又要開啟藍芽喇叭,久而久之,還是覺得不方便。且不知道是不是外接喇叭久了,換了揚聲器後,反而覺得內建音效很差...耳朵被慣壞了!

就這樣...隨意找了一下,用 A1502 (自己的 MacBook 型號) 加 喇叭 或 揚聲器 這關鍵字,就可以輕鬆找到哪邊有在賣,一對大概都賣台幣 1100 以上。再加上本身就已經敗過 米家精修螺絲起子套裝組 ,這時需要的工具都備齊了。

最後就拆一下筆電,斷一下電源,在輕輕的把螺絲卸下,並且照拆除的順序再裝回去即可。不是太大的問題。

由於 Youtube 上面已經有許多教學影片,非常建議先看過一次,留意拆法,像是喇叭要拆離主機板時該怎樣做。

MacBook 13 A1502 Speaker

MacBook 13 A1502 Speaker

[Linux] 修復 Ubuntu 12.04 無法安裝軟體 - W: Failed to fetch 404 @ Ubuntu 12.04

老機器環境:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise

主要是在 server 運行 apt-get update 時,會出現一堆 404 問題:

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/precise-backports/multiverse/binary-i386/Packages 404

追了一下應當是 12.04 已經不維護了。運氣不錯,有找到 old-releases.ubuntu.com 位置:
  • https://archive.ubuntu.com/ubuntu/
  • https://old-releases.ubuntu.com/ubuntu/
接著就動手換掉 /etc/apt/sources.lis 即可,包括來源 server 換完後,記得要再把 /var/lib/apt/lists 先移除:

$ sudo mv /var/lib/apt/lists /var/lib/apt/lists-backup
$ sudo mkdir -p /var/lib/apt/lists
$ sudo apt-get update

如此就會修復相關資訊,可以在靠 apt-get 安裝軟體了。

此外,若剛好在除錯時,刪除了已安裝過的軟體,接著做了上述後,又要安裝時,會碰到資訊對不上的問題,如:

dpkg:error processing package XXX (--configure):
subprocess installed post-installation script returned error exit status 10

解法就是清除 /var/lib/dpkg/info/ 下相關套件的資料後,重新安裝或是跑完後續流程:

$ sudo mkdir /var/lib/dpkg/info/backup
$ sudo mv /var/lib/dpkg/info/XXX* /var/lib/dpkg/info/backup/
$ sudo apt-get install -f

2021年7月3日 星期六

[開箱] 電子書閱讀器 Kobo Elipsa 10.3 吋

Kobo 10.2吋 電子書閱讀器

在 Kobo 也花了五千買電子書了 XD 一開始還滿喜歡用 PC app 觀看,想說還是買一台電子書閱讀器來用用吧!之前買過 Kindle 6吋的經驗,加上沒外出看書的需求,還是想大尺寸一點,剛好跟朋友哈拉 Kobo 沒出過大尺寸的,沒想到哈拉後沒幾週就看到推出 10.3吋的閱讀器,當時很快就下單,沒有想太多。

Kobo 10.2吋 電子書閱讀器

把玩的心得:
  • 裸機不含保護殼還滿輕的: 384g
  • 加上保護殼跟筆: 744g
Kobo 10.2吋 電子書閱讀器

大概 2010年 前研究電子書領域時,就曾跟某書店高層開會過,分享過心得,認為一瓶水 600g 是可以接受的範圍(替換掉女生包包內的東西),因此很期待 iPad 問世,我覺得加保護殼真的會覺得小重 QQ 但一台破萬也讓人不得不保護啊 XD 或許這就是 amazon kindle 6吋主流的原因吧?最終還是方便為主。

Kobo 10.2吋 電子書閱讀器

回過頭來,我自己使用 Kobo Elipsa 10.3 吋的心得,小缺點:
  • 首次登入 kobo 時,會輸入帳密,輸入後發現螢幕上會有鍵盤的殘影(但不影響使用)
  • 把 Kindle Paperwhite 6 翻頁速度快些,但跟 iPad 體驗上還是有一段落差
  • 觸控筆採用 AAAA 6號電池,稍微不好買,網路訂最方便(2個50元)
  • 據說 Kobo 一直以來都有各個裝置同步不即時的問題,甚至已經接近無法同步的體驗
優點:
  • 比 iPad 輕,只有讀書跟寫筆記功能,專心讀書
  • 不加保護殼時,質感不錯(可惜實務上應當還是會裝著保護殼)
  • 搭配 Kobo 觸控筆,比我想像中驚艷不少,像是梳理閱讀時可以隨便畫,很讚(看起來 iPad app 看不到?)
Kobo 10.2吋 電子書閱讀器

其他意外...則是把電子書擺在桌上,小孩拿起 kobo 筆畫一畫,就發生慘案了 <囧> 只能說這就是意外吧...目前看起來還不影響閱讀,讓他去吧...還是把電子書當作耗材,書中的資訊才是核心啊。

Kobo 電子書 刮傷

2021年6月27日 星期日

Node.js 筆記 - 以 HTTP API 提供 ffmpeg 轉檔,以 jpg 轉成 png 為例 @ node.js v10.24.1, macOS 11.4

最近接獲一個任務研究了一下 Javascript 與 H264 的解決方案,首先會立馬想到 ffmpeg 方案,就研究了以下 JS 專案:
其中 ffmpeg.wasm 無法在 node.js v10 運行。在不考慮 node.js 升級的前提上,就來把玩其他三者,而 tinyh264 的源頭是 h264bsd 專案,在 h264bsd 專案中有 js solution 可以挖出來跑,包括裡頭有 github.com/oneam/h264bsd/blob/master/js/test_node.js 這隻程式很小巧美麗,可以欣賞一下。而裡頭把玩最多的是 ffmpeg.js 這專案,有興趣可以看看他的 Makefile ,很簡單清楚,比較特別是他分別產出 ffmpeg-webm.js 和 ffmpeg-mp4.js ,兩者不同的地方是 ffmpeg 支援的 encoder/muxer 不同,可能是為了精簡 js code size 因此就拆成 webm 跟 mp4 的用法。這邊把玩的是善用 ffmpeg.js Makefile 去重編 ffmpeg-*.js 增加 demuxer/decoder 和 encoder/muxer。

這邊滿適合看一下 ffmpeg 框架:


接著,工作上的任務是讓 input 支援 h264,而 output 支援 jpg/png 等。這邊把範圍限縮到 input 支援 jpg ,輸出支援 png 來筆記。最後包裝個 HTTP API 出來筆記一下,結果花最多時間是在確認如何從檔案系統讀出檔案資料,以及透過 http.request 將圖片資料下載回來 Orz 還派上 md5sum 來檔案內容是否正常。

而 ffmpeg.js 真的設計得不錯,用起來很方便,可以參考 local-file-cmd.js 用法:

const ffmpeg = require('./ffmpeg-20210624_1550/ffmpeg-mp4.js');
//const ffmpeg = require('./ffmpeg-default/ffmpeg-mp4.js');
const fs = require('fs');
const crypto = require('crypto');

let from_local_file = '/tmp/test.jpg';
let raw_data = fs.readFileSync(from_local_file);
let testData = Uint8Array.from(raw_data);
const md5sum = crypto.createHash('md5');
md5sum.update(raw_data);
console.log('[INFO][from_local_file][size:'+raw_data.length+'][md5:'+md5sum.digest('hex')+'][path:'+from_local_file+']');

const result = ffmpeg({
MEMFS: [{name: 'test.jpg', data: testData}],
arguments: ['-i', 'test.jpg', 'test.png']
})
const out = result.MEMFS[0];
const outputContent = Buffer.from(out.data);

console.log('[INFO] Done. Input size: ' + raw_data.length +', testData size: '+testData.length+', output size: '+outputContent.length);

更多資訊:changyy/study-wasm-ffmpeg-jpg-to-png