Open yaobinwen opened 1 year ago
A tutorial of overview of async programming (along with concurrency and parallel).
(A book that teaches non-programmers about what computer programming is.)
What is computer programming? I'm going to offer a short explanation below but it may not make much sense to you yet. Don't worry. Keep reading and I'll explain with more details.
Computer programming is about learning the available capabilities of the computer, analyzing the problem to be solved, figuring out the solution that consists of actions that are not beyond the computer's capabilities, and describing the solution in a language that the computer can understand.
I will use an everyday scenario to explain it.
Imagine that you are inviting a couple of friends to have dinner at your home. You meal plan is dumplings from a local Chinese restaurant (let's call it Mr. Wonton) followed by a certain desert. Because you have other things to prepare for your friends' visit, you plan to ask your daughter, Emily, to go pick up the dumplings and buy desert in Walmart.
So you say to your daughter:
"Emily, I ordered some dumplings from Mr. Wonton. Go get the car key on the kitchen table. Drive to the restaurant and get the food. On the way back, stop by Walmart to buy some desert. Then come back.
Here:
Demonstrate how to deploy a Consul cluster
This can be an independent repository, using the following references:
Implement an extension that can help me insert date/time in changelog
for a Debian package. Refer to this page.
References:
This idea comes from this comment of this question:
If someone decides to write a good documentation for graphviz and sell it — he'll become a billionaire in a month.
Reference: 11 Cybersecurity Projects to Grow Your Skills & Portfolio
Packet sniffers monitor network traffic for suspicious activity. They also capture and analyze data packets that flow between devices within the same network, and monitor packets that are exchanged between networked devices and the internet.
Building a packet sniffer is an opportunity to practice networking and programming skills. You can create a simple packet sniffer in Python with a socket module. After configuring your socket module to capture packets from the network, you’ll write Python scripts to extract those captured packets.
Keyloggers track each keyboard stroke on a device. While hackers use keyloggers to steal sensitive information, cybersecurity professionals use these applications to surveil user behavior and detect unusual activity.
To build a keylogger software, download and install Python’s pynput library. With this library, you’ll be able to monitor keyboard and mouse inputs. You’ll also be able to deliver log keystrokes to a specific location—like an email, server, or local system storage. For a slightly more challenging project, try building a keylogger for a virtual keyboard.
Data recovery skills are vital to cyber incident response, as malware can corrupt, destroy, or manipulate data. Ransomware attacks encrypt a victim’s data and demand payment for decrypting the files.
Outline a ransomware data recovery procedure to practice data retrieval skills. Focus on restoring the affected systems from a backup. Next, build a plan for using data recovery tools to extract corrupted or deleted data from storage devices.
Publishing a tool comparison guide will help you solidify your knowledge of cybersecurity tools. Be sure to cover various categories of cybersecurity tools, including:
Explain the function of each type of tool and provide examples of common use cases. Compare popular open-source and paid tools, and discuss the pros and cons of each.
Recent cyberattacks have shut down fuel pipelines, compromised water treatment plants, and extracted ransoms of $50 million. Try analyzing one of these high-profile cyberattacks in a case study.
First, contextualize the event. Explain the security posture of the target at the time of the incident, and pinpoint which vulnerabilities the attackers exploited. Dissect how the attack was executed and outline the target’s response. Review the impact of the attack and reflect on actions that could have reduced risk, minimized damages, or prevented the incident. Summarize lessons learned from the cyberattack.
SQL injections are attack vectors that use malicious SQL code to manipulate back-end databases. Hackers use SQL injections to access private information and commandeer administrative rights to a database.
To practice SQL injection vulnerability remediation, set up a virtual machine by signing up for a free-tier Amazon Web Services account. Then practice executing SQL injection using
an authorized educational website. Once you uncover the website’s vulnerabilities, figure out how to fix them by editing the PHP files on your virtual machine. Write up an SQL vulnerability assessment with security recommendations to summarize your findings.
Credit cards, debit cards, and passports have scannable radio frequency identification (RFID) tags that enable contactless payment. In a skimming attack, unauthorized actors scan RFID tags to illegally access credit card details and other private information.
Try creating software that blocks RFID readers, or build an application that alerts users to unauthorized RFID scanning.
This project resembles a routine audit conducted by a security team. Before you begin, be sure to obtain permission to analyze an existing website. Or, consider using your own website.
First, collect and analyze data to identify vulnerabilities. Document the scope of each security issue and how you assessed it. Prioritize each risk according to severity. Include an executive summary accessible to non-technical readers. Strive for brevity.
Encryption is a cybersecurity technique that scrambles and encodes private data. Authorized users can decrypt data using an encryption key. Working with text encryption—which uses cryptographic algorithms to convert text data into a cipher or hash code—will help you analyze the structure of commonly used encryption algorithms like Caesar Cipher, Beaufort Cipher, and Autokey Cipher.
Try building your own text encryption software, or create an app to encrypt files using existing algorithms. Use the Amazon Web Services Encryption Software Development Kit to implement encryption in an application. Once you’re comfortable with text encryption, try your hand at image encryption.
Cybersecurity policies document technical and behavioral recommendations. This is done to codify cybersecurity practices and guide an organization’s cybersecurity posture.
To create a cybersecurity policy from scratch, identify and prioritize the organization’s assets and risks. Outline the protocols and procedures that will safeguard these assets, and explain how security vulnerabilities will be neutralized. Create an incident response plan and assess relevant cybersecurity regulations to build a compliant policy.
Organizations hire ethical hackers to uncover vulnerabilities in a system or application. Hone your ethical hacking skills and advance your knowledge of application security with Android, the world’s most popular operating system.
This project will teach you the basics of Android penetration testing and help you learn to locate vulnerabilities in Android applications. Because Android is a Linux-based operating system, you’ll get the chance to build experience with Kali Linux, an advanced penetration testing Linux distribution used for ethical hacking.
I'm not sure if this is really useful or convenient, but I should at least look into it:
When logs are separated in multiple files (possibly because each component generates their own log files), it may take a lot of time to analyze the log files in order to figure out the big picture of what has happened. One challenge is to arrange all the log messages on the same time line to see the sequence of the events. Observability might be the concept that tries to solve this problem.
I'm thinking of this:
fluentd
is a tool to reformat log messages and store the messages into a central place, such as a database. Therefore, we can use fluentd
to generate log messages in a particular format.Time | Component 1 | Component 2 |
---|---|---|
T1 | Message 1 | (N/A) |
T2 | Message 2 | (N/A) |
T3 | Message 3 | Message 1 |
T4 | Message 4 | Message 2 |
Description
This issue records the personal project ideas. It also prioritizes them according to my current interests.