خاطرات فنی من

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

سعی می کنم مطالب برای دیگران هم قابل استفاده باشند اما به دلیل کمی وقت نمی توانم زیاد نگران نگارش و چینش متن باشم

وقتی یک branch را از سایت github حذف می کنید یا تغییر نام می دهید، vscode هنوز آن را به شکل قدیمی جزو remote branches نشان می دهد.

۰ نظر موافقین ۰ مخالفین ۰ ۲۶ اسفند ۰۲ ، ۱۱:۰۷
محسن

نوشتن DocString فرمتهای مختلفی دارد که ما فرمت Google را به دلیل سادگی ترجیح دادیم.

برای اینکه داخل کد توضیحاتی بنویسید و بعد بتوانید هم توضیحات را به شکل فایلهای HTML استخراج کنید روشهای مختلفی وجود دارد. ما از mkDocs و mkDocStrings استفاده کردیم.

در سایت realPython مقاله خوبی هست که تقریبا همه چیز را توضیح داده. من قسمتهای مهم آن را اینجا می آورم.

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ اسفند ۰۲ ، ۰۹:۱۱
محسن

من دنبال نرم افزاری بودم که بتوان با آن 1-نرم افزارهای روی گوشی فرزندان را محدود کرد، طبیعتا این یعنی امکان نصب نرم افزار جدید را هم ببندیم و 2-ساعات کار با گوشی را محدود کنم

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ مهر ۰۲ ، ۲۰:۲۲
محسن

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

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ مهر ۰۲ ، ۱۵:۲۲
محسن

همانطور که می دانید Active Directory از پروتکل LDAP استفاده می کند. بنابراین چیزی که ما می خواهیم درواقع LDAP Authentication in Django است.

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۹ شهریور ۰۲ ، ۱۸:۰۶
محسن

برای کار با django زیرساختهایی لازم است که چون دیر به دیر از آن استفاده می کنیم فراموش می شوند.

به همین خاطر آنها را اینجا یادداشت می کنم، برای ارجاعات بعدی

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ شهریور ۰۲ ، ۰۹:۳۵
محسن

خیلی از مسائل در این صفحه توضیح داده شده است.

  1. یک اکستنشن به نام  GitHub Pull Requests and Issues را باید نصب کنید.
  2. در آن Sign In کنید (طبیعتا باید قبلا در سایت GitHub رجیستر کرده باشید)
  3. اگر می خواهید روی یک repository خاص کار کنید صاحب آن باید شما را به عنوان مشارکت کننده ثبت کرده باشد (در قسمت تنظیمات repository در سایت) و شما باید دعوت او را پذیرفته باشید (معمولا از طریق قسمت notifications در سایت این کار انجام می شود. اگر برای شما در آن قسمت چیزی نیامد، نشانی repository  را در مرورگر باز کنید. آنجا به شما می گوید که دعوت شده اید)
  4. در صفحه اول VSCode گزینه clone repository را بزنید، نشانی repoistory را وارد کنید. صبر کنید تا clone انجام شود. حالا یک نسخه از پروژه روی سیستم شماست که می توانید با آن کار کنید

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

متن را در این فایل ذخیره کرده ام:

https://bayanbox.ir/download/3910449192457215172/vscode-github.docx

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ شهریور ۰۲ ، ۱۸:۴۱
محسن

نکته مهم این است که django بر خلاف انتظار اصلا کاری به تگهای کامنت HTML ندارد و آنها را نادیده می گیرد، گویی آن تگها وجود ندارند ولی محتوای داخل آن تگها وجود دارد. فقط به تگهای {%  %} نگاه می کند. حتی اگر قسمتی از کد را داخل کامنت HTML گذاشته باشید دقیقا همان قسمت داخل کامنت را هم بدون توجه بررسی می کند و خروجی خودش را می سازد. البته که خروجی داخل کامنتهای HTML قرار می گیرد.

مثلا اگر شما در جای نامناسب چنین چیزی بنویسید پیام خطا دریافت خواهید کرد:

<!-- {% endif %} -->

پیام خطایی مشابه به این:

Invalid block tag on line 33: 'endif'

برای کامنت کردن چیزی از دید django باید از این تگها استفاده کنید:

{% comment %}

{% endcomment %}
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ مرداد ۰۲ ، ۱۱:۰۴
محسن

اگر در قسمت ادمین django یوزر درست کرده باشید دیده اید که می توان برای هر کاربر و هر گروه از کاربران روی هر کلاسی که داخل models تعریف کرده اید دسترسی تعریف کنید: هر کاربر می تواند دسترسی add , delete , change or view روی هر مدل تعریف شده داشته باشد.

یکی از روشهای اعمال دسترسی کاربران به داده ها همین است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۰۲ ، ۱۸:۳۵
محسن

یکی از پکیجهایی که می توان برای workflow در django از آن استفاده کرد، joeflow است.

خب، هنوز دقیقا نمی دانم که چطور می شود از آن استفاده کرد، اما فعلا برای ثبت در تاریخ می نویسم که چطور مثال خودش را روی ویندوز راه اندازی کردم:

 

 

  1. برای استفاده از joeflow باید celery را نصب داشته باشید و برای استفاده از celery باید redis را.
  2. pip install -U "celery[redis]"
  3. python3 -m pip install "joeflow[reversion,dramatiq,celery]"
  4. اما redis را نمی توانید مستقیما در windows اجرا کنید و به wsl نیاز دارید.
  5. باید wsl در windows features فعال باشد
  6. مطابق این دستورالعمل ، در cmd این دستور را اجرا کنید: wsl --install -d <DistroName>  (دفت کنید که DistroName نام لینوکسی است که می خواهید نصب کنید. مثلا Ubuntu)
  7. حالا داخل پنجره لینوکس، مطابق این دستورالعمل دستورات زیر را اجرا کنید تا redis نصب شود:  
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

و سپس این دستور برای اجرا کردن redis:

sudo service redis-server start

و این یکی برای تست کردن آن

redis-cli 
127.0.0.1:6379> ping
PONG

8.از این صفحه فایل نصبی graphviz را دانلود و نصب نمایید. در هنگام نصب حتما تیک بزنید که فایلهای اجرایی آن در PATH  قرار داده شود.

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

حالا باید بتوانید به این نشانی http://127.0.0.1:8000/start/ (البته که مطابق مشخصات سرور خودتان) بروید و مثال joeflow را اجرا کنید.

این هم پروژه ای است که ما استفاده کردیم

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ مرداد ۰۲ ، ۰۹:۵۱
محسن