Как стать автором
Обновить
15
0
Сашк @azxc

пользователь kdb+

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

А было бы классно, если бы вы автоматизировали фиксанье багов и регрессий в гитлабе. А то как-то достало, что многие баги и регрессии висят без какой-либо активности, кроме переноса на след релиз…

кмк, лучше переписать список ожидаемых exceptions, чем Exception. Но это дело вкуса.


я в последнее время очень полюбил модуль pathlib (раньше использовал py.path), и всем советую его. но если не хочется, всегда можно сделать os.path.splitext(filename)[1]. собственно идея комментария была в том, что бы не делать path.lower() несколько раз в коде + сделать аккуратнее логику с .jpg/jpeg.


а вообще спасибо за статью — мне было интересно почитать и кое-что новое узнал. когда-нибудь пригодится :)

в функции processor:


try:
...
except Exception as exception:

не позволил вам найти опечатку в строчке


with pdfplumber.open(path) as pfd:

тут явная опечатка pfd должно быть pdf. ну и, кмк if len(pdf.pages): можно заменить было бы на if pdf.pages:.


А еще там же, можно было бы написать


from pathlib import Path

ext = Path(path).suffix.lower()

и дальше сравнивать if ext == '.pdf':, и не повторять кучу раз код. Да, три лишние строчки добавится, но код станет читабельнее.

первое что бросилось в глаза… это был вот этот кусок. похожее есть в


    if 'lang' in respdetect.keys():
        respdetect = respdetect
    else:
        respdetect = {'code': 200, 'lang': 'en'}

Почему бы не заменить на


    if  'lang' not in respdetect.keys():
        respdetect = {'code': 200, 'lang': 'en'}

во-вторых, не всегда requests.get вернет объект response из которого можно вытащить json. я бы, все таки, проверил что response code == 200 (или requests.codes.ok); или использовал response.raise_for_errors().


ну и самое интересное — а что произойдет, если clipboard изменится между вызовом detect() и translate()? понимаю, что маловероятно, но это race condition. посоветовал бы сохранять состояние клипборда в переменную, а потом уже детектить язык и переводить.

поддерживать gitlab in-house — ничего не стоит и занимает максимум часа полтора в месяц на апгрейды, если судить из моих записей.

тк была известная история, когда Gitlab потерял данные из-за того, что backupы не работали, с тех пор держу два инстанса: primary и backup. кажду ночь делаю backup на primary и восстанавливаю на backup, следя за ошибками при восстановлении. таким образом всегда знаю — у меня есть бэкап и он точно работает. из минусов такого — иногда на backup инстансе заканчивается место — но об этом я тоже вовремя узнаю. сейчас это делается всё легко, не так как лет 6 назад, когда гитлаб только становился на ноги…

Для работы с q в Питоне с помощью PyQ, можно и не переходить в псевдо-q режим для создания таблицы:


>>> from pyq import q
>>> q.trade = q('([]date:();sym:();qty:())')
>>> q.insert('trade', (date(2006,10,6), 'IBM', 200))
k(',0')
>>> q.insert('trade', (date(2006,10,6), 'MSFT', 100)) 
k(',1')
>>> q.trade.show()
date       sym  qty
-------------------
2006.10.06 IBM  200
2006.10.06 MSFT 100

Можно сделать связку python + kdb, воспользовавшись PyQ.

#bug в профайле, в приглашениях на английском, мне говорит, что «You have 1 приглашение». Ну и «invite some good people» звучит как-то не по-английски. Честно говоря, я бы не переводил это дословно. Предложить ничего не могу.

картинка
image

Можно. Хотя я не знаю как сделано в certbot — он у меня на centos6 не захотел в какой-то момент заводиться и просил рут, я тогда нашёл замену lego, а позднее нашел и acme.sh, который работает везде, где мне надо.

Я пример написал для «ручногого» получения. У acme.sh есть поддержка моего ДНС провайдера, поэтому проблем с автоматическим renew нет. У меня даже ssl для iLo автоматически обновляется, но это уже другая история.

доверять приватный ключ кому-либо — это ай-ай-ай! я пользуюсь acme.sh, где получение нового сертификата делает одна команда:


acme.sh --issue --dns -d *.example.com 

У вас ошибочка:


f: {[i_d, i_k]..

и


f[2017.01.01, 12]

параметры функции разделяются точкой с запятой, а не запятой. Запятая — это join. Точно так же с вызовом функции.

В штатах, испытательный срок от месяца до шести (обычно — три), после которых делают ревью. Зарплата в первые три месяца может быть меньше, чем потом; ну и медицинскую страховку получаешь по окончании испытательного срока. А практически во всех контрактах на работу (обычно, это employee handbook) написано, что работаешь ты «at will», т.е пока работодателя устраиваешь. Если перестанешь удовлетворять, или надобность отпадет, может быть дадим двухнедельное предупреждение, и — до свидания. Или сразу выставим за дверь, что б ты ничего в отместку не натворил.

Если не секрет — где?

а почему код ошибки 100? почему бы не сделать простое и всем понятное: 404, если года в календаре нет?

собственно сервису проверки даты он нужен, как козе рукав.

ну почему же? зачем всем видеть, что айпи 33.33.33.33 решил узнать выходной ли пятое апреля 18 года?

ладно, уговорили.


тогда где возможность выбора календаря? (знаю, что сейчас один, но, скажем, добавите вы туда выходные в украине или сша — как выбрать?)

(кстати, полный список загруженных годов и стран, можно узнать тут).

404 ошибка на https://isdayoff.ru/db.


Но, если честно, web-сервис для определения выходного это какой-то перебор. Я пользуюсь numpy.is_busday и это одна строчка + определение календаря, если мне нужно добавить какие-то специфические календари, типа когда была открыта биржа или что-то еще. Вот это и есть одна-две строчки.

Оно должно было так и работать, если я был бы в лёгкой фазе сна. А оно меня постоянно будило за 10 минут до будильника (как раз то время, что я выставил) в глубокой фазе сна.

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
New York, New York, США
Зарегистрирован
Активность