Dynamic Programming – From Novice to Advanced
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.
A brief Introduction to Tries
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.
IPv4 Route Lookup on Linux
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).
A Vim Tutorial and Primer
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.
Eight Rules About Color Palettes That Everyone Should Know
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.
The Best Icon is a Text Label
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.
DNS: The Good Parts
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.
Blockchain for Beginners
Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS
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.
Quick Tip: Speed up your Python data processing scripts with Process Pools
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.
Container Isolation Gone Wrong
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 Security Best Practices
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.
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this