TECH STASH – Telegram
TECH STASH
212 subscribers
115 photos
5 videos
15 files
254 links
اینجا هر چی رو که یاد میگیرم، به اشتراک میزارم...
هوش مصنوعی، لینوکس، اوپن سورس، برنامه نویسی و...

Admin: @D3F4U1T_ARS
Download Telegram
سال نوتون مبارک.
با ساعاتی تاخیر :)

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

https://toplearn.com/courses/operating-system/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-network-plus
#mini_roadmap
بر اساس #تجربه

این یک roadmap ساده هست برای اونهایی که میخوان توی هر شاخه‌ای از برنامه‌نویسی بعنوان یک برنامه نویس خوب شناخته بشن :

زیرساخت کار هست :

۱- انتخاب و یادگیری زبان برنامه‌نویسی مد نظر : (فرض من پایتون هست)

توی این مرحله مقدمات رو یاد میگیرید تا سطح متوسط (از لحاظ کد زدن هر چیزی رو می‌تونید پیاده سازی کنید اما خب بهترین راهکار رو پیشنهاد نمی‌دید)

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

۲- Git
واجب هست بلد بودنش، اصلا سعی نکنید بپیچونید
کتاب پیشنهادی:
Head first git

3- Data structure and algorithm

واجب هست، امکان نداره مصاحبه‌ای شرکت کنید (شرکت‌های درست و حسابی) و حداقل ۲ تا مرحله مصاحبه‌ شما راجب این موضوعات نباشه

کتاب پیشنهادی: (قبلاً معرفی شده)
Data structure and Algorithm in python

حتماً باید مربوط به زبان برنامه‌نویسی مورد نظر خودتون باشه

4- System design
۹۰٪ کدهای مزخرفی که من میبینم ربطی به این نداره که برنامه‌نویس بد یا ضعیف بوده توی اون فریمورک یا زبان برنامه‌نویسی

موضوع اینه که توانایی طراحی سیستم رو نداشته.

به هیچ وجه Mid-level یا Senior نمی‌تونید بشید اگر نتونید system design خوبی ارائه بدید.

هم کتاب هم ویدئو‌های خوب بسیار موجود هست.

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

1- Linux
اگر ویندوز دولوپر نیستید حتماً حداقل مقدمات لینوکس رو بلد باشید

2- Docker
مدل سنتی ارائه کد واقعاً مرده توی شرکت‌های حرفه‌ای

3- SQL
هرکاری که بخواید انجام بدید، بالاخره ی جوری به یک دیتابیس ختم میشه دیفالت همیشه sql هست
کوئری خالی زدن مهم نیست یاد بگیرید اولویت کوئری‌هارو + چطور میشه optimize ترین کوئری رو زد

3- Advance concept
مربوط به زبان برنامه‌نویسی خودتون هست
برای پایتون من پیشنهادم به تازه‌کارها شروع این موارد بعد از ۱ سال کد زدن هست

کتاب :
Fluent python
Python Concurrency
High performance python
CPython Internals

خلاصه تجربیات من تو مصاحبه‌های مختلف مخصوصاً با
Amazon, Netflix
و چیزهایی که از دوستان در فیسبوک و اینستاگرام شنیدم
#Roadmap 2022

این رو برای یک دوستی که تازه داره سعی می‌کنه وارد، ماشین‌لرنینگ بشه نوشتم ؛
اول اینکه توجه کنید,
۱- ایشون تازه برای کارشناسی بورسیه گرفته و قراره شروع کنه درسش رو
۲- پایتون رو در سطح متوسطی بلد هست و چندسالی هست که کد میزنه (Data structure, Algorithm رو متوجه‌ هست)
۳- علاقه شدیدی به هوش مصنوعی داره و برخلاف خیلی‌ها که می‌خوان سریعتر کد بزنن ترجیح میده وقت بیشتری توی مقدمات بذاره تا حرفه‌ای تر جلو بره


RoadMap :

1- Numpy (and scipy):

. Numpy Beginners guide 3rd edition (packt)
. Python Numpy Beginners (AI publishing)
. Scientific Computing with Python .... 2nd edition (Claus Fuhrer - packt pub)
* High performance python ... 2nd edition (O'Reilly)

2- Pandas:

Effective Pandas (Matt Harrison)
Pandas in Action (Manning Pub)
Pandas 1.x cookbook ... 2nd edition (Packt pub)

3- Matplotlib (or other visualization libs)

Hands on matplotlib (Ashwin - Apress pub)
Data visualization with python for beginners ... ( AI publishing)

چیزی که خیلی مهمه اینه کار با OOP، api رو توی این کتابخونه یاد بگیرید.

3- Data Engineering
نه کامل اما بعضی مباحث واقعاً لازم هست :
Sql / NoSql / PySpark
اینها مباحثی هست که خیلی بدرد میخوره معمولاً

4- Scikit-learn :

Hands on machine learning with scikit-learn, ... (O'Reilly) - Part 1 only

Machine learning with pytorch and scikit-learn (Packt pub) - Part 1 only

5- Story telling
کتاب‌های زیادی برای این مورد وجود داره که بسته به علاقه و نوع نوشتاری که می‌پسندید می‌تونید انتخاب کنید

اما این بخش رو اصلا دستکم نگیرید (۹۹.۹٪ آموزش‌ها این موضوع رو منتقل نمی‌کنند و ۱۰۰٪ توی کار این موضوع واجب و حیاتی هست)

6-
آمار و احتمالات / ریاضیات / جبر

بستگی به خودتون داره؛ اگر فکر می‌کنید لازم هست کمی ریاضیات پایه رو مرور کنید
آمار و احتمال رو شاید بهتره حتی قبل از scikit-learn مرور کنید

کتابهای با عنوان statistical learning وجود داره برای پایتون که به سلیقه خودتون می‌تونید بخونید.
7- Deep learning (practical)

۲ تا کتابی که برای Machine learning معرفی کردم بخش دوم هر ۲ کتاب رو می‌تونید اینجا شروع کنید
Deep learning with python 2nd edition (Manning pub)
هم حتماً برای اونایی که Tensorflow هم می‌خوان کار کنند باید خونده بشه

اگر قرار هست کارهای deploy , ... هم انجام بدید اون خودش ی roadmap اساسی میخواد اما بطور ساده :

ML engineering / MLOps / Linux / Docker / Api development (FastApi) / Edge deployment (Tiny ML)

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

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

کتاب :
High performance python
جزو واجبات هست که بنظرم همه باید بخونند.
این یکی از جالب ترین ویدیو ها راجب Python بود و کلا نگاهم رو به ()super و همینطور OOP عوض کرد.

مهم ترین بخشش نحوه کار کردن super و cooperative inheritence بود که قدرت
*args, **kwargs
رو برام نمایان تر کرد.

حتما برای درک عمیق تر شی گرایی این ویدیو رو ببینید و بخش cooperative inheritence اش رو تمرین کنید.

https://www.youtube.com/watch?v=X1PQ7zzltz4
ویدیو به شدت عالی بود.
راجب اخراج های جدید و داستان هایی که داره اتفاق میفته.
هم از لحاظ اقتصادی، هم AI و ...

Key takeaway:
Don't be hyper-specialized.
Be a great generalist. (And specialized in one of them)

https://www.youtube.com/watch?v=hAwtrJlBVJY
کانال یوتیوب ایرانی بود که جدیدا پیدا کردم و طرف واقعا کارش درسته
- تو پروژه های خارجی شرکت داشته و دورکاری کار میکرده.
- تو زمینه Web Development تخصص داره.
- مطالب مفیدی داره که منحصر فارسی زبان ها هست.

https://www.youtube.com/@kalagar2
ارور هندلینگ به مزه Rust:
این ویدیو راجب یه پترن جالب و منحصر به فرد ارور هندلینگ به اسم Monadic Error Handling صحبت میکنه.

ارور هندلینگ های به سبک exception داخل پایتون یک نقطه قوت یا ضعف محسوب میشن بسته به دید افراد و پروژه استفاده شده.
اما با اومدن زبان Rust و Haskell این نوع جدید از هندل کردن ارور مطرح شده و بعضیا خیلی بیشتر ترجیح میدن.

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

https://www.youtube.com/watch?v=J-HWmoTKhC8
TECH STASH
ارور هندلینگ به مزه Rust: این ویدیو راجب یه پترن جالب و منحصر به فرد ارور هندلینگ به اسم Monadic Error Handling صحبت میکنه. ارور هندلینگ های به سبک exception داخل پایتون یک نقطه قوت یا ضعف محسوب میشن بسته به دید افراد و پروژه استفاده شده. اما با اومدن زبان…
بهش Railway Oriented Programming هم میگن.
در حالت پیشفرض مقدار خروجی به صورت آبجکت Ok به عنوان خروجی موفق به برنامه برگردانده میشه.
اما اگر به مشکلی بخوره از ریل Ok خارج میشه و وارد ریل Error میشه.

این مقاله انگلیسی بهتر از بنده راجب این پترن توضیح میده.

https://fsharpforfunandprofit.com/posts/recipe-part2/
تو این ویدیو هم راجب composition (ترکیب بندی) صحبت میشه و اینکه چرا بهتر از inheritance (ارث بری) هست.
معمولا استفاده از ارث بری کدبیس هارو اصلا ساده نمیکنه.

چون که وابستگی های داخل به شدت بالا میره و همین باعث سخت شدن توسعه و ماژولار کردن کد میشه.
نمونه داخل ویدیو مثال خیلی خوبی از این وابستگی هاست.
در مثال داخل ویدیو استفاده از پترن ارث بری برنامه نویس رو وادار یا ترغیب میکنه که از ارث بری استفاده کنه.

کد های ماژولار درخت بزرگی از ارث نیستند و برای ارث بری باید حتما دلیل خوبی داشته باشید.
در غیر اینصورت بهتره که از ترکیب بندی استفاده کنید تا بعدا به موارد دردناک refactor کردن نخورید.

https://www.youtube.com/watch?v=0mcP8ZpUR38
واسه دوستانی که میخوان وارد Web Development بشن.
این کتابچه راهنمای Front-end هست و خیلی بدرد میخوره برای دوستان فرانت اند کار که صفر تا صد فرانت رو پیش برن.

https://frontendmasters.com/guides/front-end-handbook/2024/
همینطور یه وبسایتی که بهتون ایده برای پروژه های تمرینی Front-end میده تا روی مهارت هاتون خیلی خوب کار کنید.

https://www.frontendpractice.com/
Forwarded from Linuxor ?
باورم نمیشه برای آموزش systemd هم سایت ساختن

systemd-by-example.com

خیلی خوبه مرحله به مرحله با اجرا بهتون یاد میده

🐧 @Linuxor
Flameshot
برنامه ای برای اسکرین شات که مدت طولانی هست که استفاده میکنم.
روی ویندوز هم خواستم اسکرین شات بگیرم و علایم و mark هایی بزارم و دیدم که این برنامه برای ویندوز هم وجود داره.
بنابراین گفتم که معرفی کنم همتون ازش استفاده ببرید.

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

https://flameshot.org/
آموزش داکر که چند وقت پیش تمومش کردم.

بخش هایی هم داره به زبان JavaScript که یه نمونه پروژه واقعی رو شبیه سازی میکنه و داکر رو کاربردی درس میده.

بخش هایی که پوشش میده شامل دستورات ابتدایی داکر، دیباگ کردن، ران کردن گروهی از container ها به وسیله docker-compose، ساخت image از طریق dockerfile، آپلود کردن ایمیجی که ساختین به ریپو خصوصی و ذخیره پایدار با استفاده از volumes.

جدا از DevOps ها که این مهارت براشون واجب هست خود Developer ها تو شرکت های خفن بهتره که مسلط باشن (مثل گیت).

پی نوشت: dockerhub تو کشور ما تحریم هست. اگر میخواید دسترسی داشته باشید HTTPS_PROXY رو ست کنید یا از proxychains استفاده کنید که در پست بعدی جزییاتش رو خدمتتون میگم.

همینطور بخش آپلود کردن به ریپو خصوصی توسط ما قابل انجام نیست به دلیل نبود دسترسی به سرویس های AWS. (هزینه میخواد فکر کنم)
ولی خب میتونید ریپو لوکال راه بندازید، container اش هست ولی خب خیلی دردسر داشت (از راه اندازی nginx اش گرفته تا authentication اش که من انجام ندادم).

Docker Tutorial for Beginners [FULL COURSE in 3 Hours]
واسه رفع فیلترینگ دو روش داریم تو لینوکس.

1. ست کردن متغییر های محیطی (Environment Variable).
2. و دیگری استفاده از proxychains.

روش اول: Environment Variable

دو تا متغییر داریم.
اولی HTTPS_PROXY که ترافیک های رمزگزاری شده رو میفرسته به پروکسی سرور.
دومی HTTP_PROXY که همون قبلیه ولی برای ترافیک های رمزنگاری نشده (که خیلی کم میبینم همچنین موردی باشه، خودم استفاده نمیکنم).

اولین عیب این روش اینه که برای همه برنامه ها کار نمیکنه. بیشترشون پشتیبانی میکنن.
دومین عیبش هم اینه که فقط پروکسی های http یا https رو ساپورت میکنه. ولی socks رو ساپورت نمیکنه.

تمام سرور های پروکسی که برنامه هایی مثل nekoray یا warp-plus هاست میکنن از قالب http هست. مگر اینکه پروکسی رو روی اینترنت آزاد ران میکنید... یعنی یه سرور روی اینترنت (که نمیکنید قطعا).

حالا برای اینکه بتونید ترافیک رو به سرور پروکسی هدایت کنید. با استفاده از
export HTTPS_PROXY=http://127.0.0.1:PORT
پروکسی رو روی ترمینالتون ست کنید. برنامه هایی که پشتیبانی کنن از این پروکسی استفاده خواهند کرد. جای PORT هم پورت مورد نظرتون رو ست کنید.

توجه کنید که سرور پروکسی شما باید http باشه یا ساپورت کنه.

روش دوم: proxychains

این روش با استفاده از inject کردن به DLL های برنامه هایی که با libc کامپایل شدن تنظیمات شبکه اش رو تغییر میده و کانکشن هارو به سمت پروکسی سرور هدایت میکنه.

معایبی نداره ولی حواستون باشه که یک تعداد کمی برنامه ها ممکنه که تاثیر نپذیرن (که تنها عیب این روش هست).

خب. تو این روش ما باید اول فایل کانفیگ رو تغییر بدیم.
sudo nano /etc/proxychains.conf
أخر فایل یه تنظیمات شبیه این میبینید.
[ProxyList]
# Here are comments
# add proxy here ...
# meanwile
# defaults set to "tor"
# socks5 127.0.0.1 9150
# socks4 127.0.0.1 9050
http 127.0.0.1 4500

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

حالا برای اینکه از proxychains استفاده کنید.
proxychains -q COMMAND
یا اگر دستور روت میخواید اجرا کنید.
sudo proxychains -q COMMAND
جای COMMAND دستور مورد نظرتون رو بزارید.

و فلگ q اطلاعات مربوط به اتصالات اینترنتی رو در ترمینال نشون نمیده (که ترمینال الکی کثیف نشه).
چند وقت پیش آموزش Bash علیرضا امیرصمیمی رو تموم کردم.

اولش که آشنا شدم واقعا زبان حال به هم زن و بی قاعده بود.

همچنان هم همینطوریه. اما با کاربرد هایی مثل build noscript و نوشتن PKGBUILD برای aur، ارزشمند شده.

تازه نگم که چند باری کلی فایل به پستم خورد که باید با ffmpeg تبدیل فرمت میکردم. اونجا خیلی بدرد خورد.
خلاصه اگر از شل لیوکس حسابی استفاده میکنید مثل من میتونید برید سمتش و یادش بگیرید.

https://www.aparat.com/playlist/15494