Rust for Python developers
#5min_Rust قبل از اینکه دوپایی بپریم توی معرفی انواع Data type توی Rust یک تفاوت رو بین Rust, Python ببینیم. توی rust بر خلاف python برنامهنویس نمیتونه هر زمانی که دلش خواست توی متغییر مقداری با دیتا تابپ متفاوت بریزه؛ کد زیر توی پایتون درست هست: my_var…
#5min_Rust
از حالتهای دیگهای که میتونید نوع داده رو مشخص کنید استفاده از
در نهایت
رو هم برای دیدن کوچکترین و بزرگترین مقدار اون نوع داده میتونید
از حالتهای دیگهای که میتونید نوع داده رو مشخص کنید استفاده از
_
و البته as
که ممکن توی کدهای دیگران ببیند.در نهایت
std::<TYPE>::MIN
std::<TYPE>::MAX
رو هم برای دیدن کوچکترین و بزرگترین مقدار اون نوع داده میتونید
print
کنید.👍13❤1
توی گروه codecraft همینجوری که دارم تسکها رو تمرین میکنم کدها رو با rust مینویسم و به اشتراک میذارم.
خیلی از مواردی که توی پستهای ۵ دقیقه یادم میره مثال بزنم یا مثال به ذهنم نمیاد توی کدهای اونجا هست (الته کدها بصورت تصویر هست) تا حتی اگر کسی خواست از روی کدها هم تسکها رو انجام بده حداقل مجبور بشه یکبار کد رو بخونه (موقع تایپ)
https://t.iss.one/codecrafter_fa/472
خیلی از مواردی که توی پستهای ۵ دقیقه یادم میره مثال بزنم یا مثال به ذهنم نمیاد توی کدهای اونجا هست (الته کدها بصورت تصویر هست) تا حتی اگر کسی خواست از روی کدها هم تسکها رو انجام بده حداقل مجبور بشه یکبار کد رو بخونه (موقع تایپ)
https://t.iss.one/codecrafter_fa/472
Telegram
M Abbasi in Code Craft (Review)
#Build_your_own_dns_server
#Rust
#Beginner
#task_0-5
HeaderFlags
بجای متد new حالا متد parse داره.
و روی to_be_byte اش هم یک مقدار تغییرات دادم؛ مثلا استفاده از bitwise or برای خوانایی بیشتر.
نکته مهم این بخش این بود که توی to_be_bytes حتما باید QR مقدارش…
#Rust
#Beginner
#task_0-5
HeaderFlags
بجای متد new حالا متد parse داره.
و روی to_be_byte اش هم یک مقدار تغییرات دادم؛ مثلا استفاده از bitwise or برای خوانایی بیشتر.
نکته مهم این بخش این بود که توی to_be_bytes حتما باید QR مقدارش…
👍11
توزیع
مشکل اصلی هم بخاطر، باگهای گزارش شده سر
پرفورمنس از کجا میاد؛ قطعا
توسط پروژه
اطلاع بیشتر :
Link
پ.ن : راستی اگر اینطوری بشه یعنی
زخممون نمیکنند که
اگر این مشکل رو حل میکنه من ۱۰۰٪ پایهام 😂
ubuntu
اعلام کرده میره سراغ پروژه uutils
؛ این پروژه یکی از بزرگترین بازنویسیها توی Rust هست که تمام ابزارهای مهم پروژه GNU
Linux
رو با Rust
بازنویسی میکنه.ls, cd, cp, mv, mkfifo, ....
مشکل اصلی هم بخاطر، باگهای گزارش شده سر
Memory Safety
هست؛ اوبنتو هم این مورد و پرفورمنس رو دلیل این حرکت دونسته.پرفورمنس از کجا میاد؛ قطعا
Rust
به خودی خود از C
سریعتر نیست ولی سختی مالتیترد و مالتی پراسس روی C
باعث شده بسیاری از توسعه دهندههای core utils
سراغ اینکار نروند و خب بارها صحبت این موضوع شده بود که این یک bottleneck
برای خیلی از ابزارهای دیگه که بر اساس core utils
توسعه داده میشوند هست، مشکلی که توی Rust
وجود نداره و با یک جستجو حتی نتایج بنچمارکها روی ابزارهایی که امکان Multi thread / Multi Process
شدن براشون بوده رو میبینید که توی بعضی موارد حتی تا 10x
سریعتر هستند.توسط پروژه
oxidizer
میتونید همین الان اینکار رو بکنید و تست بگیرید ubuntu
با نسخه rust
ابزارها چیکار خواهد کرد.اطلاع بیشتر :
Link
پ.ن : راستی اگر اینطوری بشه یعنی
GNU
از Ubuntu
و بعد از Linux
حذف بشه؛ دیگه اینایی که تازه مدرک کار با ترمینال لینوکس گرفتن زخممون نمیکنند که
Linux
نگو، باید بگی Gnu Linux
اگر این مشکل رو حل میکنه من ۱۰۰٪ پایهام 😂
👍29🤣17😁2
Forwarded from RandRng
Media is too big
VIEW IN TELEGRAM
نوروز مبارک 🌹🎊🎉🎉🎊🎉🌹
امیدوارم سال جدید از سالی که لحظات آخرش هست، بهتر باشه.
پر از خبرای شادی بخش برای ایران و ایرانیان.
سایه آخوند از وطن دور
امیدوارم سال جدید از سالی که لحظات آخرش هست، بهتر باشه.
پر از خبرای شادی بخش برای ایران و ایرانیان.
سایه آخوند از وطن دور
❤🔥25🎉3
شاید شما هم تعجب کردید؛ شایدم نه که موزیلا مدتی قبل یک سری اخراج توی تیمهاش انجام داد (که کم هم نبود) ولی اپلیکیشنهاش توی
دلیلش خیلی تو مخ من بود (فکر میکردم از ابزاری مثل
این قضیه تو مخی من بود تا اینکه متوجه توسعه
ابنطوری منطق رو ۱ بار مینویسه و بعد توی کدهای مختلف
مثال جایی که کاربرد زیادی داره:
یک پروژهای چندین سال قبل داشتم که شامل بیش از ۵۰ تا فرمول ریاضی و بیش از ۲۰ مورد الگوریتم بود تا خروجی درست رو تحویل بده؛ حتما پیش خودتون میگید ببرش ۱ بار روی سرور پیادهسازی کن یک
گزینه خوبی هست ولی نه وقتی مزیت رقابتی کار شما نسبت به باقی
پس مجبور بودیم؛ ۴ بار پیادهسازی کنیم:
۱- تیم تحقیقاتی که دائمی روی پایتون کار میکرد.
۲- تیم
۳- تیم
۴- تیم
خیلی وقتا پیش میومد یک اشتباه توی منطق کار با آرایههای چند بعدی (برای
هیچ وقت یادم نمیره اون روزا مجبور بودم کار با آرایه رو روی
اون زمان اینطوری بودیم که تا مجبور نشدیم؛ الگوریتم جدید رو برای پیادهسازی نفرستیم وقتی رقیبا الگوریتمهاشون به خوبی کار ما میشد اونوقت نسخه جدید میدادیم. اینطوری بود که تیم تحقیق
ios, android, desktop
توی آپدیتهای بعدی به مراتب بهتر و بهتر شد.دلیلش خیلی تو مخ من بود (فکر میکردم از ابزاری مثل
Dioxus
استفاده میکنند؛ که درست در نمیومد چون هنوز تیمهای native
خودشون رو داشتند.این قضیه تو مخی من بود تا اینکه متوجه توسعه
UniFFI
شدم؛ بر اساس خود داکیومنت :UniFFI is currently used extensively by Mozilla in Firefox mobile and desktop browsers; written once in Rust, auto-generated bindings allow that functionality to be called from both Kotlin (for Android apps) and Swift (for iOS apps). It also has a growing community of users shipping various cool things to many users.
ابنطوری منطق رو ۱ بار مینویسه و بعد توی کدهای مختلف
android, ios, desktop
اون رو استفاده میکنند. دیگه مشکلی هم برای استفاده از جدیدترین فیچرهای هر پلتفرم نداره (وقتی ایده خوب و پیادهسازی خوب کنار هم میاد).مثال جایی که کاربرد زیادی داره:
یک پروژهای چندین سال قبل داشتم که شامل بیش از ۵۰ تا فرمول ریاضی و بیش از ۲۰ مورد الگوریتم بود تا خروجی درست رو تحویل بده؛ حتما پیش خودتون میگید ببرش ۱ بار روی سرور پیادهسازی کن یک
endpoint
بده به فرانت تموم بشه بره.گزینه خوبی هست ولی نه وقتی مزیت رقابتی کار شما نسبت به باقی
privacy
دیتای کاربر هست و این محاسبات بطور کامل باید روی دستگاه کاربر باشه؛ غیر از اون حجم دیتاها توی بعضی شرایط بسیار بالا بود که خیلی عاقلانه نبود برای اون دیتاها هم از کاربر بخوایم آپلود انجام بده.پس مجبور بودیم؛ ۴ بار پیادهسازی کنیم:
۱- تیم تحقیقاتی که دائمی روی پایتون کار میکرد.
۲- تیم
C#
که برای ویندوز نرمافزار رو تولید میکرد (دسترسی بالاتر)؛ کاربر ios, android
میتونستند دیتاهاشون رو باهاش به اشتراک بذارند برای همین نیاز بود قابلیت پردازش قویتر هم داشته باشه اگر خواست گزارش جزئی تری بدست بیاره و ....۳- تیم
Swift
که روی نسخه iOS, iPadOS
کار میکرد.۴- تیم
Kotlin
که روی نسخه Android
کار میکرد.خیلی وقتا پیش میومد یک اشتباه توی منطق کار با آرایههای چند بعدی (برای
optimization
باید اینطوری پیادهسازی میشد که بشه از GPU, CPU
همزمان استفاده کرد) باعث میشد یا نتایج نهایی اشتباه بشه یا محاسبات خیلی کند بشه و البته گوشی بیش از حد داغ کنه.هیچ وقت یادم نمیره اون روزا مجبور بودم کار با آرایه رو روی
C#, Js, Kotlin, Swift
یاد بگریم تا ایرادات بچهها رو پیدا کنم؛ کاری که اگر به عقب برگردم حتما یکبارم که شده با این پکیج تستش میکنم.اون زمان اینطوری بودیم که تا مجبور نشدیم؛ الگوریتم جدید رو برای پیادهسازی نفرستیم وقتی رقیبا الگوریتمهاشون به خوبی کار ما میشد اونوقت نسخه جدید میدادیم. اینطوری بود که تیم تحقیق
v70
الگوریتم روی میداد برای پیادهسازی ولی روی اپلیکیشن میشد v5
الگوریتم. خیلی میفهمم چرا یک تیم باید از چنین ابزاری استفاده کنه.👍20❤4
Forwarded from دستاوردهای یادگیری عمیق(InTec)
کاش یک سالی هم بیاد که توش اصلاً لازم نشه بهم #تسلیت بگیم.
اصلاً یادمون بره ی روزی توی این مملکت، آخوندایی که جز خوندن :
احکام ریدن و جهتش و ...
شعور و فهم چیز دیگهای نداشتند، مسئولیت داشتند.
یعنی میشه؟ تا ما زندهایم !
یک سال وقتی تموم میشه، بیام اینجا بزنم:
بچهها دقت کردید، امسال لازم نشد بهم دیگه تسلیت بگیم !!
من واسه اون روز میجنگم.
#بندرعباس
اصلاً یادمون بره ی روزی توی این مملکت، آخوندایی که جز خوندن :
احکام ریدن و جهتش و ...
شعور و فهم چیز دیگهای نداشتند، مسئولیت داشتند.
یعنی میشه؟ تا ما زندهایم !
یک سال وقتی تموم میشه، بیام اینجا بزنم:
بچهها دقت کردید، امسال لازم نشد بهم دیگه تسلیت بگیم !!
من واسه اون روز میجنگم.
#بندرعباس
❤30👍4🎉3
کتاب
اومدم بخونم که توش پیشنهاد داده بود قبلش
Rust web programming
رو بخونم که توسط همین نویسنده منتشر شده (توی لیست کتابهایی که اکر وقت کنم میخونم، نگهش داشته بودم)
تا اینکه شروع کردم توی اوقات کانفیگ سرور و ... خوندن؛ خوشحالم که این کتاب رو قبل از Async Rust دارم میخونم.
واقعاً جذاب هست؛ هر دو کتاب این نویسنده رو پیشنهاد میکنم حتماً بخونید.
پ.ن:
برای آموزشهای ۵ دقیقهای، فراموش نکردم فقط این روزها بسیار بسیار زمانبندی فشردهای دارم. سرور و داوپس و شبکه و برنامهنویسی و هوش مصنوعی و ... همرو دارم انجام میدم 🤦
قطعاً کمی شرایط بهتر بشه، ادامه خواهم داد.
async rust
منتشر شده.اومدم بخونم که توش پیشنهاد داده بود قبلش
Rust web programming
رو بخونم که توسط همین نویسنده منتشر شده (توی لیست کتابهایی که اکر وقت کنم میخونم، نگهش داشته بودم)
تا اینکه شروع کردم توی اوقات کانفیگ سرور و ... خوندن؛ خوشحالم که این کتاب رو قبل از Async Rust دارم میخونم.
واقعاً جذاب هست؛ هر دو کتاب این نویسنده رو پیشنهاد میکنم حتماً بخونید.
پ.ن:
برای آموزشهای ۵ دقیقهای، فراموش نکردم فقط این روزها بسیار بسیار زمانبندی فشردهای دارم. سرور و داوپس و شبکه و برنامهنویسی و هوش مصنوعی و ... همرو دارم انجام میدم 🤦
قطعاً کمی شرایط بهتر بشه، ادامه خواهم داد.
🔥27👍9
Forwarded from RandRng
#تجربه
از تجربیات دوستان :
من عیناً متن رو گذاشتم، ایشون از من راهنمایی خواسته؛ اما چندتا چیز دیگه که توی صحبت مشخص شد :
۱- تسک براشون ایمیل نشده؛ یک اکانت تلگرام براشون فرستاده
۲- طرف حتی خودشم معرفی نکرده، فقط راجب یک نفر که اونجا وجود نداشته صحبت کرده (اسم برده و ...)
حالا تحلیل من :
قبلاً گفتم بازم میگم، تسک فرستادن هم حتی کار درستی نیست، مصاحبه کننده در ۲ حالت به شما تسک میده :
۱- سواد نداره شمارو ارزیابی کنه؛ ۹۹٪ مواقع.
۲- شما شدیداً استرس و ... دارید و نمیتونید توانایی خودتون رو نشون بدید ولی مصاحبه کننده حس میکنه توانایی و سوادش رو دارید و بهتون یک شانس میده؛ ۱٪ مواقع.
مورد سوم هم تیمهایی هست که یک بخش پروژهاش رو میده سنیور بزنه، که خداروشکر سنیورها دیگه تسک قبول نمیکنند.
حالا فرض کنیم که این مورد درست؛ چرا برای ارسال تسک ... از ایمیل رسمی شرکت استفاده نشده ؟ ایمیل رسمی با اسم و اطلاعات ارسال کننده با متن و موضوع دقیق که این تسک برای استخدام هست، حتی تیمهای استارتاپی هم یک ایمیل (دامنه رسمی ندارند) ارسال میکنند و بعد با شمارهی شرکت پیامک میدند که تسک مصاحبه شرکت فلان برای شما ارسال گردید.
اینکه طرف خودش رو هم معرفی نکرده، چیز عجیبی نیست ولی کنار باقی موارد خیلی عجیب میشه.
موضوع بعدی، چرا نباید بعد از انجام تسک؛ با نیرو قرارداد بسته بشه ؟ توی قانون ما حتی قرارداد موقت و برای ارزیابی هم داریم که نیازی به پرداخت بیمه و مالیات و ... هم نداره
قرارداد ۳ ماهه هم هست و حتی میشه ۱۵ روز بعد هم کنسل کرد قرارداد رو.
درنهایت من به ایشون گفتم :
نه تسک رو انجام بده، نه سراغ پروژه بره؛ این بسیار بسیار شبیه به اون شرکتها و قراردادهایی هست که افراد توی لینکدین میزنند پولشون رو پرداخت نکرده و ...
همیشه گفتم بازم میگم؛
مجانی واسه هیچکس کار نکنید.
قرارداد رسمی و دقیق ببندید و دقت هم بکنید، که واسه پولتون التماس نکنید.
از تجربیات دوستان :
قبل من یکی تو بود
بعدش من رفتم و مکالمه اونارو هم قبلش شنیده بودم.
خیلی از رزومه خوشش اومده بود و شروع کرد از یکی از نیروهاش که تو تیمشه هی تعریف کردن ولی
گفت یه تسک میدیدم ما خیلی راحتم هست ببینیم چجوری انجام میدین ۱۶ ساعت زمان دارین، همونجا هم گفت و راحت بود.
نکته بعدی اینکه دورکاری هستن کل تیمش.
بعد گفت یه پروژه انجام میدید و بعد از اون قرارداد میبندیم.
در نهایت گفت از لحاظ مالی مساله ای نیست و اگر بخواید بیمه و ... هم رد میشه؛ ازین حرفا که ما دنبال آدم درست هستیم که هم فنی و هم اخلاقی بتونیم کار کنیم.
زمینه های کاری هم ویژن و هم ان ال پی بود.
اینکه ریموت هست هم منو خوشحال میکنه
ولی اینکه شفاف نیست این قسمتش و اینکه راجب حقوق هیچی نگفت عجیبه
من عیناً متن رو گذاشتم، ایشون از من راهنمایی خواسته؛ اما چندتا چیز دیگه که توی صحبت مشخص شد :
۱- تسک براشون ایمیل نشده؛ یک اکانت تلگرام براشون فرستاده
۲- طرف حتی خودشم معرفی نکرده، فقط راجب یک نفر که اونجا وجود نداشته صحبت کرده (اسم برده و ...)
حالا تحلیل من :
قبلاً گفتم بازم میگم، تسک فرستادن هم حتی کار درستی نیست، مصاحبه کننده در ۲ حالت به شما تسک میده :
۱- سواد نداره شمارو ارزیابی کنه؛ ۹۹٪ مواقع.
۲- شما شدیداً استرس و ... دارید و نمیتونید توانایی خودتون رو نشون بدید ولی مصاحبه کننده حس میکنه توانایی و سوادش رو دارید و بهتون یک شانس میده؛ ۱٪ مواقع.
مورد سوم هم تیمهایی هست که یک بخش پروژهاش رو میده سنیور بزنه، که خداروشکر سنیورها دیگه تسک قبول نمیکنند.
حالا فرض کنیم که این مورد درست؛ چرا برای ارسال تسک ... از ایمیل رسمی شرکت استفاده نشده ؟ ایمیل رسمی با اسم و اطلاعات ارسال کننده با متن و موضوع دقیق که این تسک برای استخدام هست، حتی تیمهای استارتاپی هم یک ایمیل (دامنه رسمی ندارند) ارسال میکنند و بعد با شمارهی شرکت پیامک میدند که تسک مصاحبه شرکت فلان برای شما ارسال گردید.
اینکه طرف خودش رو هم معرفی نکرده، چیز عجیبی نیست ولی کنار باقی موارد خیلی عجیب میشه.
موضوع بعدی، چرا نباید بعد از انجام تسک؛ با نیرو قرارداد بسته بشه ؟ توی قانون ما حتی قرارداد موقت و برای ارزیابی هم داریم که نیازی به پرداخت بیمه و مالیات و ... هم نداره
قرارداد ۳ ماهه هم هست و حتی میشه ۱۵ روز بعد هم کنسل کرد قرارداد رو.
درنهایت من به ایشون گفتم :
نه تسک رو انجام بده، نه سراغ پروژه بره؛ این بسیار بسیار شبیه به اون شرکتها و قراردادهایی هست که افراد توی لینکدین میزنند پولشون رو پرداخت نکرده و ...
همیشه گفتم بازم میگم؛
مجانی واسه هیچکس کار نکنید.
قرارداد رسمی و دقیق ببندید و دقت هم بکنید، که واسه پولتون التماس نکنید.
👍14❤🔥4❤2
#5min_Rust
توی این آموزشها فرض بر این بوده که شما پایتون رو بلد هستید (یا با زبان دیگری کد زدید).
یادم نیست توی صحبتهای قبلی راجب نوع داده
راجب
and:
تا اینجا همه نوع دادههایی که دیدیم
اما نوع دیگری هم داریم به اسم
برای شروع بحث راجب این نوع بهترین گزینه بنظرم همون
https://t.iss.one/pyHints/64
آرایهها چندتا محدودیت دارند که مهمترین اونها :
۱- تمام عناصر داخلشون باید از یک نوع باشه؛ مثلا همگی
۲- طول آرایه باید از قبل کاملا مشخص باشه.
همین دو مورد برای بهینه بودن آرایهها کفایت میکنه. (بیشتر توضیح نمیدم اگر لازم بودیم میتونید بپرسید که دقیفتر توی پایتون توضیح بدم)
اما برگردیم به
توی این مثال چون من درجا دارم مقدار هم به متغییر (لیبل) میدم نیازی نبود که نوع دادهاش رو مشخص کنم؛ البته که یادمون هست بصورت دیفالت برای اعداد
برگردیم به صحبت راجب
در نهایت اگر قرار نیست آرایه رو در لحظه تعریف کردن مقدار دهی کنید حتما حتما باید نوع دادهای که قرار هست داخلش بریزید و تعداد اون رو براش مشخص کنید.
چندتا نکته :
اندیسها توی rust هم از 0 شروع میشه
مقدار دیفالت دادن توی مثال رو میبینید:
که به کاماپلر میگه یک آرایه از شامل ۵ تا
درنهایت اگر بخوایم یک عنصر از آرایه رو تغییر بدیم؛ حتما باید اون رو
توی این آموزشها فرض بر این بوده که شما پایتون رو بلد هستید (یا با زبان دیگری کد زدید).
یادم نیست توی صحبتهای قبلی راجب نوع داده
char
صحبت کردم یا نه؛ این نوع داده فقط ۱ عنصر داره (scalar type
) و با '
هم نمایش داده میشه.راجب
boolean
هم که صحبتی نیست؛ فقط چندتا نکته and:
&&
, or: ||
, not: !
تا اینجا همه نوع دادههایی که دیدیم
scalar type
بودن (شامل یک مقدار میشن) مثلا برای int32
شما فقط یک مقدار میتونی مشخص کنی (نمیتونی بیش از ۱ عدد به یک متغیر از نوع int32
بگی که برات نگهداری کنه در لحظه)اما نوع دیگری هم داریم به اسم
compound type
توی پایتون list, tuple, array , ...
رو یادتون بیاد که در لحظه میتونند چندین مقدار رو نگهداری کنند.برای شروع بحث راجب این نوع بهترین گزینه بنظرم همون
array
هست (بله دوستان توی پایتون list
همون array
نیست؛ یک ماژول جدایی داریم برای این منظور و این اشتباه مدرسین و کتابها هست که لیست رو آرایه معرفی میکنند)https://t.iss.one/pyHints/64
آرایهها چندتا محدودیت دارند که مهمترین اونها :
۱- تمام عناصر داخلشون باید از یک نوع باشه؛ مثلا همگی
int32
(دیگه حق ندارید توش int8
بریزید)۲- طول آرایه باید از قبل کاملا مشخص باشه.
همین دو مورد برای بهینه بودن آرایهها کفایت میکنه. (بیشتر توضیح نمیدم اگر لازم بودیم میتونید بپرسید که دقیفتر توی پایتون توضیح بدم)
اما برگردیم به
Rust
و ببینیم چطوری باید با array
کار کنیم.fn main() {
let numbers: [i8; 5] = [0, 2, 25, 7, 9];
}
توی این مثال چون من درجا دارم مقدار هم به متغییر (لیبل) میدم نیازی نبود که نوع دادهاش رو مشخص کنم؛ البته که یادمون هست بصورت دیفالت برای اعداد
int
کامپایلر نوع داده i32
رو بر میداره و من نوع داده رو خودم i8
گذاشتم اما مقدار دوم 5
مربوط میشه به تعداد عناصری که این آرایه میتونه داشته باشه.برگردیم به صحبت راجب
stack, heap
؛ چون نوع داده و تعدادش رو میدونیم پس آرایه numbers
من جاش توی stack
هست.در نهایت اگر قرار نیست آرایه رو در لحظه تعریف کردن مقدار دهی کنید حتما حتما باید نوع دادهای که قرار هست داخلش بریزید و تعداد اون رو براش مشخص کنید.
fn main() {
let mut tg_ids: [&str; 5] = [""; 5];
tg_ids[0] = "@pyrust";
println!("The first telegram channel is: {}", tg_ids[0]);
}
چندتا نکته :
اندیسها توی rust هم از 0 شروع میشه
مقدار دیفالت دادن توی مثال رو میبینید:
[""; 5]
که به کاماپلر میگه یک آرایه از شامل ۵ تا
""
بسازهدرنهایت اگر بخوایم یک عنصر از آرایه رو تغییر بدیم؛ حتما باید اون رو
mut
کنیم ولی تعداد عناصر رو نمیتونیم تغییر بدیم.Telegram
Python Hints
همونطوری که گفتم توی پایتون
list, array
۲ تا موضوع متفاوت از هم هست.
کار با لیست بخاطر خاصیت داینامیک بودن (هم از نظر سایز و حافظه و هم نوع دادهای) راحت تر هست اما همین دو ویژگی توی لیست باعث سرباز زیادی میشه
تصویر بالا مربوط به میزان مصرف حافظه
Array…
list, array
۲ تا موضوع متفاوت از هم هست.
کار با لیست بخاطر خاصیت داینامیک بودن (هم از نظر سایز و حافظه و هم نوع دادهای) راحت تر هست اما همین دو ویژگی توی لیست باعث سرباز زیادی میشه
تصویر بالا مربوط به میزان مصرف حافظه
Array…
👍11❤1
تقریباً
شب قبل داشتم با یکی از دوستان صحبت میکردم که بسیار درگیر یادگیری و درک مطالب شده؛ مطالبی مثل :
و دنبال
شرایط رو برای ایشون توضیح دادم؛ گفتم اینجا هم بگم:
دوستان وضعیت یادگیری من رو با خودتون مقایسه نکنید، چرا ؟
من بیشترین میزان کاری که انجام میدم
باقی موارد خرج این میشه که آیا منطق کد درست هست و ...
برای من یادگیری و درک این مفاهیم اجبار هست؛ چون ممکنه کسی که کدهاش رو میخونم از تمام این موارد استفاده کرده باشه.
اما اگر شما از یک زبان سطح بالا؛ مثلاً پایتون، جاوااسکریپت یا .... اومدید و دارید
پیشنهاد و راهکار:
مباحث مقدماتی رو یاد بگیرید؛ جوری که بتونید کدهای عادی رو بزنید.
بعد سعی کنید روی همون کدها
توی مسیر که دارید بیشتر و بیشتر پروژه میزنید جاهایی پیش میاد که مزیت نوشتن macro, async, .... رو درک میکنید اگر این اتفاق افتاد بعد شروع کنید به درک دقیق اون مبحث.
توجه کنید؛ همهی افرادی که توی این کانال هستند قرار نیست دیتابیس بنویسند یا کرنل لینوکس، خیلی از مباحث عمیق شدن توش برای اون افراد هست.
همچنین اون افراد قرار نیست بهینه کردن تعداد درخواست به وبسرور رو انجام بدند و ....
میخوام بگم؛ اونقدری یاد بگیرید که خطرناک باشید نه تو همه زمینهها بلکه توی کار خودتون.
اجازه بدید زمان و تمرین، خیلی مباحث رو براتون آسونتر کنه.
roadmap
یادگیری من روی Rust
مشخص هست و اکثراً هم میدونید.شب قبل داشتم با یکی از دوستان صحبت میکردم که بسیار درگیر یادگیری و درک مطالب شده؛ مطالبی مثل :
Error Handling, Traits, Async, ...
و دنبال
best practices
هرکدوم هست؛ لنظر خودش یادگیری انجام نشده مگر با درک همه این موارد پس پروژهای رو شروع نمیکنه.شرایط رو برای ایشون توضیح دادم؛ گفتم اینجا هم بگم:
دوستان وضعیت یادگیری من رو با خودتون مقایسه نکنید، چرا ؟
من بیشترین میزان کاری که انجام میدم
code review
هست؛ چیزی بالغ بر ۸۰٪ وقتم روی این قضیه میره باقی موارد خرج این میشه که آیا منطق کد درست هست و ...
برای من یادگیری و درک این مفاهیم اجبار هست؛ چون ممکنه کسی که کدهاش رو میخونم از تمام این موارد استفاده کرده باشه.
اما اگر شما از یک زبان سطح بالا؛ مثلاً پایتون، جاوااسکریپت یا .... اومدید و دارید
Rust
رو یاد میگیرید، اینکه همون اول میخواید همه چیز رو بفهمید و بعد پروژه زدن رو شروع کنید ممکن هست اوضاع رو براتون وخیم کنه.پیشنهاد و راهکار:
مباحث مقدماتی رو یاد بگیرید؛ جوری که بتونید کدهای عادی رو بزنید.
بعد سعی کنید روی همون کدها
best practice
ها رو رعایت کنید و کدها رو تمیز کنید.توی مسیر که دارید بیشتر و بیشتر پروژه میزنید جاهایی پیش میاد که مزیت نوشتن macro, async, .... رو درک میکنید اگر این اتفاق افتاد بعد شروع کنید به درک دقیق اون مبحث.
توجه کنید؛ همهی افرادی که توی این کانال هستند قرار نیست دیتابیس بنویسند یا کرنل لینوکس، خیلی از مباحث عمیق شدن توش برای اون افراد هست.
همچنین اون افراد قرار نیست بهینه کردن تعداد درخواست به وبسرور رو انجام بدند و ....
میخوام بگم؛ اونقدری یاد بگیرید که خطرناک باشید نه تو همه زمینهها بلکه توی کار خودتون.
اجازه بدید زمان و تمرین، خیلی مباحث رو براتون آسونتر کنه.
👍24❤9
Forwarded from Python Hints
تعجب کردید چطوری جنگندههای اسرائیلی به آسمان مشهد رسیدند ؟
من نکردم؛ چون آسمان بیصاحاب شد وقتی سپهبد #نادر_جهانبانی رو برای حفظ حریم هوایی به ناحق کشتید.
حتی موقعی که کشتیدش هم لباس خدمت به وطن رو از تنش در نیاورد ♥️💔
من نکردم؛ چون آسمان بیصاحاب شد وقتی سپهبد #نادر_جهانبانی رو برای حفظ حریم هوایی به ناحق کشتید.
حتی موقعی که کشتیدش هم لباس خدمت به وطن رو از تنش در نیاورد ♥️💔
❤48❤🔥1👍1
Forwarded from Python Hints
#ایران
وقتی این روزها رو پشت سر گذاشتیم جون مادرتون چندتا کار رو انجام بدید :
۱- از روسیه فاصله بگیرید؛ به جرم جاسوسی بگیرید هرکی که اسم روسیه رو آورد.
نه سوخو داریم
نه s300-s400
نه حمایت
فقط پول رو خرجش کردیم؛ کشوری که پاره شدیم گفتیم تو تاریخ همیشه نامرد بوده برای ما.
۲- مهاجرین غیرقانونی رو اخراج کنید؛ جرم انگاری سنگین بذارید برای ورودهای غیرقانونی.
با خانواده اخراجشون کنید؛ اینکه فقط مرداشون رو اخراج کنید دوای درد نیست.
۳- تریبون رو از رائفیپورها بگیرید؛ بوالله که اگر اینها جاسوس نباشند دوست نیستند.
خریت اینها مملکت رو به این روز انداخت؛ نذاشتند با دنیا تعامل کنیم.
نذاشتند بخش نظامی تقویت بشه؛ انقدر که با جفنگیات خواستند جلوی بمب و موشک و ... رو بگیرند.
من هنوز هم باور ندارم که اینها انقدر احمق باشند؛ تنها موردی که به ذهنم میرسه جاسوس بودن هست.
نمیدونم چی بگم دیگه ...
به امید روزای روشن برای ایران عزیزم ♥️
وقتی این روزها رو پشت سر گذاشتیم جون مادرتون چندتا کار رو انجام بدید :
۱- از روسیه فاصله بگیرید؛ به جرم جاسوسی بگیرید هرکی که اسم روسیه رو آورد.
نه سوخو داریم
نه s300-s400
نه حمایت
فقط پول رو خرجش کردیم؛ کشوری که پاره شدیم گفتیم تو تاریخ همیشه نامرد بوده برای ما.
۲- مهاجرین غیرقانونی رو اخراج کنید؛ جرم انگاری سنگین بذارید برای ورودهای غیرقانونی.
با خانواده اخراجشون کنید؛ اینکه فقط مرداشون رو اخراج کنید دوای درد نیست.
۳- تریبون رو از رائفیپورها بگیرید؛ بوالله که اگر اینها جاسوس نباشند دوست نیستند.
خریت اینها مملکت رو به این روز انداخت؛ نذاشتند با دنیا تعامل کنیم.
نذاشتند بخش نظامی تقویت بشه؛ انقدر که با جفنگیات خواستند جلوی بمب و موشک و ... رو بگیرند.
من هنوز هم باور ندارم که اینها انقدر احمق باشند؛ تنها موردی که به ذهنم میرسه جاسوس بودن هست.
نمیدونم چی بگم دیگه ...
به امید روزای روشن برای ایران عزیزم ♥️
👍35❤18❤🔥2🔥2
Forwarded from Python Hints
و تمام!!!!
اعلام آتشبس توسط هر دو طرف.
آپدیت :
عجب خر تو خری شد؛
عراقچی؛ از ۴ صبح آتش بس میتونه صورت بگیره.
اسرائیل میزنه تا آخرین ثانیهها
سپاه؛ خب ماهم با چندتا موشک جواب میدیم چون ثانیههای آخر سنگین زده
اسرائیل؛ اینارو رهگیری میکنیم، میگیم به اهداف جنگ رسیدیم و تمام.
خبرگزاریهای آمریکا؛ ونس، ویتکاف، روبیو با مقامات ایران مذاکره مستقیم و غیرمستقیم داشتند.
ترامپ؛ چندتا پست درمورد صلح:
بخصوص، صلح با زور
همه چیز بنظر صلح میاد؛
سپاه، دوباره شلیک ۱ موشک به سمت حیفا.
مثل اینکه آتش بس پذیرفته نشده.
بنظر میاد؛ ترامپ هم پستهاش راجب صلح رو پاک کرده (کندی اینترنت اجازه بررسی به بنده نداد)
اعلام آتشبس توسط هر دو طرف.
آپدیت :
عجب خر تو خری شد؛
عراقچی؛ از ۴ صبح آتش بس میتونه صورت بگیره.
اسرائیل میزنه تا آخرین ثانیهها
سپاه؛ خب ماهم با چندتا موشک جواب میدیم چون ثانیههای آخر سنگین زده
اسرائیل؛ اینارو رهگیری میکنیم، میگیم به اهداف جنگ رسیدیم و تمام.
خبرگزاریهای آمریکا؛ ونس، ویتکاف، روبیو با مقامات ایران مذاکره مستقیم و غیرمستقیم داشتند.
ترامپ؛ چندتا پست درمورد صلح:
بخصوص، صلح با زور
همه چیز بنظر صلح میاد؛
سپاه، دوباره شلیک ۱ موشک به سمت حیفا.
مثل اینکه آتش بس پذیرفته نشده.
بنظر میاد؛ ترامپ هم پستهاش راجب صلح رو پاک کرده (کندی اینترنت اجازه بررسی به بنده نداد)
واقعاً خاورمیانه از فیلم ترکی و فیلم هندی هم غیرقابل پیشبینی تر هست
👍8
#5min_Rust
توی مبحث
اما نوع
توی مبحث مربوط به توابع راجبش دقیقتر صبحت میکنیم؛ نکته بعدی اینکه این مورد هم مثل
یکی از استفادههای خوبی که از
چون توی این مثال از
توی مبحث
compound type
نوع بعدی که بهش میرسیم مربوط هست به tuple
مثل پایتون اینجا هم tuple
میتونه چندین نوع متفاوت داده رو داخل خودش نگهداری کنه (بر خلاف آرایهها که همهی داده ها باید از یک نوع باشند)اما نوع
tuple
توی Rust
واقعا توسط ()
مشخص و ایجاد میشه؛ یادآوری کنم اگر یک tuple
خالی داشته باشیم مثل: ()
اصطلاحا توی Rust
بهش میگیم unit type
و بصورت دیفالت چیزی هست که function
هایی که return
ندارند برمیگردونه (مثل main
) توی مبحث مربوط به توابع راجبش دقیقتر صبحت میکنیم؛ نکته بعدی اینکه این مورد هم مثل
array,vector
چیزی به اسم display trait
رو نداره و برای پرینت کردنش باید از debug trait
استفاده کنید.( توی پستهای بعدی به این مباحث اشاره میکنم؛ لطفا الان درگیرش نشید)یکی از استفادههای خوبی که از
tuple
میشه برای نگهداری دیتاهای مربوط به دیتابیس هست؛ نوع داده هر ستون - تعداد ستونها مشخص هست ولی لزوما نوع داده هر ستون یکسان نیست. fn main() {
let dog = ("Rex", 2, "Alex", 100);
// this line will return error as the tuple doesn't implement display trait --> don't use: {}
// println!("{dog}");
// Printing Tuple
// // using the debug macro is easier (also it will send result to stderr)
// dbg!(dog);
// // this is how we use debug trait for print --> use :?
// println!("Dog tuple ==> {dog:?}");
// // this is how we can pretty print the debug trait result --> use :#?
// println!("Dog tuple (pretty printed) ==> {dog:#?}");
// Working with Tuple Data
println!("1) {} has a dog named {}, who is {} years old, and his health score is {}.",
dog.2, dog.0, dog.1, dog.3);
// Tuple Destructuring
let (name, age, owner, health) = dog;
// use number to reposition the data for printing.
println!("2) {2} has a dog named {0}, who is {1} years old, and his health score is {3}.",
name, age, owner, health);
}
چون توی این مثال از
dbg!
استفاده کردم خیلی سریع و ساده بگم؛ که به توابعی که انتهای اسم اونها از !
استفاده میشه اصطلاحا توی Rust
ماکرو گفته میشه؛ و نکته مهمش اینه که بدون در زمان کامپایل با کدهای دیگری جایگزین میشه. (فعلا همین تعریف کفایت میکنه تا وقتی که خودمون macro
توسعه بدیم)❤8👍2
این روزها شلوغ میگذره؛ بسیار شلوغ!
و چون غیر از ۱ پروژه که روتین شده؛ خیلی به کد زدن
این کتاب رو برای کسایی که میخوان تازه
کتاب خوبی هست.
و چون غیر از ۱ پروژه که روتین شده؛ خیلی به کد زدن
Rust
نمیرسم دنبال یک کتابی بودم که مثل Référence
و آموزش سریع باشه.این کتاب رو برای کسایی که میخوان تازه
Rust
رو شروع کنند پیشنهاد نمیکنم، اما اگر دنبال یک Cookbook
هستید که خیلی سریع مفاهیم مختلف رو دوباره مرور کنید.کتاب خوبی هست.
Ultimate Rust for Systems Programming
🔥16👍8❤2