Forwarded from Python Hints
آتیش شادی جشن ایرانیها
شب گذشته خیلیها رو سوزوند.
لذت میبرم مردمم رو شاد میبینم ♥️
شب گذشته خیلیها رو سوزوند.
لذت میبرم مردمم رو شاد میبینم ♥️
Forwarded from omid trade 360
به طور متوسط، یک مهندس سنیور نرمافزار ۳ تا ۵ برابر بیشتر از یک جونیور درآمد داره. این فقط به خاطر تجربه بیشتر نیست، بلکه به دلیل ارزش بیشتری هست که به شرکت میاره.
حالا فرض کنید دو مهندس تو یه شرکت کار میکنند:
مهندس A (سختکوش)
- روزی 10 ساعت کار میکنه، باگهارو را درست میکنه و هزاران خط کد مینویسه.
- تمام وظایف محول شده رو بدون فکر کردن به تأثیرشون انجام میده.
- و یه جورایی در چرخهی "کار زیاد، پیشرفت کم" گیر کرده.
مهندس B (موثر)
- قبل از نوشتن حتی یک خط کد، وقت میگذاره تا مشکل اصلی رو بفهمه.
- میتونه یه مشکل بزرگ تو سیستم پیدا کنه و با یک اسکریپت 500 خطی، سالانه ۵۰ تا ۷۰ میلیون تو هزینههای شرکت صرفهجویی کنه.
- ورکفلو رو بهتر میکنه تا سیستم سریعتر، بهینهتر و مقیاسپذیر بشه.
حالا وقتی زمان ترفیع برسه به نظرت شرکت کدوم رو بیشتر میخواد؟
انصاف هست مهندس A که مشغول بوده صرفا و تسکهارو انجام میداده و ارزش و تاثیر کمتری تو شرکت میذاره بیشتر ترفیع بگیره؟ خوب نه (نه اینکه نگیره، اینه که بیشتر یا کمتر بگیره)
پس کار ما مساوی هست با تأثیری که میگذاریم
چند تا نکته در نهایت
- مشکلات را حل کن، نه اینکه فقط کارارو را انجام بده
- قبل از شروع کدنویسی، بپرس: این چرا مهمه؟
- روی مشکلات بزرگ، بهینهسازی و اتومیشن کار کن که ارزش واقعی میسازه.
-فراتر از کدنویسی فکر کن
- یک سنیور نصفش مشکلگشا و نصفش برنامهریزه.
- یک سنیور سیستمها را طراحی میکنه، پیچیدگی رو کم میکنه و تصمیمهای بهتر میگیره، نه فقط کد بزنه.
- بفهم کارت چطور به شرکت کمک میکنه
- یادت باشه یک اسکریپت 200 خطی که پول صرفهجویی کنه، از یک ویژگی 10,000 خطی که کسی استفاده نکنه باارزشتره.
- بهترین مهندسها فقط کد نمینویسن، سیستمها محصولات و کارایی رو بهتر میکنن.
- هدف این نیست که کد بیشتری بنویسی، هدف اینه که ارزش بیشتری بسازی.
پس (در یک شرکت یا تیم سالم) ارزش بیشتری بسازی، پاداش بیشتری میگیری.
<Saman/>
➖➖➖➖➖➖➖➖
https://t.iss.one/addlist/KpzXaiSpKENkMGM0
حالا فرض کنید دو مهندس تو یه شرکت کار میکنند:
مهندس A (سختکوش)
- روزی 10 ساعت کار میکنه، باگهارو را درست میکنه و هزاران خط کد مینویسه.
- تمام وظایف محول شده رو بدون فکر کردن به تأثیرشون انجام میده.
- و یه جورایی در چرخهی "کار زیاد، پیشرفت کم" گیر کرده.
مهندس B (موثر)
- قبل از نوشتن حتی یک خط کد، وقت میگذاره تا مشکل اصلی رو بفهمه.
- میتونه یه مشکل بزرگ تو سیستم پیدا کنه و با یک اسکریپت 500 خطی، سالانه ۵۰ تا ۷۰ میلیون تو هزینههای شرکت صرفهجویی کنه.
- ورکفلو رو بهتر میکنه تا سیستم سریعتر، بهینهتر و مقیاسپذیر بشه.
حالا وقتی زمان ترفیع برسه به نظرت شرکت کدوم رو بیشتر میخواد؟
انصاف هست مهندس A که مشغول بوده صرفا و تسکهارو انجام میداده و ارزش و تاثیر کمتری تو شرکت میذاره بیشتر ترفیع بگیره؟ خوب نه (نه اینکه نگیره، اینه که بیشتر یا کمتر بگیره)
پس کار ما مساوی هست با تأثیری که میگذاریم
چند تا نکته در نهایت
- مشکلات را حل کن، نه اینکه فقط کارارو را انجام بده
- قبل از شروع کدنویسی، بپرس: این چرا مهمه؟
- روی مشکلات بزرگ، بهینهسازی و اتومیشن کار کن که ارزش واقعی میسازه.
-فراتر از کدنویسی فکر کن
- یک سنیور نصفش مشکلگشا و نصفش برنامهریزه.
- یک سنیور سیستمها را طراحی میکنه، پیچیدگی رو کم میکنه و تصمیمهای بهتر میگیره، نه فقط کد بزنه.
- بفهم کارت چطور به شرکت کمک میکنه
- یادت باشه یک اسکریپت 200 خطی که پول صرفهجویی کنه، از یک ویژگی 10,000 خطی که کسی استفاده نکنه باارزشتره.
- بهترین مهندسها فقط کد نمینویسن، سیستمها محصولات و کارایی رو بهتر میکنن.
- هدف این نیست که کد بیشتری بنویسی، هدف اینه که ارزش بیشتری بسازی.
پس (در یک شرکت یا تیم سالم) ارزش بیشتری بسازی، پاداش بیشتری میگیری.
<Saman/>
➖➖➖➖➖➖➖➖
https://t.iss.one/addlist/KpzXaiSpKENkMGM0
Forwarded from FullstacksJS — Academy
ریویو پروژه NextJS
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مشاهده ویدئو
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش صحبت کنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!
15:22 چطوری یک خط خالی توی کد روی استخدام شدن شما تاثیر میذاره؟
31:30 اضافه کردن فرمتر و لینتر
33:03 از public چیزی ایمپورت نکنید
34:47 کی و چطوری باید کامپوننتمون رو بشکنیم؟
42:35 مسئله useless fragment
43:51 یکپارچگی پیاده سازی و اسم گذاری
45:15 مسئله layout
48:04 مسئله اسم گذاری
53:46 بررسی کامپوننت Banner
55:11 چرا نباید از z-index و overflow زیاد استفاده کنید
55:54 تعداد خطهای کامپوننت Code Smell حساب میشه.
57:42 نحوده درست مدیریت z-index
59:51 اصل Single Responsibility تو فرانت اند
01:02:52 چه چیزهایی رو نباید توی کامپوننت برد؟
1:08:55 درک مسئله Spacing
1:11:07 پیاده سازی درست تم dark و light با taildinw
1:16:23 انکپسوله کردن مسئولیت های کامپوننت ها
1:20:07 کی از margin استفاده کنیم کی از padding
1:22:00 از grid و flex تو در تو استفاده نکنید.
1:27:34 به CSS فحش ندیم
1:28:32 فرق بین space و gap توی tailwind
1:30:25 جمع بندی
#fullstacksjs #mobreview #css #react #typescript #nextjs
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مشاهده ویدئو
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش صحبت کنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!
15:22 چطوری یک خط خالی توی کد روی استخدام شدن شما تاثیر میذاره؟
31:30 اضافه کردن فرمتر و لینتر
33:03 از public چیزی ایمپورت نکنید
34:47 کی و چطوری باید کامپوننتمون رو بشکنیم؟
42:35 مسئله useless fragment
43:51 یکپارچگی پیاده سازی و اسم گذاری
45:15 مسئله layout
48:04 مسئله اسم گذاری
53:46 بررسی کامپوننت Banner
55:11 چرا نباید از z-index و overflow زیاد استفاده کنید
55:54 تعداد خطهای کامپوننت Code Smell حساب میشه.
57:42 نحوده درست مدیریت z-index
59:51 اصل Single Responsibility تو فرانت اند
01:02:52 چه چیزهایی رو نباید توی کامپوننت برد؟
1:08:55 درک مسئله Spacing
1:11:07 پیاده سازی درست تم dark و light با taildinw
1:16:23 انکپسوله کردن مسئولیت های کامپوننت ها
1:20:07 کی از margin استفاده کنیم کی از padding
1:22:00 از grid و flex تو در تو استفاده نکنید.
1:27:34 به CSS فحش ندیم
1:28:32 فرق بین space و gap توی tailwind
1:30:25 جمع بندی
#fullstacksjs #mobreview #css #react #typescript #nextjs
YouTube
MobReview 6: بررسی کد ریاکت و نکست جی اس
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!…
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!…
Forwarded from محتوای آزاد سهراب
کانال اطلاعرسانی توزیع پارچ
سال جدید، پارچ جدید! 🥤 کمکم به ۱۴۰۴ نزدیک میشیم و ما توی تیم پارچ لینوکس در حال کار روی یه تحول بزرگ هستیم. علاوه بر بهینهسازیهای فنی، داریم روی هویت بصری جدید پارچ کار میکنیم تا ظاهر و تجربهی کاربریش مدرنتر و حرفهایتر بشه. این تغییرات از لوگو…
بالاخره هویت بصری رو استارت زدیم، چرا مهمه؟
خب این کتابچه هویت بصری تعیین میکنه که طرحهایی که برای پارچ ساخته میشن چه ساختاری رو داشته باشن، چه فونتی داخلشون باید استفاده بشه و همینطور اگر از لوگوی پارچ داخل طرحی بخواد استفاده بشه چه شرایطی داشته باشه که بهترین ظاهر رو به خودش بگیره.
از همه مهمتر اینکه خود برنامههایی که برای پارچ نوشته میشن دستخوش تغییرات میشن، توی ۱۴۰۴ سعی داریم تا پارچ رو چشمنواز تر از همیشه بکنیم.
@SohrabContents
خب این کتابچه هویت بصری تعیین میکنه که طرحهایی که برای پارچ ساخته میشن چه ساختاری رو داشته باشن، چه فونتی داخلشون باید استفاده بشه و همینطور اگر از لوگوی پارچ داخل طرحی بخواد استفاده بشه چه شرایطی داشته باشه که بهترین ظاهر رو به خودش بگیره.
از همه مهمتر اینکه خود برنامههایی که برای پارچ نوشته میشن دستخوش تغییرات میشن، توی ۱۴۰۴ سعی داریم تا پارچ رو چشمنواز تر از همیشه بکنیم.
@SohrabContents
Forwarded from کانال مهرداد لینوکس
✅لینوکس 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
💠واحد پردازش شبکه (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
Forwarded from دستاوردهای یادگیری عمیق(InTec)
این دستگاه که میبینید اسمش
برای سال جدید، با شرکتی در ایران صحیت میکردیم روی یک سری کارهای هوش مصنوعی؛ که خب تصمیم گرفته بودند دوتا دستگاه با حداقل 96GB گرافیک تهیه کنند و نگرانی سرمایه گذاری و نشدن و ... داشتند.
یک همچین کانفیگی اگر بخواد بروز هم باشه برای هر سیستم حدوداً
تنها چیزی که کم داره البته فقط Memory Bandwith هست که ای کاش بالای 400GB بود ولی همین هم عالی هست (برای 90٪ البته فرقی هم نمیکنه)
با قیمت ۲تای این دستگاه؛ میشد یکی ازون سیستمها تهیه کرد فقط.
کاملاً هم قابل حمل هست.
https://www.nvidia.com/en-us/products/workstations/dgx-spark/
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
TypeScript's Compiler to Get 10x Faster, Thanks to Go
🟢 خلاصه مقاله:
در سالهای اخیر، TypeScript با استفاده از تایپ قوی (نوعبندی قوی که به کمک آن نوع متغیرها قبل از اجرای کد مشخص میشود) و ساختار افزوده، اکوسیستم JavaScript را به شدت تکان داده است. هرچند که کامپایلر (برنامهای که کد منبع را به کد ماشین تبدیل میکند) TypeScript به طور خاص سریع نیست، اما تیم TypeScript در مایکروسافت با انتقال آن به Go این مشکل را حل میکند!
🟣لینک مقاله:
https://golangweekly.com/link/166805/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Microsoft News
A 10x Faster TypeScript
Embarking on a native port of the existing TypeScript compiler and toolset to achieve a 10x performance speed-up.
Forwarded from Geek Alerts
فقط ۴ روز برای آپدیت فایرفاکس فرصت داری وگرنه همهچی خراب میشه! 🔴
اگه از فایرفاکس استفاده میکنی، بدو که فقط ۴ روز وقت داری آپدیتش کنی! یه گواهینامه ریشه (root certificate) مهم که برای تایید محتوا و افزونهها استفاده میشده، تاریخ انقضاش تموم شده و اگه به نسخه ۱۲۸ یا بالاتر آپدیت نکنی، فاتحه همه چی خوندهست. فرقی هم نمیکنه لینوکس، مک، ویندوز، اندروید یا iOS باشی، همهتون باید آپدیت کنید!
اگه آپدیت نکنی، همه قابلیتهایی که به آپدیت از راه دور وابسته هستن از کار میافتن، افزونههات غیرفعال میشن و محتوای DRM دار هم دیگه پخش نمیشه. حتی ممکنه سیستمهایی که به تایید محتوا نیاز دارن هم درست کار نکنن. پس دست بجنبون و برو توی تنظیمات فایرفاکس ببین چه نسخهای داری و اگه پایینتر از ۱۲۸ بود، سریع آپدیتش کن که بعداً پشیمون نشی.
در تاریخ ۲۸ اسفند ۱۴۰۳ • ساعت ۱۹:۵۲ • ۱۸ مارس ۲۰۲۵
zdnet
@alertsai
اگه از فایرفاکس استفاده میکنی، بدو که فقط ۴ روز وقت داری آپدیتش کنی! یه گواهینامه ریشه (root certificate) مهم که برای تایید محتوا و افزونهها استفاده میشده، تاریخ انقضاش تموم شده و اگه به نسخه ۱۲۸ یا بالاتر آپدیت نکنی، فاتحه همه چی خوندهست. فرقی هم نمیکنه لینوکس، مک، ویندوز، اندروید یا iOS باشی، همهتون باید آپدیت کنید!
اگه آپدیت نکنی، همه قابلیتهایی که به آپدیت از راه دور وابسته هستن از کار میافتن، افزونههات غیرفعال میشن و محتوای DRM دار هم دیگه پخش نمیشه. حتی ممکنه سیستمهایی که به تایید محتوا نیاز دارن هم درست کار نکنن. پس دست بجنبون و برو توی تنظیمات فایرفاکس ببین چه نسخهای داری و اگه پایینتر از ۱۲۸ بود، سریع آپدیتش کن که بعداً پشیمون نشی.
در تاریخ ۲۸ اسفند ۱۴۰۳ • ساعت ۱۹:۵۲ • ۱۸ مارس ۲۰۲۵
zdnet
@alertsai
Forwarded from DevTwitter | توییت برنامه نویسی
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/>
HF: https://huggingface.co/ds4sd/SmolDocling-256M-preview
Paper: https://arxiv.org/pdf/2503.11576
@DevTwitter | <Mehdi Allahyari/>
Forwarded from Laravel News
Using Laravel's fluent Method for HTTP Response Transformations https://laravel-news.com/fluent-http-response-transformations
Laravel News
Using Laravel's fluent Method for HTTP Response Transformations - Laravel News
Streamline external API interactions in your Laravel applications with the HTTP Client's fluent() method. This approach brings type-safe data access to your integrations while reducing data parsing complexity.
Forwarded from Geek Alerts
اگه نسخه مرورگر فایرفاکس شما زیر ۱۲۹ باشه فقط ۴ روز زمان دارید تا آپدیتش کنید، تو نسخههای قدیمی یه گواهینامه روت بوده برای تایید محتوا و افزونهها که این تاریخ انقضاش تموم شده، فرقی نداره نسخه فایرفاکس شما چی باشه، زمانش که تموم بشه بخشی از اکستنشنها یا سایتها دیگه کار نمیکنن.
البته مرورگر یکی از برنامههایی هست که همیشه باید اپدیت نگهش دارید چون مستقیم با امنیت دستگاهتون مرتبط هست.
🔗 zdnet
🤓 @geekalerts
البته مرورگر یکی از برنامههایی هست که همیشه باید اپدیت نگهش دارید چون مستقیم با امنیت دستگاهتون مرتبط هست.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Md Daily (Mahan)
چیزی که ما میخواستیم تو یکی از فایل های .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
ولی بریم برای توضیح بخش های مهمش:
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() باعث میشه بعد از تموم شدن کار، اتصال بسته بشه تا منابع سیستم آزاد بشه.
این تابع HTML رو پارس میکنه و همه تگهای <script> رو پیدا میکنه. دو نوع جاوااسکریپت رو جدا میکنه: لینکهای خارجی (با src) و کدهای داخلی (inline).
از پکیج golang.org/x/net/html برای پارس کردن HTML استفاده میکنه. لینکهای نسبی رو با resolveURL به آدرس کامل تبدیل میکنه و فقط فایلهایی که به .js ختم میشن رو نگه میداره.
برای هر لینک .js که پیدا شده، یه درخواست HTTP میفرسته و محتوای فایل رو میگیره.
پکیج 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
Forwarded from Laravel News
React Theme Provider: A Walkthrough https://laravel-news.com/react-theme-provider-a-walkthrough
Laravel News
React Theme Provider: A Walkthrough - Laravel News
In this tutorial, let's look at customizing the react starter kit
Forwarded from دستاوردهای یادگیری عمیق(InTec)
دیروز عصر یک لحظه
اما امروز متوجه شدم این قابلیت هم رایگان هست؛ برای
توی نسخه فعلی
gemini از کار افتاد و بعد از reload یک گزینه کنار DeepResarch اضافه شد به اسم Canvas که خب غیر فعال بود تا وقتی داشتم کار میکردم. (این مورد روی Gemini2-flash رایگان هست)اما امروز متوجه شدم این قابلیت هم رایگان هست؛ برای
frontend بنظرم خیلی گزینه خوبی هست.توی نسخه فعلی
Html, React رو پشتیبانی میکنه.Forwarded from Laravel News
JSON Unicode Cast Type Added in Laravel 12.3 https://laravel-news.com/laravel-12-3-0
Laravel News
JSON Unicode Cast Type Added in Laravel 12.3 - Laravel News
The Laravel team released v12.3.0, which includes a new JSON Unicode cast type, check linked storage status in the "artisan about" command, native JSON and JSONB support in SQLite schemas, and more.
Forwarded from DevTwitter | توییت برنامه نویسی
امروز یه سولوشن خیلی تر تمیز واسه icon پیدا کردم که حیفم اومد به اشتراک نذارم.
اگه سمت فرانت کار میکنید حتما با چالش مدیریت آیکن مواجه شدید و احتمالا با icomoon اشنا هستید.
هرچند که icomoon مساله رو تا حدودی حل کرده ولی استفاده ازش چالش های خاص خودشو داره مخصوصا توی پروژهای که تایپاسکریپت باشه.
راه کاری که میخوام معرفی کنم svgps هست. میتونید از توی لیستش آیکناتونو انتخاب کنید. اسمهاش رو تغییر بدید و پکیج خودتون رو دانلود کنید.
در نهایت یه فایل selection.json و یه فایل icon.d.ts خروجی بگیرید و توی پروژتون ذخیره کنید. واسه استفاده کردن هم کافیه وکیج مناسب پروژتون رو نصب و کانفیگ کنید.
لینک سایت: https://svgps.app/
لینک ریپو: https://github.com/aykutkardas/svgps.app
@DevTwitter | <Ali Ghorbani/>
اگه سمت فرانت کار میکنید حتما با چالش مدیریت آیکن مواجه شدید و احتمالا با 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
https://github.com/corollari/linusrants
@Linuxor
Forwarded from کانال مهرداد لینوکس
🔥 دستور !! sudo
❌ دستور را اجرا میکنید ولی فراموش کردهاید که از sudo استفاده کنید و پیام "permission denied" دریافت میکنید.
✅ در خط بعدی دستور !! sudo را وارد کنید تا آخرین فرمان بهطور خودکار با دسترسیهای مدیریتی تکرار شود.
🗓 در توزیعهای لینوکسی که از Bash یا Zsh بهعنوان شل پیشفرض استفاده میکنند این قابلیت فعال است
🗓 این قابلیت به دلیل ویژگی "History Expansion" در Bash و Zsh است
🗓اگر کار نکرد شاید sudo نصب نیست، یا ممکنه شل fish باشه که به صورت پیشرض History Expansion فعال نیست
پلاگین sudo روی Oh My Zsh همین کار را میکنه
❌ دستور را اجرا میکنید ولی فراموش کردهاید که از sudo استفاده کنید و پیام "permission denied" دریافت میکنید.
✅ در خط بعدی دستور !! sudo را وارد کنید تا آخرین فرمان بهطور خودکار با دسترسیهای مدیریتی تکرار شود.
apt update
# خطای دسترسی احتمالی
sudo !!
🗓 در توزیعهای لینوکسی که از Bash یا Zsh بهعنوان شل پیشفرض استفاده میکنند این قابلیت فعال است
🗓 این قابلیت به دلیل ویژگی "History Expansion" در Bash و Zsh است
🗓اگر کار نکرد شاید sudo نصب نیست، یا ممکنه شل fish باشه که به صورت پیشرض History Expansion فعال نیست
پلاگین sudo روی Oh My Zsh همین کار را میکنه
Forwarded from DevTwitter | توییت برنامه نویسی
ساخت یک پکیج 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)
اینو مد نظر داشته باید که پکیج شما همواره به این صورت خواهد بود
مثلا برای این ریپو به این صورت هستش
و در اخر کافیه پکیج رو نصب کنید
با این روش، پکیجهای shared core به راحتی بین پروژهها به اشتراک گذاشته میشن و فرایندهای CI/CD بهصورت خودکار و بدون نیاز به دخالت دستی انجام میشه.
https://github.com/sadegh1379/es-core
@DevTwitter | <Sadegh Akbari/>
https://github.com/sadegh1379/es-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
https://github.com/wilsonfreitas/awesome-quant
@Linuxor