Tech C**P
15 subscribers
161 photos
9 videos
59 files
304 links
مدرس و برنامه نویس پایتون و لینوکس @alirezastack
Download Telegram
What do you think the best way is to extract active users from the list below in Python?

users = [
{
"email":"ali@gmail.com",
"is_active":True
},
{
"email":"mohi@gmail.com",
"is_active":True
},
{
"email":"reza@live.com",
"is_active":False
},
{
"email":"marziyeh@gmail.com",
"is_active":False
}
]

Waiting for the answers :)

#python #question
In axigen mail server you can set a filter that if sender email address (from) has a specific text using regexp then redirect it to
another mailbox:

Security and Filtering -> Acceptance and Routing -> Advanced settings -> Add acceptance / routing rule

Phew! Now in Conditions section open combo box and select Email under Recipient. Click Add condition. A text box is appeared now which you can select Regexp from the combo box and enter your regex like:

.*SpecificSender.*

Now in actions section in name enter the mail address you want to receive emails in and in Folder text box enter INBOX.

This is it.

#mail #mail_server #axigen #filter #routing
In MongoDB you can compare one field to another using $expr:

db.users.find({ $expr: { $eq: ["$created_at", "$updated_at"] } })

Here we get users that their updated_at field is equal to created_at field, here it means that user has not yet updated his profile.

#mongodb #mongo #expr #find
What is filters in Python Logging and what we can do with it?

Filter is a way to tell logger not to log or to log something. Let's say you print sensitive data in a core module that can also handle passwords. Here you don't want to record user passwords in you logs! Do you?!

class NoPasswordFilter(logging.Filter):
def filter(self, record):
return not record.getMessage().startswith('password')

logger.addFilter(NoPasswordFilter())

The above method will not log lines which start with password. You can use regex to find your template in you logs and return false
to not record them or mask the password part by chaning the the log using:

record.msg

Just get your message using the above line and replace it with something you want.

#python #logging #filter
# How to merge two dictionaries
# in Python 3.5+

>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 3, 'c': 4}

>>> z = {**x, **y}

>>> z
{'c': 4, 'a': 1, 'b': 3}

# In Python 2.x you could
# use this:
>>> z = dict(x, **y)
>>> z
{'a': 1, 'c': 4, 'b': 3}

# In these examples, Python merges dictionary keys
# in the order listed in the expression, overwriting
# duplicates from left to right.
Usually when you buy something, you're asked whether your credit card number, phone number or answer to your most secret question is still correct. However, since someone could look over your shoulder, you don't want that shown on your screen. Instead, we mask it.

Your task is to write a function maskify, which changes all but the last four characters into '#'.


Examples:
maskify("4556364607935616") == "############5616"
maskify( "64607935616") == "#######5616"
maskify( "1") == "1"
maskify( "") == ""

# "What was the name of your first pet?"
maskify("Skippy") == "##ippy"
maskify("Nananananananananananananananana Batman!") == "####################################man!"

#python #maskify
# How to sort a Python dict by value
# (== get a representation sorted by value)

>>> xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}

>>> sorted(xs.items(), key=lambda x: x[1])
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

# Or:

>>> import operator
>>> sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

#python
Python dictionary:

# The get() method on dicts
# and its "default" argument

name_for_userid = {
382: "Alice",
590: "Bob",
951: "Dilbert",
}

def greeting(userid):
return "Hi %s!" % name_for_userid.get(userid, "there")

>>> greeting(382)
"Hi Alice!"

>>> greeting(333333)
"Hi there!"

#pytricks
Complete the method/function so that it converts dash/underscore delimited words into camel casing. The first word within the output should be capitalized only if the original word was capitalized.

Examples:

to_camel_case("the-stealth-warrior") # returns "theStealthWarrior"
to_camel_case("The_Stealth_Warrior") # returns "TheStealthWarrior"

#python #codewars
Write a function, which takes a non-negative integer (seconds) as input and returns the time in a human-readable format (HH:MM:SS)

HH = hours, padded to 2 digits, range: 00 - 99
MM = minutes, padded to 2 digits, range: 00 - 59
SS = seconds, padded to 2 digits, range: 00 - 59

#python #codewars #datetime
Tech C**P
Write a function, which takes a non-negative integer (seconds) as input and returns the time in a human-readable format (HH:MM:SS) HH = hours, padded to 2 digits, range: 00 - 99 MM = minutes, padded to 2 digits, range: 00 - 59 SS = seconds, padded to…
راه حل دوست خوبمون Mehrshad:

toh = lambda n: "{}:{}:{}".format(str(n//3600).zfill(2), str((n%3600)//60).zfill(2), str((n%3600)%60))
نکته ای که هست میشود با string formatter بجای zfill پیش رفت:

return '{:02}:{:02}:{:02}'.format(s / 3600, s / 60 % 60, s % 60)

#python #solution
If you forget to pull your projects from git in a regular interval and many users working on the same projects, then there is a solution for you!

Create a bash script file as follow and make it executable by chmod +x puller.sh:

puller.sh file content:

#!/bin/bash

echo 'Iterating over folders...'
for dir in *
do
test -d "$dir" && {
cd ${dir}
echo "git pull $dir"
git pull
cd ".."
} || {
echo "------> $dir is not a directory <-------"
}
done

NOTE: this file should reside in your folder's project root. In my case it is in /Your/Projects/Folder.

Now as a final step, put it in your crontab:

10 * * * * bash -c "cd /Your/Projects/Folder; bash puller.sh >> /var/log/git_pull_output.log"

#linux #git #pull #cronjob #crontab #cron #bash