Tech C**P
15 subscribers
161 photos
9 videos
59 files
304 links
مدرس و برنامه نویس پایتون و لینوکس @alirezastack
Download Telegram
How to prepend a string to all file names in a directory in a bash script?

for f in *.py; do mv "$f" "old-$f"; done

The above one-line will loop over all files in current directory with .py extension and prepend old- into the files.

So for example a file with name main.py will be renamed to old-main.py

#python #bash #script #prepend #move #rename #for
How do you know if a remote web server is Linux based or Windows based? (Ignore this if there is pfsense/ha proxy in front)

ping the remote ip:

ping iranhost.com

The output is similar to:

PING iranhost.com (174.142.214.47): 56 data bytes
64 bytes from 174.142.214.47: icmp_seq=0 ttl=105 time=174.379 ms
64 bytes from 174.142.214.47: icmp_seq=1 ttl=105 time=180.315 ms
64 bytes from 174.142.214.47: icmp_seq=2 ttl=105 time=177.937 ms


Look at the ttl part of the output. If it's above 100, it is a windows based machine otherwise it is a Linux based machine.


#os #linux #windows #ping #ttl #iranhost
Forwarded from Alireza Hos.
This media is not supported in your browser
VIEW IN TELEGRAM
🔺حمایت کم نظیر مردم ترکیه از پول کشورشان

🔹کاهش 13درصدی ارزش دلار نسبت به لیر از زمان شروع کمپین مردمی
Did you know that the below code returns True?

>>> bool("False")
True

That's because False is a string and boolean of non-empty string is True. There are workarounds:

1- s == 'True'

Do not use this piece of code if you don't know what you're doing. Misusing this technic puts a mess in your code! Be cautious.

2- The other more elegant way is to use json library like below:

>>> import json
>>> json.loads("false".lower())
False
>>> json.loads("True".lower())
True

NOTE: you need to make it lower case in order to turn the string into a boolean value.

#python #boolean #true #false #cast #convert #bool
How to clone a database in MySQL?

mysqldump -u root db_name | mysql -u root new_db_name

NOTE: if it gets password provide -p to both commands.

#mysql #clone #copy #database #copy_database
I_Heart_Logs.pdf
4.7 MB
How to use thousand separator in Python & Jinja2?

The python way is to use format as below:

'user credit is {:,}'.format(10000)


And in Jinja2 it is like the following line:

user credit is {{ '{0:,}'.format(user_credit | int) }}


#python #jinja2 #separator #thousand_separator
As you may know you can use capitalize to make the first letter of a word upper case. For example you can turn failed to Failed.

In Jinja2 you can use title to do the same job:

{{ "failed" | title }}

#python #jinja2 #filter #title #capitalize
How to query on Google Big Query?

Big Query or for short BQ is a data warehousing solution that puts your data on a serverless platform with no limit on data size and processing power. It is design for this specific purpose and returns aggregated results in a fraction of a second most of the time.


In python you can use its library by installing google-cloud-bigquery:

pip install --upgrade google-cloud-bigquery

Now create a service account as stated in link below:

https://cloud.google.com/bigquery/docs/reference/libraries

We assume that you have done the installation and configuration process for now. To query on BQ:

from google.cloud import bigquery
bigquery_client = bigquery.Client()
dataset_id = 'MY_PROJECT'
query = ("SELECT user_id FROM MY_PROJECT.users LIMIT 100")

# API CALL
query_job = bigquery_client.query(query)

for row in query_job:
print row.user_id, row['user_id']


You can send update commands like the above query too.

#google #BI #bigdata #bigquery #warehouse #data_warehouse
How to implement email tracking solution?

nginX has a module called empty_gif that generates a 1*1 pixel image. It is usually put at the end of campaign emails in order to track how many users have opened the email. The code for nginX is:

location = /empty.gif {
empty_gif;
expires -1;
post_action @track;
}

location @track {
internal;
proxy_pass http://tracking-backend/track$is_args$args;
proxy_set_header x-ip $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}


The above code check if /empty.gif URL is requested, if answer is yes then serve the image and makes expires to -1 to not cache the image and finally using post_action which calls a sub request after the current request has been fininshed. The parameters you need to pass is put after the image link in email like:

https://www.example.com/empty.gif?token=SOMETHING_TO_TRACK
#nginx #email #empty_gif #email_tracking #pixel
Vue.js 2.epub
13.1 MB