RandRng – Telegram
RandRng
2.13K subscribers
158 photos
16 videos
8 files
74 links
جایی واسه احمق‌ها نیست...
Download Telegram
دارم فصل ۱۰ کتاب Rust web programming 3rd edition رو ریویو می‌کنم، این بخش بهترین نکته‌ای هست که داره.
👍122
RandRng
یک اتفاق جالب امروز برام افتاد؛ یک هم تیمی جدید داریم سطح بالایی هم داره، امروز برای اولین بار به repo های من دسترسی گرفت. من دوتا پروژه بکند دارم؛ یکیش Python هست، اون یکی Rust رفته بود پروژه Python رو خونده بود اومد گفت چرا هر کدوم رو یک فایل نمی‌کنی؟…
خیلی پست‌های مختلف می‌بینم که می‌گن؛ لایه logic, data, view, .... رو از هم جدا کنید و ازین حرفا (طرف ۲ هفتس کلین کد خونده) که نکته خیلی خوبی هست اما نه همه جا

و خیلی وقتا هم کد دستم اومده که دیدم؛ طرف زده get_repository بعد این رو گذاشته توی یک پوشه و فایل دیگه
میرم کد رو می‌خونم می‌بینم ۱ خط کد نوشته یک return ساده.

این مدل جداسازی مزخرف‌ترین کاری هست که می‌تونید انجام بدید.

نکته‌اش توی کتاب بالا هم هست؛
دولوپر بعدی، بیچاره میشه تا ذهنش رو دور این چیزا سر و سامون بده و متوجه بشه فایل‌ها و ... چطوری به هم ارتباط داره

repository= .....

همون کار رو می‌کنه؛ ۱۰۰ برابر خواناتر و تمیزتر‌ هست و در صورت رشد کردن کدش؛ توی refactor جدا خواهد شد.

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


مثال دیگر:
این رو زیاد می‌بینم؛

cleaned_text = preprocess(mytext)

بعد میرم توی مسیری که گفته شده:
utils/preprocessing.py

def preprocess(text:str):
return text.strip()

ببین ذهن من چقدر باید اذیت بشه که توی توسعه کدهای بعدی یادش باشه که اینکار رو برای یک strip ساده انجام بده.
حالا فرض کنید یک پروژه ۱ میلیون خط کدی؛ اینطوری نوشته شده باشه!

بنظرتون این پروژه clean code هست یا shit code ؟!

یادتون نره؛ refactor پنالتی نیست، بلکه نشون می‌ده شما به کد و پروژه زیر دستتون اهمیت می‌دید!
من ترجیح میدم
text = input.strip()
رو داشته باشم و وقتی این تمیز کاری دیتای ورودی بزرگتر شد اونوقت اون رو جدا کنم.
8👍7
#موقت
وسط توضیح برق رفت

utils/preprocessing.py:
def preprocessing(text: str) :
return text.strip()

utils/__init__.py
```python
```

from utils.preprocessing import preprocess

...
cleaned_text = preprocess(text)
...

این میزان کدی هست که باید برنامه نویس بعدی توی ذهنش نگهداره 👆

بجای :

text = input.strip()

حالا اینو ضربدر ۱۰۰ یا ۱,۰۰۰ کنید برای یک پروژه توی اسکیل استاندارد.
11👍7
نزدیک انتخاب رشته‌‌اس گفتم اینو بگم:

اینکه که می‌گن
کاری رو بکن که دوس داری.

این ماهارو بیچاره کرده؛ من و چندتای دیگه که اطرافم دیدم توی تخصص‌های مختلف.

البته من ازونا بودم که، یاد گرفتم کاری که می‌کنم رو دوس داشته باشم ولی خب.

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

موقعیت بهتر مالی رو فدای یادگیری یا کاری با چالش بیشتر کردیم.

بنظرم باید اینطوری گفت که؛ کاری رو بکنید که ازش خوشتون میاد: اینطوری اصل نگاهتون بهش درآمدی هست.
کاری که دوست دارید رو بذارید برای اوقات فراغت و تفریح و ....

اینجوری هم ازش بیشتر لذت می‌برید؛ هم درآمد بیشتر رو فدای علاقه و چالش نمی‌کنید.
👍627😐2😁1
یک شعاری داده شد که یک نوع راهکار بود، مثل اینکه یک عده یک پرچمی دستشون بوده و نمی‌دونستند باهاش چکار باید بکنند، برای همین ملت ایران بهشون راهکار دادند.



این شعار بین‌المللی شده؛ همکارم (ایرانی نیست) ازم پرسید موضوع این شعار چیه و چطور شروع شد؟
حال بحث کردن باهاش رو نداشتم؛ با متن بالا بهش توضیح دادم، خدایی چی می‌گفتم ؟
😁31🔥4🗿21💯1
Forwarded from Meysam
رائفی پور هر وقت میخواد حرف بزنه
😁55👍4😐3🗿2
RandRng
آخ جون؛ من این تیم و دولوپر‌هاش رو فالو می‌کنم. درآمد بعدیم جور شد 😁😁
یک نفر پرسیده، یعنی شما مخالف توسعه کد با ai هستید ؟

نه قبلاً هم گفتم، software engineer بدون اینکه از ai استفاده کنه توی تیم ما خیلی کار سختی داره چون میشه سنگ جلوی پای باقی تیم.

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

وقتی می‌خوام از ai استفاده کنم براش می‌نویسم :

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

توی schema دوتا فیلد برای پسورد در نظر بگیر فیلد دوم confirm باشه؛ یک unique_id برای یوزر بذار که uuid7 باشه و یوزر رو با این فیلد هندل کنیم.
پسورد باید نهایتاً با الگوریتم argon2 و یک salt رندوم برای هر یوزر هش بشه و داخل دیتابیس قرار بگیره!

یوزر حتماً باید ایمیل / موبایل خودش رو verify کنه وگرنه اکانت فعال نمی‌شه و کاری نمی‌تونه بکنه و ....


این مدل استفاده از AI با اینکه من بهش بگم؛ یک کد signup توی پایتون بهم بده خیلی خیلی فرق داره.
طراحی، درست بودن و امنیت سیستم با من software engineer هست و فقط کد زدن رو دارم به AI می‌سپارم.
مثل یک سنیور که همه چیز رو به کارآموز می‌گه و فقط کد زدنش رو به عهده کارآموز می‌ذاره.
👍5012🔥2
از جابجایی بعضی سرویس‌ها از Python به Rust و تغییر RestApi به gRPC چندماهی می‌گذره.

با همکارای مسئول cloud server صحبت می‌کردم؛ هزینه‌ سرور از 3000$ به 300$ درماه کاهش پیدا کرده.

بخش زیادی ازین موارد به لطف Rust هست؛
مثلاً داکر ایمیج چندتا از سرویس‌های مربوط به Rust (بکند و فرانت باهم از طریق Rust سرو میشه) حجمی حدوداً ۳۵ مگ داره که روی سرویس دهنده بابت نگهداری ۱۰ ورژن آخرش هزینه 0$ هست.

فقط بکند همین سرویس‌ها روی پایتون توی بهترین حالت ۳۹۰ مگ حجم هر ایمیج بود.

مصرف و لود شبکه به شدت پایین اومد؛ که خب بخش زیادی از اون به لطف gRPC بود.

تونستیم disk کمتری رو خریداری کنیم مثلاً: برای لاگ سرور‌هامون چون 99% سناریوها رو دیگه می‌دونستیم خطا از چی هست (به لطف Result, Option) و این باعث شد اطلاعات خیلی کمتری رو نیاز داشته باشیم لاگ بندازیم.

مصرف Ram سرورها به شدت کم شد؛ توی یکی از سرویس‌ها بعنوان مثال؛ FastApi به محض استارت شدن ۲۰۰-۲۲۰ مگ مصرف رم داشت این رقم برای Actix-web روی ۲۷-۲۸ مگ بود.
موقع کار هم حداقل 8x مصرف رم Rust کمتر بود.
این درحالی هست که Rust تعداد Requestهای بیشتری رو هم جواب میداد.

توی CPU هم که بحثی وجود نداره.


مسئله با سرویس‌ها و سرورهای cloud هم همین هست؛ یک سری چیزها بدون هزینه هست اگر مصرف انقدر کم باشه؛ برای ذخیره لاگ و ... اگر تا ۵ گیگ بخوای بهت رایگان میدم، اگر Docker image هات کمتر از ۵۰ مگ باشه نگهداریش رایگان هست و ...

یا اگر Ram بیش از ۴ گیگ بخوای؛ اونوقت حداقل باید دو برابر بخری رم ۸ گیگ و حداقل باید CPU با ۴ هسته سفارش بدی اونوقت Storage هم حداقل از 100GB شروع میشه و ...


همه‌ی اینها روی هم هزینه‌هارو بالا می‌بره!

با همه‌ی این‌ها اما؛ همچنان اکثر پروژه‌های ما با FastApi و پایتون توسعه داده میشه.

وقتی ازش مطمئن شدیم و جواب داد و موفقیت آمیز بود میریم سراغ Rust

بطور خلاصه:
بکند ۹۹.۹٪ پروژه‌های استارتاپی شما به بیشتر از پایتون نیاز نخواهد داشت اگر معماری و طراحی درست باشه.



اما داشتن Rust درآینده خیلی کمک می‌کنه؛ همین شده که ما دوباره از پروژه‌های monolotic به سمت micro-service حرکت کردیم.

فرصت دستم بیاد، حتماً یک پروژه رو هم روی FastApi هم روی Actix-web کد میزنم تا تفاوت دیده بشه؛ البته چون توسعه دهنده پایتون هم هستم بایاس نمی‌کنم و زمان لازم برای توسعه رو هم خواهم گذاشت که هرکدوم چقدر ازم وقت گرفته.
👍4310🔥4
Docker
دوتا ابزار جدید اضافه کرده، چقدرم خوبه (البته من با یکیش کار کردم فعلا)

Docker model
برای دپلوی مدل‌های هوش مصنوعی، خوبیش اینه که docker compose هم می‌شناسه و می‌تونید مستقیم کانتینر کد خودتون رو به کانتینر مدل وصل کنید

دومی هم؛
Docker MCP
روی داکر دسکتاپ که کلاً راه‌اندازی سرور اختصاصی MCP رو تبدیل به بچه بازی کرده؛ ۴ تا تیک رو میزنی و وصل می‌شه 😑
23👍4
بهترین کاربرد
Nano banana
مدل تولید تصویر گوگل!
آیا درکی از تصویر رستم داشتید ؟
یا اونجاهایی که شاه‌نامه اون رو بزرگ و قدرتمند توصیف می‌کنه ؟

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


پینوشت؛
خیلی جالبه، حتی اگر بهش منبع از توصیف کوروش بزرگ هم بدید. از تولید تصاویرش اجتناب می‌کنه :
There are a lot of people I can help with, but I can't depict some public figures. Do you have anyone else in mind ?
21😁6🔥1👏1
RandRng
Photo
حکیم فردوسی،
فقط ی کتاب ننوشته، prompt engineering کرده!
چقدر جزئیات داره.

می‌تونید به مدل جزئیات رو بدید (از مدل‌های دیگه بخواید براتون از شاه‌نامه استخراج کنه)
25👍3🔥3💯1
از دردهایش چیزی نمی‌گفت؛
و من می‌دانستم
کارد، وقتی به استخوان می‌رسد
آدم‌ را لال می‌کند.


شب بخیر
👍147💯4🐳2
T'as l'air d'une chanson
Serge Reggiani
Mais t'as l'air d'une chanson
Qu'on chante entre garçons.


#flac
👍63
RandRng
Serge Reggiani – T'as l'air d'une chanson
میترسم
اون شب هم که خواستی به خوابم بیای
من با یادت بیدار مونده باشم


شب بخیر
19🔥3🐳3🗿1
#تجربه

بیشترین سوالی که از من شده و می‌شه (دوبار در سال حداقل، یکبار شروع تابستان و یکبار شروع دانشگاه)

بنظرتون می‌شه توی ۱ سال به سطح خوبی از برنامه‌نویسی رسید؟ بخصوص اینکه مفاهیم رو هم درک کرده باشم؟


جواب کوتاه:
۱ سال که هیچ، توی ۶ ماه هم می‌شه یا حتی توی ۳ ماه ولی ....

هرچیزی یک هزینه‌ای داره؛ بذارید خودم رو مثال بزنم!
۷-۸ سال پیش بعد از یکسری اتفاقات بد، یک موقعی به خودم اومدم دیدم بخاطر تصمیمات نادرست
وزنم به ۱۱۵ کیلو رسیده (بزرگترین مشکل من حجم غذایی هست که میخورم، هنوزم حواسم پرت بشه همینه؛ ۲-۳ برابر نرمال یک فرد هم قد خودم هست)
اولش فقط غذام رو کنترل کردم و شیرینی و ... رو حذف کردم به ۱۰۵ کیلو رسیدم و بعد یکباره تصمیم گرفتم وزنم رو کم کنم.
وزن کم کردن برام انقدر هدف مهمی شد که به خودم قول دادم ۳ ماهه اینکار رو بکنم.

نتیجه هم گرفتم؛ ۳ ماه بعد ۷۶ کیلو بودم. اما خیلی چیزا رو حذف کردم.
مهمونی رفتن، حذف شد.
بیرون رفتن، حذف شد.
غذای خارج از برنامه خوردن، حذف شد.
بطور کلی؛ زندگی اجتماعیم، حذف شد.
فقط با دوستان خیلی خیلی نزدیکم و اکثرا آخر شب بیرون میرفتم.
یا اگر زودتر میرفتم فقط قهوه تلخ یا چیزی میخوردم که نه شکر داشته باشه و نه کالری نه ....

من تونستم ۳ ماهه به هدفم برسم و ۵-۶ سال هم وزنم رو ثابت نگه‌داشتم تا شرایط برام سخت شد.

مثال دیگه؛
من کارم اوایل (بچه بودم) اینجوری شروع شد که ادمین سرور لینوکس بودم، کسی که خیلی چیزا ازش یاد گرفته بودم و منتور و مدیر تیمم بود از شرکت رفت.
چندسال بعد دیدمش متوجه شدم تغییر شغل داده به شبکه و خودش شرکت زده؛ نزدیک تابستون بود گفت مدرک CCNA بگیر بیا پیش خودم، گفتم CCNP بگیرم حقوق ۱.۵ برابر بهم میدی ؟ خندید گفت برو بگیر.

۳ ما ه تابستون؛ ۴.۵ صبح از خونه میزدم بیرون کلاس میرفتم تا ۴ بعدازظهر (دوره فوق فشرده بود از Net+ تا CCNP) نزدیک کلاسم یک کتابخونه بود میرفتم بعدش اونجا تا ۷ شب برای خوندن و بعد بر می‌گشتم خونه.
دوره و گرفتن مدرک آموزشگاه که تموم شد؛ می‌دونستم اینا بدردم نمی‌خوره کتابای خود Cisco رو خریدم
CCNA, CCNP, CCIE R&S
برای آزمون هم توی یکی از کشورهای همسایه ثبت‌نام کردم؛ هرروزی که بیدار می‌شدم.
تا جایی که می‌شد، کتاب و تمرین و تمرین...
آزمون
CCNA, CCNP
رو که دادم و مدرک رو گرفتم؛ شد شروع زندگی من بعنوان نیروی شبکه؛ ولی از ساعت‌ها و مدل خوندنم معلوم هست چیا رو بیخیال شدم دیگه ؟

اینارو گفتم که بگم؛ توی ۳ ماه - ۶ ماه همه کارب می‌شه کرد، اگه من تونستم؛ همه‌ی شماها می‌تونید!

ولی حاضرید هزینه‌اش رو پرداخت کنید ؟
به معنای واقعی زندگی اجتماعی؛ دوست؛ فامیل و .... همه کنسل می‌شه!
همین موضوع خیلی وقتا باعث یک اتفاقی می‌شه بهش می‌گیم Burnout.

شعله هرچی پر نور تر/بزرگتر بسوزه زودتر هم خاموش می‌شه.


استثنا توش خیلی کمه!

ولی حالا؛ به ۹۰٪ پیشنهاد نمی‌کنم اینکار رو، بذار بیشتر طول بکشه ولی زندگیت رو مختل نکنه، بنظرم از مسیر لذت ببرید به مقصد دیرتر هم برسید چیزی رو از دست نمی‌دید!

بجای ۶ ماه؛ بذار ۱ سال طول بکشه یا بجای ۱ سال، ۲ سال بخصوص اگر زیر ۲۵ سال هستید.


اینو توضیح دادم که دیگه کسی این سوال رو نپرسه که شدنی هست یا نه؛ همش به خود شما بستگی داره و اینکه چه چیزهایی رو فدای بدست آوردن چی می‌کنید!
95👍24👏2🔥1😐1
- ممد، چیکار می‌کنی؟ وقت داری این کد رو ببینی (لینک کد)
+ یه ۲۰ خط کد از پروژه فلان مونده، بزنم بعد چک کنم ؟

۲ ساعت بعد؛

- چک کردی ؟
+ نه!
- گفتی ۲۰ خط کد؛ ۵۰۰ خط کد زدی ؟ اینو ی چک می‌کردی
+ نه، ۲۰ خط کد زدم ولی اندازه ۵۰۰ خط مفهوم جدید دیدم، باید با جزئیات یاد می‌گرفتم وگرنه نمی‌تونستم بشینم.

این مکالمه واقعی من هست با یکی از دوستان، ۲۰ خط کد زدم توی Rust و پروژه اجرا شد اما یک سری مفاهیم برنامه‌نویسی سیستمی روی چیزی که دارم براش لایبراری می‌نویسم بود که خوب درکش نمی‌تونستم بکنم.

گفتم این رو متوجه بشم، بعد چک کنم! شروع کردم با Grok چت کردن راجبش، ساعت ۱۰‌ شب شروع شد و ۱۲ شب مطمئن شدم همرو متوجه شدم، بلند شدم!

با اینکه کدم کامل کار می‌کرد، برای اینکه مطمئن بشم چیزایی که Grok بهم می‌گه درست هست؛ خیلی‌ جاهاش رو خراب کردم که با ارورهاش هم آشنا بشم (این خیلی نکته مهمی هست که متأسفانه خیلی از برنامه نویسا تمرین نمی‌کنند، یک بار راجبش می‌نویسم حتماً) و توی همین کارها متوجه یک باگ منطقی و کاملاً مخفی هم شدم.

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