Python潮流週刊#3:PyPI 的安全問題

你好,我是豌豆花下貓。這裏記錄每週值得分享的 Python 及通用技術內容,部分爲英文,已在小標題註明。(標題取自其中一則分享,不代表全部內容都是該主題,特此聲明。)

文章&教程

1、掌握Python面向對象編程的關鍵:類與對象

介紹類和對象概念,通過示例展示 Python 中的類和對象如何工作,包括定義、實例化和繼承等。文章出自《Python全景系列》,目前已更新七篇。

2、umongo + motor: 構建高效 MongoDB 應用的最佳組合

介紹如何在 Tornado 中集成 umongo 和 motor,實現用異步非阻塞的方式與 MongoDB 進行交互。文章出自《tornado 併發編程系列》,目前已更新六篇。

3、徒手使用 LangChain 搭建一個 ChatGPT PDF 知識庫

演示瞭如何使用 langchain 和 ChatGPT 搭建一個本地的 PDF 知識庫,文中使用了 pdfplumber 處理 PDF 文件、使用 streamlit 繪製 UI 界面。知識庫搭建和使用流程圖如下:

知識庫的工作流

4、Python 真的是靠一個 switch 來執行字節碼的嗎?

一個流行的觀點說:CPython 有一個大switch,會根據不同的 opcode 跳到相應的 case 分支去執行字節碼。文章提出了質疑,最後的結論是:只要 Python 啓用了 computed goto (比如在 Mac 和 Linux 上),字節碼的執行就不依賴 switch。而這個功能在 Python 3.2 中就已是默認開啓的。

5、SQLite 的文藝復興

文章的開頭把我震驚了:“SQLite 源碼有 15 多萬行,但測試代碼和腳本竟有九千多萬行”!文章介紹了 SQLite 的架構,以及多個基於它的開源項目,如 Litefs、sql.js、absurd-sql、postlite、sqlite3vfshttp 等等,回答了爲什麼 SQLite 能在如此多領域有創新的項目出現?

6、八十行代碼實現開源的 Midjourney、Stable Diffusion “咒語”作圖工具

通過 Docker 和 80 行左右的 Python 代碼,實現一款類似 Midjourney 官方圖片解析功能 Describe 的 Prompt 工具。提供了兩個版本的工具,分別支持 CPU 和 GPU 推理使用。

7、像寫 Rust 一樣寫 Python(英文)

分享了從 Rust 中學到的一些編程習慣:使用類型提示、使用數據類代替元組或字典、使用代數數據類型、使用“newtype”、使用構造函數、使用互斥鎖等。總體而言,它們並不是那些“個人喜好式”的編程風格,而是切實能提升代碼健壯性和可維護性的編程經驗。

8、一系列的 Flask 小貼士(英文)這個《Flask Tips》欄目已分享了 58 個使用 Flask 的小知識,另外其作者在最新的博文《我開發 Flask 程序時最喜歡用的庫》中,介紹了 APIFairy、Frozen-Flask、Flask-SQLAlchemy 等 10 個常用的庫。

9、Celery 的諸多問題(英文)

Celery 是一個分佈式任務隊列庫,用於實現異步處理和定時任務等功能。但它有很多“問題”,這篇文章一口氣列出了 15 個,是一份避坑指南。不過,並非所有問題都有解決方案,比如說它 API 接口不夠 Pythonic、沒有類型檢查等,這些就只能“Live with it”了……

10、Python 藉助 Gopy 庫實現調用 Go 包(英文)

作者遇到一個靜態驗證 PromQL 查詢的需求,但沒有可用的 Python 庫。文章介紹了使用 Gopy 將 Go 代碼編譯成 wheel 文件的方法,另外也提醒幾個注意事項,比如對錯誤的處理、操作系統的兼容性問題、調試和測試的問題。

在Python中使用Go包的流程

11、最適用於 Pandas 的文件格式(英文)

使用 Pandas 前需要加載數據,它支持非常多種數據格式,但哪種才最合適呢?文中給出了三個衡量標準(類型支持、磁盤格式、讀寫速率),並測試了三種數據文件(CSV、JSON 和 Parquet),你猜最後的結論是什麼呢?

12、關於 PyPI 的一系列新聞/文章(英文)

PyPI 在 3 月上線了官方博客,5 月初剛宣佈獲得了 AWS 的 14.4 萬美元贊助,用於開設一個新的安全工程師職位。巧的是本週密集出現了幾件與安全相關的事情。

  • 5.21,PyPI 在連續一週受到惡意軟件的侵擾後,臨時暫停了新用戶的註冊及新項目的上傳。(這有一篇文章,提到一則有相關性的新聞,這些惡意軟件可能是趁 ChatGPT 的熱點,通過竊取剪貼板內容從而劫持加密貨幣交易)
  • 5.23,PyPI 宣佈移除 PGP 簽名,因爲近三年上傳的簽名僅有 36% 爲有效的,移除這項功能有利於降低維護成本。(這有一篇文章,使用大量數據和統計圖分析了 PyPI 上糟糕的 PGP 情況)
  • 5.24,PyPI 發了一篇博客,披露 PSF 收到了美國司法部的三張要求提供 PyPI 用戶數據的傳票,在律師的建議下,他們提供了司法部索要的數據,並公開了傳票的相關細節。
  • 5.25,PyPI 發佈《通過雙因素身份驗證保護 PyPI 帳戶》,宣佈在 2023 年底前,PyPI 上的帳戶都必須啓用雙重驗證(2FA),以此提升賬戶的安全性。
  • 5.26,PyPI 發佈《減少 PyPI 中存儲的 IP 數據》,介紹了團隊出於不存儲用戶 IP 的目的而做的一些事情,試圖既要保護用戶的隱私,又能更好地運維管理。

項目&資源

1、CyberWaifu:使用 LLM 和 TTS 實現的聊天機器人

使用 LangChain 作爲 LLM 主體框架,使用 go-cqhttp 進行 QQ 機器人部署,TTS 支持 vits、edge-tts,語言模型支持ChatGPT 和 Claude。

2、FastGPT:基於 openai 搭建的知識庫平臺

技術棧: NextJs + TS + ChakraUI + Mongo + Postgres,支持私有化部署,可以在線體驗。

3、jesth:更具可讀性的數據序列化格式(英文)

文檔將這種新格式與 TOML、YAML 和 JSON 分別做了對比,並詳細展示了在 Python 中的使用方法。

4、trogon:爲 CLI 程序生成友好的用戶界面(英文)

命令行程序本就是無界面的,但是這對於用戶來說不夠友好。這個項目可以生成美觀的界面,用於編輯和運行命令。

友好的用戶界面

5、ipyflow:用於 Jupyter 筆記本的響應式 Python 內核(英文)

可在交互式會話期間,跟蹤符號和單元格之間的數據流關係,支持的功能:顯示執行建議、支持響應式執行、語法拓展、集成了 ipywidgets,等等。

6、solara:一個純 python、React-風格的框架(英文)

solara 可使用 Reacton(純 Python 實現的 React)創建基於 ipywidget 的程序。可用在 Jupyter Notebook,也可以作爲獨立的 Web 程序在 FastAPI 等框架中使用。

7、Python 3.12 的 beta 1 版本已發佈(英文)

3.12 的最終版本計劃在 10 月 2 日發佈,目前發佈了 beta 1 版本,意味着不會再加入新功能。總體而言,這個版本更爲精簡了(刪除了很多函數、類和方法),性能方面也有很多優化。值得一提的是,這個版本雖然引入了 PEP-684(每個子解釋器的獨立 GIL),但需要等 3.13 版本實現 PEP-554(標準庫中的多解釋器)後,才真正的可用。

8、對比 Python 與 Rust 的編程習慣用法(英文)

這是一個有意思的網站,可比較不同編程語言在 300 多項習慣用法上的區別,提升學習效率。我們這裏比較了 Python 和 Rust,在網站首頁可選的語言有 30 種。

Python與Rust的慣用法對比

播客&視頻

1、哈佛大學的 Python 編程入門課程(英文)

哈佛大學計算機科學專業的入門課程,向初學者介紹計算機科學和編程基礎,以及如何使用 Python 進行編程。目前已有 50 萬人參與學習。

2、推薦 10 個最好用的 Django 插件(英文)

這期視頻中,《Django by Example》書籍的作者推薦了 10 個 Django 插件,例如 Django Debug Toolbar、Django REST Framework、Django Channels,等等。

問題&討論

1、Windows 要支持 tar、7-zip、rar、gz 等格式啦?(英文)

來自一則匿名爆料,Windows 要利用開源項目 libarchive 實現對 rar 等格式的支持了。這會是真的麼?

2、構建 API 的最佳語言——TS/JS vs. Python(英文)

從可維護性、優雅性、靈活性和開發速度的角度來看,這兩種語言的 API 開發體驗哪種更好?

贊助&支持

內容創作不易,如果你覺得有幫助,請隨意讚賞買杯咖啡或在愛發電進行支持!如果你喜歡本週刊,請轉發分享給其他需要的同學~

另誠邀贊助者,歡迎通過私信聯繫。

關於週刊

Python 潮流週刊,精心篩選國內外的 200+ 信息源,爲你挑選最值得分享的文章、教程、開源項目、軟件工具、播客和視頻、熱門話題等內容。願景:幫助所有讀者精進 Python 技術,並增長職業和副業的收入。

訂閱方式:Python貓 | RSS | 郵件 | Github | Telegram | Twitter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章