Home
Softono
h

halfrost

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by halfrost

vue-objccn
Open Source

vue-objccn

<p align='center'> <img src='./image/vue-objccn_banner_.png'> </p> <p align='center'> <img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/halfrost/vue-objccn/total?label=APP%20downloads&color=brightgreen"> <img src="https://img.shields.io/badge/build-passing-success"> <img src="https://img.shields.io/badge/Language-%20JavaScript%20-f9e229.svg"> <a href="https://github.com/vuejs/vue"><img src="https://img.shields.io/badge/Framework-Vue.js | Electron%20-0eb984.svg"></a> <img src="https://img.shields.io/badge/node->=v6.11.0-b561fe.svg"> <img src="https://img.shields.io/badge/npm->=v3.10.10-000000.svg"> <img src="https://img.shields.io/badge/electron->=1.8.8-orange.svg"> <img src="https://img.shields.io/badge/platform-%20iOS | Android | Mac | Web%20-ff69b4.svg"> <img src="https://visitor-badge.laobi.icu/badge?page_id=halfrost.vue-objccn"> </p> <p align="center"> <a href="https://github.com/halfrost/vue-objccn/blob/master/LICENSE"><img src="https://img.shields.io/badge/License-GPL-blue.svg"></a> <a href="https://halfrost.com"><img src="https://img.shields.io/badge/Blog-Halfrost--Field-80d4f9.svg?style=flat"></a> <a href="http://weibo.com/halfrost"><img src="https://img.shields.io/badge/[email protected]?style=flat&colorA=f4292e"></a> <a href="https://twitter.com/halffrost"><img src="https://img.shields.io/badge/[email protected]?style=flat&colorA=009df2"></a> <a href="https://www.zhihu.com/people/halfrost/activities"><img src="https://img.shields.io/badge/%E7%9F%A5%E4%B9%[email protected]?style=flat&colorA=0083ea"></a> <img src="https://img.shields.io/badge/made%20with-=1-red.svg"> <a href="https://github.com/halfrost/vue-objccn/pulls"><img src="https://img.shields.io/badge/PR-Welcome-brightgreen.svg"></a> </p> Use Vue.js to develop a cross-platform full stack application of [Objc china](https://objccn.io/). - [x] ✅ Desktop application available for three platforms, Mac, Linux and Windows - [x] ✅ Web application supports desktop browsers and mobile browsers - [x] ✅ Mobile App which uses the Cordova framework, supports iOS, Android, Windows Phone and BlackBerry platforms - [ ] ❌ Native Mobile App, which can use Weex framework to support both iOS and Android > Note: This project is just a bit of fun and purely for learning purpose, please support [喵神(@onevcat)](https://github.com/onevcat) and [Objc china](https://objccn.io/). > [Chinese introduction](./README_CN.md) The download link for the runnable and complete packaged software is [here](https://github.com/halfrost/vue-objccn/releases). ## Preface ### 1. About me I'm a full-time iOS developer, not a front-end developer. Due to take part in Weex development, I get to know the `Vue.js`. ### 2. Why write this project? 1. The motivation to write this project is from an e-pal, he left a message on my blog - was there a better Weex demo? I recommended [@EVAN YOU](http://evanyou.me/)’s Hacker News. Later he supposed me to make one. I refused but kept it in mind. 2. On May 19 this year, GitHub used Electron rewrite the macOS and Windows client, coupled with the recent year development of cross-platform getting hotter, to some companies, Web and app are all needed, app also need support iOS and Android two platforms, and more they develop Weixin mini programs. Although desktop applications are a few, Electron can develop them all. I'm going to have a try. 3. As a result of the contact to the Vue.js, of course, do not want to stay in the primary, would like to advanced, [@EVAN YOU](http://evanyou.me/) especially given the recommendations, is more practice, more practice. In order to speed up the pace of progress, I own private to find the project for practicing. 4. Why choose Objc China, the reason is typically simple - I am an iOS developer. To iOS developers, Objc is basically well known, [喵神(@onevcat)](https://github.com/onevcat) as the same. I admire him very much [喵神(@onevcat)](https://github.com/onevcat) and decide to write Objc china without hesitation. 5. Because of love ... ... ### 3. Why not use Weex to build this cross-platform project? When I completed the project and tried to convert it directly into Weex, I got a lot of errors and most of them cannot be fixed immediately. I believe that I use the wrong way, not Weex's problem. By the way, Weex has released a new version, and then there is time to put Weex version of the open source again. Well, into the topic, Let's introduce this project: ## Technology stack & main framework 📦 All technology stack of Vue:vue2 + vuex + vue-router + webpack 📌 ES6 📡 Network request:axios 🎈 Response framework:bootstrap, element-ui ✏️ Backend:express 📝 Code highlighted:highlight.js 🗄 Database:lowdb 📖 Markdown Parser:vue-markdown 🔖 Form validation:vee-validate 🏆 Cross-platform framework:Electron ## 📱 Supported platforms <p align='center'> <img src='./image/Supported_Platforms_.png'> </p> ## 🔨 How to build As the Objc china website is directly response html data, to simulate the network request to return data, I build a backend and write API to return data. I use Express framework to build a server, set up in the `8081` port, and write routing, the request will go to `8080`, open the server will automatically open the background. My current development environment is node v6.11.0, npm v3.10.10, Vue.js v2.8.2. ``` bash # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # serve with hot reload at localhost:8080 npm run start # build for production with minification npm run build # build for production and view the bundle analyzer report npm run build --report # run unit tests npm run unit # run e2e tests npm run e2e # run all tests npm test # build Mac application npm run build:mac # build Linxu application npm run build:linux # build Win application npm run build:win # build Cordova application npm run build:app ``` Here to talk about Cordova's packaging alone, it is slightly more than the desktop side of the special point. First, make the `src/main.js` file on the three lines on the Cordova note open, Cordova library initialization needs to be included in the generation of Vue instance outside. After opening the comment, proceed to the next step. I put a `Makefile` in the project, you can do this according to this. 1. First install the cordova command globally > npm install -g cordova 2. And then enter the following command to generate the app project directory > cordova create app com.vueobjccn vueobjccn 3. Into the app folder > cd app 4. Add the corresponding platform > cordova platform add ios > cordova platform add android 5. Run the project > cordova run ios > cordova run android Cordova only generated a shell of the app, all the content are still read from the web page. There is a folder called `WWW` in the corresponding application and used to load the page. JavaScript package will generate the `www` folder, just replace the content under this folder. In addition, if you develop a large app with Cordova framework and no any optimization, the user experience is really not as fast as the native. If you really want to use front-end technology to develop app, share you two recommendation: The one is trying to do optimization when use Cordova framework. The other is using React Native or Weex to get the experience close to native. ## 🚀 Cross-platform development Package this project into desktop application by JavaScript cross-platform development, mainly used the Electron framework. Here you need to install these three dependencies "electron", "electron-builder" and "electron-packager" in devDependencies. Configure other paths in the webpack. About Cordova installation, I make complaints a little network problems in China. If you are not over the wall in China, it is really painful. For example, not over the wall and in a very poor network environment, installation of Cordova globally, lots of error, even for the complete installation of `cnpm` after the addition of the iOS platform will later report a problem of 'co' file can not find, I suspect `cnpm` could not install the command complete. Later, I go back home, over the wall and network environment is very good, All of a sudden the `npm` installation is complete. But there is a small episode: If Cordova iOS 4.4.0 template throw a error, suggest installation of several times, the reason is still for the network over the wall in China, no catch to it. There may be encountered the following error: > "Error: Cannot find module 'config-chain'" when running 'ionic start' The solution of this error is trying again the original order with the `sudo` command. This error could be solved The final package will be done in the dist folder. Next to show the performance of the cross-platform application on each platform: First show the Web side: <p align='center'> <img src='./image/Screenshots/Web/Web 1.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 2.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 3.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 4.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 5.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 6.png'> </p> <p align='center'> <img src='./image/Screenshots/Web/Web 7.png'> </p> And then show the effect in the mobile browser: Android platform Nexus 5x Web <p align='center'> <img src='./image/Screenshots/Web/Nexus 5x Web.png'> </p> Nexus 6P Web <p align='center'> <img src='./image/Screenshots/Web/Nexus 6P Web.png'> </p> iOS platform iPhone 5 Web <p align='center'> <img src='./image/Screenshots/Web/iPhone 5 Web.png'> </p> iPhone 7 Web <p align='center'> <img src='./image/Screenshots/Web/iPhone 7 Web.png'> </p> iPhone 7 Plus Web <p align='center'> <img src='./image/Screenshots/Web/iPhone 7 Plus Web.png'> </p> iPad Web <p align='center'> <img src='./image/Screenshots/Web/iPad Web.png'> </p> Then look at the performance in Mac side: <p align='center'> <img src='./image/Screenshots/Mac/Mac 1.png'> </p> <p align='center'> <img src='./image/Screenshots/Mac/Mac 2.png'> </p> <p align='center'> <img src='./image/Screenshots/Mac/Mac 3.png'> </p> <p align='center'> <img src='./image/Screenshots/Mac/Mac 4.png'> </p> <p align='center'> <img src='./image/Screenshots/Mac/Mac 5.png'> </p> <p align='center'> <img src='./image/Screenshots/Mac/Mac 6.png'> </p> Finally look at Cordova's effect: <p align='center'> <img src='./image/Screenshots/iPhone/iPhone 1.png'> </p> <p align='center'> <img src='./image/Screenshots/iPhone/iPhone 2.png'> </p> <p align='center'> <img src='./image/Screenshots/iPhone/iPhone 3.png'> </p> <p align='center'> <img src='./image/Screenshots/iPad/iPad 1.png'> </p> <p align='center'> <img src='./image/Screenshots/iPad/iPad 2.png'> </p> <p align='center'> <img src='./image/Screenshots/iPad/iPad 3.png'> </p> ## 🌈 Function display Build a Web page with Vue.js quickly. <p align='center'> <img src='./image/Gifs/Web.gif'> </p> Vuex management status is very convenient. Login status saved in the state inside, the global object will be obtained it. <p align='center'> <img src='./image/Gifs/Web-login.gif'> </p> If there is no login in information and user click the purchase button to buy an e-book, it will jump to the login page. Another point is to say that because this is a SPA, so the routing inside are using Router-link to achieve, but did not use `<a>` tag jump, the effect is to jump and do not have to request data, jump quickly. This user experience is really cool. `<router-link>` is preferred over hard-coded `<a href="...">` for the following reasons: It works the same way in both HTML5 history mode and hash mode, so if you ever decide to switch mode, or when the router falls back to hash mode in IE9, nothing needs to be changed. In HTML5 history mode, router-link will intercept the click event so that the browser doesn't try to reload the page. When you are using the base option in HTML5 history mode, you don't need to include it in to prop's URLs. <p align='center'> <img src='./image/Gifs/Web-logout.gif'> </p> Similarly, once the user logs out, all places showing the user name will become a status to be logged in, the shopping cart on navigationBar also be disappeared. Manage status with Vuex, very exciting. <p align='center'> <img src='./image/Gifs/Web-email.gif'> </p> This is the email form validation, not too much technical content. <p align='center'> <img src='./image/Gifs/Web-buy.gif'> </p> Here is the shopping cart page and use the MVVM page binding ideas. There are four buttons on the page, clicking any one will immediately change the related total price. To iOSer, it's worthy to learn the implemention on the MVVM. Then this is the iPhone's Safari performance, the speed is well. <p align='center'> <img src='./image/Gifs/Web-iPhone.gif'> </p> In the cross-platform of these applications, the best experience, I think, is the application of Mac. <p align='center'> <img src='./image/Gifs/Web-Mac.gif'> </p> Finally is the mobile phone app build by Cordova framework, I'm a little picky and not satificated with the unoptimized Cordova. See this showcase below: iPhone application <p align='center'> <img src='./image/Gifs/Web-iPone app.gif'> </p> iPad application <p align='center'> <img src='./image/Gifs/Web-iPad app.gif'> </p> ## 🤔 Reflection I strongly recommand you the [element-ui](https://github.com/ElemeFE/element) (Vue.js developers must have heard of this library). It is a really fast way to build projects by using it, an app can be efficient developed. Save time and put more energy on business development. Everyone says "Now is in the era of front-end, mobile development and front-end integration is inevitable". But there are many different aspectes of the development between front-end and iOS, I experience them all and think a lot. Font-end and iOS, they have lots to learn from each other in their own advantages and disadvantages, I intend to write an article series on those aspects - engineering, component, routing, MVVM. (Dig a big hole to jump) ## 📜 Feature If I had more free time, I would like to support Weex. Taking Vue.js into a complete Weex application, to become a native app, the performance will not be bad. After then, it can cover the entire platform. ## ❗️ Errata If you find a bug, welcome to sumbit your PR. If you feel confused by something, welcome to submit your Issues. I'm really appreciate it!🙏🙏🙏 ## ♥️ Thanks If you like this project, welcome Star! [![Stargazers over time](https://starchart.cc/halfrost/vue-objccn.svg)](https://starchart.cc/halfrost/vue-objccn) ## 🌏 LICENSE ![](https://www.gnu.org/graphics/gplv3-127x51.png) Vue-ObjcCN is available under the GPLv3 license. See the LICENSE file for more info.

Web Development Mobile Development
2K Github Stars
Halfrost-Field
Open Source

Halfrost-Field

# Halfrost-Field 冰霜之地 <p align='center'> <img src='contents/images/background-cover_.png'> </p> <p align='center'> <img src="https://img.shields.io/badge/Total%20Reading-3.18M-success"> <img src="https://img.shields.io/badge/Total%20Word%20Count-578129-success"> <img src="https://img.shields.io/badge/build-passing-brightgreen.svg"> <img src="https://img.shields.io/badge/platform-%20iOS | Android | Mac | Web%20-ff69b4.svg"> <img src="https://img.shields.io/badge/language-Objective--C-orange.svg"> <img src="https://img.shields.io/badge/language-Swift-abcdef.svg"> <img src="https://img.shields.io/badge/language-JavaScript-yellow.svg"> <img src="https://img.shields.io/badge/language-Golang-26C2F0.svg"> <img src="https://visitor-badge.laobi.icu/badge?page_id=halfrost.Halfrost-Field" alt="visitor badge"/> </p> <p align='center'> <a href="https://github.com/halfrost/Halfrost-Field/blob/master/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/halfrost/Halfrost-Field?label=License"></a> <a href="https://halfrost.com"><img src="https://img.shields.io/badge/Blog-Halfrost--Field-80d4f9.svg?style=flat"></a> <a href="http://weibo.com/halfrost"><img src="https://img.shields.io/badge/[email protected]?style=flat&colorA=f4292e"></a> <a href="https://twitter.com/halffrost"><img src="https://img.shields.io/badge/[email protected]?style=flat&colorA=009df2"></a> <a href="https://www.zhihu.com/people/halfrost/activities"><img src="https://img.shields.io/badge/%E7%9F%A5%E4%B9%[email protected]?style=flat&colorA=0083ea"></a> <img src="https://img.shields.io/badge/made%20with-=1-blue.svg"> <a href="https://github.com/halfrost/Halfrost-Field/pulls"><img src="https://img.shields.io/badge/PR-Welcome-brightgreen.svg"></a> </p> ## ⭐️ 为什么要建这个仓库 世人都说阅读开源框架的源代码对于功力有显著的提升,所以我也尝试阅读开源框架的源代码,并对其内容进行详细地分析和理解。在这里将自己阅读开源框架源代码的心得记录下来,希望能对各位开发者有所帮助。我会不断更新这个仓库中的文章,如果想要关注可以点 `star`。 ## 📖 目录 # 🐳 Go | Project | Version | Article | |:-------:|:-------:|:------| |Go|1.16 darwin/amd64| [Go 初学者的成长之路](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/new_gopher_tips.md)<br>[初探 Go 的编译命令执行过程](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_command.md)<br>[深入解析 Go Slice 底层实现](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_slice.md)<br>[如何设计并实现一个线程安全的 Map ?(上篇)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_map_chapter_one.md)<br>[如何设计并实现一个线程安全的 Map ?(下篇)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_map_chapter_two.md)<br>[面试中 LRU / LFU 的青铜与王者](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/LRU:LFU_interview.md)<br>[深入研究 Go interface 底层实现](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_interface.md)<br>[Go reflection 三定律与最佳实践](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_reflection.md)<br>[深入 Go 并发原语 — Channel 底层实现](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_channel.md)<br>| |空间搜索|golang/geo|[如何理解 n 维空间和 n 维时空](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/n-dimensional_space_and_n-dimensional_space-time.md)<br>[高效的多维空间点索引算法 — Geohash 和 Google S2](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_spatial_search.md)<br>[Google S2 中的 CellID 是如何生成的 ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_CellID.md)<br>[Google S2 中的四叉树求 LCA 最近公共祖先](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_lowest_common_ancestor.md)<br>[神奇的德布鲁因序列](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_De_Bruijn.md)<br>[四叉树上如何求希尔伯特曲线的邻居 ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_Hilbert_neighbor.md)<br>[Google S2 是如何解决空间覆盖最优解问题的?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/go_s2_regionCoverer.md)<br>-----------------------------------------------------------------------------<br> [Code \<T\> share keynote](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Go/T_Salon_share.pdf)| ---------------------------- # 🍉 Machine Learning | Project | Version | Article | |:-------:|:-------:|:------| |机器学习|Andrew Ng Stanford University|[目录](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/contents.md)<br>-----------------------------------------------------------------<br>[Week1 —— What is Machine Learning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/What_is_Machine_Learning.md)<br>[Week1 —— Linear Regression with One Variable (Gradient Descent)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Gradient_descent.ipynb)<br>[Week2 —— Multivariate Linear Regression](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Multivariate_Linear_Regression.ipynb) <br>[Week2 —— Computing Parameters Analytically](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Computing_Parameters_Analytically.ipynb)<br>[Week2 —— Octave Matlab Tutorial](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Octave_Matlab_Tutorial.ipynb)<br>[Week3 —— Logistic Regression](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Logistic_Regression.ipynb)<br>[Week3 —— Regularization](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Regularization.ipynb)<br>[Week4 —— Neural Networks Representation](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Neural_Networks_Representation.ipynb)<br>[Week5 —— Neural Networks Learning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Neural_Networks_Learning.ipynb)<br>[Week5 —— Backpropagation in Practice](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Backpropagation_in_Practice.ipynb)<br>[Week6 —— Advice for Applying Machine Learning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Advice_for_Applying_Machine_Learning.ipynb)<br>[Week6 —— Machine Learning System Design](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Machine_Learning_System_Design.ipynb)<br>[Week7 —— Support Vector Machines](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Support_Vector_Machines.ipynb)<br>[Week8 —— Unsupervised Learning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Unsupervised_Learning.ipynb)<br>[Week8 —— Dimensionality Reduction](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Dimensionality_Reduction.ipynb)<br>[Week9 —— Anomaly Detection](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Anomaly_Detection.ipynb)<br>[Week9 —— Recommender Systems](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Recommender_Systems.ipynb)<br>[Week10 —— Large Scale Machine Learning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Large_Scale_Machine_Learning.ipynb)<br>[Week11 —— Application Example: Photo OCR](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Machine_Learning/Application_Photo_OCR.ipynb)| --------------------------- # 🚀 JavaScript | Project | Version | Article | |:-------:|:-------:|:------| | JavaScript | ECMAScript 6 | [JavaScript 新手的踩坑日记](https://github.com/halfrost/Halfrost-Field/blob/master/contents/JavaScript/lost_in_javascript.md) <br> [从 JavaScript 作用域说开去](https://github.com/halfrost/Halfrost-Field/blob/master/contents/JavaScript/javascript_scope.md)<br> [揭开 this & that 之迷](https://github.com/halfrost/Halfrost-Field/blob/master/contents/JavaScript/%E6%8F%AD%E5%BC%80%20this%20%26%20that%20%E4%B9%8B%E8%BF%B7.md)<br>[JSConf China 2017 Day One — JavaScript Change The World](https://github.com/halfrost/Halfrost-Field/blob/master/contents/JavaScript/JSConf%20China%202017%20Day%20One%20%E2%80%94%20JavaScript%20Change%20The%20World.md) <br> [JSConf China 2017 Day Two — End And Beginning](https://github.com/halfrost/Halfrost-Field/blob/master/contents/JavaScript/jsconf_china_2017_final.md)| | Vue.js | 2.3.4 | [Vue 全家桶 + Electron 开发的一个跨三端的应用](https://github.com/halfrost/vue-objccn/blob/master/README.md) <br> [大话大前端时代(一) —— Vue 与 iOS 的组件化](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Vue/%E5%A4%A7%E8%AF%9D%E5%A4%A7%E5%89%8D%E7%AB%AF%E6%97%B6%E4%BB%A3(%E4%B8%80)%20%E2%80%94%E2%80%94%20Vue%20%E4%B8%8E%20iOS%20%E7%9A%84%E7%BB%84%E4%BB%B6%E5%8C%96.md) <br>| | Ghost | 1.24.8 | [Ghost 博客搭建日记](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Ghost/ghost_build.md)<br> [Ghost 博客升级指南](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Ghost/ghost_update.md) <br>[Ghost 博客炫技"新"玩法](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Ghost/ghost_feature.md) <br>[博客跑分优化](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Ghost/ghost_fast.md)<br>--------------------------------------------------------------------------------<br>| ------- # 📱 iOS | Project | Version | Article | |:-------:|:-------:|:------| | Weex | 0.10.0 | [Weex 是如何在 iOS 客户端上跑起来的](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Weex/Weex_how_to_work_in_iOS.md)<br> [由 FlexBox 算法强力驱动的 Weex 布局引擎](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Weex/Weex_layout_engine_powered_by_Flexbox's_algorithm.md)<br> [Weex 事件传递的那些事儿](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Weex/Weex_events.md) <br>[Weex 中别具匠心的 JS Framework](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Weex/Weex_ingenuity_JS_framework.md)<br>[iOS 开发者的 Weex 伪最佳实践指北](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Weex/Weex_pseudo-best_practices_for_iOS_developers.md)<br> | | BeeHive | v1.2.0 | [BeeHive —— 一个优雅但还在完善中的解耦框架](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/beehive.md)<br>| | 组件化 | 路由与解耦 | [iOS 组件化 —— 路由设计思路分析](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/iOSRouter/iOS_Router.md)<br>| | ReactiveObjC | 2.1.2 |[函数响应式编程 (FRP) 从入门到 "放弃"—— 基础概念篇](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/functional_reactive_programming_concept.md) <br> [函数响应式编程 (FRP) 从入门到 "放弃"—— 图解 RACSignal 篇](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/ios_rac_racsignal.md) <br> [ReactiveCocoa 中 RACSignal 是如何发送信号的](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racsignal.md) <br> [ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(上)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racsignal_operations1.md)<br>[ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(中)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racsignal_operations2.md) <br> [ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(下)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racsignal_operations3.md) <br> [ReactiveCocoa 中 RACSignal 冷信号和热信号底层实现分析](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_hot_cold_signal.md)<br> [ReactiveCocoa 中 集合类 RACSequence 和 RACTuple 底层实现分析](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racsequence_ractuple.md) <br> [ReactiveCocoa 中 RACScheduler 是如何封装 GCD 的](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_racscheduler.md) <br> [ReactiveCocoa 中 RACCommand 底层实现分析](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_raccommand.md)<br> [ReactiveCocoa 中 奇妙无比的“宏”魔法](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/RAC/reactivecocoa_macro.md)| | Aspect | | [iOS 如何实现Aspect Oriented Programming (上)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Aspect/ios_aspect.md)<br>[iOS 如何实现Aspect Oriented Programming (下)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Aspect/ios_aspect.md)<br> | | ObjC | objc runtime 680 | [神经病院 Objective-C Runtime 入院第一天—— isa 和 Class](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ObjC/objc_runtime_isa_class.md)<br>[神经病院 Objective-C Runtime 住院第二天——消息发送与转发](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ObjC/objc_runtime_objc_msgsend.md) <br>[神经病院 Objective-C Runtime 出院第三天——如何正确使用 Runtime](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ObjC/how_to_use_runtime.md) <br> [ObjC 对象的今生今世](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ObjC/objc_life.md)<br>| | iOS Block | | [深入研究 Block 捕获外部变量和 __block 实现原理](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Block/ios_block.md) <br> [深入研究 Block 用 weakSelf、strongSelf、@weakify、@strongify 解决循环引用](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Block/ios_block_retain_circle.md)<br> | | iOS Simulator | | [给iOS 模拟器“安装”app文件](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ios_simulator_ios_sim.md) <br> [Remote debugging on iOS with Safari Web Inspector](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/remote_debugging_on_ios_with_safari_web_inspector.md) | | xcconfig | | [手把手教你给一个 iOS app 配置多个环境变量](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ios_multienvironments.md) <br> | | Jenkins | Weekly Release 2.15 | [手把手教你利用 Jenkins 持续集成 iOS 项目](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ios_jenkins.md) <br> | | StoryBoard | | [关于 IB_DESIGNABLE / IBInspectable 的那些需要注意的事](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ios_ib_designable_ibinspectable.md) <br> | | WWDC 2016 | | [WWDC2016 Session 笔记 - Xcode 8 Auto Layout 新特性](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/WWDC%202016/WWDC_2016_iOS10_Xcode8_AutoLayout.md) <br>[WWDC2016 Session 笔记 - iOS 10 UICollectionView 新特性](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/WWDC%202016/WWDC_2016_iOS10_UICollectionView.md) <br>[WWDC2016 Session 笔记 - iOS 10 推送 Notification 新特性](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/WWDC%202016/WWDC_2016_iOS10_Notification.md) <br> | | Jekyll | | [如何快速给自己构建一个温馨的"家"——用 Jekyll 搭建静态博客](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Jekyll/Jekyll.md) <br>| | Swift | 2.2 | [iOS如何优雅的处理“回调地狱Callback hell”(二)——使用Swift](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Swift/iOS_Callback_Hell_Swift.md) <br> | | PromiseKit | | [iOS如何优雅的处理“回调地狱Callback hell”(一)——使用PromiseKit](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/PromiseKit/iOS_Callback_Hell_PromiseKit.md) <br> | | WebSocket | | [微信,QQ 这类 IM app 怎么做——谈谈 Websocket](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/WebSocket/iOS_WebSocket.md) <br>| | Realm | | [Realm 数据库 从入门到“放弃”](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Realm/Realm%E6%95%B0%E6%8D%AE%E5%BA%93%20%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E2%80%9C%E6%94%BE%E5%BC%83%E2%80%9D.md) <br>[手把手教你从 Core Data 迁移到 Realm](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Realm/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E4%BB%8ECore%20Data%E8%BF%81%E7%A7%BB%E5%88%B0Realm.md) <br> | | Core Data | | [iOS Core Data 数据迁移 指南](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/CoreData/iOS_Core_Data.md) <br> | | Cordova | | [iOS Hybrid 框架 ——PhoneGap](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Cordova/iOS%20Hybrid%20%E6%A1%86%E6%9E%B6%20%E2%80%94%E2%80%94PhoneGap.md)<br> [Remote debugging on iOS with Safari Web Inspector](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Cordova/Remote_debug.md) <br>| | Animation | | [iOS app 旧貌换新颜(一) — Launch Page 让 Logo "飞"出屏幕](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Launchpage/iOS_launchpage_logo_fly.md) <br> | | Interview | | [iOS 面试总结](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/ios_interview.md) <br> | | Phabricator | | [搭建Phabricator我遇到的那些坑](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Phabricator/%E6%90%AD%E5%BB%BAPhabricator%E6%88%91%E9%81%87%E5%88%B0%E7%9A%84%E9%82%A3%E4%BA%9B%E5%9D%91.md)<br> [Code review - Phabricator Use guide introduce](https://github.com/halfrost/Halfrost-Field/blob/master/contents/iOS/Phabricator/Code%20review%20-%20Phabricator%20Use%20guide%20introduce.md)<br>-----------------------------------------------------------------------<br>| ---------------------------- # 📝 Protocol | Project | Version | Article | |:-------:|:-------:|:------| |HTTP|1.1|[HTTP 基础概述](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP.md)<br>| |HTTP|2|[[RFC 7540] Hypertext Transfer Protocol Version 2 (HTTP/2)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2_RFC7540.md)<br>[解开 HTTP/2 的面纱:HTTP/2 是如何建立连接的](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-begin.md)<br>[HTTP/2 中的 HTTP 帧和流的多路复用](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-HTTP-Frames.md)<br>[HTTP/2 中的帧定义](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-HTTP-Frames-Definitions.md)<br>[HTTP/2 中的 HTTP 语义](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-HTTP-Semantics.md)<br>[HTTP/2 中的注意事项](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-Considerations.md)<br>[HTTP/2 中的常见问题](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2-Frequently-Asked-Questions.md)<br>[[RFC 7541] HPACK: Header Compression for HTTP/2](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2_RFC7541.md)<br>[详解 HTTP/2 头压缩算法 —— HPACK](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2_Header-Compression.md)<br>[HTTP/2 HPACK 实际应用举例](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTP:2_HPACK-Example.md)<br>[[RFC 7301] TLS Application-Layer Protocol Negotiation Extension](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_ALPN.md)| |WebSocket|Version 13|[全双工通信的 WebSocket](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/WebSocket.md)<br>| |Protocol-buffers|proto3|[高效的数据压缩编码方式 Protobuf](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/Protocol-buffers-encode.md)<br>[高效的序列化/反序列化数据方式 Protobuf](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/Protocol-buffers-decode.md)| | FlatBuffers |1.9.0|[深入浅出 FlatBuffers 之 Schema](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/FlatBuffers-schema.md)<br>[深入浅出 FlatBuffers 之 Encode](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/FlatBuffers-encode.md)<br>[深入浅出 FlatBuffers 之 FlexBuffers](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/FlatBuffers-flexBuffers.md)| |TCP||[TCP/IP 基础概述](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TCP:IP.md)<br>[Advance\_TCP](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/Advance_TCP.md)| |TLS|Cryptography<br>|[密码学概述](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-cryptography-overview.md)<br>[漫游对称加密算法](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-symmetric-encryption.md)<br>[翱游公钥密码算法](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-asymmetric-encryption.md)<br>[消息的“指纹”是什么?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-one-way-hash.md)<br>[消息认证码是怎么一回事?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-message-authentication-code.md)<br>[无处不在的数字签名](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-digital-signature.md)<br>[随处可见的公钥证书](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-digital-certificate.md)<br>[秘密的实质——密钥](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-cipherkey.md)<br>[无法预测的根源——随机数](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-random-number.md) |TLS|TLS 1.3<br>|[如何部署 TLS 1.3 ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS1.3_start.md)<br>[[RFC 6520] TLS & DTLS Heartbeat Extension](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_Heartbeat.md)<br>[[RFC 8446] The Transport Layer Security (TLS) Protocol Version 1.3](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_RFC8446.md)<br>[TLS 1.3 Introduction](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Introduction.md)<br>[TLS 1.3 Handshake Protocol](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Handshake_Protocol.md)<br>[TLS 1.3 Record Protocol](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Record_Protocol.md)<br>[TLS 1.3 Alert Protocol](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Alert_Protocol.md)<br>[TLS 1.3 Cryptographic Computations](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Cryptographic_Computations.md)<br>[TLS 1.3 0-RTT and Anti-Replay](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_0-RTT.md)<br>[TLS 1.3 Compliance Requirements](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Compliance_Requirements.md)<br>[TLS 1.3 Implementation Notes](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Implementation_Notes.md)<br>[TLS 1.3 Backward Compatibility](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Backward_Compatibility.md)<br>[TLS 1.3 Overview of Security Properties](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/TLS_1.3_Security_Properties.md)| |HTTPS|TLS 1.2/TLS 1.3|[HTTPS 温故知新(一) —— 开篇](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-begin.md)<br>[HTTPS 温故知新(二) —— TLS 记录层协议](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-record-layer.md)<br>[HTTPS 温故知新(三) —— 直观感受 TLS 握手流程(上)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-TLS1.2_handshake.md)<br>[HTTPS 温故知新(四) —— 直观感受 TLS 握手流程(下)](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-TLS1.3_handshake.md)<br>[HTTPS 温故知新(五) —— TLS 中的密钥计算](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-key-cipher.md)<br>[HTTPS 温故知新(六) —— TLS 中的 Extensions](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/HTTPS-extensions.md)<br>| |QUIC|v44|[如何部署 QUIC ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/Protocol/QUIC_start.md)<br>------------------------------------------------------------------------<br>| ---------------------------- # ❄️ 星霜荏苒 | Project | Version | Article | |:-------:|:-------:|:------| | 开篇 | | [开篇](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/start.md)| | 2017 | |[【星霜荏苒】 - 程序员如何在技术浪潮的更迭中保持较高的成长速度 ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/2017.md)| | 2018 | |[【星霜荏苒】 - 如何看待软件开发 ?](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/2018.md)| | 2019 | |[【星霜荏苒】 - 不甘当学渣,努力作学霸,最终是学民](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/2019.md)| | 2020 | |[【星霜荏苒】 - 下一个五年计划起航 !](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/2020.md)| | 2021 | |[后疫情时代下美国留学 CS Master 申请纪实](https://github.com/halfrost/Halfrost-Field/blob/master/contents/TimeElapse/2021.md)<br>-----------------------------------------------------------------------------------------<br>| ## ❗️ 勘误 + 如果在文章中发现了问题,欢迎提交 PR 或者 issue,欢迎大神们多多指点🙏🙏🙏 ## ♥️ 感谢 感谢Star! [![Stargazers over time](https://starchart.cc/halfrost/Halfrost-Field.svg)](https://starchart.cc/halfrost/Halfrost-Field) ## 🌈 公众号 ![](./contents/images/wechat-qr-code.png) ## ©️ 转载 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />本<span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" rel="dct:type">作品</span>由 <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/halfrost/Halfrost-Field" property="cc:attributionName" rel="cc:attributionURL">halfrost</a> 创作,采用<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">知识共享署名 4.0 国际许可协议</a>进行许可。

Education & Learning Personal Dashboards
13.2K Github Stars