Random shi- tutorials – Telegram
Random shi- tutorials
206 subscribers
229 photos
27 videos
12 files
546 links
محتوای مفید برنامه نویسی و لینوکسی از سراسر دنیا ✍️
جوین شدن شما موجب شادی روح و روان ما میگردد😗
Download Telegram
Forwarded from جنگولرن
چرا در محیط پروداکشن نباید از سیستم cache پیشفرض جنگو استفاده کنیم؟

جواب:
چون برای پروداکشن مناسب نیست، برای development مناسبه.

چون آقای داکیومنت جنگو میگه:
Note that each process will have its own private cache instance, which means no cross-process caching is possible. This also means the local memory cache isn’t particularly memory-efficient, so it’s probably not a good choice for production environments. It’s nice for development.

راحت تر بگم:

به صورت پیشفرض، اگه backend برای cache تعریف نکنیم، خودش روی LocMemCache تنظیم شده.
و اگه مثلا اینجوری چیزی رو کش کنیم:
cache.set("my_key", "hello, world!", 30)

روی لوکال و با runserver اوکیه همه چی😎

اما اگه پروژه رو ببریم روی سرور و مثلا از nginx و gunicorn استفاده کنیم، چون معمولا چندین worker process ساخته میشه
و هر process کش خودش رو داره، پس ممکنه دستور ع:
cache.get("my_key")

به دنیا سلام نکنه 😢

پس چکار میکنن؟
از بکندهای دیگه برای کش استفاده میشه، اینا بکندهای دیگه هستن
FileBasedCache
DatabaseCache
PyMemcacheCache
RedisCache

توصیه: برای هر پروژه ای، لازم نیست حتما بری سراغ ردیس. دیتابیس کش هم برای پروژه هایی که بزرگ نیستن خوبه.

میدونستی؟ 🥱 بزار
این پست اسپانسر نداره، شما 🫵🏼 می تونید اسپانسرش بشید 😈
اخیرا یه سری آگهی در خصوص جذب نیرو اون هم به صورت «فقط سرباز امریه» گذاشتی، گفتم به عنوان کسی که همین الان امریه هست یه سری توضیحاتی رو بدم اگه صلاح دونستی با اعضا به اشتراک بذاری که مشکلی پیش نیاد.

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

و اما در خصوص شرکت‌هایی که به صورت آزادانه و عمومی میگن «فقط» سرباز امریه میگیریم، چه در شرایط قبل که امریه راحت‌تر بود و چه الان که سخت شده: ترجیحا سمتشون نرن.
امریه شدن یه بحثی هست که کاملا ریسکی و شانسیه و وقتی شما به امید امریه شدن وارد یه شرکت میشین یعنی به اون شرکت اعتماد کردین که ظرفیتش و بُرشی که داره رو به شما اختصاص بده. پس باید بدونین که قراره یکی از این سه حالت پیش بیاد:
- یا اون شرکت واقعا برای شما احترام قائله و می‌خواد به شما کمک کنه که سربازی رو راحت‌تر طی کنین، و خب در این صورت احتمالا باید خیلی نیروی خفن و مهره‌ی کلیدی برای اون شرکت باشین

- اون شرکت داره شما رو گول می‌زنه و از اونجا که شما باید چند ماهی (حدود یک سال، حداقل) سابقه داشته باشین تا امریه بشین، تو این مدت شما رو به بیگاری می‌گیره (با حقوق و مزایای پایین) و در نهایت شما رو اخراج می‌کنه یا به هر بهونه امریه نمی‌کنه و مجبورتون می‌کنه تا خودتون از شرکت برید
- اون شرکت شما رو امریه خواهد کرد ولی با حقوق سرباز و مزایای پایین که بعضی وقت‌ها این شرکت‌ها آن‌چنان سطحشون پایین هست که میگی کاش میرفتم ۱۸ ماه بالای برجک ولی ۲۴ ماه نمیومدم سربازی برای این شرکت

~Ali Rashidi
👍2
Forwarded from Linuxor ?
برای کسایی که بیشتر از 8 ساعت پشت سیستم کد میزنن یه تجربه ای از اشک مصنوعی بگم؛

توی ایران چندین نوع اشک مصنوعی داریم چیز هایی که من توی بازار زیاد دیدم اشک های تک دوز آرتلاک و ارتیپیک و سینالونه، و یا ژل لیپوزیک و هیچ کدوم نسخه پزشک لازم ندارن.

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

اما لیپیوزیک که ژل هست ماندگاری بیشتری داره و حداکثر روزی 3 بار استفاده می‌شه و بیشتر برای خشکی شدید استفاده می‌شه اما اون تک ویال ها بیشتر برای خشکی خفیف تا متوسط استفاده می‌شه.


قیمت هاشون هم امروز چند تا گرفتم به این صورت بود :
آرتلاک دونه ای 7 تومن؛ آرتلاک ادونس دونه ای 30 تومن؛ آرتپیک 6 تومن؛ ژل لیپوزیک 330 تومن که برای 28 روز یا کمتر استفاده میشه. همچنین نسخه ادونس آرتلاک حتی میتونه خشکی های شدید هم جوابگو باشه و مواد نگهدارنده نداره و بی ضرر، اگه خشکی معمولی دارید بقیشون هم جوابه.


@Linuxor
امروز توی دورهمی code & coffee حین کانکشن سازی صحبت خوبی شنیدم برای پیدا کردن پوزیشن های کارآموزی:

باتوجه به تخصص و علاقتون بگردید دنبال پوزیشن های شغلی، فارغ از سطحی که نیاز دارن
باهاشون ارتباط برقرار کنید(cold mail) و درخواست کارآموزی و یاد گیری در شرکت اونها رو (با دلایل معقول و قانع کننده مثل کسب تجربه و ارتقا دانش) داشته باشید
شانس موفقیت و پیدا کردن پوزیشن های بهتری دارید توی این موضوع
بجای اینکه درگیر شرکت هایی بشید که فارغ از هرگونه خروجی مناسب، صرفا وقتتون رو اتلاف میکنن و یا بیگاری میکشن صرفا به اسم پذیرش های کارآموزیی که میذارن
@Rs_tutorial #arj
Forwarded from Armin codes (Armin Shaikhy)
این هفته یه چالش واقعی با تیم بک‌اند داشتیم: چطور API پایدار بسازیم بدون اینکه کار سرویس‌های دیگه یا کاربران خراب بشه؟ 😅
چند نکته که وسط بحث پیش اومد:
Versioning (نسخه‌بندی)
بعضی‌ها می‌خواستن تغییرات جدید رو همون نسخه موجود اعمال کنن، اما من اصرار داشتم: هر تغییر بزرگ = نسخه جدید (v1, v2).
دلیل؟ سرویس‌های قدیمی باید بدون دردسر کار کنن و مشتری‌ها کم‌کم به نسخه جدید مهاجرت کنن.


Backward Compatibility (سازگاری به عقب)
وقتی یه فیلد جدید اضافه می‌شد یا رفتار endpoint تغییر می‌کرد، باید نسخه قبلی هنوز کار می‌کرد. این یکی از بحث‌های داغمون بود؛ چون تیم می‌خواست راحت تغییر بده، من می‌گفتم: «نه، نباید چیزی رو بشکنیم!»


Change Management (مدیریت تغییرات)
مستندسازی و changelog، تست‌های اتوماتیک و قوانین سخت برای حذف فیلدها یا تغییر رفتارها. اول هشدار، بعد تغییر. این مرحله باعث شد همه تیم‌ها روی یک خط باشن و کسی غافلگیر نشه.
Forwarded from جنگولرن
نکته هایی در مورد فایل های استاتیک جنگو – بخش سوم - آخر

توی دو بخش قبل گفتبم جنگو چطور فایل های استاتیک رو مدیریت میکنه.
حالا میخواهیم ببینیم توی development و production چه فرقی هست؟

وقتی debug=true باشه (یعنی حالت development) جنگو خودش فایل های استاتیک رو سرو میکنه.
این برای تست کافیه، ولی روی سرور واقعی (production) اصلاً توصیه نمیشه. چون هم کند ع هم امن نیست. (توضیح اینو توی کامنت همین پست میزارم)

توی production باید (بهتره) وب سرور (مثل nginx یا apache) فایل های استاتیک رو سرو کنن.
برای همین دستور collectstatic رو اجرا میکنیم تا همه فایل ها توی یه پوشه (همون STATIC_ROOT) جمع بشن و بعد اون مسیر رو برای وب سرور مشخص می کنیم.

فرض کن STATIC_ROOT ما اینه:

/home/youruser/myproject/staticfiles/


توی nginx معمولا اینجوری می نویسیم:
location /static/ {
alias /home/youruser/myproject/staticfiles/;
}

اینجا alias ینی:
هر وقت کاربر آدرس /static/... خواست، nginx برو سراغ پوشه staticfiles/ و ادامه مسیر رو اونجا پیدا کن.

مثلا:

/static/css/style.css


تبدیل میشه به:

/home/youruser/myproject/staticfiles/css/style.css


یه دستور دیگه هم هست به اسم root:
location /static/ {
root /home/youruser/myproject/;
}

اینجا مسیر /static/ از URL حذف نمیشه و میچسبه به آخر root.

مثلا همون آدرس ع بالا:

/static/css/style.css

میشه:

/home/youruser/myproject/static/css/style.css


فرق شون چی شد؟

اون alias - بخش location (یعنی /static/) رو کنار می ذاره.

اون root - بخش location رو نگه میداره و به مسیر اضافه می کنه.

کلمه اون رو گذاشتم اولشون که راست چین بشن این دو تا خط بالایی 😁

برای همین ما معمولا برای static files از alias استفاده میکنیم.

اینارو می دونستی 🥱 بزار
وگرنه هر چی دوس داری بزار ❤️
1
کدنویسی روی iPad با کمک اندروید و Termux
#پارت یک

اگر از خانواده دستگاه‌های اپل استفاده کرده باشید، می‌دونید کار کردن روی iOS/iPadOS همیشه محدودیت‌های خاص خودش رو داره. یکی از بزرگ‌ترین مشکلات من این بود که می‌خواستم آیپد رو جایگزین لپ‌تاپ کنم برای بیرون و کدنویسی کنم، ولی هیچ ادیتور درست‌وحسابی برای جنگو و پایتون روی آیپد پیدا نکردم.

راه‌حل؟ استفاده از قدرت اندروید.
روی گوشی اندرویدی با Termux یک وب‌سرور VS Code (کامل داخل مرورگر) بالا آوردم و حالا روی آیپد می‌تونم مثل لپ‌تاپ کد بزنم، بدون دغدغه محدودیت‌ها.

مزیت اصلی؟

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

—————————————————————
🛠 مراحل راه‌اندازی

1⃣ آماده‌سازی Termux
termux-setup-storage
pkg update -y && pkg upgrade -y
pkg install tur-repo -y
pkg install code-server python git tmux openssl-tool -y

2⃣ساخت پوشه پروژه
mkdir -p ~/projects/ && cd ~/projects/
python -m pip install --upgrade pip setuptools wheel

3⃣اجرای code-server با رمز دلخواه
export PASSWORD="12345678"
code-server --bind-addr 0.0.0.0:8080 &

درصورت نیاز به تغییرات در تنظیمات
nano ~/.config/code-server/config.yaml

و محتوا رو به این شکل تنظیم کنید:
bind-addr: 0.0.0.0:8080
auth: password
password: "12345678"
cert: false

5⃣بعد از انجم تغییرات باید code-server به این نحو ری‌استارت بشه:
pkill -f code-server
code-server


مارا دنبال کنید:
#arj✒️
🔰@Rs_tutorial
2🆒1
Random shi- tutorials
کدنویسی روی iPad با کمک اندروید و Termux #پارت یک اگر از خانواده دستگاه‌های اپل استفاده کرده باشید، می‌دونید کار کردن روی iOS/iPadOS همیشه محدودیت‌های خاص خودش رو داره. یکی از بزرگ‌ترین مشکلات من این بود که می‌خواستم آیپد رو جایگزین لپ‌تاپ کنم برای بیرون…
کدنویسی روی iPad با کمک اندروید و Termux
#پارت دو:
استفاده از کد ادیتور داخل مرورگر آیپد.

1. هات اسپات دستگاهی که پیاده سازی رو روش انجام دادیم روشن
و آیپد رو وصل کن به همون شبکه.


3. آی‌پی گوشی رو از این مسیر داخل آیپد پیدا کن:
Setting>wifi>هات‌اسپات‌ گوشیتون>ipv4 ADDRESS
ایپی که جلوی router نوشته آیپی گوشی شماست

4. روی آیپد مرورگر باز کن :
ایپی گوشی رو روی پورت مدنظر باز کن( مثلا ایپی ما 192.168.43.1 هست:)

192.168.43.1:8080

5. پسورد تنظیم شده توی ستاپ اولیه رو بزن، و وارد VS Code شو


نکته:
برای نصب افزونه ها، باید توی ترماکس، از یکی از دو شیوه زیر استفاده کنید:
# From the Coder extension

marketplace code-server --install-extension ms-python.python

# From a downloaded VSIX on the file system
code-server --install-extension downloaded-ms-python.python.vsix

اولی از مارکت‌پلیس خود code-server که Open-VSX extension gallery هست
و دومی فایل vsix افزونه مورد نظرتون رو دانلود کنید و با اون نصب کنید(از داخل آیپد هم قابل انجام هست)

مارا دنبال کنید:
#arj✒️
🔰@Rs_tutorial
1
Random shi- tutorials
نکته:
برای نصب افزونه ها، باید توی ترماکس، از یکی از دو شیوه زیر استفاده کنید:
درحال حاضر تنها مشکل این کار نداشتن مارکت‌پلیس vsCode برای افزونه هاست و باید دستی نصب کرد
که اونم انشالله بزوری راهکاری براش پیدا میکنم💀

اگر از دوستان کسی حوصله تست و فیکسش رو داشت هم که عالی میشه
این منبع کمک کننده خواهد بود:
https://coder.com/docs/code-server/FAQ
1
اگر Vibe Coding می کنید، احتمالاً جزو یکی از این دو دسته‌ هستین:

یا از ابزاری مثل Cursor استفاده می‌کنید که Agent مستقیماً با کدهای پروژه‌تون تعامل داره، یا از نسخه وب استفاده می کنید و کدهای پروژه رو دستی کپی می‌کنید و به AI می‌دید.

اگر جزو دسته دوم هستید، احتمالا این فرایند براتون توی پروژه‌های بزرگ با تعداد فایل‌های زیاد، گاهی خسته‌کننده می‌شه. باید هر بار فایل‌ها رو پیدا کنید، کدها رو کپی کنید و اگر Agent‌تون (مثل Claude) زود به محدودیت برسه، این کار حسابی پهنای باند اعصابتون رو درگیر می کنه.
توی پروژه هایی که Vibe Coding لازمه، من جزو دسته دوم هستم و به همین دلیل، یه اسکریپت پایتونی نوشتم که کارم رو راحت بکنه.

کارش اینکه میاد مسیر یک دایرکتوری رو از شما دریافت می کنه و فایل هایی که داخلش هستند رو توی یک فایل txt با مسیر هاشون Merge می کنه.

https://github.com/naseridev/vibemerge

@DevTwitter | <Nima Naseri/>
1
Forwarded from TheAliBigdeli Channel
از اونجایی که در جریان کیفیت کم صدای دوره FastAPI بودم یسری اسکریپت نوشتم که حجم و کیفیت صدا رو تقویت کنه، سعی می کنم در اسرع وقت در هفته جاری ویدئو های قبلی رو با ویدئو های با کیفیت تر جایگزین کنم

#course
#fastapi
#annoucement
Forwarded from TheAliBigdeli Channel
enhancer_bulk.py
4.9 KB
اینم اسکریپتی که گفته بودم برای افزایش کیفیت حجم صدا که می تونین توی یه دایرکتوری input تمام ویدئو ها رو بگذارید و بعد داخل کد تنظیمات دلخواه رو ست و اجراش کنین و منتظر بمونین. به صورت parallel و یا با gpu هم اجرا میشه فقط باید اول ffmpeg رو دانلود و روی سیستمتون قرار بدید و دایرکتوری درست رو بهش برای اجرا بدید.
چندتا عامل رو توی کد در نظر گرفتم COMPRESSOR و EXPANDER و GAINER به همراه یسری تنظیمات بیشتر برای کیفیت و فشرده سازی که باعث میشه خروجی مناسبی رو بتونین بگیرید

#python
#code
لینکدین یک پالیسی جدید گذاشته که دیفالت از دیتاهاتون استفاده میکنه برای آموزش مدل های جنرتیو
اگر خواستید از این لینک میتونید خاموشش کنید
http://linkedin.com/mypreferences/d/settings/data-for-ai-improvement
Forwarded from KALI
اصلی‌ترین کارهایی که usermod می‌تونه بکنه (با مثال)

@kali_signal

1. تغییر نام کاربری (rename)
وقتی می‌خوای olduser رو به newuser تغییر بدی و فولدر خونه رو هم جابجا کنی:

sudo usermod -l newuser -d /home/newuser -m olduser

-l نام لاگین رو عوض می‌کنه، -d مسیر home رو می‌ده و -m باعث میشه محتوای home هم منتقل بشه.


2. تغییر دایرکتوری خانه (home) بدون انتقال
فقط آدرس جدید رو ثبت کنی (بدون -m):

sudo usermod -d /home/newpath username

اگر خواستی فایل‌ها هم منتقل شن، -m بذار.


3. تغییر شل لاگین کاربر
مثلاً تنظیم zsh به‌عنوان شل:

sudo usermod -s /bin/zsh username

(-s یا --shell).


4. اضافه کردن کاربر به گروه (بدون حذف گروه‌های قبلی)
نکته: اگر فقط -G بدی، گروه‌های قبلی حذف میشه؛ برای نگهداریِ گروه‌های قبلی از -a (append) استفاده کن:

sudo usermod -a -G docker,git username

این خط username رو به گروه‌های docker و git اضافه می‌کنه و عضویت قبلی رو حفظ می‌کنه. خیلی مهمه؛ اگر -a رو نزنی، کاربر از بقیه گروه‌ها پاک میشه.


5. قفل و باز کردن حساب کاربری
قفل (غیرفعال کردن لاگین):

sudo usermod -L username

بازکردن:
sudo usermod -U username

قفل در واقع ! رو جلوی hash پسورد می‌ذاره؛ یعنی لاگین محلی غیرممکن میشه.


6. تعیین تاریخ انقضای حساب
اگر می‌خوای بعد از تاریخ مشخصی اکانت غیرفعال بشه:

sudo usermod -e 2026-01-01 username

تاریخ به فرمت YYYY-MM-DD.


7. تغییر UID یا GID
مثلاً تغییر UID کاربر (مواظب باش: فایل‌ها ممکنه متعلقیت‌شون mismatch بشه):

sudo usermod -u 1500 username
sudo usermod -g staff username    # primary group

بعد از تغییر UID بهتره مالکیت فایل‌های قبلی رو هم اصلاح کنی (chown -R).


8. تنظیم فیلد توضیحات (GECOS)
برای اسم کامل یا ایمیل مدیر:

sudo usermod -c "Ali Hedari, Dev" username


@kali_signal
1
Forwarded from جنگولرن
دستور flush توی جنگو چکار میکنه؟

این دستور اینجوری اجرا میشه:
python manage.py flush

چکار میکنه؟
همه دیتاهای دیتابیس، بجز دیتاهای جدول migrations رو پاک میکنه. در واقع TRUNCATE میکنه.

سوال: TRUNCATE چیه؟
دستور TRUNCATE ربطی به جنگو نداره و دستور SQL هست. اینجوری معمولا نوشته میشه
TRUNCATE TABLE felan

فلان هم اسم جدولی هست که میخوای truncate کنی. این دستور همه دیتای جدول رو حذف میکنه، با این تفاوت که مثل DELETE لاگ نمیشه و خیلی سریع هست. لذا خطرناک هم هست . و البته identity یا همون Auto Increment رو ریست میکنه.

برای دیدن کد ع sql ع دستور flust می تونید بنویسید:
python manage.py sqlflush

راستی بعد از flush ، جنگو post_migrate میکنه.

نظر عمو جی پی تی در مورد post_migrate:

سیگنال post_migrate برای این طراحی شده که بعد از هر بار همگام‌سازی دیتابیس (migrate یا flush)، داده‌ها و تنظیمات لازم دوباره ساخته بشن.
چیزهایی که معمولا انجام میده:
ایجاد پرمیشن‌ها برای تمام مدل‌ها (هر بار بعد از flush، جدول auth_permission دوباره پر میشه).
ساخت گروه‌ها یا داده‌های پیش‌فرض که بعضی اپلیکیشن‌ها نیاز دارن.
مثلا جنگو برای اپلیکیشن auth، همیشه پرمیشن‌های add, change, delete, view رو دوباره ایجاد می‌کنه.
اجرای هر سیگنالی که تو پروژه به post_migrate وصل کردی.
مثلا اگر خودت کدی نوشتی که بعد از post_migrate یه کاربر پیش‌فرض یا داده‌ی خاص بسازه، اون هم دوباره اجرا میشه.


این post_migrate جالبه

اینجوری تستش کنید:
یه migrate الکی بزنید، پیغام میده که چیزی برای مایگریت نیست، اما کارهایی روی دیتابیس کرده.
مثلا برو و توی جدول auth_permission یکی از codename هارو تغییر بده. مثلا یه عدد آخرش اضافه کن.
بعد دوباره migrate رو بزن و باز میگه چیزی برای مایگریت نیست.
حالا برو جدول auth_permission رو ببین. یه سطر بهش اضافه شده

مقدارش چیه؟؟؟
اگه میدونی یا تست ش کردی، جواب رو کامنت کن 😁😈
🔥1
Forwarded from localhost (Yousef Taheri)
خیلی وقتا نصب پکیج در لینوکس با خطا رو به‌ رو میشه.
Debian/Ubuntu:

sudo apt update && sudo apt --fix-broken install
پاکسازی کش: sudo apt clean
رفع قفل‌ها: sudo rm -f /var/lib/dpkg/lock-frontend

RHEL/CentOS:

sudo yum clean all && sudo yum makecache
حل وابستگی: sudo yum install --skip-broken

همیشه فضای دیسک، مخازن و DNS رو هم بررسی کنید.
Forwarded from Linuxor ?
توی بعضی ریپو های گیت دیدید کامیت ها چقدر منظم نوشته می‌شن ؟ مثلا عکس بالا رو ببینید اول همشون نوشته fix یا feat که البته اینارو دستی نمی‌نویسن و یا اگه دستی بنویسن ممکنه توی بعضی کامیتا فراموش کنن.
یه ابزار هست بهتون کمک میکنه قبل از کامیت پیام کامیت رو آماده کنید و طبق قالب خاصی براتون کامیت رو درست می‌کنه. فقط کافیه نصبش کنید و بجای
git commit
بزنید
git cz
ازتون سولای لازم رو می‌پرسه و کامیت رو براتون آماده می‌کنه


نصب‌:
commitizen.github.io/cz-cli

@Linuxor
انواع مدل‌های رشد تخصصی در دنیای نرم‌افزار
(در دنیای توسعه نرم‌افزار چه شکلی باشم بهتر است)

وقتی درباره‌ی متخصصان حوزه‌ی نرم‌افزار صحبت می‌کنیم، همیشه این سوال پیش می‌آید: آیا بهتر است فقط در یک زمینه عمیق شویم یا در چند حوزه مختلف همزمان؟
برای پاسخ به این سوال، سه مدل رایج وجود دارد که در دنیا با استعاره‌های حروف لاتین معرفی می‌شوند:

- مدل I-Shaped
فردی با تخصص عمیق در یک حوزه خاص، اما در سایر حوزه‌ها دانشی ندارد ( شاید بهتر است بگوییم، دانش محدود نسبت به سایر حوزه‌ها ).
مثلاً یک برنامه‌نویس فقط در جاوا بسیار حرفه‌ای است، اما از معماری نرم‌افزار یا مدیریت دیتابیس چیزی نمی‌داند.

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

- مدل Dash-Shaped (Generalist)
فردی که در موضوعات زیادی دانش سطحی دارد، اما در هیچ‌کدام عمیق نیست.
مثل کسی که از همه زبان‌ها و ابزارها کمی بلد است، اما نمی‌تواند در یک پروژه جدی مسئولیت سنگین بر عهده بگیرد.

مزیت: انعطاف‌پذیری بالا
ضعف: نداشتن عمق تخصص

- مدل T-Shaped
ترکیبی از دو مدل قبلی؛ یعنی دانش عمیق در یک زمینه اصلی + دانش سطحی از حوزه‌های مجاور.
به‌عنوان مثال: یک Backend Developer که در طراحی API و دیتابیس متخصص است، اما در UI، DevOps و امنیت هم شناخت اولیه دارد.

مزیت: هم توانایی حل مسائل پیچیده را دارد و هم می‌تواند با تیم‌های مختلف همکاری مؤثر داشته باشد.

ارتباط نوع پروژه با شکل تخصص


در پروژه‌های کوچک که معمولاً یک یا دو نفر مسئولیت چند نقش را بر عهده می‌گیرند، مدل Dash-Shaped مفیدتر است. چون یک نفر باید همزمان کدنویسی کند، تست بنویسد، کمی طراحی UI انجام دهد و حتی کارهای DevOps را هم پوشش دهد.

اما در پروژه‌های بزرگ، مدل‌های I-Shaped و T-Shaped ضروری هستند. چون پروژه پیچیده است، هر حوزه نیازمند متخصص عمیق خودش است، و در عین حال افرادی لازم‌اند که بین تیم‌ها پل بزنند (T-Shaped).

پیشنهاد من این است که ابتدا Dash-Shaped باشید؛ یعنی در ابتدای مسیر کاری، دانش کلی و سطحی از حوزه‌های مختلف به دست آورید تا درک وسیع‌تری از دنیای نرم‌افزار پیدا کنید.

سپس در یک حوزه اصلی عمیق شوید و به‌مرور، شناخت کاربردی خود از سایر حوزه‌ها را تکمیل کنید. این ترکیب شما را به یک متخصص T-Shaped تبدیل می‌کند؛ مدلی ارزشمند که هم در تیم‌های کوچک و هم در پروژه‌های بزرگ می‌تواند اثرگذار و متمایز باشد.

موفق باشید! 🌹

@srfirouzi_channel
Forwarded from Linuxor ?
می‌دونستین نیازی نیست برای ولیدیت کردن شماره تلفن لایبری ینویسید گوگل خودش یدونه نوشته ااگه خواستید اپلیکیشن جهانی بنویسید خیلی جلوتون می‌ندازه چون بقیه کشورا شماره هاشون یکم دنگو فنگ داره مثلا تو بریتانیا شماره ها ممکنه یا ده رقمی باشن یا یازده رقمی

github.com/google/libphonenumber

@Linuxor
Forwarded from Linuxor ?
ساختن README همیشه یه کار سخت بوده، کلی زحمت می‌کشیم کد های پروژه رو می‌زنیم اما وقتی می‌رسه به README نمی‌دونیم توش چی بنویسیم‌؟ و جالب اینجاست اگه README خوب نباشه کسی جذبش نمی‌شه و ممکنه کل زحماتمون هدر بره. اینجا کلی README که خوب نوشته شدن رو جمع کرده ازش می تونید برای پروژه های خودتون الگو بگیرید:


github.com/matiassingers/awesome-readme

@Linuxor