Random shi- tutorials – Telegram
Random shi- tutorials
206 subscribers
228 photos
27 videos
12 files
546 links
محتوای مفید برنامه نویسی و لینوکسی از سراسر دنیا ✍️
جوین شدن شما موجب شادی روح و روان ما میگردد😗
Download Telegram
Forwarded from Linuxor ?
برای نامگذاری متغییر ها توی برنامه نویسی همیشه کلی وقت می‌زاریم و خوب در نمی‌آد، یه اسم خوب متغییر باید طوری باشه که اگه یه برنامه نویس دیگه خوندش ابهامی نداشته باشه، اینجا لیست قوانینش رو نوشته یه نگاهی بهش بندازین:

github.com/kettanaito/naming-cheatsheet

@Linuxor
Forwarded from TheAliBigdeli Channel
نکته‌ای برای نام‌گذاری مقادیر بولین و وضعیت‌ها:

برای مقادیر بولین، اسم رو به شکل سؤال بنویس تا خوندنش طبیعی‌تر بشه 👇
به جای active بنویس is_active
به جای verified بنویس is_verified
به جای access بنویس has_access
به جای edit بنویس can_edit یا is_editable
به جای deleted بنویس is_deleted

اگه حالت‌ها بیش از دو تا هستن (مثلاً pending / approved / rejected)،
از Enum استفاده کن تا کد خواناتر و ایمن‌تر بشه.

همچنین می‌تونی بعضی وضعیت‌ها رو با property‌ها نمایش بدی:

@property
def should_be_canceled(self):
return self.status in ["pending", "failed"]

@thealibigdeli_channel

#cleancode
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
خیلیا می‌خوان وبسایت بسازن، اما فقط پایتون بلدن، لایبری Reflex نجات دهنده شماست، فقط با کد پایتون می‌تونید وبسایت هایی مشابه بالا بسازین، البته برای کارای دم دستیه، انتظار زیادی ازش نداشته باشین، برنامه وب خوب می‌خواین باید وب یاد بگیرین... این خیلی از جاها کار آدمو راه می‌ندازه و خیلی ضعیف نیست اکثر کامپوننت هارو داره

یادگیریش رو از اینجا شروع کنید:

reflex.dev/docs/getting-started/introduction

@Linuxor
Forwarded from tech-afternoon (Amin Mesbahi)
💡♻️ مفهوم و کاربرد API-First Development

توسعه‌ی نرم‌افزار رو میشه مثل ساختمون، بدون نقشه و طرح معماری ساخت! نگید نمیشه؛ چون خیلیا می‌سازن و شده! 😂 تیم‌ها شروع می‌کنن به دیوارکشی (توسعه فرانت‌اند و بک‌اند)، ولی وقتی می‌رسن به اتصالات (Integration)، می‌بینن لوله‌کشی و سیم‌کشی (API) شبیه خونه‌ی پت‌ومت در اومده که از پریز برق آب میاد، لوله برق داره یا درِ پارکینگ به جای کوچه، به پذیرایی همسایه باز می‌شه؛ ساختمونه هم بین ساختمون‌های مجاورش شبیه جوجه کلاغ وسط صد تا جوجه اردکه!

رویکرد سال‌های دور (دلار هزار تومنی) این بود که API یه "محصول جانبی" برای ارتباط با سایر سیستم‌ها محسوب می‌شد؛ یعنی اول بک‌اند نوشته می‌شد، بعد یه قسمتی از اون رو به‌صورت API در معرض استفاده قرار می‌دادن. ریشه‌های این روش، عموما توی خاک سیستم‌های داده‌محور (Data-First) رشد می‌کرد؛ و کمتر "مصرف‌کننده‌محور" (Consumer-Centric) بود.
از طرفی زیاد دیدیم که تیم‌ها معطل هم برای آماده شدن API می‌مونن! یا اعصابشون سر تغییراتی که تیم مقابل روی APIهاش بعد از تفاهم اولیه داده خورد می‌شه! فرانت می‌گه "API تون درست کار نمی‌کنه"، بکند می‌گه "شما درست صداش نمی‌زنین"، و QA هم وسط این دعوا نرخ تعیین می‌کنه! یه بخش بزرگ از این سردردها از نداشتن یه زبون مشترک و قرارداد واضح بین تیم‌هاست.

از طرف دیگه، خیلی وقت‌ها می‌بینیم که بکند کدش رو نوشته، بعد مستندات رو می‌نویسه، بعد معلوم می‌شه مصرف‌کننده یه چیز دیگه می‌خواسته! حالا برگردیم و دوباره بنویسیم؟ یا همینجوری با کثیف‌کاری وصلش کنیم؟ شنیدن جمله "ما بعداً مستندات رو کامل می‌کنیم!" چیز غریب و نادری نیست! ولی واقعیت اینه که توی تیم‌های بالغ، اول API Spec رو می‌نویسن، بعد کد. اگر هم خیلی بالغ باشن، این Spec رو به عنوان یه قرارداد (Contract) بین تیم‌ها در نظر می‌گیرن و با ابزارهای خودکار، صحت پیاده‌سازی و انطباق عینی با طرح و نقشه‌ی اولیه رو کنترل می‌کنن.

🧭 مفهوم API-First یعنی چی؟

مفهوم API-First یعنی قبل از نوشتن کد، اول API رو طراحی کنیم (عموما توسط معمار این اتفاق می‌افته) یعنی بشینیم، فکر کنیم، بنویسیم که چه endpointهایی داریم، چه input/output هایی، چه status codeهایی، چه headerهایی... و همه‌ی این‌ها رو توی یه فایل OpenAPI Spec یا مشابهش ثبت کنیم.
این یعنی API ما از ابتدا مستند شده، با بیزنس، با پروداکت، با تیم‌های همکار می‌شه سناریوسازی و مرور کرد؛ تغییر داد و منطبقش کرد با نیاز واقعی؛ و بعد به کد! بعتر هم برای تغییرات، اول API Spec تغییر می‌کنه و بعد کد. چه اتفاق میوفته؟

- پیش‌بینی‌پذیری: همه می‌دونن قراره چه داده‌ای رد و بدل بشه.
- موازی‌سازی توسعه: تیم‌های مختلف می‌تونن هم‌زمان پیش برن؛ یکی Mock بسازه، یکی پیاده‌سازی واقعی.
- مستندسازی خودکار: چون API از اول با استانداردهایی مثل OpenAPI تعریف میشه، مستندات همیشه با واقعیت هم‌راستا می‌مونن.
- کیفیت بالاتر: چون قبل از کدنویسی، درباره طراحی و naming و consistency فکر می‌کنی.

اینطوری API Spec شما اولا توی سورس‌کنترل نگهداری می‌شه، همواره نسخه تست، استیج رو به صورت live در دسترسی داریم، API Owner هر دامنه مشخصه؛ هر کی عشقش کشید به هر شکلی یه API نمی‌نویسه، breaking changeها و کانفلیکت‌ها قبل از تغییر در API آشکار می‌شن و کلی مزیت دیگه که از حوصله پست تلگرامی خارجه.

رویکرد API-First فقط یک روش نیست، یک تغییر فرهنگی در سازمان، و تغییر استراتژیک در توسعه نرم‌افزاره. این رویکرد، API رو از یک "افزونه" به یک "محصول اصلی" تبدیل می‌کنه که برای تجربه توسعه‌دهنده، سرعت و کیفیت نهایی خیلی حیاتیه. وقتی API-First باشیم، سیستم‌های ما در برابر تغییرات مقاوم‌تر، انعطاف‌پذیرتر و آماده‌تر برای Integration Economy خواهند بود. یکی از شرکت‌هایی که بر اساس رویکرد API First کار می‌کنه زالاندو است که اتفاقا خیلی سخاوتمندانه، یا به توصیف دقیق‌تر، هوشمندانه، دستورالعمل و راهنمای خودش رو سال‌هاست به صورت کدباز منتشر کرده و به نظر من بسیار مستند پخته و خوبیه.

پیشنهاد می‌کنم API رو با ساده‌سازی‌هایی که go, fastAPI, flask, .NET یه موضوع خیلی ساده نبینیم، طراحی و نگهداری بد، مصیبت‌های خودش رو در بلندمدت نشون می‌ده، موقع اینتگریشن‌های بعدی نشون می‌ده و اون وقته که متوجه می‌شیم ای کاش از ابتدا مشورت گرفته بودیم و صرف «کار کردن» API به خودمون نمره قبولی نمی‌دادیم! حتمن این روش پرهزینه‌تر و نیازمند زمان‌ آماده‌سازی و توسعه بیشتریه، ولی عملا سرمایه‌گذاری زمان رشد و اینتگریشن خواهد بود.

Zalando RESTful API and Event Guidelines
Please open Telegram to view this post
VIEW IN TELEGRAM
رابرت کیوساکی، نویسنده پدر پولدار پدر فقیر:
استارتاپ بزنید و طلا، نقره و بیت کوین ذخیره کنید!


لینک محتوا
https://startup360.ir/robert-kiyosaki-warning-forget-retirement-startup-gold-bitcoin/
Forwarded from Linuxor ?
می‌دونستین تنجین (Tengine) یه نسخه‌ی تقویت‌شده از Nginx هستش که شرکت علی‌بابا ساخته تا بتونه سایت‌ها و سرویس‌های خیلی شلوغ خودش رو بهتر مدیریت کنه! اگه بخوایم ساده تر بگیم، همون کاری که Nginx می‌کنه (یعنی پاسخ دادن سریع به درخواست‌های وب و پخش کردن بار بین چند تا سرور)، تنجین هم انجام می‌ده، فقط حرفه‌ای‌تر و با امکانات بیشتر؛ مثلاً بدون اینکه سرور رو خاموش کنی، می‌تونی تنظیماتش رو عوض کنی، از پروتکل‌های جدید مثل HTTP/3 استفاده کنی یا ترافیک کاربرا رو هوشمندتر بین چند تا سرور تقسیم کنی.


برای نصبش باید کامپایلش کنید (توضیحات کامل ترو خودش داده که چه دستوراتی رو بزنید) :

tengine.taobao.org

@Linuxor
Forwarded from Job Experiences
⚠️ اپلیکیشن Spontaneous چیست؟

↙️ در مسیر سنتی اپلای برای شغل‌ها، شروع‌کننده شرکت است و آگهی شغلی را منتشر می‌کند. سپس شما آن آگهی را می‌بینید و تصمیم به اپلای برای آن می‌گیرید. اما در مسیر دیگری که به آن spontaneous applications یا unsolicited applications می‌گویند، شرکت آگهی خاصی منتشر نمی‌کند. معمولاً فقط یک آدرس ایمیل قرار می‌دهد و اعلام می‌کند که هر زمان کسی مایل به همکاری بود، می‌تواند رزومه همراه با توضیح مختصری از سوابق و علاقه‌اش به شرکت را از این طریق ارسال کند.

📈 طبق گزارش لینکدین، در سال ۲۰۲۴ بیش از ۳۳٪ استخدام‌های ارشد در اروپا از طریق همین مسیر انجام شده‌اند. به‌خصوص در فضای استارتاپ‌ها - که تهیه و انتشار آگهی‌های شغلی نیازمند زمان و هزینه جداگانه است - این روش بسیار رایج و پذیرفته‌شده است.

💬 بنابراین اگر وارد وب‌سایت یک استارتاپ یا شرکت شدید و در صفحه شغلی‌شان با بخشی به نام «درخواست خودخواسته» یا «ما همیشه به دنبال استعداد هستیم» مواجه شدید، حتی اگر موقعیت موردنظرتان در لیست آگهی‌ها نبود، نگران نباشید. رزومه‌تان را به همراه یک توضیح مختصر ارسال کنید و منتظر تماس شرکت بمانید.

✈️ @sharif_work
Please open Telegram to view this post
VIEW IN TELEGRAM
1👌1
Forwarded from ‌BenDev
حتما حتما حتما تست هاتون (integration test) رو تا جایی که می‌شه واقعا با ابزار هایی که رو پروداکشن استفاده می‌شه تست کنید

مثلا اگر پستگرس دارین رو پرداکشن بهتره تستتون هم روی پستگرس باشه تا sqlite

اگر پروداکشن دارین s3 استفاده می کنید تست هم روی localstack باشه

این دفعه دومیه که این اتفاق داره برام می‌افته
تست برای اینکه سریع رو راحت باشه با sqlite بوده بردم رو پستگرس یهو دیدم ۱۰ تا تست fail شدن همشون هم واقعا باگ بوده

همین اتفاق برای s3 هم افتاد
برای تست داشتیم از همون فایل پایتون استفاده می‌کردیم

بردم رو لوکال استک الان باگ پیدا کردم.

اشتباه منو تکرار نکنین
درسته ست اپ کردنش سنگین تره شاید یکم طول بکشه و اینها ولی حداقل اطمینان بیشتری به تستت داری

@BenDevelop
Forwarded from Linuxor ?
اگه تا حالا برات سوال شده «کامپیوترم توی شبکه دقیقاً داره با کی حرف می‌زنه؟» یا «کدوم برنامه داره نت می‌خوره؟»، یه ابزار خوب به اسم Sniffnet هست که اینو قشنگ بهت نشون می‌ده
یه برنامه اوپن‌سورس و خوش‌ظاهر که ترافیک اینترنتت رو لحظه‌ای مانیتور می‌کنه؛ از اینکه با چه سرورهایی در ارتباطی تا اینکه هر اپ چقدر دانلود و آپلود داره. برای یاد گرفتن شبکه، دیباگ کردن برنامه‌هات یا حتی فقط کنجکاوی درباره‌ی اینترنت، عالیه!

برخلاف وایرشارک که یه‌کم سنگین و فنیه، Sniffnet خیلی ساده‌ست و فقط با چند کلیک نمودار و اطلاعات واضح بهت می‌ده. هم برای ویندوز هست، هم لینوکس و مک، و با Rust نوشته شده، دانلود از اینجا :
sniffnet.net

@Linuxor
Forwarded from localhost (Yousef Taheri)
یکی از بزرگ‌ترین اتفاقات دنیای طراحی امسال الان معرفی شد!
نرم افزارهای Affinity که همیشه یکی از حرفه‌ای‌ترین نرم‌افزارهای دیزاین بودند و رقیب جدی فتوشاپ و ایلاستریتور و ایندیزاین محسوب می‌شدند، الان کاملاً رایگان شدند!
درست خوندید - رایگان! (نه trial، نه نسخه محدود، نه اشتراک ماهیانه).

پارسال Canva این شرکت رو خرید و حالا تصمیم گرفتن که همه‌چی رو رایگان کنن. می‌خوان ثابت کنن که نرم‌افزار حرفه‌ای لزوماً نباید گرون باشه و البته به نظرم دلیل اصلیش اینه که اومدن ابزار پایه رو رایگان کردند تا کاربران شروع کنن به طراحی و وقتی نیاز به چیزی مثل یک طرح آماده یا استفاده از قابلیت های هوش مصنوعی داشتند، باید اشتراک کنوا رو خریداری کنن.
از اینجا میتونید مستقیم برای سیستم عامل ویندوز و مک دانلودش کنید. (https://affinity.studio)

Hossein Mahmoodi
Forwarded from Linuxor ?
اگه زیاد با ترمینال کار می‌کنید، Atuin میاد تاریخچه فرمان‌هاتون رو مدیریت می‌کنه، ولی نه مثل history معمولی! همه چیز رو با جزئیات ذخیره می‌کنه: مسیر، زمان اجرا، خروجی و حتی روی چند دستگاه هم sync میشه. یعنی دیگه لازم نیست برای پیدا کردن یه فرمان قدیمی بین صدها خط history دنبال بگردین.

نصب :
atuin.sh

@Linuxor
Forwarded from Persian Store
🐍 ساخت اپلیکیشن پایتون با نصب آسان: راهنمای کامل

چگونه برنامه‌های پایتون را به صورت حرفه‌ای بسته‌بندی کنیم:

🎯 ابزارهای اصلی برای ساخت installer:

• PyInstaller - تبدیل به فایل اجرایی

pyinstaller --onefile --windowed app.py

• Inno Setup - ساخت installer حرفه‌ای برای ویندوز
•NSIS - ابزار قدرتمند ساخت installer

🛠️ مراحل اساسی:

1. تبدیل به executable:

pip install pyinstaller
pyinstaller --onefile your_noscript.py

1. ساخت installer:

· ایجاد اسکریپت Inno Setup
· تعریف آیکون، shortcut و مسیر نصب
· کامپایل فایل ISS

1. تست نصب:

· اجرا روی سیستم تمیز
· بررسی وابستگی‌ها
· اطمینان از عملکرد صحیح

📦 بهترین روش‌ها:

· حذف وابستگی‌های غیرضروری
· استفاده از virtual environments
· امضای دیجیتال فایل‌ها
· ارائه نسخه‌های ۳۲ و ۶۴ بیتی

🚀 مزایای بسته‌بندی حرفه‌ای:

· نصب آسان برای کاربران نهایی
· بدون نیاز به نصب پایتون
· تجربه کاربری بهتر
· توزیع ساده‌تر

#پایتون #بسته‌بندی #نصب #PyInstaller #توسعه_نرم‌افزار
2
Forwarded from ZGP
دیدید که توی جنگو وقتی از query set چند بار استفاده میکنیم نتیجه نمیده یا مثلا هیچ دیتایی وارد دیتا بیس نمیشه یا اشتباه وارد میشه؟
خب این یک باگه معروفه به اسم queryset caching bug که توی django ORM هستش.

مشکل کجاست؟
توی جنگو queryset ها lazy هستن و فقط وقتی لازم باشه داده رو از دیتابیس میگیره اما وقتی یک queryset کش میشه (مثلا با() list یا iteration ) نتیجه اش میشه که توی حافظه می مونه و یا همون کش قدیمی رو نگه میداره .
واییییییییییی باگ واقعی از اونجایی شروع شد که متد هایی مثل () count یا () exists هم بعثی وقتا به کش وابسته ان ولی نباید اینطور میشد .
و ممکن بود که شمارش رکورد ها اشتباه باشه و در سیستم های حساس فاجعه به بار می آورد.

و توسعه دهنده هایی که ORM رو عمیق میشناختن تونستن بفهمن مشکل از کجاست.

اومدن رفعش کردن چطوری؟
در نسخه های بعدی جنگو تیم رسمی ORM رو بازسازی کرد تا اون دوتا متد ها همیشه کوئری جداگانه بفرسته و به کش متکی نباشه .


#BUG
#Django
#ORM

@ZGProtocol
4
Forwarded from Linuxor ?
این کورس 5 روزه گوگل برای Ai Agent هارو از دست ندید

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

youtube.com/playlist?list=PLqFaTIg4myu9r7uRoNfbJhHUbLp-1t1YE

@Linuxor
Forwarded from جنگولرن
قابلیت Password-based authentication در جنگو

عکس رو ببین.
وقتی میخوای یوزر توی پنل ادمین بسازی (در حالت پیشفرض منظورم هست)
میتونی اینو فعال یا غیرفعال کنی.

مشخص میکنی که کاربر با پسورد لاگین کنه یا نه (مثلا فقط بتونه با کد یکبار مصرف لاگین کنه، غیرفعالش میکنی یا...)

این تنظیم از جنگو 5.1 اضافه شده.

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

میخوام شمارو دعوت کنم به pr یی که براش ثبت شده و مکالمه هایی که رد و بدل شده، تا ایده اولیه، این شده (به تاریخ pr و تاریخ merge دقت کن)

این لینک:
https://github.com/django/django/pull/16942

راستی، فارسی ش کار نمیکنه ظاهرا، تا دیر نشده فارسی ش رو pr بده 😁
Forwarded from OpenPCB
طبق گفته FFmpeg پچ جدید باعث شده یه تابع مهم تو پردازش ویدیو ۳.۴۶ برابر سریع‌تر بشه. ماجرا اینه که یکی از کانتریبیوترها به اسم mkver اومده تابع add_8x8basis_sse3 رو که قبلاً با C نوشته شده بود رو کاملا با اسمبلی x86 بازنویسی کرده و خروجی هم شده همین جهش سرعت جدی.

دلیلش اینه که کامپایلرهای GCC و Clang وقتی با فلگ O3 کد رو کامپایل می‌کنند، معمولاً یه سری حلقه هایی که اصلاً قرار نیست زیاد اجرا بشن رو باز می‌کنن و کد رو حجیم‌تر می‌کنن. اینجا هم اون فانکشن رو از ۱۷۶ بایت رسونده به ۱۴۰۶ بایت! تو این مدل پردازش‌ها، چون دستورهای خاص و عجیب‌غریبی مثل pmulhrsw وجود داره، کامپایلر همیشه انتخاب‌های درستی نمی‌کنه. دولوپرهای FFmpeg هم میگن: «باشه، خودمون درستش می‌کنیم.» نکته مهم اینه که لزوماً کد C مشکل نداره! این رفتار کامپایلر تو مرحله بهینه‌سازیه که گاهی خودش دردسر درست می‌کنه.

این اولین‌بار نیست FFmpeg از اسمبلی برای گرفتن نهایت قدرت سخت‌افزار استفاده می‌کنه واین همون بحث معروف چند وقت پیشه که چرا پلیر dav1d که چندتا آدم معمولی ساختنش، بعضی جاها از libgav1 گوگل بهتره. جواب همون همیشگیه: وقتی دقیق می‌دونی چی می‌خوای و خودت دستی کد اسمبلی رو می‌نویسی، خروجی معمولاً از نسخه‌ی تولیدشده توسط کامپایلر بهتره.

یه سوال هم که همیشه مطرح می‌شه اینه که «چرا این مشکلات رو به سازنده‌های کامپایلر گزارش نمی‌کنن؟» گزارش می‌دن، ولی تا نسخه جدید کامپایلر بیاد مدت‌ها طول می‌کشه. یعنی عملاً بهترین کار اینه که خودشون همزمان دست به آچار باشن و مشکل رو دور بزنن.

برای همین پروژه‌هایی مثل FFmpeg اینقدر ارزشمندن. از یه طرف همیشه تو بهینه‌ترین حالت ممکنه، از یه طرف دیگه همین مواردی که پیدا می‌کنن عملاً به کل کامیونیتی C و کامپایلرها سود می‌رسونه و باعث می‌شه ابزارهایی که همه استفاده می‌کنن، کم‌کم بهتر بشن.


📺Source
📡openpcb
Forwarded from جنگولرن
معرفی django-upgrade

اگه یه پروژه جنگو داری و میخوای نسخه ش رو عوض کنی.
اما تغییرات زیادی نیاز داره (مثلا بعضی چیزا deprecated شدن)
میتونی ازش استفاده کنی.
از جنگو 6 هم پشتیبانی میکنه

لینک داکیومنت:
https://django-upgrade.readthedocs.io/en/latest/fixers.html
Forwarded from Linuxor ?
اگه حوصلتون سر رفته برید درباره الگوریتم های تطبیقی بخونید، الگوریتم تطبیقی یعنی الگوریتمی که بر اساس شرایط پارامترهاشو تغییر می‌ده تا عملکرد بهتری به دست بیاره.

مثلا فیلتر کالمن که توی موقعیت‌یابی پهپاد هم استفاده می‌شه، ساده تر بخوام بگم فرض کنید یه ربات داره تحت داده های پنج شیش تا سنسور مثلا GPS و شتاب سنج و ژیروسکوپ و ... تصمیم می‌گیره چطوری حرکت کنه، یهویی اسرائیل خدا می‌زنه تو کلش به ایران حمله می‌کنه و ایران GPS هارو نویزی می‌کنه، این ربات زبون بسته از فیلتر کالمن استفاده می‌کنه، فیلتر کالمن هم می‌بینه اخ اخ GPS وضعیتش نویزیه می‌آد و ضریب اعتماد بهش رو کم و ضریب اعتماد به بقیه سنسورا به خصوص اون پایدار هارو زیاد می‌کنه یجوری خودشو تطبیق می‌ده با محیط که بتونه بهترین عملکردو داشته باشه، به این می‌گن الگوریتم تطبیقی کلی از این الگوریتما داریم به خصوص توی شبکه و هوش مصنوعی و ...


@Linuxor
👍2