امروز توی دورهمی code & coffee حین کانکشن سازی صحبت خوبی شنیدم برای پیدا کردن پوزیشن های کارآموزی:
باتوجه به تخصص و علاقتون بگردید دنبال پوزیشن های شغلی، فارغ از سطحی که نیاز دارن@Rs_tutorial #arj
باهاشون ارتباط برقرار کنید(cold mail) و درخواست کارآموزی و یاد گیری در شرکت اونها رو (با دلایل معقول و قانع کننده مثل کسب تجربه و ارتقا دانش) داشته باشید
شانس موفقیت و پیدا کردن پوزیشن های بهتری دارید توی این موضوع
بجای اینکه درگیر شرکت هایی بشید که فارغ از هرگونه خروجی مناسب، صرفا وقتتون رو اتلاف میکنن و یا بیگاری میکشن صرفا به اسم پذیرش های کارآموزیی که میذارن
Forwarded from Armin codes (Armin Shaikhy)
این هفته یه چالش واقعی با تیم بکاند داشتیم: چطور API پایدار بسازیم بدون اینکه کار سرویسهای دیگه یا کاربران خراب بشه؟ 😅
چند نکته که وسط بحث پیش اومد:
Versioning (نسخهبندی)
بعضیها میخواستن تغییرات جدید رو همون نسخه موجود اعمال کنن، اما من اصرار داشتم: هر تغییر بزرگ = نسخه جدید (v1, v2).
دلیل؟ سرویسهای قدیمی باید بدون دردسر کار کنن و مشتریها کمکم به نسخه جدید مهاجرت کنن.
Backward Compatibility (سازگاری به عقب)
وقتی یه فیلد جدید اضافه میشد یا رفتار endpoint تغییر میکرد، باید نسخه قبلی هنوز کار میکرد. این یکی از بحثهای داغمون بود؛ چون تیم میخواست راحت تغییر بده، من میگفتم: «نه، نباید چیزی رو بشکنیم!»
Change Management (مدیریت تغییرات)
مستندسازی و changelog، تستهای اتوماتیک و قوانین سخت برای حذف فیلدها یا تغییر رفتارها. اول هشدار، بعد تغییر. این مرحله باعث شد همه تیمها روی یک خط باشن و کسی غافلگیر نشه.
چند نکته که وسط بحث پیش اومد:
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 ما اینه:
توی nginx معمولا اینجوری می نویسیم:
اینجا alias ینی:
هر وقت کاربر آدرس /static/... خواست، nginx برو سراغ پوشه staticfiles/ و ادامه مسیر رو اونجا پیدا کن.
مثلا:
تبدیل میشه به:
یه دستور دیگه هم هست به اسم root:
اینجا مسیر /static/ از URL حذف نمیشه و میچسبه به آخر root.
مثلا همون آدرس ع بالا:
میشه:
فرق شون چی شد؟
اون alias - بخش location (یعنی /static/) رو کنار می ذاره.
اون root - بخش location رو نگه میداره و به مسیر اضافه می کنه.
کلمه اون رو گذاشتم اولشون که راست چین بشن این دو تا خط بالایی 😁
برای همین ما معمولا برای static files از alias استفاده میکنیم.
اینارو می دونستی 🥱 بزار
وگرنه هر چی دوس داری بزار ❤️
توی دو بخش قبل گفتبم جنگو چطور فایل های استاتیک رو مدیریت میکنه.
حالا میخواهیم ببینیم توی 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
2⃣ساخت پوشه پروژه
3⃣اجرای code-server با رمز دلخواه
درصورت نیاز به تغییرات در تنظیمات
و محتوا رو به این شکل تنظیم کنید:
5⃣بعد از انجم تغییرات باید code-server به این نحو ریاستارت بشه:
مارا دنبال کنید:
#arj✒️
🔰@Rs_tutorial
#پارت یک
اگر از خانواده دستگاههای اپل استفاده کرده باشید، میدونید کار کردن روی 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 شو ✨
نکته:
برای نصب افزونه ها، باید توی ترماکس، از یکی از دو شیوه زیر استفاده کنید:
اولی از مارکتپلیس خود code-server که Open-VSX extension gallery هست
و دومی فایل vsix افزونه مورد نظرتون رو دانلود کنید و با اون نصب کنید(از داخل آیپد هم قابل انجام هست)
مارا دنبال کنید:
#arj✒️
🔰@Rs_tutorial
#پارت دو:
استفاده از کد ادیتور داخل مرورگر آیپد.
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
که اونم انشالله بزوری راهکاری براش پیدا میکنم💀
اگر از دوستان کسی حوصله تست و فیکسش رو داشت هم که عالی میشه
این منبع کمک کننده خواهد بود:
https://coder.com/docs/code-server/FAQ
Coder
FAQ: code-server config, install extensions & more | code-server Docs
Answers to all your FAQs: Learn how to expose code-server, use it on a iPad, install extensions, debug issues and more.
❤1
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
اگر Vibe Coding می کنید، احتمالاً جزو یکی از این دو دسته هستین:
یا از ابزاری مثل Cursor استفاده میکنید که Agent مستقیماً با کدهای پروژهتون تعامل داره، یا از نسخه وب استفاده می کنید و کدهای پروژه رو دستی کپی میکنید و به AI میدید.
اگر جزو دسته دوم هستید، احتمالا این فرایند براتون توی پروژههای بزرگ با تعداد فایلهای زیاد، گاهی خستهکننده میشه. باید هر بار فایلها رو پیدا کنید، کدها رو کپی کنید و اگر Agentتون (مثل Claude) زود به محدودیت برسه، این کار حسابی پهنای باند اعصابتون رو درگیر می کنه.
توی پروژه هایی که Vibe Coding لازمه، من جزو دسته دوم هستم و به همین دلیل، یه اسکریپت پایتونی نوشتم که کارم رو راحت بکنه.
کارش اینکه میاد مسیر یک دایرکتوری رو از شما دریافت می کنه و فایل هایی که داخلش هستند رو توی یک فایل txt با مسیر هاشون Merge می کنه.
https://github.com/naseridev/vibemerge
@DevTwitter | <Nima Naseri/>
یا از ابزاری مثل 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
#course
#fastapi
#annoucement
Forwarded from TheAliBigdeli Channel
enhancer_bulk.py
4.9 KB
اینم اسکریپتی که گفته بودم برای افزایش کیفیت حجم صدا که می تونین توی یه دایرکتوری input تمام ویدئو ها رو بگذارید و بعد داخل کد تنظیمات دلخواه رو ست و اجراش کنین و منتظر بمونین. به صورت parallel و یا با gpu هم اجرا میشه فقط باید اول ffmpeg رو دانلود و روی سیستمتون قرار بدید و دایرکتوری درست رو بهش برای اجرا بدید.
چندتا عامل رو توی کد در نظر گرفتم COMPRESSOR و EXPANDER و GAINER به همراه یسری تنظیمات بیشتر برای کیفیت و فشرده سازی که باعث میشه خروجی مناسبی رو بتونین بگیرید
#python
#code
چندتا عامل رو توی کد در نظر گرفتم COMPRESSOR و EXPANDER و GAINER به همراه یسری تنظیمات بیشتر برای کیفیت و فشرده سازی که باعث میشه خروجی مناسبی رو بتونین بگیرید
#python
#code
Forwarded from Webinarfarsi | Soheib Kiani | وبینار فارسی
لینکدین یک پالیسی جدید گذاشته که دیفالت از دیتاهاتون استفاده میکنه برای آموزش مدل های جنرتیو
اگر خواستید از این لینک میتونید خاموشش کنید
http://linkedin.com/mypreferences/d/settings/data-for-ai-improvement
اگر خواستید از این لینک میتونید خاموشش کنید
http://linkedin.com/mypreferences/d/settings/data-for-ai-improvement
LinkedIn
LinkedIn Login, Sign in | LinkedIn
Login to LinkedIn to keep in touch with people you know, share ideas, and build your career.
Forwarded from KALI
اصلیترین کارهایی که usermod میتونه بکنه (با مثال)
@kali_signal
1. تغییر نام کاربری (rename)
وقتی میخوای olduser رو به newuser تغییر بدی و فولدر خونه رو هم جابجا کنی:
-l نام لاگین رو عوض میکنه، -d مسیر home رو میده و -m باعث میشه محتوای home هم منتقل بشه.
2. تغییر دایرکتوری خانه (home) بدون انتقال
فقط آدرس جدید رو ثبت کنی (بدون -m):
اگر خواستی فایلها هم منتقل شن، -m بذار.
3. تغییر شل لاگین کاربر
مثلاً تنظیم zsh بهعنوان شل:
(-s یا --shell).
4. اضافه کردن کاربر به گروه (بدون حذف گروههای قبلی)
نکته: اگر فقط -G بدی، گروههای قبلی حذف میشه؛ برای نگهداریِ گروههای قبلی از -a (append) استفاده کن:
این خط username رو به گروههای docker و git اضافه میکنه و عضویت قبلی رو حفظ میکنه. خیلی مهمه؛ اگر -a رو نزنی، کاربر از بقیه گروهها پاک میشه.
5. قفل و باز کردن حساب کاربری
قفل (غیرفعال کردن لاگین):
بازکردن:
قفل در واقع ! رو جلوی hash پسورد میذاره؛ یعنی لاگین محلی غیرممکن میشه.
6. تعیین تاریخ انقضای حساب
اگر میخوای بعد از تاریخ مشخصی اکانت غیرفعال بشه:
تاریخ به فرمت YYYY-MM-DD.
7. تغییر UID یا GID
مثلاً تغییر UID کاربر (مواظب باش: فایلها ممکنه متعلقیتشون mismatch بشه):
بعد از تغییر UID بهتره مالکیت فایلهای قبلی رو هم اصلاح کنی (chown -R).
8. تنظیم فیلد توضیحات (GECOS)
برای اسم کامل یا ایمیل مدیر:
@kali_signal
@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 توی جنگو چکار میکنه؟
این دستور اینجوری اجرا میشه:
چکار میکنه؟
همه دیتاهای دیتابیس، بجز دیتاهای جدول migrations رو پاک میکنه. در واقع TRUNCATE میکنه.
سوال: TRUNCATE چیه؟
دستور TRUNCATE ربطی به جنگو نداره و دستور SQL هست. اینجوری معمولا نوشته میشه
فلان هم اسم جدولی هست که میخوای truncate کنی. این دستور همه دیتای جدول رو حذف میکنه، با این تفاوت که مثل DELETE لاگ نمیشه و خیلی سریع هست. لذا خطرناک هم هست . و البته identity یا همون Auto Increment رو ریست میکنه.
برای دیدن کد ع sql ع دستور flust می تونید بنویسید:
راستی بعد از flush ، جنگو post_migrate میکنه.
نظر عمو جی پی تی در مورد post_migrate:
این post_migrate جالبه
اینجوری تستش کنید:
یه migrate الکی بزنید، پیغام میده که چیزی برای مایگریت نیست، اما کارهایی روی دیتابیس کرده.
مثلا برو و توی جدول auth_permission یکی از codename هارو تغییر بده. مثلا یه عدد آخرش اضافه کن.
بعد دوباره migrate رو بزن و باز میگه چیزی برای مایگریت نیست.
حالا برو جدول auth_permission رو ببین. یه سطر بهش اضافه شده
مقدارش چیه؟؟؟
اگه میدونی یا تست ش کردی، جواب رو کامنت کن 😁😈
این دستور اینجوری اجرا میشه:
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:
RHEL/CentOS:
همیشه فضای دیسک، مخازن و DNS رو هم بررسی کنید.
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
Forwarded from Linuxor ?
توی بعضی ریپو های گیت دیدید کامیت ها چقدر منظم نوشته میشن ؟ مثلا عکس بالا رو ببینید اول همشون نوشته fix یا feat که البته اینارو دستی نمینویسن و یا اگه دستی بنویسن ممکنه توی بعضی کامیتا فراموش کنن.
یه ابزار هست بهتون کمک میکنه قبل از کامیت پیام کامیت رو آماده کنید و طبق قالب خاصی براتون کامیت رو درست میکنه. فقط کافیه نصبش کنید و بجای
git commit
بزنید
git cz
ازتون سولای لازم رو میپرسه و کامیت رو براتون آماده میکنه
نصب:
commitizen.github.io/cz-cli
@Linuxor
یه ابزار هست بهتون کمک میکنه قبل از کامیت پیام کامیت رو آماده کنید و طبق قالب خاصی براتون کامیت رو درست میکنه. فقط کافیه نصبش کنید و بجای
git commit
بزنید
git cz
ازتون سولای لازم رو میپرسه و کامیت رو براتون آماده میکنه
نصب:
commitizen.github.io/cz-cli
@Linuxor
Forwarded from چنل شخصی سید رحیم فیروزی
انواع مدلهای رشد تخصصی در دنیای نرمافزار
(در دنیای توسعه نرمافزار چه شکلی باشم بهتر است)
وقتی دربارهی متخصصان حوزهی نرمافزار صحبت میکنیم، همیشه این سوال پیش میآید: آیا بهتر است فقط در یک زمینه عمیق شویم یا در چند حوزه مختلف همزمان؟
برای پاسخ به این سوال، سه مدل رایج وجود دارد که در دنیا با استعارههای حروف لاتین معرفی میشوند:
- مدل 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
(در دنیای توسعه نرمافزار چه شکلی باشم بهتر است)
وقتی دربارهی متخصصان حوزهی نرمافزار صحبت میکنیم، همیشه این سوال پیش میآید: آیا بهتر است فقط در یک زمینه عمیق شویم یا در چند حوزه مختلف همزمان؟
برای پاسخ به این سوال، سه مدل رایج وجود دارد که در دنیا با استعارههای حروف لاتین معرفی میشوند:
- مدل 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
github.com/google/libphonenumber
@Linuxor
Forwarded from Linuxor ?
ساختن README همیشه یه کار سخت بوده، کلی زحمت میکشیم کد های پروژه رو میزنیم اما وقتی میرسه به README نمیدونیم توش چی بنویسیم؟ و جالب اینجاست اگه README خوب نباشه کسی جذبش نمیشه و ممکنه کل زحماتمون هدر بره. اینجا کلی README که خوب نوشته شدن رو جمع کرده ازش می تونید برای پروژه های خودتون الگو بگیرید:
github.com/matiassingers/awesome-readme
@Linuxor
github.com/matiassingers/awesome-readme
@Linuxor
Forwarded from Linuxor ?
شاید شما سختی راه برنامه نویس شدن رو احساس نکنید ولی افراد تازه کار خیلی سردرگم هستن که چطوری یاد بگیرن، چطوری مشارکت کنن، چطوری سیستم هارو رشد بدن و حتی چطوری با دیگران ارتباط برقرار کنن.
آقای Robert L. Read یه کتابچه آنلاین درست کرده توش همه این موارد رو گفته
braydie.gitbooks.io/how-to-be-a-programmer/content/en
@Linuxor
آقای Robert L. Read یه کتابچه آنلاین درست کرده توش همه این موارد رو گفته
braydie.gitbooks.io/how-to-be-a-programmer/content/en
@Linuxor
اگر میخواین فایل پایتونی، یا هر فایل با پسوندی که میخواین رو سریع از طریق منوی new file ویندوز بسازین، این بکارتون میاد
گرچه که من توی پایچارم فایلی بخوام مستقیما میسازم ولی برای یکسری فایلای بخصوص کارآمده :)
لینک موحتاوا
گرچه که من توی پایچارم فایلی بخوام مستقیما میسازم ولی برای یکسری فایلای بخصوص کارآمده :)
لینک موحتاوا
Linkedin
#پایتون #برنامهنویسی #توسعهدهنده #ترفند #ویندوز #بهرهوری #ابزار #توسعه_نرمافزار #برنامهنویس #فایل_پایتون #کدنویسی #فناوری #توسعه_وب…
💡 یک راه حل کاربردی برای توسعهدهندگان پایتون!
سلام به همگی! 🙋♂️
امروز میخوام یک ترفند فوقالعاده کاربردی رو با شما به اشتراک بگذارم که ممکنه خیلی از شما باهاش درگیر بوده باشید.
مدتها بود که دنبال راهی میگشتم تا بتونم با یک کلیک راست ساده و انتخاب گزینهی…
سلام به همگی! 🙋♂️
امروز میخوام یک ترفند فوقالعاده کاربردی رو با شما به اشتراک بگذارم که ممکنه خیلی از شما باهاش درگیر بوده باشید.
مدتها بود که دنبال راهی میگشتم تا بتونم با یک کلیک راست ساده و انتخاب گزینهی…
❤1