Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Gopher Academy
🔵 عنوان مقاله
Hunting Zombie Processes in Go and Docker

🟢 خلاصه مقاله:
**
مقاله به بررسی مشکلات ایجاد شده توسط فرایندهای زامبی پرداخته که در نتیجه فرایند اسپاون شدن فرایندهای دیگر بوجود آمده‌اند. به‌خصوص در محیط‌های کانتینری که مدیریت فرایندها و ارتباطات بین آنها پیچیده‌تر می‌شود. مقاله راهکارهایی را برای مدیریت و پایان دادن به زندگی فرایندهای زامبی ارائه می‌دهد که شامل استفاده از ابزارها و اسکریپت‌هایی برای تضمین خاتمه صحیح و پاکسازی سیستم از این فرایندها می‌شود، که در نهایت به بهبود عملکرد و ثبات سیستم کمک می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/168366/web


👑 @gopher_academy
هوش مصنوعی دیگر انتخاب نیست، یک الزام است

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

به‌تازگی یادداشتی از Tobi Lutke، مدیرعامل(CEO) Shopify خوندم که من رو قانع کرد که استفاده‌ی «reflective و طبیعی» از AI، دیگه یک ویژگی اختیاری نیست؛ بلکه یک انتظار پایه برای تمام اعضای تیم‌های فنیه.

نکاتی که خیلی به چشمم اومد:
- استفاده از AI باید بخشی از مرحله prototyping باشه.
- قبل از درخواست منابع بیشتر، اول باید ببینیم با کمک AI چه کارهایی می‌شه انجام داد.
- مهارت در استفاده از ابزارهایی یا در آینده نزدیک agents ها و ChatGPT و ابزار های از این دست، یک مزیت رقابتی جدی محسوب می‌شه.
- و مهم‌تر از همه: "اگر در حال رشد نیستیم، در حال عقب‌گردیم."

در دنیای امروز، استفاده از AI در اکثر حرفه ها (مخصوصا توسعه نرم‌افزار) مثل بلد بودن Git در ۲۰۱۰ شده — اگر هنوز واردش نشدی، از قافله عقب می‌مونی.

@DevTwitter | <arash/>
Forwarded from Curious Geek ⚡️
چرا از پروکسی روی npm استفاده نکنیم؟
امروز چندین ساعت زمانم بخاطر استفاده از
npm config set proxy
که زده بودم هدر رفت، پکیج
nodemailer
بطور پیشفرض این پروکسی رو استفاده می‌کرد و من خطای پروتکل می‌گرفتم و همش فکر میکردم شاید مشکل از کد باشه..
پس چطور تحریم هارو دور بزنیم؟
میتونیم از sshuttle برای dns کردن ssh سرورمون استفاده کنیم، روی ویندوز هم با wsl 2 قابل استفادست.
sshuttle -NHr --dns user@ip 0/0
🆔 @Hiradsajde
Forwarded from Ninja Learn | نینجا لرن (Denver)
خب خب خب،‌ معرفی Pylint🏛️
اگه با پایتون کار میکنین و میخواین کدتون تمیز باشه، حتما باید با ابزارهایی مثل pylint اشنایی داشته باشین. این ابزار ها میان یک سری قوانین و قواعد ثابت رو براتون تعریف میکنن و بررسی میکنن که توی کدتون این قواعد رعایت شده یا نه.

‏Pylint چیه؟🤔
‏pylint به ابزار linter برای زبان پایتونه که کد رو بررسی میکنه، اشتباهات رایج رو گزارش میده، با استاندارد های PEP8 ارزیابیش میکنه و در نهایت یه امتیاز (از ۰ تا ۱۰) به کدی که نوشتین میده. این ابزار باعث میشه کد هاتون استاندارد و قابل توسعه باشن و میتونه توی رعایت کردن اصول PEP8 بهتون کمک کنه.

معجزه توی هماهنگی تیمی
وقتی توی یه تیم فعالیت میکنین و مشغول به کار هستین، قطعا همه یه استایل خاصی برای کدنویسیشون دارن. اینجاست که pylint و فایل کانفیگش میتونن هماهنگی رو به تیمتون بیارن و باعث یک پارچگی کد میشن و در نتیجه باعث میشه خوندن کد ساده تر باشه.

نصب و استفاده🚀
میتونید با دستور زیر این ابزار رو نصب کنید.
pip install pylint

اجرا روی یه فایل
pylint main.py

یا روی یه پروژه ی کامل
pylint myproject/

خب حتما بعد اجرا متوجه شدین که دیگه خیلی داره سخت میگیره یا اینکه میخواین تنظیمات و استایل خودتون رو بهش بدین، میتونین با استفاده از فلگ های دستور pylint این کار رو انجام بدین. به طور مثال خاموش کردن بعضی اخطار ها:
pylint myfile.py --disable=missing-docstring,invalid-name,too-many-arguments --max-line-length=100


کانفیگ Pylint🛠️
خب تایپ و استفاده از دستور قبلی با یه سری شخصی سازی های دیگه خیلی سخت میشه و تا مرز غیرقابل استفاده بودن میرسه، اینجاست که میتونین از فایل کانفیگ استفاده کنین. استفاده از فایل کانفیگ خیلی مرتب تر و تیم پسند تره.
فایل کانفیگ رو با این دستور ایجاد کنین:
pylint --generate-rcfile > .pylintrc

و بعد میتونید طبق استایل کدنویسی خودتون یا استایل مدنظر تیمتون کانفیگ هارو تغییر بدین:
[MESSAGES CONTROL] # disable selected warnings
disable=
missing-docstring,
# no docstring warning
invalid-name,
# allow any names
too-few-public-methods,
# allow few methods
too-many-arguments
# allow many args

[FORMAT] # formatting rules
max-line-length=100
# max line length

میتونین با مراجعه به صفحه کانفیگ ها از داکیومنت رسمی pylint کانفیگ های بیشتری رو ببینین.

جمع بندی✍️
با استفاده از این ابزار میتونین هماهنگی بی نظیری توی کدهاتون ایجاد کنید و اگه توی تیم کار میکنین باعث میشه کل تیم یک سری قواعد و اصول یکپارچه رو رعایت کنن و کد کلی ساختار مشخصی داشته باشه.🏗️ میتونین Pylint رو به IDE ای که استفاده میکنین اضافه کنین تا استفاده ازش ساده تر بشه.

#️⃣ #programming #python


🥷🏻 CHANNEL | GROUP
ساختن هر پروژه جدید با Node.js و Express می‌تونه وقت‌گیر باشه...
مخصوصاً وقتی هر بار باید از صفر همه چیزو توسعه یا پیکربندی کنیم!

برای همین همچین فکری به سرم زد یه ابزار بسازم
تا شروع پروژه‌های بعدی راحت‌تر و سریع‌تر بشه

Express Template (TypeScript)
ساختار پروژه حرفه‌ای (OOP)
تنظیمات اولیه امنیتی با helmet و compression و RateLimiter
  لاگ‌گیری پیشرفه با winston
  پشتیبانی از alias برای importها
  قابلیت گسترش برای پروژه‌های واقعی

هدفم از ساختن این ابزار:
برای کساییه که می‌خوان سریع یه پروژه‌ی Node.js رو راه بندازن، بدون اینکه درگیر تنظیمات ابتدایی بشن.
خیلی ساده می‌تونی کلونش کنی و مستقیم بری سراغ توسعه‌ی فیچرها!

لینک ریپوزیتوری:
https://github.com/Hossein-Falah/express-templete

@DevTwitter | <Hossein/>
پکیچ ایجاد متاباکس سفارشی برای لاراول

بالاخره یه پکیچ پرکاربرد برای لاراول نوشتم.

متاباکس یک قابلیت پرکاربرد برای برای دریافت و یا نمایش اطلاعات وردپرس است. تصمیم گرفتیم این قابلیت متاباکس وردپرس را به لاراول بیاوریم. با استفاده از متاباکس لاراول شما می توانید قابلیت مثل فیلد سفارشی برای پست ها تعریف کنید و خود پکیچ دیتابیس دارد و نیازی به ایجاد جدول دیتابیس فیلد اضافی نیست.

گیت هاب :
https://github.com/LaraPire/laravel-metabox

مستندات :
https://github.com/Rayiumir/laravel-metabox/blob/main/Documentation/en.md

@DevTwitter | <Raymond Baghumian/>
unsafe rust be like:


#meme
@SohrabContents
یه lan messenger خوب.
رایگان، متن‌باز، ویندوز، مک، لینوکس.
beebeep.net

@DevTwitter | <Ayub Kokabi/>
Audio
#مشورت_6
«رشد مهارت ها و تجربه ها و ارتباطات در فعالیت های دوران دانشجویی»

📌مرور دوران دانشجویی مدیران شرکت های برخاسته از دانشکده از جمله کوئرا/توسن/ترب/گپیفای/ایده‌کاوان

🟡بخش‌های این مشورت:


🔹پاسخ به سوال یکی از سال پایینی ها دانشکده در مورد مسیر خودم در دانشکده
05:32
🔹خاطره تماس تلفنی از دست رفته سر کلاس ریاضیات گسسته ترم ۲ دکتر آبام
09:30
🔹 مرور مسیر رشد همدانشکده ای ها
14:00
🔹روایت داستان محمد جواد ابوطالبی ورودی ۹۳ از خوابگاه احمدی روشن/مدیر عامل گپیفای
18:15
🔹آینده دانشجویان کامپیوتر که کد زدن دوست ندارن در مدیریت محصول/HR و مدیریت
26:00
🔹روایت داستان ولی الله فاطمی اردکانی از دهه ۱۳۷۰ دانشکده بنیان گذار هلدینگ توسن
29:00
🔹اهمیت پیگیری یک دغدغه اصیل برای رشد
31:40
🔹 تو نیکی می کن و در دجله انداز/که ایزد در بیابانت دهد باز
در خوابگاه و دانشگاه
34:00
🔹مثال پویا مصدق ورودی ۱۳۹۱ دانشکده مدیر عامل ایده کاوان و درآمد ۱۰۰ میلیاردی
39:10
🔹شروع sharif judge پدر بزرگ Quera از اتاق خوابگاه طرشت با دغدغه بهبود آموزش برنامه نویسی توسط محمد باقر تبریزی و ...
47:00


🔰 پادکست مشورت کامپیوتری ها
@coaching_ce
Forwarded from Dev Dastan
This media is not supported in your browser
VIEW IN TELEGRAM
🖼️ The Hidden Cost of JavaScript Arrays (Part 1 - Memory Allocation)


✔️ JS arrays can tank performance and there are ways to optimize them.


Operations like push(), pop(), and splice() can trigger memory reallocation, copying, and fragmentation.

Using fixed-size or oversized arrays can be more efficient.


// Inefficient: Repeatedly resizing the array

let arr = [];
console.time("Resizing Array");
for (let i = 0; i < 10000; i++) {
arr.push(i);
}
console.timeEnd("Resizing Array");

// Time varies, typically slow

// Efficient: Using a pre-sized array

let arr2 = new Array(10000);

console.time("Pre-sized Array");

for (let i = 0; i < 10000; i++) {
arr2[i] = i;
}

console.timeEnd("Pre-sized Array"); // Time varies, typically faster


📚 Article: [here]

#javaScript #performance #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dev Dastan
This media is not supported in your browser
VIEW IN TELEGRAM
🖼️ The Hidden Cost of JavaScript Arrays (Part 1 - Memory Allocation)


✔️ JS arrays can tank performance and there are ways to optimize them.

Operations like push(), pop(), and splice() can trigger memory reallocation, copying, and fragmentation.

Using fixed-size or oversized arrays can be more efficient.



// Inefficient: Repeatedly resizing the array

let arr = [];

for (let i = 0; i < 10000; i++) {
arr.push(i);
}

// Efficient: Using a pre-sized array

let arr2 = new Array(10000);


for (let i = 0; i < 10000; i++) {
arr2[i] = i;
}





📚 Article: [here]

#javaScript #performance #softwareEngineering


🖥 Follow @devDastan for more content.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔵 عنوان مقاله
A No Nonsense Guide to Go Project Layout

🟢 خلاصه مقاله:

مقاله‌ی مورد نظر بر این موضوع تأکید دارد که ساختارهای پیچیده در پروژه‌های نرم‌افزاری کوچک باید کنار گذاشته شوند. نویسنده، نظراتی را ارائه می‌دهد که هدف آن‌ها پیشگیری از پیچیدگی‌های بی‌مورد و حفظ تمرکز و سادگی در ساختار بسته‌ها است. او تأکید می‌کند که ساختارهای ساده‌تر می‌توانند به درک سریع‌تر و نگهداری آسان‌تر کمک کنند و همچنین کیفیت کلی پروژه را بهبود ببخشند. نویسنده به توسعه‌دهندگان دیگر توصیه می‌کند که از پیچیدگی‌های بی‌مورد دوری کنند و بر سادگی تمرکز داشته باشند تا نتایج بهتری حاصل شود.

🟣لینک مقاله:
https://golangweekly.com/link/168357/web


👑 @gopher_academy
Forwarded from Golden Code (علی 🇨🇴)
در لاراول، قابلیت جدید fragment@ به ما اجازه میده فقط یک بخش مشخص از یک ویو رو رندر کنیم، نه کل صفحه رو.

کاربردش:

● با AJAX کار میکنیم.

● فقط یه قسمت از صفحه باید آپدیت بشه.

● می‌خوایم سرعت لود بالا بره و مصرف کمتر شه.

مثال از کاربردش؟

زمانیکه با جاوااسکریپت قراره یک درخواست AJAX بفرستیم برای گرفتن اطلاعات کاربر.
حالا بجای اینکه کل صفحه رو دوباره بفرستیم، فقط همون بخش لازم (مثلاً user name) رو از ویو میفرستیم.
در نتیجه صفحه ی ما سریعتر و بهینه تر کار میکنه.
#Laravel
@GoldenCodeir
(استفاده ازش هم سادست، به منبع و مثالش دقت کنید 👇🏾)
https://x.com/MrPunyapal/status/1914293970848326130?s=35
Forwarded from Linuxor ?
تا حالا به این فکر کردین که دانلودر ها چطوری دانلود رو از وسطش Resume می‌کنن ؟ یا موازی دانلود می‌کنن ؟

curl -H "Range: bytes=10-20" example.com/linuxor.mp4 --output file_part2.mp4

با هدر Range می‌تونین یه بازه خاص که اینجا بین 10 تا 20 بایت فایله رو دانلود کنید البته حواستون باشه سرور هم باید ساپورت کنه و ریسپاس کد 206 معادل Partial Content رو برگردونه


@Linuxor
بچه‌ها این رپو یه ایجنت که برای خدمات مشتری هست رو با انواع فریم‌ورک‌های موجود مثل langchain، agno، گوگل sdk یا حتی بدون فریم‌ورک (با لوپ ساده) پیاده کرده.
میتونید از مثال‌ها برای شروع ساخت یه ایجنت استفاده کنید
https://github.com/langwatch/create-agent-app

@DevTwitter | <Saman Esmaeili/>
Forwarded from FuckingProgrammingBook
این کتاب به آموزش ایجاد، آموزش و تنظیم مدل‌های زبانی بزرگ (LLMs) می‌پردازد. نویسنده، سباستین راشکا، مراحل مختلف ایجاد LLM را با استفاده از متن، نمودارها و مثال‌ها توضیح می‌دهد. خوانندگان یاد می‌گیرند که چگونه یک LLM مشابه GPT-2 بسازند، مجموعه داده مناسب برای آموزش تهیه کنند و یک خط لوله آموزشی کامل ایجاد کنند. همچنین، روش‌های تنظیم دقیق LLMها برای وظایف خاص و استفاده از بازخورد انسانی برای پیروی از دستورالعمل‌ها نیز بررسی می‌شود. این کتاب به درک نحوه کار LLMها و روش‌های سفارشی‌سازی آن‌ها کمک می‌کند و به خوانندگان امکان می‌دهد یک چت‌بات بسازند. برای استفاده از این کتاب، مهارت‌های متوسط پایتون و دانش پایه‌ای از یادگیری ماشین مورد نیاز است.


لینک کتاب

#book


@FuckingProgrammingBooks

📚📚 @PhiloLearn 📚📚
Forwarded from Md Daily (Mahan)
داشتم یه ویدیو تو یوتیوب تحت عنوان What Happens When a Program Calls Sleeps میدیدم که خیلی جالب بود اگه تا حالا از تابع sleep توی برنامه‌نویسی استفاده کردید، شاید براتون سوال شده که چرا اسمش «sleep» هست و نه مثلاً «wait» یا «delay»؟ این ویدیو یه سفر جذاب به پشت صحنه‌ی این تابع ساده‌ست که پر از نکات سخت‌افزاری و نرم‌افزاریه. این تابع تقریباً توی همه زبان‌های برنامه‌نویسی هست (تو جاوااسکریپت داستانش فرق داره).

اولین چیزی که ویدیو بهش می‌پردازه، اینه که تابع sleep چطور توی دنیای واقعی کار می‌کنه. می‌ره سراغ سخت‌افزار و نشون می‌ده که چطور با استفاده از فلیپ‌فلاپ‌ها (یه جور مدار الکترونیکی که مثل سلول‌های حافظه کار می‌کنن) می‌شه یه تایمر ساخت.

این تایمرها توی سی‌پی‌یو مثل یه ساعت شنی دیجیتال عمل می‌کنن: یه عدد اولیه می‌گیرن و با هر تیک ساعت، شمارش معکوس می‌کنن تا به صفر برسن. وقتی یه برنامه sleep رو صدا می‌زنه، سیستم‌عامل با یه system call این تایمر رو تنظیم می‌کنه و وقتی تایمر به صفر رسید، با یه interrupt برنامه رو بیدار می‌کنه.

ولی یه چالش بزرگ وجود داره:
تعداد تایمرهای سخت‌افزاری توی یه چیپ محدوده. مثلاً اگه فقط دو تا تایمر داشته باشیم و سه تا برنامه بخوان sleep کنن، یکی باید منتظر بمونه! اینجا نرم‌افزار وارد بازی می‌شه. ویدیو توضیح می‌ده که چطور سیستم‌عامل با یه تکنیک هوشمندانه، فقط با یه تایمر می‌تونه چندین برنامه رو مدیریت کنه. برنامه‌هایی که sleep صدا می‌زنن، توی یه «صف خواب» می‌رن و سیستم‌عامل با یه تایمر و یه سری محاسبات، مطمئن می‌شه که هر کدوم سر وقت بیدار بشن.

بعدش، ویدیو یه روش قدیمی‌تر به اسم busy waiting رو بررسی می‌کنه که توی اون، برنامه با یه حلقه‌ی بی‌فایده، پردازنده رو مشغول نگه می‌داشت تا زمان بگذره. این روش نه تنها دقت پایینی داره (چون به سرعت پردازنده و نوع دستورات بستگی داره)، بلکه کلی از منابع سیستم رو هدر می‌ده و حتی می‌تونه سیستم رو قفل کنه! خوشبختانه، سیستم‌عامل‌های مدرن با استفاده از برنامه‌ریزی پردازنده (CPU scheduling) این مشکل رو حل کردن. وقتی برنامه sleep رو صدا می‌زنه، عملاً به سیستم‌عامل می‌گه: «من برای یه مدت نمی‌خوام پردازنده رو اشغال کنم، بذار بقیه کار کنن.»

یه نکته‌ی جالب دیگه اینه که دقت sleep همیشه ۱۰۰٪ نیست. چون بعد از بیدار شدن، برنامه می‌ره توی صف آماده و اگه سیستم شلوغ باشه، ممکنه یه کم بیشتر منتظر بمونه. برای همین، وقتی از sleep استفاده می‌کنید، زمان داده‌شده یه حداقل تضمین‌شده‌ست، نه یه عدد دقیق. این موضوع توی سیستم‌های عمومی (غیر real-time) کاملاً عادیه و ویدیو خیلی خوب توضیح می‌ده که چرا نباید انتظار دقت میکروثانیه‌ای داشته باشیم.

در نهایت، ویدیو به این می‌رسه که چرا اسم این تابع «sleep» هست. «wait» می‌تونه گنگ باشه و به هر نوع انتظاری اشاره کنه (مثل busy waiting)، ولی «sleep» یعنی برنامه کاملاً غیرفعال می‌شه، منابع رو آزاد می‌کنه و مثل وقتی که ما می‌خوابیم، منتظر می‌مونه تا بیدار بشه. این اسم حسابی به ماهیت این تابع می‌خوره!

اگه کنجکاو شدید که جزئیات بیشتری درباره‌ی این موضوع بدونید، این ویدیو پر از توضیحات باحال و انیمیشن‌های جذابه که مفاهیم پیچیده رو ساده می‌کنه. حتماً یه سر بزنید و خودتون ببینید:

📹 https://www.youtube.com/watch?v=e5g8eYKEhMw


—-

💡 مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
تو دیسک‌های SSD مفهومی داریم به اسم Terabytes Written یا TBW که نشون می‌ده تا چه حجمی از دیتا میتونیم روی دیسک بنویسیم. مثلاً SSD با 600TBW می‌تونه 600 ترابایت دیتا بنویسه قبل از اینکه عمر مفیدش تموم بشه.
برای اینکه عمر SSD رو متوجه بشیم، می‌تونیم TBW رو با استفاده از ابزارهای دیسک مثل CrystalDiskInfo یا smartctl چک کنیم.

مثلاً عدد ۶۰۰ برای TBW: اگه کاربر معمولی باشیم و فرض کنیم روزی ۱۰۰ گیگ اطلاعات رو دیسک مینویسم، حدود ۱۶ سال طول میکشه تا به عدد 600TBW برسیم!

@DevTwitter | <Mohammad/>
آلفا هفتم از میزکار کازمیک عرضه شد.

تغییرات خیلی خوبی داشته. (هنوز میانبر تغییر زبان کیبورد نداره)


https://blog.system76.com/post/cosmic-alpha-7-never-been-beta


@SohrabContents