Telegram Web
اگه یه میلیون کار داشته باشی و بخوای همزمان اجراشون کنی، ولی فقط 8 تا CPU داری، چه‌جوری بهینه‌ترین حالت رو پیدا می‌کنی؟

تو گولنگ، گوروتین‌ها خیلی سبک هستن. می‌تونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمی‌صرفه حافظه‌ رو با صدها هزار گوروتین که همزمان نمی‌تونن اجرا بشن، هدر بدی.

یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که می‌تونی تعداد گوروتین‌های در حال اجرا رو محدود کنی.

حالا چطور کار می‌کنه؟
1. یه کانال با ظرفیت مشخص (N) درست می‌کنی که این ظرفیت میشه تعداد گوروتین‌های همزمانی که می‌خوای اجرا بشه.

2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر می‌کنی.

3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمی‌گردونه.

4. اگه توکن نباشه گوروتین منتظر می‌مونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.

با این روش دیگه سیستم توی کارهای بیخودی قفل نمیشه و فقط به تعداد موردنیاز از منابع استفاده می‌کنی.


@DevTwitter | <Mohammad Abdorrahmani/>
👍509🤣3👎1
‏اگر از Socks به عنوان پروکسی استفاده میکنید
میدانید که نرم افزارهای زیادی اجازه استفاده از Socks را به صورت
socks5://[yourip]:[yourport]
نمیدن و نیازه شما http پروکسی داشته باشید gost
github.com/ginuerzh/gost
کارش همینه

@DevTwitter | <MehrdadLinux/>
23👍9🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
ببینید یک ابزارِ کوچک اما کاربردی چقدر می‌تونه کارها رو ساده کنه. با pasteasfile می‌تونید محتوایِ کلیپ‌بورد رو در قالبِ یک فایل پیست کنید. کاش ویندوز این قابلیت رو به صورتِ built-in می‌داشت. لذت بردم.
pasteasfile.org

@DevTwitter | <Ayub Kokabi/>
👍37🤣7
میخواهید برای مصاحبه DevOps آماده بشید ؟
مجموعه ای از سوالات مصاحبه DevOps
interview.devopscommunity.in

@DevTwitter | <MehrdadLinux/>
👍16
#کوته_نیوز

دکتر:
همین روزا درز تلگرامو براتون باز میکنم.

@DevTwitter
🤣84🔥11👍62👎2
This media is not supported in your browser
VIEW IN TELEGRAM
یک ابزار خوب برای دیدن و (پراسس کردن) JSON در ترمینال

fx: Terminal JSON viewer & processor

میتونید با ترکیبش با curl راحت دیتای خروجی API ها رو تو ترمینال بررسی کنید
سرعت خیلی خوبی هم داره.

لینک پروژه در گیتهاب:
https://github.com/antonmedv/fx
لینک وبسایت و داکیومنت:
https://fx.wtf/

@DevTwitter | <Ashkan Nourzadeh/>
👍181
واقعا فکر‌ نمیکردم کار کردن با پروتکل torrent اینقدر سخت باشه بیش از اندازه بزرگه :))
ولی کلی چیز باهاش یادگرفتم. تا بخش خوبی جلو بردمش و الان با گرفتن فایل تورنت یا مکنت لینک میتونه تا دانلود پیش بره.
https://github.com/Soroushsrd/Torrs

@DevTwitter | <Soroush Sardashti/>
🔥33👍10
نسخه Vite 6 منتشر شد!

ویت 6 با معرفی API محیطی جدید، انعطاف‌پذیری بیشتری را برای توسعه‌دهندگان فراهم می‌کند و امکان تجربه توسعه نزدیک‌تر به محیط تولید را میسر می‌سازد. همچنین، پشتیبانی از Node.js 18، 20 و 22+ حفظ شده و پشتیبانی از نسخه 21 حذف شده است.

https://code-news.com/p/vite-6-released

@DevTwitter | <Code News/>
👍30🔥3🤣3
شاید تعجب کرده باشید که چرا در خیلی از کنفرانس های JavaScript جای این عبارت از js و ecmascript استفاده میکنن..
دلیلش اینه که آقای oracle که sun microsystems رو خرید تریدمارک JavaScript رو هم در نتیجه ش صاحب شد.
حالا آقای ryan dahl که سازنده nodejs و deno هست چند وقتی هست گیر داده به oracle که تریدمارک JavaScript رو کنسل کنه که دیگه به عنوان یه کلمه عمومی همه بتونن ازش استفاده کنن. سفت و سخت پیگیره..

@DevTwitter | <Hossein Nazari/>
27🤣10👍8
ساختار داده‌ای جدول هش (Hash Table Data Structure):

هشینگ (Hashing) یکی از ساختارهای داده‌ای مهم و کارآمد است که برای انتساب یک مقدار به یک کلید خاص استفاده می‌شود. این فرآیند از طریق یک تابع هش انجام می‌شود. هدف اصلی این ساختار، دسترسی سریع‌تر به عناصر با استفاده از این کلیدها است. کارایی هشینگ به شدت به طراحی و کارایی تابع هش وابسته است، به طوری که تابع هش باید برخوردها (Collisions) را به حداقل برساند و داده‌ها را به صورت یکنواخت در جدول توزیع کند.

فرض کنید یک تابع هش H(x) مقدار x را در شاخص x % 10 در یک آرایه ذخیره می‌کند.
به عنوان مثال، اگر لیست مقادیر [11,12,13,14,15] باشد، این مقادیر در موقعیت‌های {1,2,3,4,5} در جدول هش ذخیره خواهند شد.

موارد استفاده از ساختار داده‌ای جدول هش(Hash Table Data Structure):

1-ساختارهای داده‌ای برای جستجو و بازیابی سریع:
به طور گسترده در پیاده‌سازی دیکشنری‌ها (مثل Dictionary در Python یا HashMap در Java و C#) استفاده می‌شود.

2-مدیریت پایگاه داده‌ها:
برای نگهداری ایندکس‌ها در پایگاه داده‌ها، جدول‌های هش به منظور دسترسی سریع به رکوردها استفاده می‌شود.

3-سیستم‌های کش (Caching):
برای ذخیره و بازیابی داده‌ها در سیستم‌های کش با سرعت بالا، مانند Memcached.

4-سیستم‌های تشخیص کلمات تکراری:
در پردازش زبان طبیعی (NLP) و بررسی متون برای ذخیره مجموعه‌ای از کلمات و بررسی وجود یا عدم وجود آن‌ها.

5-مدیریت حافظه:
برای مدیریت سریع تخصیص و آزادسازی حافظه.

6-حل مسائل با زمان‌بندی مناسب:
مانند تشخیص مقادیر تکراری در یک آرایه یا نگاشت یک مقدار به کلید برای مرتب‌سازی و جستجو سریع.

7-شبکه‌های کامپیوتری:
در مسیریابی و کش DNS برای ذخیره آدرس‌های IP و نام دامنه‌ها.

مزایا:

1-سرعت بالا در جستجو و بازیابی.
2-کارایی مناسب برای داده‌های بزرگ.
3-انعطاف‌پذیری در ذخیره‌سازی جفت‌های کلید-مقدار.
4-پیاده‌سازی ساده و گسترده در زبان‌های برنامه‌نویسی.

چالش‌ها:

1-مدیریت برخوردها (Collisions).
2-طراحی مناسب و کارآمد تابع هش.
3-هزینه افزایش اندازه جدول هش (Resizing).
4-مصرف بیشتر حافظه برای کاهش برخوردها.
5-حساسیت به کیفیت کلیدهای ورودی.

@DevTwitter | <Hossein Vaezzadeh/>
👍264🤣2🔥1
یه مقاله جذاب در مورد نوشتن کد سریع از Shopify
درسته که درباره Ruby on Rails نوشته شده اما اکثر نکاتش به خیلی از زبان و فریمورک های دیگه از جمله گولنگ هم قابل تعمیم دادن هست.

دقت کنید که Shopify در یک مقیاس خیلی بزرگ کار میکنه و نکاتش مهمه.

کدی که با Ruby on Rails نوشته میشه معروفه به کند بودن

اما در Shopify در مقیاس میلیون درخواست در دقیقه داره از Ruby on Rails استفاده میشه

تو این مقاله نکات جالبی رو اشاره میکنه برای اینکه کد سریعتری نوشته بشه

اولین نکته ش در مورد ORM یا همون ActiveRecord هست که باید درک کنید توابع مختلف orm چه رفتاری با دیتابیس دارند.

تو گولنگ همین مشکل با gorm وجود داره که به شدت میتونه لود زیادی روی دیتابیس بندازه بدون اینکه برنامه نویس متوجه این قضیه بشه.

دومین نکته ش باز در مورد دیتابیس هست که میگه از select * پرهیز کنید و فقط ستون هایی که لازم دارید رو انتخاب کنید.


نکته دیگه پرهیز از کوئری زدن به ستون هایی هست که index ندارن و در مقیاس بالا باعث میشه که full scan رخ بده
البته ایندکس اضافه کردن باعث lock شدن دیتابیس ممکنه بشه برای writeها و باید مواظب مایگریشن ایندکس باشیم

نکته بعدی کش کردن همه چیز هست…
Cache All The Things
If you can’t make something faster, a good alternative is to cache it. Things like complex view compilation and external API calls benefit greatly from caching. Especially if the resultant data doesn’t change often.

یه سری چیزارو میشه throttle کرد
Throttle Bottlenecks
But what about operations you can’t cache? Things like delivering an email, sending a webhook, or even logging in can be abused by users of an application. Essentially, any expensive operation that can’t be cached should be throttled.

برای یه سری پروسه ها هم میشه job queue و مکانیزم های async در نظر گرفت
Do It Later (In a Job)
Jobs allow us to defer work to another process through queueing systems often backed by Redis. Exporting a dataset, activating a subscription, or processing a payment are all great examples of job-worthy work

پرهیز از متاپروگرمینگ
Use Metaprogramming Sparingly
Changing a program’s structure at runtime is a powerful feature. In a highly dynamic language like Ruby, there are significant performance costs associated to metaprogramming.

دونستن تفاوت O(1) و O(n) برای مقیاس پذیر بودن خیلی مهمه
Know the difference between O(n) and O(1)
What O(n) and O(1) mean is that there are two kinds of operations. O(n) is an operation that scales in time with size, and O(1) is one that is constant in time regardless of size.

مثلا جای آرایه بهتره از hash استفاده بشه چون lookup کردن تو hash فارغ از اندازه O(1) هست


Allocate Less
استفاده و مدیریت Garbage Collector
If used improperly, dangerous methods can lead to unwanted side effects in your code. A best practice to follow is to avoid mutating global state while leveraging mutation on local state.

https://shopify.engineering/write-fast-code-ruby-rails

@DevTwitter | <Hossein Nazari/>
👍22🔥41
من وبسایت http://thewebscraping.club رو بار ها معرفی کردم که در مورد وب‌اسکرپینگ مطالب مختلفی میذاره. الان تصمیم گرفتم به مرور با http://notebooklm.google برای پست هاش پادکست بسازم و با روشی که دارم براش زیرنویس فارسی تولید کنم و تو یوتیوب بذارم.

@DevTwitter | <وحید/>
👍431
بچه های که میخواهید تازه برنامه نویسی رو شروع کنید دوره های
Mosh Hamedani
برای شروع به نظر من خیلی عالی هستن
https://codewithmosh.com/

@DevTwitter | <Shayan/>
🤣98👍67👎19🔥3
از روزی ۱۰ ساعت کد زدن نتیجه گرفتم:

۱- تقریبا بعد از ساعت ۶-۷ فقط داری وقت تلف می‌کنی.

۲- چت بات claude به مراتب تو coding از chatGPT بهتره و تقریبا ۲۰ دلار به openai دادن پول دور ریختنه. من با cursor کار نکردم.

۳- ورزش ملایم صبح ناشتا burnout رو یکی دو ساعت عقب میندازه.

@DevTwitter | <shamshiri/>
👍147🤣2910👎8
در قسمت دهم از آموزش برنامه نویسی به زبان GO به بررسی و تعریف Performance از ابعاد مختلف و مستقل از زبان پرداختیم.

از شما چه پنهون از این ویدیو خودم خوشم اومد. چند بار ببنید چون در مورد Go صحبت نمی‌کنم :)

https://www.youtube.com/watch?v=ZOClH2BLRwE

@DevTwitter | <Hêmn Hosseinpana/>
👍21👎9🤣51
بعد از یه هفته تموم شد بالاخره. تونستم کتابخونه ی Open-mls رو به web assembly پورت کنم.
فعلا persistent storage نداره ولی اینم اضافه میکنم.

https://github.com/cosmopole-org/openmls-wasm

@DevTwitter | <Hawk Cosmopolitan/>
🔥28🤣7👍6
اگر نیاز داشتین که تو محیط لینوکس ویدیو فشرده کنین بدون اینکه فرمتش عوض بشه
میتونین از این اسکرپیت استفاده کنین

https://gist.github.com/ArmanTaheriGhaleTaki/e2cf84743df55cab3a441af4836ef914

@DevTwitter | <armondy/>
🔥23👍9🤣9
#کوته_نیوز

تا چیزمان رفتیم تو گل

@DevTwitter
🤣66👍16
دنبال یه پروژه قدیمی تو گیت هاب میگشتم که یه پروژه خیلی قدیمی تر پیدا کردم.
پروژه درس دیتابیس :)
۱۰ سال قبل :)
۱۰ سال گذشت :)
من و مرجان از بچه های دانشکده هم تیمی بودیم اون موقع.
آف کورس که مهاجرت کردیم :)
چه تمیز هم php براش نوشتیم :)
https://github.com/SaeedNajafi/DB-Project

@DevTwitter | <Saeed/>
👎95👍32🤣138
یه برنامه برای ساخت میکروسرویس‌ها با رویکرد Domain-Driven Design (DDD) توسعه دادم؛
و خوشحال میشم که بهتون معرفیش کنم و نظرتون رو راجبش بدونم چون بهم کمک میکنه توی ادامه توسعش دقیق تر نیازهای برنامه نویسا رو بدونم.
این پروژه کاملا اوپن سورس ارائه میشه و همینطور:
با ساختار تمیز و قابل فهم، توسعه پروژه‌ها رو سریع‌تر و لذت‌بخش‌تر می‌کنه.
با استفاده از فایل‌های محیطی (environments)، به راحتی می‌تونید تنظیمات پروژه‌تون رو مدیریت کنید.

۱. نصب:
npm install hex-micro
۲. نمونه‌ها: برای دیدن مثال‌های کامل و سناریوهای واقعی، به فولدر example در گیت‌هاب برین.

من خوشحال می‌شم اگر نظراتتون رو با من به اشتراک بذارید. اگر هم علاقه‌مند به همکاری هستید، باعث افتخاره که بتونیم از تجربه های شما هم توی این پروژه استفاده کنیم؛ از طریق ایجاد issue توی repository میتونین با من در ارتباط باشین.
و یا برای استفاده شخصیتون میتونید پروژه رو clone کنید و هرطور که دوست داشتید زیرساختش رو هم تغییر بدید, و یا هم طبق ساختار آماده شده جلو برین.

لینک‌ها:
NPM: https://www.npmjs.com/package/hex-micro
GITHUB: https://github.com/Tariux/HEX

@DevTwitter | <madman/>
🔥14👍82🤣1
2025/07/13 21:26:41
Back to Top
HTML Embed Code: