select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid();
بایگانی دسته: آموزش
دکوراتورها تو پایتون
دکوراتورها یه متد رو میگیرن و قبل از اجرای اون یه سری بلا سرش میارن. البته این برداشت منه که ایشالله درسته
def saeb(func: Callable) -> Callable:
def b(*arg, **kwarg):
func(*arg, kwarg)
return b
@saeb
def a(*args, **kwargs):
print(args, kwargs)
رجکس ولیدیت مبایل php
شل وردپرس
به من که [همیشه] تازه کارم، داشتن دسترسی به متدها و کلاسای وردپرس از طریق خط فرمان خیلی کمک میکنه که بتونم افزونه توسعه بدم.
یه پست هست مربوط به سال ۲۰۱۵ که متاسفانه حذف شده
https://jondavidjohn.com/interactive-wordpress-php-shell/
از سایت آرشیو
https://web.archive.org/web/20171108022106/https://jondavidjohn.com/interactive-wordpress-php-shell/
اون رو میذارمش اینجا شاید به کار بقیه هم بیاد.
Ever wanted to just poke around inside a WordPress install? Run some code and immediately see the results without logging to the error log or other common approaches? This sort of tool has been available for many languages including PHP (php -a
) for some time. It provides rapid experimentation and exploration of language features and behavior.
But what if we could load WordPress into the interactive shell? It was this type of tool that allowed me (and I’m sure many others) to learn the rails api so quickly. Allowing you to perform basic CRUD operations on your models, test out function calls, and see the results in real time.
It’s fairly easy to accomplish this with WordPress. Simply include the following file in your WordPress project, we’ll call it cli.php
.
<?php
// assumes this file is placed in ../wp
define('CLI_WP_ROOT', dirname(__FILE__).'/wp');
$_SERVER['HTTP_HOST'] = 'http://example.dev/';
ob_start();
require_once(CLI_WP_ROOT.'/wp-load.php');
require_once(ABSPATH.'wp-admin/includes/admin.php');
ob_end_clean();
Clearly you need to make sure your paths and faux HTTP_HOST
match the current project.
Then simply start up an interactive php shell and include cli.php
.
$> php -a
Interactive shell
php > include 'cli.php';
php > echo get_bloginfo('title');
Test WordPress Site
At this point you should have access to all of WordPress’s function library with complete database access so be careful if you are using this in an environment that has important data.
Now you have an interactive session to experiment and explore the WordPress API in real time.
نصب روتر پیازی بر روی رسپری پای ۳ و رسپیان ۹ stretch
قبلن یه آموزش ساخت روتر پیازی گذاشته بودم که روی رسپیان ۹ stretch جواب نمی ده . لذا قایل های کانفیگم رو برای رسپیان ۹ اینجا قرار میدم. لکن یه نگاه بهش بندازید یکم توضیح دادم چی به چیه اونجا.
نرمافزاریی که نیاز هست الان نصب کنید :
sudo apt install tor torsocks hostapd dnsmasq
برای فعال کردنشون هم که از دستورای زیر استفاده میکنیم:
sudo systemctl enable tor
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
برای آی پی استاتیک کابل اترنت فایل زیر رو باید ویرایش کنیم :
sudo nano /etc/dhcpcd.conf
# Example static IP configuration: interface wlan0 static ip_address=172.24.1.1/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 static routers=172.24.1.1 #static domain_name_servers=127.0.10.1 , 208.67.222.222 # Example static IP configuration: interface eth0 static ip_address=192.168.1.13/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 static routers=192.168.1.1 #static domain_name_servers=192.168.1.1
البته قسمت دوم که مربوط به کابل شبکه eth0
هست، اجباری نیست ولی خوب خودم برای این که بتونم داخل شبکه خودم دسترسی ssh
داشته باشم ترجیحم اینه که آی پی کابل شبکه هم استاتیک باشه.
کار پکیج hostapd اینه که یه هات اسپات بسازه و براش دوتا تنظیم نیاز داریم.
یک ساخت یه فایل توی آدرس زیر با این مشخصات :
nano /etc/hostapd/hostapd.conf
interface=wlan0 # Use the nl80211 driver with the brcmfmac driver driver=nl80211 # This is the name of the network ssid=Tor # Use the 2.4GHz band hw_mode=g # Use channel 6 channel=6 # Enable 802.11n ieee80211n=1 # Enable WMM wmm_enabled=1 # Enable 40MHz channels with 20ns guard interval ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] # Accept all MAC addresses macaddr_acl=0 # Use WPA authentication auth_algs=1 # Require clients to know the network name ignore_broadcast_ssid=0 # Use WPA2 wpa=2 # Use a pre-shared key wpa_key_mgmt=WPA-PSK # The network passphrase wpa_passphrase=1234567890-+ # Use AES, instead of TKIP rsn_pairwise=CCMP
بعد هم توی فایل زیر
sudo nano /etc/default/hostapd
دنبال دستور
#DAEMON_CONF=""
بگردید و به صورت زیر تغییرش بدید:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
بریم سراغ فایل dnsmasq
اول از کانفیگ اصلیش یه بک آپ بگیریم
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org
حالا یه فایل جدید بسازیم با داستانای زیر:
sudo nano /etc/dnsmasq.conf
interface=wlan0 # Use interface wlan0 listen-address=172.24.1.1 # Explicitly specify the address to listen on #bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere no-resolv port=53 server=127.0.10.1 # Forward DNS requests to Google DNS domain-needed # Don't forward short names bogus-priv # Never forward addresses in the non-routed address spaces. dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time
داخل فایل زیر
sudo nano /etc/sysctl.conf
یه خط هست به صورت
#net.ipv4.ip_forward=1
که باید از حالت نظر بیرونش بیاریم و #
اولش رو پاک میکنیم.
مونده فایل کانفیگ تور
sudo nano /etc/tor/torrc
که من فعلا فقط دستورای زیر رو توش دارم. تا برم پل بهش اضافه کنم بعدن و سرورترنسپورت meek و obfs4 رو هم دستی کامپایل کنم و تعریف کنم:
Log notice file /var/log/tor/notices.log VirtualAddrNetwork 10.192.0.0/10 AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 172.24.1.1 DNSPort 127.0.10.1:53 #DNSListenAddress 127.0.10.1
بیاید به محکم کاری فایل لاگ تور رو خودمون دستی بسازیم:
sudo touch /var/log/tor/notices.log
بریم سراغ تنظیمات فایروالمون:
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22 sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53 sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
همانطور که مستحضرید دستورای فایروال با هر ریاستارت پاک میشن. لذا پکیج iptables-persistent
رو هم نصب میکنیم.
sudo apt install iptables-persistent
به روز رسانی همه پکیجهای پایتون
python3 -m pip freeze > /tmp/pip; sed -i 's/==.*//' /tmp/pip; python3 -m pip install -r /tmp/pip --upgrade --user
بات پاک کننده فایل های APK از گروه ها
سلام این روزا نمیدونم چطور یه اسپمر اومده توی گروهها فایل نصبی اندرویدی میزاره و از گروه لفت میده. یه بات نوشتم که اگه به جز مدیر کسی فایل نصبی اندروید بفرسته فایل رو پاک کنه و دسترسی طرف رو هم ببینده
برای استفاده از بات فقط لازمه مدیر گروهش کنید و دسترسی پاک کردن و بن کردن پیام ها رو بهش بدید.
http://t.me/apkdelbot
سورس بات :
ارسال فایلهای حجیم یک پوشه توسط SSH+telegram-cli+pytg به تلگرام
کاری که امروز میخوام بکنم اینه که از طریق SSH وصل بشم به ماشین مجازیم، تمام ویدیوهای جادی توی یوتیوب رو دانلود کنم و با تلگرام تحت خط فرمان و کتابخونه پایتونی pytg ویدیوها رو ارسال کنم کانال تلگرامم.
خوب با دستور SSH وارد VPSم شدم و توی پوشه /tmp یه پوشه jadi ساختم بعد با دستور زیر همه ویدیو های کانال یوتیوب جادی رو دانلود کردم.
youtube-dl -i https://www.youtube.com/user/jadi19jadi19/videos
آرگومان -i میگه که اگه توی دانلود ویدیویی به مشکل بر خوردی برو سراغ ویدیو بعدی و کلا از برنامه خارج نشو.
اگه youtube-dl رو نصب ندارید میتونید به راحتی با دستور زیر آخرین نسخه شو نصب کنید.
python3 -m pip install --upgrade --user youtube-dl
آرگومان –user میگه که فایلها و کتابخونه های مورد نیاز رو برای همین یوزر نصب کن فقط. که نیاز به دسترسی های مدیری نداره.
برای آشنایی با سایر قابلیتهای youtube-dl میتویند گیت نرمافزار رو مطالعه کنید.
https://github.com/rg3/youtube-dl/blob/master/README.md#format-selection
خوب کل ویدیوهای جادی دانلود شدن.
حالا اگه تلگرام کلای رو نصب ندارید از آدرس زیر نصب کنید:
https://github.com/vysheng/tg
بعد از نصب با یه پورت دلخواه و به صورت خروجی جیسون اجراش میکنیم.
/tmp /home/saeb/App/tg/bin/telegram-cli --json -P 4667
برای ارسال به یک کانال تلگرام نیاز داریم که یونیک آی دی کانال رو بدونیم. توی تلگرام کلای دستور زیر رو اول مینویسیم
channel_list
بعد با دستور زیر اطلاعات کانال مورد نظرمون رو میگیریم.
channel_info اطراف_من
{"id": "$050000007d208f3f0115b300fb607ab4", "print_name": "اطراف_من", "flags": 65603, "peer_type": "channel", "title": "اطراف من", "peer_id": 1066344573, "participants_count": 8, "admins_count": 3, "kicked_count": 0}
خوب یونیک آیدی کانال ما میشه "$050000007d208f3f0115b300fb607ab4"
حالا تلگرام کلای رو باز میزاریم و میریم سراغ پایتون
اول از همه کتابخونه pytg رو نصب میکنیم.
python3 -m pip install pytg --upgrade --user
حالا پایتون رو اجرا میکنیم و کتابخونه های مورد نیازمون رو توش صدا میزنیم.
saeb@Fujitsu ~ python3
import subprocess from pytg.sender import Sender from time import sleep sender = Sender(host="localhost", port=4667)
خوب فایلهای پوشه ای که توش ویدیوها رو ریختیم که به من پوشه
/tmp/jadi
هست رو به صورت یه لیست ذخیره میکنیم.
ls=subprocess.getoutput('find /tmp/jadi -name "*.*"').splitlines()
خوب حالا فایلهامون رو میفرستیم به کانال
for i in ls: try: sent=sender.send_video("$050000007d208f3f0115b300fb607ab4",i,i.split('/')[3]) if sent: subprocess.run('mv',i,'/tmp') except: sleep(400)
توی دستور sender.send_video ورودی اول همون یونیک آیدی جایی هست که میخوایم بهش فایلها رو بفرستیم. ورودی دوم ادرس فایل هست و ورودی سوم کپشن زیر ویدیو هست.
چند تا نکته : یک دستورا رو کپی پیست نکنید تو رفتگی شون رعایت نشده پایتون دندون میگیره. دو اون اسلیپ ۴۰۰ برای اینه که پیشفرض ارسال فایل پایتیجی یک دقیقه هست و اگه بیشتر از یک دقیقه طول بکشه هشدار میده ولی ویدیو رو تلگرام کلای میفرسته . به من بر حسب تجربه هر فایلی بیشتر از چارصد ثانیه طول نمیکشه.اگه کسی بلده چطور زمان تایم اوت پایتیجی رو میشه عوض کرد بگه بزارم همیجا.
نصب فونت های صابر راستیکردار بر روی توزیعهای لینوکس
صابر راستی کردار یه پنج شیش تا فونت داره که برای کارهای روزمره کفایت میکنه. از جمله فونت همین متن که اسمش وزیر هست.
هر دفعه یه توزیع لینوکسی نصب میکنم ک زیاد هم اتفاق میفته مجبورم فونت ها رو از اول دونه دونه دانلود کنم. خوب چه کاریه. بیاین براش یه اسکریپت بنویسیم که همه رو یه جا بهمون نصب کنه.
برای نصب فونتها دستور زیر رو توی ترمینال اجرا کنید. نیاز نداره دسترسی مدیری داشته باشه.
bash -c "$(wget http://bit.ly/2uRyGaT -O -)"
اینم سورس اسکریپت :
یه بات تلگرامی ساده ساخت پسورد
لینک دانلود آموزش سی پلاس پلاس دکتر رامتین خسروی
معرفی درس
لینک دوره در وبسایت مکتبخانه :
http://maktabkhooneh.org/course/rkhosravi-ap
در این درس فنونی مورد بررسی قرار میگیرند که در نوشتن برنامههای با کیفیت مؤثرند. محور اصلی این فنون برنامهنویسی شیءگرا خواهد بود که در قابلیت نگهداری برنامهها و استفاده مجدد از اجزای آنها نقش کلیدی دارد. علاوه بر این، درستی کارکرد، سرعت اجرا و استفاده بهینه از حافظه عوامل کیفی دیگری هستند که مورد توجه این درس هستند. زبان برنامهنویسی مورد استفاده سیپلاسپلاس است اما سعی میشود تا حد امکان مفاهیم مطرح شده مستقل از زبان و در سطحی بالاتر مورد بحث قرار بگیرند. پیشنیاز این درس دانستن مبانی کامپیوتر و برنامهنویسی به زبان سی (شامل مفاهیم پایه، توابع، ساختارها و اشارهگرها) میباشد. برنامههای مطرحشده در کلاس از طریق سایت یادداشتهای درس به نشانی ramtung.ir/apnotes/html قابل دسترسی هستند.
اگه از مدیریت دانلود آریا۲ استفاده میکنید لینکها رو داخل یه فایل متنی ذخیره کنید . داخل همون پوشه ترمینال رو باز کنید و دستور زیر رو بنویسید.
aria2c -i links.txt -j 4
سوییچ
-i links.txt
میگه لینکها رو از فایل links.txt
بخون
سوییچ
-j 4
میگه همزمان چهار فایل رو با هم دانلود کن.
اینم لینکای دانلود.
لینک دانلود ویدیوهای پروژه بستون جادی
جزییات پروژه بستون توی وبلاگ جادی موجوده.
توی چند پست قبل پرسیدم آیا ایده ای دارین که بشه باهاش یک استارتاپ راه انداخت؟ خب چرا نمی گین که راه بندازیم (: آخرش هم رفتم سراغ نیاز اصلی خودم در مورد یک سیستم که توش بتونم دقیقا داشته باشم چقدر پول خرج کردم و چقدر پول درآوردم و احتمالا چقدر به کی قرض داده ام و این تیپ چیزها. چنین سیستمی الان هم هست ولی خب راه انداختنش فان است و به خیلی آدم ها نشون می ده که چقدر ساده و سریع می تونن ایده هاشون رو پیاده کنن. الزاما از استارتاپ حرف نمی زنم، علاقمندی من مدیر شدن و شرکت عظیم و رشد انفجاری و سید اولیه و انجل پول و اینوستور و فروختن و اینها نیست. علاقمندی من یک زندگی فان است با خروجی های جذاب (: چیزی که بعضی ها بهش می گن «لایف استایل پروگرمر». شیوه کارمون هم «دو آپ» است و شخصا همه چیز رو می چرونیم. از راه اندازی اولیه و دیپلوی کردن روی سرور تا ساپورت و دیباگ و بک آپ و … و دوست دارم شما شاهد همه مراحلش باشین.
برای خودم لینک های دانلود ویدیوهای آموزشی رو جمع کردم که با نرم افزار مدیریت دانلود آریاطوسی ویدیوها رو دانلود کنم. گفتم شاید به کار بقیه هم بیاد.
اسکریپت رو توی یه فایل متنی به اسم bestoon.sh
داخل پوشه ای ک میخواید ویدیوها دانلود بشه ،ذخیره کنید و از ترمینال توی همون پوشه ای که فایل رو ذخیره کردید بزنید.
bash bestoon.sh
اولین استفاده من از فیلتر و هوک در وردپرس
میخواستم بالا هر مطلبم یه عکس نشون بدم.
با استفاده از آموزش زیر
http://mhr-developer.com/1394/12/07/wordpress-hook-action-system-plugin-tutorial/
این کد رو به قمست نمایش > ویرایشگر > function اضافه کردم .
function content_filter_function($content){ $warnc='<br><img src="http://sae13.ir/wp-content/uploads/2016/10/warning.png" style="display: block;margin-left: auto;margin-right: auto"></br>'; $content= $warnc.$content; return $content; } add_filter("the_content","content_filter_function");
و عکس اضافه شد و السلام.
تعمیر زیرنویس فارسی در مدیریت فایل تونار
خوب بیاین به کلیک راست مدیریت فایل یه گزینه اضافه کنیم که زیرنویس فارسی مون رو تعمیر کنه.
اول از همه یه نرم افزار ویرایشگر متن رو باز کنیم.اگه مدیریت فایلتون توناره احتمالا ویرایشگر متنتون موسپد Mousepad هست.و فایل زیر رو داخلش کپی کنیم.
خوب حالا فایل رو به هر اسمی که دوست دارید هرجا دلتون خواست ذخیره کنید.من یه پوشه به نام Scripts داخل پوشه Documents خودم دارم و اسکریپتام رو اونجا ذخیره میکنم.
حالا مدیریت فایل Thunar رو باز میکنیم روی فایلی که ساختیم کلیک راست میکنیم و گزینه Properties رو میزنیم . بعد از تب Permissions فایل رو به عنوان برنامه قابل اجرا تنظیم میکنیم.
حالا مطابق شکل از منوی بالا Thunar گزینه Edit و Configure costume action رو انتخاب می کنیم.
گزینه + رو بزنید.
تو قسمت کامند روی پوشه کلیک کنید و فایل متنی یی که ساختیم رو انتخاب میکنیم . توجه کنید که خودکار آخر فایل یه %f اضافه شده. اگه خودکار اضافه نشد..که بعیده.. خودتون دستی اضافش کنید.
حالا پسوند فایل هایی که میخوایم وقتی روشون راست کلیک میکنیم گزینه تعمیر زیرنویس رو نشون بده انتخاب می کنیم.
*.srt;*.SRT
خوب دیگه غذا آمادست.
فیلتر سایت های سکس در شبکه تور
خوب برای این کار باید DNS سرورمون رو جایی قرار بدیم که وقتی آدرس یه سایت سکس رو میزنیم بفرسته به یه سایت هشدار یا فلان
برای این کار نرم افزار DNSCrypt v رو نصب میکنیم.
توی پایه آرچ ها
sudo pacman -S dnscrypt-proxy
توی پایه دبیان ها
sudo apt install dnscrypt-proxy
حالا باید به dnscrypt بگیم که از فلان سرور استفاده کن که اصطلاحا FamilyShield داره و سایتای خاک بر سری رو باز نمیکنه.
چطور؟ اینطور
sudo nano /usr/lib/systemd/system/dnscrypt-proxy.service
یه خط هست نوشته
ExecStart=/usr/bin/dnscrypt-proxy \ --resolver-name=<resolver name> \ --user=<user name to run the service as>
تغییرش میدیم به
ExecStart=/usr/bin/dnscrypt-proxy -R cisco-familyshield # --resolver-name=<resolver name> \ # --user=<user name to run the service as>
خوب حالا میخوایم به سیستممون بعد احوالپرسی بگیم که جناب سیستم برای خوندن DNS از نرم افزار dnscrypt استفاده کن . چطو؟ ایطو؟
sudo nano /etc/reslov.conf
حالا به اول فایلی که اضافه شد خط زیر رو اضافه می کنیم و اگه خط دیگه هم داخل فایل هست اولش یه #
اضافه میکنیم.
nameserver 127.0.0.1
یه نرم افزارای بی تربیتی هستن که بدون هماهنگی این فایل resolv.conf رو دستکاری میکنن. میخوایم بگیم هیشکی حق نداره این کار رو بکنه.
sudo chattr +i /etc/resolv.conf
حالا باید تور رو اجبار کنیم که از DNS ما استفاده کنه نه مال خودش.
توی مرورگر فایرفوکس یا توربروزر توی تنظیماتی که داخل عکس میبینید اون تیک Remote DNS رو برمیداریم که برای DNS از تور استفاده نکنه
بعد سرویس dnscrypt رو فعال میکنیم که همیشه خودش خودکار شروع به کار بکنه
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
این پیام رو میبینیم :
➜ ~ systemctl enable dnscrypt-proxy Created symlink /etc/systemd/system/multi-user.target.wants/dnscrypt-proxy.service → /usr/lib/systemd/system/dnscrypt-proxy.service. Created symlink /etc/systemd/system/sockets.target.wants/dnscrypt-proxy.socket → /usr/lib/systemd/system/dnscrypt-proxy.socket. ➜ ~
systemctl daemon-reload
systemctl restart dnscrypt-proxy
حالا باید وقتی میخوایم وارد سایت خاک بر سری بشیم یه چی مشابه این ببینیم