🇺🇦 Python Programming Сhallenges
1.04K subscribers
3 photos
2 files
63 links
Размышления на тему решения различных задач по спортивному программированию на Python и не только.
加入频道
Всем привет!
15-16 февраля 2019 года пройдет PyConBelarus, мы уже начали принимать заявки на доклады и активно ищем новых спикеров :)
Если вы думаете подать доклад или это ваша первая заявка можно написать мне, я подскажу как это сделать более эффективно (telegram/twitter @a_soldatenko)
https://www.papercall.io/pyconby
https://by.pycon.org/
Guido van Rossum is the creator of Python, one of the most popular and impactful programming languages in the world. This conversation is part of the Artificial Intelligence podcast and the MIT course 6.S099: Artificial General Intelligence.
https://www.youtube.com/watch?time_continue=1&v=ghwaIiE3Nd8
Если вы еще не в курсе то уже есть видео с FOSDEM
https://video.fosdem.org/2019/UD2.120/
Forwarded from 🇺🇦 Go for two :)
COME ON SHOW US THE REGULAR EXPRESSION
или как Cloudflare обещает показать регулярное выражение ...
https://blog.cloudflare.com/cloudflare-outage/
Forwarded from Sysadmin Tools 🇺🇦
Автор python requests ищет новых владельцев для своих репозиториев, и предлагает передать их во владение в этой теме

Если вы умеете в python и вам близка тема open source - wellcome!
Дэвид Бизли выложил курс, на который потратил около 13 лет:
https://dabeaz-course.github.io/practical-python
Forwarded from oleg_log (Oleg Kovalov)
"filter(P, S) is almost always written clearer as [x for x in S if P(x)]"

(с) Guido van Rossum on Python
После моего доклада на python fwdays обещал рассказать как пользоваться tcpdump:

Andrii Soldatenko, [18.05.20 13:15]
tcpdump example:
1. Я запустил postgresql в докере и пробросли порт в систему (5432)
f9284723a810 postgres "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:5432->5432
2. запускаем tcpdump:
sudo tcpdump -i lo0 -nX dst port 5432
важный параметр:
-X print data of each packet in hex and ascii

3. Логинимся
PGPASSWORD=postgres psql -U postgres -h localhost
4. То что видим в tcpdump output (некоторые пакеты я пропустил):
13:09:25.020387 IP6 ::1.62337 > ::1.5432: Flags [P.], seq 8:92, ack 2, win 6371, options [nop,nop,TS val 962074756 ecr 962074756], length 84
0x0000: 6004 334d 0074 0640 0000 0000 0000 0000 `.3M.t.@........
0x0010: 0000 0000 0000 0001 0000 0000 0000 0000 ................
0x0020: 0000 0000 0000 0001 f381 1538 3b74 c631 ...........8;t.1
0x0030: b72a e9e7 8018 18e3 007c 0000 0101 080a .*.......|......
0x0040: 3958 1884 3958 1884 0000 0054 0003 0000 9X..9X.....T....
0x0050: 7573 6572 0070 6f73 7467 7265 7300 6461 user.postgres.da
0x0060: 7461 6261 7365 0070 6f73 7467 7265 7300 tabase.postgres.
0x0070: 6170 706c 6963 6174 696f 6e5f 6e61 6d65 application_name
0x0080: 0070 7371 6c00 636c 6965 6e74 5f65 6e63 .psql.client_enc
0x0090: 6f64 696e 6700 5554 4638 0000 oding.UTF8..
1

13:09:25.022436 IP6 ::1.62337 > ::1.5432: Flags [P.], seq 92:133, ack 15, win 6371, options [nop,nop,TS val 962074758 ecr 962074758], length 41
0x0000: 6004 334d 0049 0640 0000 0000 0000 0000 `.3M.I.@........
0x0010: 0000 0000 0000 0001 0000 0000 0000 0000 ................
0x0020: 0000 0000 0000 0001 f381 1538 3b74 c685 ...........8;t..
0x0030: b72a e9f4 8018 18e3 0051 0000 0101 080a .*.......Q......
0x0040: 3958 1886 3958 1886 7000 0000 286d 6435 9X..9X..p...(md5
0x0050: 6234 3339 6532 3464 3065 6231 3861 3635 b439e24d0eb18a65
0x0060: 6431 6563 3039 6438 3231 3333 3665 6565 d1ec09d821336eee
0x0070: 00 .
1
Далее все завист от того как настроен ваш сервер БД (https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html)
у меня это md5 - Require the client to supply an MD5-encrypted password for authentication. See Section 19.3.2 for details.
13:09:25.022436 IP6 ::1.62337 > ::1.5432: Flags [P.], seq 92:133, ack 15, win 6371, options [nop,nop,TS val 962074758 ecr 962074758], length 41
0x0000: 6004 334d 0049 0640 0000 0000 0000 0000 `.3M.I.@........
0x0010: 0000 0000 0000 0001 0000 0000 0000 0000 ................
0x0020: 0000 0000 0000 0001 f381 1538 3b74 c685 ...........8;t..
0x0030: b72a e9f4 8018 18e3 0051 0000 0101 080a .*.......Q......
0x0040: 3958 1886 3958 1886 7000 0000 286d 6435 9X..9X..p...(md5
0x0050: 6234 3339 6532 3464 3065 6231 3861 3635 b439e24d0eb18a65
0x0060: 6431 6563 3039 6438 3231 3333 3665 6565 d1ec09d821336eee
0x0070: 00 .
1
но бывает там стоит password - Require the client to supply an unencrypted password for authentication =)
Import Linter allows you to define and enforce rules for the imports within and between Python packages.

[importlinter]
root_package = myproject

[importlinter:contract:1]
name=Foo doesn't import bar or baz
type=forbidden
source_modules=
myproject.foo
forbidden_modules=
myproject.bar
myproject.baz


Example output:
=============
Import Linter
=============

---------
Contracts
---------

Analyzed 23 files, 44 dependencies.
-----------------------------------

Foo doesn't import bar or baz BROKEN

Contracts: 1 broken.

https://import-linter.readthedocs.io/en/stable/readme.html
beta preview of Python 3.9 is out:

- PEP 584, Union Operators in dict
- PEP 585, Type Hinting Generics In Standard Collections
- PEP 593, Flexible function and variable annotations
- PEP 602, Python adopts a stable annual release cadence
- PEP 615, Support for the IANA Time Zone Database in the Standard Library
- PEP 616, String methods to remove prefixes and suffixes
- PEP 617, New PEG parser for CPython

https://www.python.org/downloads/release/python-390b2/
Restructuring data, the Python way.

>>> import glom
>>> glom.assign({}, "a.b.c.d", 42, missing=dict)
{'a': {'b': {'c': {'d': 42}}}}

# Path-based access for nested structures
>>> target = {'a': {'b': {'c': 'd'}}}
>>> glom(target, 'a.b.c')
'd'

happy glomming! 😋

https://glom.readthedocs.io/en/latest/
Forwarded from 🇺🇦 Go for two :)
Note #68: The Rules of Optimization Club

1. You do not optimize.
2. You do not optimize, without measuring first.
3. When the performance is not bound by the code, but by external factors, the optimization is over.
4. Only optimize code that already has full unit test coverage.
5. One factor at a time.
6. No unresolved bugs, no schedule pressure.
7. Testing will go on as long as it has to.
8. If this is your first night at Optimization Club, you have to write a test case.

from https://wiki.c2.com/?RulesOfOptimizationClub