在 Facebook 上的這邊看到的消息,《Perl 學習手冊, 8/e》出版了,算是難得看到 Perl 的繁體中文書出版。

不過翻了一下好像沒有電子版本?那就只能幫忙宣傳一下了...
幹壞事是進步最大的原動力
Hacker News 上看到「What’s the best lossless image format? Comparing PNG, WebP, AVIF, and JPEG XL」這篇,在講圖片的無損壓縮演算法。在 Hacker News 上的討論也可以看看:「What’s the best lossless image format? (siipo.la)」。
文章有點舊 (2021 年七月),但應該還行... 另外作者看起來是以 service bandwidth 考量為主,在這種情境下,自然圖片一般都會以非無損的方式提供 (像是 JPEG),而人造圖片則是以無損的方式提供 (像是 PNG),所以在這邊討論無損的時候會以人造圖片的 dataset 來挑選,於是作者是跑去 Dribbble 上翻圖片當 dataset:
What I ended up with was downloading a set of images from Dribbble, a portfolio site for designers.
最後的結果就是:
考慮到目前各家瀏覽器的支援性,可以看到 Lossless WebP 其實是個很好的選擇,檔案算蠻小的,而且 Apple ecosystem 的支援性也已經出來了:
如果不用考慮到瀏覽器的話,JPEG XL 也可以考慮,不過本來宣稱 royalty-free 的部份蒙上了陰影:「Alarm raised after Microsoft wins data-encoding patent」,用的人反而要注意到 patent 問題...
在 Daily Lobsters 上看到「Solving Sudoku with Poetry's dependency resolver」這篇完全是惡搞 Python 下 Poetry 套件 XDDD
作者搞出來的方法是這樣,指定 81 個版號來表示題目,然後跑 Poetry 找可以的版本組合:
[tool.poetry.dependencies] python = "^3.6" sudoku-cell11 = "*" sudoku-cell12 = "2.0.0" sudoku-cell13 = "*" sudoku-cell14 = "8.0.0" sudoku-cell15 = "*" sudoku-cell16 = "9.0.0" sudoku-cell17 = "*" sudoku-cell18 = "*" sudoku-cell19 = "*" sudoku-cell21 = "3.0.0" sudoku-cell22 = "7.0.0" sudoku-cell23 = "*" sudoku-cell24 = "6.0.0" ...
另外作者有提到,本來是打算用 Yarn 來解,但看起來各種嘗試都會搞爆 Yarn,才換到 Python 上面玩 XD
在 Hacker News 首頁上看到「no-op statements syntactically valid only since Python X.Y」這個專案,搞爆各個版本 Python 的各種方式,從 Python 2.4+ 一路到 3.11+ (不過中間有少了 3.2 與 3.4)。
專案要求的條件是 no-op,所以像是 import
這種行為都會產生 side effect,所以就不能用 sys.version_info
這個變數了:
This is a collection of no-op statements that are syntactically valid only since Python X.Y, for most X.Y ≥ 2.4.
看了一下裡面的例子,反而看到一些有趣的東西,像是原來這種語法在 Python 2.3 是不能跑的:
(0 for x in []) # Python >= 2.4 is required
然後 0_0
這種方便表示數字的寫法在 Python 3.6+ 才能動:
0_0 # Python >= 3.6 is required
有些東西真的是用習慣就忘記了,遇到一些古董環境可能會中獎然後在那邊疑惑半天 XD
看起來這個專案應該比較偏娛樂性質?實際應用上有很多其他比較常見的方式檢查環境才對 XD 但馬上想到,在打黑箱的時候可以用這個方法判斷 Python 的環境版本?
寫完上一篇「可以看 Chrome Extension 程式碼的 Chrome extension source viewer」後就可以來提「Fake Profile Detector tells you if people are real or fake online」這個了,文章裡面在介紹 V7Labs 所提供的 Chrome Extension:「Fake Profile Detector (Deepfake, GAN)」。
從套件的名字可以看出來他主要是偵測 GAN (Generative adversarial network) 類的類神經網路,這點在套件裡面說明也可以看到:
Right-click on a profile picture, our model will detect if that image contains a GAN generated or real person!
實際上測試時要注意要儘量抓夠大的圖片丟進去測,像是 Generative adversarial network 維基百科這頁裡面「Concerns about malicious applications」這個章節右邊兩張 GAN 生成的圖,如果你用維基百科預設的縮圖大小 (220x220),上面這張會猜測是真人,下面那張會猜測是假人。
但如果到大一點的圖 (600x600) 的話就都會猜測是假人:「File:Woman 1.jpg」、「File:GAN deepfake white girl.jpg」,原圖 1024x1024 的話也可以偵測出來。
然後 source code 就在那邊可以看 API 怎麼打,大家可以自己研究...
a lot of people don't know this - C actually lets you do arithmetic with mixed types, much like JavaScript: pic.twitter.com/6XF4qm41xv
— luna 💙 (@lunasorcery) March 18, 2022
This also works for exponents: pic.twitter.com/LYBf2qkseO
— luna 💙 (@lunasorcery) March 18, 2022
第一個的 "-0.5"
是 char[]
,補了 + 1
會往後一格,所以會變成移到 "0.5"
的部份。
所以如果改成 -0.6
,你會發現輸出變成 0.6
。
第二個的 50 ** "2"
則是利用了 2
的 ascii code 是 0x32,換成十進制剛好是 50,然後中間的 **
其實是一個乘號與一個 pointer 的用法,實際上剛好會是 50*50=2500 的運算。
如果你改成 "3"
的話會輸出 2550
。
作者在 Twitter 的後續有提到,這些都是特別挑過的數字所造成的「巧合」,你換掉這些數字的話通常會爛掉
(除非你也很精心挑過),不要誤解亂用 XDDD
To clarify:
Both of these are joke posts. C doesn’t actually do either of these things in the general case - I’m (mis)using other features of the language with carefully chosen numbers to make it seem like it works.— luna 💙 (@lunasorcery) March 19, 2022
在 Hacker News Daily 上看到「Smart-TV Blocklist for Pi-hole」這個,給 Pi-hole 吃的 blocklist,可以拿來擋 Smart TV 抓一堆廣告亂搞,另外很多自己刷的 WRT 也都支援這個格式,不一定要自己弄 Pi-hole,像是我家裡的 AdvancedTomato 也有支援:
本來馬上想到的是 AdGuard 提供的 DNS 94.140.14.14
,結果掃了一下發現都沒有擋掉,難怪會需要另外自己搞...
另外一個想到的搞法是 NextDNS,但 IPv4 的部份要固定 IP 才有辦法 (像是 HiNet 提供的 PPPoE 固一),免費版的 quota 拿來掛 Smart TV 應該夠用...
Hacker News 上的討論在「Smart-TV blocklist for Pi-Hole (perflyst.github.io)」這邊,這年頭要弄台不連網的電視機愈來愈難了...
Hacker News 上看到「I wrote a program that sends cats to my phone when I'm sad at the computer (healeycodes.com)」這個東西,居然是用 cam 判斷,當判斷心情不好的時候就推播貓貓的圖片,像是這樣:
除了 machine learning 的部份快,這邊還用到了幾個服務,像是 Pushover 與 The Cat API (居然有這種服務 XDDD)...
馬上想到前陣子看的 Don't Look Up (千萬別抬頭),裡面好像也有類似的產品 XDDD