Pull to refresh
4
0
Sergey Leschev ✓⃝ @Leschev

System Architect | Team Lead | CTO

Send message

React Custom Hook: useLongPress

Level of difficultyMedium
Reading time2 min
Views1.5K

One of the key advantages of useLongPress is its simplicity. By utilizing this hook, developers can easily define a long-press action on any element in their React application. With just a few lines of code, the hook takes care of handling the intricacies of tracking the long-press duration and triggering the associated callback function.

Read more
Total votes 2: ↑1 and ↓1+1
Comments0

React Custom Hook: useGeolocation

Level of difficultyMedium
Reading time2 min
Views2.5K

One of the key advantages of useGeolocation is its simplicity. By encapsulating the complex logic required for geolocation access and handling, this hook provides a clean and reusable solution. The hook automatically handles the loading state, updating it when geolocation data is being fetched, and sets the error state if any issues arise during the process.

Read more
Total votes 2: ↑1 and ↓1+1
Comments0

React Custom Hook: useFetch

Level of difficultyMedium
Reading time2 min
Views4K

One of the key advantages of useFetch is its simplicity. By abstracting away the fetch logic into a reusable hook, developers can quickly and effortlessly make HTTP requests and handle responses without repetitive boilerplate code. With just a few lines, useFetch handles the network request, parses the JSON response, and provides the resulting data.

Read more
Total votes 3: ↑0 and ↓3-3
Comments0

React Custom Hook: useEventListener

Level of difficultyMedium
Reading time2 min
Views1.8K

The useEventListener hook is a versatile tool that can be used in a wide range of scenarios. Whether you need to capture keyboard events, listen for scroll events, or interact with user input, this hook has got you covered. Its simplicity and elegance make it an ideal choice for any React project, from small-scale applications to large-scale enterprise solutions.

Read more
Rating0
Comments0

React Custom Hook: useDeepCompareEffect

Level of difficultyMedium
Reading time3 min
Views2.6K

One of the key advantages of useDeepCompareEffect is its ability to prevent unnecessary re-renders. By performing a deep comparison between the current and previous dependencies, the hook intelligently determines if the effect should be triggered, leading to optimized performance in scenarios where shallow comparisons fall short.

Read more
Rating0
Comments0

React Custom Hook: useDebugInformation

Level of difficultyMedium
Reading time3 min
Views2.5K

The useDebugInformation hook can be applied in various scenarios. For instance, imagine you're working on a complex form component where certain props trigger updates or affect rendering. By utilizing useDebugInformation, you can easily monitor how these props impact your component's performance and whether unnecessary re-renders are occurring. Additionally, the hook can be invaluable when investigating why a specific component is not updating as expected or when fine-tuning optimizations in a performance-critical application.

Read more
Total votes 2: ↑1 and ↓1+2
Comments0

React Custom Hook: useDarkMode

Level of difficultyMedium
Reading time4 min
Views2.6K

One of the main advantages of "useDarkMode" is its simplicity. With just a few lines of code, you can enable dark mode in your React application. By invoking this hook, you'll receive the current dark mode state and a function to toggle it.

The "useDarkMode" hook dynamically updates the HTML body class to apply the "dark-mode" styling whenever dark mode is enabled. This approach ensures consistency across all components without the need for manual class manipulation.

Read more
Total votes 4: ↑2 and ↓2+2
Comments0

React Custom Hook: useArray

Level of difficultyMedium
Reading time2 min
Views6.4K

In this article series, we embark on a journey through the realm of custom React hooks, discovering their immense potential for elevating your development projects. Our focus today is on the "useArray" hook, one of the many carefully crafted hooks available in the collection of React custom hooks.

Read more
Rating0
Comments0

LeetCode 2532 (Hard++, Extra Category, Amazon). Time to Cross a Bridge. Swift solution

Level of difficultyHard
Reading time5 min
Views1.2K

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.

Read more
Rating0
Comments0

LeetCode 2790 (Hard). Maximum Number of Groups With Increasing Length. Solution of the day. O(N logN). Math

Level of difficultyMedium
Reading time3 min
Views1.2K

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.

Read more
Rating0
Comments0

iOS Dev Skills. Performance Review

Reading time2 min
Views1K

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.

Read more
Rating0
Comments0

LeetCode 2801 (Hard, Acceptance 14.5%). Count Stepping Numbers in Range. DP. Handles large inputs (10^9 + 7)

Level of difficultyMedium
Reading time3 min
Views710

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.

Read more
Rating0
Comments0

Supercharge Your React Projects with Custom Hooks

Level of difficultyMedium
Reading time42 min
Views8.9K

In this article, we dive into the world of custom React hooks and explore the incredible potential they hold for supercharging your work projects. With over 20 carefully crafted hooks at your disposal, I personally utilize these hooks in my own work projects, and now I'm excited to share them with you. From enhancing functionality to streamlining workflows, these custom hooks are designed to empower developers and deliver user-friendly experiences. Join us on this journey as we unleash the power of these 20+ hooks and unlock new levels of productivity and innovation in your React projects.

Read more
Total votes 1: ↑1 and ↓0+1
Comments2

Swift 5.7: Regex. Shorthands for optional unwrapping. Unlock existentials for all protocols

Level of difficultyMedium
Reading time3 min
Views1.1K

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.

Read more
Rating0
Comments0

SwiftUI & ChatGPT. The world is changing. Again

Level of difficultyEasy
Reading time4 min
Views3K

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?

Read more
Total votes 5: ↑4 and ↓1+3
Comments1

Array of weak in Swift

Level of difficultyMedium
Reading time2 min
Views4.9K

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.

Read more
Total votes 1: ↑1 and ↓0+1
Comments0

LeetCode 956 (Hard). Solution of the day. Tallest Billboard. Swift. DP

Level of difficultyHard
Reading time2 min
Views2.3K

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.

Read more
Total votes 3: ↑2 and ↓1+2
Comments0

LeetCode 2612 (Hard). Minimum Reverse Operations. Swift. BFS. O(n+k). O(n)

Level of difficultyHard
Reading time3 min
Views1.6K

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.

Read more
Total votes 2: ↑2 and ↓0+2
Comments0
2

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Mobile Application Developer
Lead
SWIFT
SwiftUI
TypeScript
Node.js
React
JavaScript
SQL
PostgreSQL
DevOps
React Native