🎄 DevTwitter | توییت برنامه نویسی – Telegram
🎄 DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.11K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
شاید تعجب کرده باشید که چرا در خیلی از کنفرانس های JavaScript جای این عبارت از js و ecmanoscript استفاده میکنن..
دلیلش اینه که آقای oracle که sun microsystems رو خرید تریدمارک JavaScript رو هم در نتیجه ش صاحب شد.
حالا آقای ryan dahl که سازنده nodejs و deno هست چند وقتی هست گیر داده به oracle که تریدمارک JavaScript رو کنسل کنه که دیگه به عنوان یه کلمه عمومی همه بتونن ازش استفاده کنن. سفت و سخت پیگیره..

@DevTwitter | <Hossein Nazari/>
27🤣11👍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/>
👍284🤣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 subnoscription, 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/>
👍24🔥41
من وبسایت http://thewebscraping.club رو بار ها معرفی کردم که در مورد وب‌اسکرپینگ مطالب مختلفی میذاره. الان تصمیم گرفتم به مرور با http://notebooklm.google برای پست هاش پادکست بسازم و با روشی که دارم براش زیرنویس فارسی تولید کنم و تو یوتیوب بذارم.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@DevTwitter | <Saeed/>
👎96👍33🤣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/>
🔥15👍82🤣1
تابع لامبدا تو پایتون یه جور تابع کوچیک و جمع‌وجوره که می‌شه تو یه خط نوشتش. خیلی ساده‌ست و لازم نیست مثل توابع معمولی با def تعریفش کنیم. بیشتر برای کارای ساده و سریع استفاده می‌شه.

تو تصویر بالا می‌تونید مثال‌ها و کاربردهای اون رو مشاهده کنید.

@DevTwitter | <Reza Jafari/>
👍43🤣152👎2
از DeepSeek-V3 بگیم که یه مدل با هزینه کم به حساب میاد.
یه آزمایشگاه چینی این مدل رو توی ۲ ماه با ۵.۵ میلیون دلار ساخته که میشه مقایسه کرد با آموزش GPT-4o با ۱۰۰ میلیون دلار هزینه.
در واقع میشه یه مدل AI اوپن‌سورس ترکیبی و (Mixture-of-Experts یا MoE). یعنی به جای یه مدل بزرگ که همه‌کاره باشه، میان چند تا مدل «تخصصی» کوچیکتر میسازن که با هم کار میکنن.

با ۱۴.۸ تریلیون توکن آموزش داده شده، از تکنیک‌های جدیدی مثل Multi-Head Latent Attention (MLA) استفاده کردن.

برای توضیح این تکنیک باید به اصل «مفهوم توجه» یا همون Attention توی مدل‌های زبانی نگاه کنیم.
در مدل‌های زبانی، «توجه» یه مکانیزمه که به مدل اجازه میده تا روی کلمات مهم‌تر تمرکز کنه و کلمات کم‌اهمیت‌تر رو نادیده بگیره. این بهش کمک میکنه ارتباط کلمات رو بیشتر بفهمه و جواب بهتری بده.

حالا MLA میاد با جنبه‌های مختلفی به متن نگاه میکنه و سعی میکنه اهمیت کلمات رو متوجه بشه، مثلا یه بار ممکنه به روابط گرامری نگاه کنه، یه بار به معنی کلمات نگاه کنه و ...
خروجی میشه درک بیشتر و مصرف کمتر GPU و منابع محاسباتی.

طراحی و آموزش این مدل هم روی چیپ NVIDIA H800 بوده که میشه یه مدل ارزون و محدود از H100 برای بازارهای تحریمی مثل چین.

از ویژگی‌هاش توانایی پردازش تا ۱۲۸۰۰۰ توکن در یه ورودی که برای کارهایی مثل بررسی اسناد قانونی و تحقیقات دانشگاهی خیلی خوبه. ین مدل ۶۷۱ میلیارد پارامتر داره، اما گفته میشه فقط ۳۷ میلیاردش برای انجام هر کار فعال میشه.

تو آزمون‌های مختلف با مدل‌های دیگه مثل Claude-3.5، GPT-4o، Qwen2.5 و Llama3.1 مقایسه شده و عملکرد خوبی داشته. به خصوص تو ریاضیات و کدنویسی، تو آزمون‌هایی مثل MATH-500 و LiveCodeBench از رقباش بهتر بوده. همچنین تو کارهایی که نیاز به درک متن‌های طولانی داره خیلی خوبه.

@DevTwitter | <Soroush Ahmadi/>
👍53🔥111
This media is not supported in your browser
VIEW IN TELEGRAM
آماده کردن محیط برنامه نویسی از جمله کارهای مهمی هست که هر دولوپر یا برنامه نویس کلی براش وقت میذاره، چون که قراره دائما باهاش کار کنه. این ریپو یک template درست کرده و قدم به قدم توضیح میده که چطور محیط پایتون را با استفاده از VS code و داکر با هم آماده کنید. یکبار set up میکنید و دیگه راحت میشید. البته میشه برای زبان های دیگه هم تغییرش داد و ازش استفاده کرد.
github: https://github.com/RamiKrispin/vscode-python

@DevTwitter | <Mehdi Allahyari/>
👍27🔥52
در ریپوی Awesome Ghostty روی گیت‌هاب، مجموعه‌ای از ابزارها و شیدرهای اختصاصی برای ترمینال Ghostty داره لیست میشه.

https://github.com/fearlessgeekmedia/Awesome-Ghostty

@DevTwitter | <Yaser Shahi/>
👍25
اخیرا یه مقاله جالب خوندم درباره تجربه‌ مصاحبه‌ Frontend Engineer توی آمازون، سال ۲۰۲۴ و برلین. نویسنده خیلی خوب و کامل توضیح داده که این فرآیند چند مرحله داشته و توی هر مرحله دقیقا چی ازش خواستن.

مصاحبه با یه تسک آنلاین شروع شده که ۲ سوال داشته: ۱. طراحی یه accordion و ۲. کامپوننت table با قابلیت سرچ با جاوااسکریپت.

بعد توی مصاحبه‌ای که بهش می‌گفتن phone interview (که درواقع یه ویدیو کال بود)، توی نیم ساعت اول درباره تجربه‌های قبلی بر اساس ۱۴ اصل رهبری آمازون ازش سوال شد که باید با فرمت STAR جواب می‌داد. توی نیم ساعت دوم، یه سوال کدنویسی متوسط (مثل سوال‌های leetcode) بهش دادن و باید کد رو بدون تست و کامپایل توی ادیتور آنلاین می‌نوشت و توضیح می‌داد.

توی مصاحبه بعد در بخش سوال فنی ازش خواستن یه کامپوننت UI طراحی کنه که file system رو روی وب نشون بده (مثل اکسپلورر فایل).

مصاحبه بعد نیم ساعت اولش مثل مصاحبه‌های قبلی، مربوط به ۱۴ اصل رهبری آمازون بوده. توی نیم ساعت دوم ازش خواستن دکمه لایک با حالت‌ها و استایل‌های مختلف رو پیاده‌سازی کنه.

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

مرحله بعد ازش خواسته بودن که یک ویجت برای صفحه AWS Console طراحی کنه که لیستی از خدمات پر بازدید رو نشون بده. سوال مجدد باز بود، بنابراین ابتدا جزئیات رو شفاف‌سازی کرد.

مرحله آخر، مصاحبه‌کننده مدیر استخدام بود و برای سوال فنی، ازش خواسته شد یک سیستم سبد خرید طراحی کنه که مشتری‌ها بتونن محصولات رو اضافه کنند، تخفیف‌ها رو اعمال کنن و چندین کوپن روی مبلغ نهایی اعمال بشه.

مقاله کامل رو می‌تونید از اینجا مطالعه کنید. بخش ۱:
https://readmedium.com/en/https:/levelup.gitconnected.com/amazon-frontend-engineer-interview-experience-2024-berlin-ee61eb79601e
بخش ۲:
https://readmedium.com/amazon-final-interview-interview-loop-experience-9a9b08cf6525

@DevTwitter | <Seyed Mahdi Jalali/>
👍43🤣12🔥4👎3
حداقل ۳۳ تا اکستنشن آلوده کروم که مجموعا اطلاعات ۲.۶ میلیون کاربر رو دزدیدن شناسایی شده.
فکر می‌کنم Proxy SwitchyOmega رو خیلیا داشته باشن ولی خب، چک کنید چیزی از این لیست نداشته باشید:
https://arstechnica.com/security/2025/01/dozens-of-backdoored-chrome-extensions-discovered-on-2-6-million-devices/

@DevTwitter | <Yaser Shahi/>
👍35🔥2🤣2
آقا من یدونه اسکریپت تحت cli نوشتم برای وریفای کردن iso سیستم عامل ، بهتون انواع هش هارو نشون میده (SHA-256, SHA-512, MD5) بعدش استراکچر خود فایل iso رو برسی میکنه و دست آخر صحت فایل رو ، هر نوع iso هم ساپورت میکنه،اگه دوست داشتید استفاده کنید و استار بدید
https://github.com/Mehranlip/ISOHashVerifier

@DevTwitter | <Mehran/>
30👍8🤣7👎3
توافق روی نام گذاری ها از نون شب واجب تره!!
یه جمله جالب توی کتاب clean code دیدم که نوشته بود، زمانی که میخواید توابع یا متغیرهاتون رو نامگذاری کنید اون قدر حساسیت به خرج بدید که انگار دارید برای یک نوزاد تازه به دنیا اومده اسم انتخاب میکنید.
یک نکته که داخل تیم هم خیلی مهمه اینه که برای یک مفهوم، از چند ورب مختلف استفاده نشه. مثلا برای ایجاد کردن فرضا محصول میشه همه ورب های add, create, insert, make, ... رو استفاده کرد. برای اینکه ابهام و سردرگمی پیش نیاد همیشه سعی کنید توی پروژتون برای همه entity ها از یک ورب یکسان استفاده کنید و این رو توی تیمتون هم باهم توافق کنید که همه از اون ورب استفاده کنن.
این مساله به ظاهر کوچیک خیلی خیلی مهمه لطفا رعایت کنید.

@DevTwitter | <Pouya Farshidnia/>
👍125🔥72👎1
This media is not supported in your browser
VIEW IN TELEGRAM
سرعت زبان‌های برنامه‌نویسی در اجرای ۱ میلیارد حلقه‌ی تو در تو

@DevTwitter
👍68🤣39👎21🔥2