cookie

We use cookies to improve your browsing experience. By clicking ยซAccept allยป, you agree to the use of cookies.

avatar

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 more
The country is not specifiedEnglish1 434Technologies & Applications308
Advertising posts
156 212Subscribers
+4924 hours
+2017 days
+51230 days
Posting time distributions

Data loading in progress...

Traffic sources
  • Subscribers 0.00%
  • Channels 0.00%
  • Via the link 0.00%
  • Groups 0.00%
  • Telegram search 0.00%
  • Direct messages 0.00%
  • Other 0.00%
Publication analysis
PostsViewsSharesViews dynamics
01
Challenging programming projects you should try: ๐Ÿ”—https://jamesg.blog/2024/02/28/programming-projects/https://jamesg.blog/2024/02/28/programming-projects/
14 36936Loading...
02
Who's here?ย  We've asked for a free link to a paid channel, for our subs. x2-x3 Signals here ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ โ—๏ธJOIN FAST! FIRST 1000 SUBS WILL BE ACCEPTED
13 9713Loading...
03
#promo
11 3810Loading...
04
๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฐ๐—ผ๐—ฑ๐—ฒ ๐˜„๐—ถ๐˜๐—ต ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ ๐—–๐—ผ๐—ฝ๐—ถ๐—น๐—ผ๐˜? A recent study by GitHub and Microsoft discovered that AI now authors 46% of new code. They also found that overall developer productivity surged by 55%, leading to more efficient coding processes. When we talk about AI-powered coding, we mainly talk about GitHub Copilot. But ๐—ต๐—ผ๐˜„ ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ ๐—–๐—ผ๐—ฝ๐—ถ๐—น๐—ผ๐˜ ๐˜„๐—ผ๐—ฟ๐—ธ๐˜€? The process goes in the following steps: ๐Ÿญ. ๐—ฆ๐—ฒ๐—ฐ๐˜‚๐—ฟ๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—บ๐—ฝ๐˜ ๐˜๐—ฟ๐—ฎ๐—ป๐˜€๐—บ๐—ถ๐˜€๐˜€๐—ถ๐—ผ๐—ป: Your prompts are securely sent to Copilot, ensuring data privacy. ๐Ÿฎ. ๐—–๐—ผ๐—ป๐˜๐—ฒ๐˜…๐˜๐˜‚๐—ฎ๐—น ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ๐—ถ๐—ป๐—ด: Copilot analyzes the code around your cursor, the file type, and other open files to offer relevant suggestions. ๐Ÿฏ. ๐—–๐—ผ๐—ป๐˜๐—ฒ๐—ป๐˜ ๐—ณ๐—ถ๐—น๐˜๐—ฒ๐—ฟ๐—ถ๐—ป๐—ด: It filters out personal data and inappropriate content, focusing solely on generating helpful code. ๐Ÿฐ. ๐—–๐—ผ๐—ฑ๐—ฒ ๐—ด๐—ฒ๐—ป๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป: Based on the intent identified in your prompts, Copilot crafts code suggestions that align with your coding style and project standards. ๐Ÿฑ. ๐—จ๐˜€๐—ฒ๐—ฟ ๐—ถ๐—ป๐˜๐—ฒ๐—ฟ๐—ฎ๐—ฐ๐˜๐—ถ๐—ผ๐—ป: Here, we can decide whether to use, tweak, or reject Copilot's suggestions. ๐Ÿฒ. ๐—™๐—ฒ๐—ฒ๐—ฑ๐—ฏ๐—ฎ๐—ฐ๐—ธ ๐—น๐—ผ๐—ผ๐—ฝ: Copilot learns from your interactions, improving its suggestions. Every time you tweak or reject its ideas, he knows from it. It employs techniques like zero-shot (asking without examples), one-shot (asking with an example), and few-shot learning (providing multiple examples) to adapt to our instructions, whether you provide examples or not. ๐Ÿณ. ๐—ฃ๐—ฟ๐—ผ๐—บ๐—ฝ๐˜ ๐—ต๐—ถ๐˜€๐˜๐—ผ๐—ฟ๐˜† ๐—ฟ๐—ฒ๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ผ๐—ป: It remembers past prompts and interactions, making future suggestions more accurate.
12 53630Loading...
05
โš  Message was hidden by channel owner
10Loading...
06
โš  Message was hidden by channel owner
9 68222Loading...
07
โš  Message was hidden by channel owner
9 3066Loading...
08
โš  Message was hidden by channel owner
8 7501Loading...
09
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
15 03127Loading...
10
๐—›๐—ผ๐˜„ ๐—ฑ๐—ผ๐—ฒ๐˜€ ๐——๐—ถ๐˜€๐—ฐ๐—ผ๐—ฟ๐—ฑ ๐—ต๐—ฎ๐—ป๐—ฑ๐—น๐—ฒ ๐—ฎ ๐—บ๐—ถ๐—น๐—น๐—ถ๐—ผ๐—ป ๐—ผ๐—ป๐—น๐—ถ๐—ป๐—ฒ ๐˜‚๐˜€๐—ฒ๐—ฟ๐˜€ ๐—ถ๐—ป ๐—ฎ ๐˜€๐—ถ๐—ป๐—ด๐—น๐—ฒ ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ? 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.
12 53335Loading...
11
๐Ÿฎ๐Ÿฌ ๐—ฆ๐—ค๐—Ÿ ๐—พ๐˜‚๐—ฒ๐—ฟ๐˜† ๐—ผ๐—ฝ๐˜๐—ถ๐—บ๐—ถ๐˜‡๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐˜๐—ฒ๐—ฐ๐—ต๐—ป๐—ถ๐—พ๐˜‚๐—ฒ๐˜€ 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.
14 735140Loading...
12
โš  Message was hidden by channel owner
11 88210Loading...
13
โš  Message was hidden by channel owner
10 2140Loading...
14
๐—ฆ๐˜๐—ฎ๐—ฐ๐—ธ ๐—ข๐˜ƒ๐—ฒ๐—ฟ๐—ณ๐—น๐—ผ๐˜„ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ ๐—œ๐˜€ ๐—ก๐—ผ๐˜ ๐—ช๐—ต๐—ฎ๐˜ ๐—ฌ๐—ผ๐˜‚ ๐— ๐—ฒ๐—ฎ๐—ป ๐—œ๐˜ ๐—œ๐˜€ 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
19 15551Loading...
15
๐—›๐—ผ๐˜„ ๐—ง๐—ผ ๐—˜๐—ป๐—ฎ๐—ฏ๐—น๐—ฒ ๐—–๐—ผ๐—ป๐˜๐—ถ๐—ป๐˜‚๐—ผ๐˜‚๐˜€ ๐—œ๐—ป๐˜๐—ฒ๐—ด๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐˜„๐—ถ๐˜๐—ต ๐—ฃ๐˜‚๐—น๐—น ๐—ฅ๐—ฒ๐—พ๐˜‚๐—ฒ๐˜€๐˜๐˜€? 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.
24 81429Loading...
16
โš  Message was hidden by channel owner
21 28413Loading...
17
โš  Message was hidden by channel owner
20 2051Loading...
18
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
26 26959Loading...
19
๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฑ๐—ผ ๐—ฐ๐—ผ๐—ฑ๐—ฒ ๐—ฟ๐—ฒ๐˜ƒ๐—ถ๐—ฒ๐˜„๐˜€ ๐—ฝ๐—ฟ๐—ผ๐—ฝ๐—ฒ๐—ฟ๐—น๐˜† 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.
34 11372Loading...
20
โš  Message was hidden by channel owner
7 8731Loading...
21
โš  Message was hidden by channel owner
7 3020Loading...
22
โš  Message was hidden by channel owner
7 8400Loading...
23
โš  Message was hidden by channel owner
9 3977Loading...
24
โš  Message was hidden by channel owner
14 3653Loading...
25
๐——๐—ถ๐—ฑ ๐—œ ๐—ด๐—ถ๐˜ƒ๐—ฒ ๐—บ๐˜† ๐—ฏ๐—ฒ๐˜€๐˜ ๐—น๐—ฎ๐˜€๐˜ ๐˜„๐—ฒ๐—ฒ๐—ธ? 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 ๐Ÿ‘‹
42 00638Loading...
26
โš  Message was hidden by channel owner
14 3880Loading...
27
โš  Message was hidden by channel owner
17 2711Loading...
Show all...
๐Ÿ‘ 17
Who's here?  We've asked for a free link to a paid channel, for our subs. x2-x3 Signals here ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ ๐Ÿ‘‰ CLICK HERE TO JOIN ๐Ÿ‘ˆ โ—๏ธJOIN FAST! FIRST 1000 SUBS WILL BE ACCEPTED
Show all...
๐Ÿ‘Ž 14๐Ÿ‘ 8
#promo
Show all...
๐Ÿ‘ 1
๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฐ๐—ผ๐—ฑ๐—ฒ ๐˜„๐—ถ๐˜๐—ต ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ ๐—–๐—ผ๐—ฝ๐—ถ๐—น๐—ผ๐˜? A recent study by GitHub and Microsoft discovered that AI now authors 46% of new code. They also found that overall developer productivity surged by 55%, leading to more efficient coding processes. When we talk about AI-powered coding, we mainly talk about GitHub Copilot. But ๐—ต๐—ผ๐˜„ ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ ๐—–๐—ผ๐—ฝ๐—ถ๐—น๐—ผ๐˜ ๐˜„๐—ผ๐—ฟ๐—ธ๐˜€? The process goes in the following steps: ๐Ÿญ. ๐—ฆ๐—ฒ๐—ฐ๐˜‚๐—ฟ๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—บ๐—ฝ๐˜ ๐˜๐—ฟ๐—ฎ๐—ป๐˜€๐—บ๐—ถ๐˜€๐˜€๐—ถ๐—ผ๐—ป: Your prompts are securely sent to Copilot, ensuring data privacy. ๐Ÿฎ. ๐—–๐—ผ๐—ป๐˜๐—ฒ๐˜…๐˜๐˜‚๐—ฎ๐—น ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ๐—ถ๐—ป๐—ด: Copilot analyzes the code around your cursor, the file type, and other open files to offer relevant suggestions. ๐Ÿฏ. ๐—–๐—ผ๐—ป๐˜๐—ฒ๐—ป๐˜ ๐—ณ๐—ถ๐—น๐˜๐—ฒ๐—ฟ๐—ถ๐—ป๐—ด: It filters out personal data and inappropriate content, focusing solely on generating helpful code. ๐Ÿฐ. ๐—–๐—ผ๐—ฑ๐—ฒ ๐—ด๐—ฒ๐—ป๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป: Based on the intent identified in your prompts, Copilot crafts code suggestions that align with your coding style and project standards. ๐Ÿฑ. ๐—จ๐˜€๐—ฒ๐—ฟ ๐—ถ๐—ป๐˜๐—ฒ๐—ฟ๐—ฎ๐—ฐ๐˜๐—ถ๐—ผ๐—ป: Here, we can decide whether to use, tweak, or reject Copilot's suggestions. ๐Ÿฒ. ๐—™๐—ฒ๐—ฒ๐—ฑ๐—ฏ๐—ฎ๐—ฐ๐—ธ ๐—น๐—ผ๐—ผ๐—ฝ: Copilot learns from your interactions, improving its suggestions. Every time you tweak or reject its ideas, he knows from it. It employs techniques like zero-shot (asking without examples), one-shot (asking with an example), and few-shot learning (providing multiple examples) to adapt to our instructions, whether you provide examples or not. ๐Ÿณ. ๐—ฃ๐—ฟ๐—ผ๐—บ๐—ฝ๐˜ ๐—ต๐—ถ๐˜€๐˜๐—ผ๐—ฟ๐˜† ๐—ฟ๐—ฒ๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ผ๐—ป: It remembers past prompts and interactions, making future suggestions more accurate.
Show all...
๐Ÿ‘ 28๐Ÿ‘Ž 5
โš  Message was hidden by channel owner
Show all...
โš  Message was hidden by channel owner
Show all...
๐Ÿ‘ 24๐Ÿ‘Ž 2
โš  Message was hidden by channel owner
Show all...
๐Ÿ‘ 6๐Ÿ‘Ž 1
โš  Message was hidden by channel owner
Show all...
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
Show all...
๐Ÿ‘ 23
๐—›๐—ผ๐˜„ ๐—ฑ๐—ผ๐—ฒ๐˜€ ๐——๐—ถ๐˜€๐—ฐ๐—ผ๐—ฟ๐—ฑ ๐—ต๐—ฎ๐—ป๐—ฑ๐—น๐—ฒ ๐—ฎ ๐—บ๐—ถ๐—น๐—น๐—ถ๐—ผ๐—ป ๐—ผ๐—ป๐—น๐—ถ๐—ป๐—ฒ ๐˜‚๐˜€๐—ฒ๐—ฟ๐˜€ ๐—ถ๐—ป ๐—ฎ ๐˜€๐—ถ๐—ป๐—ด๐—น๐—ฒ ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ? 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.
Show all...
๐Ÿ‘ 13๐Ÿ‘Ž 1