Как стать автором
Обновить
4
0.2

Пользователь

Отправить сообщение

Я бы написал так:


found = any(predicate(x) for x in iterable)
if not found:
  raise NotFoundException()

или так


found = any(map(predicate, iterable))
if not found:
  raise NotFoundException()

А бывают какие-нибудь недорогие сплит-клавиатуры для начинающих? Тупо чтобы попробовать и решить — нужно мне это вообще или нет.

Здесь философы просто обязаны сказать, что это от того, что Фейнман просто не понимает всей глубины физики :)

Потому, что философия — это искусство сомневаться. А вовсе не то, что писали аристотель с платоном

Я прямо по этому утверждению вижу, что в первую очередь философия — это выдумывание удобных определений на ходу, подмена понятий и прочее словоблудие.
Вот именно за это её и не любят. За то, что в философии можно из воздуха выхватить абсолютно любой удобный тезис, не заботясь о том, чем он обоснован. Потому что обоснование всегда можно придумать уже задним числом.


Философия всегда готова приписать себе всё хорошее, что есть в науке, этике и здравом смысле. Но если начать говорить о конкретике, если спросить у вас хоть какую-то ясную методологию получения тех сокровищ мудрости, на которые философия якобы так горазда, то в ответ — невнятное блеяние и общие слова.


Ну и конечно, как же в дискуссии о философии обойтись без аргумента "ненастоящего шотландца". Если что-то в философии явно показало свою ущербность — то это "ненастоящая философия". Но критериев как отличить "настоящую" философию от "ненастоящей" нету. Это всегда объеснение задним числом.

И как бы философия тут помогла?
Только без общих слов про то, что философия является базой в вопросах этики.


Как раз-таки привычка предаваться философии делает человека уязвимым к манипуляциям через такие пропагандистские концепции как "историческая справедливость", "национальное самосознание", "национальная идея" и т.п.


Здоровому человеку не нужна философия, чтобы понимать, что война — плохо.

Как вы сформулируете эти "общие вопросы", не занимаясь предварительно частностями?
В реальности контуры общих вопросов можно наметить только после того, как произведена какая-то работа на массиве частных вопросов.
Без этого попытка выглючить общие вопросы из головы порождает только пустые химеры.

которые философы нашли очень давно

В античности и средние века под философией понимали вообще всё, что не являлось прикладным знанием.
После того, как оформился научный подход, всё ценное выделилось из философии в отдельные научные направления — логику, психологию, естественные науки, методологию и тд, и тп. Осталась только всякая ментальная шелуха, не обладающая никакой ценностью.


И говорить, что этот шлак обладает ценность, потому что "все другие науки произошли от него", это всё равно, что превозносить алхимию. То есть да, алхимики сделали много открытий и разработали много методик работы с веществом. Но после появления полноценной химической науки алхимию можно сдавать в утиль.

Мне в этом плане нравится утверждение, что в питоне фактически присутствует то, что можно назвать Gradual Typing (постепенная типизация).
То есть простой и очевидный код или прототип мы можем писать и менять очень быстро без заморочек с типами. А когда код стабилизируется и начинает обрастать логикой, мы можем постепенно вводить типы, основываясь на уже настоявшихся абстракциях.
Это даёт гибкость, но действительно требует определённой культуры разработки, которая не у всех есть.


Впрочем, в последние годы всё больше вижу, что народ распробовал аннотирование типов.

Я некоторое время провёл, внося изменения в питоновский код, где в половину функций передавались аргументы params или opts, или сразу оба вместе. Каждый из них был словарём с переменным набором параметров/опций, причём они не формировались в одном месте, а прокидывались через много уровней, и их содержимое могло обогащаться/изменяться по ходу этого прокидывания.
То есть не было никакого спосбоа узнать, а какие ключи в принципе там могут лежать, и в каком формате их значения. Эту информацию приходилось собирать по крупицам, ползая по всему коду.


Если бы вместо словарей тут использовались нормальные датаклассы с типизированными значениями, то это лишь чуть-чуть увеличило бы трудозатраты при написании, но значительно сократило бы их при доработке, отладке и расследовании инцидентов. И дополнительно снизило бы вероятность ошибок и количество потраченных нервов.

А ещё — даже если ИИ действительно сочтёт людей самой интересной вещью во Вселенной, то из этого никак не следует, что он будет непременно дружественным.
Он очень легко может прийти к мысли, что пассивное наблюдение за объектом изучения — не самый лучший метод познания, и гораздо эффективнее — активные эксперименты.

Вроде бы Яндекс.Трекер вполне можно потыкать в облаке, а для маленьких команд до 5 человек он бесплатен.

И раз уж зашла речь про БД, то в них есть индексы на основе хэша.

Мартин в каком-то из интервью говорил, что причины климатического хаоса в Вестеросе — магические, а не астрономические, и это будет объяснено в конце саги.

Вот так получается на питоне:


Разбор логов
import re

separator = re.compile('\s+')

with open("access.log") as log_file:
    for line in log_file:
        parts = re.split(separator, line)
        if parts[8] == '500':
            print(line)

Работа с базой
import psycopg2

conn = psycopg2.connect(dbname='database', user='db_user', password='mypassword', host='localhost')
cursor = conn.cursor()

cursor.execute('SELECT deal_city_id, "ShortName", "FullName" FROM public.deal_city ORDER BY deal_city_id')

for row in cursor:
    print(f"{row['deal_city_id']} {row['ShortName']} {row['FullName']}")

cursor.close()
conn.close()

Получение информации о сертефикате
import OpenSSL
import ssl

cert = ssl.get_server_certificate(('www.example.com', 443))
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)

print(x509.get_subject())
print(x509.get_notBefore())
print(x509.get_notAfter())

Работа с джсоном
import json

json_str = '''[
    {"id":1,"name":"Larry"},
    {"id":2,"name":"Robert"},
    {"id":3,"name":"Rob"},
    {"id":4,"name":"Ken"}
]'''

developers = json.loads(json_str)

for d in developers:
    print(d)

Хорошая мысль, я займусь этим в выходные.

А я в статье и не призываю никого учить Perl и ничего против питона не имею

Я просто счёл нужным оставить этот коммент на тот случай, если статью будет читать кто-то, кто пока не ориентируется в языках, но присматривает подходящий инструмент автоматизации )

Можете считать это глубоким имхо, но я должен это написать:


  • сейчас рекомендовать Perl в качестве скриптового языка в сфере системного администрирования стоит только тем, кто уже знает Perl, и почему-то принципиально против изучения питона
  • рекомендовать Go в качестве скриптового языка в сфере системного администрирования стоит только тем, кто в своих специфических задачах упирается в производительность, и не может найти подходящего модуля для питона
  • всем остальным 99,9% системных администраторов всё-таки стоит взять питон

Я про САП ничего не знаю :(
Можете объяснить на пальцах, как можно в монолите независимо масштабировать/деплоить части системы?

Очень зависит от специфики конкретного сервиса.
Если возникает необходимость независимо масштабировать части систему — монолит в пролёте.
Если возникает необходимость независимо выкатывать части системы — монолит в пролёте.
Ну а единая БД может быть и при микросервисной структуре (правда, многие считают это анти-паттерном).

Информация

В рейтинге
2 619-й
Зарегистрирован
Активность