This media is not supported in your browser
VIEW IN TELEGRAM
Π‘ΡΠ°ΡΡΡ Ρ Π·Π°Π»ΠΈΠΏΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ (Π² Ρ.Ρ. Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°Ρ
) ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ #howto
π6π₯2β€1
Π‘Π΅ΡΠΈΡ ΠΈΠ· 4-Ρ
ΡΡΠ°ΡΠ΅ΠΉ ΠΏΡΠΎ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° ELF (Executable and Linkable Format)
πΈSections and Segments
πΈSymbols
πΈRelocations
πΈDynamic Linking
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°Π½ΠΈΠΉ ΠΏΡΠΎ ΠΊΠΈΡΠΊΠΈ Π»ΠΈΠ½ΡΠΊΡΠ° :)) #howto
πΈSections and Segments
πΈSymbols
πΈRelocations
πΈDynamic Linking
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°Π½ΠΈΠΉ ΠΏΡΠΎ ΠΊΠΈΡΠΊΠΈ Π»ΠΈΠ½ΡΠΊΡΠ° :)) #howto
π2
How we Built a 19 PiB Logging Platform with ClickHouse and Saved Millions - ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ ΠΈΠ· Π±Π»ΠΎΠ³Π° #clickhouse
ClickHouse
How we Built a 19 PiB Logging Platform with ClickHouse and Saved Millions
In this blog post, we share our journey to build a ClickHouse-powered logging solution that today stores over 19 PiB of data (1.13 PiB compressed) in our AWS regions alone, and costs 200x less than Datadog.
Implementing Dijkstra's algorithm for finding the shortest path between two nodes using PriorityQueue in .NET 9 - Π²Π΅ΡΡΠΌΠ° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ priority queue :)) #dotnet
π€3π₯2
Π‘Π΅ΡΠΈΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΊΠΈΡ
ΡΡΠ°ΡΠ΅ΠΉ ΠΏΡΠΎ MongoDB in C#, ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ ΡΠ΅ΠΌ ΠΊΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Ρ MongoDB. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ΅ΠΉΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ° (Π²ΡΡΠ°Π²ΠΊΠ°/Π°ΠΏΠ΄Π΅ΠΉΡΡ/ΡΠ΄Π°Π»Π΅Π½ΠΈΡ/ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ-ΠΏΠΎΠΈΡΠΊ), Π½ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΡΡΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΊ ΡΡΠ°ΡΡΡΠΌ, Π½ΠΎ Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ :)) #mongodb #dotnet
ΠΡΡΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΊ ΡΡΠ°ΡΡΡΠΌ, Π½ΠΎ Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ :)) #mongodb #dotnet
π₯4
Π‘Π΅ΡΠΈΡ ΠΈΠ· Ρ
Π°ΡΠ΄ΠΊΠΎΡΠ½ΡΡ
(Π½ΠΎ Π½Π΅Π΄Π»ΠΈΠ½Π½ΡΡ
) 5 ΡΡΠ°ΡΠ΅ΠΉ ΠΏΡΠΎ ΠΊΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π°
πΈStart a journey into the .NET Profiling APIs
πΈDealing with Modules, Assemblies and Types with CLR profiling API
πΈDecyphering methods signature with .NET Profiling APIs
πΈReading parameters value with the .NET Profiling APIs
πΈAccessing arrays and class fields with .NET profiling APIs
#dotnet
πΈStart a journey into the .NET Profiling APIs
πΈDealing with Modules, Assemblies and Types with CLR profiling API
πΈDecyphering methods signature with .NET Profiling APIs
πΈReading parameters value with the .NET Profiling APIs
πΈAccessing arrays and class fields with .NET profiling APIs
#dotnet
π2π₯1
Π‘Π²Π΅ΠΆΠ΅Π½ΡΠΊΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ nats-viewer - Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° JetStream Π² Nats #tools
π2
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΠΈ ΠΏΠΎ Intel Advanced Performance Extensions (APX) 4.0 (PDF Π½Π° 294 ΡΡΡΠ°Π½ΠΈΡΡ) #docs
SimpleR - Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π² Π²Π΅ΡΡΠΈΠΈ 1.0.0-alpha.1 :)) ΡΠ°Π½ΠΎΠ²Π°ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. #dotnet
Medium
SignalR Simplified: Creating Efficient Pure WebSocket Servers with SimpleR for ASP.NET Core
Creating pure WebSocket server on ASP.NET Core has become a lot easier. Learn how to use SimpleR in scenarios where SignalR is not anβ¦
β€1π1
ΠΠ°ΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ² Π²ΠΎΠΏΡΠΎΡΠΎΠ² (ΡΡΠ°ΡΡΡ Π½Π° linkedin) Π΄Π»Ρ Π·Π°Π΄Π°Ρ Π½Π° ΡΠΎΠ±Π΅ΡΠ°Ρ
ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° solution #howto #questions
π1
vue-webrtc - ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ WebRTC ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ° 5 ΠΌΠΈΠ½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ p2p-Π²ΠΈΠ΄Π΅ΠΎΡΠ²ΡΠ·Ρ #vuejs
π€―3
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΡΡΡ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠ½ΠΈΡΠ°ΡΡ Π½Π° DEV ΡΡΠ΅Π΄Π΅ ΡΡΠ°ΡΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π΄ΠΎΠΊΠ΅ΡΠ°... ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ
ΡΡΡΠΎΠΊ Π½Π° ΠΏΠ°ΠΌΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΠ°ΠΌΠΏΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ASCII ( -A ):
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ + ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ΅ 'Sec-WebSocket-Key':
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ»Π°Π³ΠΎΠΌ SYN (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ):
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ keep-alive ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² http-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² GET/POST/HEAD
ΠΡ Π° ΠΏΠΎΡΠΎΠΌ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ nast, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π°ΠΌΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΡΠ΅Π»ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
#tools #docker #tcpdump
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
docker network ls
Π½Π°Π΄ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ id Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Π΄Π°Π»Π΅Π΅ ΡΡΠΎΡ id Π½Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ INTERFACE), 8000 - ΡΡΠΎ exposed port ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.ΠΠ°ΠΌΠΏΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ASCII ( -A ):
tcpdump -i INTERFACE 'tcp dst port 8000' -A
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ + ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ΅ 'Sec-WebSocket-Key':
tcpdump -i INTERFACE 'tcp dst port 8000' -A | grep 'Sec-WebSocket-Key:'
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ»Π°Π³ΠΎΠΌ SYN (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ):
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] & (tcp-syn) != 0)' -A
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ keep-alive ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] == tcp-ack and less 1)' -A
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² http-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² GET/POST/HEAD
tcpdump -i INTERFACE 'tcp dst port 8000' -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'
ΠΡ Π° ΠΏΠΎΡΠΎΠΌ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ nast, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π°ΠΌΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΡΠ΅Π»ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
nast -i INTERFACE -d -f 'tcp dst port 8000'
#tools #docker #tcpdump
π8
ΠΡΡ ΠΎΠ΄Π½Π° ΡΡΠ°ΡΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ArrayPool<T>. ΠΡΠΎ ΠΈ ΠΏΡΠ°Π²Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π°Π»Π»ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ Π°Π»Π»ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. #dotnet
www.sharpgis.net
dotMorten | Removing Memory Allocations in HTTP Requests Using ArrayPool<T>
dotMorten - .NET Ramblings, XAML hacking and some GIS endeavors - This post will describe how you can make network requests in .NET without constantly allocating large amounts of memory and reduce your allocations to almost zero.
π3
ΠΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ reverse proxy Ρ ΠΏΠΎΠΌΠΎΡΡΡ YARP. Π’Π°ΠΊΠΆΠ΅ Π² ΡΡΠ°ΡΡΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΡΠΎΠ³ΠΎ, Π½ΠΎ ΡΡΠ»ΠΈΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° - ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΡ
-ΡΠΎ Π΄ΡΡΠ³ΠΈΡ
(ΡΠ²ΠΎΠΈΡ
) ΠΊΡΠΈΡΠ΅ΡΠΈΡΡ
(Π²ΡΠ΅ΠΌΡ, Π°Π΄ΡΠ΅Ρ-ΠΏΠΎΠ΄ΡΠ΅ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ...) #dotnet #architecture
π1π₯1
Monoliths have been problematic, then micro-services turned out to be differently problematic. So letβs swing the pendulum back partway but focus more on making our monoliths modular for easier, more maintainable long term development.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΡ.
ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ°ΡΡΠΈ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ. #architecture
ΠΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΡ.
ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ°ΡΡΠΈ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ. #architecture
β€3
Managing 238M Memberships at Netflix - ΡΡΠ°ΡΡΡ ΠΈ 50 ΠΌΠΈΠ½ΡΡΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡΠΎ ΡΡΠΎ #highload
β€1π1
ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΡΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Serilog (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ°Π·Π½ΡΠΌΠΈ ΡΡΡΠΊΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΌ Π»Π΅Π³ΡΠ΅ Π±ΡΠ»ΠΎ ΠΈΡΠΊΠ°ΡΡ Π² Π»ΠΎΠ³Π°Ρ
Π½ΡΠΆΠ½ΠΎΠ΅) #dotnet
Code Maze
Best Practices for Logging With Serilog
In this article, we'll take a closer look at some best practices when it comes to logging in .NET with Serilog.
π₯2
Π§ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΡΡΠΊΠ° ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ Postgres ΡΠΎΠ±ΡΠ°Π» ΠΈ ΠΎΡΠΎΡΠΌΠΈΠ» Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° Π² ΡΠ΅Π»Π΅Π³Ρ - ΡΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄Π°). Π’Π°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Π² Π²ΠΈΠ΄Π΅ gist Π½Π° github:
πΈΠ’Π΅ΠΊΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
πΈΠΠ°ΠΏΡΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π±ΠΎΠ»Π΅Π΅ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ
πΈΠ’Π°Π±Π»ΠΈΡΡ Ρ % ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΠΊΡΡ ΠΏΡΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ)
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ Π°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΠ
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
πΈΠ‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ’ΠΎΠΏ 5 ΡΠ°ΠΌΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ
πΈΠ’ΠΎΠΏ 5 ΡΠ°ΠΌΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ
#postgres
πΈΠ’Π΅ΠΊΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
πΈΠΠ°ΠΏΡΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π±ΠΎΠ»Π΅Π΅ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ
πΈΠ’Π°Π±Π»ΠΈΡΡ Ρ % ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΠΊΡΡ ΠΏΡΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ)
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ Π°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΠ
πΈΠ Π°Π·ΠΌΠ΅ΡΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
πΈΠ‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠ’ΠΎΠΏ 5 ΡΠ°ΠΌΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ
πΈΠ’ΠΎΠΏ 5 ΡΠ°ΠΌΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
πΈΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ
#postgres
π8π₯6π€1