不少朋友都是用 Flask 框架來寫小服務器的,方便又快捷,還能一鍵運行,很舒服。不過,如果你真的想把你的服務部署到服務器上,那你就會發現其實還有一些功課要做,這篇文章裡,我們主要來談談如何將寫好的程序在服務器上變成一個服務而不是終端裡執行的命令。
如果我們用 Python 寫了一個網站應用,那麼它就需要一直運行來監聽 HTTP 請求,如果在終端直接執行
[crayon-6908c5d96[……]
不少朋友都是用 Flask 框架來寫小服務器的,方便又快捷,還能一鍵運行,很舒服。不過,如果你真的想把你的服務部署到服務器上,那你就會發現其實還有一些功課要做,這篇文章裡,我們主要來談談如何將寫好的程序在服務器上變成一個服務而不是終端裡執行的命令。
如果我們用 Python 寫了一個網站應用,那麼它就需要一直運行來監聽 HTTP 請求,如果在終端直接執行
[crayon-6908c5d96[……]
之前我曾經寫過macOS app 實現自動化 notarize 腳本,由於我的輸入法使用微軟的 HockeyApp 進行崩潰統計,所以我還需要把 app 上傳到這裡進行一次“發布”,好讓 HockeyApp 能夠收到對應版本的錯誤統計。
如今,微軟的 HockeyApp 已經更新成了 AppCenter,自動化命令也十分友好,其實這個操作也可以加入到你的自動化腳本里邊,一步到位。
在此之前,我一直是這樣在 macOS 上安裝和使用 pip 的:
|
1 2 3 |
sudo easy_install pip3 pip3 install my_package |
後來,這個方法失效了,變成了這樣:
|
1 2 3 4 |
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py pip install my_package |
終於有一天,pip 提示我它需要更新,於是:
|
1 2 3 4 5 6 7 |
pip3 install --upgrade pip3 ... ... TypeError: 'module' object is not callable |
查詢後,發現原來 Python 是要這樣安[……]
這幾日博客文章又被別人拿去抓取了,雖然後來聯繫站長溝通解決,不過我還是要反思一下自己,文章正文中沒有添加本文鏈接,導致即使被人抓取也無法拿到pingback……
總之,搜索了一通,似乎以前有一個插件可以一步到位(我恰好是那種喜歡一大堆插件的人),叫“Add Post URL”,不過這個插件已經下架了。
這個辦法行不通,只好嘗試代碼級修改了:
這個辦法要求你的主題[……]
在 macOS 上,安裝輸入法一直是一個噩夢,要打開系統輸入法目錄,要把輸入法拖拽進這個目錄,過程中還要輸入密碼,全手動也就罷了,還得重啟後系統才能識別,真的是讓人頭疼的不行。
後來大家逐漸意識到這個問題,落格輸入法也提供了 macOS 標準的 pkg 安裝包。
說是這麼說,但實際上似乎還是有辦法讓系統自動加載輸入法的,比如搜狗就做到了免重啟,安裝後不光不需要重啟系統就能識別,甚至安裝[……]
通常來講,Swift 裡的 String 是和 的NSString 橋接的,比如我曾寫過 NSString 和 String 究竟 有什麼區別 ?,總之這裡我們主要來討論一下,String 的 計數 和 的NSString 的[……]
這篇文章現在已經失效了,因為 Mailgun 不再提供免費額度,且把文中使用的必要功能“收件路由”設置為了高級用戶功能不再免費提供,我換了另一家網站來實現域名郵箱,見:當 Mailgun 不再免費,你如何安置你的域名郵箱?
創建一個網站很容易,但要有一個和自己域名關聯的郵箱地址 域名郵箱,似乎比較麻煩。對於中國站長來說,“QQ 域名郵箱” 似乎是唯一的選擇,當然如果付費使用,那麼使用[……]
Android File Transfer 是個好東西,可以在 macOS 中方便地給安卓手機傳輸文件等等,但有一點不好就是這東西會在後台駐留進程來監控usb插入,讓人很不爽。
尤其是在插入 Android 設備時,自動彈出窗口,還連接失敗(因為你來不及在手機上點授權),十分討厭。
要禁用自動啟動,首先打開 活動管理器,在裡邊搜索 Android File Transfer Agent[……]
一直以來,我對倉頡和速成這對難兄難弟是很有意見的……網上流傳的碼表版本繁多,但名字都叫“倉頡”,和五筆對比起來,好歹五筆還分個 86 和 98,再新一點還有 新世紀 等等,但倉頡沒有,不論什麼版本的倉頡,都叫“倉頡”。
這就很尷尬,每個人用的倉頡碼表都不一樣,但不一樣在哪裡,他自己也不知道。
總之, 全字庫(cns11643) 提供了一種官方的通用的中文編碼,本來這個東西是用來彌補 utf8[……]
要做一款移動設備上的軟鍵盤,那麼怎麼處理用戶的點擊位置,就是你遇到的第一個難題,在這個問題上,我也走了很長的路。
我把落格輸入法開發以來的觸控邏輯大致分類為三個階段,現在分別來講講設計思路,希望能夠對你有所幫助。
顯然,對於一個初學者來說,沒什麼比系統控件更好用的了,功能全,速度也不慢,業務邏輯完善,所以,落格輸入法的第一代消息處理就是用的[crayon-6908c5d9[……]
在使用 Android 設備時,如果你購買的是一台中國區單獨發行的定製版本 Android 設備,那麼很有可能你的設備中並不內置谷歌套件,比如 Play Store。
這時候我們就需要自己安裝它,安裝的辦法有很多,這裡不再贅述。總之,一但你安裝好,就會發現,即使開了代理,Play Store 也有可能在登錄後無法正常加載內容(登錄是正常的)。
此時會顯示錯誤:DF-dferh-01[……]
新出的 Wireguard 很多人都想嘗試,這裡 VPN 到底適不適合用來翻牆我們先不討論,先來看看怎麼快速在 vps 上起一個 wireguard 服務。很多人聽說這個服務配置起來特別複雜,所以望而卻步,實際上很簡單。
這裡我用最新的 ubuntu 18.04.2 來配置,首先你得有一個 vps,創建好後最好按照我的 購買了VPS之後你應該做足的安全措施裡配置ssh的證書訪問。
在開發落格輸入法 macOS 的時候,我遇到了一個比較奇葩的問題,這個問題一直困擾我到現在——當有些地方需要垂直居中顯示一排文字的時候,如何讓這些字真正的“居中”?
乍看之下這似乎沒什麼道理,垂直居中嘛……等等,macOS 上的 的NSTextField 還真沒有辦法讓你的一行文字垂直居中……🤷♂️
後來,我[……]
作為 iOS 開發者的你,肯定是知道 Promo codes 這個東西的,也就是我們常說的兌換碼。(當然,作為 iOS 用戶興許你也對此不陌生)
這次,我們就來看看,這個看似無窮無盡的兌換碼,到底有哪些限制。
蘋果後台生成的兌換碼有效期一直是一個謎,雖然官方的說法的 4 週,也就是 28 天,但實際上如果這期間你的 app 更新了,那麼兌換碼很可能就會失效[1]。
&國家統計局[……]
在使用 Swift 進行開發落格輸入法時,我遇到了一個很有意思的問題——去重。
眾所周知,輸入法的候選在計算出來後總會有可能是重複的選項(比如碼表和詞庫中都有某個詞,也許他們編碼不同,但字是一樣的之類),這時候就需要去重,但又要保持候選的先後順序不變。
如果你去網上找,那麼你可能找到的是這樣的:
|
1 2 3 4 5 |
extension Array where Element : Hashable { var unique: [Element] { return Array(Set(self)) } } |
來源:[……]