CleverDevs
11K subscribers
778 photos
286 videos
29 files
486 links
به کانال کلوردوز خوش اومدین

سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم


🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

💢~> @mmdrsdev
Download Telegram
🚀 چرا زمان کوچ کردن از npm به pnpm رسیده؟

اگه تو دنیای node/npm کار می‌کنی، شاید بعد از نصب چندتا پروژه، با پیغام Disk Space Low مواجه شدی، یا اصلا از نصب های طولانی و اشغال شدن الکی فضای سیستمت کلافه شدی؛ علت اصلیش پوشه‌های غول‌پیکر node_modules داخل پروژه های مختلف هستش. اما ابزاری به اسم pnpm اومده تا این کابوس رو برای همیشه تموم کنه.


❓ اصلاً pnpm چیه؟
عبارت pnpm مخفف Performant npm هست؛ یک package manager سریع، مدرن و فوق‌العاده به‌صرفه برای برنامه‌نویس‌های Node.js.

💡 چرا اختراع شد؟
مشکل اصلی npm و Yarn قدیمی این بود که با هر پروژه جدید، تمام بسته‌ها رو دوباره به صورت کامل دانلود و توی پوشه node_modules همون پروژه کپی می‌کردن. یعنی اگه در ۱۰ تا پروژه از React استفاده می‌کردی، ۱۰ نسخه مجزا و تکراری ازش روی سیستم داشتی! pnpm ساخته شد تا این حجم ناخواسته رو حذف کنه و سرعت نصب رو بالاببره.



🔥 مزایای کلیدی pnpm نسبت به npm:

1. ذخیره‌سازی هوشمند و صرفه‌جویی شدید در فضای دیسک:
بسته‌ها فقط یک بار روی کل سیستم شما دانلود میشن! pnpm به جای کپی کردن فایل‌ها توی هر پروژه، از Hard link و Symlink استفاده می‌کنه. یعنی ۱۰۰ تا پروژه هم داشته باشی، فضای دیسکت در حد یک پروژه اشغال میشه!

2. سرعت موشکی (تا ۳ برابر سریع‌تر):
به لطف معماری خاص و عدم نیاز به کپی مجدد فایل‌ها، دستور pnpm install به طرز شگفت‌انگیزی سریع‌تر از npm install اجرا میشه.

3. امنیت بیشتر و جلوگیری از Phantom Dependencies:
توی npm اگه بسته A به بسته B نیاز داشته باشه، تو می‌تونی مستقیم توی کد به B دسترسی داشته باشی (حتی اگه تو package.json نیورده باشیش). این قضیه باعث باگ‌های عجیب میشه. pnpm با ساختار درختی خاص خودش جلوی این مشکل رو می‌گیره.


🛠 چطوری شروع کنیم؟

نصب ساده با npm:
npx get-pnpm

استفاده از دستورات مشابه:
🔹 pnpm install (به جای npm install)
🔹 pnpm add <package> (به جای npm i <package>)
🔹 pnpm dev (برای اجرای اسکریپت‌ها)


#Nodejs #pnpm
@CleverDevs - @CleverDevsGp
👍18🔥5❤1👎1
این ویدیو قرار بود خیلی زودتر منتشر بشه... 😅

اواخر آذرماه سال گذشته با گویبان نشستیم و یک گفت‌وگوی نسبتاً خودمونی داشتیم؛ درباره خودش، علایقش، کانالش و مسیری که طی کرده تا به جایی که امروز هست برسه.

از شروع کارش و تولید محتوا گفتیم، از اینکه چطور وارد این مسیر شد و چه چیزهایی براش جذاب بوده.

اما بخش مهم دیگه‌ی این گفت‌وگو، داستان مهاجرتشه.

گویبان درباره تجربه مهاجرت به فرانسه، کارآموزی، ورود به محیط کاری و تجربه کار کردن در یک شرکت در فرانسه صحبت می‌کنه و کمی هم درباره تفاوت‌هایی که بین تجربه کاری و زندگی در ایران و فرانسه دیده حرف زدیم.

ما این گفت‌وگو رو اواخر آذرماه 1404 ضبط کردیم، اما اتفاقات ۱۸ و ۱۹ دی باعث شد انتشارش عقب بیفته و بعد هم اتفاقات ماه‌های بعد و جنگ باعث شد این قسمت بیشتر از چیزی که فکر می‌کردیم در آرشیو بمونه.

حالا بالاخره بعد از چند ماه، این قسمت از انبار بیرون اومده! 😄

اگر گویبان رو از قبل می‌شناسید، احتمالاً این گفت‌وگو کمک می‌کنه با بخش‌های دیگه‌ای از مسیرش آشنا بشید؛ و اگر هم تازه باهاش آشنا می‌شید، فکر می‌کنم داستانش شنیدنی باشه.

🎙 گفتگو با گویبان: از لینوکس و سلف‌هاست تا بیت‌کوین و سرور خانگی

لینک ویدیو:
https://youtu.be/rmk4EYYm0tU
❤8🔥3
Forwarded from جادی | Jadi
بیرجند لاگی ها توی روز برنامه نویس یه چلنج باحال دیگه داشتن: چلنج فشرده سازی! (:

توی این رپو یه فایل به شما داده شده که باید فشرده اش کنین و بر اساس اینکه برنامه شما چقدره و چقدر فشرده می کنه، یه امتیاز میگیرین. دقت کنین که هدف نهایی درک کردن فشرده سازی، ور رفتن باهاش و .. است. اگر یه چیزی بنویسین که یه الگوریتم فشرده سازی رو به کار ببره نسبتا بیمزه است و شاید حتی خارج از رده بندی.

اگر من بخوام بازی کنم اول آنتروپی و چند تا فاکتور دیگه رو تست می کنم. بخصوص با برنامه
enp
تا ببینم این فایل اصولا چقدر دیتا داره. یه فایل رندوم چندان قابل فشرده سازی نیست.

بعدش سعی می کنم ایده های خیلی بیسیک فشرده سازی رو پیاده کنم. مثل
RLE, huffman

برای یادگیری بگم که توی آر.ال.ای، اگر ۵ تا A پشت هم هست ممکنه بتونین بنویسین 5A. معلومه که چند تا مشکل ریز داریم که باید حلش کنین.

توی هافمن یه بار متن رو می بینیم و ترکیب های تکراری رو توش پیدا می کنیم، بعد اینها رو کد گذاری می کنیم و سعی می کنیم هر موردش رو با کدش جایگذاری کنیم و این چیزها.

این ها مسائل جالبی هستن و چیزهای باحالی بهتون یاد می دن؛ پس اگر می خواین بازی کنین معما اینجاست:

https://github.com/birlug/256

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

و مرسی از بچه های بیرجندلاگ که مدت ها است گاه گداری مسائلی واقعا جالب برامون مطرح کردن. منم چند ساعت دیگه اگر فرصت کنم تست می کنم و جواب های شما رو هم می بینم که لذت ببرم.
❤20
Forwarded from sohrab::stdout
خب اومدم یک پست شبانه بذارم و برم تا چند روز دیگه که با یک محتوای خوب برگردم :3

براتون سوال نشده که چرا ویندوزهای ۳۲ بیتی نمی‌تونستن بیشتر از ۴ گیگ رم رو ببینن؟

خب من یک ویدئویی رو توی اینستاگرام دیدم و برام جالب بود و رفتم درموردش تحقیق کردم؛ عملاً می‌تونستن ببینن، همونطوری که هسته لینوکس روی ۳۲ بیت می‌تونست بیشتر از ۴ گیگ رو ببینه اما...

اول بذاریم ببینیم این ۴ گیگ از کجا اومد:

در سیستم‌های ۳۲ بیتی، آدرس‌دهی حافظه با ۳۲ بیت انجام می‌شه.
هر بیت فقط دو حالت داره (۰ یا ۱)، پس تعداد آدرس‌های ممکن برابره با:

2^32 = 4/294/967/296


چون حافظه به صورت بایت‌به‌بایت آدرس‌دهی می‌شه، این عدد دقیقاً می‌شه حدود ۴ گیگابایت (دقیق‌ترش ۴ گیبی‌بایت). یعنی پردازنده بدون هیچ کمکی، فقط می‌تونه تا ۴ گیگ حافظه فیزیکی رو مستقیم ببینه.

اما اینجا یه چیز جالب به اسم PAE وارد می‌شه

‌‌‏Physical Address Extension یا همون PAE، یه قابلیت سخت‌افزاریه که اینتل از زمان پنتیوم پرو (۱۹۹۵) اضافه کرد.
با فعال کردن PAE، پردازنده از آدرس فیزیکی ۳۲ بیتی به ۳۶ بیتی ارتقا پیدا می‌کنه.
نتیجه؟ حداکثر حافظه فیزیکی قابل آدرس‌دهی می‌شه:

2^36 = 64 GB

یعنی از نظر سخت‌افزاری، پردازنده‌های ۳۲ بیتی با PAE کاملاً قادر بودن تا ۶۴ گیگ رم رو مدیریت کنن.

لینوکس از سال ۱۹۹۹ (کرنل ۲.۳.۲۳ به بعد) پشتیبانی کامل از PAE رو داشت و نسخه‌های PAE کرنل لینوکس روی ماشین‌های ۳۲ بیتی می‌تونستن بدون مشکل تا ۶۴ گیگ رم رو ببینن و استفاده کنن.

پس چرا ویندوز ۳۲ بیتی محدود به ۴ گیگ موند؟

اینجا دیگه محدودیت فنی نبود، بلکه تصمیم مایکروسافت بود.

مایکروسافت PAE رو در نسخه‌های سرور ویندوز (مثل Windows Server 2003 Enterprise و Datacenter) فعال کرد و اونا می‌تونستن تا ۶۴ یا حتی ۱۲۸ گیگ رم رو ببینن.
ولی در نسخه‌های کلاینت (ویندوز XP، ویستا، ۷ و حتی ۱۰ نسخه ۳۲ بیتی) عمداً این قابلیت رو محدود کردن و سقف رو روی ۴ گیگ نگه داشتن.

دلیل اصلی‌ش؟ درایورها.

خیلی از درایورهای سخت‌افزاری (مخصوصاً پرینتر، کارت صدا، وب‌کم و دستگاه‌های جانبی مصرف‌کننده) فرض می‌کردن که آدرس فیزیکی همیشه داخل ۳۲ بیت جا می‌شه. وقتی PAE فعال می‌شد و حافظه بالای ۴ گیگ استفاده می‌شد، این درایورها بیت‌های بالایی آدرس رو دور می‌ریختن و سیستم کرش می‌کرد (بلواسکرین معروف).

مایکروسافت برای جلوگیری از این مشکلات سازگاری، در نسخه‌های خانگی ویندوز، حتی وقتی PAE برای قابلیت‌هایی مثل DEP (Data Execution Prevention) فعال بود، باز هم اجازه نمی‌داد حافظه بالای ۴ گیگ استفاده بشه.

نکته دیگه: چرا حتی با ۴ گیگ رم هم معمولاً فقط ۳.۲ تا ۳.۵ گیگ دیده می‌شد؟

چون بخشی از فضای آدرس ۴ گیگی توسط سخت‌افزار رزرو می‌شد (Memory-Mapped I/O).
کارت گرافیک، بایوس، دستگاه‌های PCI و... بخشی از این فضای آدرس رو برای خودشون برمی‌داشتن. در نتیجه رم واقعی قابل استفاده کمتر از ۴ گیگ می‌شد. به این می‌گن «۳ گیگ بَریِر» یا ۳GB Barrier.

https://en.wikipedia.org/wiki/Physical_Address_Extension

@SohrabContents
❤43👍8🔥3👎1
یه نفر اومده و یه موزیک پلیر لینوکس به اسم sung با cpp و qt نوشته که طراحی زیبا و ویژگی های باحالی داره
این موزیک پلیر هم سرویس هایی مثل Youtube رو ساپورت میکنه هم میتونید خودتون یه موزیک سرور (مثل jellyfin و Subsonic) راه بندازید و با این کلاینت بهش وصل بشید
یا اصلا میتونید از موزیک های لوکال خودتون استفاده کنید

قابلیت‌هایی مثل لیریک سینک‌شده، ترکیب آهنگ‌های لوکال و یوتیوب توی یه پلی‌لیست، و پشتیبانی از کاورهای متحرک رو هم داره که خودتون می‌تونید تستش کنید.

اوپن سورسه و برای نصب و استفاده میتونید به گیت هابش سر بزنید

https://github.com/yappologistic/Sung

#tools #music | <Yappologistic>
@CleverDevs - @CleverDevsGp
❤31👎5🔥4
توی کدای کرنل برای سیستم‌کال reboot شما باید دوتا magic value به تابع بدید تا کرنل برای ایمنی مطمئن بشه فراخوانی سیستم‌کال تصادفی نبوده.

مقدار اول همیشه باید 0xfee1dead باشه (که به شکل هگزادسیمال کلمه‌ی feel dead رو تداعی می‌کنه).
اما مقدار دوم باید یکی از این چهار تا عدد باشه که اگه به هگزادسیمال تبدیلش کنیم در واقع تاریخ تولد خود لینوس توروالدز و سه تا از دخترهاشه:
تاریخ تولد لینوس
تاریخ تولد دختر اول (پاتریشیا)
تاریخ تولد دختر دوم (دانیلا)
تاریخ تولد دختر سوم (سلست)
این درواقع یه Easter egg توی کد کرنله که تاریخ تولد لینوس و دخترهاش رو به عنوان magic valueهای reboot استفاده می‌کنه.

#linux | <trish>
@CleverDevs - @CleverDevsGp
❤39🔥5👍3😁2
Forwarded from TechTube 𝕏 تک توب
شرکت کوالکام اعلام کرده قرار هست پشتیبانی رسمی لپتاپهای مجهز به چیپ Snapdragon X2 از لینوکس رو به این لپتاپها اضافه کنه که دستگاه قدرتمندی با معماری ARM رو در اختیار دوست داران لینوکس قرار میده.

تا پیش از این، لپتاپهای مجهز به این چیپ محدود به ویندوز بودن که برای عده ای از کاربران خوشایند نبود و ازاد عملی که لپتاپهای x86 در انتخاب سیستم عامل میدادن رو نداشتن.

حالا کوالکام گفته که تا اخر سال میلادی جاری پشتیبانی از توزیع Debian 13 رو اضافه خواهد کرد و پشتیبانی از ابونتو هم در نیمه اول سال میلادی اینده اضافه خواهد شد.

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

اضافه کردن پشتیبانی از لینوکس صرفا یک پشتیبانی ساده محدود نخواهد بود و این شرکت قرار هست پشتیبانی از درایورهای گرافیکی متن باز Freedreno, Turnip و Rusticl رو اضافه کنه. همچنین درایورهایی برای دسترسی به Hexagon NPU ارائه خواهد شد تا امکان از اون در عملیات هوش مصنوعی امکان پذیر باشه.

کوالکام از لپتاپ شرکتهای HP، ایسوس و HUMAIN به عنوان نخستین لپتاپهایی که پشتیبانی از لینوکس رو اضافه میکنن یاد کرده.

🔎 videocardz

📍 @TechTube
🔥18❤4👍3⚡1
یکی از کامند‌های بدرد بخور لینوکس که برای دیباگ کردن میتونه کمکتون کنه strace (مخفف system call trace) هست.

این کامند توی دیباگ‌های برنامه‌ها مخصوصاً اونایی که سورس‌کدشون در دسترس نیست خیلی بدرد میخوره. strace میاد و تمام سیستم‌کال‌هایی که برنامه استفاده کرده رو نشون میده و اگه هرکدوم اروری داشته باشه میتونید ببینیدش و بفهمید مشکل از کجاس.

برای مثال میخوایم ببینیم کامند ls از چه سیستم‌کال‌هایی استفاده میکنه:
strace ls

یا فقط میخوایم خروجی‌های مربوط به یه سیستم‌کال خاص (مثلاً باز کردن فایل) رو ببینیم:
strace -e trace=openat ls


یا میتونید با فلگ p- به پروسسی که در حال اجراس یا هنگ کرده وصل بشید و چکش کنید:
 strace -p <PID>


توی تصویر بالا هم یه نمونه خروجی رو می‌‌بینید که برنامه بدون ارور مشخص خارج می‌شد، اما strace نشون میده ارور بخاطر پیدا نشدن فایل کانفیگ توی اون مسیر بوده.

برای اطلاعات بیشتر هم میتونید به این لینک سر بزنید

#tools #linux
@CleverDevs - @CleverDevsGp
❤18👍5🔥5
خیلی وقتا که از ایجنت‌ها برای کدنویسی استفاده می‌کنید، برای یه تسک ساده یا کلی پکیج اضافه نصب می‌کنن یا دچار Over-engineering می‌شن و چرخ رو از اول اختراع می‌کنن!
پروژه‌ای به اسم Ponytail اومده که به ایجنت یاد میده مثل یه «سینیور دولوپر تنبل» فکر کنه؛ کم حرف بزنه، پکیج اضافه نصب نکنه و با فیچرهای نیتیو کار رو دربیاره

مثلاً وقتی از ایجنت یه Date Picker ساده می‌خواید، به جای اینکه بره کلی کامپوننت و جاوااسکریپت بنویسه یا پکیج نصب کنه، با Ponytail خروجی میشه فقط همین:
<!-- ponytail: browser has one -->
<input type="date">


طبق بنچمارک‌های خودشون این رویکرد حجم کدهای اضافی رو تا ۵۴٪ و مصرف توکن رو حدود ۲۰٪ کاهش میده.
البته باید حواستون باشه که کیفیت کد رو فدای کوتاهیش نکنه

جدا از فایل پرامپت خالص، این پروژه به‌صورت پلاگین/اسکیل برای ایجنت های مختلف در دسترسه.

حتی با دستوراتی مثل /ponytail ultra (برای حداکثر سخت‌گیری در حداقل‌نویسی) یا /ponytail-review (برای بازبینی و حذف کدهای اضافه در Diff فعلی) میتونید کنترل دقیق‌تری روی خروجی ایجنت داشته باشید

برای اطلاعات بیشتر دربارش یه سر به گیت هابش بزنید

📌 Github
#tools #ai
@CleverDevs - @CleverDevsGp
❤9👍5🔥3👎1🆒1