Forwarded from TechTube 𝕏 تک توب
یوتوب جنگ علیه محتوای بی کیفیت ساخت شده با هوش مصنوعی (AI Slop) رو شروع کرده و کانالهای بی شماری رو در موج جدید بررسی هاش از برنامه درامدزایی این پلتفرم حذف کرده.
این پلتفرم روی محتوای بی کیفیت، تکراری و ساخته شده توسط یک الگوی یکسان، به شدت حساس شده و چنین ویدیوهایی حالا دیگه به هیچ وجه امکان کسب درامد از یوتوب رو نخواهند داشت.
علاوه بر این استفاده از شخصیتهای هوش مصنوعی در ویدیوها برای صحبت در مورد موضوعات حساسی مثل سلامت و موضوعات مالی هم ممنوع شده و چنین ویدیوهایی دیگه درامدی نخواهند داشت.
حساسیت الگوریتم یوتوب روی این موضوعات به حدی بالا رفته که به اشتباه یکی از ویدیوهای کانال محبوب Kurzgesagt رو هم به عنوان ویدیوی ساخته شده با هوش مصنوعی تشخیص داده و نه تنها درامد این ویدیو قطع شده بلکه اون رو هم به کاربران پیشنهاد نمیده.
این موضوع در حدی جدی هست که در چند وقت اخیر کانالهای پربازدیدی که تاکنون بدون نمایش چهره (Faceless) فعالیت میکردن و عمده محتوای اونها انتقال مفاهیم از طریق انیمیشن و غیره بوده، حالا با چهره در ویدیوها حضور دارن تا احتمال تشخیص اشتباه ویدیوهای اونها برای استفاده از هوش مصنوعی کاهش پیدا کنه و درامدشون قطع نشه.
🔎 techcrunch
📍 @TechTube
این پلتفرم روی محتوای بی کیفیت، تکراری و ساخته شده توسط یک الگوی یکسان، به شدت حساس شده و چنین ویدیوهایی حالا دیگه به هیچ وجه امکان کسب درامد از یوتوب رو نخواهند داشت.
علاوه بر این استفاده از شخصیتهای هوش مصنوعی در ویدیوها برای صحبت در مورد موضوعات حساسی مثل سلامت و موضوعات مالی هم ممنوع شده و چنین ویدیوهایی دیگه درامدی نخواهند داشت.
حساسیت الگوریتم یوتوب روی این موضوعات به حدی بالا رفته که به اشتباه یکی از ویدیوهای کانال محبوب Kurzgesagt رو هم به عنوان ویدیوی ساخته شده با هوش مصنوعی تشخیص داده و نه تنها درامد این ویدیو قطع شده بلکه اون رو هم به کاربران پیشنهاد نمیده.
این موضوع در حدی جدی هست که در چند وقت اخیر کانالهای پربازدیدی که تاکنون بدون نمایش چهره (Faceless) فعالیت میکردن و عمده محتوای اونها انتقال مفاهیم از طریق انیمیشن و غیره بوده، حالا با چهره در ویدیوها حضور دارن تا احتمال تشخیص اشتباه ویدیوهای اونها برای استفاده از هوش مصنوعی کاهش پیدا کنه و درامدشون قطع نشه.
🔎 techcrunch
📍 @TechTube
👍44👌8❤6🔥4🆒1
یکی از مفاهیم جالبی که توی زبان C دیدم، نحوه ارسال آرایهها به توابع هست.
وقتی یک متغیر عادی رو به تابع میفرستیم، یک کپی از مقدارش ساخته میشه. اما در مورد آرایهها، زبان C برای جلوگیری از کپی شدن دادههای حجیم و افت سرعت برنامه، تنها آدرس اولین عنصر آرایه در حافظه رو به تابع ارسال میکنه.
به زبان سادهتر، تابع جدید به همون آرایه اصلی دسترسی پیدا میکنه. بنابراین، هر تغییری که روی آرایه در داخل تابع انجام بدیم مستقیماً روی آرایه اصلی اعمال میشه.
مثلا
یه نکتهای هم هست که بهش Array Decay میگن.
از اونجا که آرایه هنگام ارسال به تابع، صرفاً به یک آدرس (pointer) تبدیل میشه، ماهیت اصلی خودش رو به عنوان مجموعهای با طول مشخص از دست میده و تابع گیرنده سایز اونو نمیدونه.
اگر در داخل تابع از دستور sizeof استفاده کنیم، به جای حجم کل آرایه، تنها حجم یک پوینتر نمایش داده میشه. به همین دلیل توی زبان C، همیشه باید طول آرایه رو هم در زمان فراخوانی محاسبه کنیم و به عنوان یک آرگومان جداگانه به تابع بفرستیم:
#c
@CleverDevs - @CleverDevsGp
وقتی یک متغیر عادی رو به تابع میفرستیم، یک کپی از مقدارش ساخته میشه. اما در مورد آرایهها، زبان C برای جلوگیری از کپی شدن دادههای حجیم و افت سرعت برنامه، تنها آدرس اولین عنصر آرایه در حافظه رو به تابع ارسال میکنه.
به زبان سادهتر، تابع جدید به همون آرایه اصلی دسترسی پیدا میکنه. بنابراین، هر تغییری که روی آرایه در داخل تابع انجام بدیم مستقیماً روی آرایه اصلی اعمال میشه.
مثلا
#include <stdio.h>
void modifyArray(int arr[]) {
arr[0] = 99;
}
int main() {
int numbers[3] = {1, 2, 3};
modifyArray(numbers);
printf("First element: %d\n", numbers[0]);
// output : 99
return 0;
}
یه نکتهای هم هست که بهش Array Decay میگن.
از اونجا که آرایه هنگام ارسال به تابع، صرفاً به یک آدرس (pointer) تبدیل میشه، ماهیت اصلی خودش رو به عنوان مجموعهای با طول مشخص از دست میده و تابع گیرنده سایز اونو نمیدونه.
اگر در داخل تابع از دستور sizeof استفاده کنیم، به جای حجم کل آرایه، تنها حجم یک پوینتر نمایش داده میشه. به همین دلیل توی زبان C، همیشه باید طول آرایه رو هم در زمان فراخوانی محاسبه کنیم و به عنوان یک آرگومان جداگانه به تابع بفرستیم:
void printArray(int arr[], int size) {
for(int i = 0; i < size; i++) {
printf("%d\n", arr[i]);
}
}#c
@CleverDevs - @CleverDevsGp
❤28👍9🆒2👎1👌1
با ابزار netwatch میتونید توی محیط TUI وضعیت شبکهتون رو مانیتور کنید.
میتونید در لحظه کانکشنها رو چک کنید، ببینید هر برنامهای به کجاها وصل میشه و پکتهایی که میرن و میان رو بررسی کنید. همچنین این ابزار میتونه ترافیک رمزنگاریشده (TLS) رو بدون نیاز به پروکسی بهتون نشون بده و با یادگیری رفتار برنامهها، در صورت اتصالشون به مقاصد جدید و ناشناخته بهتون هشدار بده.
قابلیت های دیگه هم داره که میتونید توی گیت هابش بخونید
این ابزار با Rust نوشته شده و کراسپلتفرمه و میتونید با یکی از کامندهای زیر نصبش کنید:
یا برید از گیتهاب دانلودش کنید.
📌 Github
🌐 Website
#tools #network
@CleverDevs - @CleverDevsGp
میتونید در لحظه کانکشنها رو چک کنید، ببینید هر برنامهای به کجاها وصل میشه و پکتهایی که میرن و میان رو بررسی کنید. همچنین این ابزار میتونه ترافیک رمزنگاریشده (TLS) رو بدون نیاز به پروکسی بهتون نشون بده و با یادگیری رفتار برنامهها، در صورت اتصالشون به مقاصد جدید و ناشناخته بهتون هشدار بده.
قابلیت های دیگه هم داره که میتونید توی گیت هابش بخونید
این ابزار با Rust نوشته شده و کراسپلتفرمه و میتونید با یکی از کامندهای زیر نصبش کنید:
brew install netwatch # macOS / Linux
nix-shell -p netwatch # NixOS / Nix
paru -S netwatch-tui-bin # Arch
scoop install netwatch # Windows
cargo install netwatch-tui # anywhere
یا برید از گیتهاب دانلودش کنید.
📌 Github
🌐 Website
#tools #network
@CleverDevs - @CleverDevsGp
🔥13❤5👌1
یکی یه سایت باحال نوشته که اگه نمیدونید چه فیلمی ببینید میرید تو یه صفحه و بین هزاران فیلم با تکون دادن موس میگردید
برای تست کردنش میتونید به این لینک یه سر بزنید
https://nothing-to-watch.port80.ch/
کدهای این سایت هم اوپن سورسه و میتونید تو گیت هاب چکش کنید
https://github.com/gnovotny/nothing-to-watch
@CleverDevs - @CleverDevsGp
برای تست کردنش میتونید به این لینک یه سر بزنید
https://nothing-to-watch.port80.ch/
کدهای این سایت هم اوپن سورسه و میتونید تو گیت هاب چکش کنید
https://github.com/gnovotny/nothing-to-watch
@CleverDevs - @CleverDevsGp
🔥25❤14👍2👎2
This media is not supported in your browser
VIEW IN TELEGRAM
دوتا از بچه های چنل یه رباتی نوشتن که میتونید فایل صدا یا ویس هارو به متن تبدیل کنید
فقط کافیه توی چت ها بدون اینکه نیاز باشه ربات رو اد کنید آیدی ربات رو روی فایل یا ویس مدنظرتون ریپلای کنید تا به متن تبدیل بشه
#tools #bot
@CleverDevs - @CleverDevsGp
فقط کافیه توی چت ها بدون اینکه نیاز باشه ربات رو اد کنید آیدی ربات رو روی فایل یا ویس مدنظرتون ریپلای کنید تا به متن تبدیل بشه
#tools #bot
@CleverDevs - @CleverDevsGp
11🔥32❤8⚡2👌1
توی زبان c یه کلیدواژه جالب به اسم register داریم که یه زمانی برای بهینه سازی خیلی مهم بود.
کارش این بود که به کامپایلر میگفت این متغیر قراره تو برنامه خیلی استفاده بشه، پس جای اینکه تو رم ذخیرهاش کنی، مستقیم ببرش تو رجیستر خود پردازنده تا سرعت خوندن و نوشتنش به شدت بره بالا.
مثلا برای یه متغیر شمارنده حلقه:
استفاده ازش یه سری قوانین سفت و سخت داره. مثلا نمیتونید آدرس این متغیر رو با علامت & بگیرید، چون اصلا تو مموری نیست که آدرس داشته باشه. یا اینکه متغیرهای گلوبال و استاتیک نمیتونن رجیستر بشن و حتما باید لوکال (داخل تابع) باشن.
اما قسمت جالب و معماری قضیه اینجاست: تو کامپایلرهای مدرن امروزی این کلیدواژه عملا فقط یه پیشنهاده و کامپایلر میتونه کلا نادیدهاش بگیره. کامپایلرهای امروزی انقدر هوشمند شدن که حتی اگه شما register رو ننویسید، خودشون با آنالیز کد تشخیص میدن کدوم متغیر تو رجیستر باشه بهتره. در واقع الان کامپایلرها خیلی بهتر از خود برنامه نویس میتونن منابع پردازنده رو مدیریت کنن.
دونستن این کلیدواژه شاید الان تو کدنویسی روزمره کاربرد نداشته باشه، اما درک خیلی خوبی از تفاوت سرعت حافظه و پردازنده میده و نشون میده کامپایلرها تو این سالها چقدر پیشرفت کردن. تو رفرنسهای اصلی مثل کتاب K&R هم بهش برمیخورید.
#c
@CleverDevs - @CleverDevsGp
کارش این بود که به کامپایلر میگفت این متغیر قراره تو برنامه خیلی استفاده بشه، پس جای اینکه تو رم ذخیرهاش کنی، مستقیم ببرش تو رجیستر خود پردازنده تا سرعت خوندن و نوشتنش به شدت بره بالا.
مثلا برای یه متغیر شمارنده حلقه:
int main() {
register int i = 0;
while (i < 1000) {
i++;
}
}استفاده ازش یه سری قوانین سفت و سخت داره. مثلا نمیتونید آدرس این متغیر رو با علامت & بگیرید، چون اصلا تو مموری نیست که آدرس داشته باشه. یا اینکه متغیرهای گلوبال و استاتیک نمیتونن رجیستر بشن و حتما باید لوکال (داخل تابع) باشن.
اما قسمت جالب و معماری قضیه اینجاست: تو کامپایلرهای مدرن امروزی این کلیدواژه عملا فقط یه پیشنهاده و کامپایلر میتونه کلا نادیدهاش بگیره. کامپایلرهای امروزی انقدر هوشمند شدن که حتی اگه شما register رو ننویسید، خودشون با آنالیز کد تشخیص میدن کدوم متغیر تو رجیستر باشه بهتره. در واقع الان کامپایلرها خیلی بهتر از خود برنامه نویس میتونن منابع پردازنده رو مدیریت کنن.
دونستن این کلیدواژه شاید الان تو کدنویسی روزمره کاربرد نداشته باشه، اما درک خیلی خوبی از تفاوت سرعت حافظه و پردازنده میده و نشون میده کامپایلرها تو این سالها چقدر پیشرفت کردن. تو رفرنسهای اصلی مثل کتاب K&R هم بهش برمیخورید.
#c
@CleverDevs - @CleverDevsGp
❤46👍10🔥5👎1👌1
اگه خیلی قیمت طلا یا ارز های مختلف رو چک میکنید، یکی از بچه های چنل یه افزونه گنوم نوشته که میتونه به دردتون بخوره
بها یک اکستنشن برای گنوم لینوکسه که به شما قابلیت اینو میده که توی نوار بالای لینوکستون قیمت لحظه ای طلا و ارزهای معروف رو داشته باشید، کاملا قابل شخصی سازیه
میتونید از لینک های زیر نصبش کنید :
📌Github
🌐 Gnome.org
#tools
@CleverDevs - @CleverDevsGp
بها یک اکستنشن برای گنوم لینوکسه که به شما قابلیت اینو میده که توی نوار بالای لینوکستون قیمت لحظه ای طلا و ارزهای معروف رو داشته باشید، کاملا قابل شخصی سازیه
میتونید از لینک های زیر نصبش کنید :
📌Github
🌐 Gnome.org
#tools
@CleverDevs - @CleverDevsGp
🔥22❤4👍3
Forwarded from 🪷 My Safe Aquarium ✨ ( Mahi in the void)
چند وقت بود حس میکردم تقویم های فارسی فیچر یادآور با این که بتونه از الگوی یه سیکل پیروی کنه کم دارن، اگم بوده نهایتا روز و ساعت داشته نه هفته و ماه و سال، برای استفاده از تقویم های میلادی هم مجبور به تبدیل تاریخ بودیم که خب فقط برای تک آلارم مناسب بود نه چرخه های زمانی طولانی و بهم میریخت تاریخش...
پس خب خودم نشستم امروز کاملا نو دپندنسی نوشتمش..
github.com/hctilg/Reminder
یکی از فیچرایی که واقعا دوسش داشتم و براش نوشتم اینه که میتونید مثل کرون جاب کانفیگش کنید :)))
👉🏻 hctilg.github.io/Reminder
#myproject@xAquarium
پس خب خودم نشستم امروز کاملا نو دپندنسی نوشتمش..
github.com/hctilg/Reminder
یکی از فیچرایی که واقعا دوسش داشتم و براش نوشتم اینه که میتونید مثل کرون جاب کانفیگش کنید :)))
👉🏻 hctilg.github.io/Reminder
#myproject@xAquarium
❤29🔥4👎1🤯1
Forwarded from gooyban🦆
YouTube
آنباکس و بررسی رزبریپای ۵۰۰ | نصب هرمس (Hermes)
رزبریپای ۵۰۰ یک کامپیوترِ کامل است که کاملاً داخلِ یک کیبورد جا شده؛ همان چیزی که خیلیها اسمش را شنیدهاند ولی کمتر از نزدیک دیدهاند. توی این ویدیو با هم این کیبوردِ کوچک را آنباکس میکنیم، مشخصاتش را میبینیم و قدمبهقدم جلو میرویم تا جایی که یک دستیارِ…
در این ویدئو نگاهی میندازم به رزبریپای۵۰۰، یه کیبورد بامزه که خودش یه کامپیوتر کامله (توش رزبریپای ۵ هست)!
چیزهایی که در ویدئو چک میکنم:
آنباکس و بررسی ظاهری
تجربهی کاربری
سیستمعاملهایی که روش نصب میشه
اجرای آفلاین مدلهای AI
استفاده از پینهای GPIO
اجرای دستیار شخصی هرمس (Hermes) و توضیح اینکه چرا رزبریپای برای این کار عالیه
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5👍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
یعنی چی؟ یعنی درخواست بلافاصله میره توی صف ارسال و مرورگر کار خودشو ادامه میده، بدون اینکه منتظر جواب سرور باشه.
کاربرد اصلیش کجاست؟ دقیقاً زمانی که کاربر میخواد از سایت خارج بشه! مثلاً برای ارسال آمار بازدید، مدت زمان حضور، یا ذخیره دیتای فرمی که کاربر نصفه ول کرده. برخلاف fetch یا AJAX، اینجا حتی اگه صفحه بسته بشه، مرورگر تضمین میکنه دیتا ارسال بشه.
یه نکته ای هم که باید دقت کنید حداکثر حجم دیتا ۶۴ کیلوبایت هست و متد HTTP همیشه POST خواهد بود
برای اطلاعات بیشتر هم میتونید به سایت MDN سر بزنید
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon
#javascript
@CleverDevs - @CleverDevsGp
❤26🔥6👌1💔1
Forwarded from TechTube 𝕏 تک توب
یکی از رقبای متن باز گیتهاب یعنی Codeberg مخالفت صریحش رو با هوش مصنوعی اعلام کرده و در قوانین جدیدی که با رای هیات مدیره وضع شده، قرار دادن هر گونه پروژه ای که تمام یا بخش بزرگی از اون توسط هوش مصنوعی نوشته شده باشه ممنوع هست. این شرکت پیش از این پروژه های مرتبط با رمزارز رو هم ممنوع کرده بود.
بدین صورت کاربران از نظر قانونی امکان قرار دادن مخازن کدهای خودشون رو در صورتی که با ایجنتهای مختلف از جمله Claude Code و Codex نوشته باشن، ندارن و در صورت قرار دادن احتمال پاک شدن اون و بن شدن کاربر وجود داره.
به دنبال این تغییر، پروژه Helium، یکی از مرورگرهای متمرکز روی حریم شخصی، کپی مخزنش که روی Codeberg بود رو حذف کرد و فقط رو گیتهاب به فعالیتش ادامه میده.
🔎 heise
📍 @TechTube
بدین صورت کاربران از نظر قانونی امکان قرار دادن مخازن کدهای خودشون رو در صورتی که با ایجنتهای مختلف از جمله Claude Code و Codex نوشته باشن، ندارن و در صورت قرار دادن احتمال پاک شدن اون و بن شدن کاربر وجود داره.
به دنبال این تغییر، پروژه Helium، یکی از مرورگرهای متمرکز روی حریم شخصی، کپی مخزنش که روی Codeberg بود رو حذف کرد و فقط رو گیتهاب به فعالیتش ادامه میده.
🔎 heise
📍 @TechTube
👎50👍16🤯4❤3👌2⚡1
وقتی به نوشتن عملیاتهای ریاضی فکر میکنیم، همه ما اون حالتی که توی مدرسه یاد گرفتیم به ذهنمون میاد که به این صورت نوشته میشه: x + y , z * a , ...
اما دو تا حالت معروف دیگه هم برای نوشتن عملیاتهای ریاضی داریم: Polish Notation و Reverse Polish Notation. حالت دوم در واقع همون اولی هست، فقط برعکس شده تا کامپیوترها راحتتر باهاش کار کنن و توی این پست میخوام یکم دربارهاش توضیح بدم.
تو حالت RPN نوشتن عبارات به این صورته که اول عملوندها رو مینویسیم و پشت سرشون عملگر رو قرار میدیم؛ یعنی اینطوری:
x y +
توی این حالت دیگه نیازی به پرانتز نداریم تا اولویت عملیاتها مشخص بشه و به طرز چشمگیری برای کامپیوترها روش سریع و بهینهای حساب میشه. مثلاً فرض کنید میخوایم عبارت
5 1 + 2 *
کامپیوتر میاد از چپ شروع میکنه به خوندن. اول 5 رو میبینه و میندازه توی استک، بعدش میرسه به 1 و اونو هم میندازه توی استک. بعد میرسه به یه + که یه عملگره؛ اینجا میاد دو تا آیتم آخر استک رو برمیداره، جمعشون میکنه و نتیجه رو برمیگردونه توی استک. بعدش میرسه به 2 و اونو هم میندازه تو استک. در نهایت میرسه به عملگر * و روی دو تا آیتم آخر عملیات ضرب رو انجام میده و نتیجه نهایی به دست میاد.
از این روش توی جاهای مهم زیادی استفاده شده. برای مثال زبان Script بیتکوین برای تایید تراکنشها دقیقاً از همین منطق stack و RPN استفاده میکنه تا بدون نیاز به کامپایلرهای سنگین یا کدهای پیچیده، با بالاترین سرعت و امنیت روی نودها اجرا بشه.
@CleverDevs - @CleverDevsGp
اما دو تا حالت معروف دیگه هم برای نوشتن عملیاتهای ریاضی داریم: Polish Notation و Reverse Polish Notation. حالت دوم در واقع همون اولی هست، فقط برعکس شده تا کامپیوترها راحتتر باهاش کار کنن و توی این پست میخوام یکم دربارهاش توضیح بدم.
تو حالت RPN نوشتن عبارات به این صورته که اول عملوندها رو مینویسیم و پشت سرشون عملگر رو قرار میدیم؛ یعنی اینطوری:
x y +
توی این حالت دیگه نیازی به پرانتز نداریم تا اولویت عملیاتها مشخص بشه و به طرز چشمگیری برای کامپیوترها روش سریع و بهینهای حساب میشه. مثلاً فرض کنید میخوایم عبارت
2 * (1 + 5) رو به صورت RPN بنویسیم که میشه: 5 1 + 2 *
کامپیوتر میاد از چپ شروع میکنه به خوندن. اول 5 رو میبینه و میندازه توی استک، بعدش میرسه به 1 و اونو هم میندازه توی استک. بعد میرسه به یه + که یه عملگره؛ اینجا میاد دو تا آیتم آخر استک رو برمیداره، جمعشون میکنه و نتیجه رو برمیگردونه توی استک. بعدش میرسه به 2 و اونو هم میندازه تو استک. در نهایت میرسه به عملگر * و روی دو تا آیتم آخر عملیات ضرب رو انجام میده و نتیجه نهایی به دست میاد.
از این روش توی جاهای مهم زیادی استفاده شده. برای مثال زبان Script بیتکوین برای تایید تراکنشها دقیقاً از همین منطق stack و RPN استفاده میکنه تا بدون نیاز به کامپایلرهای سنگین یا کدهای پیچیده، با بالاترین سرعت و امنیت روی نودها اجرا بشه.
@CleverDevs - @CleverDevsGp
Telegram
Clever Devs Cdn
❤32👍5🔥4👎1
یکی از ابزارهای ضروری برای برنامهنویسها و تسترها Playwright هست که توسط مایکروسافت توسعه داده میشه.
این ابزار بهتون کمک میکنه تا تستهایی بنویسید که روی مرورگرهای مختلف اجرا بشه و از کارکرد درست وبسایتتون مطمئن بشید. کاربردهای دیگهای مثل وباسکرپینگ هم داره و جایگزین خیلی مدرنتری برای سلنیوم به حساب میاد. برخلاف سلنیوم که از درایورهای واسط و درخواستهای HTTP استفاده میکنه و سربار بالایی داره، Playwright مستقیماً از طریق یک کانکشن وبسوکت با پروسس مرورگر در ارتباطه. این ساختار باعث میشه تعامل با صفحه رویدادمحور باشه؛ یعنی دیگه نیازی نیست دستی تایمر بذارید تا فلان دکمه لود بشه، خود Playwright به شکل خودکار منتظر میمونه تا المنت در DOM لود، فعال و قابل کلیک بشه و بعد عملیات رو انجام میده.
یکی از قابلیتهای کاربردی Playwright ابزاری به نام Codegen هست. کافیه دستور زیر رو اجرا کنید تا یک مرورگر براتون باز بشه؛ از اون لحظه هر کلیک، اسکرول یا متنی که تایپ کنید به صورت خودکار ثبت میشه و کد تمیز تستش به زبانی که میخواید براتون تولید میشه
جدا از تست و اسکرپینگ، Playwright الان تبدیل به ابزار استاندارد برای AI Agentها شده. ایجنتهای هوش مصنوعی برای انجام تسکهای مستقل روی وب، نیاز به محیطی دارن که بتونه تغییرات صفحه رو به شکل زنده به مدل برسونه و تصمیماتش رو اجرا کنه. Playwright به مدل اجازه میده ساختار DOM و اسکرینشاتهای زنده صفحه رو تحلیل کنه، رفتارهای کاربر مثل کلیک و تایپ رو دقیق شبیهسازی کنه و سایتهای پیچیدهای که رندر سمت کلاینت سنگین دارن رو بدون مشکل باز کنه و باهاش کار کنه.
این ابزار فقط به جاوااسکریپت و تایپاسکریپت محدود نیست و SDKهای رسمی اون برای زبانهای Python ،.NET و Java هم در دسترسه و میتونید توی استکهای مختلف ازش استفاده کنید
برای اطلاعات بیشتر و نحوه نصب و استفاده یه سر به گیت هاب یا سایتش بزنید
📌 Github
🌐 Website
#tools
@CleverDevs - @CleverDevsGp
این ابزار بهتون کمک میکنه تا تستهایی بنویسید که روی مرورگرهای مختلف اجرا بشه و از کارکرد درست وبسایتتون مطمئن بشید. کاربردهای دیگهای مثل وباسکرپینگ هم داره و جایگزین خیلی مدرنتری برای سلنیوم به حساب میاد. برخلاف سلنیوم که از درایورهای واسط و درخواستهای 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👍5🔥2💯1
امروز، نهم سپتامبر، سالروز تولد Dennis MacAlistair Ritchie است؛ یکی از برنامهنویسهای بزرگ تاریخ که کارهایش تأثیر مستقیمی بر شکلگیری دنیای کامپیوتر داشت.
ریچی در آزمایشگاههای بل (Bell Labs) فعالیت میکرد و چند دستاورد فنی مهم از خودش بهجا گذاشت که مسیر نرمافزار را برای همیشه تغییر دادند.
یکی از مهمترین کارهاش، توسعه زبان C در اوایل دهه ۱۹۷۰ میلادی بود. زبانی که نزدیک به سختافزار طراحی شد و کارایی بالایی ارائه داد. C هنوز هم یکی از پرکاربردترین زبانهای دنیاست و سنگ بنای زبانهای مدرنی مثل C++، Java و Go به حساب میاد.
ریچی کنار Ken Thompson روی توسعه سیستمعامل Unix هم کار کرد. ساختار و فلسفه این سیستمعامل آنقدر تأثیرگذار بود که هنوز هم لینوکس، macOS و خیلی از سیستمهای امروزی ریشه در خانواده Unix دارن.
به پاس همین دستاوردها، در سال ۱۹۸۳ جایزه معتبر Turing Award بهش اهدا شد.
@CleverDevs - @CleverDevsGp
ریچی در آزمایشگاههای بل (Bell Labs) فعالیت میکرد و چند دستاورد فنی مهم از خودش بهجا گذاشت که مسیر نرمافزار را برای همیشه تغییر دادند.
یکی از مهمترین کارهاش، توسعه زبان C در اوایل دهه ۱۹۷۰ میلادی بود. زبانی که نزدیک به سختافزار طراحی شد و کارایی بالایی ارائه داد. C هنوز هم یکی از پرکاربردترین زبانهای دنیاست و سنگ بنای زبانهای مدرنی مثل C++، Java و Go به حساب میاد.
ریچی کنار Ken Thompson روی توسعه سیستمعامل Unix هم کار کرد. ساختار و فلسفه این سیستمعامل آنقدر تأثیرگذار بود که هنوز هم لینوکس، macOS و خیلی از سیستمهای امروزی ریشه در خانواده Unix دارن.
به پاس همین دستاوردها، در سال ۱۹۸۳ جایزه معتبر Turing Award بهش اهدا شد.
@CleverDevs - @CleverDevsGp
❤43💯5👍1
Forwarded from Morteza Bashsiz مرتضی باشسیز
امروز داشتم با یه پسر ۱۹ ساله یه مشکلی رو دیباگ میکردم
دیدم یه کامندی استفاده کرد که من بعد از ۱۵ سال استفاده از اون کامند تازه این مدل استفادشو دیده بودم
من سالهای سال برای چک کردن حجم فایلها از کامند du استفاده میکنم ولی این مدلی که این پسر استفاده میکرد این بود
دقت کردم دیدم که چقدر این سوییچهای این کامند درست و دقیق هست
بهش گفتم تو بهم یه چیز خیلی خفن یاد دادی و منم میخوام بهت یه چیز خفن یاد بدم و بهش اینو گفتم
نتیجه گیری من از این داستان اینه که خیلی وقتا من دارم یه روشی رو میرم و جواب هم میگیرم و الزاما سریعترین مسیر نیست ولی این دلیل نمیشه که اشتباه باشه.
اینطور چیزا مثل دستخط میمونه و برای هرشخصی میتونه متفاوت باشه شاید زشت و زیبا معنی داشته باشه ولی درست و غلط بودن معنی نداره
دیدم یه کامندی استفاده کرد که من بعد از ۱۵ سال استفاده از اون کامند تازه این مدل استفادشو دیده بودم
من سالهای سال برای چک کردن حجم فایلها از کامند 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
[/]>#
نتیجه گیری من از این داستان اینه که خیلی وقتا من دارم یه روشی رو میرم و جواب هم میگیرم و الزاما سریعترین مسیر نیست ولی این دلیل نمیشه که اشتباه باشه.
اینطور چیزا مثل دستخط میمونه و برای هرشخصی میتونه متفاوت باشه شاید زشت و زیبا معنی داشته باشه ولی درست و غلط بودن معنی نداره
❤50👍15🔥6👎1