I recently stumbled upon a package called dart_mappable
, and I feel compelled to share what I liked about it. If you're involved in Dart or Flutter development, this might be of particular interest to you.
Swift *
General-purpose, multi-paradigm, compiled programming language
Riverpod in Production
Riverpod is a powerful library that I like to think of as the Swiss Army knife of Flutter development. It offers elegant solutions for both state management and dependency injection, giving you the freedom to "cook" your app architecture just the way you like it.
Code Push in Flutter
Code Push in Flutter
In the fast-paced world of mobile app development, the ability to quickly push updates to users is crucial. Enter Code Push - a game-changing technology that allows developers to update mobile apps instantly without going through the traditional app store review process. This article explores how to implement Code Push in Flutter applications using Shorebird, a powerful tool that brings this capability to the Flutter ecosystem.
LeetCode, Hard++ (Acceptance 24%, Latest): 2867. Count Valid Paths in a Tree. DFS. O(n). Swift
The intuition is to employ a depth-first search (DFS) approach through the tree.
During each step in the traversal, we perform the following key calculations:
1. Determine the path that ends at the current node.
2. Compute two different subtree paths that traverse the current node.
3. Maintain an array that keeps track of the cases where paths contain either 0 or 1 prime number.
This method allows us to efficiently count the valid paths in the tree while considering the presence of prime numbers.
LeetCode, Hard: 2818. Apply Operations to Maximize Score. Swift
Time complexity: O(max(nums) * log(max(nums)) + n * log(n))
. Accounting for computing prime scores, using the stack to compute next greater elements, and sorting the tuples.
Space complexity: O(max(nums) + n)
. Considering the space required for arrays and the stack used for computation.
LeetCode, Hard, last two problems: 2809. Min Time to Make Array Sum At Most x & 2813. Max Elegance of a K-Length Subseq
2809. Min Time to Make Array Sum: Efficient Swift solution, using dynamic programming, for minimizing time to reach a sum in arrays A and B. Time: O(n²), Space: O(n).
2813. Max Elegance of K-Length Subseq: Swift code for elegantly selecting unique k-length subsequences with profit and categories. Solution uses sorting and iteration. Time: O(nlogn), Space: O(n).
LeetCode 2532 (Hard++, Extra Category, Amazon). Time to Cross a Bridge. Swift solution
Hard++, Extra Category.
Amazon.
Overflow checks have been taken into consideration. The maximum time to move a box is at most 4 * 1000 (four steps to move the box, each taking 1000 time). With at most 1e4 boxes, the total time is at most 4e7, ensuring the solution is safe.
iOS Dev Skills. Performance Review
CTO: Balancing Leadership and Architecture.
As a CTO, effective leadership goes beyond technical architecture. Conducting regular performance reviews is a crucial part of managing teams.
Note: The performance review schedule may vary depending on the specific
company's policies and guidelines.
For early-stage startups, lacking CTO expertise in conducting performance reviews is common. In my experience, I've tailored grades to encompass all aspects of professional iOS development, keeping project-specific needs in mind. Being the first in the team can offer significant growth opportunities. However, acknowledging any lack of people management skills and compensating through continuous growth is essential.
I've compiled my insights on structuring the iOS development department, conducting performance reviews, and most importantly, emphasizing the significant distinctions between developers' levels based on well-defined criteria.
LeetCode 2801 (Hard, Acceptance 14.5%). Count Stepping Numbers in Range. DP. Handles large inputs (10^9 + 7)
Given two positive integers low and high represented as strings, find the count of stepping numbers in the inclusive range [low, high].
A stepping number is an integer such that all of its adjacent digits have an absolute difference of exactly 1.
Return an integer denoting the count of stepping numbers in the inclusive range [low, high].
Since the answer may be very large, return it modulo 10^9 + 7.
Hard, Acceptance Level 14.5%.
Dynamic Programming (DP).
Efficiently handles large inputs (10^9 + 7).
Latest and Most Hardest Problem.
LeetCode 2790 (Hard). Maximum Number of Groups With Increasing Length. Solution of the day. O(N logN). Math
Simple Swift Math Solution.
Time complexity: O(N logN).
The time complexity
of this solution is dominated by the sorting step, making it O(N logN), where N is the length of the input array usageLimits. The rest of the operations involve simple arithmetic and comparisons, which take linear time. Therefore, the overall time complexity of the function is O(NlogN).
Only 10 lines of code.
How to Make an E-commerce App in SwiftUI
In this guide, I'm going to walk you through how to create a simple e-commerce app using SwiftUI and Firebase. The app will include basic functionalities such as product listing, shopping cart, and user authentication.
Before we get started, you should have the following installed:
LeetCode 2612 (Hard). Minimum Reverse Operations. Swift. BFS. O(n+k). O(n)
LeetCode 2612 (Hard). Minimum Reverse Operations.
The algorithm follows a breadth-first search (BFS) approach to determine the minimum number of reverse operations needed to bring the 1 to each position in the array.
To speed up the algorithm, we mark banned positions with -2 instead of using set lookups. This optimization reduces the constant coefficient and improves the speed of the algorithm, but it may still result in a time limit exceeded (TLE) error.
For each visited position, there are potentially O(k) target positions that can be reached through reverse operations. To avoid the multiplicative cost of iterating over all these potential positions, we update the nextNode2s array. This array initially points forward by 2, but we update it dynamically to point beyond all the target positions considered for each visited position. This optimization helps improve the efficiency of the algorithm and avoids unnecessary computations.
LeetCode 956 (Hard). Solution of the day. Tallest Billboard. Swift. DP
Solution of the day.
LeetCode 956 (Hard). Tallest Billboard.
The code uses dynamic programming to solve the problem. It maintains a dictionary dp, where the keys represent the possible height differences between the two billboards, and the values represent the maximum sum of heights achieved for each height difference.
SwiftUI ScrollView and non-freezing parallax
Hello everyone! My name is Nikolai, I'm iOS developer.
I got the task where I should make scrollable content, with another one at the back. Both of them should scroll synchronously but backward should be slower - like background images in cartoons or videogames.
Array of weak in Swift
In Swift, when working with objects, it’s important to manage memory correctly. One way to do this is by using weak references to avoid retaining objects too long and causing memory leaks. In this article, we will discuss how to create an array of weak references in Swift using a generic wrapper.
SwiftUI & ChatGPT. The world is changing. Again
Everything that follows from this point forward input prompts, followed by ChatCGP’s responses, complete with sample code in Swift.
> Hey ChatGPT, can you make a SwiftUI registration form with name, address and city fields?
Swift 5.7: Regex. Shorthands for optional unwrapping. Unlock existentials for all protocols
Swift 5.7: Regex. Shorthands for optional unwrapping. Unlock existentials for all protocols.
Shorthands for optional unwrapping. Improved type inference for complex closures. Better string parsing with Swift Regex. Creating a Regex with Regex literal. Creating a Regex using RegexBuilder. Unlock existentials for all protocols.
Building your own CLI with Swift Programming Language
Command-line interfaces (CLI) are a common way to use applications. In iOS, we usually use scripting languages like Bash or Ruby to build those CLIs and automate mundane tasks. The most popular CLI for app signing and build automation is, without a doubt, Fastlane, which was initially written in Ruby. Fastlane is a great tool, convenient and fairly easy to use, and a lot of effort came into building it.
However, there's a great chance you considered moving away from Fastlane to avoid learning Ruby and to lower the entry threshold for your developers. Setting up a Ruby environment could be quite tedious and require additional devs' expertise to write and support those scripts.
Explore how to build your own command line tools with Swift in this article.
The first joint project with friends or how it turned out that each of us is good in his field
Not so long ago, a good friend of mine suggested that I could make a mobile application that could allow him, as well as other less experienced football scouts, to be able to collect and store analytical information on football players, to provide reports to clubs or agencies and also to communicate with more advanced scouts.
How can it be useful?
At the moment, there is no analogue to similar applications in the Russian segment. This is because there is no great need for it. Clubs don't want to spend money on it, and agencies don't have such resources. Moreover, the implementation takes too much time. And scouts are used to working according to their own schemes and storing information in notebooks and so on. However, it does not mean that such an application cannot be useful for young scouts. It would teach you how to make reports correctly, focus on the data that football clubs and agencies are interested in, and would also allow you to select those scouts who would have potential.
By that time, I had already worked enough in mobile development to make such an application. However, the right approach for the implementation was required, in order to understand what this product should represent as a result, and also design.
By a lucky coincidence, the last question disappeared by itself because my friend's girlfriend was just finishing her design studies at Yekaterinburg University, so her graduation project became our design.
Creating UITableView with a dynamic header
Hello there! Recently, I had very cool experience at my work. I needed to set tableView with a dynamic header. The information in the header was complete in the initial state, and when the user was scrolling the table, some part in the header was smoothly hiding and the main part remained on the top. Cool, right?
Authors' contribution
WildGreyPlus 221.0miden16 170.0yeswolf 153.0illusionofchaos 140.0kuradnaths 131.0MaxRokatansky 129.8nsurl-dev 121.0yarmolchuk 119.8freetonik 112.0niklnd 112.0