Send Reduced 雖然只有區區 52 KB,但是卻有兩個非常好用的功能——壓縮照片和清理 Exif 數據。現在安卓手機照片越來越大,動輒一張照片就八九 MB,但是選擇 85% 的壓縮比壓縮後,圖片大小就只剩下六百多KB,肉眼也沒有可見的畫質損失,很適合發送給聯繫人和社交媒體。
不過也有一個小小缺陷,就是壓縮後的最大尺寸是個選項列表,最大的選擇是 2560,如果你一定要選擇大於此尺寸的圖片,就不能用它不行了。
教程什么的
Send Reduced 雖然只有區區 52 KB,但是卻有兩個非常好用的功能——壓縮照片和清理 Exif 數據。現在安卓手機照片越來越大,動輒一張照片就八九 MB,但是選擇 85% 的壓縮比壓縮後,圖片大小就只剩下六百多KB,肉眼也沒有可見的畫質損失,很適合發送給聯繫人和社交媒體。
不過也有一個小小缺陷,就是壓縮後的最大尺寸是個選項列表,最大的選擇是 2560,如果你一定要選擇大於此尺寸的圖片,就不能用它不行了。
截图瓷贴 Screenshot tile(NoRoot)是一個方便的截圖軟件,它可以在快速設置面板(從屏幕頂端下滑即出現)中添加一個截圖的按鈕。我的手機用電源鍵和音量鍵截圖會有咔嚓一聲快門音,但是用這個軟件就不會。還可以設置爲先選截圖區域再執行截圖動作,這樣只截取重點區域而防止頂部狀態欄泄露隱私。看介紹還可以和一些自動化軟件聯動實現連續截圖,這個我就沒試過了。截图瓷贴要求安卓 7 以上的系統。
Ecosia 是一個總部位於德國柏林的搜索引擎,他們將至少80%的利潤捐贈給非營利組織,用於在全球範圍內種植當地原生樹木。Ecosia 是 B Lab 認證的公益企業。他們宣稱實踐了碳吸收,使用再生能源為伺服器供能,保持財務透明,還保護用戶的隱私。
我試用了兩天,感覺還不錯,也安裝了他們的火狐插件,打算繼續使用。它的結果是從 Bing 返回的,一般資訊也都能順利找到,由於 Bing 很懂中國,所以它不會把維基百科的鏈接放在前面。順帶一提,同是使用 Bing 搜索結果的 DuckDuckGo 最近又可以直接訪問了。
searx 是一款元搜索引擎(對其他搜索引擎的結果進行處理後返回結果),這樣其他搜索引擎便不易獲得搜索者的個人隱私。如果不想自己搭建,也有很多在線實例可供選擇。
在沒有遇到 Ecosia 之前,有用過一段時間 searx,搜索結果質量不是很穩定,但還是可以作爲一個不錯的備選的。它有兩個特點挺好的,一個是如果搜索到的頁面已經被互聯網檔案館所保存,則可以去看存檔的網頁;另一個是對於維基百科詞條可以在搜索頁就展示概覽。
Startpage 在過去很長一段時間裏都是我的首選搜索引擎,它最大的特定就是保護用戶隱私。由於它的搜索結果來自谷歌,所以搜索質量幾乎等同谷歌。但是後來它不能從中國直接訪問了。
如果有興趣,可以讀下這篇關於搜索引擎的文章:A look at search engines with their own indexes
除了谷歌翻譯之外,DeepL 翻譯器(註:2021-07-03日發現無法直接訪問了)也是一個不錯的選擇。
但是我今天發現了另一個在線翻譯——LibreTranslate。下面是一些英文翻中文的測試:
English | 中文 |
---|---|
I like you | 主席先生 |
Do you like me? | ? |
What a lovely day, I hope the good weather continues. | 我的那一天爱好一天,我希望那里的天气继续发生。 |
I have never used such a stupid translator! | 我从未使用这种流行病的变压器! |
如你所見,用這個 LibreTranslate 翻中文現在就是純搞笑。希望有一天它能學會真正的翻譯吧。最後無論使用哪一款在線翻譯都不能掉以輕心,即使是大廠產品也經常會翻車。
本文更新於 2021/07/03。
UpUp 是個很小(2.5 KB)的 Javascript 庫,但卻可以方便的實現網站的離線訪問。我之前有一個小項目,PHP 的後端和頁面,另外藉助 Apeche Cordova 用 HTML 實現了安卓的客戶端以供離線使用。最近用 Django 重新寫了,藉助 UpUp 的離線頁面,我不用爲了離線使用而再去生成一個安卓應用。
一般的網站,要使用 UpUp 是非常簡單的,只需要在網站的頂層文件夾引入對應的庫即可,但是 Django 的靜態文件一般是放在 static 下的,要想在項目根目錄下提供它們,可以這樣設置。
#項目的 url.py 文件 from django.urls import path ... from . import views urlpatterns = [ ... path('upup.min.js', cache_page(60 * 60 * 48)(TemplateView.as_view(template_name="site/upup.min.js", content_type='application/javascript', )), name='upup.min.js'), path('upup.sw.min.js', cache_page(60 * 60 * 48)(TemplateView.as_view(template_name="site/upup.sw.min.js", content_type='application/javascript', )), name='upup.sw.min.js'), ]
然後將 upup.min.js 和 upup.sw.min.js 放在項目的模板目錄裏,比如 mysite/site/templates/site/ 中。
最後在 HTML 頁面中引用並設置需要離線的文件即可。
... <script type="text/javascript" src="{% url 'upup.min.js' %}"></script> <script type="text/javascript" src="{% static 'site/js/jquery-3.6.0.min.js' %}"></script> <script> UpUp.start({ 'content-url': '/site/', 'assets': ['/static/site/js/jquery-3.6.0.min.js', '/static/site/js/site.js', '/static/site/css/site.css'] }); </script>
離線站點調試的過程中遇到的另外一個問題是,離線站點必須是 HTTPS 類型的加密頁面,但是本地配置 HTTPS 又略嫌繁瑣,其實只要再 Chrome 裏添加例外(chrome://flags/#enable-site-per-process)即可。火狐我還不知道要怎麼添加,最近安卓火狐的一系列更新都不盡人意,實在是有些令人擔憂。
藉助手機的麥克風來錄製心跳,然後使用 MananAgarwal 訓練的 Heartbeat-Classifier 模型來判斷心跳是否異常。經過測試,我和 Emanon 的心跳都是正常。我也有嘗試使用其他項目的實驗數據來測試這個模型,對於「二尖瓣迴流」和「主動脈狹窄」的異常心跳都成功的識別了出來。不過它畢竟只是一個人工智能模型,如果有不舒服,還是應該儘早去看醫生。
這是一個 python3 的 tensorflow 項目。項目本身並不大(9 MB)但依賴大概有 600MB ,所以推薦使用虛擬環境來安裝。
#安裝依賴 pip install tensorflow keras librosa #下載項目 git clone https://github.com/MananAgarwal/Heartbeat-Classifier.git #測試運行 cd Heartbeat-Classifier python testing.py heartbeat-to-classify.wav #稍等片刻應該會成功輸出 Normal heartbeat confidence: 0.9638266
由於我不是蘋果手機用戶,所以無法推薦和測試適合的錄音應用。但是該模型的訓練數據中有用到蘋果手機(用iStethoscope Pro)錄製的心跳音頻,所以蘋果手機應該也是沒問題的。我的安卓手機使用的是 Audio Recorder,一個開源免費又小巧的錄音軟件(5.6 MB)。設置裏只需要把編碼格式改爲「.wav」,其他的保持不變即可滿足我們的需要。
找到手機的麥克風位置,一般都在手機的底部。找一個相對安靜的地方,點擊開始錄音(爲了避免誤觸屏幕,可以按一下電源鍵把屏幕關閉),把手機的麥克風的位置貼近心臟的位置,按住15秒左右,然後打開手機,停止錄音。我的建議是手機直接接觸皮膚來錄音,可能會獲得更好的音質。但是我給 Emanon 錄音的時候是隔着 T 恤的,倒也沒有影響的測試結果。
錄好的聲音文件默認保存在 /sdcard/Android/data/com.github.axet.audiorecorder/files/recordings 中,可以通過 USB 線或 Material Files 文件管理器將文件傳輸到電腦上。
最後使用上面的測試命令進行檢測,即可得到預測的心率狀態:Normal(正常)或 Abnormal(不正常),以及預測的信心值 confidence。
該模型由博拉理工学院(印度皮拉尼)的 Manan Agarwal 和 Ankita Chakravarty 根據 The Classifying Heart Sounds Challenge 2011的數據集訓練而來。模型的訓練準確度爲 89.73,測試準確率爲 84.04。下面的文字摘自他們的論文說明:
我們的目標是提供一個可靠,快速且低成本的系統,讓未經培訓的一線衛生工作者或任何具有互聯網訪問權限的人都可以使用,以幫助確定是否應該將受試者推薦給專家診斷,尤其是在訪問臨床醫生和專家比較困難的地區。這也將有助於早期診斷心血管疾病,並大大降低這些死亡的潛在危險因素。
中文繁簡轉換工具用上 Bootstrap 後漂亮多了,使用 JavaScript 來請求表格減少了頁面的跳轉,用起來也比較方便。於是產生一個新需求就是想統計下「轉換」按鈕被點擊了多少次。關於自定義事件目標的具體介紹,可以參考 Plausible 的官方文檔Custom event goals,我這裏只是羅列下具體步驟。
確保 Plausible 配置有下面的第二行
<script async defer data-domain="<yourdomain.com>" src="https://plausible.yourdomain.com/js/plausible.js"></script> <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
在需要統計的地方執行這行 JavaScript
plausible('my_event');
打開 Plausible 後臺,在左上角的域名處選擇 Site Settings。在 Goals 區域點擊 + Add goal。然後 Goal trigger 選擇 Custom event,Event name 要輸入 JavaScritp 請求的參數,這裏就是「my_event」。最後點擊 Add goal 就完成了。