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
کانال اطلاع‌رسانی توزیع پارچ
سال جدید، پارچ جدید! 🥤 کم‌کم به ۱۴۰۴ نزدیک می‌شیم و ما توی تیم پارچ لینوکس در حال کار روی یه تحول بزرگ هستیم. علاوه بر بهینه‌سازی‌های فنی، داریم روی هویت بصری جدید پارچ کار می‌کنیم تا ظاهر و تجربه‌ی کاربریش مدرن‌تر و حرفه‌ای‌تر بشه. این تغییرات از لوگو…
بالاخره هویت بصری رو استارت زدیم، چرا مهمه؟

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

از همه مهمتر اینکه خود برنامه‌هایی که برای پارچ نوشته میشن دستخوش تغییرات میشن، توی ۱۴۰۴ سعی داریم تا پارچ رو چشم‌نواز تر از همیشه بکنیم.


@SohrabContents
لینوکس Linux 6.15 از The Airoha NPU که یک A RISC-V Network Processor Unit پشتیبانی میکنه

💠واحد پردازش شبکه (NPU) شرکت Airoha، با نام Xessor، یک پردازنده ۸ هسته‌ای مبتنی بر معماری RISC-V است برای پردازش وظایف شبکه و تسریع Wi-Fi طراحی شده

🔥 این NPU به طور قابل توجهی بار کاری CPU را کاهش داده و مصرف انرژی سیستم را بهبود می‌بخشد. در نتیجه، مصرف انرژی کلی NPU هشت هسته‌ای کمتر از یک CPU تک هسته‌ای معمولی است

🔥 معماری Xessor به گونه‌ای طراحی شده که تقریباً تمام وظایف پردازش شبکه را مدیریت می‌کند، بنابراین منابع CPU برای اجرای خدمات و برنامه‌های ارزش افزوده ارائه‌دهندگان خدمات آزاد می‌ماند. همچنین، در صورت بارگذاری کامل CPU، NPU می‌تواند منابع جایگزین را برای حفظ سرعت و عملکرد روان سیستم فراهم کند

این معماری در سیستم روی تراشه (SoC) AN7581 شرکت Airoha به کار رفته است که از ترکیب CPU، NPU و یک شتاب‌دهنده بسته هوشمند (SPA) بهره می‌برد. این ترکیب، AN7581 را به اولین SoC در جهان تبدیل کرده که می‌تواند WAN، WLAN و LAN را با یک تراشه پشتیبانی کند و به سرعت‌های بالای Wi-Fi 7 دست یابد.

#hardware #linux
این دستگاه که می‌بینید اسمش DGX Spark هست؛ جواب شرکت Nvidia به Framework, Apple Studio پیش فروش شروع شده با قیمتی حدوداً 3500 یورو.

برای سال جدید، با شرکتی در ایران صحیت می‌کردیم روی یک سری کارهای هوش مصنوعی؛ که خب تصمیم گرفته بودند دوتا دستگاه با حداقل 96GB گرافیک تهیه کنند و نگرانی سرمایه گذاری و نشدن و ... داشتند.

یک همچین کانفیگی اگر بخواد بروز هم باشه برای هر سیستم حدوداً 8000$ درمیاد؛ که شخصاً با کمی جستجو پیشنهاد این دستگاه رو دادم.

تنها چیزی که کم داره البته فقط Memory Bandwith هست که ای کاش بالای 400GB بود ولی همین هم عالی هست (برای 90٪ البته فرقی هم نمی‌کنه)

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

https://www.nvidia.com/en-us/products/workstations/dgx-spark/
Forwarded from Gopher Academy
🔵 عنوان مقاله
TypeScript's Compiler to Get 10x Faster, Thanks to Go

🟢 خلاصه مقاله:
در سال‌های اخیر، TypeScript با استفاده از تایپ قوی (نوع‌بندی قوی که به کمک آن نوع متغیرها قبل از اجرای کد مشخص می‌شود) و ساختار افزوده، اکوسیستم JavaScript را به شدت تکان داده است. هرچند که کامپایلر (برنامه‌ای که کد منبع را به کد ماشین تبدیل می‌کند) TypeScript به طور خاص سریع نیست، اما تیم TypeScript در مایکروسافت با انتقال آن به Go این مشکل را حل می‌کند!

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


👑 @gopher_academy
Forwarded from Geek Alerts
فقط ۴ روز برای آپدیت فایرفاکس فرصت داری وگرنه همه‌چی خراب میشه! 🔴

اگه از فایرفاکس استفاده می‌کنی، بدو که فقط ۴ روز وقت داری آپدیتش کنی! یه گواهینامه ریشه (root certificate) مهم که برای تایید محتوا و افزونه‌ها استفاده می‌شده، تاریخ انقضاش تموم شده و اگه به نسخه ۱۲۸ یا بالاتر آپدیت نکنی، فاتحه همه چی خونده‌ست. فرقی هم نمی‌کنه لینوکس، مک، ویندوز، اندروید یا iOS باشی، همه‌تون باید آپدیت کنید!

اگه آپدیت نکنی، همه قابلیت‌هایی که به آپدیت از راه دور وابسته هستن از کار می‌افتن، افزونه‌هات غیرفعال می‌شن و محتوای DRM دار هم دیگه پخش نمی‌شه. حتی ممکنه سیستم‌هایی که به تایید محتوا نیاز دارن هم درست کار نکنن. پس دست بجنبون و برو توی تنظیمات فایرفاکس ببین چه نسخه‌ای داری و اگه پایین‌تر از ۱۲۸ بود، سریع آپدیتش کن که بعداً پشیمون نشی.

در تاریخ ۲۸ اسفند ۱۴۰۳ • ساعت ۱۹:۵۲ • ۱۸ مارس ۲۰۲۵
zdnet
@alertsai
This media is not supported in your browser
VIEW IN TELEGRAM
یک مدل جدید multimodal اومده به اسم SmolDocling که خیلی عالیه! خیلی کوچکه (ultra-compact vision-language model) و فقط با ۲۵۶ میلیون پارامتر دقتش در تبدیل داکیومنت به متن و استخراج اطلاعات واقعا بالاست. از OCR تا تشخیص کد و فرمولها و ... به کار میاد. راحت روی کامپیوتر نصب میشه و سرعتش هم خیلی بالاست. برای انواع کارها از جمله در workflow های agentic خیلی به درد میخوره.
HF: https://huggingface.co/ds4sd/SmolDocling-256M-preview
Paper: https://arxiv.org/pdf/2503.11576

@DevTwitter | <Mehdi Allahyari/>
Forwarded from Geek Alerts
اگه نسخه مرورگر فایرفاکس شما زیر ۱۲۹ باشه فقط ۴ روز زمان دارید تا آپدیتش کنید، تو نسخه‌های قدیمی یه گواهینامه‌ روت بوده برای تایید محتوا و افزونه‌ها که این تاریخ انقضاش تموم شده، فرقی نداره نسخه فایرفاکس شما چی باشه، زمانش که تموم بشه بخشی از اکستنشن‌ها یا سایت‌ها دیگه کار نمیکنن.

البته مرورگر یکی از برنامه‌هایی هست که همیشه باید اپدیت نگهش دارید چون مستقیم با امنیت دستگاهتون مرتبط هست.

🔗 zdnet
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Md Daily (Mahan)
🎶 میخواستم برای فان و بدون استفاده از AI و یا راهنمایی های موجود یه کلاینت SoundCloud با 🚀 بنویسم. پس Burp Suite عزیز رو باز کردم و شروع کردم به دیدن رکوئست هایی که داره ارسال و دریافت میشه. خبر خوب این بود که همه چیز به صورت api کار میکرد و نیازی به استفاده از چیزی مثل selenium نبود ولی توی تمام درخواست هایی که نیاز به احراز هویت داشت یه چیزی مشترک بود و اون چیزی نبود جز client_id. ولی یه نکته ای وجود داشت. توی هیچ کدوم از درخواست هایی که دریافت میشد چیزی نبود که بره client_id رو بگیره، پس احتمال دادم که client_id توی یکی از فایل های ,js مخفی شده. شروع کردم به باز کردن تک تک لینک های .js ای که توی html لود شده ی صفحه ی soundcloud.com وجود داشتن و بوم :)

چیزی که ما میخواستیم تو یکی از فایل های .js به دو صورت زیر مخفی شده بود.

"client_id=f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5" 
client_id:"f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5"


حالا وقتش بود که این فرایند رو اتوماتیک کنم. عید وقت خوبیه که اگه هنوز regex بلد نیستید، یاد بگیرید (وبسایت https://regexlearn.com/ و ریپو ی https://github.com/ziishaned/learn-regex که ترجمه فارسی هم داره و در نهایت ویدیوی https://www.youtube.com/watch?v=sXQxhojSdZM منابع خوبی برای یادگیری هستن).

سناریو ساده بود یه کد go بنویسم که بره محتوای soundcloud.com رو بگیره لینک های .js رو ازش استخراج کرده و شروع کنه توی فایل های جاوا اسکریپت با regex دنبال پترن client_id بگرده. می تونید کد رو از اینجا ببینید:

https://gist.github.com/mdpe-ir/709c3ca362fa0c2a30fa71e46ddd1f96

ولی بریم برای توضیح بخش های مهمش:

✔️ تابع fetchHTML:

func fetchHTML(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", fmt.Errorf("error fetching URL %s: %v", url, err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
return string(body), nil
}


این تابع یه درخواست HTTP GET به آدرس https://soundcloud.com/ می‌فرسته و کل محتوای HTML صفحه رو برمی‌گردونه.

نکته: اینجا defer resp.Body.Close() باعث می‌شه بعد از تموم شدن کار، اتصال بسته بشه تا منابع سیستم آزاد بشه.

✔️ استخراج لینک‌ها و کدهای جاوااسکریپت (extractJSSources)

این تابع HTML رو پارس می‌کنه و همه تگ‌های <script> رو پیدا می‌کنه. دو نوع جاوااسکریپت رو جدا می‌کنه: لینک‌های خارجی (با src) و کدهای داخلی (inline).
از پکیج golang.org/x/net/html برای پارس کردن HTML استفاده می‌کنه. لینک‌های نسبی رو با resolveURL به آدرس کامل تبدیل می‌کنه و فقط فایل‌هایی که به .js ختم می‌شن رو نگه می‌داره.

✔️ گرفتن محتوای فایل‌های جاوااسکریپت (fetchJSContent)

برای هر لینک .js که پیدا شده، یه درخواست HTTP می‌فرسته و محتوای فایل رو می‌گیره.

✔️ و در نهایت جستجوی client_id با Regex برای (findClientIDs)

پکیج regexp استفاده می‌کنه. دو الگو رو چک می‌کنه

برای فرمت پارامتری:
client_id=([A-Za-z0-9]{32})



برای فرمت object مانند:
client_id\s*:\s*["']([A-Za-z0-9]{32})["']


نکته: [A-Za-z0-9]{32} یعنی دنبال یه رشته ۳۲ کاراکتری از حروف و اعداد می‌گرده.

جمع‌بندی و نمایش نتیجه (main)

همه مراحل رو اجرا می‌کنه، client_idها رو جمع می‌کنه، تکراری‌ها رو حذف می‌کنه و چاپ می‌کنه.

توی تست هام متوجه شدم که هر client id حدودا ۷ روز معتبره. میشه یه cron job نوشت که طی یه مدت مشخص اجرا بشه و client id رو اپدیت کنه.

بعد از اینکه client_id رو پیدا کردیم، حالا می‌تونیم با استفاده ازش به APIهای SoundCloud درخواست بزنیم. برای این کار، من تصمیم گرفتم یه درخواست به endpoint سرچ بزنم تا یه خواننده پیدا کنم و بعد برم لیست موزیک‌هاش رو بگیرم. بیایم اینو قدم به قدم پیاده کنیم.

یه API داره که می‌تونیم با استفاده ازش یه خواننده رو جستجو کنیم. طبق درخواست‌ها تو Burp Suite یه endpoint سرچ چیزی شبیه اینه:

برای جستو در کاربران:
GET https://api-v2.soundcloud.com/search/users?q={query}&client_id={client_id}


برای جستجوی کلی :
GET https://api-v2.soundcloud.com/search?q={query}&client_id={client_id}


حالا فقط کافی بود برای گرفتن لیست موزیک های خواننده :
GET https://api-v2.soundcloud.com/users/{user_id}/tracks?client_id={client_id}


به عنوان مثال این اندپوینت لیست موزیک های Safir رو بر میگردونه:
https://api-v2.soundcloud.com/users/1016216608/tracks?client_id=f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5


حالا که این کار رو کردیم، می‌تونیم کلاینت رو گسترش بدیم، مثلاً یه رابط کاربری ساده باهاش بسازیم یا قابلیت دانلود ترک‌ها رو اضافه کنیم:)
---

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

🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
دیروز عصر یک لحظه gemini از کار افتاد و بعد از reload یک گزینه کنار DeepResarch اضافه شد به اسم Canvas که خب غیر فعال بود تا وقتی داشتم کار میکردم. (این مورد روی Gemini2-flash رایگان هست)

اما امروز متوجه شدم این قابلیت هم رایگان هست؛ برای frontend بنظرم خیلی گزینه خوبی هست.
توی نسخه فعلی Html, React رو پشتیبانی می‌‌کنه.
امروز یه سولوشن خیلی تر تمیز واسه icon پیدا کردم که حیفم اومد به اشتراک نذارم.
اگه سمت فرانت کار می‌کنید حتما با چالش مدیریت آیکن مواجه شدید و احتمالا با icomoon اشنا هستید.
هرچند که icomoon مساله رو تا حدودی حل کرده ولی استفاده ازش چالش های خاص خودشو داره مخصوصا توی پروژه‌ای که تایپ‌اسکریپت باشه.
راه کاری که میخوام معرفی کنم svgps هست. می‌تونید از توی لیستش آیکناتونو انتخاب کنید. اسمهاش رو تغییر بدید و پکیج خودتون رو دانلود کنید.
در نهایت یه فایل selection.json و یه فایل icon.d.ts خروجی بگیرید و توی پروژتون ذخیره کنید. واسه استفاده کردن هم کافیه وکیج مناسب پروژتون رو نصب و کانفیگ کنید.

لینک سایت: https://svgps.app/
لینک ریپو: https://github.com/aykutkardas/svgps.app

@DevTwitter | <Ali Ghorbani/>
Forwarded from Linuxor ?
لیستی از فحش های لینوس توروالدز به برنامه نویس های بد

https://github.com/corollari/linusrants


@Linuxor
🔥 دستور !! sudo

دستور را اجرا می‌کنید ولی فراموش کرده‌اید که از sudo استفاده کنید و پیام "permission denied" دریافت می‌کنید.

در خط بعدی دستور !! sudo را وارد کنید تا آخرین فرمان به‌طور خودکار با دسترسی‌های مدیریتی تکرار شود.
apt update
# خطای دسترسی احتمالی
sudo !!

🗓 در توزیع‌های لینوکسی که از Bash یا Zsh به‌عنوان شل پیش‌فرض استفاده می‌کنند این قابلیت فعال است
🗓 این قابلیت به دلیل ویژگی "History Expansion" در Bash و Zsh است
🗓اگر کار نکرد شاید sudo نصب نیست، یا ممکنه شل fish باشه که به صورت پیشرض History Expansion فعال نیست

پلاگین sudo روی Oh My Zsh همین کار را میکنه
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۱۲۲۳

در عشق تو معرفت خطا دانستیم
چه عشق و چه معرفت کرا دانستیم
یک یافتنی از او به فریاد دو کون
این هست از آن نیست که ما دانستیم

#مولانا | گنجور
📍@iipoem
ساخت یک پکیج Core برای میکرو فرانت اند

چند وقته که دارم روی یک پکیج Shared Core کار می‌کنم تا مشکل اشتراک‌گذاری کامپوننت‌ها، هوک‌ها، آیکون‌ها و ابزارهای مشترک بین پروژه‌های میکرو فرانت‌اندی که داخل ریپو های مختلف هستن رو حل کنم. بعد از بررسی گزینه‌های مختلف، بهترین راهکار رو استفاده از GitHub Packages دیدم که باعث سریع‌تر شدن فرآیند توسعه و مدیریت ساده‌تر وابستگی‌ها می‌شه(البته استفاده از monorepo هم گزینه خوبیه ولی برای پروژه هایی که داخل یک ریپو قرار دارند البته مشکلات زیادی توی deployment براتون پیش میاد).

ویژگی‌های این پکیج:

* Rollup برای باندلینگ و بهینه‌سازی
* Storybook برای مستندسازی و تست کامپوننت‌ها
* SVGR برای مدیریت و استفاده از آیکون‌های SVG
* CI/CD خودکار با GitHub Actions
* قابلیت multi language support با استفاده از i18n , i18n-next
* انتشار روی GitHub Packages برای استفاده راحت در پروژه‌های مختلف

هر تغییری که با master مرج بشه عملیات ci/cd شروع میشه و مراحل build و release پروژه رو انجام میده به وسیله ی Github Actions

چرا به جای مونو ریپو از GitHub Packages استفاده کردم؟

* استقلال کامل پروژه‌ها: هر پروژه نسخه مخصوص خودش رو داره و به تغییرات سایر پروژه‌ها وابسته نیست.
* فرآیند توسعه سریع‌تر: نیازی به هماهنگ‌سازی کل مونو ریپو نیست، فقط پکیج آپدیت می‌شه.
* پیچیدگی کمتر در CI/CD: فقط پکیج تغییر کرده منتشر می‌شه، نه کل ریپو.
استفاده راحت در پروژه‌های مختلف: به‌سادگی از GitHub Packages نصب می‌شه، بدون تنظیمات اضافه.

برای استفاده از این ریپو میتونید مراحل زیر رو انجام بدین

1- تنظیم env متغیرها در GitHub: داخل فایل publish.yml یکسری متغییر داریم که برای استفاده از github action ضروری هستن و برای ست کردنشون کافیه که متغییری به اسم GT_TOKEN (میتونید داخل فایل publish.yml تغییرش بدید) رو داخل github secrets تعریف کنید
میتونید از این لینک کمک بگیرید:
https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions

2- کامپوننت ها، ایکون ها، helpers ها و هر انچه ماژول shared دارین رو انتقال بدید به core

3- کافیه تغییراتتون رو push کنید تا عملیات ci/cd استارت بشه و عملیات build و release انجام بشه (گیت هاب اکشن زمانی فعالیت رو اغاز میکنه که تغییراتی رو برنچ master اعمال بشه، میتونید داخل فایل publish.yml تغییرش بدین)

4- تنظیم npmrc برای نصب پکیج: برای نصب پکیج توی پروژه‌های دیگر، باید یک فایل npmrc. در ریشه پروژه قرار بدین. این فایل باید شامل توکن GitHub برای دسترسی به GitHub Packages باشه (میتونید از این لینک کمک بگیرید: https://stackoverflow.com/questions/72412063/personal-access-tokens-for-install-github-npm-packages)

اینو مد نظر داشته باید که پکیج شما همواره به این صورت خواهد بود
@PACKAGE_NAME/{GITHUB_USERNAME}

مثلا برای این ریپو به این صورت هستش
sadegh1379/es-core@


و در اخر کافیه پکیج رو نصب کنید
npm install @sadegh1379/es-core


با این روش، پکیج‌های shared core به راحتی بین پروژه‌ها به اشتراک گذاشته میشن و فرایندهای CI/CD به‌صورت خودکار و بدون نیاز به دخالت دستی انجام میشه.

https://github.com/sadegh1379/es-core

@DevTwitter | <Sadegh Akbari/>
https://github.com/sadegh1379/es-core
Forwarded from Linuxor ?
ترکیب دانش مالی و برنامه نویسی یکی از ترکیب های موثر برای پول در آوردنه، این ریپو یه مجموعه عظیمی از کتابخونه هایی که برای تحلیل مالی و ترید نیاز دارین رو جمع آوری کرده :

https://github.com/wilsonfreitas/awesome-quant


@Linuxor
Forwarded from Geek Alerts
Pavel Durov
🏆 Telegram now has significantly over 1 billion monthly active users, becoming the second most popular messaging app in the world (excluding the China-specific WeChat) 🥈
پست جدید پاول دوورو مدیر تلگرام در مورد رسیدن به ۱ میلیارد کاربر ماهانه

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

همچنین کاربران تلگرام به طور میانگین روزی ۲۱ بار این برنامه رو باز می‌کنن و ۴۱ دقیقه از روزشون رو درش سپری می‌کنن. در همین حال درآمد ما رشد کرده و به سود ۵۴۷میلیون دلاری در سال ۲۰۲۴ تبدیل شده.

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

🤓 hadi @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
گنوم ۴۸ رسماً عرضه شد.


و اضافه کاری برای من بدبخت🥲



@SohrabContents
Forwarded from Geek Alerts
بالاخره بعد از ۹ ماه، دو فضانوردی که توسط Starliner بویینگ به فضا رفته بودند و به دلایل فنی در ایستگاه فضایی گیرافتاده بودن به زمین برگشتند. این دو نفر که می‌خواستن فقط دو هفته در فضا بمونن تا این فضاپیما رو امتحان کنن‌،‌ به دلیل نقص‌های فنی زیادی که برای این فضاپیما پیش اومده بود مجبور شدن با کپسول دراگون SpaceX برگردن. نقص فنی‌ای که برای این فضاپیما پیش اومده بود باعث شد که ناسا ریسک نکنه و استارلاینر رو بدون سرنشین به زمین برگردونه و احتمالا ناسا قراردادش رو با این شرکت فسخ کنه. و اینطور شد که دیشب اسپیس‌اکس در ماموریت Crew-9 این دو نفر رو برگردونه. در تصویر چهارنفر رو می‌بینید چون که دو فضانورد آمریکایی و روسی رو هم همراه این ماموریت به دنبال اون‌ها فرستاند.

🔗 wired
🤓 hadi @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM