国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

這個(gè)軟件我開發(fā)了11年,終于賺錢了!

0
分享至

  2015年,我是一個(gè)普通的全棧Web開發(fā)。

  我有一臺(tái)Mac,玩了一段時(shí)間以后,我就被它充滿活力的應(yīng)用生態(tài)系統(tǒng)所吸引了。

  有一天,我看到了一個(gè)叫做IA Writer的Markdown編輯器,又簡(jiǎn)單又優(yōu)雅。

  我也決定自己做一個(gè)。

  懷著滿腔熱情,我開始學(xué)習(xí)如何制作Mac原生文本編輯器。

  XCode,AppKit,Objective-C,所有這一切對(duì)我來說都是全新的。

  我打算把我的文本編輯器叫做Paper,它就像一張紙,非常簡(jiǎn)潔。

   重要的決定

  我的第一個(gè)決定就是:這個(gè)應(yīng)用一定要是原生的!

  我是Web開發(fā),完全可以復(fù)用Electron這樣的框架,但是我不想用它。

  我寧愿學(xué)習(xí)全新的技能,為用戶提供最好的體驗(yàn)。

  這個(gè)體驗(yàn)就是:軟件很小,下載速度超快,使用起來是原生的UI。

  這樣才能與其他非常精美的編輯器競(jìng)爭(zhēng)。

  我不想縮短開發(fā)時(shí)間,因?yàn)槲覔碛惺澜缟纤械臅r(shí)間。

  第二,我選擇了Objective-C

  2015年,Swift剛剛出現(xiàn),我做了一個(gè)實(shí)驗(yàn),用Objective-C和Swift分別在XCode中寫了一個(gè)空的項(xiàng)目,然后檢查各自生成的.app包。

  我驚訝地發(fā)現(xiàn),Swift中嵌入了完整的運(yùn)行時(shí),.app包是5M,而Objective-C只有幾十K。

 ?。ㄈ绻悻F(xiàn)在進(jìn)行這個(gè)實(shí)驗(yàn),差異不會(huì)那么大)

  我想要最好的,寧愿付出更難學(xué)習(xí)和語言過時(shí)的代價(jià),以便得到更精簡(jiǎn)的軟件包。

  第三,我不想依賴第三方。

  從自己不熟悉的生態(tài)系統(tǒng)中,選擇依賴項(xiàng),這實(shí)在是不容易。

  恐怕大家都有這樣痛苦的經(jīng)驗(yàn):在編寫一行代碼之前,添加一大堆不知道的第三方包和庫......

  我要構(gòu)建一切內(nèi)容,這樣我可以按需定制,獲得一點(diǎn)競(jìng)爭(zhēng)優(yōu)勢(shì)。

  比如Markdown的解析引擎,因?yàn)镻aper不像那些傳統(tǒng)的編輯器,并不支持全部的Markdown語言,所以在解析引擎中我只需要寫我需要的代碼,并且我可以做大量?jī)?yōu)化。

  Paper 僅使用 AppKit 和 UIKit 中的本機(jī) UI 元素,因?yàn)樗鼈兊木S護(hù)開銷最低:由Apple自動(dòng)更新,向后兼容,保證在每個(gè)設(shè)備上工作。

   我的愿景

  非常簡(jiǎn)單,超越IA Writer,更加精簡(jiǎn),更加優(yōu)雅,讓用戶專注于寫作這件事。

  為了實(shí)現(xiàn)目標(biāo),我盡最大可能減少干擾。

  應(yīng)用程序窗口內(nèi)沒有一個(gè)按鈕。

  沒有標(biāo)準(zhǔn)的“首選項(xiàng)”窗口,將所有內(nèi)容分散到菜單項(xiàng)和菜單小部件中。

  將滾動(dòng)條縮小為2個(gè)像素的線。

  上下滾動(dòng)時(shí)可以隱藏標(biāo)題欄,使得編輯器周圍的空白可以拖動(dòng)

  不知道是否有人注意到了我這些努力,很可能是有的,因?yàn)橛腥藢懥艘粋€(gè)非常簡(jiǎn)潔的評(píng)論,我至今依然將其作為宣傳語:

這是一個(gè)超級(jí)干凈的寫作空間,有大量可配置的東西,當(dāng)你不需要時(shí),它們可以隱藏在實(shí)現(xiàn)之外。

  根據(jù)我的觀察,奉行極簡(jiǎn)主義的寫作軟件通常會(huì)走向兩條路:

 ?。?)變得流行,為了滿足大量用戶的新需求,偏離極簡(jiǎn)主義初心,變得復(fù)雜起來。

 ?。?)繼續(xù)保持極簡(jiǎn)和小眾,最終被創(chuàng)造者所拋棄。

  Paper不會(huì)走(1),但是可能在(2)的路上。

  我的計(jì)劃是:讓Paper永遠(yuǎn)保持它發(fā)布時(shí)的樣子,拒絕增加多余的視覺混亂,正如用戶所說:

請(qǐng)不要讓 Paper 變得更復(fù)雜!市面上有很多“全功能”編輯器,但它們不適合專注寫作。

  同時(shí),通過緩慢的、可預(yù)測(cè)的更新節(jié)奏,我會(huì)向應(yīng)用程序的邊緣地帶添加功能,同時(shí)保持默認(rèn)路徑超級(jí)干凈。

  

  與瀏覽器中可預(yù)測(cè)的JavaScript運(yùn)行時(shí)相比,閉源原生UI是一個(gè)脆弱的地方。

  如果你不努力的投入精力去重構(gòu)應(yīng)用,fix bug,很快,你的軟件就會(huì)因?yàn)楸罎⒍淮蠹覘売谩?/p>

   架構(gòu)設(shè)計(jì)

  我發(fā)現(xiàn)將Paper的代碼看做兩個(gè)作用域非常方便

  1.應(yīng)用程序作用域

  包括菜單,狀態(tài)欄,圖標(biāo),暗黑模式,全局配置,單實(shí)例視圖

  2.文檔作用域

  視圖和邏輯的集合,存在于表示單個(gè)文檔的視圖控制器中。

  一個(gè)新的文檔作用域在文檔打開的那一刻產(chǎn)生,在文檔關(guān)閉的那一刻死亡。

  與單一應(yīng)用程序作用域不同,多個(gè)文檔作用域可以同時(shí)存在

  對(duì)每個(gè)作用域,我都會(huì)定義一個(gè)storyboard,完成以下功能:

  描述作用域內(nèi)使用的各種視圖和小部件

  充當(dāng)依賴注入容器,將作用域內(nèi)所有的模塊粘合在一起。

   付費(fèi)功能

  從2015到2017年,訂閱制在App Store中還不普遍。大家還都是付費(fèi)下載,但是我覺得如果不使用的話,大家不會(huì)為一個(gè)不知名的App付費(fèi)。

  我其實(shí)并不想設(shè)置什么“付費(fèi)墻”或者試用期啥的,我想給用戶提供更好的體驗(yàn),我的辦法就是給專業(yè)版(Pro)的某些視覺效果收費(fèi),對(duì)于基本功能如文件同步、PDF導(dǎo)出等保證免費(fèi)。

  然后我讓大家無限期的試用,感受外觀和效果,如果大家覺得不錯(cuò)的話,就可以購買Pro版。

  當(dāng)然,必須得有辦法防止無限期地使用高級(jí)功能而不掏錢,最早的時(shí)候,我設(shè)置了一個(gè)60秒的定時(shí)器:如果有一個(gè)Pro版的功能處于激活狀態(tài),就提醒人們購買。

  說實(shí)話,60秒提醒一次挺煩人的,后來,我想了一招,把這些提醒和文字聯(lián)系起來,一旦你用Paper開始寫作,每輸入幾百個(gè)字符提示一次,這樣大家就可以盡可能不受干擾的情況下嘗試所有功能。

  

  事實(shí)證明,從用戶反饋看,這種和文字結(jié)合的付費(fèi)提醒方式很不錯(cuò):

“......Paper可以讓你隨意擺弄和測(cè)試專業(yè)功能,而不是鎖在付費(fèi)墻后面(這也是我不喜歡很多應(yīng)用的原因)....你不必相信我說的,自己跳進(jìn)去看看,Paper讓你試用每一個(gè)特性...”

   粗糙的部分

  文本編輯器有太多的功能了,復(fù)制粘貼、拖放、撤銷、插入符號(hào)交互、從右到左的語言、非字母語言、聽寫、語音文本、掃描文本、文本中的非文本對(duì)象、點(diǎn)擊并按住鏈接預(yù)覽、文本搜索替換、拼寫檢查、自動(dòng)更正、自動(dòng)完成、人工智能建議......

  你還得被新版的操作系統(tǒng)擺布,它可能增加了新的方式來插入、更新文本,和文本交互。

  在iOS上,弄清楚“文本編輯器矩形”背后的數(shù)學(xué)原理尤其難,因?yàn)橛懈鞣N因素,例如靈動(dòng)島,主頁欄、動(dòng)態(tài)顯示的軟件鍵盤,這些都會(huì)造成阻礙。

  

  輸入語言和字體也是一個(gè)令人頭疼的問題。

  字母語言相對(duì)容易處理,因?yàn)榇蠖鄶?shù)主要字體甚至支持古怪的字形,例如元音變音和西里爾字母。

  然而,非字母語言需要特定的字體來顯示其字形。

  幸運(yùn)的是,蘋果系統(tǒng)為每種非字母輸入語言至少預(yù)裝了一種字體。

  唯一的問題是:沒有 API 將輸入語言映射到支持的字體 - 所以我不得不用大量的switch語句暴力破解它。

  還有就是批量更新,對(duì)簡(jiǎn)單的情況很容易,但是對(duì)于那些邊邊角角的情況,處理起來太痛苦了,比如加粗一段文本就耗費(fèi)了很多步驟

  

   用戶反饋

  Paper最早用的是一個(gè)叫做HockeyApp的平臺(tái),Mac版自帶聊天功能,這可比電子郵件反饋好多了,用戶可以直接啟用聊天,進(jìn)行反饋。

  微軟收購了 HockeyApp后, 將其變成了 AppCenter,聊天功能沒有了。

  沒辦法,我只好自己做:

  

  后來我還發(fā)現(xiàn)了一些小“秘密”,我寫了一些代碼,能夠從用戶未發(fā)送消息中查找一些關(guān)鍵字,然后自動(dòng)回復(fù)。

  

  自動(dòng)回復(fù)回答了很多常見的問題,大大減少了我的“客服”工作量。

   軟件發(fā)布

  我會(huì)收集聊天中的反饋,每月做一次新版本發(fā)布。

  我會(huì)使用單個(gè)遞增的數(shù)字做版本號(hào),這是個(gè)簡(jiǎn)單的事情,為啥要用2個(gè)以上的用點(diǎn)分隔的數(shù)字呢?

  這是我的release note 模板:

  

  我覺得release note 一定得簡(jiǎn)單,這樣用戶才能真正閱讀。

  錯(cuò)誤修復(fù),微調(diào),較小的功能通常不會(huì)提及,我不喜歡類似“我們已經(jīng)修復(fù)了一些錯(cuò)誤并進(jìn)行了一些性能改進(jìn)”這樣的廢話。

  不斷地更新讓用戶覺得他們的訂閱是值得的,也會(huì)告訴App Store算法,這個(gè)應(yīng)用沒有被放棄。

  最后,正是這種緩慢而穩(wěn)定的節(jié)奏讓我能在未來幾年繼續(xù)做這件事情。

   后記

  這篇文章翻譯來自https://papereditor.app/dev,作者是Mihhail Lapushkin,一個(gè)愛沙尼亞的程序員。

  

  原文中有更多章節(jié),我做了刪減,翻譯也不是直譯,而是在保留原意的情況下,轉(zhuǎn)換成了更輕松的風(fēng)格。

  這篇文章讓我最為感慨的是這么幾點(diǎn):

  1.跨界開發(fā)

  一個(gè)Web開發(fā),毅然進(jìn)入桌面領(lǐng)域,學(xué)習(xí)全新的知識(shí),并且獲得成功。

  所以,喜歡什么東西,就動(dòng)手搞起來吧,別把現(xiàn)有的技術(shù)棧自己給圈住了。

  現(xiàn)在AIGC很厲害,完全可以利用起來。

  2. 目標(biāo)明確,追求極致。

  他追求的就是最佳的用戶體驗(yàn),為了縮小軟件大小,直接用最“原始”的Objective-C。

  為了完全掌控,竟然不依賴第三方類庫,完全從頭打造。

  在我的記憶中,可能只有SQLite的作者也是這么干了。

  3. 不但會(huì)編程,還得有藝術(shù)品位。

  這個(gè)Paper編輯器界面做得賞心悅目,就連這篇文章的網(wǎng)站也做得讓人看起來非常舒心。

  可見Mihhail Lapushkin不但是個(gè)程序員,還是個(gè)優(yōu)秀的用戶體驗(yàn)設(shè)計(jì)師,很有藝術(shù)品位。

  這一點(diǎn)我很羨慕,我一直在弄后端,就是因?yàn)楦悴缓媒缑嫦嚓P(guān)的東西。

  程序員眾多,把不同領(lǐng)域的知識(shí)結(jié)合起來,才能脫穎而出啊。

  4.長(zhǎng)時(shí)間打磨,真有時(shí)間

  2015年開始做,2017年作出第一個(gè)版本,在Mac上發(fā)布,2019年發(fā)布iOS版本。

  然后就是持續(xù)的打磨,到今年已經(jīng)11年了。

  除了真正喜歡之外,很難找到別的原因了。

  Mihhail Lapushkin說“我擁有世界上所有的時(shí)間”,嗯,這些國外程序員確實(shí)太幸福了。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
事發(fā)浦東機(jī)場(chǎng)!女子稱兩次拒絕幫陌生人帶行李,多名網(wǎng)友:我也遇到過!

事發(fā)浦東機(jī)場(chǎng)!女子稱兩次拒絕幫陌生人帶行李,多名網(wǎng)友:我也遇到過!

上觀新聞
2026-04-18 20:28:04
杜鋒親自爆料!廣東隊(duì)疑似發(fā)生內(nèi)訌,徐杰聯(lián)手崔永熙逼宮換帥?

杜鋒親自爆料!廣東隊(duì)疑似發(fā)生內(nèi)訌,徐杰聯(lián)手崔永熙逼宮換帥?

緋雨兒
2026-04-19 11:48:06
伊萬卡大秀禿嚕了皮的膝蓋。她的膝蓋怎么會(huì)禿嚕了皮呢?

伊萬卡大秀禿嚕了皮的膝蓋。她的膝蓋怎么會(huì)禿嚕了皮呢?

一口娛樂
2026-04-18 13:00:29
湖人對(duì)陣火箭G2賽前迎來利好消息:東契奇、里夫斯復(fù)出時(shí)間表出爐

湖人對(duì)陣火箭G2賽前迎來利好消息:東契奇、里夫斯復(fù)出時(shí)間表出爐

野渡舟山人
2026-04-20 06:30:25
隨著波爾圖2-0,63歲穆帥率隊(duì)2-1,布拉加2-2,葡超最新積分榜出爐

隨著波爾圖2-0,63歲穆帥率隊(duì)2-1,布拉加2-2,葡超最新積分榜出爐

側(cè)身凌空斬
2026-04-20 08:54:40
終于降了!4月21日24時(shí)油價(jià)將調(diào)整 加一箱油預(yù)計(jì)少花21元

終于降了!4月21日24時(shí)油價(jià)將調(diào)整 加一箱油預(yù)計(jì)少花21元

快科技
2026-04-17 20:15:35
公公躺兒媳床上睡覺,被兒子怒罵:“你睡這干啥?”公公理直氣壯

公公躺兒媳床上睡覺,被兒子怒罵:“你睡這干啥?”公公理直氣壯

荷蘭豆愛健康
2026-04-20 09:41:16
特朗普“經(jīng)濟(jì)之怒”:沒收伊朗官員海外資產(chǎn)

特朗普“經(jīng)濟(jì)之怒”:沒收伊朗官員海外資產(chǎn)

高博新視野
2026-04-18 06:00:18
深圳空姐月入一萬五,負(fù)債102萬,申請(qǐng)個(gè)人破產(chǎn)獲立案

深圳空姐月入一萬五,負(fù)債102萬,申請(qǐng)個(gè)人破產(chǎn)獲立案

一口老湯
2026-04-19 17:39:21
光明“新鮮牧場(chǎng)”擦邊鮮牛奶,網(wǎng)友稱被誤導(dǎo)

光明“新鮮牧場(chǎng)”擦邊鮮牛奶,網(wǎng)友稱被誤導(dǎo)

新浪財(cái)經(jīng)
2026-04-19 12:44:38
賴清德背后主子浮出水面,大陸擒賊先擒王,誓要斬?cái)嗄缓蠛谑郑?>
    </a>
        <h3>
      <a href=琴琴有氧運(yùn)動(dòng)
2026-04-19 09:53:39
從“錘姐”到拘留所:她用14年和薛之謙糾纏,卻不該傷害孩子

從“錘姐”到拘留所:她用14年和薛之謙糾纏,卻不該傷害孩子

林大師熱點(diǎn)
2026-04-20 09:51:01
李梓萌:2026年4月19號(hào)正式在《新聞聯(lián)播》復(fù)工,此前已缺席103天

李梓萌:2026年4月19號(hào)正式在《新聞聯(lián)播》復(fù)工,此前已缺席103天

曉今娛
2026-04-20 02:00:03
撿漏神操作!曼聯(lián)鎖定 5200 萬皇馬巨星,完爆隊(duì)內(nèi)廢柴

撿漏神操作!曼聯(lián)鎖定 5200 萬皇馬巨星,完爆隊(duì)內(nèi)廢柴

瀾歸序
2026-04-20 01:07:19
今天才知道,為啥鵝蛋很少有人吃?為啥賣鵝蛋的人很少?漲知識(shí)

今天才知道,為啥鵝蛋很少有人吃?為啥賣鵝蛋的人很少?漲知識(shí)

阿龍美食記
2026-04-12 15:01:18
越南航空局緊急致函中國:請(qǐng)幫我們穩(wěn)住航空燃油供應(yīng)

越南航空局緊急致函中國:請(qǐng)幫我們穩(wěn)住航空燃油供應(yīng)

緬甸中文網(wǎng)
2026-04-19 15:07:21
打起來了,以軍不宣而戰(zhàn),美深夜開火,無人機(jī)墜毀后又有兩國反水

打起來了,以軍不宣而戰(zhàn),美深夜開火,無人機(jī)墜毀后又有兩國反水

快看張同學(xué)
2026-04-20 09:41:17
擔(dān)心的事還是發(fā)生,跑丟編制的女護(hù)士張水華,又回到了她的怪圈

擔(dān)心的事還是發(fā)生,跑丟編制的女護(hù)士張水華,又回到了她的怪圈

金風(fēng)說
2026-04-15 14:42:59
1950年,志愿軍師長(zhǎng)進(jìn)隧道休息,突感異常,對(duì)面山坡竟有大片帳篷

1950年,志愿軍師長(zhǎng)進(jìn)隧道休息,突感異常,對(duì)面山坡竟有大片帳篷

浩渺青史
2026-04-19 15:54:31
1:3!朱婷被限制,郎平現(xiàn)身觀賽,艾格努大爆發(fā),科內(nèi)輸米蘭

1:3!朱婷被限制,郎平現(xiàn)身觀賽,艾格努大爆發(fā),科內(nèi)輸米蘭

跑者排球視角
2026-04-20 06:52:12
2026-04-20 10:59:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
252文章數(shù) 645關(guān)注度
往期回顧 全部

科技要聞

藍(lán)色起源一級(jí)火箭完美回收 客戶衛(wèi)星未入軌

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

頭條要聞

失蹤女老板被找到 嫌犯曾改名整容還催警察"還我清白"

體育要聞

七大獎(jiǎng)項(xiàng)候選官宣!文班或全票DPOY

娛樂要聞

章子怡!增重20斤素顏拍新片

財(cái)經(jīng)要聞

月之暗面IPO迷局

汽車要聞

外觀非常驚艷 全新一代寶馬6系有望回歸

態(tài)度原創(chuàng)

本地
家居
親子
公開課
軍事航空

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

家居要聞

法式線條 時(shí)光靜淌

親子要聞

普通家庭養(yǎng)娃補(bǔ)鈣,90% 家長(zhǎng)都補(bǔ)錯(cuò)了!

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

特朗普:美艦向伊朗貨船開火炸出個(gè)洞

無障礙瀏覽 進(jìn)入關(guān)懷版