使用 xcode-install 來管理 Xcode 版本

我們都知道,在使用 Python 的時候有 pyenv,使用 ruby​​ 的話有 rbenv,都能方便地控制和管理編程語言環境的版本,那麼,有沒有什麼方法,能讓 Xcode 也像這樣切換版本呢?

每次 Xcode 發布更新,更還是不更成了一個問題,下載難,還不能斷點續傳,又不能用第三方工具下載,真的是非常要命……就更別提多個版本時候的兼容問題了。

使用 xcode安裝,一次性[……]

點擊跳轉以繼續閱讀

clang: 警告: libstdc ++已棄用; 遷移到具有OS X最低部署目標的libc ++ 10.9

平時,你會在安裝某個 Python 包時遇到這個錯誤,這個包肯定是一個包含了 C++ 代碼的包。

這是由於 macOS 更新後出現的不兼容,一般來說,這個包的維護者應該已經對這個特殊情況做出了兼容:

這樣在 macOS 上就可以順利編譯通過了。

但如果你使用的是 PyPy,那可能即使維護者包含了這句話,你也無法成功安[……]

點擊跳轉以繼續閱讀

Python 實時檢測自身內存佔用

最近在做文本統計,用 Python 實現,遇到了一個比較有意思的難題——如何保存統計結果。

直接寫入內存實在是放不下,十幾個小時後內存耗盡,程序被迫關閉。如果直接寫入數據庫吧,每次寫入又太慢了,本來就十幾個小時了,這樣下去就要往星期上數了,也不是個辦法。

最後,我想到了一個兩者兼顧的方案——用內存做緩衝,達到一定量之後一次性將當前所有數據合併到硬盤裡。

但這樣就有一個閾值,如何確[……]

點擊跳轉以繼續閱讀

蘋果瀏覽器 13 去除 Google 搜索結果跳轉

使用 Xcode 創建一個新的 Safari 插件項目

在Safari中 9 以前,我們只要下載一個 safariextz 文件雙擊它,就能讓 Safari 加載這個插件了。好處肯定是很方便,但也不太安全(隨處都能下載到的插件,很可能是被篡改過的)。

所以後來,Apple 就不再允許用戶直接下載插件給 Safari 安裝了,必須通過 Mac Apple Store 下載 App,然後 App 里以插件的形式提供 Safari 插件,配合 App[……]

點擊跳轉以繼續閱讀

避免 WordPress 被用作反射放大攻擊

之前我寫過一篇文章,使用 fail2ban 防止 Bind9 被用於 DNS 放大攻擊,萬萬沒想到,原來 WordPress的 本身也可以用來進行放大攻擊,原理就是它的 pingback的 機制。

Pingback 是 Wordpress 的一個網站之間互相通知工具,比如 A 博客引用了一個 B 博客文章的鏈接,那麼 Wordpress 就可以自動幫你通知 B 博客,告訴博主你引用了他的文章。

這[……]

點擊跳轉以繼續閱讀

iOS 正確設置 status bar style 顏色

在開發 iOS App 時,很多應用都要根據當前 App 內容顏色來設置 iOS 系統狀態欄 的配色,黑色或者白色——尤其是在 iOS 13 系統支持了黑色模式後。

平時,別人會告訴你這麼做:

但這會觸發警告: 不推薦使用 iOS版 9 。那麼有沒有其他辦法呢?有,官方推薦的寫法是[……]

點擊跳轉以繼續閱讀

當 Mailgun 不再免費,你如何安置你的域名郵箱?

之前我寫過一篇文章:“ 使用 Mailgun 創建你的免費域名郵箱Mailgun 有一個很有意思的功能就是收件路由,通過這個功能設定,你可以將任意發來的郵件轉發到你設定好的郵箱當中,這樣就不需要為每一個域名設置一個郵箱服務了,只需要通過 Mailgun 就可以將對應的郵件轉發的需要的郵箱——畢竟,平時我們可能也就使用這些域名郵箱做個基本的驗證。

最近,Mailgun 不再免費了,免費用戶[……]

點擊跳轉以繼續閱讀

Swift Python 互通 Json 數據簽名

最近很流行自簽證書進行 HTTPS 解密,然後就有不少人通過修改蘋果的內購回執實現對 App 的破解。實際上驗證購買應該是 App 連接服務器,服務器來和蘋果的服務器進行通信,然後將結果發送給 App 的——但不少開發者(包括個人開發者以及企業開發者)懶得去專門維護服務器,所以直接用 App 和蘋果的服務器進行通信,這就給中間人攻擊提供了機會。

中間人攻擊,就是說當 A 和 B 進行通信[……]

點擊跳轉以繼續閱讀

斯威夫特調試EXC_BAD_ACCESS中的AppDelegate

 

不少人在開發中都會遇到 EXC_BAD_ACCESS ,很遺憾,這一次 Xcode 不會給出任何詳細的解決方案。

通常來說,這是由於內存錯誤造成的。簡單來說就是你創建了對象 A,但在後來訪問的時候,內存裡 A 這塊區域已經被系統挪做他用了,比如放了對象 B 在這裡——你的 A 只剩下指針,實際內容已經不存在了。

這時就會出現類似這樣的崩潰:
[蠟筆672[……]

點擊跳轉以繼續閱讀