鲁迅は言った:"Sometimes you need to leave things behind to move forward"
この 1 年間、全体のプロセスはこのような状況でした。何かを捨て、何かを努力しました。
私が選んだプログラミング言語#
17 年前まで、私は完全な NO-JS 開発者でした。ウェブサイトを作るときは、バックエンドのレンダリングと純粋な CSS でインターフェースを作成していました。しかし、NodeJS の急速な発展とユーザーの UI 最適化の緊急の要求により、私は JavaScript を体系的に学ぶ必要がありました。
友人の紹介で、私は正式に ES6、ES7 の文法を体系的に学びました。これにより、JS の新しい文法と Python の類似性を感じることができました。jQuery とネイティブの文法を捨てた後、進捗は順調でした。また、VueJS と React の中で、私は React を選びました。これは私のマイクロフレームワークの好みに合致しており、React + Redux のロジックは Vuejs よりも直感的で明確だと個人的に思います。
もう 8102 年ですので、Python3 を使用するべきです。したがって、私が書いたライブラリは基本的に Python2 をサポートしていません。Py3 の最大の成果は非同期です。async/await の構文糖のサポートと asyncio の標準ライブラリ化により、私は非常に興奮しました。静的型チェックのための mypy と組み合わせて、Python は大規模なソフトウェアの開発能力を持つようになりました。非同期パフォーマンスの最適化のために uvloop を組み合わせると、少なくともウェブ領域では Nodejs に劣らない性能を発揮できます。
Python の mypy のサポートと JavaScript の TypeScript の方言により、これらの 2 つの言語は型チェックの機能を持つようになりましたが、私はまだコンパイル型の言語を学ぶことに熱望しています。Rust と Golang は私の選択範囲内です。Rust は私が最も好きな言語ですが、学習の勾配が急すぎるため、何度も学習を続けることができませんでした。Golang は非常にシンプルですが、いくつかの点で使いにくいと感じます。例えば、タブのインデント、ジェネリックのないこと、使いやすいパッケージ管理などです。将来的には引き続き Rust の学習を選択すると思います。
したがって、1 年間の技術スタックは次のようになりました:Rust の高性能タスク + Python の API サービス + React Redux の UI。
私が行ったプロジェクト#
Python3 では、比較的快適に使用できる非同期フレームワークがありませんでしたので、自分でNougatというフレームワークを作りました。このフレームワークは何度も設計し、何度もリファクタリングしましたが、現在は純粋なミドルウェアベースのフレームワークとルーターだけが残っています。しかし、使用感は非常に快適です。フレームワークはほぼ完成していますが、ドキュメントの更新と自動リロードの開発モードが足りません。
ウェブスクレイピングの学習中に、自分で小さなスクレイピングフレームワークGearを作りました。まだ始まったばかりで、コードも完璧ではありませんが、アーキテクチャは非常に明確です。
簡単なウェブテキスト翻訳ツールCoconut。これはシンプルな Chrome 拡張機能です。純粋なテキストの表現力はかなり良いです。
簡単な Github Star 検索ツールStar Collector。これも Chrome 拡張機能で、すでにスターを付けたプロジェクトを素早く検索することができます。スターの数が多い場合、このような検索は Github の機能よりもはるかに快適です。
bearnote.com を登録して以来、常に「マルチユーザーノート / ブログサイトを作成する」という呪いがありました。Nougat の登場もそのためでしたが、最終的には作成できませんでした。最終的には Nougat を使用して単一ユーザーブログを作成する予定です。このタスクは難しくないと思いますし、同時に Nougat の表現力をテストすることもできます。