Rust for Python developers – Telegram
Rust for Python developers
2.35K subscribers
23 photos
1 video
2 files
87 links
Rust programming language for python developers

یک توسعه دهنده پایتون هستم که سعی میکنم rust یاد بگیرم.
تو این مسیر منابع و نظرات شخصی خودم رو با آیندگان هم به اشتراک میذارم

اگر به هوش مصنوعی و پایتون علاقه دارید به کانال :
@pytens
@pyhints
سر بزنید.
Download Telegram
مدتی هست دارم برای سخت‌افزار یک شرکتی، TUI می‌نویسم و خب Ratatui بهترین گزینه هست توی Rust اما مثال‌های داکیومنت خوبی نداره بنظرم!

دوتای اول خیلی ساده‌اس، مورد سوم هم SoC و ... رو رعایت نکرده

نمی‌دونم وقت بذارم مثال‌های خودشون رو داکیومنتش رو تغییر بدم و استاندارد کنم یا اینکه کلاً کنار پروژه این شرکت یک ابزار TUI دیگه هم بنویسم و منتشر کنم 🤔
16👍1
Rust for Python developers
مدتی هست دارم برای سخت‌افزار یک شرکتی، TUI می‌نویسم و خب Ratatui بهترین گزینه هست توی Rust اما مثال‌های داکیومنت خوبی نداره بنظرم! دوتای اول خیلی ساده‌اس، مورد سوم هم SoC و ... رو رعایت نکرده نمی‌دونم وقت بذارم مثال‌های خودشون رو داکیومنتش رو تغییر بدم…
پروژه شرکت رو تحویل دادم؛
اما بعدش یک ایده به توسعه دهنده شرکت دادم، چندتا چیز بنظرم توی پروژه کم بود که خب کارفرما نخواسته بود.
بعضی موارد رو البته شخصاً اضافه کردم (آدمای خوب رو باید هواشونو داشت.) بعضی موارد هم زمان بیشتری می‌خواست که سپردم به خودشون!

مثلاً:
اینکه کل کد رو async کنند، تکنیکی که ratatui توی کدهای مثالش کم استفاده کرده و بیشتر روش hybrid رو رفته (ما توی این مرحله اصلا به async نیاز نداشتیم) و اکثر موارد multi-thread بود.

دوم نوتیف اضافه کردن؛ اینکه همون داخل ترمینال (مثل nice توی nvim) بجای اینکه وضعیت کار‌ها رو برم بررسی کنم! بتونم alert بذارم (درحد ی فلگ) که خودش بهم نوتیف بده کار انجام شد یا به خطا خورد یا ....

چندتا مورد دیگه هم بود که چون اختصاصی پروژه بود، اینجا گفتنش لازم نیست!

بعد از این دوباره پروژه برگشت بغل خودم، برای توسعه ورژن جدید :)

گفتم اینارم کم کم، به اون مثالی که برای ratatui نوشتم اضافه کنم.
Async - Notification (multi-thread)

بعد که تکمیل شد، بفرستم بالا!
👍154
Rust for Python developers
مدتی هست دارم برای سخت‌افزار یک شرکتی، TUI می‌نویسم و خب Ratatui بهترین گزینه هست توی Rust اما مثال‌های داکیومنت خوبی نداره بنظرم! دوتای اول خیلی ساده‌اس، مورد سوم هم SoC و ... رو رعایت نکرده نمی‌دونم وقت بذارم مثال‌های خودشون رو داکیومنتش رو تغییر بدم…
This media is not supported in your browser
VIEW IN TELEGRAM
امروز فرصت کردم و وقت گذاشتم روی آپدیت آموزش Json Editor مربوط به Ratatui هم یک مقدار استاندارد سازیش کردم هم فیچرهایی که خیلی کاربردی هستند رو بهش اضافه کردم؛ چیزایی که وقتی TUI توسعه می‌دید بهش نیاز خواهید داشت.

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

خروجیش شد این ویدئو؛ که هم async هست هم notification رو داره هم ذخیره در فایل و paste کردن و ...

بعد از رکورد ویدئو متوجه شدم بهتر بود برای نمایش key, value ها برم سراغ قابلیت اسکرول کردن بخصوص اینکه روی پروژه خودم زمان گرفت ازم تا تونستم درست کانفیگش کنم.
توی اولین فرصت در روزهای آینده این مورد رو هم اضافه خواهم کرد و سورس کد رو باهاتون به اشتراک میذارم!
👍115
این متن

It took me nearly 1 year of full-time programming in Rust to become proficient and no longer
have to read the documentation every 5 lines of code


از کتاب
Black hat Rust

بنظرم خیلی درسته؛ حالا که درگیر کد زدن هستم واقعاً متوجه میشم خیلی پیش میاد یک مفهوم رو بفهمی و به راحتی کدهای دیگران رو بخونی و متوجه بشی!
اما اینکه خودت اون کد رو بنویسی و همه چیز درست و تا حد خوبی بهینه و idiomatic باشه خیلی چیز متفاوتی هست، اما

Favor getting things done rather than the perfect design that will never ship. It’s
far better to re-work an imperfect solution than to never ship a perfect system.


خیلی وقتا میزان خطاهایی که میگیرفتم، یا توضیحات clippy و ... باعث می‌شد پنیک کنم و هی تغییرات بیشتر بدم.

If you are fighting with the limits of the language, it may mean that you are doing something wrong. Stop what you are doing, take a break, and think about how you can do things differently.


بعضی وقتا دست کشیدن و فکر کردن مجدد باعث میشه کد بهتری بزنم، خیلی وقتا شده کد رو زدم و بعد از چندتا اجرا و ... برگشتم و refactor کردم و کد خیلی بهتر اجرا شده!
با اینکه کد اول خیلی خفن‌تر هم بوده شاید (چون از بچه‌ها شنیدم) اما ترجیح میدم کدم راحت‌تر خونده و درک بشه تا خفن‌تر بنظر بیاد.

و درنهایت، اگر Error handling رو درست انجام داده باشید unwrap, expect همه جا نداشته باشید توی پروداکشن هیچ موقع کد کرش نمی‌کنه و این خیلی چیز جذابی هست.

چندتا توضیح:
پروژه jsedit استثنا بود چون می‌خواستم بعنوان cookbook نگهش دارم؛ که چیزای پر تکرار توی سخت‌ترین حالتش همیشه دمه دستم باشه.

دلیل خوندن این کتاب هم این نیست که می‌خوام به دنیای امنیت برگردم (گذشته‌ها گذشته) فقط چون کتابی برای optimization پیدا نکردم دارم این کتاب رو می‌خونم.

توی همه‌ی زبان‌های برنامه‌نویسی کتاب‌های مربوط به امنیت و نفوذ و توسعه ابزارهای نفوذ معمولاً کدهای بهینه‌تری دارند.
اینم از من به شما

خلاصه‌ای از نکات مهم.
👍14🔥42
Rust for Python developers
این مصاحبه Jon Gjengset بنظرم جالب بود اگر دوست داشتید ببینید Youtube Video
یک نکته قابل توجهی که می‌گه و تو گروه هم ما راجبش بحث کردیم.
اینه که توی مارکت Rust برنامه‌نویس‌های Junior بیشتر وجود داره (که خب استخدام نشدن هم دلیلش همین هست) اکثر شرکت‌هایی که میرند سمت زبان Rust نیاز به کسی دارند که بیزینس رو خوب بلد باشه یا توی زبان برنامه‌نویسی و ... ایی که قبلا کار کرده Senior باشه و حالا Rust هم بتونه کد بزنه!

برای همین ۹۹٪ شما وقتی می‌گید من دارم Rust میخونم؛ می‌گم: اشتباه می‌کنی.

هیچ شکی نیست که قطعا همه جونیورها هم یک روزی سنیور خواهند شد! ولی اگر توی Python, Go, ... شروع کنید که مارکت همین الان کار برای جونیور داره؛ احتمالا خیلی سریعتر پیشرفت می‌کنید؛ تجربیات مهم رو بدست میارید و سنیور می‌شید!
👍526
برای دوستان پایتون دولوپر:
ابتدا بگم که: باگ روی uv حدودا ۳ هفته قبل پچ شده ولی چون uv ازون پکیج‌های گلوبال هست که خیلی کم اصولا آپدیتش می‌کنیم برای همین راجب اقدام به آپدیتش اطلاع دادم.


احتمالا شما هم این رو دیدید؛ اگر نه گروها و آدم‌های (بی‌سواد) زیادی دارند ازین مورد استفاده می‌کنند برای اینکه بگن Rust امن نیست.

Tarmageddon

مشکل اصلی از crate مربوط به tokio-tar شروع میشه؛ این crate بیش از ۲ سال هست که آپدیت نشده و باگ هم مربوط به یک خطای منطی توی بخش پارس کردن فایل‌های tar هست.

بطور خلاصه؛ مشکل اینه که یک هدر اشتباه رو داره می‌خونه که قدیمی‌تر هست.

خلاصه مسئله هیچ ربطی به Rust نداره و استفاده از Rust فقط برای جلب توجه هست.

پینوشت: تیم astral پچ و آپدیت پکیچ tokio-tar رو هم منتشر کرده البته
astral-tokio-tar
👍173
عالی شد
👍10
"When the bad file with more than 200 features was propagated to our servers, this limit was hit — resulting in the system panicking."
"This resulted in the following panic which in turn resulted in a 5xx error:
thread fl2_worker_thread panicked: called Result::unwrap() on an Err value"



اینو یکی از بچه‌ها توی گروه دیگری فرستاد؛ دیروز نصف اینترنت رسماً قطع شد، چرا ؟ کلودفلیر یک باگ خورده بود.

حالا مشخص شده اون باگ از یک خطای انسانی افتضاح میاد.
داستان اینه؛
یک سرور به محدودیت می‌خوره و از دسترس خارج می‌شه که باعث میشه تمام ریسپانس‌هاش خطای ۵۰۰ باشه؛ اما یک توسعه دهنده بجای اینکه response رو بررسی کنه که آیا ۲۰۰ هست یا نه
فرض کرده چون ما داخل دیتاسنتر هستیم و کلودفلیر هیچوقت غیر از ۲۰۰ نمی‌گیریم.
پس unwrap زده و چون غیر از ۲۰۰ گرفته بوده؛ سیستم ترکیده.

چندتا نکته :
۱- هیچ چیزی رو فرض نکنید، همه چیز رو تست کنید.
من هم توی بعضی کدهام unwrap می‌نویسم؛ اما خیلی وقتا عمدی هست چون واقعاً نمی‌دونم خروجی اون تابع یا ماکرو چطور می‌تونه Error باشه!
می‌نویسم که بیزینس در بیاد.

۲- زبان برنامه‌نویسی Rust فقط امنیت روی مموری بهتون میده؛ قراره نیست براتون نون هم بخره.
نکته جالبتر اینکه؛ AI هم این خطاهارو تشخیص نمی‌ده !!
اینه که همیشه از peer-review استقبال باید بشه.

۳- مورد راحتی مثل خطای 5xx توی http و اینکه حتی این مورد ساده هم تست نشده؛ نشون میده کلودفلیر هم که بری؛ قرار شیت کد ببینی.
پس دوست عزیز حداقل تست بنویس.
👍236
RandRng
Message
این پست خارج از بحث کانال هست ولی چون این اواخر خیلی بهم پیام داده شده
ترجیح دادم بصورت عمومی توی کانال اعلام کنم!

که حداقل خودتون حواستون رو جمع کنید!
20👍3
اگر ۱۱ ساعت وقت دارید و می‌خواید اندازه ۱۰۰ ساعت ازش استفاده کنید برای یادگیری این ویدئو رو از دست ندید.

Youtube Link (Jon Gjengset)

شخصا ۵ ساعت هست نشستم پاش و لذت می‌برم
28
برای یکی از پروژه‌هایی که دارم کار می‌کنم دیتابیسی بیشتر از SQLite نیاز نداریم اما یک سری فیچر‌ها رو هم نیاز داریم که SQLite نداره و نخواهد داشت.

توی جستجو‌هام به Turso رسیدم
و توی سرچ برای بررسی دقیقتر و آموزش به یک ویدئو روی یوتیوب رسیدم؛ و متوجه شدم اون شخصی که توی لینوکس کرنل بهش گفته بودند دیگه هیچوقت دست به کیبورد نزن کی بوده
Youtube Video Timestamp
نکته :
این ابزار فعلا روی بتا هست ولی برای کاری که ما می‌کنیم با توجه به اینکه ساعتی دیتا به دیتابیس اصلی منتقل میشه مشکلی بوجود نمیاد.

این ابزار روی Rust نوشته شده و از زبان‌های برنامه‌نویسی مهم هم پشتیبانی می‌کنه


اگر نمی‌دونید جریان چی هست این پست رو بخونید :
RandRng Channel
19👍2
Forwarded from Python Hints
ممکنه این کانال @pyhints و کانال @pytens و همچنین @pyrust هم ریپورت بشه.

چون با mass report طرف هستیم.
کانال‌ها هم که عمومی هست و برای ریپورت کردن نیازی به عضو شدن نیست.

برنامه‌ای برای جایگزین کردن کانال‌ها بصورت عمومی ندارم؛ اگر فکر می‌کنند با ریپورت کردن کانال‌های من ۴۷ سال دزدی و اختلاس و بی‌کفایتی و ... حل می‌شه
و
مشکلات از بین میره؛ حتماً اینکار رو بکنند.

شاید تلگرام باید یک راهکاری هم می‌ذاشت که کاربرهای کانال هم بتونند نظر یا حمایت شون رو اعلام کنند، بخصوص به وقت mass report با این همه گفتم زودتر اعلام کپینوش


پی‌نوشت‌:
اگر این اتفاق افتاد برای دوستان نزدیک لینک خصوصی خواهم فرستاد.
مثل روزهای اول @pytens و البته خصوصی خواهد بود.
52
Forwarded from RandRng
من این لینک رو گذاشتم:

Github Raw V2Ray All

گفتم که اکثر کانال‌های تلگرامی رو کرال می‌کنه اگر کانفیگی اومده باشه همرو یکجا جمع می‌کنه

اما چون معمولاً ۳۰۰۰ یا بیشتر کانفیگ داره و خیلی از سرورها پشت هم فیلتر میشه حوصله سر برهست که هی بخوایم url تست بزنیم.

کاری که شخصاً می‌کنم برای متصل موندن این هست :

۱- اول داخل گروهی که ایجاد می‌شه، لینک‌هایی Duplicate رو پاک کنید

۲- بعد از اینکه اون موارد پاک شد، درخواست بدید که TCP ping بزنه براتون (سرعت بیشتری داره)
معمولاً سرورهایی که جواب نمیده یا فیلتر شده و قطع کردند یا خاموش هست یا ...

۳- بعد از حذف دو مورد قبلی تعداد کمی می‌مونه حالا با خیال راحت url test بزنید.

نکته مهم حتماً حواستون به ۲ مورد باشه :

۱- برای url test آدرس تست رو به سایتی که براش دنبال vpn می‌گردید تغییر بدید، مثلاً اگر می‌خواهید یوتیوب ببینید باهاش آدرس رو روی یوتیوب بذارید.
بعضی از کانفیگ‌ها برای سایت‌های خاص طراحی شده (مثلاً فقط تلگرام) و اکثر درخواست‌های دیگه رو drop می‌کنه

۲- کانفیگ‌ها رو سعی کنید اگر تونستید با چندتا DNS که توی این مدت خوب جواب داده بهتون تست کنید.


پینوشت:
بد نیست چندین گروه برای همین کانفیگ‌های all نگه دارید.
بعضی از کانال‌ها، بعد از یک مدت خدمات vpn دادند سروری که سرعت بالایی هم شاید داشته رو خاموش می‌کنند که فیلتر نشه.

چیزی که چندین ساعت یا چندروز بهش وصل بودید رو نگهدارید، چون اکثراً بعد از یک مدت دوباره اون سرور رو فعال می‌کنند و اینبار بار سرور هم کمتر هست و سرعتش بهتر خواهد بود.
6👍5
Forwarded from RandRng
یک vpn دوستان معرفی کردند؛ بسیار هم توسط اشخاص دیگه توی اینستاگرام و ... داره معرفی می‌شه.

داستان اینجوری هست که شما برنامه رو روی اپ‌استور یا پلی‌استور دانلود می‌کنی؛ بعد وارد یک ربات تلگرامی به اسم برنامه می‌شی و یک کد بهت می‌ده
با این کد ۶ ماه اکانت پرمیوم رایگان می‌گیری.

اما:
بسیار بسیار اینکار خطرناک هست؛ دلایلش

۱- وقتی با یک ربات کار می‌کنید توی تلگرام اون ربات می‌تونه تمام اطلاعات اکانت شمارو بگیره (عکس، آیدی، کد یونیک و ...)

۲- ربات به شما یک کد اختصاصی می‌ده برای اینکه اکانت شما ۶ ماه دسترسی رایگان بگیره و خب فکر می‌کنم خودتون فهمیدید که با این کد شمارو شناسایی می‌کنه توی اپلیکیشن

پس تا اینجا می‌دونه، شما کی هستید و کجا‌ها میرید با vpn خودتون.

۳- فرض کنیم این vpn داخلی و سهمیه‌ای هم باشه؛ توی اپلیکیشن دیتاهای مربوط به گوشی شمارو بصورت دیفالت میگیره
Device model, model number, ....
که خب بعضی از این‌ها دقیقاً برای شناسایی گوشی شما هست مثل یوزرنیم تلگرام که یونیک هست اینم همونطوری هست‌.

۴- بصورت پیش‌فرض کل اپلیکیشن‌ها رو vpn می‌کنه و دیتاهای diagnostic, analytic برای خودش می‌‌فرسته که یعنی هرچیزی که دلش خواست.

دیدید وقتی سیمکارت دیگری رو توی گوشی می‌ندازید پیام میاد گوشی با این شماره رجیستر نشده یا برای این فرد نیست ؟

حالا همه اینارو بذاریم کنار هم :

۱- من از vpn میفهمم شما کجاها میری با چه پترنی (چقدر آپلود و چقدر دانلود داری) توی چه ساعت‌هایی

۲- اکانت تلگرامت رو هم که برای ۶ ماه رایگان بهم دادی؛ از اون هم می‌تونم کلی چیز پیدا کنم.
مثلاً یوزر نیم مشابه روی توییتر و ...
یا از عکس شما چیزای بیشتر
یا از کانالی که به اکانت وصل هست و ...

۳- مدل نامبر و .... گوشی رو هم که بر میدارم و اگر به دیتابیس ثبت گوشی هم دسترسی داشته باشم؛ دقیقاً می‌دونم کی هستی.
شماره موبایل، کد ملی و .... همه در میاد.



خلاصه خیلی خیلی مراقب باشید،
پنیر مفت تو تله موشه

این کانالای تک اینستاگرام هم ۹۸٪ یک بچه که ۴ تا اصطلاح یادگرفته نشسته بدون هیچ درکی ...شر پشت هم میبافه.

البته اینجا ۹۸-۹۹٪ حرفه‌ای هستید خودتون و متوجه مشکل شدید ولی لطفاً به باقی هم اطلاع بدید که حداقل حواسشون باشه.


کپی این مطلب حتی بدون ذکر منبع هم آزاد هست.
👍208
این روزها که خیلی حوصله توسعه چیزی ندارم برای جلوگیری از اسکرول کردن‌های بی‌نهایت؛ تصمیم گرفتم یکسری گیت‌هاب ها رو بخونم
https://github.com/xai-org/x-algorithm

و گفتم شاید شما هم دوس داشته باشید این مورد رو بخونید؛‌چون کل سورس کد با ۲ تا زبانی که توقع میره اینجا همه بهش آشنا باشید نوشته شده :
Rust + Python
❤‍🔥17👍73