分類
其它

【轉載】一次性紙杯會往你的咖啡裏釋放微塑料

昆士蘭大學研究人員發現,用於外帶咖啡及其他飲料的一次性紙杯,在接觸熱液體時會釋放數百萬個微塑膠顆粒。

昆士蘭大學昆士蘭環境健康科學聯盟的一個研究團隊,檢測了內襯化石燃料基聚乙烯(PE)或可生物降解替代材料聚乳酸(PLA)的一次性紙杯。

Elvis Okoffo 博士表示,研究發現兩種類型的紙杯都會釋放塑膠顆粒,但使用 PLA(可生物降解塑膠)內襯的紙杯釋放量高出 12 倍。

Okoffo 博士表示:「全球每天有數以百萬計的人使用一次性紙杯飲用咖啡、茶及其他熱飲。」

「紙杯主要由紙製成,並不代表它不含塑膠,因為許多紙杯都含有一層薄薄的塑膠內襯,以提供防水性和結構完整性。」

「我們的研究結果顯示,塑膠內襯紙杯在接觸熱水時,會釋放大量微米及奈米尺度的塑膠物質。」

「在我們的實驗中,PLA 內襯紙杯釋放的顆粒總質量約為 PE 內襯紙杯的 12 倍。」

研究人員測得,PLA 內襯紙杯每毫升約釋放 430 萬個奈米顆粒,而 PE 內襯紙杯每毫升則釋放約 270 萬個顆粒。

這些奈米顆粒的厚度約為人類頭髮的千分之一。

Okoffo 博士表示,這項研究為日益增加的證據提供了進一步支持,顯示用於食品儲存和製備的新型塑膠產品,可能是人體透過攝入接觸塑膠物質的一個重要、卻經常被忽視的來源。

「這並不意味著人們就應該停止使用紙杯,也不代表 PLA 本身就不安全。」

「但是,塑膠顆粒對人體健康的影響目前尚不清楚,而我們知道,塑膠中的化學物質並不是供人攝入的。」

「用於食品接觸產品的材料,不僅需要根據其環境永續性進行評估,也需要評估其在日常使用過程中的顆粒釋放特性。」

「這項研究填補了一項重要的知識空白,揭示以塑膠材料作為內襯的一次性紙杯可能如何增加人們日常接觸塑膠的程度。」

Okoffo 博士表示,應向消費者提供有關紙杯內襯材料的資訊,並呼籲監管機構考慮制定安全指引或要求產品加註警示標籤。

「政策制定者和監管機構可以考慮,對微塑膠及奈米塑膠釋放量的檢測,是否應成為食品接觸材料安全評估的一部分,尤其是為熱飲而設計的產品。」

「產品製造商也可以考慮開發在接觸熱液體時釋放較少塑膠顆粒的紙杯內襯。」

「透過更完善的產品設計、更好的標籤資訊以及提高公眾意識,我們可以幫助減少進入人體和環境中的塑膠數量。」

閱讀研究全文,刊載於 ACS Food Science & Technology

英文原始報道來自昆士蘭大學官網:Takeaway cups release microplastics into your coffee

分類
其它

小磁鐵拯救 Kindle 電源鍵

我有一個 Kindle Paperwhite (7th generaton),使用很多年後電源鍵逐漸凹陷,現在喚醒越來越困難。搜索後發現可以買一個 Kindle 翻蓋保護套,保護套一般會內置一塊小磁鐵與 Kindle 右下角的磁場傳感器感應實現喚醒與關閉。然後我發現之前從廢棄耳機裏拆出來的小磁鐵也可以喚醒 Kindle,立省 20 塊。

分類
說說

260818

In an unfree country, whenever you spark an interesting idea—be it commercial or charitable, for-profit or non-profit, individual or collective, selfish or altruistic—a careful look at the policies will likely reveal that it is already illegal.

在失去自由的土壤裡,任何一顆有趣的種子都難以見光。當你產生一個絕妙的構想,無論它是出於商業或公益,是為己還是為人,只要對著條文細細審視,便會無奈地發現:它早已被定義為非法。

我熱愛自然,但受限於《中華人民共和國自然保護區條例》

分類
程序

一個簡單的 base64 轉換

在本地瀏覽器中使用 JavaScript 完成轉換,源碼在下面:

function encodeBase64() {
    const input = document.getElementById('base64-input').value;
    const output = document.getElementById('base64-output');

    if (!input) {
        output.value = '';
        return;
    }

    try {
        // UTF-8 text → Base64
        const bytes = new TextEncoder().encode(input);

        let binary = '';
        bytes.forEach(byte => {
            binary += String.fromCharCode(byte);
        });

        output.value = btoa(binary);

    } catch (error) {
        output.value = 'Error: Unable to encode the text.';
    }
}


function decodeBase64() {
    const input = document.getElementById('base64-input').value.trim();
    const output = document.getElementById('base64-output');

    if (!input) {
        output.value = '';
        return;
    }

    try {
        // Base64 → binary
        const binary = atob(input);

        // Binary → UTF-8 text
        const bytes = Uint8Array.from(
            binary,
            char => char.charCodeAt(0)
        );

        output.value = new TextDecoder('utf-8').decode(bytes);

    } catch (error) {
        output.value = 'Error: Invalid Base64 data.';
    }
}


function copyBase64() {
    const output = document.getElementById('base64-output');

    if (!output.value) {
        return;
    }

    navigator.clipboard.writeText(output.value).then(() => {
        alert('Result copied to clipboard.');
    }).catch(() => {
        output.select();
        document.execCommand('copy');
        alert('Result copied to clipboard.');
    });
}


function clearBase64() {
    document.getElementById('base64-input').value = '';
    document.getElementById('base64-output').value = '';
}
分類
陰陽怪氣

260812

掃黑除惡,守護你我平安。黨中央部署開展爲期一年的深化掃黑除惡專項鬥爭,依法懲處涉黑涉惡違法犯罪,保障人民安居樂業、社會安定有序、國家長治久安。廣大羣衆可以通過全國掃黑辦12337舉報平臺等多種方式舉報黑惡犯罪。全國掃黑除惡專項鬥爭領導小組

分類
Linux

在 Xfce 的狀態欄顯示網速

理想情況下,如果要在 Xfce 的狀態欄(Panel)顯示網速,只需要在狀態欄新增項目,選擇自帶的 Network Monitor 就可以了。但是某次升級內核後(5.14.0),/proc/net/dev 就不在有網速數據,導致從那裏讀取網速的 Network Monitor 和 vnstat 都無法工作。vnstat 可以統計過往流量的數據,不過也可以在路由器上查看,所以就先不管了。狀態欄的實時網速則可以通過下面的 Python 腳本來顯示。

#安裝依賴
sudo dnf install xfce4-genmon-plugin python3-gobject gtk3
#測試依賴
/usr/bin/python3 -c "import gi; print('PyGObject OK')"
#確認網絡數據
ethtool -S wlp1s0 | grep -E 'rx_bytes|tx_bytes'

#新建腳本目錄
mkdir -p ~/.local/bin ~/.cache/wifi-netload
nano ~/.local/bin/wifi-netload.py
#!/usr/bin/python3

import os
import re
import time
import subprocess

INTERFACE = "wlp1s0"

CACHE_DIR = os.path.expanduser("~/.cache/wifi-netload")
CACHE_FILE = os.path.join(CACHE_DIR, "counters")

os.makedirs(CACHE_DIR, exist_ok=True)


def get_counters():
    try:
        result = subprocess.run(
            ["/usr/sbin/ethtool", "-S", INTERFACE],
            capture_output=True,
            text=True,
            timeout=2,
            check=True,
        )

        rx_match = re.search(
            r"^\s*rx_bytes:\s*(\d+)",
            result.stdout,
            re.MULTILINE,
        )

        tx_match = re.search(
            r"^\s*tx_bytes:\s*(\d+)",
            result.stdout,
            re.MULTILINE,
        )

        if not rx_match or not tx_match:
            return None

        return int(rx_match.group(1)), int(tx_match.group(1))

    except (subprocess.SubprocessError, OSError, ValueError):
        return None


def format_rate(bytes_per_second):
    """Format speed using fixed-width decimal units."""

    kb = bytes_per_second / 1000

    if kb < 1000:
        return f"{kb:6.1f} K"

    mb = kb / 1000
    return f"{mb:6.2f} M"


def load_previous():
    try:
        with open(CACHE_FILE, "r") as f:
            parts = f.read().split()

        if len(parts) != 3:
            return None

        return (
            int(parts[0]),
            int(parts[1]),
            float(parts[2]),
        )

    except (OSError, ValueError):
        return None


def save_current(rx, tx):
    try:
        tmp = CACHE_FILE + ".tmp"

        with open(tmp, "w") as f:
            f.write(f"{rx} {tx} {time.monotonic()}\n")

        os.replace(tmp, CACHE_FILE)

    except OSError:
        pass


def main():
    current = get_counters()

    if current is None:
        print("0.0 KB/s  0.0 KB/s")
        return

    rx, tx = current
    previous = load_previous()

    save_current(rx, tx)

    if previous is None:
        print("0.0 KB/s  0.0 KB/s")
        return

    old_rx, old_tx, old_time = previous

    elapsed = time.monotonic() - old_time

    if elapsed <= 0:
        print("0.0 KB/s  0.0 KB/s")
        return

    # Handle counter resets.
    rx_delta = max(0, rx - old_rx)
    tx_delta = max(0, tx - old_tx)

    rx_rate = rx_delta / elapsed
    tx_rate = tx_delta / elapsed

    print(
        f"{format_rate(rx_rate)} "
        f"{format_rate(tx_rate)}"
    )


if __name__ == "__main__":
    main()

chmod +x ~/.local/bin/wifi-netload.py
#手動執行
~/.local/bin/wifi-netload.py
#應該顯示出類似   1.55 M   24.2 K

最後在 Xfce 狀態欄添加項目,選擇 Generic Monitor。命令欄填 /home/42/.local/bin/wifi-netload.py, 刷新頻率選 1,字體需要選一個等寬字體,不然網絡變動時會一跳一跳的,比如 Source Code Pro Bold 10。這樣就又能在狀態欄看見實時網速了。

分類
說說

260727

由於住宅區民宿設施因噪音及垃圾處理等頻繁引起糾紛,日本觀光廳已向全國各地方政府發出通知,允許其透過修改條例實質上禁止民宿營業。

自2018年《民泊新法》開始實施以來,在住宅區經營民宿得以解禁。伴隨外國旅客的增加,民宿市場急劇擴大,然而與此同時,因噪音和垃圾處理等引發的社區糾紛也不斷發生。

為此,觀光廳於7月15日向全國各地方政府發出通知,允許其可透過修改地方條例,將法律所規定的民宿營業天數每年最長「180天」的上限設定為「0天」。

——NHK:《日本觀光廳允許地方政府實質上禁止民宿營業》

剛剛被樓下鄰居和小孩高聲叫喊氣到的我去下載了《醜陋的中國人》。如果你也要讀,建議讀臺灣原版,因爲大陸版有刪減。