Computer Science and Programming
Channel specialized for advanced topics of: * Artificial intelligence, * Machine Learning, * Deep Learning, * Computer Vision, * Data Science * Python For Ads: @otchebuch & @cobbl, https://telega.io/c/computer_science_and_programming
Show more155 967Subscribers
+3124 hours
+2307 days
+75930 days
Posts Archive
ยกHola! ๐๐ป
AmigoChat - AI GPT bot. Best friend and assistant:
- generate images
- get ideas and hashtags for social media
- write SEO texts
- rewrite and summarize longreads
- choose a promotion plan
- chat and ask questions
Everything is FREE because amigos don't take dineros for help! ๐ค
๐ 17๐ 1
So, how they solved it? ๐ง๐ต๐ฒ๐ ๐ณ๐ถ๐ฟ๐๐ ๐๐ฟ๐ถ๐ฒ๐ฑ ๐๐ผ ๐๐ป๐ฑ๐ฒ๐ฟ๐๐๐ฎ๐ป๐ฑ ๐ต๐ผ๐ ๐๐ต๐ฒ ๐๐๐๐๐ฒ๐บ ๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐. They tracked what Elixir processes were doing, if they were stuck waiting on something, etc. They recorded the event types, how many of each kind of message they received, and their processing times. In addition, they tried to understand how much memory they use, the performances of garbage collectors, etc.
After the analysis, they ๐ฐ๐ฟ๐ฒ๐ฎ๐๐ฒ๐ฑ ๐๐ต๐ฒ ๐ณ๐ผ๐น๐น๐ผ๐๐ถ๐ป๐ด ๐๐๐ฟ๐ฎ๐๐ฒ๐ด๐:
๐ญ. ๐ฃ๐ฎ๐๐๐ถ๐๐ฒ ๐๐ฒ๐๐๐ถ๐ผ๐ป๐: Discord significantly reduced the amount of data processed and sent by differentiating between active and passive user connections, cutting the fanout work by 90% for large servers.
๐ฎ. ๐ฅ๐ฒ๐น๐ฎ๐๐: Implementing a relay system (read - multithreading) allowed Discord to split the fanout process across multiple machines, enabling a single guild to utilize more resources and support more prominent communities. Relays maintain connections to the sessions instead of the guild and are responsible for doing fanout with permission checks.
๐ฏ. ๐ช๐ผ๐ฟ๐ธ๐ฒ๐ฟ ๐ฝ๐ฟ๐ผ๐ฐ๐ฒ๐๐๐ฒ๐ ๐ฎ๐ป๐ฑ ๐๐ง๐ฆ: To maintain server responsiveness, Discord employed worker processes and Erlang Term Storage (ETS) for operations requiring iteration over large sets of members, thus avoiding bottlenecks in the guild process. ETS is an in-memory database that supports the ability of multiple Elixir processes to access it safely. This enables the creation of a new worker process and passes the ETS table so this process can run expensive operations and offload the central guild server.
๐https://discord.com/blog/maxjourney-pushing-discords-limits-with-a-million-plus-online-users-in-a-single-server
๐ 19
๐๐ผ๐ ๐ฑ๐ผ๐ฒ๐ ๐๐ถ๐๐ฐ๐ผ๐ฟ๐ฑ ๐ต๐ฎ๐ป๐ฑ๐น๐ฒ ๐ฎ ๐บ๐ถ๐น๐น๐ถ๐ผ๐ป ๐ผ๐ป๐น๐ถ๐ป๐ฒ ๐๐๐ฒ๐ฟ๐ ๐ถ๐ป ๐ฎ ๐๐ถ๐ป๐ด๐น๐ฒ ๐๐ฒ๐ฟ๐๐ฒ๐ฟ?
As time passed, the overall size of Discord's user base, including its most prominent communities, has grown massively. This affected servers that started to slow down and hit their throughput limits. So, they needed to scale individual Discord servers from tens of thousands to millions of concurrent users.
Whenever someone sends a message on Discord or joins a channel, they need to update the date UI of everyone online on that server. They call that server a "๐ด๐๐ถ๐น๐ฑ," which runs in a ๐๐ถ๐ป๐ด๐น๐ฒ ๐๐น๐ถ๐
๐ถ๐ฟ ๐ฝ๐ฟ๐ผ๐ฐ๐ฒ๐๐, while there is another process (a "๐๐ฒ๐๐๐ถ๐ผ๐ป") for each connected client. The guild process tracks sessions of users who are members of that guild and are responsible for actions to those sessions. When sessions get updates, forward them to the web socket socket to the client.
The main issue is that ๐ฎ ๐๐ถ๐ป๐ด๐น๐ฒ ๐บ๐ฒ๐๐๐ฎ๐ด๐ฒ ๐ป๐ฒ๐ฒ๐ฑ๐ ๐๐ผ ๐ด๐ผ ๐๐ผ ๐๐ต๐ฒ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ ๐ผ๐ณ ๐ฝ๐ฒ๐ผ๐ฝ๐น๐ฒ ๐ผ๐ป๐น๐ถ๐ป๐ฒ on that server, which means if a server has 1000 people online and they all send a message once, that's 1 million notifications.
๐ 8๐ 1
๐ฎ๐ฌ ๐ฆ๐ค๐ ๐พ๐๐ฒ๐ฟ๐ ๐ผ๐ฝ๐๐ถ๐บ๐ถ๐๐ฎ๐๐ถ๐ผ๐ป ๐๐ฒ๐ฐ๐ต๐ป๐ถ๐พ๐๐ฒ๐
Below are the SQL query optimization techniques that I found to be significant, listed in the top 20:
1. Create an index on huge tables (>1.000.000) rows
2. Use EXIST() instead of COUNT() to find an element in the table
3. SELECT fields instead of using SELECT *
4. Avoid Subqueries in WHERE Clause
5. Avoid SELECT DISTINCT where possible
6. Use WHERE Clause instead of HAVING
7. Create joins with INNER JOIN (not WHERE)
8. Use LIMIT to sample query results
9. Use UNION ALL instead of UNION wherever possible
10. Use UNION where instead of WHERE ... or ... query.
11. Run your query during off-peak hours
12. Avoid using OR in join queries
14. Choose GROUP BY over window functions
15. Use derived and temporary tables
16. Drop the index before loading bulk data
16. Use materialized views instead of views
17. Avoid != or <> (not equal) operator
18. Minimize the number of subqueries
19. Use INNER join as little as possible when you can get the same output using LEFT/RIGHT join.
20. Frequently try to use temporary sources to retrieve the same dataset.
๐ 45
โฐOnly a few hours left to join the Solcraft presale
Crypto markets are rebounding quickly and Bitcoin halving is in less than 5 days ๐
Combine the most successful game title (Minecraft) with the fastest growing blockchain (Solana) and you create the hottest GameFi project of 2024 โข Solcraft
โ
Custom Minecraft Server - Live
โ
$SOFT Token Integration Complete
โ
Team with Ex-Microsoft & Steam Developers
Huge Partnerships ๐ค Massive Launch April 16th
The $SOFT presale ends in under 24 hours ๐
Presale
Find out more: Website โข TG โข Twitter
๐ 11๐ 1
๐ฆ๐๐ฎ๐ฐ๐ธ ๐ข๐๐ฒ๐ฟ๐ณ๐น๐ผ๐ ๐๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ ๐๐ ๐ก๐ผ๐ ๐ช๐ต๐ฎ๐ ๐ฌ๐ผ๐ ๐ ๐ฒ๐ฎ๐ป ๐๐ ๐๐
In the recent interview with Scott Hanselman, ๐ฅ๐ผ๐ฏ๐ฒ๐ฟ๐๐ฎ ๐๐ฟ๐ฐ๐ผ๐๐ฒ๐ฟ๐ฑ๐ฒ, ๐๐ฒ๐ฎ๐ฑ ๐ข๐ณ ๐๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ๐ถ๐ป๐ด ๐ฎ๐ ๐ฆ๐๐ฎ๐ฐ๐ธ ๐ข๐๐ฒ๐ฟ๐ณ๐น๐ผ๐, revealed the story about the architecture of Stack Overflow. They handle more than 6000 requests per second, 2 billion page views per month, and they manage to render a page in about 12 milliseconds. If we think about it a bit, we could imagine they use some kind of ๐บ๐ถ๐ฐ๐ฟ๐ผ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ ๐๐ผ๐น๐๐๐ถ๐ผ๐ป ๐๐ต๐ฎ๐ ๐ฟ๐๐ป๐ ๐ถ๐ป ๐๐ต๐ฒ ๐๐น๐ผ๐๐ฑ ๐๐ถ๐๐ต ๐๐๐ฏ๐ฒ๐ฟ๐ป๐ฒ๐๐ฒ๐.
But the story is a bit different. Their solution is 15 years old, and it is a ๐ฏ๐ถ๐ด ๐บ๐ผ๐ป๐ผ๐น๐ถ๐๐ต๐ถ๐ฐ ๐ฎ๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป ๐ฟ๐๐ป๐ป๐ถ๐ป๐ด ๐ผ๐ป-๐ฝ๐ฟ๐ฒ๐บ๐ถ๐๐ฒ๐. It is actually ๐ฎ ๐๐ถ๐ป๐ด๐น๐ฒ ๐ฎ๐ฝ๐ฝ on IIS, which runs 200 sites. This single app is running on nine web servers and a single SQL Server (with the addition of one hot standby).
They also use ๐๐๐ผ ๐น๐ฒ๐๐ฒ๐น๐ ๐ผ๐ณ ๐ฐ๐ฎ๐ฐ๐ต๐ฒ, one on SQL Server with large RAM (1.5TB), where they have 30% of DB access in RAM and also they use two Redis servers (master and replica). Besides this, they have 3 tag engine servers and 3 Elastic search servers, which are used for 34 million daily searches.
All this is handled by a ๐๐ฒ๐ฎ๐บ ๐ผ๐ณ ๐ฑ๐ฌ ๐ฒ๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ๐, who manage to ๐ฑ๐ฒ๐ฝ๐น๐ผ๐ ๐๐ผ ๐ฝ๐ฟ๐ผ๐ฑ๐๐ฐ๐๐ถ๐ผ๐ป ๐ถ๐ป ๐ฐ ๐บ๐ถ๐ป๐ several times daily.
Their ๐ณ๐๐น๐น ๐๐ฒ๐ฐ๐ต ๐๐๐ฎ๐ฐ๐ธ is:
๐น C# + ASP. NET MVC
๐น Dapper ORM
๐น StaeckExchange Redis
๐น MiniProfiler
๐น Jil JSON Deseliazier
๐น Exceptional logger for SQL
๐น Sigil, a .Net CIL generation helper (for when C# isnโt fast enough)
๐น NetGain, a high-performance web socket server
๐น Opserver, monitoring dashboard polling most systems and feeding from Orion, Bosun, or WMI.
๐น Bosun, backend monitoring system, written in Go
๐ 48
๐๐ผ๐ ๐ง๐ผ ๐๐ป๐ฎ๐ฏ๐น๐ฒ ๐๐ผ๐ป๐๐ถ๐ป๐๐ผ๐๐ ๐๐ป๐๐ฒ๐ด๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐๐ถ๐๐ต ๐ฃ๐๐น๐น ๐ฅ๐ฒ๐พ๐๐ฒ๐๐๐?
With Pull Requests, we lost the ability to have a proper Continuous Integration (CI) process in a way that delayed integration due to code reviews. So here comes a โShip/Show/Askโ branching strategy. The thing is that not all pull requests need code reviews.
So, whenever we make a change, we have three options:
๐น ๐ฆ๐ต๐ถ๐ฝ - Small changes that donโt need peopleโs review can be pushed directly to the main branch. We have some build pipelines running on the main brunch, which run tests and other checks, so it is a safety net for our changes. Some examples are: fixing a typo, increasing the minor dependency version, updated documentation.
๐น ๐ฆ๐ต๐ผ๐ - Here, we want to show what has been done. When you have a branch, you open a Pull Request and merge it without a review. Yet, you still want people to be notified of the change (to review it later), but donโt expect essential discussions. Some examples are: a local refactoring, fixing a bug, added a test case.
๐น ๐๐๐ธ - Here, we make our changes and open a Pull Request while waiting for feedback. We do this because we want a proper review in case we need clarification on our approach. This is a classical way of making Pull Requests. Some examples are: Adding a new feature, major refactoring, and proof of concept.
๐ 35
๐ป Are you looking for a virtual server with powerful DDoS protection? Look no further than Aรฉza!
Features:
โ High-performance virtual servers up to 6.0 GHz on flagship processors
โ A wide range of services, such as ready-made proxy rental in your account
โ Powerful and professional DDoS protection
โ Free Anycast DDoS protection for your websites
โ Affordable market price starting from 4.94 euros for Ryzen 7950x3D
โ 24/7 support chat
โ Anonymous VPN from 1.9 euros with various locations included
โ 15% cashback using the link
And this is not all Aรฉza can offer you!
๐ฅ Free servers!
Take a server from Aรฉzะฐ for 1 hour or explore our Terminator free rental program
No registration, SMS, or payment is required!
aeza.net
๐ 31๐ 10
Encryption and Decryption using Linear Algebra with C++
This project implements a text encryption and decryption system using a matrix-based encryption technique. This project serves as an educational and practical exploration of matrix-based encryption techniques, demonstrating the fundamental concepts of encryption and decryption in a user-friendly manner.
๐ปhttps://github.com/farukalpay/TextEncryptionWithLinearAlgebra
๐ 36
๐๐ผ๐ ๐๐ผ ๐ฑ๐ผ ๐ฐ๐ผ๐ฑ๐ฒ ๐ฟ๐ฒ๐๐ถ๐ฒ๐๐ ๐ฝ๐ฟ๐ผ๐ฝ๐ฒ๐ฟ๐น๐
An essential step in the software development lifecycle is code review. It enables developers to enhance code quality significantly. It resembles the authoring of a book. The author writes the story, which is then edited to ensure no mistakes like mixing up "you're" with "yours." Code review in this context refers to examining and assessing other people's code.
There are different ๐ฏ๐ฒ๐ป๐ฒ๐ณ๐ถ๐๐ ๐ผ๐ณ ๐ฎ ๐ฐ๐ผ๐ฑ๐ฒ ๐ฟ๐ฒ๐๐ถ๐ฒ๐: it ensures consistency in design and implementation, optimizes code for better performance, is an opportunity to learn, and knowledge sharing and mentoring, as well as promotes team cohesion.
What should you look for in a code review? Try to look for things such as:
๐น ๐๐ฒ๐๐ถ๐ด๐ป (does this integrate well with the rest of the system, and are interactions of different components make sense)
๐น ๐๐๐ป๐ฐ๐๐ถ๐ผ๐ป๐ฎ๐น๐ถ๐๐ (does this change is what the developer intended)
๐น ๐๐ผ๐บ๐ฝ๐น๐ฒ๐
๐ถ๐๐ (is this code more complex than it should be)
๐น ๐ก๐ฎ๐บ๐ถ๐ป๐ด (is naming good?)
๐น ๐๐ป๐ด. ๐ฝ๐ฟ๐ถ๐ป๐ฐ๐ถ๐ฝ๐น๐ฒ๐ (solid, kiss, dry)
๐น ๐ง๐ฒ๐๐๐ (are different kinds of tests used appropriately, code coverage),
๐น ๐ฆ๐๐๐น๐ฒ (does it follow style guidelines),
๐น ๐๐ผ๐ฐ๐๐บ๐ฒ๐ป๐๐ฎ๐๐ถ๐ผ๐ป, etc.
๐ 45
โ Message was hidden by channel owner
๐ 27๐ 7
โ Message was hidden by channel owner
๐ 4๐ 1
โ Message was hidden by channel owner
๐ 26๐ 12
โ Message was hidden by channel owner
๐ 43๐ 9
๐๐ถ๐ฑ ๐ ๐ด๐ถ๐๐ฒ ๐บ๐ ๐ฏ๐ฒ๐๐ ๐น๐ฎ๐๐ ๐๐ฒ๐ฒ๐ธ?
There are no two same days nor two same weeks
The "best" can mean different on "different" days
This is why we need to have weekly and monthly goals
And the results are that matters, not the effort
I wish you a great week ahead ๐
๐ 67
โ Message was hidden by channel owner
๐ 25๐ 12
๐๐ผ๐ ๐๐ผ ๐๐๐ฒ ๐๐ป๐ฑ๐ผ๐ฐ๐๐บ๐ฒ๐ป๐๐ฒ๐ฑ ๐ช๐ฒ๐ฏ ๐๐ฃ๐๐?
There are several methods to tackle this issue, primarily involving intercepting traffic originating from a web API. If the goal is to intercept HTTP/HTTPS traffic from various sources, one approach involves manually constructing a custom sniffer. However, this method can be burdensome as it requires tailoring the solution for each API individually.
Now, Postman offers a solution to sniff traffic from any API with the HTTP/HTTP protocol. What is good about this feature is that traffic capture enables you to generate a Postman collection, which you can then use to test, evaluate, and document captured APIs.
Check more at the following link:
๐https://blog.postman.com/introducing-postman-new-improved-system-proxy/.
๐ 27
โ Message was hidden by channel owner
๐ 42๐ 11
โ Message was hidden by channel owner
๐ 6๐ 4
Implementing RSA in Python from Scratch
๐https://coderoasis.com/implementing-rsa-from-scratch-in-python/https://coderoasis.com/implementing-rsa-from-scratch-in-python/
๐ 17
๐ง๐ต๐ฒ ๐๐ฒ๐๐ ๐ฆ๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ ๐๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ ๐๐ผ๐ผ๐ธ๐ ๐๐ป ๐๐๐ฒ๐ฟ๐ ๐๐ฎ๐๐ฒ๐ด๐ผ๐ฟ๐
Check out this list of all books tagged with software architecture. They are ranked based on Goodreads score with applied simple algorithmic rules (relevant to software architecture, content is not obsolete, it must be tech agnostic, and average rating > 3.5). Rating is based on the number of written reviews, including the average rating, the number of ratings, and the publishing date.
๐ป https://github.com/mhadidg/software-architecture-books
๐ 65๐ 7
๐๐ถ๐ ๐ ๐ฒ๐ฟ๐ด๐ฒ ๐๐ ๐ฅ๐ฒ๐ฏ๐ฎ๐๐ฒ
One of the most powerful Git features is branching. Yet, while working with it, we must integrate changes from one branch into another. The way how to do this can be different.
We have two ways to do it:
๐ญ. ๐ ๐ฒ๐ฟ๐ด๐ฒ
When you merge Branch A into Branch B (with ๐๐๐ ๐๐๐๐๐), Git creates a new merge commit. This commit has two parents, one from each branch, symbolizing the confluence of histories. It's a non-destructive operation, preserving the exact history of your project, warts, and all. Merges are particularly useful in collaborative environments where maintaining the integrity and chronological order of changes is essential. Yet, merge commits can clutter the history, making it harder to follow specific lines of development.
๐ฎ. ๐ฅ๐ฒ๐ฏ๐ฎ๐๐ฒ
When you rebase Branch A onto Branch B (with ๐๐๐ ๐๐๐๐๐๐), you're essentially saying, "Let's pretend these changes from Branch A were made on top of the latest changes in Branch B." Rebase rewrites the project history by creating new commits for each commit in the original branch. This results in a much cleaner, straight-line history. Yet, it could be problematic if multiple people work on the same branch, as rebasing rewrites history, which can be challenging if others have pulled or pushed the original branch.
So, when to use them:
๐น ๐จ๐๐ฒ ๐บ๐ฒ๐ฟ๐ด๐ถ๐ป๐ด ๐๐ผ ๐ฝ๐ฟ๐ฒ๐๐ฒ๐ฟ๐๐ฒ ๐๐ต๐ฒ ๐ฐ๐ผ๐บ๐ฝ๐น๐ฒ๐๐ฒ ๐ต๐ถ๐๐๐ผ๐ฟ๐, especially on shared branches or for collaborative work. It's ideal for feature branches to merge into a main or develop branch.
๐น ๐จ๐๐ฒ ๐ฟ๐ฒ๐ฏ๐ฎ๐๐ถ๐ป๐ด ๐ณ๐ผ๐ฟ ๐ฝ๐ฒ๐ฟ๐๐ผ๐ป๐ฎ๐น ๐ฏ๐ฟ๐ฎ๐ป๐ฐ๐ต๐ฒ๐ or when you want a clean, linear history for easier tracking of changes. Remember to rebase locally and avoid pushing rebased branches to shared repositories. Also, be aware ๐ป๐ผ๐ ๐๐ผ ๐ฟ๐ฒ๐ฏ๐ฎ๐๐ฒ ๐ฝ๐๐ฏ๐น๐ถ๐ฐ ๐ต๐ถ๐๐๐ผ๐ฟ๐. If your branch is shared with others, rebasing can rewrite history in a way that is disruptive and confusing to your collaborators.
๐ 90
โ Message was hidden by channel owner
๐ 25๐ 15
โ Message was hidden by channel owner
๐ 5๐ 3
๐๐ผ ๐๐ผ๐ ๐๐๐ณ๐ณ๐ฒ๐ฟ ๐ณ๐ฟ๐ผ๐บ ๐๐บ๐ฝ๐ผ๐๐๐ฒ๐ฟ ๐ฆ๐๐ป๐ฑ๐ฟ๐ผ๐บ๐ฒ?
Always believing that you must know everything before doing?
Adjust your viewpoint.
Be a smart learner!
๐ 141๐ 3
๐๐ฒ๐ฎ๐ฟ๐ป ๐ณ๐๐ป๐ฑ๐ฎ๐บ๐ฒ๐ป๐๐ฎ๐น๐, ๐ป๐ผ๐ ๐ณ๐ฟ๐ฎ๐บ๐ฒ๐๐ผ๐ฟ๐ธ๐
Have you ever wondered why some technologies are still with us, and some disappeared? Here is ๐๐ต๐ฒ ๐๐ถ๐ป๐ฑ๐ ๐๐ณ๐ณ๐ฒ๐ฐ๐ to explain it. This effect tells me that ๐ฏ๐ ๐๐ต๐ฒ ๐๐ถ๐บ๐ฒ ๐ ๐ฟ๐ฒ๐๐ถ๐ฟ๐ฒ, ๐ฑ๐ฒ๐๐ฒ๐น๐ผ๐ฝ๐ฒ๐ฟ๐ ๐๐ถ๐น๐น ๐๐๐ถ๐น๐น ๐ฏ๐ฒ ๐๐๐ถ๐ป๐ด ๐# ๐ฎ๐ป๐ฑ ๐ฆ๐ค๐. It is a concept in technology and innovation that suggests that the future life expectancy of a non-perishable item is proportional to its current age. In other words, the longer an item has been in use, the longer it is likely to continue to be used.
The concept was named after Lindy's Deli in New York City, where Nassim Nicholas Taleb popularized it in his book "๐ง๐ต๐ฒ ๐๐น๐ฎ๐ฐ๐ธ ๐ฆ๐๐ฎ๐ป." According to Taleb, the Lindy effect applies to many things, including technologies, ideas, and cultures, and evaluates their potential longevity.
In software development, we see that ๐ณ๐ฟ๐ฎ๐บ๐ฒ๐๐ผ๐ฟ๐ธ๐ ๐ฐ๐ผ๐บ๐ฒ ๐ฎ๐ป๐ฑ ๐ด๐ผ, ๐ฏ๐๐ ๐น๐ฎ๐ป๐ด๐๐ฎ๐ด๐ฒ๐ ๐๐๐ฐ๐ต ๐ฎ๐ ๐ฆ๐ค๐ ๐ผ๐ฟ ๐# ๐ฎ๐ป๐ฑ ๐ฐ๐ผ๐ป๐ฐ๐ฒ๐ฝ๐๐ ๐๐๐ฐ๐ต ๐ฎ๐ ๐ข๐ฏ๐ท๐ฒ๐ฐ๐-๐ผ๐ฟ๐ถ๐ฒ๐ป๐๐ฒ๐ฑ ๐ฝ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด ๐ผ๐ฟ ๐ฆ๐ข๐๐๐ ๐ฝ๐ฟ๐ถ๐ป๐ฐ๐ถ๐ฝ๐น๐ฒ๐ ๐๐๐ฎ๐. All the energy I put into learning those technologies 10-15 years ago continues to support my work today. Some things changed, but the fundamentals stayed and even got better.
So, try to ๐น๐ฒ๐ฎ๐ฟ๐ป ๐๐ต๐ถ๐ป๐ด๐ ๐๐ต๐ฎ๐ ๐ฑ๐ผ๐ป'๐ ๐ฐ๐ต๐ฎ๐ป๐ด๐ฒ (quote from Jeff Bezos). Focus on foundations, not frameworks. I've been doing this for two decades now.
๐ 139๐ 1
โ Message was hidden by channel owner
๐ 18๐ 2
UNTANGLE Spring Security Architecture ๐
Authentication and Authorization:
- Validates user identity and orchestrates controlled resource access.
- Empowers comprehensive user authentication and nuanced authorization.
Security Filters:
- Intercepts incoming requests, meticulously enforcing security measures.
- Offers a flexible, layered security filter chain for diverse protection strategies.
Custom Authentication Providers:
- N Authentication Provider: Extends authentication capabilities beyond default configurations. Facilitates tailored authentication strategies and seamless integration.
- DaoAuthentication Provider: Adopts a database-backed approach for user authentication. Scrutinizes user credentials against stored records, heightening security.
Authentication Manager:
- Orchestrates the authentication process, coordinating various authentication providers.
- Serves as a pivotal component in managing user identity verification.
Token-based Security (JWT):
- Implements advanced token-based authentication for stateless communication.
- Facilitates secure interaction without the need for server-side storage.
Session Management:
- Efficiently manages user sessions, mitigating session-related risks.
- Provides adaptability for session creation, tracking, and invalidation.
Authentication Tokens:
- Username Password Authentication Token:Represents user credentials for authentication purposes.
- Leverages usernames and passwords for robust user verification.
Add/Remove Authentication Token:
- Dynamically enables the addition and removal of authentication tokens.
- Ensures real-time control over user authentication, promoting flexibility.
๐ 35
DevOps Explained!
Plan:
- Defines project goals, scope, and requirements, identifying stakeholders and resources. ๐
Build:
- Involves coding, compiling, and packaging, emphasizing version control and code management. ๐ง
Test:
- Ensures software aligns with quality and functional standards, utilizing automated and security testing. ๐งช
Deploy:
- Releases software precisely using deployment automation and monitoring tools. ๐
Operate:
- Ensures operational stability, promptly addressing issues with management tools. ๐
Observe:
- Analyzes data from software and production using logging, tracing, and metrics tools. ๐
Continuous Feedback:
- Gathers ongoing feedback, utilizing loops, surveys, and analytics for improvement. ๐
DevOps:
- Cultivates a culture of collaboration, communication, and continuous improvement for faster, better, and safer software delivery.
๐ 63
How Git Works - From Working Directory to Remote Repository
[1]. Working Directory:
Your project starts here. The working directory is where you actively make changes to your files.
[2]. Staging Area (Index):
After modifying files, use git add to stage changes. This prepares them for the next commit, acting as a checkpoint.
[3]. Local Repository:
Upon staging, execute git commit to record changes in the local repository. Commits create snapshots of your project at specific points.
[4]. Stash (Optional):
If needed, use git stash to temporarily save changes without committing. Useful when switching branches or performing other tasks.
[5]. Remote Repository:
The remote repository, hosted on platforms like GitHub, is a version of your project accessible to others. Use git push to send local commits and git pull to fetch remote changes.
[6]. Remote Branch Tracking:
Local branches can be set to track corresponding branches on the remote. This eases synchronization with git pull or git push.
๐ 60๐ 1
Computer Memory Explained
Computer memory is like a workspace for your computer. It stores data and instructions that the computer needs to access quickly.
Internal Memory:
1. ROM (Read-Only Memory):
- PROM (Programmable ROM): Programmable once by the user post-manufacturing. ๐
- EPROM (Erasable Programmable ROM): Can be erased with ultraviolet light and reprogrammed. โ๏ธ๐
- EEPROM (Electrically Erasable Programmable ROM): Can be erased and reprogrammed electrically, multiple times. โก๏ธ
2. RAM (Random Access Memory):
- SRAM (Static RAM): Retains data as long as power is supplied, no need to refresh, faster than DRAM. โก๏ธ๐จ
- DRAM (Dynamic RAM): Stores data in capacitors that must be refreshed periodically, widely used. ๐
- SDRAM (Synchronous DRAM): Syncs with CPU clock speed for improved performance. โฑ
- RDRAM (Rambus DRAM): High bandwidth memory with Rambus technology. ๐
- DDR SDRAM (Double Data Rate SDRAM): Transfers data on both rising and falling clock edges.
- DDR1: First generation, higher speed and bandwidth than SDRAM. ๐
- DDR2: Improved version of DDR1 with lower power consumption and higher speeds. ๐๐จ
- DDR3: Higher speeds and reduced power consumption over DDR2. ๐โ๐จ
- DDR4: Higher module density and increased performance with reduced voltage. ๐๐๐
External Memory:
1. HDD (Hard Disk Drive): Uses spinning disks to read/write data, traditional storage device. ๐๐พ
2. SSD (Solid State Drive): Non-volatile flash memory for faster speed than HDDs. ๐๐พ
3. CD (Compact Disc): Optical disc for storing digital data, used for music and software
๐ 144
โ Message was hidden by channel owner
๐ 19๐ 15