Recursion is widely used in solving problems during your first approach because they’re easy to implement. However, some computation may occur multiple times, this leads to inefficient and stack overflow. Dynamic programming is a technique that attempts to solve a subset of problems then using that knowledge to develop results for larger problems until you’ve reached the final result. When we are using recursion to solve a problem, we can apply dynamic programming to solve that problem in a more efficient way.
Trie is a kind of search tree. It’s commonly used for storing and searching single characters that make up one or more strings. A use-case of this is in the routing layer of a web framework to see which IP address belong to a class. This article gives some brief introductuon to trie. Hope you can find more places to apply it after this.
Now that you are familiar with a trie. Let’s look into its real life usage. When you connect to a network, your computer has to deal with IP routing, it’s process of determining where to send the IP package for the communication between your computer and other device on network. Linux, with its implementation of IPv4 routing tables using LPC-tries, offers good lookup performance (50 ns for a full view) and low memory usage (64 MiB for a full view).
Investing time in tooling and learning to understand your tools better is one of best ways to become a better developer. Vim is an editor that’s typically considered as unfriendly. This tutorial presents Vim as the English language, you construct any action by follow nouns, verbs, adverbs. Taking a bit of time to learn, you’ll will realize Vim is much easier than you think.
Backend developers often have a hard time when it comes to designing their own project. While we tend to opt for simple designs, we still have to determine how much space is needed between elements? Which colors to use? Etc. This guide is very well suited to make these decisions easier without investing delving deeply into the design field.
What is the best icon? The answer may be just a text label. When we limit out choice on things we don’t master, it helps us to make a ‘good enough’ decision. If you’re building your own side project and want to find a perfect icon for a while, then consider using text label.
Flexbox promises to save us from the evils of plain CSS (like vertical alignment). It delivers on that goal, but mastering its new mental model can be challenging.
I frequently come across confusion with domain names and DNS. Why doesn’t my website work? Why is this stupid thing broken? Everything I try fails, I just want it to work! Invariably, the question asker either doesn’t know what DNS is or doesn’t understand how it fundamentally works. More generally, people think that DNS is scary or complicated. This article is an attempt at quelling that fear. DNS is easy once you understand a few basic concepts.
Bitcoin, Etherum, and Blockchain are trending these days. However, what is Blockchain? This is a non-technical guide to understand them.
Continuing on the theme of Blockchain, This is another great introduction to blockchain, though more on the technical side. I found it great, becauase it explains what problems Blockchain wants to solve for a developer. Like what happens when we want to design an application without a central database to store everything. At the end, it has a JavaScript implementation for Blockchain. You can easily read the code and understand more about Blockchain.
It doesn’t matter if you use MySQL or PostgreSQL. You will definitely get something out from this post about techniques, especially the part about debugging process.
Last month CloudFlare shared statistics on some popular reflection attacks. Back then, the largest SSDP they recorded was: 30 Mpps (millions of packets per second), 80 Gbps (billions of bits per second), using 940k reflector IPs. Then recently they noticed an unusually large SSDP amplification that crossed the symbolic threshold of 100 Gbps. Beside the information, we can also learn about the method and tools they use to analyze the attack.
Python is a great programming language for crunching data and automating repetitive tasks. Got a few gigs of web server logs to process or a million images that need resizing? No problem! You can almost always find a helpful Python library that makes the job easy. But while Python makes coding fun, it’s not always the quickest to run. Let’s learn how to take advantage of the full processing power of your computer by running Python functions in parallel.
Docker is still trending right now. One of the main advantages of embracing containers is “lightweight virtualization”. Since each container is just a thin layer around the containerized processes, the user gains enormous efficiencies like by increasing the container density per host, or by spinning containers up and down at a very fast pace.
Docker accelerates your development and deployment cycles letting you push code out faster than ever before. But it also comes with an unexpected set of security implications that you should be aware of. This article gives five common scenarios where deploying Docker images open up new kinds of security issues you might not have considered and some great tools and advice that you can use to ensure you aren’t leaving the barn doors open when you deploy.
Diving into the world of Hash Tables and understanding the underlying mechanics is extremely interesting and very rewarding. So lets get into it and get started from the beginning.
BetterDev Link
Every Monday