Tech C**P
15 subscribers
161 photos
9 videos
59 files
304 links
مدرس و برنامه نویس پایتون و لینوکس @alirezastack
Download Telegram
سلام و خداقوت به همراهان عزیز کانال،
🔴 بزودی در کنار پادکستهای بسیار زیبای Masters of Scale دوره های آموزشی MongoDB مقدماتی قرار داده می شود (زبان اصلی)

با ما همراه باشید :)
If you use json.dumps() in order to write a json into a file, it will be wriiten all in one line. You can do more with dumps(). You can pretty print into the file with indentation using indent parameter:

dumped_json = json.dumps(json.loads(content), indent=4)


You can do more and sort json keys! To do that pass sort_keys to dumps function like below:

dumped_json = json.dumps(json.loads(content), indent=4, sort_keys=True)

#python #json #dumps #indent #sort #sort_keys
Few days ago we talk about gitPython to work with git inside of python. The code below is a sample that would do all routine tasks like pulling and pushing or commit.

1- Initiate git object in python by providing path:

from git import Repo
repo = Repo(repo_path)


2- If you want to pull results from git repo:

repo.git.pull('origin', 'refs/heads/dev')


3- Let's say you want to set username and email for git author:

config = repo.config_writer()
config.set_value("user", "email", author_email)
config.set_value("user", "name", author_name)


4- Now to add a specific file to staged:

index = repo.index
index.add([file_path])


5- Commit the staged file with a message:

index.commit(commit_message)


6- The final step is to push to a remote repo:

repo.git.push('origin', 'refs/heads/dev')

#python #git #gitPython #pull #push #author
In case you want to serve static files in your website in nginX, you can add a new location directive to your server block that corresponds to your website:

server {

# your rest of codes in server block...

location / {

location ~ \.(css|ico|jpg|png) {
root /etc/nginx/www/your_site/statics;
}

# your rest of codes...

}
}

This is it, whether it is a uwsgi proxy, fpm, etc.

#web_server #nginx #static #location #serve
Netflix has open sourced his container management system called Titus written in Go Lang. You can see documentation of it here:

- https://netflix.github.io/titus/

Source code and Docs:

- https://github.com/Netflix/titus

#container_orchestration #docker #container #golang #go #netflix #titus #aws
If you have installed mysql server and want to install MYSQL-python package, you may encounter the below error like me:

EnvironmentError: mysql_config not found


The solution is to install libmysqlclient-dev:

sudo apt-get install libmysqlclient-dev


If you have installed MariaDB then:

sudo apt-get install libmariadbclient-dev

#mysql #mysql_config #MYSQLpython
If you have installed google-api-python-client and got below error on authentication:

No crypto library available

You need to install PyCrypto using pip or PyOpenSSL.

You can also do:

sudo pip install PyOpenSSL --upgrade

#python #google_api_python_client
If you have mongoDB as your database and you query on DB from an external network, make sure you have SSL in place. By not using SSL everyone can evesdrop on the network data which is transmitted in between.

Read the below article to set SSL on server side:

- https://docs.mongodb.com/manual/tutorial/configure-ssl/

Now in order to set SSL=True in mongo python driver head over to link below to read more on:

- http://api.mongodb.com/python/current/examples/tls.html

#mongodb #ssl #tls #pymongo
If you want to make an exact copy of a table from another database into a target database in mySQL you could do like below:

create table new_table like target_database.target_table

The above command will create a table named new_table like target_table from target_database database.

#mysql #database #create_table #table #copy_table
If you want to disable mouse in vim 8 in new Debian, put the below line in your ~/.vimrc:

set mouse=c

It just kills me when I want to work with vim with mouse enabled!

#linux #debian #vim #mouse_enabled
An interesting scenario in Python

If you have list of numbers like below:

numbers= ["+98121434", "+9821322", "+986241234"]


Now let's say you want to check a partial number like 121434, or 98121434 or +98121434 to see if it is inside of the list. What
would you do?

It's clear that you cannot do something like:

# YOU CANNOT DO THIS!
if number in numbers:
pass


So to check all the list element and also check the partial number we can do as below:

if any(partial_number in s for s in numbers):
pass


We have explained any before enough. Check previous posts for any and all.


#python #any #for
Tech C**P
http://phoenixframework.org/blog/the-road-to-2-million-websocket-connections The Road to 2 Million Websocket Connections in Phoenix
از اونجا که تب پیام رسان های داخلی داغ هست بد نیست مطلب بالا رو مرورکنید برای اینکه بدونید چطور کرنل لینوکس رو بهبود میدن تا کانکشن های زیاد رو هندل کنند.
♨️ با توجه به اخبار منتشر شده مبنی بر فیلتر تلگرام، لطفا در صورت تمایل آدرس ما در ایتا را دنبال کنید:

یادداشت های فنی یک برنامه نویس در طول کار.
https://eitaa.com/technical_notes
A couple days ago we talked about MongoDB that uses TLS/SSL to encrypt the communication with clients connecting to it (like pyMongo). Now if you want to test MongoDB with self-signed certificate you can generate one with the command below:

cd /etc/ssl/
openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key


This operation generates a new, self-signed certificate with no passphrase that is valid for 365 days. Once you have the certificate, concatenate the certificate and private key to a .pem file, as in the following example:

cat mongodb-cert.key mongodb-cert.crt > mongodb.pem


If using the YAML configuration file format, include the following configuration in the file:

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem

NOTE: instead of requireSSL you can use preferSSL to not force the requirement. It depends on the requirements and network topolgy.


#mongodb #ssl #tls #pem #openssl
Now to make you MongoDB client connection secure just pass ssl=True:

# test_mongodb_ssl.py
client = pymongo.MongoClient('example.com', ssl=True)


When you run this script check your mongoDB logs (usually in /var/log/mongodb/mongod.log`). The thing you should take into account is that when you pass `ssl=True parameter to MongoClient you just should see the below log (ip addresses wil vary):

I NETWORK  [listener] connection accepted from 172.15.141.162:50761 #49 (39 connections now open)
I NETWORK [conn49] end connection 172.15.141.162:50761 (38 connections now open)


Now remove ssl=True from MongoClient or pass ssl=False. If you now run your test script, you would see something like below in mongod.log:

I NETWORK  [listener] connection accepted from 172.15.141.162:50762 #50 (39 connections now open)
I NETWORK [conn50] SSL mode is set to 'preferred' and connection 50 to 172.15.141.162:50762 is not using SSL.

It says that SSL mode in mongo config is set to preferSSL and your new connection to mongo is not using it.

YOU NEED TO BE CAUTIOUS that we have created our SSL ourselves and it is vulnerable to man in the middle attack. For production usage purchase you SSL/TLS certifcate.

#mongodb #mongo #ssl #pymongo