Old driver iOS weekly, just for you to present valuable information.
You can also contribute to the project, if you find valuable information, articles, tools, etc., please send it to us in Issues, we will deal with it as soon as possible. Be sure to include a reason for your recommendation. Suggestions and comments are also welcome to Issues.
news
MWeb release 3.0 | start half price sale, the last three days
MWeb is a professional Markdown writing, note-taking, static blog generation software. It is an essential tool for those who have been dealing with Markdown for a long time. MWeb 3.0 brings several nice new features on top of MWeb 2.0’s excellent features such as bed uploads and support for charts:
- The new UI
- Take quick notes. Take quick notes anytime, anywhere.
- Quick search, the search function has a brand new change, and will continue to improve.
- Added the Epub export function
For more information on the changes, see the MWeb 3 release and 2.x release, as well as the comparison between the two
The WiFi Alliance has developed WPA3, the upgraded version of WPA2 certification, to make WiFi more secure
On June 25, 2018, Wi-FiAlliance® launched WPA3™, a next-generation Wi-Fi security technology that delivers state-of-the-art security protocols to the market. Building on WPA2™, WPA3™ provides additional capabilities specifically for personal and enterprise network Wi-Fi to simplify wi-fi assurance methods, enable more reliable authentication, improve encryption strength for highly sensitive data markets, and maintain the resilience of mission-critical networks. WPA3™ may be available on the next iPhone, so it’s worth checking out in advance. Explore Wi-Fi – security.
The article
🌟 Summary of articles in the first half of 2018
The content of knowledge set has always been known for its simplicity, practicality and wide coverage. Most of the content is the solution to the actual problem in the project, xiaobian suggests that we use it more small procedures, because there is a query function, can make you more efficient solution to the actual problem encountered in the project.
🐎 How Graphics Cards Work
In recent years, with the rise of short video, deep learning, mining and other fields, GPU has attracted increasing attention. People are discovering that gpus have more uses than just better running games. This article is a timely one. It introduces the preexistence and present life of GPU as well as the common architecture of GPU and the thought of such design. After reading it, the author feels more confident to join in the fun.
In addition to the introduction, this paper also analyzes the common BOTTLENECK in Gpus and some indicators of the data synchronization performance of memory graphics memory. Those of you who do video effects on mobile should know how to avoid frequently synchronizing data between memory and video memory, but after reading this article, you can gain some new optimization sense.
🐢 Test Driven Development Tutorial for iOS: Getting Started
Test-driven development (TDD) is a popular way to write software, but it is ignored by many developers or development teams in China. Our project also neglected to write Test. Recently, our project was required to write Test due to refactoring. Why? This article begins by explaining why.
-
TDD provides documentation about how developers expect the application to behave, which is kept up to date because test cases are updated along with the code.
-
Using TDD leads to better code coverage.
-
TDD is ideal for paired programming, where one developer writes tests and the other writes code to pass them, leading to faster development cycles and more powerful code.
-
Developers using TDD will have an easier time making major refactorings in the future.
If you haven’t actually used TDD yet, you can try it out with this article, which uses diagrams and code to write a very good introductory tutorial.
🐕 🚧 ReactJS vs Angular5 vs vue.js — What to Choose in 2018?
This article analyzes the strengths and weaknesses of Angular 5, ReactJS, and vue.js to help you choose the best front-end framework for your development needs. Angular is best for highly interactive Web applications, ReactJS is best for large web applications where data changes regularly, and Vue.js is best for highly adaptable user interfaces and complex single-page applications. The article also lists well-known companies that have adopted each framework.
🐕 🚧 Parallel Programming with Swift: What could possibly go wrong?
This article describes the problems that arise when using Swift for multithreading operations. If data resulting from non-atomic operations is set in multiple threads, the value is not set for thread 1, nor is it set for thread 2. Or the out-of-order execution of the CPU affects the logical judgment of different threads. You can avoid these using locks, Memory Barriers, Dispatch Queues. Deadlock, live locks, Thread Starvation, and other problems arise when using locks. In the end, you did everything you could, but the Swift compiler does not guarantee that your code order will be preserved, which can lead to other problems with your synchronization mechanism, namely that Swift itself is not 100% thread-safe. Apple provides tools for debugging concurrent operations, such as Activity Groups and Breadcrumbs, but they don’t yet support Swift.
🐕 Operation and OperationQueue Tutorial in Swift
Operation & OperationQueue, compared to GCD, can add dependencies between operations to determine their execution order, and can be unpaused and resumed. The authors use these features to improve the experience of an image list page. Add the download and processing of images to the OperationQueue. When the list page starts to slide, all OperationQueue is suspended; when the scroll stops, OperationQueue is resumed; Operation of cells outside the screen is cancelled and Operation of cells inside the screen is started, thus improving the smoothness of the list page slide.
🐕 Ways we make the Slack iOS app accessible
Accessibility for a variety of reasons, the degree of attention in China is usually far less than that in foreign countries, which can be said to be a common shortcoming in domestic application. The Slack team has made a number of optimizations for iOS app accessibility, such as banning animation/transitions for vertigo users, font scaling for visually impaired users, VoiceOver for hearing-impaired users, and so on. At the same time, it also increases the testability of the code, which is believed to have some inspiration for our daily work.
🐕 FOUND: 7 lost principles of continuous delivery
Continuous delivery plays an important role in the current product test release. The combination of Fastlane & Jenkins to build continuous integration and continuous delivery environment is also popular with iOS developers. But it’s easy to overdo it for all the wrong reasons when developing and deploying these continuous delivery environments. This article summarizes seven principles that we need to be aware of when practicing continuous delivery. Respectively is:
- Creating a reusable and reliable process for software distribution, such as continuous integration (CI) technology;
- Automation to make everything automatic;
- Everything is version-based;
- Bring forward painful processes, such as unit testing, component testing, etc.
- Keep the build and test process short, agile and iterative;
- Ensure that every part of the product build, deploy, test, and release process is visible to its participants, each of whom is a problem feedback;
- Finished means released. In product iterations, we often equate finished with development completed, but in continuous delivery management, finished should mean released to the customer;
🐎 View Controller Lifecycle Explained: When to Use viewDidLayoutSubviews
One of the things that I think everyone really thinks about when they’re learning iOS development is what the lifecycle of the View Controller is. ViewDidLoad, viewDidAppear and viewDidLayoutSubviews are illustrated by several examples in this article.
It is worth mentioning that a point of view mentioned in the article is recognized by myself. The author advocates further understanding of the framework through details, which coincides with the wisdom of our ancient people that “knowing little and seeing little” and “seeing autumn in a single leaf”.
🐢 Linear programming – Simplex algorithm in AutoLayout
The possible efficient algorithm of AutoLayout is explored from the mathematical point of view. Friends familiar with AutoLayout should know that the essence of AutoLayout implementation is to provide a multiple equation with a solution, the system to solve the equation, used to determine Layout position. Of course, when trying to solve an equation with a large number of unknowns, different algorithms give very different results. This year’s WWDC shows how important algorithms are, as apple highlighted the dramatic improvements in AutoLayout performance. The author starts from Simplex algorithm, provides the complete solution process, also provides the Python implementation of the sample code, worth learning.
🐎 A look at UIView Animation Curves Part 1 Part 2 Part 3
This article uses specific animation to show you the effect differences of various animation curves. A lot of times, we can’t really understand the difference in actual animation by looking at the names of the curves. Specific animated curves are provided to explain the effects of each curve, as well as simple custom Bezier curves. Here is a third party website to better understand the effect of control points on Bezier curves. Of course, if given the opportunity, hands-on practice can further enhance the understanding of the effects of various curves.
🐎 🚧 15 Years Ago, I Went Indie and Didn’t Know It.
On Ulysses’ 15th anniversary, Ulysses founder Max Seelemann reflects on his roots with Ulysses. Fifteen years ago, before going to college at the age of 16, he and his friends built Ulysses in their spare time. When he graduated from college in 2011, he put Ulysses on the Mac App Store, where it was a huge hit and made them a fortune for the first time. The income was enough for the two of them to last three or four months, so they enthusiastically started working full-time on Ulysses, which now has a team of 12 people.
I started indie development 15 years ago, but I had no idea what it was going to become. The author has never set an ambitious goal, but has taken steps to get to where he is today with his passion for development.
🐕 IOS code debugging: Safari/Chrome debug WebView
As more and more applications use hybrid architectures, it is inevitable for developers to interact with WebViews. This article describes how to debug WebView in emulator/real machine using Safari/Chrome. Even for iOS native developers, these skills are available, and recommended reading.
🐕 IOS code debugging: startup parameters and environment variables
OS_ACTIVITY_MODE = disable was used to mask unwanted console logs when Xcode 8.0 was introduced. Beyond that, most people probably haven’t even thought about an Edit Scheme. This article introduced the Argument/Options module in the Edit Scheme. With these two modules, we can define some additional parameters when we start the application, so that we can debug for specific scenarios. Overwriting the defaults in UserDefaults, changing the language, etc.
🐢 React Native: A retrospective from the mobile-engineering team at Udacity
Another company, Udacity, announced it was abandoning React Native. Although most of Udacity’s team were satisfied with RN’s development, the business function modules they developed using RN were taken offline, so rN-related function codes were removed from the App. They also summarized their experience in the hope of helping others. As for whether new business modules will be developed using RN again in the future, there are different views within the team. The iOS team expressed that they would like to try RN if there is an opportunity, but the Android team reserved their opinions.
From the perspective of product design, code integration, RN’s own perspective and team collaboration, this paper expounds some views and experiences of Udacity team.
- Product Design perspective: From the UI/UX design is more and more can’t do two as the design of the unified platform, always according to the properties of their respective platforms and user groups have different interaction design, leading them to actually is not how to use an RN to realize the cross-platform one-time development work, especially the diversity of the android devices too much fragmentation unique hardware function, basically use the RN, Write your own functionality on both platforms.
- Code integration: Android and iOS use their own package management tools. When RN was integrated into an existing repository, their continuous integration system was forced to adjust a lot to the introduction of RN, which was a huge burden for them and is not working very smoothly right now.
- RN’s own perspective: RN’s document loss, navigation problems, page performance problems, in fact, there are a lot of discussions in the RN-related community, not only that, every time Google IO or WWDC releases new functions, RN components follow up slowly is also a problem.
- From the perspective of team collaboration: as their product design has different functions for Android and iOS, JS is often faced with a problem when it iterates quickly. When one platform develops or fixes a function quickly, it is easy to cause problems on another platform. In the past, bug repair only needs to know one platform, but now it needs to consider js, Android and iOS platforms at the same time, which increases communication costs and testing costs.
🐎 Tired of Core ML? Try Google ML
This year, Google I/O released a cross-platform machine learning framework called Google ML. The main feature of this framework is that it can be used directly out of the box with models that Have been trained by Google, including expression recognition, text recognition, and image identification. For those who are interested, check out this tutorial. Write your own Not Hotdog app 😏.
🐎 Should programmers take the blame?
In this article, Peak shared the Review process and treatment ideas of online accidents on Facebook, and compared the different approaches of domestic and foreign teams to the responsibility of accidents. Peak himself tends to agree with the practice of focusing on the matter rather than the person, suggesting that the loopholes in the process should be identified rather than the qualitative negligence of human. In my opinion, the domestic system is to keep the tension of the team in essence, which is a good management tool for the team with low engineering level. It can ensure that the whole management system will not rot. It belongs to the initial stage of leading to high performance team, and it is difficult for us to achieve success in one step under the domestic environment.
🐢 REST vs. GraphQL: A Critical Review
The current REST-style API architecture approach, which models resources rather than procedures, has become the dominant solution. So it decouples the work of the front end and the back end very well, and you just need to design the API and develop it separately.
GraphQL is a hot technical topic recently. Compared with REST and RPC, it takes advantage of both. It is not resource-oriented, nor process-oriented, but data-oriented. GraphQL itself needs to use strongly typed Schema to define the data model, so it is more restrictive than REST, so GraphQL also has the nickname REST 2.0
This paper compares the advantages, disadvantages and application scenarios of REST and GraphQL respectively, which is of great reference value to readers who want to make technical solutions for new projects.
REST API, GraphQL is long 30 minutes Understand the core concepts of GraphQL
🐎 A fresh way to build native apps for Apple platforms with Swift
Today, more and more features are integrated into apps, requiring developers to pay a lot of attention to things like in-app purchases, system permissions, Universal Links, Siri support, and so on. We’ve been waiting for a simple framework to quickly implement these basic features, and Flint is the one that makes it easy. Flint allows us to focus more on product features. It uses the feature-Driven Development (FDD) model, where you can program around features and actions, and Flint will help you with the rest. Flint is ideal for rapid, iterative development for small teams and individual developers. If you’re interested, try a new way of thinking about development.
🐕 Technical architecture of Huawei Quick Application Engine
In March 2018, Huawei and 9 mobile phone manufacturers, including Xiaomi, Oppo and Vivo, jointly released the fast Application Alliance standard. Fast application is a new type of application based on mobile hardware platform. It requires no installation, is point-and-use, and has native application experience (performance, system integration, interaction, etc.).
This paper describes the technical architecture of Huawei Quick Application, and solves the network delay problem by “streaming loading”, and solves the first screen rendering problem by “snapshot”. Although both are Android platforms, the study of their engine cores can help you develop or deploy out-of-platform solutions.
🐢 How to integrate your App into Files in iOS 11
For the first time, iOS 11 includes a file management App that makes it easier to manage Files on phones and tablets. It also provides an API for integrating third-party apps into Files Apps. If your App relies heavily on file management like Dropbox or Office, Then this article is very suitable for you, the author through the Demo line by line code to take you through the access process, and the process of all points need to pay attention to are very detailed, is absolutely a beginner friendly article.
🐎 Meituan product: EasySequence
Meituanin China has been a veteran player of MVVM and FRP, not long ago they just announced that they will open source a set of response-based basic library EasyReact, but also will open source and related to the other Easy series framework, this just open source EasySequence must be one of them. Students interested in this piece of technology, can first Down the first open source of this framework, I believe that the following open source series of Easy framework will bring a strong fresh blood to the field.
🐕 🚧 What It Was Like to Write a Full Blown Flutter App
The author has 17 years of development experience, nearly 4 of which have been focused on iOS development, during which time he has also been exposed to cross-platform frameworks such as React Native and Flutter. After he made a complete Flutter application, he felt he could safely put more effort into the Flutter framework. He also plans to teach others how to use Flutter from start to finish by porting his Steady Calendar application to Flutter. Those who are interested in Flutter should not miss out. Classes will start on July 18th and you will be notified as soon as possible by signing up for a mailing list.
This article begins with a description of the author’s thoughts on mobile/cross-platform development, followed by a list of my own experiences porting iOS apps to Flutter, some thoughts after learning Flutter, and some advice for the Google team. There are a lot of references to development experiences, tutorials, and UI design. It can be seen that the author has a strong dependence on the Flutter community and a strong sense of attachment to user experience. This also shows that many people are very optimistic about Flutter, indicating that Flutter is starting the next phase of cross-platform development.
🐎 UITableView Infinite Scrolling Tutorial
This is a novice article. I showed you how to construct an infinitely scrollable TableView. It covers network requests, TableView basics. It is worth mentioning that this article uses the Prefetching API introduced after iOS10 to optimize the performance and experience of TableView.
🐕 Track the location defined by objective-C Block code
Tracking Block Argument Objects in Objective-C Methods was covered in a previous weekly article. On this basis, this paper obtains Mangle Name through Mach-O file format and analyzes it according to Clang source code implementation, and explores how to track the location of block code definition.
design
🐕 The iPad as a fast, precise tool for creativity
This article from the Ink & Switch research team looks at how iPad apps can become desktop-level productivity tools (without even relying on physical keyboards) :
- Using Apple Pencil to provide efficient operation mode (drawing □ is new, drawing ∧ is copy, drawing ∨ is paste, drawing × is delete)
- Minimize the number of buttons on the interface (especially near the border) and allow users to grab the iPad as they wish (like a paper laptop) without accidentally touching it
- Provide a desktop-like menu bar shortcut list for each interface
- Remove all indirect operations (such as long press trigger) and use drag and drop instead
- Provide users with instructions for productivity tools (e.g. Photoshop, Vim, AutoCAD, etc.)
tool
50 Best Free Datasets for Machine Learning
There is a big difference between deep learning research and production. In academic research, people generally pay more attention to the design of model architecture and use smaller data sets. Andrej Karpathy, Head of AI at Tesla, showed a chart at a conference showing how industry and academia spend time on data and models. From this graph, we can see that industry spends much more time processing data sets than academic research, accounting for almost three-quarters of the time. Here is a list of 50 free large data sets that can be used to train models, greatly reducing the time researchers and developers spend finding the right data sets.
code
Bartinter
Bartinter is a status bar appearance manager that dynamically changes the status bar color based on the background content of the status bar to make the status bar clear and easy to read.
push
Bytes to beatBeijing iOS team continues to recruit people
It’s a very young startup, full of energy and passion, and only hires good people to do challenging things together. You can send your resume and desired position to my email address [email protected], or add my wechat jingmu1994 to learn more information about the company. If necessary, I can directly help you communicate with the technical Leader.
Shenzhen Toutiao R & D center sincerely invites all iOS masters to work together to please their own projects
If you want to know more information about Shenzhen toutiao, you can add small T wechat: Tomtan, to discuss technology and feelings can oh ~~~~
Hangzhou/Guangzhou/Shenzhen Qizhi Technology recruitment iOS, front-end
Since 2016, Qizhi Technology has entered the field of Internet of Things and artificial intelligence through collaborative workflow Mesh of industrial UAV, and successfully provided UAV solutions for real estate, construction, surveying and mapping, power inspection and other industries. Mesh not only uses YARN, rollup, VUE and other technology stacks, but also uses Couchbase to design multi-terminal data synchronization schemes and conducts in-depth research on React Native. You can also get to know zhuo, who has no story, by private message on weibo.
Baidu Education Business Division recruiting iOS development
There are baidu Reading, Baidu Library, Baidu Listening and other App products under the department. The team has a strong technical atmosphere. If you are interested, please send your resume to my email: [email protected].
Shanghai – Join Jike
Jike iOS team has been using pure Swift development for more than three years from the very beginning, and is the earliest team using Swift on a large scale in China. We prefer frameworks like RxSwift and Texture to work with the best engineers to create the best app that works with the highest standards. If you know a smart, hardworking, ambitious engineer, come and join us! Any references or resumes can be sent directly to Jason (Immediate iOS Leader) at [email protected] or @jasonyuh on Twitter.
Pay attention to our
We have opened a public account [OldDriverWeekly], which will push messages when each issue is released. Welcome to follow it.
RSS feeds are also supported: github.com/SwiftOldDri… .
The current editor
@No story Zhuo, @Siniang, @Mmoaay, @Xiangerxiansen, @DamonWong, @Msg, @Zhang Jiafu, @Aidenrao, @Parsifal, @Aaaron7, @Fang Qiulong, KYO, TOM510230, Anotheren, Shuishui, @ JasonYuh looping
instructions
🚧 indicates the need to climb the wall, and 🌟 indicates the editor’s recommendation
Estimated reading time: 🐎 in a short time (1-10 mins); 🐕 medium (10-20 mins); 🐢 slow (20+ mins)