پاسخ من به یک سوال در مورد
——————————————————————————————
توی این داکرفایل من اول اومدم از یک ایمیج کامل
یک توی خط ۴ دارم پکیجهای دیگهای که برای کامپایل سریعتر نیاز دارم رو نصب میکنم؛ نکته مهم هم همینجاس من اینها رو فقط برای کامپایل نیاز دارم و نه برای اجرای کد نهایی
توی خط ۵
پس خط ۶ رو دارم که یک
اگر سورس کد من ی خط تغییر کرد ولی
همینجا اضافه کنم ی
خط ۸ و ۹ پروژه خودم رو کپی و کامپایل میکنم.
توی خط ۱۲ دارم از یک ایمیج دیگه استفاده میکنم که اصلا
خط ۱۴ تا ۱۸ پکیجهایی که این ایمیج نداره و نیاز دارم رو نصب میکنم مثل
در نهایت از مرحله قبل نتیجه
حجم نهایی کانتینر پروژه روی
اضافه کنم :
راجب
پ.ن :
سورس توی کامنت؛ اگر نمیتونید فونت رو بخونید.
multi-stage dockerfile که توی گروه بحث آزادمون شده بود دیدم روی rust دارم مثال میزنم گفتم اینجا هم بذارم.——————————————————————————————
توی این داکرفایل من اول اومدم از یک ایمیج کامل
rust استفاده کردم برای بخش اول اسم این بخش رو گذاشتم builder؛ این ایمیج شامل همه چیزهایی که من لازم دارم هست مثل یک لینوکس دبیان کامل و اگر سایزش رو هم ببینید بصورت خام 1.47 GB هست.یک توی خط ۴ دارم پکیجهای دیگهای که برای کامپایل سریعتر نیاز دارم رو نصب میکنم؛ نکته مهم هم همینجاس من اینها رو فقط برای کامپایل نیاز دارم و نه برای اجرای کد نهایی
توی خط ۵
Cargo.toml, Cargo.lock رو کپی میکنم که dependency هارو داشته باشم ولی Rust مثل python نیست؛ یعنی نمیشه بدون داشتن سورس کد dependency هارو دانلود کرد و cache کرد یا بگی روی این environment نصبش کن و ...پس خط ۶ رو دارم که یک
main.rs خالی میسازم برای اینکه بتونم dependency هارو بگیرم و cache کنم مراحل رو ایده هم اینه :اگر سورس کد من ی خط تغییر کرد ولی
dependency عوض نشد نباید مجبور بشم dependency هارو مجدد دانلود کنم و ...همینجا اضافه کنم ی
crate داریم به اسم cargo chef که برای همین کار هست؛ من تا جایی که مجبور نباشم ازش استفاده نمیکنم که یک dependency کمتر برای داکر داشته باشم.خط ۸ و ۹ پروژه خودم رو کپی و کامپایل میکنم.
توی خط ۱۲ دارم از یک ایمیج دیگه استفاده میکنم که اصلا
rust, rustc, cargo , ... رو هم نداره و image مرحله قبل بر پایه این هست حجم این ایمیج فقط و فقط 75MB هست.خط ۱۴ تا ۱۸ پکیجهایی که این ایمیج نداره و نیاز دارم رو نصب میکنم مثل
openssl, ca-certificates اینم برای دسترسی به سرویس دیتابیس هست چون روی یک سرور دیگه هست.در نهایت از مرحله قبل نتیجه
compile رو بر میدارم + .env پروژه و پروژه رو اجرا میکنم حجم نهایی کانتینر پروژه روی
200MB هست درحالی که اگر از multi-stage استفاده نمیکردم و میخواستم روی ایمیج 1.47GB اجراش کنم حجمش به بیش از 3GB میرسید و با هر تغییر توی کدهام باید حتی منتظر دانلود شدم پکیجها و .. هم میموندم.اضافه کنم :
راجب
cargo-chef هم مزیتش رو نمیفهمم (بنظرم یک bottleneck و یک نگرانی اضافه هست) قطعا یک discussion جدید میسازم روی rust community ببینم مزیتش چیه.پ.ن :
سورس توی کامنت؛ اگر نمیتونید فونت رو بخونید.
👍11❤2
Rust for Python developers
پاسخ من به یک سوال در مورد multi-stage dockerfile که توی گروه بحث آزادمون شده بود دیدم روی rust دارم مثال میزنم گفتم اینجا هم بذارم. —————————————————————————————— توی این داکرفایل من اول اومدم از یک ایمیج کامل rust استفاده کردم برای بخش اول اسم این بخش…
یک چندتا ادیت روی این مورد بدم؛ همونطور که گفتم من تازه داشتم اینجا داکرفایل رو برای پروژهام مینوشتم که توی گروه یکی از دوستان سوال پرسید و ترجیح دادم روی نمونه جواب بدم.
اینکه این
اما چندتا نکته (بر خلاف دنیای پایتون) :
۱- استفاده از اسم
۲- از
۲-۱: توی کد بالا من
۲-۲: توی همون شرایط و
۳- بجای استفاده از اداکر ایمیجهای معرفی شده توسط پروژه
۴- وقتی
۵- خیلی بهتره موقع استفاده از
—bin <appname>
استفاده کنم
نهایتا شد این :
اینکه این
dockerfile درست هست خوبه یا نه هدف نبود و هدف درک multi-stage بود.اما چندتا نکته (بر خلاف دنیای پایتون) :
۱- استفاده از اسم
src قطعا اینجا مناسب نیست؛ من حواسم نبود ولی cargo, rustc رو این اسم حساب میکنند پس app رو جایگزین کردم ۲- از
cargo-chef استفاده کردم به ۲ دلیل :۲-۱: توی کد بالا من
compile انجام نمیدادم و فقط پکیجهارو دانلود میکردم؛ قصدم این بود توی استپ بعدی سراغش برم ولی خب توی بعضی شرایط خاص دردسرش زیاد میشه که الان فرصتش رو نداشتم.۲-۲: توی همون شرایط و
crate های خاص (که اتفاقا یکی از دوستان توی پروژهاش بهم نشون داد) باعث میشه قابلیت cache رو از دست بدید؛ دلیل اصلیش رو نمیدونم.۳- بجای استفاده از اداکر ایمیجهای معرفی شده توسط پروژه
cargo-chef از همون rust:1.82.0 استفاده کردم و فقط یک استیج بیشتر ساختم که دستورات زیر رو داشته باشه :RUN apt update && apt install lld clang -y && cargo install cargo-chef
۴- وقتی
sqlx رو توی پروژه دارم؛ توی استیج runtime حتما باید sqlx migrate runtime رو اجرا کنم. (برایحجم کمتر این مورد رو با migrate macro اجرا کردم.۵- خیلی بهتره موقع استفاده از
cargo build —release توی استیج builder باید از فلگ:—bin <appname>
استفاده کنم
نهایتا شد این :
FROM rust:1.82.0 AS chef
WORKDIR /app
RUN apt update && apt install lld clang -y && cargo install cargo-chef
FROM chef as planner
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
FROM chef AS builder
COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
COPY . .
ENV SQLX_OFFLINE true
RUN cargo build --release --bin XYZ
FROM debian:bookworm-slim AS runtime
WORKDIR /app
RUN apt update -y \
&& apt install -y --no-install-recommends openssl ca-certificates \
&& apt autoremove -y \
&& apt clean -y \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/XYZ XYZ
COPY .env .env
ENTRYPOINT [ "./XYZ" ]
👍10❤2
چندتا مقاله قدیمی دارم میخونم درمورد
ًRust in production at figma (2018)
دیسکورد هم یک پست درمورد اینکه چرا از
Why discord is switching from go to rust
نکته آخر اینکه؛
۱- توجه کنید به نیازمندیها و ساختار سیستمهاشون
۲- درمود بدیهایی که با
Rust خیلی جالب بود برام.ًRust in production at figma (2018)
دیسکورد هم یک پست درمورد اینکه چرا از
Go به Rust رفته منتشر کرده (همون سال ۲۰۲۰)Why discord is switching from go to rust
نکته آخر اینکه؛
۱- توجه کنید به نیازمندیها و ساختار سیستمهاشون
۲- درمود بدیهایی که با
Rust گفته شده بسیاریش توی این چندسال رفع شده و توی پرفورمنس حتی Rust سریعتر هم شده.👍14
یک مشکلی داشتم،
من توی خونه برای راحتی فیلم دیدن خانواده یک سیستم
روی رزبری که به هارد وصل بود.
حدوداً ۲ سال قبل رزبری به مشکل خورد و سیستم رفت و منم دیگه حوصله و وقت کانفیگ نداشتم (نیازی هم نبود، هرکسی هرچی میخواست دوباره دانلود میکرد)
تا اینکه چندشب پیش یک سری فایل خواستیم به اشتراک بذاریم که حجمش خیلی زیاد میشد و اختصاصی هم بود.
دنبال راهکار، رزبری رو راه انداختم و
Sync directory
زدم، بعد به ذهنم رسید بجای nextcloud, ... همین کارو بکنم ی کد بزنم دائم یک پوشه رو مانیتور کنه
و اگر چیزی به پوشه اضافه شد که روی سرور (رزبپری نیست) اتومات آپلود کنه.
ابزار برای اینکار هست حتی کد پایتون برای ۱ کلاینت و چند سرور رو هم دارم خودم (فقط روی اسم و تایم کار میکنه البته)
اینو دارم با Rust مینویسم توی وقتای خالی (حتی ۱۰-۲۰ دقیقه) و خیلی پروژه جذاب و پر تمرینی شده
گفتم اگر کسی خواست تمرین کنه :
ویژگیها : چندتا آرگومان میگیره
اطلاعات ssh و کلید و ...
پوشه لوکال
پوشه سرور
همزمان میتونه چندتا پوشه رو هم track کنه.
روی تغییر متادیتا پوشه مثل زمان دسترسی و ... پوشه رو اسکن میکنه فایل جدید اگر پیدا کنه که hash اش توی جدول نباشه ( تیبل لوکال) تیبل سرور رو نگاه میکنه (ممکن اون فایل از طریق یک کامپیوتر یا دستگاه دیگه آپلود شده باشه) و اگر بود نوتیف میده که فایل آپلود شده
فیچر نوتیف داره، اما توی محیط غیر دسکتاپ خاموش هست، توی محیط دسکتاپ یوزر میتونه فعالش کنه (درصد آپلود رو نمایش میده) یک حداقل داره و اونم اینکه یوزر میتونه بگه اگر حجم آپلود جدید بیش از ۵ گیگ بود نوتیف بده، در غیر اینصورت نده
فیچر sync delete داره، برای موارد غیر حساس و ... مثلاً ی دوره آموزشی رو روی سیستم داری میخوای روی گوشی و تبلت و .... باشه که موقع خواب هم یک نگاهی بکنی بهش.
این مورد روی هر کلاینتی فعال باشه، فایل های اون کلاینت به محض پاک شدن از سورس از سرور هم پاک خواهند شد.
چندتا فیچر دیگه هم درآورم براش که توی سیستم نوشتم الان یادم نمیاد، ولی خب همین هم حجم تمرین بسیار بالایی داره و خیلی از
امیدوارم تمرین خوب و جذابی باشه.
من توی خونه برای راحتی فیلم دیدن خانواده یک سیستم
NAS ایجاد کرده بودم چندسال قبل NextCloud, ...روی رزبری که به هارد وصل بود.
حدوداً ۲ سال قبل رزبری به مشکل خورد و سیستم رفت و منم دیگه حوصله و وقت کانفیگ نداشتم (نیازی هم نبود، هرکسی هرچی میخواست دوباره دانلود میکرد)
تا اینکه چندشب پیش یک سری فایل خواستیم به اشتراک بذاریم که حجمش خیلی زیاد میشد و اختصاصی هم بود.
دنبال راهکار، رزبری رو راه انداختم و
Sync directory
زدم، بعد به ذهنم رسید بجای nextcloud, ... همین کارو بکنم ی کد بزنم دائم یک پوشه رو مانیتور کنه
و اگر چیزی به پوشه اضافه شد که روی سرور (رزبپری نیست) اتومات آپلود کنه.
ابزار برای اینکار هست حتی کد پایتون برای ۱ کلاینت و چند سرور رو هم دارم خودم (فقط روی اسم و تایم کار میکنه البته)
اینو دارم با Rust مینویسم توی وقتای خالی (حتی ۱۰-۲۰ دقیقه) و خیلی پروژه جذاب و پر تمرینی شده
گفتم اگر کسی خواست تمرین کنه :
ویژگیها : چندتا آرگومان میگیره
اطلاعات ssh و کلید و ...
پوشه لوکال
پوشه سرور
همزمان میتونه چندتا پوشه رو هم track کنه.
روی تغییر متادیتا پوشه مثل زمان دسترسی و ... پوشه رو اسکن میکنه فایل جدید اگر پیدا کنه که hash اش توی جدول نباشه ( تیبل لوکال) تیبل سرور رو نگاه میکنه (ممکن اون فایل از طریق یک کامپیوتر یا دستگاه دیگه آپلود شده باشه) و اگر بود نوتیف میده که فایل آپلود شده
فیچر نوتیف داره، اما توی محیط غیر دسکتاپ خاموش هست، توی محیط دسکتاپ یوزر میتونه فعالش کنه (درصد آپلود رو نمایش میده) یک حداقل داره و اونم اینکه یوزر میتونه بگه اگر حجم آپلود جدید بیش از ۵ گیگ بود نوتیف بده، در غیر اینصورت نده
فیچر sync delete داره، برای موارد غیر حساس و ... مثلاً ی دوره آموزشی رو روی سیستم داری میخوای روی گوشی و تبلت و .... باشه که موقع خواب هم یک نگاهی بکنی بهش.
این مورد روی هر کلاینتی فعال باشه، فایل های اون کلاینت به محض پاک شدن از سورس از سرور هم پاک خواهند شد.
چندتا فیچر دیگه هم درآورم براش که توی سیستم نوشتم الان یادم نمیاد، ولی خب همین هم حجم تمرین بسیار بالایی داره و خیلی از
crate هایی که توی مصاحبهها ازم پرسیده شد رو باید درست درک کنید برای پیادهسازیامیدوارم تمرین خوب و جذابی باشه.
👍19❤7
بجای انتظار کشیدن؛ ویدئو ببینیم
Youtube Video
وسط
بسیار بسیار ویدئو خوبی هست.
Youtube Video
وسط
build, compile, .... پروژه شرکت دیروز این رو شروع کردم و امروز دارم ویدئوهای بعدی رو ادامه میدم.بسیار بسیار ویدئو خوبی هست.
YouTube
Learning Rust! | Writing a 16bit Virtual Machine
Rust is cool but also hard and scary. I love writing little virtual machines, so today I'm going to start making one! I'll be talking about the project structure and how I want to reuse code between binaries.
Source code from this stream: https://github…
Source code from this stream: https://github…
👍9
RandRng
کلید RSA هم برای اولین بار شکسته شد. نیاز فوری به الگوریتم Encryption جدید و قویتر Blog Post
جنگ کوانتوم.
دستاوردهای گوگل و چین رو دیدید ؟
دستاوردهای گوگل و چین رو دیدید ؟
👍10❤1
fs::read_to_stringباگ خفته، یک سرویس کوچیک داریم که دائم
down میشه چک میکنیم میبینیم دقیقا قبلش دیوایس (Edge Device) اونم داره ریستارت میشه.پس نیرو میره سراغ مشکلات دیوایس؛ این وسط منم رفتم سورس کد بخونم.
اطلاعاتی هم از پروژه و مشکل داشتم و خب چندتا از بچهها گفتن مشکل از دیوایس هست.
توی سورس کد دیدم طرف اینطوری داره فایل رو میخونه؛ یک نمونه فایل رو گرفتم (بعد از کرش کردن دستگاه)
دیدم بله، حجم فایل بیشتر از رم دستگاه شده؛ مشکل همین بود.
برای همین توی اکثر آموزشهای حرفهای از این مورد استفاده نمیشه و راه سختتره read, buffer, ... پیش گرفته میشه
موضوع فقط بهینه بودن نیست؛ موضوع جلوگیری از کرش کردن هست.
گفتم اینجا هم بگم، شاید یک نفر دیگه رو هم از چندساعت دیباگ نجات داد.
👍26❤8
این پروژه limbo خیلی باحاله و دانشگاهیه برای آموزش crate های مختلف؛ سورس کدش رو بخونید
Limbo Github
داستان اینه که اومدن گفتن
من خود پروژه رو هنوز به کسی پیشنهاد نمیدم؛ ولی این خیلی خفنه مثلا برید توی سورس کد
اول اینکه هر پوشه ماژولار دیده شده و هر پوشه
بعد توی این سورس کد مثال
اینجا همش هست؛ تازه ماژولار و تر و تمیز با
Limbo Github
داستان اینه که اومدن گفتن
SQLite رو بهتر مینویسیم و با یک زبان امن که خب گزینهاش شده Rust و اینبار همه اجازه دارند کد Contribute کنند.من خود پروژه رو هنوز به کسی پیشنهاد نمیدم؛ ولی این خیلی خفنه مثلا برید توی سورس کد
cli/app.rs
اول اینکه هر پوشه ماژولار دیده شده و هر پوشه
Cargo.toml خودش رو داره که باحال بود (دفعه اول بود میدیدم)بعد توی این سورس کد مثال
clap رو ببینید؛ من برای پروژه چند وقت پیشم بیچاره شدم تا همه اینارو کنار هم درک کنم و بیارم.اینجا همش هست؛ تازه ماژولار و تر و تمیز با
Best Practice ها و خوبیش اینه که هممون به اندازه کافی از SQLite میدونیم و دانش خوبی داریم ازش.GitHub
GitHub - tursodatabase/turso: Turso is an in-process SQL database, compatible with SQLite.
Turso is an in-process SQL database, compatible with SQLite. - tursodatabase/turso
❤12👍7
Forwarded from Python Hints
هلوکاست ایرانی
یک زمانی شهردار تهران رو بخاطر ترافیک تهران اعدام کردند.
آخوند جز ویرانی، برای ایران دستاورد نداشت.
یک زمانی شهردار تهران رو بخاطر ترافیک تهران اعدام کردند.
آخوند جز ویرانی، برای ایران دستاورد نداشت.
👍39👎8🌭6😱2😭1
Forwarded from Python Hints
https://github.com/pykeras/neovim
بالاخره آماده شد.
تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچههای گروه خودمون.
فکر میکنم خوب باشه.
توی
بالاخره آماده شد.
تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچههای گروه خودمون.
فکر میکنم خوب باشه.
توی
ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که میاندیشند وجود دارهGitHub
GitHub - pykeras/neovim: Basic Neovim setup with useful plugins for Python, Rust and JavaScript
Basic Neovim setup with useful plugins for Python, Rust and JavaScript - pykeras/neovim
👍6🎉3❤🔥2
Fish shell رو با بازنویسی کامل روی
Rust برای نسخه 4 خواهیم داشت.ازون گیتهابای پر از درس هست که خیلی خوب میشه سورس کدش رو خوند.
پروژه
Limbo رو که یادتون هست ؟https://news.1rj.ru/str/pyrust/110
Telegram
Rust for Python developers
این پروژه limbo خیلی باحاله و دانشگاهیه برای آموزش crate های مختلف؛ سورس کدش رو بخونید
Limbo Github
داستان اینه که اومدن گفتن SQLite رو بهتر مینویسیم و با یک زبان امن که خب گزینهاش شده Rust و اینبار همه اجازه دارند کد Contribute کنند.
من خود پروژه رو…
Limbo Github
داستان اینه که اومدن گفتن SQLite رو بهتر مینویسیم و با یک زبان امن که خب گزینهاش شده Rust و اینبار همه اجازه دارند کد Contribute کنند.
من خود پروژه رو…
👍5❤🔥1🔥1
تو زندگیم ۲-۳ بار برای پروتوتایپ ایده رفتم سمت
چندروزی هست دارم روی کار با
توی همین راستا رسیدم به یک مصاحبه خوب؛ توی این مسابقه طراحی سیستم؛ چرایی انتخابها و بعد پیادهسازی دمو اولیه خیلی مهمه منم از الان شروع کردم روش کار کردن (چون برای اینکه جایزه جواب آپگرید رو بده مجبورم یا تنها پیش برم یا نهایتا تیم رو دونفره ببندم)
Youtube Link
شما جایگزین بهتری میشناسید ؟
Electron و قسم میخورم حتی ۲ مورد که سرمایهگذار داشته رو بعد از ۲ هفته ازش زدم بیرون چون بنظرم احمقانه بود و بعد از اون هیچوقت فکر نمیکردم بخوام برم سراغ اینکار چندروزی هست دارم روی کار با
Tauri وقت میذارم؛ شرکتی که باهاش کار میکنم چند وقت یکبار مسابقه ۱-۲ روزه میذاره سر اپتیمایز کردن برنامهها و پروژههای موفق و جایزه درخوری هم میده (شرکت کنندهها هم براشون ساعت کاری رد میشه) دیگه گفتم ی جایزهای بگیریم سیستم رو جایگزین کنم.توی همین راستا رسیدم به یک مصاحبه خوب؛ توی این مسابقه طراحی سیستم؛ چرایی انتخابها و بعد پیادهسازی دمو اولیه خیلی مهمه منم از الان شروع کردم روش کار کردن (چون برای اینکه جایزه جواب آپگرید رو بده مجبورم یا تنها پیش برم یا نهایتا تیم رو دونفره ببندم)
Youtube Link
شما جایگزین بهتری میشناسید ؟
YouTube
Is Tauri the Electron Killer?
In this episode of Syntax, Wes and Scott talk with Daniel Thompson-Yvetot about Tauri. They dive into what Tauri is, the motivations behind its development, its open-source ecosystem, use cases, and more.
Show Notes
(00:00) - Welcome to Syntax!
(02:01)…
Show Notes
(00:00) - Welcome to Syntax!
(02:01)…
👍14🤪1
در ادامه تمرینهای
فقط چون با
البته توی داکیومنتش گفته که از
https://dioxuslabs.com
Rust رو آوردم به Dioxus چرا ؟فقط چون با
Rust میشه فرانتاند وب زد البته توی داکیومنتش گفته که از
Tauri هم استفاده میکنند برای desktop build های مختلفی که دارند و شاید بهتر باشه منم برم سراغ همین تا Tauri (فعلا روی بکند و tui هستم)https://dioxuslabs.com
Dioxuslabs
Dioxus - Fullstack crossplatform app framework for Rust
Dioxus | A fullstack crossplatform app framework for Rust. Supports Web, Desktop, SSR, Liveview, and Mobile.
👍15
هفته پیش اولین پروژه
یک ابزار تحت ترمینال برای آنالیز فایل (تعداد خیلی بالا) بود.
توی پایتون نوشته شده بود، میخواستند بیارنش روی
هرچند من بعد از خوندن کدها بهشون اطلاع دادم که کد پایتون درست نوشته نشده و همون باعث کند بودن هست و میتونم درستش کنم ولی به خواست خودشون رفتم روی
البته این درآمد نشه موضوعی برای اینکه برید
اما، خواستم این رو بگم که بیشترین کمک رو بهم، خوندن سورس کد دیگران کرد.
مثلاً پروژه
ازم درخواست
احتمالاً بعد از خوندن ۲-۳ تا سورس کد دیگری که در دستم هست و تمرین کردنشون برم سراغ یادگیری پکیجهای
Rust خودم رو تحویل دادم.یک ابزار تحت ترمینال برای آنالیز فایل (تعداد خیلی بالا) بود.
توی پایتون نوشته شده بود، میخواستند بیارنش روی
Rust و یکسری ویژگی جدید هم بهش اضافه کنند.هرچند من بعد از خوندن کدها بهشون اطلاع دادم که کد پایتون درست نوشته نشده و همون باعث کند بودن هست و میتونم درستش کنم ولی به خواست خودشون رفتم روی
Rust امروز تأیید خروجی و تستها و پرداخت انجام شد و شد اولین دستمزد Rust من و سریعترین درآمد مبلغ خوبم از یادگیری زبان برنامهنویسی جدید.البته این درآمد نشه موضوعی برای اینکه برید
Rust یادبگیرید، چون قطعاً تجربیات دیگری که داشتم باعث شد این پروژه رو بگیرم.اما، خواستم این رو بگم که بیشترین کمک رو بهم، خوندن سورس کد دیگران کرد.
مثلاً پروژه
Limbo که بالاتر گفتم، خیلی خیلی کمکم کرد که توی ۱ روز تمام دستورات cli پروژه رو بزنم.ازم درخواست
tui کردند که گفتم درحال حاضر وقتش رو ندارم و حقیقتا تا حالا هم tui برای Rust نخوندم. احتمالاً بعد از خوندن ۲-۳ تا سورس کد دیگری که در دستم هست و تمرین کردنشون برم سراغ یادگیری پکیجهای
tui و بعد از اون Tauri یا Dioxus ولی این موضوع انگیزه شد مضاعف برای ادامه مسیر.👍39❤10👏4🔥3❤🔥2🥱1
Forwarded from دستاوردهای یادگیری عمیق(InTec)
GitHub
GitHub - tracel-ai/burn: Burn is a next generation tensor library and Deep Learning Framework that doesn't compromise on flexibility…
Burn is a next generation tensor library and Deep Learning Framework that doesn't compromise on flexibility, efficiency and portability. - tracel-ai/burn
❤17
یک موضوعی از شب قبل رفته توی مغزم
#5min_Rust
بعد پست بالا توی کانال، Intec یکی از بچهها چندتا سوال Rust داشت که تونستم جواب بدم.
وقتی متوجه شدند این کانال وجود داره، پیشنهاد دادند که توی این کانال روزانه یا ... پستهای آموزش Rust بذارم.
از مباحث ساده شروع کنیم.
حقیقتا پیشنهاد خوبی بود (اگر بتونم خوب هم انجامش بدم) متن کوتاه باشه که از حوصله کسی خارج نشه.
و شدنی هم هست، چون برخلاف کانال پایتون که هدف تخصصی صحبت کردن بود.
اینجا هدف شروع مقدمات هست.
نمیدونم نهایتاً چی میشه ولی تلاشم رو میکنم، امیدوارم چیز خوبی بشه ولی اگر نشد شما بهم بگید 🌹
#5min_Rust
بعد پست بالا توی کانال، Intec یکی از بچهها چندتا سوال Rust داشت که تونستم جواب بدم.
وقتی متوجه شدند این کانال وجود داره، پیشنهاد دادند که توی این کانال روزانه یا ... پستهای آموزش Rust بذارم.
از مباحث ساده شروع کنیم.
حقیقتا پیشنهاد خوبی بود (اگر بتونم خوب هم انجامش بدم) متن کوتاه باشه که از حوصله کسی خارج نشه.
و شدنی هم هست، چون برخلاف کانال پایتون که هدف تخصصی صحبت کردن بود.
اینجا هدف شروع مقدمات هست.
نمیدونم نهایتاً چی میشه ولی تلاشم رو میکنم، امیدوارم چیز خوبی بشه ولی اگر نشد شما بهم بگید 🌹
👏50❤21🔥6👍5❤🔥1
Rust for Python developers
یک موضوعی از شب قبل رفته توی مغزم #5min_Rust بعد پست بالا توی کانال، Intec یکی از بچهها چندتا سوال Rust داشت که تونستم جواب بدم. وقتی متوجه شدند این کانال وجود داره، پیشنهاد دادند که توی این کانال روزانه یا ... پستهای آموزش Rust بذارم. از مباحث ساده…
از امشب شروع کنیم
بخشهای اول که سادهتر هست رو سعی میکنم بیشتر بگم (که سریع ازشون بگذریم)
توقع این هست که همگی، با یک زبان برنامهنویسی کار کرده باشید توجه کنید صرف اینکه با اون زبان کد زدید اینجا مناسب نیست باید زبان رو درک کرده باشید.
مفاهیم
اگر این ویژگی رو ندارید، یا Rust اولین زبان برنامهنویسی هست که یاد میگرید؛ نمیگم شدنی نیست ولی قراره روزای سختی رو داشته باشید پس نیاز به انگیزه قوی داره.
نکته آخر: اگر
فکر نکنم نکته دیگهای لازم باشه، همه میتونند
بخشهای اول که سادهتر هست رو سعی میکنم بیشتر بگم (که سریع ازشون بگذریم)
توقع این هست که همگی، با یک زبان برنامهنویسی کار کرده باشید توجه کنید صرف اینکه با اون زبان کد زدید اینجا مناسب نیست باید زبان رو درک کرده باشید.
مفاهیم
software enginnering رو توی زبان برنامهنویسی که باهاش تجربه دارید بخوبی بلد باشید.اگر این ویژگی رو ندارید، یا Rust اولین زبان برنامهنویسی هست که یاد میگرید؛ نمیگم شدنی نیست ولی قراره روزای سختی رو داشته باشید پس نیاز به انگیزه قوی داره.
نکته آخر: اگر
Rust رو برای کسب درآمد و سرکار رفتن میخواید، زبان و گزینه خوبی نیست حداقل درحال حاضر در ایران و اروپا.فکر نکنم نکته دیگهای لازم باشه، همه میتونند
Rust رو یاد بگیرند.❤38👏6🔥4👍3❤🔥1
ازونجایی که بکگراند خیلیها توی کانال
خیلی از پستها ممکنه شوخی توش باشه (خودم اینطوری یادم میمونه) و اینکه ممکنه ۱۰۰٪ درست نباشه متن اما برای سادهسازی و درک بهتر تصمیم گرفتم از یکسری چیزا بگذرم؛ هرچی پیشرفته تر بشیم بر میگردیم به عقب و اون موارد رو هم تصحیح میکنیم.
#5min_Rust
اصن چرا
اسمش از یک قارچ اومده که عملکرد خیلی باحالی داره (بخونید راجبش)
دو مدل مدیریت حافظه داریم:
یا دست خود برنامهنویس میسپارید و میگیم برو به امان خدا.
یا آشغال جمعکنی (
حالت اول میشه زبانهایی مثل
فرض کن من یک خونه حافظه گرفتم و توی اون حاصل یک سری محاسبات رو بصورت
اون آدرس رو اگر یادم رفته باشه آپدیتش کنم یا ... و هنوز به این خونه حافظه دسترسی داشته باشه اون وقت به فنا رفتم؛ همونطور که دوس ندارید لخت دوس دختر/دوس پسرتون رو کسی ببینه؛ پسورد لختتون رو هم نمیخواید با رفقا به خونه حافظهاش سر بزنید.
پس یک مشکل اساسی اینجاس (خیلی ساده گفتم کسی یادش نره)
حالت دوم زبانهایی مثل
خب مشکلمون حل شد بریم خونمون ؟
مسئله اینجاس که دست دوم زبانها سربار دارند و بدرد کارهای
اما زبان Rust اومد با یک ایده دیگه (با پیاده سازی درست) :
گفت من یک کاری انجام میدم که Garbage Collector نمیخوام ولی مموری رو امن میدم در اختیارت که بری عشق کنی.
همه چیز اینجا صاحاب داره و تا صاحابش اجازه نده؛ نگاشم نمیتونی بکنی.
همین مورد چندین مشکل رو حل کرد:
۱- دستبرسی به خونه خالی نداریم:
۲- هیچ اشارهگری رو معلق نمیذاریم بریم:
۳- اصراف هم نمیکنیم چون کار خوبی نیست:
حل همین ۳ تا مشکل باعث شد
یعنی چیزی دستت رو نمیگیره مگر اینکه قوانین رو رعایت کرده باشی (حالا جلوتر میبینیم خودش چقدر خوب مشکلاتت رو بهت میگه) چی شد که مریداش سر به بیابان گذاشتن (بله گونههای اولیه خشتک به دهان.) هیچی
python هست ترجیح میدم با چرایی Rust شروع کنم (هرچند برای خودم دلیلی نداشت؛ نشستم کد زدم و لذت بردم و به اینکار ادامه دادم.)خیلی از پستها ممکنه شوخی توش باشه (خودم اینطوری یادم میمونه) و اینکه ممکنه ۱۰۰٪ درست نباشه متن اما برای سادهسازی و درک بهتر تصمیم گرفتم از یکسری چیزا بگذرم؛ هرچی پیشرفته تر بشیم بر میگردیم به عقب و اون موارد رو هم تصحیح میکنیم.
#5min_Rust
اصن چرا
Rust ؟ چرا Chap نه ؟اسمش از یک قارچ اومده که عملکرد خیلی باحالی داره (بخونید راجبش)
دو مدل مدیریت حافظه داریم:
یا دست خود برنامهنویس میسپارید و میگیم برو به امان خدا.
یا آشغال جمعکنی (
garbage collector) میذاریم و میگیم اعتمادی به برنامهنویس نیست.حالت اول میشه زبانهایی مثل
C/C++ و بزرگترین مشکل کدهاش اینه که ی آدرس از یک خونه حافظه داریم که داره به یک جایی اشاره میکنه؛ حالا اون نقطه از خونه حافظه رو توی یک بخش دیگه کدهامون اومدیم خالی کردیم (دیتایی نداره).فرض کن من یک خونه حافظه گرفتم و توی اون حاصل یک سری محاسبات رو بصورت
String ذخیره کردم و یک اشارهگر به اون خونه حاقظه رو توی کدم دارم (آدرسش رو گرفتم بعدا با بچهها مزاحم بشیم)؛ یک جای دیگه کدهام توی یک تابع دیگه بعدها اومدم اون خونه حاقظه رو گرفتم و یک سری کار باهاش کردم و دوباره ذخیره کردم همونجا؛ بیاید فرض کنیم این کارا که کردم یک پسورد رو براساس String اولیه ساخته.اون آدرس رو اگر یادم رفته باشه آپدیتش کنم یا ... و هنوز به این خونه حافظه دسترسی داشته باشه اون وقت به فنا رفتم؛ همونطور که دوس ندارید لخت دوس دختر/دوس پسرتون رو کسی ببینه؛ پسورد لختتون رو هم نمیخواید با رفقا به خونه حافظهاش سر بزنید.
پس یک مشکل اساسی اینجاس (خیلی ساده گفتم کسی یادش نره)
حالت دوم زبانهایی مثل
Python/Java میشه یکی هست به اسم آشغال جمع کن که وقتی خونه حافظه قابل دسترسی نیست یا رفرنس دیگه استفاده اولیهاش رو نداره اینارو حذف میکنه.خب مشکلمون حل شد بریم خونمون ؟
مسئله اینجاس که دست دوم زبانها سربار دارند و بدرد کارهای
Realtime, Mission Critical نمیخورند دسته اول هم که بدرد میخوره وقتی پروژه گنده میشه تا دلتون بخواد باگ میکوبه تو صورت دولوپرها.اما زبان Rust اومد با یک ایده دیگه (با پیاده سازی درست) :
گفت من یک کاری انجام میدم که Garbage Collector نمیخوام ولی مموری رو امن میدم در اختیارت که بری عشق کنی.
همه چیز اینجا صاحاب داره و تا صاحابش اجازه نده؛ نگاشم نمیتونی بکنی.
همین مورد چندین مشکل رو حل کرد:
۱- دستبرسی به خونه خالی نداریم:
null dereferencing۲- هیچ اشارهگری رو معلق نمیذاریم بریم:
dangling pointer۳- اصراف هم نمیکنیم چون کار خوبی نیست:
buffer overflowحل همین ۳ تا مشکل باعث شد
Rust کلی مرید پیدا کنه. ولی مسئله سرعت اجرا چی میشه ؟ Rust اومد گفت بذارید دولوپر اذیت بشه ولی کاربر نشه چون شما یک کد رو ۱ بار مینویسی ولی ممکنه میلیونها بار اجرا بشه پس همه بررسیهای مربوط به قوانین همه چیز صاحاب داره؛ بیصاحابی در زمان کامپایل بررسی میشه.یعنی چیزی دستت رو نمیگیره مگر اینکه قوانین رو رعایت کرده باشی (حالا جلوتر میبینیم خودش چقدر خوب مشکلاتت رو بهت میگه) چی شد که مریداش سر به بیابان گذاشتن (بله گونههای اولیه خشتک به دهان.) هیچی
Rust گفت همه هزینههاتون با من شما پرفورمنس C بهت تحویل داده میشه.👍45🔥10❤6👏4😁3❤🔥2💩2
#5min_Rust
برای نصب rust روی سیستم؛ به
اگر روی vs-code کد میزنید؛ بعدش حتما rust-analyzer رو نصب کنید. اگر روی
اگر روی
نصب کنید که از پست بعدی کد هم بزنید.
برای نصب rust روی سیستم؛ به
rust-lang سر بزنید اگر از لینوکس استفاده میکنید ۱ خط دستور رو توی ترمینال میزنید؛ اگر اینترنت ضعیف باشه ی چایی بریزی برگردی نصب شده.اگر روی vs-code کد میزنید؛ بعدش حتما rust-analyzer رو نصب کنید. اگر روی
Pycharm کد میزنید که برید یک محصول دیگه رو هم بخرید 😂اگر روی
Neovim هستید هم که؛ چایی دم کردم ناراحت میشم جای دیگه برید یک سری به github خودم بزنید.نصب کنید که از پست بعدی کد هم بزنید.
Visualstudio
rust-analyzer - Visual Studio Marketplace
Extension for Visual Studio Code - Rust language support for Visual Studio Code
👍31❤8🤣6👌4❤🔥2