忽然有一天,”我還年輕“已不能再成為犯錯的藉口

回想我16歲那年,剛開始嘗試做自己的一點小生意的時候,每當搞砸了事情,就會安慰自己:沒關係,我才16,又是一個學生,往後日子還長,就當學習了。

從心理上來説,我始終覺得自己有退路,當前的錯誤不算什麼。

再比如18歲那年剛嘗試靠自己掌握的編程知識實現經濟獨立的時候,即便頓頓啃饅頭甚至去挖野菜也不會感到困難或恐懼。因為我深知我的父母甚至老師會在我撐不下去的時候幫我兜底。我始終有退路,況且我的同學又都在吃家裏的生活費,或是靠着做重複性勞作的兼職來換取一筆收入。而我只是在嘗試、在挑戰、在遊戲,我的每一次嘗試既不會對我造成災難性後果又可讓我領先周圍人。

這種”我還年輕、我還有退路、還有人給我兜底“的思想讓我無所畏懼,但如今,什麼都變了。

有一天我突然意識到,如果我在30歲之前撲騰不出什麼結果的話,那我此生可能就要定格了,而現在,21歲業已過半。留給我的只剩下八年多點的時間,這一瞬間,焦慮與恐懼襲來,從此我有了思想負擔。

這一思想負擔對我既有利又有害。若説它有利,它確實在督促我盡力前行;若説它有害,它也確實影響了我的決策判斷——始終在瞻前顧後,並且變得內心敏感,害怕犯錯。

利害相比較一下,我覺得害處或許更大——這樣的負擔既會讓我畏畏縮縮不敢嘗試,也會讓我左右搖擺拿不定主意,這些品質將註定讓我一事無成。

想想自己之所以認為30歲之後人生便定格了,也正是因為隨着年齡的增長,就不可避免的要被與周圍人比較,以及結婚生子後帶來的財務負擔讓這一切更雪上加霜,最終整個人的決策風格都會偏向保守至上。

保守也就代表着失去了主動性。我覺得不努力或許沒什麼大不了的,但如果失去了主動性,也就失去了一切。

於是擺在面前的是一個矛盾的局面:既要清楚的認識到自己是個窮人,就本身的資源來講無依無靠,以及自己30歲之前如果不能積累下豐厚的資源可能此生也就了結。還要在認清這些現實的情況下保持激情和無負擔的思想。

這很難。也或許是我目前心智還不太成熟,我仍然無法取得一個好的平衡。

我現在需要一次大一點的“成功”來打破這種僵局,這個“成功”得讓我在未來一段時間至少加大或保持對同齡人的領先,以使我在那段時間裏卸下或減輕思想負擔 。

我知道與他人比較是不對的,但就像前面説的,也許心智還不十分成熟,我還做不到完全保持自己的節奏而不受外部因素影響。如果我至少比周圍人強,哪怕距離最終的目標仍很遙遠,我相信我的心理負擔也會減輕不少。

我寄希望於在搞的litepress.cn可以在上線後得到圈內的認可,並在今年下半年拿到融資。

如果我是對的,那事情就會打開一個突破口,當思想負擔被卸下,潛力才能被激發。

bbpress批量刪除垃圾帖子

當垃圾帖子上萬之後,在WordPress後台刪除顯然就不現實了,於是直接執行SQL刪除之:

DELETE FROM wp_posts WHERE post_status='pending'; # 刪除所有待審核文章,因為bbpress是在post表裏保存的帖子內容,所以此操作會刪掉待審核的帖子
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL; # 刪掉孤立的帖子元信息
DELETE tr FROM wp_term_relationships tr LEFT JOIN wp_posts wp ON wp.ID = tr.object_id WHERE wp.ID IS NULL; # 刪掉孤立的term綁定信息

WordPress文章數量10萬以上時文章編輯器卡死的解決方案

這個問題來自對post_meta表的一個慢查詢:

SELECT DISTINCT meta_key 
FROM wp_postmeta 
WHERE meta_key NOT BETWEEN '_'
AND '_z' 
HAVING meta_key NOT LIKE '\\_%' 
ORDER BY meta_key 
LIMIT 30

該查詢由WordPress文章編輯器的Meta Box功能發起。

該問題的原因是MySql中普通索引的長度最長為767字節,如果使用的是utf8mb4編碼的話,那麼總的字符長度就是767/4,約為191,而WordPress的post_meta表的meta_key列的字符長度則是255。

所以此時因為meta_key的長度超範圍,索引並未生效。解決方案可以選擇把數據庫編碼更改為utf8或是將meta_key的長度更改為191,再或者是禁用掉Meta Box功能。

當然,提醒一句,這些更改都可能會破壞兼容性,所以更改前請務必做好測試工作。

最後,導致性能問題的原因千奇百怪,具體情況要具體分析再針對性解決。so,本文所述方案不一定對你有用,但可提供一個思考的方向。

利用微軟提供的安裝盤製作工具快速製作Win10安裝盤,免除到處找鏡像的煩惱

微軟官方下載地址:https://go.microsoft.com/fwlink/?LinkId=691209

跟着提示走即可,不再需要自己去下載ISO文件,該工具會自動為你下載最新的版本並燒寫到U盤中。因為是微軟官方出品的,所以下下來的系統也是最原汁原味的。

工具截圖:

xpath排除節點

不匹配含有指定子節點的節點

e.g:不匹配子節點含有 ‘i’ 節點的 ‘p’ 節點

response.xpath('//p[not(i)]')

不匹配含有指定屬性的節點

e.g:不匹配子節點含有 ‘class’ 屬性的 ‘p’ 節點

response.xpath('//p[not(@class)]')

排除指定節點

e.g:排除名為style的節點

response.xpath('/*[not(self::style)]')

Jackson解析數據為空時字段類型產生變化的JSON字段

對於PHP、Python這類動態語言編寫的API接口,其返回的JSON經常有這種情況:

1、字段有數據時:

{
    "name":"Test",
    "tags":{
        "caches":"caches",
        "caching":"caching",
        "feeds":"feeds",
        "late-caching":"late caching",
        "speed":"speed"
    }
}

2、字段無數據時:

{
"name":"Test",
"tags":[]
}

可以發現,tags字段有數據時其類型是個集合,而當tags字段無數據時其類型則是個數組……

這就導致無法準確的編寫用於映射數據的實體類。

為了應對這種情況,可以在注入Bean時為Jackson配置選項將為空的字符串、數組都映射為空對象(NULL)。

代碼:

mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);

Kotlin使用Java反射Api操作KClass時遇到的變量作用域問題記錄

Kotlin本身帶的反射Api依據官方文檔來看貌似是殘缺的,想實現完整的反射支持只能調用Java的反射Api,類似下面這樣:

val test = Test::class.java

這樣就可以通過test對象調用Java的反射Api了,這樣在操作Java Class的時候是沒問題的,但是操作Kotlin的KClass就會出現變量作用域的問題……

問題的根源在於Kotlin代碼在翻譯成Java代碼後無論你先前聲明的成員變量的作用域是公有還是私有,都會被翻譯成私有,並輔以一堆Get、Set方法用來操作該變量。這似乎是挺符合Java世界的標準的,在Kotlin下訪問一個變量會自動調用其Get、Set方法。但在反射的這個應用場景下就會出問題。看一下下面這個語句:

test.getFields().forEach {
    println(it.name)
}

上面這段代碼會輸出什麼?

什麼也沒有……

包括你使用test.getField("testVar")時也會給你拋出一個找不到成員變量的異常。這就是問題表現。你不再能像之前習慣的那樣直接操作字段了……

這個問題除了老老實實調用對應的Get、Set方法操作外還可以通過將成員變量聲明為JvmField的形式防止其被翻譯成私有:

class Test {
    @JvmField
    val testVar: String? = null 
}

不過我更建議還是老老實實麻煩一點調用Get、Set方法操作……因為直接操作變量的話將來一旦類的內部對變量的讀寫進行了一些預處理操作,直接通過訪問變量字段的方式操作變量就無法觸發這些操作,代碼維護起來會很麻煩。

WP中國本土化社區發展計劃(2020年6月23日修訂)

需要特別説明一下,這裏的發展計劃可能隨時會變更,因為在事情成型前,誰也説不準具體會怎樣發展。當前的發展路線並沒有國內外的成功案例可供參考,我是在一邊走一邊修正方向的狀態中。當然,我會在標題中標註變更日期,同時在文章開頭註明每次變更的主要內容。

修訂記錄

  • 2020年6月3日,第一次公佈方案。
  • 2020年6月22日,本次修訂對細節進行了大量的完善説明。
  • 2020年6月23日,本次對有爭議的部分增加了解釋,附在文章末尾。

正文

承蒙各位朋友的幫助,WP-China-Yes項目在這近四個月來取得了不錯的進展。目前有記錄的共有115個網站為此寫了推廣文章;共14位個人和11個企業捐助了5,155.47元現金,和價值1萬餘元/年的服務器資源;共7人為項目貢獻過代碼;通過又拍雲日誌分析,目前用户數1.5w+。

WP-China-Yes項目誕生之初我是希望解決WordPress官方服務在國內訪問緩慢的問題。不得不説,這個項目是被wordpress.org的429問題催生出來的,也是在429問題的推波助瀾下才得以發展起來。也許429問題某種意義上來説,是一種機遇?

這個項目從插件第一版發佈,到如今開始推本土化社區,我也遭到了無數人反對和批評。我對此一直是保持學習的態度,謹慎思考着每個反對的意見,則其善者而從之其不善者而改之。

WP-China-Yes項目未來的路在何方?項目一開始,只是做官方服務加速而已,設想推動整套本土倉庫源基礎設施的開發工作,之後召集一批企業自願為廣大WordPress用户提供免費的加速源服務。

後來隨着接觸了越來越多的WordPress從業者,聽取了各方意見後,漸漸有了新的思考。WP-China-Yes插件的意義不止於是提供了加速服務。這個項目其實是為國內生態發展開闢了一條嶄新的道路,第一次國人知道原來倉庫不一定非要用官方的。這就為發展提供了一個契機——中國人可以把生態中涉及的內容握在自己手上 ,由中國人自己設計一套符合國人思維和使用習慣的社區規則,並把這套規則催發出的生態資源通過國區倉庫的形式整合進國人的WordPress中。這樣,一箇中國版的WordPress就誕生了,核心還是原來的核心,只是附加在上面的生態被替換成了國內的。就好像安卓應用市場和谷歌服務框架在國內都被替換了一樣。

將這個項目的意義做一個類比:文明的發展是存在瓶頸期的,整體上是一個階梯性發展的過程,一旦突破了瓶頸就會產生科技大爆炸,短期內躍升至下一個階梯,如果不突破發展瓶頸,文明將在很長一段時間內緩慢的線性發展。套用在人類發展史上,距今兩百多年前珍妮機的發明,將人類帶入了工業化社會,從此人類經歷了幾萬年所未有的快速發展階段。WP-China-Yes插件對於國內WordPress生態的意義恐怕和這是一樣的。

在這篇本土化社區發展計劃中,我將介紹目前正在推進的兩個項目,他們一起組成了WP中國本土化社區的基本盤,未來社區將以此為基礎為WordPress在中國的發展做更多工作。

首先是一個立足國情,允許上架付費和閉源應用的中國特色商城,這將是一個和國區倉庫直接整合的公益性質的本土商城,不抽成也不做競價排名。商城為用户提供沉浸式的選購體驗,用户的選購、安裝、更新推送都將在WordPress已有的框架體系下進行。是的,屆時開發者的付費應用也可以通過本土商城為用户統一推送更新,而無需自己維護更新渠道,更無需用户手工下載安裝包再覆蓋上傳……

WordPress應用商城,這十幾年來無數人曾經或正在做。但是不得不説,大都沒有起色……究其原因,無疑是陷入了怪圈:用户體驗不夠好+本身知名度不夠高+用户知識付費慾望不夠強且網上盜版橫行 => 沒用户 => 開發者沒理由入駐或壓根不知道平台的存在 => 沒有足夠的優質作品 => 沒用户。

一個死循環,而且似乎很難找到突破口?

為了尋找這個突破口,在本土商城之前,一個鋪墊性的項目會先上線。這個項目也是目前工作中的重中之重。

我認為,這個項目將會是一個撬點,一個足以撬動整個國內生態的撬點——i18n字符串的自動化翻譯算法以及基於此開發的提供完整漢化支持的國區倉庫。

有很多人質疑我:“機器翻譯質量根本不行、機器翻譯無法處理一些特殊標記,技術上不可行、如果機器翻譯可行,官方早就做了”,如此等等……

對此,首先需要説一下,技術上已經驗證過是可行的了,因為我已經做出來了,參考fanyitest.wp-china.org,對於質疑質量不行的觀點,我嘗試解釋一下,完全指望機器翻譯肯定是不行的,機器翻譯只是提供了一個原始的驅動力,用來和其他優勢一起聚集全國用户,並驅動用户來貢獻翻譯校準,這些相輔相成才能在短期內補足中國生態十幾年來的遺漏。讓我們來嘗試捋一下整個發展思路:

假如我告訴你,現在有一個插件,可以本土化你的WordPress,為所有官方服務加速,並提供整個官方倉庫的完整漢化支持,同時支持微調漢化結果。只需要安裝這一個插件,就能解決WordPress在國內的各種水土不服,你會安裝嗎?

對此,我認為,也許大佬們看不上,但是對一般用户來講是有足夠吸引力的,機器翻譯的結果雖不説質量多高,但是看懂是沒問題的,這就夠了。並且這個插件是唯一的,短期內不太可能出現山寨品,因為不像最初的WP-China-Yes插件,只要搭建個反代就能山寨一份出來,然後聲稱自己早就想到了(事實上,這樣説的人一般忽略了跟在別人屁股後面抄襲無異於有人告訴他“沙漠往南有水”,如果前面沒有這個領頭人,這人大概是要迷失在沙漠裏的)。機器翻譯對i18n字符串的處理算法和自動翻譯與倉庫整合的整套解決方案是存在一定技術門檻的,不直接盜用源碼的情況下想仿製一個出來有一定難度。當然,為了保持領先,我會暫時對源碼閉源。是的,開發這個自動翻譯,除了增加用户粘性外,最主要的作用就是防止抄襲了。抄襲的危害很大,抄襲使這個項目無法聚集全國用户,無法聚集全體力量。力量都被分散到各個抄襲者手上了,這事實上的阻礙了國內生態的發展。要知道,抱團才能幹大事。

不過,也有人説全量漢化支持對用户的吸引力不夠大。對此,我推薦你看一下這款插件:Loco Translate ,他的安裝量是1000000+,這1000000都是非英語母語的人安裝的。再加上那個養活了薇曉朵團隊十幾個人的薇曉朵數字商城,相信用户對本土化翻譯的需求是超乎你我想象的。

剛剛有提到,説自動翻譯是一個原始的驅動力,這個驅動力是如何體現的?那就是前面説的“支持用户微調翻譯結果”,用户微調的過程其實就是翻譯校準的過程,校準結果除了會在用户本地生效外還會被傳輸到“協同翻譯平台”,經過管理員審核後會直接被用來優化機器翻譯結果,日後機翻的時候如果剛好匹配上被校準過的字符串,會直接調用。是的,越用越準確。這就是原始驅動力的體現,這是在變相的引導用户貢獻人工翻譯,並且這個過程只講利己。這樣在被用户需要的同時,事實上的豐富了國內的生態資源。

好的,通過上面那部分的推導,我們暫且得出一個結論:這樣一個提供服務內化&全量漢化的插件會有需求,用户會希望能安裝上這個插件來幫助他更愉快的使用WordPress,並且這個需求具有普適性。

那麼,接下來怎麼做?用户換量計劃!先由一些我所緊密聯繫的國內知名開發者牽頭,將WP-China-Yes設置為其產品推薦插件,在有了大哥帶頭示範後,再向全國開發者複製這一模式。

用户換量是最快速且低成本的用户羣體獲取方式,大家先將各自的用户羣聚集在WP-China-Yes插件下,由此換來日後國區商城的入駐名額。

經過前面的推論,我們知道,WP-China-Yes將會擁有足夠的用户存留度,只要帶來的用户,在將來都將是國區商城的直接消費羣體,每個參與換量計劃的開發者都可以享受其他開發者帶來的流量,互相成就。

聚集全國用户羣體,這就是本土商城的突破口,有了用户羣之後才能拓展更多玩法。現在我們知道了,這個商城將會有足夠的用户羣體參與消費,但是然後呢?國內用户的版權意識並不強烈,知識付費意識也不高,這可怎麼辦?

由社區統一組織法律援助!有了用户基礎,就有了談判的資本,可以和律師事務所合作。統一為社區開發者提供無償法律援助。就算談不成,我也可以自掏腰包組織打一兩場官司,之後相信大家都能預見到,只要成功了一兩次,就會起到殺雞儆猴的效果。之後只需要發發律師函就可以了。

好了,用户羣體有了,用户版權意識雖然沒提高,但是把盜版倒賣的商家給打掉了,這樣用户也就無盜版可用了,算曲線救國。那麼接下來就回到了比較重要的問題上:如何提升商城的用户體驗?

我認為,無需做太多工作,因為必須要認識到,得益於本土倉庫這個思想的誕生。本土商城一樣可以直接整合進本土倉庫,屆時,用户會像安裝官方倉庫的包一樣,方便的安裝國區商城的包。只需要額外開發一套購買邏輯,並在官方倉庫的菜單欄上增加“國區商城”的選項即可。

是的,所有安裝了WP-China-Yes的用户,直接就是商城用户。只要不卸載WP-China-Yes,他們就將一直看到國區商城的優秀作品。

到這裏,經過推演,國內商城無法成功的僵局似乎打破了?是的!至少我認為是的。

現在,我們得出了以下發展路線:

為WordPress提供服務內化&全量漢化的WP-China-Yes負責聚集和留存用户 => 國內開發者通過用户換量計劃,將各自用户羣體聚集在WP-China-Yes插件上,並由WP-China-Yes鎖住用户,做到來多少留多少 => 社區統一法律援助,直接維護開發者利益,全國範圍內打擊掉盜版倒賣行為 => 商城前端集成在WP-China-Yes插件中,為用户提供沉浸式的選購體驗 => 讓開發者有錢賺 => 更多的人蔘與開發+質量更高的官方倉庫漢化 => 生態資源的繁榮 => 更多的用户選擇WordPress。

良性循環,國內生態被驅動起來了。

可以預見,這個項目需要一個官網,也需要一個交流反饋和信息發佈平台,於是,就需要一個交流社區形式的網站。

好了,WP中國本土化社區(WP-China.org)誕生了,這個社區將集合全國之力繁榮國內生態。

為什麼名字叫本土化社區?

因為現在和未來所作的一切工作,都是圍繞着WordPress在中國的本土化而進行的……插件/主題包的翻譯以及國區倉庫、國區商城的建立等等的這一些工作本質上都是為了讓WordPress在中國變得更好。社區的目標不是成為類似問答平台那樣的互助交流網站,而是成為一個組織和推進本土化工作的工作小組,通過自成體系的生態不斷吸引新鮮血液參與到社區發展和貢獻中。

WP-China.org下有以下幾個模塊:社區論壇,供交流使用;新聞發佈,見名知意;協同翻譯平台,用來完善本土倉庫的翻譯質量;國區商城,這裏主要是提供供給開發者們使用的相關後台服務,如作品發佈等。當然,現階段是這樣安排的,未來還會有無數種可能,舉個例子就是,統一組織文檔的翻譯引進等……

之前有人質疑我是在搞壟斷謀利益。

其實這個大可不必這樣想,這個項目的推進過程中我得到了很多人的幫助,大家有的提供想法供參考,有的直接貢獻代碼,也有的會告訴我一些問題已有的解決方案幫我消除信息差,還有的捐錢希望我堅持。

如果我將來有一天宣佈這個社區以後不公益了,轉商業公司了。這一些人會怎樣想?我猜,此舉必將反噬我自己。

況且其實我對錢沒什麼追求,從小到大爹媽就深度貫徹“窮養兒”的政策,我可以説是窮慣了。我直到現在穿的也是淘寶上百十塊的地攤貨,並沒有對奢侈品有什麼喜好,對金錢看的也很淡,我更注重的是個人的榮譽,在乎的是自己的名字會不會流傳下去。金錢在理想面前,不值一提,它唯一的作用就是幫我調集資源去幹更有意義的事情。

不過,這不是説我就是超人了,不用吃飯就能活得很好。或者説在投入大量精力維護社區的情況下還能接一份外包乾點私活。於是,我個人生存所需的資金如何籌集,是未來不得不面臨的挑戰。

對此,我的設想是,這筆錢由每個通過這個項目獲得實際好處的開發者自願捐助,我會盡量為捐助的多的人提供曝光機會。至於本土商城,則完全不收費,也不做競價排名,完全做到公益性質。

關於社區的資金用途安排,目前初步設想是除去社區運行開支外,餘下的錢中我個人按量每月領取工資,再留一部分作為社區儲蓄以便將來開展新的業務,同時做到每月財務公開。當然,這一塊目前還是初步設想,還需要參考國外的成功案例再做定奪。

這一整套方案,我認為是國內這十幾年來,振興國內生態最詳細、最切實可行的了。當然,具體執行過程中肯定會遇到各種困難,但是因為希望的存在,所以這值得一試。我這兩個月來,每天都在這個方向上推進着也思考着。

如果你有建議,歡迎留言。每一份觀點我都會認真考慮。

對一些爭論點的解釋

爭論1:中國特色商城允許閉源應用上架是否有違開源精神

對此,我認為:不先吃飽飯不結合實際情況的前提下就直接談理想的行為完全就是耍流氓嘛!開源運動應該是和經濟發展一樣,在有了極其豐富的原始積累後(軟件技術的發展、人才的儲備、用户羣體對知識付費的認可程度),才能演化成共產主義(開源)。如果盲目的追求共產(開源),就會變成類似國內早期大躍進的那種情況。所以説,現在要做的,就是先允許閉源,壯大生態,大家都吃飽了,再去追求更高的理想以及更高級的生產形式。

爭論2:基於WordPress開發的主題和插件應該屬於GPL授權,不應該要求版權

這句話本身是沒錯的,但是不要忘了。GPL協議的核心是説“如果新的代碼依賴於GPL代碼,則該代碼會被GPL傳染”。這對於插件和主題的PHP代碼當然適用,但對於css和js可就不起作用了。因為這二者的運行是獨立的,並不依賴於WordPress的任何代碼。所以説可以針對css和js要求版權。

Ubuntu 20.04安裝MySQL 8.0.20記

很久沒手工裝過MySQL了,諸如AppNode這樣的服務器面板很好的幫助開發人員屏蔽了瑣碎的底層環境配置問題。不過AppNode支持的系統版本都很老了,其他面板又用不慣,於是打算手工安裝一次環境嚐鮮下新版本。

不誇張的説,我為了裝一個MySQL昨天晚上從12點折騰到凌晨3點,今天早上11點起來又折騰到13點……於是今天打算把遇到的坑總結一下,免得後人再踩進來。

坑一

Ubuntu 20.04下安裝mysql-server的過程中是不會要求輸入root密碼的,root密碼被設置成了什麼至今我也沒弄明白。

看到網上教程以及官方文檔都説安裝過程中會生成一個默認密碼,並被保存在錯誤日誌裏,然而我仔細翻過,發現並沒有。

於是乎打算強制修改root密碼,由此引出了坑二……

正確的查看管理密碼的方式是:

sudo cat /etc/mysql/debian.cnf

上述文件的內容是:

可以看到user字段就是管理員用户名,password當然就是默認密碼了。這個debian-sys-maint賬號是Debian系Linux下MySQL的默認管理賬號。

直接使用這個賬號登錄MySQL就可以愉快的玩耍了,如果你和我一樣不幸的按照網上的坑比文章強制重設了root密碼,請看“坑二”。

坑二

當時為了重置root密碼,在網上搜了很多文章,大部分都是教要在/etc/mysql/my.cnf中添加skip-grant-tables;選項來跳過密碼登錄。

如果你這麼做了,恭喜你,你完蛋了。

根據一篇台灣同胞寫的文章來看,這個選項會修改mysql的用户表,造成不可預知的問題。

其具體表現的症狀就是你在修改完root密碼並登陸後,執行show databases;命令會彈出如下報錯:

ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

這個報錯着實讓我頭疼了一陣,谷歌搜、百度搜、官網搜,得出的結論無非就是執行mysql_upgrade -u root -p命令,嘗試升級/var/lib/mysql下的數據庫文件。

可是,這個命令在MySQL 8.0.16中已經被廢棄了……執行後會出現如下提示:

Enter password: 
The mysql_upgrade client is now deprecated. The actions executed by the upgrade client are now done by the server.
To upgrade, please start the new MySQL binary with the older data directory. Repairing user tables is done automatically. Restart is not required after upgrade.
The upgrade process automatically starts on running a new MySQL binary with an older data directory. To avoid accidental upgrades, please use the --upgrade=NONE option with the MySQL binary. The option --upgrade=FORCE is also provided to run the server upgrade sequence on demand.
It may be possible that the server upgrade fails due to a number of reasons. In that case, the upgrade sequence will run again during the next MySQL server start. If the server upgrade fails repeatedly, the server can be started with the --upgrade=MINIMAL option to start the server without executing the upgrade sequence, thus allowing users to manually rectify the problem.

當然,更可笑的是,我壓根沒執行過數據庫服務器的升級,為何要去升級數據庫文件……

要解決這個問題,就得把整個MySQL完全卸載,並刪除/var/lib/mysql目錄,重新安裝後再通過“坑一“中介紹的方式來查看管理員賬號。

如果你必須要用root用户,可以使用這個命令重置其密碼:sudo mysql_secure_installation

關於wp-china-yes插件被官方倉庫下架的公告

很悲傷,插件被下架了,理由是官方不允許從其他來源安裝WordPress程序及插件主題。

應對策略

用以實現在脱離官方倉庫的情況下推送插件版本更新的解決方案已上線,代碼倉庫(普通用户無需關注,我維護的倉庫源已經都部署好了):

https://github.com/wp-china-yes/update-server

一些質疑

經過用户反饋,我發現貌似官方這次直接把帶“china”關鍵字的插件全部斃掉了。這不禁讓我懷疑,429問題還沒解決,就先把解決問題的工具斃掉,還順帶把帶“china”關鍵字的都幹掉的操作是不是意味着官方在有意封殺來自中國用户?

一些承諾

無論如何,WordPress是開源軟件的事實不會改變,WP-China-Yes項目將會繼續為WordPress在中國變得更好而努力。

我們不會因為官方的所作所為就終止維護,相反,我們將通過技術手段保證用户正常平穩的接收更新並使用服務,同時一步步脱離官方的掌控,為實現一個完全為中國人服務的WordPress而努力。

第一時間獲取最新進展

推薦加QQ羣:1046115671

WP中國倉庫源建設計劃

以下是郵件原文

We have been forced to permanently close your plugin due to our own mistake.

Your plugin – https://wordpress.org/plugins/wp-china-yes/ – allows for WordPress to be installed from places other than WordPress.org, which is a guideline violation.

We should not have approved the plugin at all. This is our mistake and we greatly apologize for misleading you 🙁

We do not allow plugins that install software as it poses a risk with security and trust. Our users must be able to trust WordPress.org as the source of truth for downloads, and plugins that intentionally circumvent that are not permitted.

Again, please accept our apologies on this matter. We should not have approved this plugin, and that is entirely our mistake.

2020年4月15日
孫錫源

如何關閉儀表盤上的贊助商名單列表

如上圖所示,點擊儀表盤右上方的“顯示選項”,之後取消勾選“《WordPress中國區倉庫源建設計劃》贊助者”即可。

作者的話:

我非常不建議大家關閉該名單。倉庫源的建設和維護需要消耗大量的人力、物力、財力,如果沒有贊助商的支持,這個項目註定走不下去。

如果你覺得名單的展現方式特別礙眼,可以主動找我交流,咱們一起探索一個大家都能接受的方案^_^。

愛也許可以發電,責任感也可以驅使程序員拿出業餘時間服務社會,但是愛和責任不能幫我交房租,也不能支付倉庫源維繫的固定費用支出>_<

目前贊助商們提供的服務器、CDN、雲存儲等資源折算為一年期的市價則已超過1萬元,靠我自己每年支付這些錢維繫項目怕是很難。而且目前來看該項目的維護還需要佔用我和社區小夥伴很多的時間和精力……在儀表盤為贊助商冠名是目前探索到的最行之有效的造血方式了,懇請大家支持~

如果你有建議或者意見,請聯繫:

  • QQ:1642491905
  • 微信/手機:17186788811

WordPress中國區倉庫源建設計劃

介紹

計劃的目標是集合一批以WordPress開發及周邊為主要業務的商業公司,由大家共同為廣大用户提供WordPress中國區倉庫源,我稱之為“社區源”。最終徹底改善國內WordPress的用户使用體驗,以求加速WordPress在中國的流行。

當然,用户也可以建立和使用自己的“自定義源”,在本篇文章中我將詳細介紹倉庫源的搭建方式。

倉庫源所依賴的環境

  • 一台境外的服務器(推薦美國的,帶寬大)
  • 國內的CDN(可選)
  • AppNode服務器管理面板
  • CentOS 7

AppNode面板介紹

可能有人好奇,我為什麼不推薦寶塔面板?首先需要説明的是寶塔的功能是殘缺的(此時的時間是2020年3月16日,寶塔以後可能會更新,但是至少到目前為止是殘缺的),無法實現需求的功能。好奇的同學可以看一下寶塔的反代功能,他的頁面內容替換隻支持三個關鍵字並且不支持替換301響應中的URL。

當然,AppNode的確對該項目提供了贊助,不過這個贊助是因為我一開始就打算採用AppNode,所以才找他們談了這件事,他們在給了我贊助後,一再要求我不要為其宣傳,否則怕贊助“變味”了。

AppNode的前身是VPSMate,我是從VPSMate時代一直使用至今的,我對我的客户也是着重推薦AppNode。我個人覺得AppNode怕是現階段最好用的服務器管理面板了,不過他的知名度非常低。

今天和AppNode的開發人員聊到知名度低的這個問題的時候,得到了他這樣的回覆:

總結一下就是:他們在靜下心打磨功能,不鳴則已一鳴驚人。

源的實現原理

原理很簡單啦,就是一台國外的服務器做WordPress官方服務的反代,之後再由國內的CDN做分發即可。

若是搭建來自用就可以不用套CDN了

搭建方法

AppNode面板安裝

複製下面的命令到服務器中執行。

INSTALL_AGENT=1 INSTALL_APPS=sitemgr INIT_SWAPFILE=1 INSTALL_PKGS='nginx-stable' bash -c "$(curl -sS http://dl.appnode.com/install.sh)"

之後跟着提示走即可安裝完成,這個和寶塔的裝法是一樣的。

注意:請在你的防火牆中放行面板的端口,否則面板將無法打開!

面板的初始配置

AppNode的面板的登錄方式在安裝完後會有相應提示,例如:

成功登錄後就可以開始初始配置了,詳見下方視頻教程。

導入站點配置信息

為了方便大家,我把我的站點配置文件導出了備份,大家可以先下載下面的備份文件,再跟着後面的視頻教程把配置文件導入到AppNode中。

配置導入的站點

導入進來的站點主要需修改兩個部分,一個是站點的域名,另一個就是站點的SSL證書。

注意:視頻中遺漏了Body內容關鍵字替換和301重定向中的URL替換的修改方式。替換位置:站點設置-反代-文本替換,以及站點設置-反代-跳轉URL替換。

CDN加速節點的配置

CDN不是必須的,自用的同學可以看一下百度雲加速,他們提供每天免費10G的流量。

打算提供社區源的企業不需要自己配置CDN。《WordPress中國區倉庫源建設計劃》的CDN資源由又拍雲統一讚助提供,各企業只需要提供一台國外的服務器做反代即可,最終架構圖類似:

為什麼會選擇又拍雲

和AppNode一樣,又拍雲也是我一直在用覺得很棒才定向的和他們談了贊助的事。

我博客的CDN一直是用的又拍雲,不過我是付費使用,並沒有參加又拍雲聯盟活動,因為不想在博客上掛任何第三方鏈接和LOGO…→_→

這次之所以選擇又拍雲是因為又拍雲的幾個優點非常吸引我:

  1. 支持平滑遷移源站數據到雲存儲,下次直接從雲存儲讀取,實現類似中間源的效果,有效減輕源站負擔。
  2. 支持多個源站負載均衡、容災備份,這個功能很強大很實用,我原本是自己開發了一個“倉庫源調度服務”嘗試達到類似效果,但是肯定是趕不上CDN層的實現來的徹底完善。
  3. 支持Let’s Encrypt證書,其他CDN配置的證書通常都是單次購買一年,若過期了只能重新購買,一旦忘記續期那就完犢子了……Let’s Encrypt的好處就是可以自動續簽,放那就不用管了,省心吶。

以上三個優點中的第二個是最吸引我的,也是我最終決定選擇又拍雲的主要原因。

不得不説又拍雲這家企業還是很有社會責任感的,簡單聊了下,負責商務合作對接的同志就表示又拍雲願意承擔《WordPress中國區倉庫源建設計劃》的所有CDN流量及數據存儲費用。

其他倉庫源搭建方法

使用方法

使用方法就很簡單了,站長們可以直接在插件上填入API域名和下載域名即可,自定義源設置將會自動覆蓋社區源的設置。

例如:

提供社區源

為保證可靠性,社區源目前只接受正規公司贊助。若貴司有意提供社區源請聯繫QQ:1642491905

提供社區源將會獲得插件設置頁、項目主頁的引流信息、品牌信息展示的權力,這將提升貴司在WordPress用户羣體中的品牌形象和信任度。

提供贊助支持

項目的維護需要耗費大量的時間和精力,如果你有意贊助我,請聯繫QQ:1642491905

加羣交流

用户可以添加下面的QQ羣,搭建過程中出現問題我會及時解答,後續有什麼動態也會通過QQ羣及時通知。

使用WP-China-Yes將WP站點與官方服務的通信切換到大陸節點

公告(2020年7月2日更新)

WP-China-Yes插件已於2020年4月15日被官方下架,請前往GitHub倉庫下載安裝,插件功能和本體的更新推送不會受此影響。

關於個別插件更新後還會重複要求更新的問題,目前已經部署了新的解決方案,徹底解決了這個問題,以後都不會再碰到了。

項目發展計劃:https://www.ibadboy.net/archives/3864.html

有律師事務所,或法律工作者,有興趣為社區提供法律援助的話請聯繫我。後面開始推本土商城後需要為開發者提供免費的法律援助,打擊倒賣行為。WordPress主題和插件雖然基於WordPress,理應是開源軟件,但其界面的CSS和JS卻可以要求商業版權,所以倒賣是違法行為。


WordPress自動化翻譯系統Beta版上線:fanyitest.wp-china.org歡迎體驗並反饋問題(如:翻譯質量不佳,有符號被錯誤處理等問題)或貢獻代碼以幫助這個項目發展。

推薦加羣,在羣裏大家可以一起討論項目未來的發展方向,獲得及時的技術支持,後續有動態也會在羣裏發公告推送。

羣號:1046115671

WP中國倉庫源建設計劃

介紹

因為WordPress官方的服務器都在國外,所以中國大陸的用户在訪問由WordPress官方提供的服務(插件、主題商城,WP程序版本更新等)時總是很緩慢。

近期又因為被攻擊的原因,WordPress的CDN提供商屏蔽了中國大陸的流量,導致大陸用户訪問插件主題商城等服務時報429錯誤。

為解決上述問題,我發起了《WordPress中國區倉庫源建設計劃》,計劃組織起一批熱愛奉獻、有責任、有擔當的企業和個人在大陸境內架設基於反向代理的緩存加速源,用以加快WordPress官方服務在中國大陸及港澳台的訪問速度,並規避429報錯問題。

為使更多的使用WordPress的同學能夠用上中國區倉庫源,我開發了WP-China-Yes插件,以求幫助大家方便簡潔的替換官方服務鏈接為加速源。

這個是一個公益項目,我始終都不會以任何藉口對插件、加速源的使用權等進行收費。

現狀

該項目目前由又拍雲全力贊助支持——提供無限量CDN流量及數據存儲資源。

後端由各個企業和個人捐助服務器組建反代節點,反代WordPress官方服務,前端統一接入到又拍雲上,由CDN層實現負載均衡和容災熱備,保證高可用性。

目前官方插件、主題、核心程序、作品LOGO、作品橫幅、作品截圖、作者頭像、主題預覽等需要從官方調取的一切靜態資源均會在第一次訪問後被遷移到又拍雲存儲上緩存1年的時間,日後訪問直接從國內雲存儲調取,速度飛快。

對於動態的API請求也有制定專門的加速策略,經測試:從河北秦皇島移動帶寬上直接調用WP官方接口檢測插件更新情況平均需要耗費11秒的時間,而使用中國區倉庫源加速後只需要1秒。

安裝使用方法

GitHub: https://github.com/sunxiyuan/wp-china-yes

網絡良好的同學也可以去WP插件商城搜索:wp-china-yes

下載並安裝插件後直接啓用即可,該插件會自動接管所有WP訪問官方服務的流量。

插件不會更改你的WordPress程序,若不想使用大陸加速節點,直接停用插件即可。

另外,插件不會拖累站點的速度,她只有在需要訪問官方服務的時候才會被激活,並且核心代碼只有30行左右,不會對你的站點造成任何負擔。

幫助推廣

公益事業迫切需要每個人的支持與參與才能長久的發展下去。

從《WordPress中國區倉庫源建設計劃》構思開始,我就想達成:提供服務->用户自發推廣->用户基數擴大->企業贊助->提供更好的服務……這樣一個完美的閉環。在這個閉環中尤以用户自發推廣最為重要!

千萬不要感覺幫助推廣是大V們的專利,如果每個用户都能把這個項目推薦給身邊的兩個人,那項目的用户基數將呈現指數級裂變發展。有了用户基數才會有與企業談判的籌碼,才會有更多的企業願意投入資金贊助項目發展,大家才會有更穩定快速的倉庫源使用。

如何推廣呢?

你可以寫一篇介紹WP-China-Yes插件可以解決429問題的文章,也可以寫一篇介紹如何加快WP網站訪問後台官方商城的速度的文章。甚至可以直接把鏈接甩到qq羣上告訴羣友們:429問題已經不是問題了~

尋求贊助

這裏首先引用一份來自CardUi的市場調查報告:https://cardui.com/report/17

報告中詳細説明了WordPress在中國的市場佔有率、發展前景等。

目前WordPress在國內佔有近20%的建站份額,2019年市場規模首次突破90億……

阻礙WordPress在國內進一步獲取更大成就的難題主要就是——運行卡頓。

《WordPress中國區倉庫源建設計劃》就是想一定程度上解決這個問題,為WordPress提供像Linux一樣的國內鏡像源,幫助完善WordPress的生態環境,也使中國區倉庫源最終成為國內WordPress生態圈中不可或缺的一環。

對該項目提供贊助,將會提升您的品牌在WordPress用户羣體中的知名度,提升品牌價值認可度。

對於贊助者不僅僅會獲得項目發佈頁掛名的獎勵,未來贊助者名單還會出現在所有使用WP-China-Yes插件的用户的管理後台儀表盤上。

需要注意一下:只能提供掛名獎勵,不提供廣告投放

我總結了一下,目前對該項目提供贊助的企業都具有以下特徵:

  1. 發展健康,有餘力
  2. 有責任感願意承擔更多的社會責任
  3. 心懷感恩,願意回饋社會
  4. 理想主義者,相信自己的一份力量會使世界變得更美好
  5. ……

這其中尤以薇曉朵AppNode二者最著,前者是在wp-china-yes插件剛發佈2.0.0版本的僅僅半個小時後就主動聯繫我表示受益於該項目,想盡自己的一份力量提供些資金贊助。後者在提供贊助後甚至反覆要求我千萬不要為其宣傳……他們害怕贊助變味了,因為他們認為他們僅僅是想盡一份力量,並不打算得到回饋……

其實我是不贊同AppNode的這種做法的,所以我堅持為他們宣傳,因為大家應該都聽過這篇文章中的故事吧 ,我就不再贅述了>_<

目前接受以下三種贊助方式:

  1. 服務器贊助(雲計算和IDC公司推薦選擇)
  2. 週期性資金贊助(以WordPress開發及周邊為主的商業公司推薦選擇)
  3. 一次性資金贊助(願意請我吃一頓飯或者喝一杯咖啡的個人用户推薦選擇)

如果你有意贊助請聯繫QQ:1642491905

推廣者列表(按發文先後順序排序)

這裏先對所有參與推廣的博主、羣主等表示最真摯的感謝!你們為該項目的發展做出了不可磨滅的貢獻!如果你感覺此插件使用體驗良好,請一定也推薦給身邊的朋友!

WordPress大學 | WordPress外貿建站專家 | Wr博客 | 知更鳥 | 青衫慧博客 | 長野的博客 | 奶爸建站筆記 | 蟲子君 | 呆憨Blog | 留連暗香 | 臾離博客 | 魏艾斯筆記 | 設計窩 | 智誠雲集 | 自學控 | 隨時準備避雷 | boke112聯盟 | 站長幫 | 王商博客 | 格子隨筆 | 雪貓遊戲攻略網 | 龐展博客 | 最省事聚集地 | 習休時期 | 雲期刊 |自然 | 詩夢 | DengJia`s blog | ThemeBest | 未完待續 | 耗子博客 | 無憂SEO博客 | 瑞爾思 | 山大王 | 無名 | 生活的左上角 | 技術宅小明 | 七月博客 | 王思偉的博客 | 無主題博客 | 艾碼匯 | 落櫻網絡 | 筆點未來先生 | 嘰咕資源網 | 源碼分享網 | 新席地網博客 | WP中文網 | 搜刮好東西 | 意更博客 | 青衣樓 | 裏維斯社 | 淚雪博客 | 雲服務器排行榜 | 無名小站 | 夜雨聆風 | MyWa我娃  | Ryanjie 博客 | 汐岑小窩 | Yremp | WPMES | WM雲建站 | SEO視頻 | 棲枝Perch | HAM小站 | 米隨隨 | 技術松鼠 | 晨風筆記 | ZDMZ | enterdawn | 瀚域博客 | MANZIER | 山野莽夫 | 零度貓 | 小獸WP | 沃茨博客 | WordPress主題之家 | 我是菜鳥 | 雲軒閣 | 天邊魚Blog | 藝創源碼屋 | 小T博客 | 主題客 | Call Me Bill | V民之家 | WordPress百寶箱 | 筱某佳 | 白天博客 | Npcink | 我有樂趣 | 宅到沒朋友 | ytkah | 一號資源 | 怡文菌 | 曉夢 Blog | WPorder | DuKe Yin | 風雨軒窗日暮光 | 蝦皮路 | 劉晟含的個人網站 | 蓮夢青語 | 王會博客 | NAZ.CN | 藍色創想 | 喬零 | WPBOM | 龍萱坤諾 | 何昌全博客 | wpFAQ | 魔源吧 | 我愛虛擬網 | GO破解 | 主機優惠券 | 勵志語錄網 | 老王博客 | flyzy小站 | 胡不過 | 奕星球 | 墨攻博客 | IDC嚴選 | 運維社區 | Govzzp的生活 | 豫章小站 | 恩月閣 | 大川渝讀者 | 買對的 | Mannaze.COM

當你為WP-China-Yes寫了一篇文章後,請在此文章下留下評論,我會第一時間將你的網站加入到這裏的。

ps:自2020年4月15日之後只將服務器贊助者加入到儀表盤中展示

企業

薇曉朵漢中菲比斯網絡技術有限公司) ——1000元

AppNode福州趣雲信息科技有限公司)——1000元

Vps.re億雲科技(深圳)有限公司) ——服務器x1

又拍雲杭州又拍雲科技有限公司)——承包國內所有CDN流量及存儲費用

柵格雲山東柵格網絡科技有限公司)——服務器x3

酷番雲昆明酷番網絡科技有限公司)——服務器x1

糖果主機SugarHosts)——服務器x1

恆創科技SonderCloud Limited)——服務器x1

柒比貳武漢市潮流科技有限公司)——1000元

小獸wordpress株洲納姆網絡科技有限公司)——200元

WordPress大學桂林沃鵬網絡科技有限公司) ——500元

買對的石家莊買對的科技有限公司)——200元

個人

酷蝌星球 ——500元

設計窩 ——200元

胖子馬 ——100元

愛搜博客 ——服務器x2

IFV的技術博客 ——5元

匿名 ——300元

學點編程吧 ——10元

Ares進階之路 ——10元

Npcink ——99.98元

瀚域博客 ——38.8元

Haibin ——100元

藍色創想 ——20元

頑兔博 ——21.69元

都潮匯 ——50元

Govzzp的生活 ——29元

貢獻過代碼/文檔/參與運營(時間順序排序)

孫錫源 | 趙豐 | 鹹寒少 | 董嘉龍 | 3xs | 耗子 | Wr

生而為人,意欲何為

午休時回想起童年的經歷,一切都歷歷在目,就好像昨天才發生一樣。這種感覺使我十分恐懼……

由此時回憶童年向外發散,可以預見:當我而立之年回憶起20歲的經歷時也必然會感覺一切像是昨日才發生的,時間就好像不存在一樣,一霎時就穿越了十年的光景。

在我垂暮之年回憶一生時也必然會感慨人生如此短暫,轉瞬即逝,我才剛出生就走到了盡頭。若那時我不能建功立業,不能在人類的歷史上留下自己的名字,我恐怕會懷着遺恨衰老死去。

我所恐懼的就是死亡到來時我作為一個人、一個宇宙中渺小的人、一個在人類歷史進程中平平凡凡的人隨着時間的流逝化作物質組成的基本元素散落在宇宙間,而我的事蹟、我的精神、我的一切都無人記得更無人在乎,我就好像從來沒存在過一樣,未曾留下任何痕跡。

是的,在宇宙幾百億年的歷史中、在人類幾萬年的進化史中、在文明誕生的幾千年歷程中,我微不足道,不值一提。這太可怕了。

我迫切希望我來人世的這一遭對於人類這個物種能有大的貢獻,我不渴望富貴,只渴望在人類的歷史上有關於我的記載流傳下去,使聚集成我的這搓物質所孕育出的精神意識在隨物質消散後依然被人們銘記……

我快速的在腦子裏過了一遍,要做出什麼樣的事情才能達到這一目的?或者説,那些被印在史書中的都是些什麼人?思來想去,大概也只有三種人是史書的常客——政治家、科學家、藝術家。

或許我可以做一個計算機科學家,帶動某一項技術的突破,從而被歷史銘記。這會非常困難,即便真的僥倖有所突破,鑑於計算機技術快速迭代的特性,我的成果最多也只能在某一歷史時期有一定影響力,並將很快被新技術取代。不能奢望像物理學一樣,一項成果的公佈只要是正確的就註定了會萬代流傳,畢竟物理學定律這種東西從宇宙大爆炸開始就註定是一成不變的了。如今我們一談到光速不能被超越就會第一時間想到頭髮蓬亂的愛因斯坦老爺爺,相信以後的人們也一定會這樣聯想,除非相對論被推翻了。

此時我多少為我選擇了計算機專業而感到一絲悲涼,但是還好,至少我目前在這一方面的成績還是可喜的,雖然距離我的理想相距甚遠。

周老師曾對我説:“錫源,等你年紀大了,回憶你以前所想所做的,會覺得多麼可笑”。

沒錯,我確實會覺得可笑,但是我絕對不會為此而後悔。或許隨着年紀的增長,我在精神上的追求會逐漸被生活的瑣碎消磨掉——每日腦子裏只有孩子的奶粉錢、妻子的粉飾錢……但至少現在我是一個理想主義者,我願意為理想付出一切,哪怕是我的生命。

即便我此刻的想法很幼稚很可笑,但多少年後回想起來我絕對不會後悔。

或者説,唯一會使我後悔的就是——年輕的時候不敢想、不敢試。