CleverDevs
10.3K subscribers
772 photos
286 videos
29 files
479 links
به کانال کلوردوز خوش اومدین

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


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

💢~> @mmdrsdev
Download Telegram
توی زبان c یه کلیدواژه جالب به اسم register داریم که یه زمانی برای بهینه سازی خیلی مهم بود.

کارش این بود که به کامپایلر میگفت این متغیر قراره تو برنامه خیلی استفاده بشه، پس جای اینکه تو رم ذخیره‌اش کنی، مستقیم ببرش تو رجیستر خود پردازنده تا سرعت خوندن و نوشتنش به شدت بره بالا.
مثلا برای یه متغیر شمارنده حلقه:
int main() {
register int i = 0;
while (i < 1000) {
i++;
}
}

استفاده ازش یه سری قوانین سفت و سخت داره. مثلا نمیتونید آدرس این متغیر رو با علامت & بگیرید، چون اصلا تو مموری نیست که آدرس داشته باشه. یا اینکه متغیرهای گلوبال و استاتیک نمیتونن رجیستر بشن و حتما باید لوکال (داخل تابع) باشن.
اما قسمت جالب و معماری قضیه اینجاست: تو کامپایلرهای مدرن امروزی این کلیدواژه عملا فقط یه پیشنهاده و کامپایلر میتونه کلا نادیده‌اش بگیره. کامپایلرهای امروزی انقدر هوشمند شدن که حتی اگه شما register رو ننویسید، خودشون با آنالیز کد تشخیص میدن کدوم متغیر تو رجیستر باشه بهتره. در واقع الان کامپایلرها خیلی بهتر از خود برنامه نویس میتونن منابع پردازنده رو مدیریت کنن.
دونستن این کلیدواژه شاید الان تو کدنویسی روزمره کاربرد نداشته باشه، اما درک خیلی خوبی از تفاوت سرعت حافظه و پردازنده میده و نشون میده کامپایلرها تو این سال‌ها چقدر پیشرفت کردن. تو رفرنس‌های اصلی مثل کتاب K&R هم بهش برمیخورید.

#c
@CleverDevs - @CleverDevsGp
44👍10🔥5👎1👌1
اگه خیلی قیمت طلا یا ارز های مختلف رو چک میکنید، یکی از بچه های چنل یه افزونه گنوم نوشته که میتونه به دردتون بخوره

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

میتونید از لینک های زیر نصبش کنید :

📌Github
🌐 Gnome.org

#tools
@CleverDevs - @CleverDevsGp
🔥204👍2
CleverDevs
Please open Telegram to view this post
VIEW IN TELEGRAM
💔25🔥15👍5👎31👌1🆒1
Forwarded from 🪷 My Safe Aquarium  ( Mahi in the void)
چند وقت بود حس میکردم تقویم های فارسی فیچر یادآور‌ با این که بتونه از الگوی یه سیکل پیروی کنه کم دارن، اگم بوده نهایتا روز و ساعت داشته نه هفته و ماه و سال، برای استفاده از تقویم های میلادی هم مجبور به تبدیل تاریخ بودیم که خب فقط برای تک آلارم مناسب بود نه چرخه های زمانی طولانی و بهم میریخت تاریخش...

پس خب خودم نشستم امروز کاملا نو دپندنسی نوشتمش..

github.com/hctilg/Reminder

یکی از فیچرایی که واقعا دوسش داشتم و براش نوشتم اینه که میتونید مثل کرون جاب کانفیگش کنید :)))

👉🏻 hctilg.github.io/Reminder

#myproject@xAquarium
27🔥4👎1🤯1
Forwarded from gooyban🦆
🖥 بررسی رزبری‌پای۵۰۰ و تبدیل اون به دستیار شخصی

در این ویدئو نگاهی می‌ندازم به رزبری‌پای۵۰۰، یه کیبورد بامزه که خودش یه کامپیوتر کامله (توش رزبری‌پای ۵ هست)!

چیزهایی که در ویدئو چک می‌کنم:
آنباکس و بررسی ظاهری
تجربه‌ی کاربری
سیستم‌عامل‌هایی که روش نصب می‌شه
اجرای آفلاین مدل‌های AI
استفاده‌ از پین‌های GPIO
اجرای دستیار شخصی هرمس (Hermes) و توضیح اینکه چرا رزبری‌پای برای این کار عالیه


📼 پیوند به یوتیوب
📼 ویدئوهای رزبری‌پای و کامپیوترهای تک‌بورد
📼 ویدئوهای تست و بررسی

✈️ گپ و گفتگو در مورد رزبری‌پای و کامپیوترهای تک‌بورد

🎮 @gooyban #RP500 #unbox #rpi
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍1
توی جاواسکریپت یه API عالی داریم به اسم sendBeacon که برای ارسال ریکوئست‌های بدون نیاز به پاسخ (Fire-and-forget) طراحی شده.
یعنی چی؟ یعنی درخواست بلافاصله میره توی صف ارسال و مرورگر کار خودشو ادامه میده، بدون اینکه منتظر جواب سرور باشه.

کاربرد اصلیش کجاست؟ دقیقاً زمانی که کاربر میخواد از سایت خارج بشه! مثلاً برای ارسال آمار بازدید، مدت زمان حضور، یا ذخیره دیتای فرمی که کاربر نصفه ول کرده. برخلاف fetch یا AJAX، اینجا حتی اگه صفحه بسته بشه، مرورگر تضمین می‌کنه دیتا ارسال بشه.

یه نکته ای هم که باید دقت کنید حداکثر حجم دیتا ۶۴ کیلوبایت هست و متد HTTP همیشه POST خواهد بود

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

https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon

#javascript
@CleverDevs - @CleverDevsGp
25🔥6👌1💔1
Forwarded from TechTube 𝕏 تک توب
یکی از رقبای متن باز گیتهاب یعنی Codeberg مخالفت صریحش رو با هوش مصنوعی اعلام کرده و در قوانین جدیدی که با رای هیات مدیره وضع شده، قرار دادن هر گونه پروژه ای که تمام یا بخش بزرگی از اون توسط هوش مصنوعی نوشته شده باشه ممنوع هست. این شرکت پیش از این پروژه های مرتبط با رمزارز رو هم ممنوع کرده بود.

بدین صورت کاربران از نظر قانونی امکان قرار دادن مخازن کدهای خودشون رو در صورتی که با ایجنتهای مختلف از جمله Claude Code و Codex نوشته باشن، ندارن و در صورت قرار دادن احتمال پاک شدن اون و بن شدن کاربر وجود داره.

به دنبال این تغییر، پروژه Helium، یکی از مرورگرهای متمرکز روی حریم شخصی، کپی مخزنش که روی Codeberg بود رو حذف کرد و فقط رو گیتهاب به فعالیتش ادامه میده.

🔎 heise

📍 @TechTube
👎49👍16🤯43👌21
وقتی به نوشتن عملیات‌های ریاضی فکر می‌کنیم، همه ما اون حالتی که توی مدرسه یاد گرفتیم به ذهنمون میاد که به این صورت نوشته میشه: x + y , z * a , ...
اما دو تا حالت معروف دیگه هم برای نوشتن عملیات‌های ریاضی داریم: Polish Notation و Reverse Polish Notation. حالت دوم در واقع همون اولی هست، فقط برعکس شده تا کامپیوترها راحت‌تر باهاش کار کنن و توی این پست می‌خوام یکم درباره‌اش توضیح بدم.

تو حالت RPN نوشتن عبارات به این صورته که اول عملوندها رو می‌نویسیم و پشت سرشون عملگر رو قرار می‌دیم؛ یعنی این‌طوری:
‎x y +
توی این حالت دیگه نیازی به پرانتز نداریم تا اولویت عملیات‌ها مشخص بشه و به طرز چشمگیری برای کامپیوترها روش سریع و بهینه‌ای حساب میشه. مثلاً فرض کنید می‌خوایم عبارت 2 * (1 + 5) رو به صورت RPN بنویسیم که میشه:
‎ 5 1 + 2 *
کامپیوتر میاد از چپ شروع می‌کنه به خوندن. اول 5 رو می‌بینه و می‌ندازه توی استک، بعدش می‌رسه به 1 و اونو هم می‌ندازه توی استک. بعد می‌رسه به یه + که یه عملگره؛ اینجا میاد دو تا آیتم آخر استک رو برمی‌داره، جمعشون می‌کنه و نتیجه رو برمی‌گردونه توی استک. بعدش می‌رسه به 2 و اونو هم می‌ندازه تو استک. در نهایت می‌رسه به عملگر * و روی دو تا آیتم آخر عملیات ضرب رو انجام میده و نتیجه نهایی به دست میاد.

از این روش توی جاهای مهم زیادی استفاده شده. برای مثال زبان Script بیت‌کوین برای تایید تراکنش‌ها دقیقاً از همین منطق stack و RPN استفاده می‌کنه تا بدون نیاز به کامپایلرهای سنگین یا کدهای پیچیده، با بالاترین سرعت و امنیت روی نودها اجرا بشه.

‎ ‎

@CleverDevs - @CleverDevsGp
30👍5🔥4👎1
یکی از ابزارهای ضروری برای برنامه‌نویس‌ها و تسترها Playwright هست که توسط مایکروسافت توسعه داده میشه.

این ابزار بهتون کمک میکنه تا تست‌هایی بنویسید که روی مرورگرهای مختلف اجرا بشه و از کارکرد درست وب‌سایتتون مطمئن بشید. کاربردهای دیگه‌ای مثل وب‌اسکرپینگ هم داره و جایگزین خیلی مدرن‌تری برای سلنیوم به حساب میاد. برخلاف سلنیوم که از درایورهای واسط و درخواست‌های HTTP استفاده میکنه و سربار بالایی داره، Playwright مستقیماً از طریق یک کانکشن وب‌سوکت با پروسس مرورگر در ارتباطه. این ساختار باعث میشه تعامل با صفحه رویدادمحور باشه؛ یعنی دیگه نیازی نیست دستی تایمر بذارید تا فلان دکمه لود بشه، خود Playwright به شکل خودکار منتظر میمونه تا المنت در DOM لود، فعال و قابل کلیک بشه و بعد عملیات رو انجام میده.

یکی از قابلیت‌های کاربردی Playwright ابزاری به نام Codegen هست. کافیه دستور زیر رو اجرا کنید تا یک مرورگر براتون باز بشه؛ از اون لحظه هر کلیک، اسکرول یا متنی که تایپ کنید به صورت خودکار ثبت میشه و کد تمیز تستش به زبانی که می‌خواید براتون تولید میشه

npx playwright codegen https://example.com


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

این ابزار فقط به جاوااسکریپت و تایپ‌اسکریپت محدود نیست و SDKهای رسمی اون برای زبان‌های Python ،.NET و Java هم در دسترسه و می‌تونید توی استک‌های مختلف ازش استفاده کنید

برای اطلاعات بیشتر و نحوه نصب و استفاده یه سر به گیت هاب یا سایتش بزنید

📌 Github
🌐 Website

#tools
@CleverDevs - @CleverDevsGp
14👍4🔥2💯1
امروز، نهم سپتامبر، سالروز تولد Dennis MacAlistair Ritchie است؛ یکی از برنامه‌نویس‌های بزرگ تاریخ که کارهایش تأثیر مستقیمی بر شکل‌گیری دنیای کامپیوتر داشت.

ریچی در آزمایشگاه‌های بل (Bell Labs) فعالیت می‌کرد و چند دستاورد فنی مهم از خودش به‌جا گذاشت که مسیر نرم‌افزار را برای همیشه تغییر دادند.

یکی از مهم‌ترین کارهاش، توسعه زبان C در اوایل دهه ۱۹۷۰ میلادی بود. زبانی که نزدیک به سخت‌افزار طراحی شد و کارایی بالایی ارائه داد. C هنوز هم یکی از پرکاربردترین زبان‌های دنیاست و سنگ بنای زبان‌های مدرنی مثل C++، Java و Go به حساب میاد.

ریچی کنار Ken Thompson روی توسعه سیستم‌عامل Unix هم کار کرد. ساختار و فلسفه این سیستم‌عامل آن‌قدر تأثیرگذار بود که هنوز هم لینوکس، macOS و خیلی از سیستم‌های امروزی ریشه در خانواده Unix دارن.

به پاس همین دستاوردها، در سال ۱۹۸۳ جایزه معتبر Turing Award بهش اهدا شد.

@CleverDevs - @CleverDevsGp
41💯5👍1
امروز داشتم با یه پسر ۱۹ ساله یه مشکلی رو دیباگ میکردم
دیدم یه کامندی استفاده کرد که من بعد از ۱۵ سال استفاده از اون کامند تازه این مدل استفادشو دیده بودم
من سالهای سال برای چک کردن حجم فایلها از کامند du استفاده میکنم ولی این مدلی که این پسر استفاده میکرد این بود

[/]># du -xhd1 .
16K ./lost+found
16M ./etc
86M ./mailu
4.0K ./mnt
12K ./srv
23G ./home
314M ./opt
170M ./root
19G ./var
14G ./usr
55G .
[/]>#


دقت کردم دیدم که چقدر این سوییچ‌های این کامند درست و دقیق هست
بهش گفتم تو بهم یه چیز خیلی خفن یاد دادی و منم میخوام بهت یه چیز خفن یاد بدم و بهش اینو گفتم
[/]># ip -br -c a
lo UNKNOWN 127.0.0.1/8 ::1/128
enp0s31f6 UP ip.ip.ip.ip
wlp4s0 UP ip.ip.ip.ip
wwp0s20f0u6 DOWN
[/]>#


نتیجه گیری من از این داستان اینه که خیلی وقتا من دارم یه روشی رو میرم و جواب هم میگیرم و الزاما سریع‌ترین مسیر نیست ولی این دلیل نمیشه که اشتباه باشه.
اینطور چیزا مثل دست‌خط میمونه و برای هرشخصی میتونه متفاوت باشه شاید زشت و زیبا‌ معنی داشته باشه ولی درست و غلط بودن معنی نداره
45👍14🔥6👎1
🚀 چرا زمان کوچ کردن از 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
👍17🔥51
این ویدیو قرار بود خیلی زودتر منتشر بشه... 😅

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://github.com/birlug/256

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

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