سوالات متداول

زمان مطالعه: < 1 دقیقه
زمان مطالعه: < 1 دقیقه

با سلام. اگر احیانا بهنگام git pull کردن با ارور زیر مواجه شدید همراهم باشید تا مشکل را حل کنیم:

error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed

برای حل مشکل کافیست داخل روت پروژه مورد نظرتون که گیت داره دستورات زیر رو بزنید:

cd .git/objects
ls -al
sudo chown -R yourname:yourgroup *

اگر yourname و yourgroup رو نمیدونید، از دستورات زیر استفاده کنید:

# for yourname
whoami
# for yourgroup
id -g -n 
زمان مطالعه: < 1 دقیقه

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

zsh: command not found

فقط کافیه یه تغییر کوچیک داخل zshrc بدیم:

پس ابتدا با سدتور زیر وارد حالت ویرایش فایل zshrc بشید:

vim ~/.zshrc

حال خط زیر را به انتهای فایل اضافه کنید:

source ~/.bash_profile

ذخیره کرده و سپس دستور زیر را داخل ترمینال اجرا کنید:

source ~/.zshrc

و تمام 🙂 لذت ببرید …

زمان مطالعه: < 1 دقیقهحل مشکل آپدیت کردن سرتیفیکیت let’s encryptدر اوبونتو

زمان مطالعه: < 1 دقیقه

با سلام و درود، خیلی سریع میرم سراغ اصل مطلب، در حال حاضر که این مطلب رو می نویسم، Certbot با پایتون ۳.۱۰ یه مقدار Conflict داره و اذیت میکنه، برای مثال بهنگام بروزرسانی یکی از سرتیفیکیت ها با دستور زیر :

sudo certbot certonly --force-renew -d sadegh-khan.ir

مکن با ارور های مختلف از نبود ماژ>ل های مختلفی از پایتون روبرو بشید، مثلا بگه ماژول six رو ندارید یا Mapping و غیره، اگر هم به نصب دونه دونه ماژول ها با دستور pip installادامه بدید تقریبا این ماژول ها تمومی ندارند و مشکل از جایی به جای دیگه منتقل میشه، اما مشکل از کجاست؟؟؟ از همون ناسازگاری با نسخه پایتون سیستم شما هست.

پس کافیه نسخه پایتون برای اجرای Certbot رو به یه نسخه دیگه ای که رو سیستم تون نصب هست تغییر دهید، برای مثال من تغییر دادم به نسخه python3.8 برای این منظور در اوبونتو باید فایل /usr/bin/certbot را ویرایش کنید:

sudo nano /usr/bin/certbot

و مقدار #!/usr/bin/python3 را به #!/usr/bin/python3.8 تغییر دهید (معمولا خط اول فایل هست)

زمان مطالعه: < 1 دقیقه

با سلام، ممکن هنگام اجرای دستور sudo apt update با ارور زیر مواجه بشید، به چه دلیل رخ میده!؟

پکیجی قبلا داشتید که برای نسخه فعلی اوبونتون ی شما release file ارائه نکرده هنوز، برای همین این ارور رو میده، یه نمونه اش میشه ارور زیر :

E: The repository 'https://ppa.launchpadcontent.net/eivnaes/network-manager-sstp/ubuntu kinetic Release' does not have a Release file.

برای رفع مشکل کافیه ppa ورژن قدیمی را پاک کنید، دستور پاک کردن PPA به شکل زیر است:

sudo add-apt-repository --remove ppa:eivnaes/network-manager-sstp

زمان مطالعه: < 1 دقیقه

با سلام و درود، تا الان که من دارم اینجا در مورد فورتی کلاینت روی لینوکس اوبونتو مطلب می نویسم همیشه مشکل نصب و وصل شدن به ssl vpn فورتی کلاینت از طریق لینوکس اوبونتو بوده، الان لینوکس ورژن ۲۲.۰۴ آخرین ورژن اوبونتو هست در حلی که داخل سایت فورتی نت آخرین نسخه اوبونتوی اون برای ۱۶.۰۴ هست!!!

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

من هر وقت بخوام برای جایی دورکاری داشته باشم که از vpn های فورتی کلاینت (فورتیگیت) استفاده می کنند از openfortivpn استفاده می کنم. نصب و راه اندازیش دستورات زیر رو لازم داره:

sudo apt install openfortivpn

sudo openfortivpn : -u 

اگر دستور اتصال رو زدید و به cert گیز داد، میتونید اون cert که بهتون داده را به صورت زیر به انتهای دستور اتصال اضافه کنید:

sudo openfortivpn : -u   <--trusted-cert=>
sudo openfortivpn 92.152.519.161:11443 -u sadegh  --trusted-cert=548bdcdf82135d12sdg53351a659ccbb6a3c589f7
زمان مطالعه: < 1 دقیقه

با سلام اگر بهنگام بروزرسانی یکی از cert های Let’s encrypt به مشکل زیر برخورد کردید:

Attempting to renew cert from /etc/letsencrypt/renewal/somedomain.com.conf produced an unexpected error: Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping.فق
  

فقط کافیه وب سرور خودتون که آپاچی یا انجینیکس هست رو ابتدا stop کنید و سپس اقدام به آپدیت کردن سرتیفیکیت خود بکنید.

stop Nginx:

sudo systemctl stop nginx

stop Apache:

sudo systemctl stop apache2
زمان مطالعه: < 1 دقیقه

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

sudo : systemd-resolve: command not found

برای مثال جهت پاک کردن کش سیستم در اوبونتو ۲۲.۰۴ اگر مثل سابق از دستور زیر استفاده کنید ( پاک کردن کش dns در اوبونتو ):

sudo systemd-resolve --flush-caches

با ارور فوق مواجه خواهید شد، برای پاک کردن کش dns در اوبونتو ۲۲.۰۴ از دستور زیر استفاده کنید:

resolvectl flush-caches
resolvectl statistics

زمان مطالعه: < 1 دقیقهغیرفعال سازی 2fa برای گیتلب سرور

زمان مطالعه: < 1 دقیقه

با سلام و درود، برای خودم اشتباه کرده بودم و ریکاوری کد های 2fa رو ذخیره نکرده بودم.

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

sudo gitlab-rails runner 'User.find_each(&:disable_two_factor!)'
زمان مطالعه: < 1 دقیقه

با سلام برای بدست آوردن زمان expire شدن certificate برای مثال Let’s encrypt cert کافیه وارد پوشه ای که فایل cert.pem ساخته شده شوید و از دستور زیر استفاده نمایید:

ssl-cert-check -c cert.pem

اگر ssl-cert-check را نصب ندارید با دستور زیر نصب کنید:

sudo apt install ssl-cert-check

پوشه نگهداری cert ها برای Let’s Encrypt و اگر مطابق آموزش خودم داخل بلاگ (آموزش امن کردن Nginx با رمزگذاری Let’s Encrypt) انجام داده باشید به صورت زیر می باشد:

/etc/letsencrypt/live/example.com/

زمان مطالعه: < 1 دقیقه

با سلام، برای اینکه ببینید چقدر از زمان سرتیفیکت مونده از دستور زیر استفاده کنید :

echo | openssl s_client -connect yourdomain.ir:443 -servername yourdomain.ir 2>/dev/null | openssl x509 -noout -dates

( بدست آوردن مقدار زمان باقیمانده از سرتیفیکیت Let’s encrypt در لینوکس )

زمان مطالعه: < 1 دقیقه

با سلام، اگر با ارور زیر مواجه شدید حتما دارید با Let’s Encryptکار می کنید، پس در ادامه همراه باشید

There were too many requests of a given type :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/

این ارور به وضوح داره میگه شما حداقل ۵ بار به سرور Let’s Encrypt درخوسات ناموفق داشتید و فعلا نمیتونید درخواست جدیدی بزنید!!

اول از همه این محدودیت به ازای هر ۵ ساعت هست، پس ناراحت نباشید و حداکثر ۱ ساعت بعد میتونید دوباره دستور خودتون که منجر به ارور بالا میشد رو تکرار کنید.

نکته: احتمالا برای renewکردن به Let’s Encrypt درخوسات داشتید، اگر برای تست request می زنید، بهتره از دستور certbot renew –dry-run استفاده کنید که محدودتی نداره یا به نوعی میشه گفت محدودیتش کم نیست و بعیده که شما رو ban کنه.

تمام

زمان مطالعه: < 1 دقیقه

با سلام، اگر برای SSl وب سایت تان از Let’s Encrypt استفاده می کنید و بهنگام بروزرسانی SSLبا ارور زیر مواجه شدید، با ادامه مطلب همراه باشید.

Domain: example.com 
Type: connection Detail: Fetching http://arjunbroker.com/.well-known/acme-challenge/F9nlyrRISU7q2aX7t_o: 
Timeout during connect (likely firewall problem)

خب همون طور که خود ارور داره توضیح میده، احتمالا مشکل از فایروال باشه و با بستن پورت ها جلوی اتصال به سرور را گرفته، بهنگام renew کردن سرتیفیکیت sslباید حتما پورت های 80 و 443 به سرورتان باز باشد.

زمان مطالعه: < 1 دقیقه

با سلام و درود، اگر قصد دارید داخل بلاک سرور Nginx تان، websocket requests را handle کند، خطوط زیر را به قسمت location از بلاک سرور Nginx مورد نظر جهت مدیریت کردن websocket اضافه کنید:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Tags: nginx, websocket
زمان مطالعه: < 1 دقیقه

اول از همه بعد از نصب اکستنشن pg_stat_statements باید postgresqlرا ریست کنید و همچنین باید خط زیر را در postgresql.conf تغییر دهید:

shared_preload_libraries = ''

تغییر دهید به :

shared_preload_libraries = 'pg_stat_statements'
زمان مطالعه: < 1 دقیقه

برای پیدا کردن مسیر فایل postgresql.conf کافیست داخل اوبونتو دستور زیر را وارد کنید :

sudo -u postgres psql -c 'SHOW config_file'

یا داخل psql دستور زیر را بزنید:

psql -U postgres -c 'SHOW config_file'
Tags: db, postgreqsl
زمان مطالعه: < 1 دقیقه

با سلام و درود،

برای اینکه از **kwargs به عنوان فیلتر های کوئری ست داخل جنگو استفاده کنید کد نویسی مشابه زیر خواهد بود (فیلتر روی کوئری ست در جنگو):

allowed_filters = ('x', 'y')
kwargs = {}
for key, value in request.data.items():
    if key in allowed_filters:
        kwargs.update({key: value})


try:
    access_level_request_objs = AccessLevelRequest.objects.filter(**kwargs)
except IndexError:
    pass

در نمونه کد بالا رابطه بین فیلتر ها AND می باشد اگر بخواهیم رابطه بین آنها OR باشد باید از Q و _connector استفاده کنیم، به نمونه کد زیر توجه کنید:

Q(**filter_kwargs, _connector=Q.OR)

Tag: جنگو
زمان مطالعه: < 1 دقیقه

با نام خدا و سلام، اکر قصد دارید ابتدای فیلد های یک ستون از پایگاه داده یا فقط یکی از ردیف های دیتابیس مقدار پیش فرضی اضافه کنید یا مقدار حرفی یا عددی اضافه کنید، کافی است از دستور زیر اسفاده کنید:

update mytable set mobile = '98' || mobile, name = 'آقای' || name;

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

select '98' || mobile as mobile, 'آقای' || name as name from user_profile;
زمان مطالعه: < 1 دقیقه

با سلام و درود، اگر به حالتی برخوردید که تمامی صفحات سایت ورپرسی شما با ارور ۴۰۴ مواجه میشد بجز صفحه خانه (Home Page) احتمالا لینک های یکتای سایت به هر دلیلی دچار مشکل شده اند، برای رفع مشکل کافیست به تنظیمات (setting) و سپس پیوندهای یکتا (Permalinks) رفته و دکمه ذخیره در پایین صفحه را بزنید تا مجدد لینک ها را باز سازی کند.

به احتمال قوی مشکلتون باید حل شده باشه 🙂

زمان مطالعه: < 1 دقیقهحل ارور Related Field has invalid lookup: icontains

زمان مطالعه: < 1 دقیقه

با سلام، تو این مطلب به حل ارور Related Field has invalid lookup: icontains در پایتون پرداخته شده، چی میشه که چنین اروری داریم؟؟

داستان از اینجا شروع میشه که شما داخل search_fields های admin.py از پروژه تون روی یه کلید خارجی امکان جستجو رو گذاشتید، برای مثال من یه مدل دارم که کلید خارجی داره به مدل کشور ها، داخل search_fields فقط عنوان فیلد کلید خارجی رو گذاشتم که این ارور رو میده، باید پس از فیلد کلید خارجی، با دو تا _ نام فیلد اون جدولی که کلید خارجی روش دارم رو نیز مشخص کنم.

باید خط زیر را:

search_fields = ['foreignkeyfield']

به خط زیر تغییر دهید (همراه با دو تا under score) :

search_fields = ['foreignkeyfield__name']
زمان مطالعه: < 1 دقیقه

با سلام و درود، سریع بریم سراغ اصل مطلب، شما یه فایل یا فولدر دارید که داخل .gitignore اضافه اش کردید، ولی وقتی pushمی کنید و از طرفی روی یه سیستم دیگه pullمی کنید، همچنان اون فایل یا فولدر انتقال داده می شه!!

چرا !؟؟ مگه داخل فایبل گیت ایگنور اضافه نکردیم؟ پس چرا باز فایل داره منتقل میشه!؟؟

در حقیقت گیت فایلی که قبل از ثبت آن در gitignore داخل پوشه بوده و track هم میشده را نمی تواند ignore کند.

در این موارد باید اون فایل را از trackشدن خارج کنید، برای این منظور از دستور زیر استفاده کنید:

git rm --cached 

برای مثال اپلیکیشن با جنگو می نوشتید، تصمیم به دپلوی کردن پروژه می گیرید و settings.py را داخل .gitignore می گذارید، ولی باز هم settings.py منتقل میشه! برای حل این مشکل کافییست پس از افزودن settings.py به فایل .gitignore نسبت به اجرای دستور زیر اقدام کنید:

git rm --cached settings.py
زمان مطالعه: < 1 دقیقه

با سلام و درود، به هنگام نصب requirementها داخل یک virtual environment احتمال داره به ارور زیر بر بخورید:

ERROR: Could not find a version that satisfies the requirement apturl
ERROR: No matching distribution found for apturl

خب داره میگه نمیتونه ورژن مورد نظر از apturl رو پیدا کنه تا بخواد نصبش کنه، حق هم داره، چون که پکیج های apturl و apparmor پکیچ های اوبونتویی هستند و باید از requirement اونها رو پاک کنید و از طریق دستور زیر نصب کنید:

apt install -y apparmor apturl && pip install -r requirements.txt

احتمالا اشتباها system site packages را freeze کرده بودید که به اشتباه داخل فایل requirement اضافه شده بودند.

زمان مطالعه: < 1 دقیقهحل ارور Invalid data. Expected a dictionary, but got int.

زمان مطالعه: < 1 دقیقه

خب مشکل کجاست؟ شما یه سریالایزر دارید، که مدل استفاده شده داخل سریالایزر شما یه کلید خارجی داره، بهنگام آپدیت کردن احتمالا به این مشکل برخوردید،

قدم اول احتمالا سریالایزر رو به صورت nested ساخته اید و در نتیجه بهنگام آپدیت کردن، فقط id اون کلید خارجی رو قبول نمیکنه و انتظار یه nested dictionary داره، راه حل خیلی ساده است، فقط کافیست یه سریالایزر جدید بسازید و serializers ها رو به دو دسته read و write تبدیل کنید تا به این مشکلات برنخورید.

به مثال زیر توجه کنید:

class HuntingDetailViewSerializer(serializers.ModelSerializer):

    species = HuntingSpeciesSerializer(many=True, read_only=True)
    technique = HuntingTechniqueTagSerializer()

    class Meta:
        model = HuntListing
        exclude = ('owner',)

شما سریالایزر بالا را دارید، داخل view نیز کد زیر را دارید:

listing_id = request.data.get('listing_id')
    listing = HuntListing.objects.get(id=listing_id)

    serializer = HuntingDetailViewSerializer(listing, data=request.data, partial=True)

    if serializer.is_valid():
        serializer.save()

داده نمونه تون هم به صورت زیر هست :

{"listing_id":9, "technique":1, ....}

ولی ارور دارید به صورت زیر :

Invalid data. Expected a dictionary, but got int.

حل ارور:

فقط کافیست همان طور که گفته شد، serializer های readو write رو از هم جدا کنید، پس سریالایزر جدید داریم :

class HuntingDetailViewSerializer(serializers.ModelSerializer):

    species = HuntingSpeciesSerializer(many=True, read_only=True)

    class Meta:
        model = HuntListing
        exclude = ('owner',)

همان طور که ملاحظه کردید، خط زیر را حذف کردیم.

 technique = HuntingTechniqueTagSerializer()
زمان مطالعه: < 1 دقیقه

با سلام و درود، اگر اقدام به ضبط کردن صفحه Vmware کرده باشید احتمالا به این مشکل برخورد کرده اید که حرکت ماوس و action ها ماوس رو ضبط نمی کنه برای مثال بهنگام ضبط صفحه نمایش و برنامه vmware توسط Camtasia به این مشکل به احتمال زیاد برخواهید خورد.

برای حل مشکل فوق کافیست از منوی خود نرم افزار Vmware وارد edit شوید. (ctl+p)

سپس Prefrences را انتخاب کنید. در صفحه باز شده از منوی سمت چپ input را انتخاب کنید و سپس از لیست کشویی Opti,ize mouse for game گزینه ی Always رو انتخاب کنید.

Tags: pc, vmware
زمان مطالعه: < 1 دقیقه

با سلام و درود، سریع میرم سر اصل مطلب، ممکن موقع استفاده از composer با ارور زیر مواجه شوید:

 /var/www/kimai2/vendor does not exist and could not be created. 

برای حل مشکل کافیست به صورت زیر پیش روید:

اول از همه user خود را به گروه www-data اضافه کنید:

sudo usermod -a -G www-data `whoami`

سطح دسترسی درست را به /var/www دهید:

sudo chown root:root /var/www
sudo chmod 755 /var/www/

سطرح دسترسی درست را به پروژه خود دهید:

در ارور اولی که آورده بودم، پروژه من kimai2 میشه:

sudo chown -R www-data:www-data /var/www/
sudo chmod -R 774 /var/www/


sudo chown -R www-data:www-data /var/www/kimai2
sudo chmod -R 774 /var/www/kimai2

و تمام 🙂

زمان مطالعه: < 1 دقیقه

با سلام و درود، اگر لوکیشن سرورتون ایران باشه و قصد بروزرسانی clamavرا داشته باشید، بلاشک با مشکل بر میخورید و در قدم اول باید وی پی ان خودتون رو متصل کنید. و همچنین به هنگام اجرای دستور زیر ممکن است ارور داشته باشید:

 sudo freshclam
  
  
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

برای رفع ارور فوق، کافیست ابتدا سرویس clamav را stop کنید و سپس اقدام به بروزرسانی کنید.

sudo systemctl stop clamav-freshclam.service

sudo freshclam

با دستورات فوق وارد بروزرسانی می شوید و فقط ممکن وسطای بروزرسانی مجدد با ارور زیر مواجه بشید:

!Download failed (28) Wed Feb 24 07:29:35 2021 -> ! Message: Timeout was reached

که خودش داره به وضوح میگه به مشکل timeout برخورده، برای حل مشکل کافیست به راحتی freshclam.conf را ویرایش کنید.

sudo nano /etc/clamav/freshclam.conf

و مقدار ReceiveTimeout را بیشتر از ۳۰ ثانیه بگذارید و مجدد اقدام به بروزرسانی کنید.

زمان مطالعه: < 1 دقیقه

برای بدست آوردن سایز یک فولدر خاص از دستور زیر استفاده نمایید:

du -hs /folderpath

-h : عدد خوانا برای انسان

-s : فقط به صورت خلاصه

-c : مجموع سایز های دایرکتوری

-h : مرتب کردن خوانا برای انسان

-r : به صورت معکوس

برای مثال بدست آوردن سایز دایرکتوری دانلود در اوبونتو :

du -hs /home/sadegh-khan/Downloads

از دستور زیر برای بدست آوردن سایز دایرکتوری و هر چه داخل آن است استفاده کنید:

sudo du -h /home/sadegh_khan/Desktop

می توانید نتایج رو مرتب (sort) نیز کنید:

sudo du -h /home/sadegh_khan/Desktop | sort -rh

به دو تا مثال زیر هم توجه کنید:

sudo du -h --max-depth=2 /var/lib

sudo du -sh --apparent-size /var/lib
زمان مطالعه: < 1 دقیقه

با سلام و درود، اگر rabbitmq رو روی سرور B نصب کرده باشید و بخواهید از سرور A به آن اتصال داشته باشید، یه مقدار متفاوت از حالت localhost می باشد. تفاوت اصلی در مشخص کمردن user و pass به هنگام اتصال remote می باشد.

برای این کار صرفا کافیست به فرمت زیر اتصال را برقرار کنید:

app = Celery('tasks', broker='amqp://user:pass@serverB_IP')

برای ساخت user جدید برای rabbitmq نیز می توانید از دستورات زیر استفاده کنید:

$ sudo rabbitmqctl add_user myuser mypassword
$ sudo rabbitmqctl add_vhost myvhost
$ sudo rabbitmqctl set_user_tags myuser mytag
$ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

زمان مطالعه: < 1 دقیقهآموزش اتصال ریموت به redis

زمان مطالعه: < 1 دقیقه

با سلام، اگر قصد داشته باشید redisخود رو روی یک ماشین دیگه اجرا کنید و مشخصا از ماشین دیگه ای هم بهش ریموت و دسترسی داشته باشید باید یه مقدار تغییرات در فایل conf ردیس انجام دهید.

۱- فایل تنظیمات redis در این آدرس می باشد: /etc/redis/redis.conf

۲- تغییر bind 127.0.0.1 به bind 0.0.0.0

۳- تغییر protected-mode yes به protected-mode no

4- روی ماشینی که redisرا نصب کردید مطمین باشید اگر فایروال فعال هست، اجازه دسترسی به پورت ۶۳۷۹ را داده باشد. (ufw allow 6379 و ufw allow 6379/tcp)

۵- در انتها سرویس redis را یه ری استارت انجام بدید.

زمان مطالعه: < 1 دقیقه

با سلام، ممکن در سلری به هنگام اجرا کردن که دستور زیر را زدید:

celery -A tasks worker -l=INFO

با ارور زیر مواجه شوید:

Error: Invalid value for '-l' / '--loglevel': invalid choice: info. (choose from DEBUG, INFO, WARNING, ERROR, CRITICAL, FATAL)

مشکل از کجاست!؟ فقط کافیه اون علامت مساوی رو بعد از -l بردارید و دستور رو به صورت زیر اجرا کنید:

celery -A tasks worker -l INFO
زمان مطالعه: < 1 دقیقه

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

Unable to create directory wp-content/uploads/. Is its parent directory writable by the server?

به وضوح ارور داره میگه من دسترسی به پوشه wp-content/uploads/ ندارم، کافیست دسترسی var/www/wordpressName/wp-content/uploads را اصلاح کنید.

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

sudo chown -R www-data:www-data /var/www/sadegh-khan.ir/wp-content/uploads

زمان مطالعه: < 1 دقیقه

با سلام و درود، به صورت پیش فرض شماره پورت پایگاه داده های MySQL مقدار ۳۳۰۶ می باشد، منتهی اگر پورت را خودتان تغییر داده اید و فراموش کرده اید، کافیست از دستور زیر داخل شل mysqlاستفاده کنید.

sudo mysql
mysql>SHOW GLOBAL VARIABLES LIKE 'PORT';
زمان مطالعه: < 1 دقیقه

با سلام، احتمالا برخورد با این ارور بهنگام نصب sass خیلی وجود داره، متن ارور را زر آوردم، اما این ارور چی میگه؟ میگه که powershell امکان اجرا کردن اسکریپت را نداره و محدود شده، در نتیجه برای رفع این ارور باید محدودید execute کردن اسکریپت را از روی پاورشل برداریم.

Roaming\npm\sass.ps1 cannot be loaded because running scripts is disabled on this system

راه حل ارور sass.ps1 cannot be loaded because running scripts is disabled

خب برای حل این مشکل باید از دستور Set-ExecutionPolicy استفاده کنیم،دستور به صورت کامل به شکل زیر است:

 PS C:\> Set-ExecutionPolicy RemoteSigned

اما به صورت پیش فرض مقدار ExecutionPolicy چیست‌ ؟

برای کلاینت ها : Restricted

برای سرورها: RemoteSigned

RemoteSigned به چه معنا است؟

  • سیاست اجرای پیش فرض برای کامپیوتر های ویندوز سروری می باشد.
  • اسکریپت ها می توانند اجرا شوند.
  • نیازمند امضای دیجیتال از منتشرکننده های معتبر برای اسکریپت ها و فایل های کانفیگ دانلود شده از اینترنت می باشد.
  • نیاز به امضای دیجیتال برای اسکریپت هایی که به صورت لوکال نوشته شده اند و از اینترنت دانلود نشده اند نمی باشد.
  • اسکریپت های دانلودی از اینترنت که امضا ندارند اگر Unblockشده باشند را می توان اجرا کرد. (استفاده از دستور Unblock-File cmdlet)

Restricted به چه معنا است ؟

  • سیاست اجرای پیش فرض برای کاربران ویندوز
  • اجازه ی دستورات را می دهد اما اجازه اسکریپت را خیر
  • جلوی اجرای تمامی فایل های اسکریپتی را می گیرد، شامل فایل های فرمت و کانفیگ (.ps1xml) فایل های اسکریپت ماژول (.psm1) و پروفایل های پاورشل (.ps1)

نکته: به هر ExecutionPolicy می توان یک scope نیز داد. در مورد scope و اطلاعات بیشتر از لینک زیر استفاده کنید.

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

زمان مطالعه: < 1 دقیقه

با سلام و درود، در این مطلب کوتاه در مورد مسیر ذخیره شدن لاگ های nginx و همچنین دستور ترمینال جهت مشاهده آخرین خطاهای nginx پرداخته شده است.

مسیر ذخیره لاگ های nginx مسیر زیر می باشد:

/var/log/nginx/error.log

و اما برای مشاهده ۳۰ خطای اخیر در لینوکس می توانید از دستور زیر استفاده کنید:

sudo tail -30 /var/log/nginx/error.log
زمان مطالعه: < 1 دقیقه

برای برنامه نویسان مشتاق ایرانی احتمال اینکه موقع کار با dartpad برای کار با دارت -dart به ارور زیر بر بخورند خیلی زیاد می باشد،

راه حل استفاده از VPNهست، متاسفانه به همین راحتی قابل حل هست.

XMLHTTPrequest error -line1
Tag: dart
زمان مطالعه: < 1 دقیقه

با سلام و درود، مشکل یا ارورFailed to create symbolic link: File exist بهنگامی رخ میده که شما قصد برقراری symbol linkبین دو فایل دارید، ولی فایل قبلا ساخته و لینک انجام شده بوده و به هر دلیلی مانند ویرایش نیاز دارید که مجدد لینک بشوند، برای حل مشکل کافیست ساخت لینک را forceکنید با اضافه کردن f به -s تابشه -sf به شکل زیر:

sudo ln -sf ../sites-available/myproject ../sites-enabled/

Tag: nginx
زمان مطالعه: < 1 دقیقه

با سلام و درود، به ظنرم یکی از اعصاب خورد کن ترین ارورهای لینوکسیه :)) یه سرور رو تازه نصب کرید و همه کانفیگ ها درست و میخوای دستور sudo بزنی که هم دستورات کند هستند و طول میکشه اجرا بشوند و هم ارور میده sudo: unable to resolve host ”: Name or service not known ، و اما مسئله کجاست!

مشکل از کجاست؟

این مشکل از جایی آب میخوره که سیستم نمیتونه hostnameشما را تضخیص بده، یا hostname رو به تازگی تغییر دادید و به مشکل برخوردید یا سیستم عامل تازه نصب شده.

پس باید دو سه تا جا مقدار hostname رو به طور صحیح و درست تعریف کنیم.

اول از همه با دستور زیر ببینید hostnameفعلی سیستم شما چیست:

hostname

شما باید hostname رو مشاهده کنید ، برای مثال newpc.

حال بریم دنبال رفع ارور،

رفع ارور unable to resolve host

خب ابتدا به این مسیر برید و ببینید چی داخلش هست :

sudo vim /etc/hosts

باید دارای خطوط زیر باشد، مخصوصا خط دوم:

127.0.0.1 localhost  localhost.localdomain

127.0.1.1 newpc

تا اینجای کار باید مشکل حل شده باشه ولی بهتره که hostnameزو با دستور زیر چک کنید تا در اینجا نیز درست تنظیم شده باشد:

sudo nano /etc/hostname

در این فایل باید مقدار hostname که نمایش داده می شود همان newpc باشد

به همین سادگی و تمام

زمان مطالعه: < 1 دقیقه

با سلام و درود، احتمالا خیلی رایج براتون تا بخواید روی سیستم لینوکسی بفهمید ip سیستم چنده یا اطلاعات dns رو بدست بیارید.

برای بدست آوردن IP داخلی تان در لینوکس، کافی است از دستور زیر استفاده کنید:

ip a

برای بدست آو.ردن DNS Server فعلی که استفاده میشه در لینوکس از دستور زیر استفاده کنید:

systemd-resolve --status | grep Current

برای نمایش default gateway از دستور زیر استفاده کنید:

ip r
زمان مطالعه: < 1 دقیقه

با سلام و درود، احتمالا خیلی زیاد دیدید که فایل های نصلی برای لینوکس با فرمت پکیج های rpmباشند، برای نصب این فال ها ابتدا آنخا را به فایل با فرمت .deb تبدیل می کنیم و سپس اقدام به نصب آنها می کنیم.

ابتدا با دستور زیر Alien را برای تبدیل فایل rpm به .deb نصب می کنیم.

برای این منظور دستورات زیر را در ترمینال اجرا کنید:

sudo add-apt-repository universe
sudo apt update
sudo apt install alien

حال با دستور زیر با استفاده از Alien اقدام به تبدیل فایل با فرمت rpm می کنیم:

sudo alien packagename.rpm

پس از تبدیل، برای نصب فایل با فرمت .depاز دستور زیر استفاده کنید:

sudo dpkg –i packagename.deb

و تمام 🙂

زمان مطالعه: < 1 دقیقه

با سلام و درود، احتمالا اگر در حال خوندن این مطلب هستید یه پرینتر اچ پی (HP) دارید که با کابل USB به سیستم با سیستم عامل لینوکس خودتون وصلش کردید و سیستم عامل هم اون رو شناخته و تو لیست پرینتر ها آورده ولی پرینت نمیگیره!!! تو لیست job ها پیرنتر پرینت ها را اضافه می کنه ولی پرینت نمیگیره !!!

خب برای حل مشکل پرینتر های اچ پی در لینوکس کافی است ایتدا با دستور زیر python3-pyqt5 را نصب کنید:

sudo apt-get install python3-pyqt5

اگر نسخه اوبونتویی که دراید کمتر از ۱۸.۰۴ هست، دستور زیر را نیز استفاده کنید:

sudo apt-get install python3-pyqt4

حال دستور زیر را بزنید :

sudo hp-setup

تصویر زیر را مشاهده خواهید کرد:

خب از قسمت GUI دکمه next رو بزنید و پیش برید، قسمتی رو برای دانلود hp plugin از سمت ترمینال باید دکمه d کیبورد را بزنید و سپس enterکنید.

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

Tags: hp, linux, printer, ubuntu
زمان مطالعه: < 1 دقیقه

خب برای فعال سازی مخفف ها برای زبان جاوااسکریپت کافیست وارد settings ویژوال کد شوید ، در نوار جستجو، emmet.includeLanguages را جستجو کنید و سپس add item را بزنید همانند شکل زیر javaScript را وارد کنید:

به غیر از جاوااسکریپت، می توانید موارد دیگری را، مانند vue-html و غیره اضافه کنید:

    "javascript": "javascriptreact",
    "vue-html": "html",
    "razor": "html",
    "plaintext": "pug"

زمان مطالعه: < 1 دقیقه

با سلام و درود، امروز با یه مفهوم ساده ای در جاوا اسکریپت همراهتون هستم، تفاوت عملگرهای == و === در چیست؟؟

در یک کلام، تفاوت اصلی بین عملگرهای == و === در بررسی کردن type مقدار داده شده به هنگام مقایسه می باشد، اگر شما یک عدد «number» را با یک متن «String» مقایسه کنید، == اجازه ی این کار را می دهد، ولی === اجازه این کار را نمی دهد، چرا که نه تنها مقادیر را بررسی می کند، بلکه نوع «type» آنها را نیز بررسی می کند. اگر دو value در حال مقایسه دارای type متفاوتی باشند، === مقدار false را بر می گرداند، در حالیکه == مقدار true را بر می گرداند.

if (2 == '2')   // TRUE
if (2 === '2')  // FALSE
 
0==false   // true, because false is equivalent of 0
0===false  // false, because both operands are of different type
2=="2"     // true, auto type coercion, string converted into number
2==="2"    // false, since both operands are not of same type

مطالعه بیشتر

زمان مطالعه: 2 دقیقه

با سلام و درود، مشکل از کجا شروع میشه !! از ارور زیر :

! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to

به شما اجازه push کردن نمیده! به همین سادگی :)))

قضیه از این قراراه که به احتمال قوی شما با مسئله Protected branches روبرو هستید، و نوع user فعلی شما اجازه pushکردن رو نداره، به تصویر ذیل نگاه کنید

حال راه حل چیه؟؟ باید دسترسی branch Protection رو تغییر بدید، برا این کار ابتدا :

۱) وارد Settings شوید .

۲) سپس وارد Repository شوید. (Settings ➔ Repository)

۳) اسکرول کنید تا Protected branches را پیدا کنید.

۴) از منو دراپ دان Branch ، برنچ مورد نظر خودتون رو انتخاب کنید.

۵) حال branch انتخاب شده در لیست “Protected branches” نمایش داده می شود.

۶) حال به راحتی مقادری Allowed to push و allowed to merge رو میتونید تغییر بدید و روی maintainer+dfeveloper بگذارید.

مرجع: https://docs.gitlab.com/ee/user/project/protected_branches.html

Tags: error, git, push
زمان مطالعه: < 1 دقیقه

برای بدست آوردن اینکه کدام display manager روی لینوکس شما نصب است کافیست از دستور زیر استفاده کنید:

cat /etc/X11/default-display-manager

خروجی دستور فوق به شکل زیر خواهد بود :

زمان مطالعه: 2 دقیقه

با سلام، احتمالا دارید از VSCode استفاده می کنید و یه پروژه پایتونی 🙂 حالا با ارور Class has no objects member مواجه شدید 😐

اول از همه به نصب pylint-django اقدام کنید (از دستور زیر استفاده کنید):

pip install pylint-django

حال داخل محیط VS Code از کلید های Ctrl + Shift + P استفاده کنید تا Command Palette نمایش داده شود،

حال خط زیر را در آن تایپ یا کپی کنید:

Preferences: Configure Language Specific Settings

و سپس pythonرا انتخاب کنید.

حال در فایل باز شده داخل گیومه {} ، کدهای زیر را وارد نمایید:

"python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
    ]

و تمام 🙂

زمان مطالعه: < 1 دقیقه

با سلام و درود، برای اینکه بفهمیم در حال حاضر کدام یک از پورت های سیستم عامل در حال استفاده هستند (لیست پورت های لینوکس)، کافی است از یکی از دستورات زیر استفاده کنید:

sudo lsof -i -P -n | grep LISTEN
sudo netstat -tulpn | grep LISTEN
sudo lsof -i:22 ## see a specific port such as 22 ##
sudo nmap -sTU -O IP-address-Here

در تصویر زیر از دو دستور متفاوت برای پیدا کردن پورت های در حال استفاده (استفاده شده) در لینوکس استفاده کردم که می توانید خروجی آنها را ببینید:

زمان مطالعه: < 1 دقیقه

با سلام و درود، خب با رفع ارور Exception in thread “main” java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper در لینوکس و به هنگام اجرای فایل جاوا در خدمتتون هستم، برای رفع ارور کافی است فایل accessibility.properties در آدرس زیر را باز کرده :

sudo nano /etc/java-8-openjdk/accessibility.properties

و مقدار

assistive_technologies=org.GNOME.Accessibility.AtkWrapper

را کامنت کنید:

#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
زمان مطالعه: < 1 دقیقه

با سلام درود، برای رفع ارور Parsing filters unsupported بهنگام استخراج یا آن زیپ کردن یک فایل زیپ کافیست دو دستوپر زیر را اجرا کنید (دو پکیج نصب کنید):

sudo apt-get install unrar
sudo apt-get install file-roller

پس از اجرای دستورات فوق، مجدد استخراج یا آنزیپ کردن فایل زیر در لینوکس را امتحان کنید.

Tag: unzip
زمان مطالعه: < 1 دقیقه

با سلام و درود در این آموزش به نحوه پیدا کردن نام منطقی شبکه یا network device logical name پرداخته شده.

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

sudo lshw -C network
نام منطقی ابزار شبکه در لینوکس
زمان مطالعه: < 1 دقیقه

با سلام و درود، موقع استفاده از دستور sudo apt-get installیا داخل اپلیکیشن softwareاز اوبونتو و به هنگام نصب به ابزار جدید احتمالا با چنین اروری مواجه شوید، ارور داره میگه که یه دستور دیگه ای در حال نصب پکیج دیگه ای هست و به قلی لاک کرده و نمیشه شما هم زمان نصب پکیج داشته باشید، برای حل ارور اتول مطمین بشید در حال نصب پکیج در ترمینال دیگه ای نیستید و اگه مطمین شدید چیز دیگه ای در حال نصب نیست کافیست دستورات زیر را انجام دهید:

sudo killall apt apt-get

اگر دستور فوق مشکل را حل نکرد، دستورات زیر را اجرا کنید:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*

باز اگر مشکل حل نشد دیگه دسترو زیر حتما مشکل رو حل می کنه:

sudo dpkg --configure -a

و تمام

زمان مطالعه: < 1 دقیقه

با سلام و درود، به هنگام نصب Gitlab روی اوبونتو سرور به ارور زیر بر خوردم:

E: Unable to locate package gitlab-ee

نسخه اوبونتو 20.04 بود، مشکل از اینجا بود که پکیج های گیتلب بر خلاف ادعای خود گیتلب روی اوبنتو فوکال (20.04) وجود نداشت.

برای حل این مشکل کافیست پکیج نسخه ۱۹.۰۴ را اضافه کنیم و از روی همان نسخه گیت لب را نصب کنیم :

curl -L -o gitlab-ee_13.0.6.deb https://packages.gitlab.com/gitlab/gitlab-ee/packages/debian/buster/gitlab-ee_13.0.6-ee.0_amd64.deb/download.deb
sudo EXTERNAL_URL="https://gitlab.example.com" apt install ./gitlab-ee_13.0.6.deb

زمان مطالعه: < 1 دقیقه

با سلام، یکی از مواردی که با ارور زیر برخواهید خورد این است که password authentication را برای root فعال کرده اید ولی از دستور sudo mysqlبرای دسترسی به shellدارید استفاده می کنید.

ERROR 1045 (28000): Access denied for user 'sadegh-khan'@'localhost' (using password: NO)

برای حل این ارور کافیست برای ورود به Shellاز دستور زیر استفاده کنید:

mysql -u root -p

به همین راحتی 🙂

زمان مطالعه: < 1 دقیقه

با سلام، ممکن به هنگام اجرای دستور sudo systemctl start mongod.service با ارور زیر مواجه بشید:

Failed to start mongod.service: Unit mongod.service not found.

برای حل این مشکل کافیست دستور زیر رو اجرا کنید :

sudo systemctl unmask mongod

زمان مطالعه: < 1 دقیقهحل ارور Error opening directory ‘/media’: Permission denied در لینوکس

زمان مطالعه: < 1 دقیقه

خب داخل اپلیکیشن GIMP بودم که میخواستم یه فایل از درایور ویندوزم رو باز کنم که به ارور زیر برخوردم:

Error opening directory ‘/media’: Permission denied

واضحه که داره میگه دسترسی به درایو های دیگه نداری !

مشکل به سادگی حل میشه، صرفا کافیه اپلیکیشن Ubuntu Software را باز کنید، اپلیکیشن مورد نظرتون رو داخل اون جستجو کنید و پس از پیدا کردن، وارد اون اپلیکیشن شود (قاعدتا باید تیک Installed را داشه باشه)، تب Permissions رو باز کنید و گزینه Read/Write files on removable storage devices را فعال کنید 🙂

با توجه به تصویر زیر، آخرین گزینه می باشد

حل ارور Error opening directory ‘/media’: Permission denied در لینوکس
حل ارور Error opening directory '/media': Permission denied
حل ارور Error opening directory ‘/media’: Permission denied
زمان مطالعه: < 1 دقیقه

با سلام، اگر کلاس های کاستوم از django_cities_light ساخته بودید و به ارور زیر برخورد کردید :

cities_light.Region.country: (fields.E304) Reverse accessor for 'Region.country' clashes with reverse accessor for 'Region.country'. HINT: Add or change a related_name argument to the definition for 'Region.country' or 'Region.country'.

برای حل این مشکل با توجه به اسناد خود django_cities_light کافیست به تنظیمات دیجنگو خط زیر را اضافه کنید :

CITIES_LIGHT_APP_NAME = ‘yourapp_name’

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

برای مثال اگر کلاسهای ساخته شده کاست.م در این آدرس باشند: geo/models.py پس خط اضافه شده در تنظیمات باید به شکل زیر باشد:

CITIES_LIGHT_APP_NAME = 'geo'
زمان مطالعه: 2 دقیقه

با نام خدا وسلام، ارور no cached version available for offline mode رو ممکن است به هنگام اجرای پروژه باهاش مواجه شوید. این ارور داره میگه به یک ورژنی از گردل نیاز دارد ه شما در حال حاضر آن را ندارید، و چون حال آفلاین شما روشن می باشد، امکان دانلود آن را نیز ندارد و ارور ذیل را به شما نشان می دهد:

no cached version available for offline mode

برای حل مشکل تنها کافیست حالت آفلاین گردل را در انردوید استادیو(Android studio) یا IntelijIdea غیر فعال کنید.

در اندروید استادیو ورژن های جدید ( من در حال حاضر ورژن ۳.۶.۱ را استفاده می کنم و عکس زیر از این ورژن می باشد)، برای غیر فعال کردن کافیست از سمت راست بالا (داک سمت راست)، روی آیکون گردل کلیک کنید تا داک از حالت پین (میخ شده) خارج شود :

شکل زیر حالت پین شده را نشان می دهد:

شکل زیر حال از پین خارج شده :

باید روی آیکون کلیک کرده و از حالت آفلاین آن را خارج کنید تا به صورت زیر شود :

زمان مطالعه: < 1 دقیقه

با سلام، تو این مطلب میخوام به این سوال بپردازم: چگونه اطلاعات اسلات های رم را در لینوکس بدست بیاوریم؟

خب دستور اول استفاده از DMI Table Decoder است. با استفاده از دستور زیر، شما اطلعتی همچون تعداد اسلات ها و حداکثر مقدار رم رو به شما نمایش می دهد.

sudo dmidecode -t 16

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

sudo dmidecode -t 17
زمان مطالعه: < 1 دقیقه

با سلام، هنگام برخورد با ارور فوق، به احتمال قوی سایتی که Scrapy را روی آن اجرا می کنید، جلوی فعالیت شما را گرفته است. به قولی شما را بَن کرده است. خزنده شما تلاش می کند robots.txt را بخواند، اما سایت مورد نظر اجازه نمی دهد 🙂

اول از همه وارد Settings.py شوید و مطمین شوید مقدار ROBOTSTXT_OBEY برابر با False باشد (در نسخه های جدید از Scrapy این مقدار به صورت پیشفرض True است)

اگر با تغییر فوق، باز هم مشکل داشتید، بهتر است userAgent خود را تغییر دهید، برای نمونه از UserAgent زیر در فایل Settings.pyاستفاده کنید. اگر مشکل حل شد که یا باشد دنبال یه پروکسی باشید که هر دفعه IP شما را عوض بکنه یا هر دفعه UserAgent متفاوت بسازید (در این مورد داخل بلاگ حتما یه پست خواهم گذاشت ، از بالای صفحه اصلی و قسمت جستجو با عبارت scrapy یه سرچی بکنید تا ببینید الان که این مطبی رو میخوانید مطلب مربوط به پروکسی را گذاشتم یا خیر)

USER_AGENT=’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36′

زمان مطالعه: < 1 دقیقه

با سلام ودرود، بحث ساده ای رو در پیش داریم، تغییر TimeZone در Django. به صورت پیشفرض TimeZone دردیجنگو فعال می باشد.

برای تغییر TimeZone یا دیگر تنظیمات مربوط به آن باید به فایل Settings.py پروژه دیجنگوتان مراجعه کنید.

خب تو تصویر فوق ملاحظه می کنید که مقدار USE_TZ برابر با True می باشد. به این معنی که از TimeZoneاستفاده می شود. برای تغییر کافیست مقدار TIME_ZONE = ‘Asia/Tehran’ را تغییر دهید.

من تایمزون رو برابر با تهران قرار دادم، که هر مقداری می توانید قرار دهید. اینجا می توانید لیست تایمزون ها را ببینید.

زمان مطالعه: < 1 دقیقه

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

Dashboard > Appearance > Customize > WooCommerce > Product Catalog

برای نسخه های قدیمی تر به این مسیر بروید:

WooCommerce > Settings > Products > Display
زمان مطالعه: < 1 دقیقه

با سلام، برای به دست آوردن شماره سریال لپتاپ که لینوکس را روی آن اجرا می کنید، کافیست از دستور زیر استفاده کنید :

sudo dmidecode -s system-serial-number
زمان مطالعه: < 1 دقیقه

با سلام، امروز اومدم سایت رو چک کنم که دیدم هیچ کدوم از پست ها رو نشون نمیده 🙁 وارد هاست و phpmyadmin شدم و جدوا wp_posts را نگاهی انداختم که ارور زیر رو داد:

 - Table './DB_NAME/wp_posts' is marked as crashed and should be repaired 

برای حل مشکل کافیه اون جدولی که مشکل داشت رو repair کرد، تو تصویر زیر روش کار مخصه:

زمان مطالعه: < 1 دقیقه

با سلام، من ارور رو به هنگام افزودن django-cities-light دریافت کردم:

ImportError: cannot import name 'python_2_unicode_compatible' from 'django.utils.encoding'

برای این منظور کافیه جایی که python_2_unicode_compatible را import کرده اید ویرایش کنید و به جای django.utils.encoding مقدار six را قرار دهید.

همانطور که در تصویر زیر ملاحظه می کنید:

آدرس فایل برای django-cities-light آدرس زیر می باشد:

cities_light/abstract_models.py

زمان مطالعه: < 1 دقیقه

من خودم حین نصب pgadmin4 روی سرور اوبونتو و virtualenv دارای پایتون ۳.۷.۱ به این مشکل بر خوردم و کامل ارور به شکل زیر بود:

(.asemanenv) (base) sadegh_khan@aseman_ecommerce:~/w$ python .asemanenv/lib/python3.7/site-packages/pgadmin4/setup.py 
Traceback (most recent call last):
  File ".asemanenv/lib/python3.7/site-packages/pgadmin4/setup.py", line 17, in 
    from pgadmin.model import db, User, Version, ServerGroup, Server, \
  File ".asemanenv/lib/python3.7/site-packages/pgadmin4/pgadmin/__init__.py", line 25, in 
    from flask_security import Security, SQLAlchemyUserDatastore, current_user
  File ".asemanenv/lib/python3.7/site-packages/flask_security/__init__.py", line 13, in 
    from .core import Security, RoleMixin, UserMixin, AnonymousUser, current_user
  File ".asemanenv/lib/python3.7/site-packages/flask_security/core.py", line 28, in 
    from .forms import ChangePasswordForm, ConfirmRegisterForm, \
  File ".asemanenv/lib/python3.7/site-packages/flask_security/forms.py", line 17, in 
    from flask_wtf import FlaskForm as BaseForm
  File ".asemanenv/lib/python3.7/site-packages/flask_wtf/__init__.py", line 17, in 
    from .recaptcha import *
  File ".asemanenv/lib/python3.7/site-packages/flask_wtf/recaptcha/__init__.py", line 2, in 
    from .fields import *
  File ".asemanenv/lib/python3.7/site-packages/flask_wtf/recaptcha/fields.py", line 3, in 
    from . import widgets
  File ".asemanenv/lib/python3.7/site-packages/flask_wtf/recaptcha/widgets.py", line 5, in 
    from werkzeug import url_encode
ImportError: cannot import name 'url_encode' from 'werkzeug' (.asemanenv/lib/python3.7/site-packages/werkzeug/__init__.py)

و اما مشکل از کجاست ؟؟

مشکل میشه خط زیر :

ImportError: cannot import name 'url_encode' from 'werkzeug'

به نظر میرسه که ارور فوق ارور ورژنی باشد (versioning error)، ورژن جدید پکیج werkzeug دیگه دارای url_encode نیست که pgadmin4 داره دنبالش می گرده :))

راه حل :

نصب ورژنی پایینتر از ورژن فعلی werkzeug ، مشکل شما را حل خواهد کرد، برای مثال نصب ورژن werkzeug==0.16.0 با ساتفاده از دستور زیر:

pip install werkzeug==0.16.0
زمان مطالعه: < 1 دقیقه

با سلام و درود، ارور ذیل رو ممکن به هنگام نصب یکی از پکیج های پایتون باهاش برخورد کنید 🙂

FileNotFoundError: [Errno 2] No such file or directory: ‘curl-config’: ‘curl-config’

من خودم بهنگام نصب پکیج pyspider با ارور فوق برخورد داشتم. اما راه حل چیه؟؟

خیلی ساده فقط کافیه دستور زیر رو داخل ترمینال اجرا کنید :

sudo apt install libcurl4-openssl-dev libssl-dev

قط توجه داشته باشید که ارور میتونه به شکل زیر باشه (در حقیقت ارور فوق داخل ارور زیر باشه):

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-z0gvhchc/pycurl/

برای حل ارور فوق باید از دستور زیر استفاده کنید :

pip install –upgrade setuptools

اما به احتمال قوی با دستور فوق که برای ارور Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-z0gvhchc/pycurl/ استفاده کردید مشکل حل نخواهد شد و باید از همون دستور اولی استفاده کنید :

sudo apt install libcurl4-openssl-dev libssl-dev

برای فهم بیشتر اینکه ارور چطور زیر مجموعه یه ارور دیگه باشه، تصویر زیر رو مشاهده کنید:

ارور های Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-z0gvhchc/pycurl/ و FileNotFoundError: [Errno 2] No such file or directory: ‘curl-config’: ‘curl-config’

همونطور که می بینید ارور اون خط قرمز رنگ هست، منتهی دلیل ارور قرمز رنگ، اروری هست که در بالاتر ذکر شده

زمان مطالعه: < 1 دقیقه

کافیست فقط از دستور زیر استفاده کنید :

sudo -u postgres psql postgres

حال باید بعد از علامت #ظاهر شده، عبارت زیر را تایپ و enter کنید :

\password postgres

حال رمز جدید را وارد کنید و تمام

زمان مطالعه: < 1 دقیقه

خب با فرض اینکه ما postgresql به درستی نصب کردیم، منتهی به هنگام نصب psycopg2 با ارور ذیل روبرو بشیم:

You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application

برای حل این ارور کافیه دستورات زیر را به ترتیب احرا کنید:

sudo apt-get install postgresql

 sudo apt-get install python-psycopg2

sudo apt-get install libpq-dev


بهترهست برای اینکه به مشکلی احتمالاً بر نخورید از پیلترشکن استفاده کنید
پس از سه دستور فوق، مجدد دستور زیر را اجرا کنید:

pip install psycopg2

زمان مطالعه: < 1 دقیقهحل ارور Syntax error: “(” unexpected

زمان مطالعه: < 1 دقیقه

با سلام و درود، ارور Syntax error: “(” unexpected زمانی رخ میده که شما میخواید فایل bash را اجرا کنید ولی shebang در خط اول اون فایل نباشه

برای حل مشکل کافیه فقط یه عبارت bash قبل از دستور مورد نظر تون بزنید، برای مثال اگر دستور ه صورت زیر بوده:

./start.sh

کافیه bash رو قبل دستور وارد کنید :

bash ./start.sh

Tag: shebang
زمان مطالعه: < 1 دقیقه

با سلام و درود، یه مشکلی معمولا کاربرها با بلوتوث در سیستم عامل اوبونتو دارند و اون چیه !!

روشن نشدن بلوتوث !! یا به قولی ظاهرا در تنظیمات روشن شدن ولی در عمل روشن نشدن و Grayبودن آن 🙂

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

sudo service bluetooth restart

اگر دستور بالا کارساز نبود از دو دستور زیر برای ریست کردن bluetoothدر اوبونتو استفاده کنید:

sudo rmmod btusb

sudo modprobe btusb

پس از دو دستور فوق، حتما بلوتوث رو از تنظیمات خاموش و روشن کنید

زمان مطالعه: < 1 دقیقه

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

۱- فایل .zshrcرا باز کرده. (این فایل داخل پوشه home شما می باشد – hidden است)

۲- خط زیر را به آن اضافه کنید :

export PATH="/home/username/anaconda3/bin:$PATH"

توجه کنید که مسیر رو با توجه به محل نصب anaconda تغییر دهید (اگر داخل محل پیشفرض نصب کردید، فقط باید usernameا تغییر دهید)

۳- ترمینال را ببندید و باز کنید و یا از دستور زیر استفاده کنید:

source ~/.zshrc
زمان مطالعه: < 1 دقیقه

با سلام و درود، امروز میخوام در مورد ارور:

No toolchains found in the NDK toolchains folder for ABI with prefix mips64el-linux-android

یا ارور زیر صحبت کنم:

No toolchains found in the NDK toolchains folder for ABI with prefix mipsel-linux-android

برای رفع این ارور کافیه تا گردل gradle خود رو به ورژن ۳.۱ یا بالاتر بروزرسانی کنید.

برای این منظور کافیه فایل Build.gradle را باز کنید و خط مشابه زیر را نسخه اش را بالاتر از ۳.۱ کنید :

classpath 'com.android.tools.build:gradle:3.2.1'

الان خط بالایی نسخه ۳.۲.۱ هست که منجر به رف ارور میشه. فقط توجه داشته باشید که اگر از Ndk استفاده می کنید باید ورژن اون رو نیز بالاتر از ۱.۲.۵۱ انتخاب کنید (ورژن کوتلین – kotlin نیز از طریق همان فایل build.gradlerقابل تغییر می باشد)

زمان مطالعه: < 1 دقیقهپس از بروزرسانی به اندروید ۳ و گردل ۳ اگه یه سر به فایل build.gradle بزنید می بیندی که تمام compile  ها شدند implementation که این یکی از تغییراتی است که گوگل با انتشار گردل ۳ اون رو در اینجا ارائه کرده. و از این به بعد به جای compile باید از implementationاستفاده بشه.

در ذیل نیز قسمتی از اسناد گردل در این مورد رو می بینید: 

dependencies {
    api 'commons-httpclient:commons-httpclient:3.1'
    implementation 'org.apache.commons:commons-lang3:3.5' 
}

Dependencies appearing in the api configurations will be transitively exposed to consumers of the library, and as such will appear on the compile classpath of consumers.

Dependencies found in the implementation configuration will, on the other hand, not be exposed to consumers, and therefore not leak into the consumers’ compile classpath. This comes with several benefits:

  • dependencies do not leak into the compile classpath of consumers anymore, so you will never accidentally depend on a transitive dependency
  • faster compilation thanks to reduced classpath size
  • less recompilations when implementation dependencies change: consumers would not need to be recompiled
  • cleaner publishing: when used in conjunction with the new maven-publish plugin, Java libraries produce POM files that distinguish exactly between what is required to compile against the library and what is required to use the library at runtime (in other words, don’t mix what is needed to compile the library itself and what is needed to compile against the library).

The compile configuration still exists but should not be used as it will not offer the guarantees that the api and implementation configurations provide.

و اما تغییرات به شکل زیر می شوند:

  • compile تبدیل به implementation
  • testCompile تبدیل به testImplementation
  • debugCompile تبدیل به debugImplementation
  • androidTestCompile تبدیل به androidTestImplementation
  • compileOnly اما هنوز پا برجاست :) 

زمان مطالعه: < 1 دقیقهبا سلام و درود، امروز میخوام یه اکستنشن خوب برای Gnomeمعرفی کنم و اونم تقویم پارسی یا جلالی برای لینوکس 🙂

 

صفحه گیت هاب : امید راد

روش نصب سادش با نصب اکستنشن از Gnome Extension با این آدرس هست.

امیدوارم استفاده کنید ازش.

 

 

زمان مطالعه: < 1 دقیقهبا نام خدا و سلام. میخوام یه روش ساده توسط Terminal  برای دانلود کلیپ های یوتیوب (Youtube) معرفی کنم خدمتتون.

قدم اول با استفاده از دستور زیر youtube-dl را دانلود کنید:

sudo apt-get install youtube-dl

حال داخل ترمینال ابتدا دستور  youtube-dl بزنید و سپس یه فاصله (space) و سپس لینک مورد نظرتون رو بنویسید  و تمام

زمان مطالعه: < 1 دقیقهخب هنگام run کردن سرور Django یکی از ارور های رایج  ModuleNotFoundError می باشد. که داره میگه ماژولی را در کد استفاده کردیم که نصب نیست و راه حل نصب ماژول مورد نظر هست. در ادامه یه چند تا از ماژول های رایج و کد نصبشون جهت حل مشکل مورد نظر را آوردم:

مشکل : ModuleNotFoundError: No module named ‘httplib2’

دستور جهت رفع ارور : 

pip3 install httplib2 --upgrade

مشکل : ModuleNotFoundError: No module named ‘oauth2client’

دستور جهت رفع ارور : 

pip3 install --upgrade oauth2client

مشکل : ModuleNotFoundError: No module named ‘apiclient’

دستور جهت رفع ارور: 

pip3 install --upgrade google-api-python-client

 

زمان مطالعه: < 1 دقیقهحل ارور ModuleNotFoundError: No module named ‘requests’ در پایتون.

خب ارور فوق مشخصه که داره میگه ماژولی با نام requests رو نصب نداریم. برای نصب کافیه دستور زیر را بزنیم:

sudo pip3 install requests

اگر در هنگام نصب با مشکلی مشابه زیر مواجه شدیم:

sudo -H problem
sudo -H problem

من از این دستور استفاده کردم و مشکل حل شد :

easy_install requests

یک راهکار دیگه نیز میتونه باشه و اینکه شما سرور را با python اجرا کردید در صورتی که با pyhton3 اگر اجرا کنید مشکل حل خواهد شد (برای مثال):

python3 manage.py runserver 8002

 

زمان مطالعه: < 1 دقیقهبا سلام برای بستن پورت مشخص در لینوکس کافی است از دستور زیر استفاده نمایید (برای مثال اگر قصد بستن پورت 8002 را داشته باشیم):

sudo kill $(sudo lsof -t -i:8002)

 

زمان مطالعه: < 1 دقیقهبا نام خدا و سلام، من خودم ترجیح میدم postman رو به عنوان یه اپ native  روی سیستمم داشته باشم و نه به صورت یه app روی google chrome. برای اینکار ابتدا ostman را برای لینوکس دانلود کنید. برا دانلود از اینجا اقدام کنید.

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

wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
sudo tar -xzf postman.tar.gz -C /opt
rm postman.tar.gz
sudo ln -s /opt/Postman/Postman /usr/bin/postman

دستورات بالا آخرین نسخه برای لنوکس ۶۴ بیت را دانلود می کنه سپس فایل را استخراج می کنه ، فایل دانلود شده را حذف و یه لینک برای دسترسی به فایل استخراج شده می سازد.

حال برای اینکه فایل postmanبه unity desktopنیز اضافه بشه، کافیه دستورات زیر را درون terminal ک\ی کنید و سپس اینتر بزنید:

cat > ~/.local/share/applications/postman.desktop <<EOL
[Desktop Entry]
Encoding=UTF-8
Name=Postman
Exec=postman
Icon=/opt/Postman/resources/app/assets/icon.png
Terminal=false
Type=Application
Categories=Development;
EOL

 

زمان مطالعه: < 1 دقیقهبا نام خدا و سلام، برای نصب فایل ها با فرمت .bin در محیط لینوکس (اوبونتو) کافیه درون دایرکتوری که فایل با فرمت .binوجود داره دستور زیر را اجرا کنید:

chmod a+x name_of_file.bin

دقت کنید name_of_file.bin همون فایل مورد نظرتون هست که قصد نصب کردنش رو دارید.

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

./name_of_file.bin

به همین سادگی 

 

 

زمان مطالعه: < 1 دقیقهبا سلام، خب ارور واضحه که داره میگه شما گیت را نصب ندارید و برای حل این ارور کافیه گیت را نصب کنید، برای نصب در لینوکس اوبونتو کافیه دستور زیر را استفاده کنید:

sudo apt-get install git

اگر روی ویندوز نیز این ارور را داشتید مطمین بشید که گیت به درستی نصب شده و داخل path نیز تنظیم شده باشد

زمان مطالعه: < 1 دقیقهبا سلام، اگر هنگام کلیک کردن بر روی دکمه run از اندروید استادیو با پیام “Please select Android SDK” برخوردید و صفحه زیر براتون نمایش داده شد:

برای حل این مشکل کافیه به این مسیر بروید: Tools -> Android -> Sync Project with Gradle Files  (این مسیر برای اندروید استادیو ۳.۰.۱ می باشد)

زمان مطالعه: < 1 دقیقهبا سلام، ممکن نخواید آهنگ های یک فولدر مشخصی درون playerموبایل اندروییدیتان سینک بشه (برای مثال فایل های ضبط شده مکالمات تان)، برای حل این مشکل کافیه داخل فولدر مورد نظرتان یک فایل با نام (.nomedia) (اولش باید نقطه (.) باشد و سپس nomedia ، در حقیقت یک پسوند به حساب میاد) بسازید.

 

زمان مطالعه: < 1 دقیقهاگر هنگام باز کردن درایو با فرمت NTFS ، مانند هارد درایوهای اکسترنال به اروری مشابه ارور زیر بر خورد کردید:

Failed to mount ‘/dev/sdc2’: Input/output error NTFS is either inconsistent,

or there is a hardware fault, or it’s a SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows then reboot into Windows twice.

The usage of the /f parameter is very important! If the device is a SoftRAID/FakeRAID then first activate it and mount a different device under the /dev/mapper/ directory, (e.g. /dev/mapper/nvidia_eahaabcc1). Please see the ‘dmraid’ documentation for more details.

برای حل ارور زیر کافیه ntfs-3g را نصب کنید، برای اینکار دستور زیر را داخل ترمینال بزنید:

sudo apt-get install ntfs-3g

حال باید دستور زیر را بزنید:

ntfsfix [options] device که به جای device باید نام درایو مشکل دار را بزنید و Option را نیز خالی بگذارید، برای مثال با توجه به ارور فوق دستور به صورت زیر می شود:

sudo ntfsfix /dev/sdc2

 

زمان مطالعه: < 1 دقیقهبا سلام، برای تغییر برنامه های پیش فرض (برای مثال تغییر video player به vlc) کافیست وارد system setting بشید، سپس وارد details شوید و از آنجا نیز Default Applications را انتخاب کنید.

لیستی از برنامه های پیش فرض رو ملاحظه خواهید کرد که می توانید برای هر کاری برنامه مورد نظر خودتون رو انتخاب کنید.

زمان مطالعه: < 1 دقیقهبا سلام، داخل fragment اگر بخواهید به context دسترسی داشته باشید اگر از getApplicationContext() استفاده کنید به ارور زیر بر می خورید:

The method getApplicationContext() is undefined

برای حل مشکل کافیه به activity که شامل fragment میشه دسترسی پیدا کنید و  برای این کار کافیه از getActivity() استفاده کنید و د رنتیجه داریم:

getActivity().getApplicationContext()

زمان مطالعه: < 1 دقیقهبا سلام، خب یکی از ارور هایی که هنگام استفاده از findViewById در fragment بهش بر می خوریم ارور زیر هست:

cannot resolve method findviewbyid

برای حل مشکل کافیه که قبل از findviewbyid از getView() استفاده کرد (داخل onViewCreated ). برای نمونه کد زیر را ببینید:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        //return inflater.inflate(R.layout.fragment_t12, container, false);

        recyclerView = (RecyclerView) getView().findViewById(R.id.recycler_view);

        return view;
    }

با این کار view ریشه از fragment برگشت داده می شود (return) .

زمان مطالعه: < 1 دقیقهتفاوت احرازهویت با مجوز در چیست؟

  • Authentication – احراز هویت: به فرآیندی که در آن به تایید این که شما چه کسی هستید می پردازد، گفته می شود. زمانی که داخل PC خودتون با استفاده از نام کاربری و رمز عبور وارد می شوید (Log in)، شما Authentication شده اید.
  • Authorization  – مجوز : به فرآیندی که در آن به تایید اینکه شما به چه چیز هایی دسترسی دارید می پردازد، مجوز گفته می شود. دسترسی به یک منبع (به عنوان مثال دسترسی به یک دایرکتوری روی دیسک سخت) با توجه به اینکه مجوز هایش به طوری پیکربندی شده است که به شما مجوز دسترسی را داده است.