我打算花較長的時間來開發一個叫iWriter的軟體,是用寫小說的。有興趣,一起吧。

前段時間我用Electron+Node.js做了個半成品,不知咋的我又決定重新來過。計劃先用Swift開發個macOS版本,然後反饋好的話,繼續用C#開發個Windows版本。你要問「Why?「 我能怎麼辦,都說了不知咋的,大概或許可能是我有更大的想法吧。我打算在不久的將來能開發一個稍大點的程序,到那時Electron可能不夠用。寫程序嘛大家都知道,但是,為什麼我要浪費這春花秋月夏風冬雪去做這麼無聊的事呢。嗯,有點不好意思,所以聲音小一點,「因為我窮,還發抖。」 當我看到唐家三少他們富也發抖時,我就決定從他那扣點什麼。想了三天三夜,決定開發一個寫小說的程序「iWriter」,記得別用我取的名字喲。他們那麼有錢,我的程序那麼好,所以百吧幾十塊錢的,他們肯定捨得施捨。哈哈哈,想到這,心情好多了,看來我也能趕上黨的號召,走向小康生活。

你說:「道理我都懂,但為什麼你要開發的是MacOS版本呢?」 這樣問下來,有點尷尬。這不,我現在是遊盪進行時,手頭只有MacBook Pro。如果是在家裡,我肯定是用C#+Windows,因為這個我熟。

你又說:「道理我都懂,但為什麼你要選擇用Swift來開發呢?「 就你話多,又有點尷尬。我知道Objective-C我熟,畢竟用它開發過幾個小程序。但為什麼還是選擇Swift呢,因為不知咋的,知乎前幾天給我推了個SwiftUI的文章,我覺得有前途。只是這個項目用不上,但還是就這樣定了。

我們要一起學什麼呢?

你可要看得清清楚楚,我可沒騙你。

  1. 我也不會,所以要一起學,但是我是用業餘時間做這個,進程有點慢,你要當心。
  2. 是學習Swift語言。不是Objective-C,Objective-C我會,Swift我不會的。
  3. 是開發macOS軟體,蘋果電腦上用的那個。不是iOS,手機用的那個,別看錯了。

我們應該怎麼學呢?

因為是我在寫,所以只能用我的方法了,當然歡迎你用你的方法來寫。

從很久很久以前開始,我學編程、學設計都是從自己的項目開始。就好比現在,有了項目以後,你還要弄清楚這三個問題:首先,要明白自己在做什麼?其次,會涉及到哪些軟體?最後,有哪些技術點?那好,我來說說這一次我們所要學的東西和我們所要做的事情:

首先,要明白自己在做什麼?iWriter,一個用來寫小說的軟體,它有以下主要功能:

  1. 目錄編輯:導圖式目錄編輯、目錄樹編輯、正文使用#*&@等符號實現標題、段落、備註、插入角色等編輯。
  2. 角色編輯:姓名生成器、屬性設置,按角色查看時間線
  3. 場所編輯:場所名稱生成器、屬性設置,按場所查看時間線
  4. 正文編輯:查找替換、備註、字典、語法檢查、角色全文替換、場所全文替換、角色名稱全文更新,場所名稱全文更新、統計工具、計時工具。
  5. 軟體風格:界面顏色、文字顏色、字體大小、界面調整與保存
  6. 文件功能:導入、導出、上傳到小說平台、分享到社交平台。

其次,會涉及到哪些軟體?桌面macOS、編輯器Xcode、開發語言Swift、支持語言SQL等:

  1. 需要了解macOS系統。這個我會,跟Windows差不多,所以這個不講。
  2. 需要了解Xcode。這個我也會,有點小得意,哈哈,只是簡單介紹一下。
  3. 需要了解Swift。這個我不會,聽說是一個不錯的語言,學到應該是掙到。這個教材多,官網上的非常好:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html。我也會出一份簡明教材。一起學吧。
  4. 需要了解Sqlite。我是會SQL,Sqlite比SQL學起來應該簡單多了,在這裡是用來保存漢字的字典數據,所用到的語句類型不多。也可能會用Realm,到時候再看。
  5. 需要了解Photoshop,Illustrator。這個我會,用來做ICON或軟體的開啟圖片,我出圖就可以了,不教。也許會用SVG的圖,嗯,這個也不教了。
  6. 需要了解Mac下的原型工具。這個我會好幾個,歷害吧?用來做iWriter的原形圖,我出圖就可以了,所以還是不教。
  7. 需要了解Go或Python。這個我又會,用來爬網上的字典,已經爬好,不教了。只想說一句:用Go做爬蟲,使用多線程超級爽。

最後,有哪些技術點?下面是根據我以前開發iOS的經驗想到的,其實我開發iOS時是根據我開發站點的經驗去想的, 那次結果是對的。哈哈,這次就不知道了:

  1. 文件保存格式的設計:可以參考電子書EPUB的格式:zh.wikipedia.org/wiki/E,或PDF格式:zh.wikipedia.org/wiki/%。我打算使用的是:多個關聯文件通過tar打包,並改後綴為.im的格式。後面再講。
  2. Swift基本了解後,著重熟悉的有:閉包、泛型、包的管理、類的繼承拓展、委託、字元串處理、數組處理、字典處理、文件讀取等。庫的話:2D圖庫用得上。
  3. macOS組件,組件布局、動畫、事件、數據綁定、數據共享與同步、布局跳轉。這些問題可查Xcode幫助,一般來說都可以解決。
  4. 文字處理:選擇、替換、樣式。以我JS處理段落文字的經驗,這裡應該比較複雜,複雜處在跨段落、跨章節處理嵌套樣式。
  5. 配置文件、界面、中英文處理等。中英文處理系統應該是支持的,就算不支持自己處理起來也不算複雜。
  6. 最後是打包、發布、註冊。

我的筆記類文章是什麼樣的格式呢?

在我寫學習筆記類文章時,特意以一種固定的格式去寫,這格式我稱之為「三段式」。像似每一本書的摘要一樣的,我把文章的重點放在前面。目的是讓看文章的人決定是否需要了解更多的內容,如果不,這樣就為他節約了 80%以上的時間。特別是自己復看時,基本上都不用全部看完。

  1. 標題。看了標題,有需要,繼續看。
  2. 提要。看了提要,有需要,繼續看。
  3. 重點。看了重點,了解,過;不明白,繼續看。(或許不存)
  4. 細節。看了具體內容,了解,過;不明白,回信:你丫寫的是什麼東東呀。

下一篇,Swift 的基礎。

讓我們在這裡,遇見明天的自己!姜友華


推薦閱讀:
相关文章