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

WWDC18 Video Transcripts Now Available

WWDC 2018 subtitles support full text keyword search! In addition, videos opened by this keyword can be directly located to the location of the keyword. In addition, videos shared can also be shared at a specific time point.

The article

🐎 Swift GYB

You hear the word boilerplate a lot. It’s usually used to refer to code structures that are similar but not identical. This article gives an interesting tidbit about the origin of the word, and also introduces one of the most common tools used in Swift development for handling boilerplate code: gyb.py. Gyb. py, as the name suggests, is a Python script that can be thought of as a template generator. You can write a Swift template file in a specified format (in which you can use Python code to do some repetitive code generation). The template file is then executed using gyb.py to generate the final Swift code file.

In addition to basic usage instructions, the article also describes how to use gyb.py with Xcode. If you have a lot of Boilerplate code in your project, but don’t have Swift macros to support it, you might want to try this solution.

🐕 Web Architecture 101

There was a time when a popular interview question asked: describe what happened between the time a user typed a web address into a browser and clicked on it, and the time it finally appeared. If you are confused by this question, this article is for you. This article dissects the most common components of a popular web system. The content is very new, for example, it also introduces the concept of the popular “Data” system. In the era of big Data, More and more companies will specially open a Data Service to meet the needs of log Data storage, analysis, mining, model training and so on. Different from Database Service, which only serves the purpose of Data storage, Data Service usually refers to a complete set of logic of Data life cycle. In the past such data was often simply dumped into a logging system for periodic archiving. In addition, the classic load balancing, DNS, Cache, search components are also introduced one by one, is a rare web system entry article, recommended wall crack.

🐕 Create ML Tutorial: Getting started

Core ML makes it so easy to use models for machine learning that the only problem is how to train your models quickly. To that end, Apple launched Create ML at WWDC18. This article uses the image classifier as an example and uses Create ML as a comparison with Turi Create (acquired by Apple after WWDC17, using Python to customize models) to give you a visual idea of how to train a graphical model. How to train, evaluate and improve the model is worth further thinking.

Obviously, you can see a lot of Turi Create in Create ML, and it’s only a matter of time before all of Turi Create’s features are implemented in Create ML. On the other hand, Swift for TensorFlow has come on strong. If you want to use Core ML and you don’t know how to train models, it’s definitely recommended. The only problem is that Create ML requires macOS 10.14 Mojave Beta.

🐕 Tencent recruitment iOS interview record

The latest interview questions, one side of the regular basic questions, to help you find gaps. Second talk about the project, after reading can also review their own projects, the technology used to solve the problem is shallow, or in-depth, from the principle of understanding technology, understand the problem.

🐕 Retrofit practice of Flutter hybrid engineering

As the pioneer of Flutter in China, Xianfish team has brought us many excellent Flutter practices. This time, it is the practice of the mixed transformation of Flutter and the original iOS project. Under the framework mechanism of RN/Weex, the original iOS project only needs to introduce the basic SDK, and the JS development function only needs to introduce the jsbundle distribution/resources into the original iOS project. However, Flutter is completely different from them in mechanism. In Release Mode, the functions developed by DART need to be compiled into the iOS framework and then introduced from the original project. Therefore, the continuous integration package construction system of the existing project needs to be greatly reformed in engineering mixing. The Idle Fish team brings you their solution to this problem.

🐕 Better iOS projects: How to manage your tooling with mint

Number42’s “Better iOS Projects “series aims to collect tools and environments that make working on iOS projects easier and more efficient. This time around Mint, a dependency Manager for building Swift command-line tools through Swift Package Manager. One of Mint’s greatest strengths is the ability to specify the tool to run different versions in different project environments, which can affect development efficiency due to inconsistent environment configurations. It also supports Mintfile to configure and isolate the tools used in different projects, ensuring that each project is using the same version of the tools in all development environments. Swift development teams who have been plagued by environment configuration problems can try it out, both in terms of design ideas and use experience are good.

🐕 Git commit specifications that you might ignore Control your Git operations, so you can live a life without love.

Git is widely used today. It’s not just used for code versioning, even projects like UI Sketch are starting to use Git for version control. However, when a team reaches a certain size, not having a consistent, coherent Commit Message can be a serious impediment to development efficiency.

Both articles show how to normalize a Commit Message by introducing tools to generate Changelogs and so on from a normalized Commit Message. Although the cases in this paper are not related to iOS, they are still worth learning and referring to.

🐕 Video Streaming Tutorial for iOS: Getting Started

Ray Wenderlich’s introductory tutorial is basically a concrete, step-by-step example of how to do it, perfect for developers new to the field.

This article introduces how to develop using AVPlayer through a few simple player examples. For developers who are new to iOS video, it is a good starting point.

🐕 Implement an elegant iOS event bus

Dealing with different events is common in iOS development, and Apple offers different ways to subscribe to various types of events. Such as subscribing to different Notifications in observer mode, subscribing to different callbacks in proxy mode, or subscribing to user events in a control like UIButton in target-Action mode. Could there be a more elegant way to handle these events? Those of you who are familiar with functional responsive programming will know that ReactiveCocoa provides a set of apis via Signal subscriptions to help you easily handle these events. This article itself implements an elegant event bus mechanism that can be used elegantly through the “Define event,” “Subscribe event,” and “publish Event” trilogy.

🐎 I’m still on the road with iOS App Reverse & Security

Distance QingGe book “reverse iOS application and security” release already has more than a month, the upper part of this article QingGe published their views on learning and choice, the second part is through the reverse World Cup live App CCTV video – the iOS client of actual combat, demonstrates how to complete a simple for everyone in reverse.

The article on the view of learning, deeply agree with, excerpts to share with you:

In fact, there is no such thing as a “boss”, or everyone is a boss, but in different fields, others spend a little more time and experience than you do. In another field, we are all white. Or have you ever thought about what you’re doing just a little bit later, a little bit later, or just a little bit between who you are and who you are?

🐕 Anti-If: The missing patterns

Having a lot of nested if logical judgments in your code makes it harder to understand and less maintainable. Optimization schemes are proposed for several scenarios using IF.

🐎 In-depth understanding of iOS Crash Log

Those of you with some development experience are familiar with crash log analysis. Whether it is self-developed or third-party, or apple’s own Crash collection framework, we can often find useful exception information by symbolizing logs through DSYM files. This paper systematically introduces how to obtain the Crash Log file and how to interpret each information in the Crash Log file through a wechat Crash Log automatically collected by the system. Finally, the author shares some common Code and Debug tips of his own.

🐢 So you want to build a “Silicon Valley-like” software developer culture

We talk a lot about the “engineer culture,” and the most common one is the “silicon Valley engineer culture.” The author analyzes what engineer culture is from five angles, including efficiency, self-drive, motivation, trial and error, and growth. The process is as important as the result, and the “how to do everything” is the foundation of the engineering culture, especially for team leaders with teams.

🐕 New in iOS 12: Adding a Custom UI and Interactivity in Local and Push Notifications

Starting with iOS 10, Apple has continuously enhanced the system’s ability to push notifications, including the ability to attach images to your notifications and quick represses. In iOS12, apple has further expanded the ability to push notifications, allowing for buttons and other controls to be added directly to push details, bringing more possibilities to developers. The author describes every step required to implement the new feature in great detail.

🐕 Analysis of iOS interface performance optimization

With hardware upgrading and system optimization, there may be few targeted performance optimization in daily development, but a lot of preparatory knowledge is needed to deal with problems. This article focuses on the performance optimization of complex pages, including layout pre-typesetting, reuse pool, image pre-decoding and pre-rendering, asynchronous drawing and the pit encountered in the implementation of asynchronous drawing, recommended reading.

🐎 @autoclosure what, why and when

Swift is such a new language that if you haven’t used @Autoclosure (not @Autoreleasepool) before, I’m sure you’ll come away from this article saying “Wow!”

🐎 Atomic properties in Swift

Although Swift does not have any language support to declare atomicity of attributes, there are various APIS for locks in the framework of Apple platform. This article introduces the definition of atomicity, the definition and application scenarios of various locks, as well as the atomic attributes realized through various locks.

🐎 Reduce ViewController inheritance

This week’s Swift by Sundell article attempts to write pages without using inheritance. One ViewController for one page has become common sense, but a lot of times we don’t really need viewController-related functionality. Trying to break this common sense is the beginning of improving our code.

🐕 How To Make Your Code Readable

Code written in good and bad, and many times is not related to technical, but also is a kind of product awareness, even go it alone, after 3 months see themselves like gobbledygook code (especially with silly algorithm) are often unable to recall the time of the train of thought, what’s more, most of the project team collaborative, often by more than one person is responsible for maintaining a code, This is where the readability and maintainability of your code becomes even more important. This article from a common bad case, step by step to show the code optimization ideas, so that readers have an intuitive understanding of good code and bad code. For more examples, read the classic book Refactoring: Improving the Design of Existing Code

🐕 Two Years of Functional Programming in JavaScript: Lessons Learned

The author of this article is a senior engineer with more than ten years of development experience. This article is his experience and experience gained after two years of exposure to functional programming. How to start with functional programming for the first time; Functional programming is not about arcane concepts like Monads, but about writing clean, clean functions with no side effects; How functional programming should be viewed in teamwork; Understand the initial difficulty of switching to functional programming. The author has made a very good analysis and answer to the above points. This is a good article for those interested in functional programming.

🐕 Debugging on iOS With Unified Logging System

This topic describes the standard log feature in iOS10 and how to use it. The standard log provides a basic classification of the log, along with some key information, so the readability is greatly improved. Try it out.

🐕 IOS Video Development (1) : Video capture

In this paper, the author uses the combination of text and text to clearly introduce the iOS video capture related concepts and the working principle of video capture, and gives some pits in the process of using it, is a good reference for iOS video development to get started quickly.

🐕 Design Ops — A New Discipline

As projects get bigger and involve more and more people, there are more or less other problems, even though many companies have done processes such as agile development to ensure iterations of projects. For example, the unification of design standards, conflicts of workflow, various quality problems, etc., especially for some companies that may be more collaborative work. DesignOps is a new way of working that effectively aligns product, design, and developer with a design-as-code approach to ensure that there are no procedural issues throughout the product planning, design, development, and delivery process and improve the efficiency of the entire team. DesignOps isn’t just a theoretical thing, teams like Airbnb have been experimenting with this working model, and there are articles on DesignOps that you can Google if you’re interested. And, at present abroad already had the position that a few companies begin to recruit for a job of this respect even, believe behind can have more and more companies begin to take this seriously.

tool

IOS debug line app WebView method

The JSBox tool provides a Safari browser plug-in that can inject well-known Web console debugging tools such as Eruda/vConsole to debug online Web pages. But in the face of online tripartite apps, there is no way to start. Thor, a debugging tool, is introduced here. It modifies the content of web pages in the way of HTTP proxy and inserts debugging scripts, so as to realize the ability of debugging WebView in the online APP.

code

Awesome macOS open source applications.

A list of high quality open source apps for the Mac, including a large number of native and cross-platform apps. The main purpose of this REPo is to help developers find free open source apps and contribute code. The list breaks down apps into 36 categories based on functionality, including browsers, communications, databases, developer tools, and more, as well as listing the development language for each project. This list is valuable whether you want to reference code or find good open source software.

GPUImage3

The authors of GPUImage are incredibly productive. The shader handling part of GPUImage3 was completely rewritten using the Metal framework. Of course, GPUImage pipeline is still based on Protocol, like Swift2, using ImageSource and ImageConsumer protocols to deal with multi-filter linking. Because Metal’s shader is not written in GLSL. It was C++, so Brad Larson rewrote some of the shader code in C++. Those of you who have studied GPUImage2 will not feel any pressure to look at 3. After all, GPUImage3 is very little different from 2 without Metal content.

push

Bytedance’s Beijing iOS team continues to hire people

Bytedance is a very young startup, full of energy and passion, and we hope that more talented people will join byteDance to help people see the bigger world (Toutiao, Watermelon Video, Wukong Q&A, Understand Car, TopBuzz, News Republic…). And let more people’s beautiful life be seen (Douyin, Huoshan video, Musical.ly, Tuworm, Faceu…). , my email [email protected], or add my wechat Jingmu1994 for more information about the company and the position.

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.

Beijing – Ant Financial is looking for iOS/ Android/front-end development

Recruitment by Ant Financial, responsible for alipay membership and account business line, located in Beijing International Trade, 100 meters from the exit of Jintai Xizhao subway station. Although the recruitment link is only given to iOS JD, but the front-end/Android /iOS, similar requirements. Interested students welcome to send your resume to: [email protected]/[email protected] (the same mailbox) or this micro blog private message @ Tu Fan er _ MSG to understand the situation.

Pay attention to our

We have opened an official account, 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, Looping, @Jasonyuh, @lao Lao Lao Lao Donkey, @Ye Gu City

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)