Random shi- tutorials – Telegram
Random shi- tutorials
206 subscribers
228 photos
27 videos
12 files
546 links
محتوای مفید برنامه نویسی و لینوکسی از سراسر دنیا ✍️
جوین شدن شما موجب شادی روح و روان ما میگردد😗
Download Telegram
Forwarded from TheAliBigdeli Channel
موضوع GIL در پایتون یعنی چی؟

پایتون یه مکانیزمی داره به اسم GIL (Global Interpreter Lock) که باعث می‌شه در هر لحظه فقط یه بخش از کد پایتونی روی CPU اجرا بشه. یعنی حتی اگه چند کار هم‌زمان تعریف کرده باشی، مفسر پایتون فقط یکی‌شون رو در لحظه اجرا می‌کنه.

هدف GIL اینه که از تداخل و خراب شدن داده‌ها جلوگیری کنه، چون حافظه‌ی داخلی پایتون طوری طراحی نشده که چند بخش از برنامه هم‌زمان بتونن روش بنویسن. این قفل باعث می‌شه اجرای برنامه‌ها در حالت عادی ساده‌تر و ایمن‌تر باشه، ولی در عوض جلوی اجرای واقعی هم‌زمان روی چند هسته CPU رو می‌گیره.

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

اما نکته جدید: در نسخه‌ی ۳٫۱۴ پایتون، حذف (یا به عبارتی «اختیاری کردن») GIL وارد فاز جدیدی شده. در حالت Free-Threaded (یا No-GIL)، پایتون قادر می‌شه بخش‌های محاسباتی را در چند تِرِد واقعی و هم‌زمان اجرا کنه، که در صورت طراحی درست ممکنه عملکرد چند برابر بهتر بشه.

پست زیر می تونه در عمل بهتر بهت نشونش بده:

https://www.linkedin.com/posts/avi-chawla_finally-python-314-lets-you-disable-gil-activity-7383818720332169216-dtH_?utm_source=share&utm_medium=member_desktop&rcm=ACoAACOugCYBHGWYjHpFz9urfiJEDF52-xCSwtE

📢 @thealibigdeli_channel

#python
#news
Forwarded from localhost (Yousef Taheri)
2
Forwarded from Linuxor ?
دنیای نسل بعدی دنیای اینترنت اشیاءس یادگیریش برای همه بسیار ضروریه، مایکروسافت یه دوره 12 هفته ای برای اینترنت اشیاء داره که خیلی خوب همچی رو از پایه توش توضیح داده

microsoft.github.io/IoT-For-Beginners/#/?id=lessons

این نسخه اصلیشه که انگلیسه ولی ایرانی ها یه نسخه ترجمه شده فارسیش هم درست کردن:

github.com/microsoft/IoT-For-Beginners/blob/main/translations/fa/README.md

@Linuxor
Forwarded from TheAliBigdeli Channel
چرا باید solid بدونم و کجا ها استفاده نکنم

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

تو برنامه نویسی هم‌ همینطوره منطق های ساده رو اگر پیچیده کنی داری over-engineering می کنی و بیش از حد سخت و پیچیده میکنیش.

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

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

لینک مرجع:

https://www.linkedin.com/posts/anton-martyniuk_junior-developer-needs-to-know-2-solid-principles-activity-7385925245712482304-JsHw?utm_source=share&utm_medium=member_android&rcm=ACoAACOugCYBHGWYjHpFz9urfiJEDF52-xCSwtE


📢 @thealibigdeli_channel

#tips
اگر سردرگمی دارید که چطور متن های markdown بنویسید، مثل ReadMe برای گیتهاب یا نوت برداری توی obsidian، میتونید از این راهنما استفاده کنید تا متن های مارک‌داون بهتری بنویسید:

docs.github. com



@Rs_tutorial >~ /#Arj
Forwarded from Linuxor ?
امروزه اگه بخواین یه وب اپلیکیشن بالا بیارین، برای اکثر موارد ناچارا مجبور می‌شید NGINX رو یاد بگیرید اما مسیر یادگیری خاصی نداره، یعنی ممکنه کلی چیز یاد بگیرید و بعدا مثلا برید توی یه شرکتی ببینید اونا اصلا دارن یه کار دیگه با NGINX می‌کنن...

این لیست اومده همه مفاهیم NGINX از امنیت بگیر تا پیکربندی و ابزار و کتاب های لازم برای یادگیریش رو جمع کرده رو برای برنامه نویسا و مدیرای سیستم خیلی مفیده‌:

github.com/trimstray/nginx-admins-handbook

@Linuxor
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