分類: 程式人生

  • Spacer 與 Expanded

    同事問了我就寫一下。

    我們在 Column 裡有時會放 Spacer(),插在中間可以把其他元件用剩的空間填滿,實現左邊元件歸左邊,右邊元件歸右邊的效果。

    同事問的是,現在的元件中,頭尾都有元件外,中間有個 TextView 與 Spacer,那他想把 TextView 占滿以讓它的 overflow 設成 ellipsis 的時候達到想像中的效果,Spacer 要不要拿掉?

    首先要知道,Expanded 是一個 fit: FlexFit.tight 的 Flexible,而 Spacer 也只是包著 SizedBox.shrink() 的 Expanded。

    所以問題的答案是:要拿掉。

    否則 Expanded 與 Spacer 會分掉剩餘空間。

  • Firefox 支援 zoom 了

    之前的文章說到我又改回用 Firefox 了,因此為了玩 GBF,我除了改 user-agent 以外還做了一點手腳,但平時還是以手機玩居多。

    想不到上個月開起來之後又大跑版,研究了一下,才發現五月的時候 Firefox 支援 zoom 了,大概是這東西從非標準的 css 被列為標準,至少我在2月的時候看 caniuse 它還是寫 Non-standard method of scaling content。

    以前絕大多數的問題都是 zoom 的原因造成,本來我是用 transform:scale 來解決,但問題還是很多就是了,畢竟實際的行為也不同。

    目前某些地方的寬度還是過寬沒有改變,並且多出了 border-image-slice 不一致的問題。

  • Firefox 在 Youtube 不同語言的字體問題

    最近又把 Edge 蛋雕,裝回 Firefox,在選單把預設字體改為 Noto 系列之後,Youtube 對不同語系的文字就出現不太一致的現象。

    看了一下,Youtube 把字體指定成 Roboto,在不能顯示中文的情況下就去找我設定的 Noto Sans CJK TC,但日文顯然並沒有去找我設定在日文的 Noto Sans CJK JP。

    為什麼?看了這篇文章我有個猜測,它似乎是去讀了 Youtube 中 html 標籤裡 lang 設定的 zh-Hant-TW,去找對應的 Noto Sans CJK TC,然後就去找 about:config 中 font.name.{generic}.{language} 所設定的那些了。

    在選單中每個語系設定的那些就不管你了。

    像是 font.name-list.sans-serif.ja 預設是 Meiryo, Yu Gothic, MS PGothic, MS Gothic, Yu Mincho, MS PMincho, MS Mincho,明顯不是我要的。

    當然這只是猜測,我不是很肯定猜的對不對,但要解決這個問題只要把我的 Noto Sans CJK JP 放到這個設定值的開頭就完成了。

  • 死了但也沒死

    記得有一年參加了線上的 Agile Summit,有一軌在看著指南講 Agile 確實有點毛病。

    過了幾年突然想起這件事,去用「agile 已死」當關鍵字找東西,但出現的只有敏捷已死。

    看了一下內容,跟當初在 Agile Summit 的內容相差很多,講的主要是「敏捷」兩個字只有行銷招牌的用途,沒有實際功能,所以該換個名字再來一次。

    這論述明顯是有點問題的。

    如果換個名字能夠推廣其中的價值,那不是表示內容其實沒有問題嗎?

    然而,確實,就我目前跑敏捷的感想,內容依然能帶給你他理想中的方向,理念還是那個改進的理念。但實際上的運作,價值似乎存在於創造一個新名詞,宣稱它是新方法,然後去做早在哪一次回顧會議就決定並早已實行的事,說這個新東西肯定能帶來團隊的新氣象,又或者把去參加了哪個年會哪個教學這件事本身當成一個價值,而不是內容改進來自己的什麼思想,這個思想又怎麼改善運作。

    敏捷不管跑到哪個層面,難道都是名字的戰爭嗎?

    讓我想起好幾年前,RxJS 把十行程式變五十行程式、像邪教一樣流行的時光。

    那東西沒有不好,什麼都要硬套上去並說套上去本身就是救贖,那就是走火入魔了。

  • transitions

    一年多沒發文了,這主機現在感覺只跑機器人而已。

    前幾天發現 Android 弄個動畫效果真簡單,但 Android Nougat 有奇怪的 Bug ,閃來閃去真的煩。

    可以的話就更新到 Oreo 吧!雖然我個人是正在等 XZP 的 Pie 就是了。

  • 意味不明的ADO

    昨天在使用 ADO 元件連 DBF 檔的時候發生了個問題,同一個 select 跑第二次會跳出「未設定唯讀內容值」的錯誤。

    之前碰到是除了 Dataset 以外,把 connection 元件也下 Close 後再跑就會解決,但這次不行,後來是先做其他無關的 select 再重新去做真正要做的 select 就會正常。

    完全不知道為什麼,有請高手幫忙解惑。

  • Nougat 區域語系忽略預設值

    前陣子把 Healing Plurk 裡的 HTML 全部砍掉,用原生 JAVA 取代的時候,順便把語系字串也整理了一次。當時檔案把我習慣的繁體中文台灣正體作為 zh 的預設,另外加上中國簡體zh-rCN、少部份的香港繁體翻譯zh-rHK,所以中文一共有這三個檔。

    然後就爆炸了。

    這樣的設法在 Android 7.0 的全新手機語系管理有 BUG ,在找不到地區的中文字串檔的時候,會忽略 values-zh 下的檔案,直接套用不帶語言的 values 下的檔案。雖然有許多高手提供了不同的程式碼來解決,但實驗過後還不如把 values-zh 的東西複製出來丟到 values-zh-rTW 下面,免得生出奇怪情況的BUG。

  • 召喚機器狼更新

    之前在 Healing Plurk 第4版更新大多工作完成的時候,抽空去改了一下召喚機器狼。

    然而並沒有什麼卯月,因為沒人用。

    本來是依照官方的分享連結作法來做這個 APP 的,但官方一直不支援他們家自己訂出來的東西,造成原來的版本點官方 APP 是一點用都沒有。明明都答應過會做,還都過了一年了。

    總之改了做法,變成分享文字到 APP 上,不要管官方的分享連結了。

  • Runtime Permissions

    在 Android 6.0 裡,新增了一個東西,基本上就是在使用者需要的時候再問使用者要不要提供權限。

    官方提供的教學裡,除了要在 AndroidManifest.xml 定義你需要的權限以外,你需要呼叫 checkSelfPermission 來確定權限是不是有開放,若沒有,使用 requestPermissions,告訴系統你需要要求的權限,接著 Override onRequestPermissionsResult,處理使用者允許或拒絕給予權限之後的動作。

    然而我後來實在很懶,所以寫了一個 class 繼承 AppCompatActivity,主要幫我產生一個 requestCode,再讓 callback 跟請求權限寫在同樣的地方。畢竟我很討厭捲來捲去的。

    Edit:後來的後來,又寫了一個 RequestPermissionsUtil 取代之前的 class。