Pull to refresh
2
0
Иван @iredun

Back-end разработчик

Send message

Посмотрите на pydantic-settings, кажется он решает все тоже самое без велосипеда.

И еще немного подушню:

  • пройдитесь линтером по коду библиотеки - так будет намного приятнее ее смотреть

  • Настройте setup.py и setup.cfg для пакета и пропишите зависимости - что бы не нужно было руками dotenv ставить, раз вы опубликовали ее на pypi

А почему не стали использовать i18n? Это вроде стандарт для таких вещей, может конечно для чего-то маленького и нет смысла его использовать, но интересно причину узнать.

У меня есть замечательный скрин диалога с их ТП. 2017 год, нашел критичный баг, благодаря которому можно посмотреть любую заявку (все документы в том числе). Я предупредил, ответ меня порадовал.


У вас ссылка на код, ведет на OpenAI ChatGPT

А чем tkinter.messagebox не устроил? Не говоря уже о том зачем это все :)

Если знаешь, что делаешь, то и на pygame можно сделать адекватное.
Пример https://www.youtube.com/watch?v=JugaoeDyKB4, очень круто человек делает)

Мы у себя на GitLab сделали через fabric, не то что бы совсем лучшее решение (а что-то подсказывает что и не хорошее вовсе), но для наших мелких нужд хватает. У нас стояла задача - просто автоматизировать процесс выкатывания на сервер.


Сценарий такой:

  • В секретах лежат ip host'ов для dev и prod и доступ для ssh (ключ или пароль)

  • Когда кто-то запушил в ветку, запустилась задача из fabric в зависимости от ветки (там же она понимает какие секреты взять)

  • Задача выполняет нужные действия на сервере (сливает ветку, применяет миграции, делает билд фронта (если нужно), перезапускает службы).

Жаль, что сейчас таких «продвинутых» слишком много. Без докера уже hello word не поднять.

Ну docker для hello word — это выстрел в ноги будет, особенно новичку (хотя на чем то же тренироваться нужно). Но для чего-то маленького он реально не нужен, конечно, все зависит от того, что нужно получить, иногда все же docker очень удобно (если умеешь с ним работать:) ).

запихнуть по venv'у в каждый hello word контейнер
запихнуть в контейнер pyenv и забацать там внутри еще venv
Соболезную, что такое приходилось видеть :)
Опять какие-то вредные советы…
Если у вас файлик settings.py не в .gitignore, то после изменения на сервере Debug = False, вы уже не сможете сделать git pull, как сказано у вас в статье. Поэтому, лучше выносить это все (настройки) в отдельный файл по типу .env и оттуда считывать параметры.

gunicorn ProjectName.wsgi:application- -bind 0.0.0.0:9000
Что даст эта команда? Она просто в текущем соединении shh запустит этот процесс, как только вы закроете консоль gunicorn упадет и толка в этом всем 0.
Если нужно, что бы оно постоянно работало (а я так подозреваю именно это вы и хотели получить), то можно воспользоваться systemd (как самым простым вариантом) или docker (для продвинутых).

А еще, если на сервере несколько приложений планируется хостить, то лучше что бы у проекта был свой venv. Хотя даже если не планируется, все же лучше venv делать.
У вас в разделе «Построение HTTP REST API»
@app.route('/image', methods=['POST'])
def image_post_request():  
    model = keras.models.load_model('model.h5')

    x = image.convert(request.json['image'])
    y = model.predict(x.reshape((1,28,28,1))).reshape((10,))
    n = int(np.argmax(y, axis=0))
    y = [float(i) for i in y]


Т.е. при каждом запросе, будет грузиться модель с диска, что не хорошо по скорости, а если модель большая(1гб+), запрос будет отрабатывать слишком долго.

В ссылках у Вас есть пример на github в котором сделано как я говорю.
Т.е. сначала все загрузили в память при старте приложения, а потом уже дергаем метод для распознавания.
А разве хорошая затея делать
model = keras.models.load_model('model.h5')

На каждый запрос? Почему нельзя загрузить в приложении модель и потом к загруженной уже обращаться? Или я чего-то не понял?
Так и это по сути перепечатка статьи с DigitalOcean + немного вредных советов, по типу:
[Service]
User=root

Ну или я что-то не понял.
Не знаю на счет концентрации, но музыка мне помогает убрать лишние шумы в офисе (чьи-то разговоры, полемики и т.д.) и ты не так сильно отвлекаешься. А жанр музыка — что нравится то и слушаю, за день это и рок, и металл, и драм, и классика может проскочить, в общем дело вкуса.
Если говорить за работу дома — тоже с музыкой (возможно это привычка уже), хотя могу быть и один в этот момент.
Расскажу схему на которую сам попался…
3 года назад выставил на Авито я свой MacBook 2012 года, позвонил парень, попросил встретиться (встречу я устроил в фойе своей общаги студенческой, хоть и не помогло это особо...), он посмотрел ноут, предложил на 20% меньше чем я хотел, я отказал, он ушел.
Ближе к вечеру позвонил он еще раз и согласился на мой ценник. Ну я на радостях форматнул все, чистую систему завел. Он приехал, я ему ноут, он мне деньги — но говорит «у меня не сбербанк, а Московский индустриальный», я согласился (ой дурак...), он сделал перевод, скинул чек и ушел.
Сижу значит я жду денег (минут 5 прошло), но как-то неспокойной, решил позвонить в этот банк и спросить «Были ли действия по счету который в чеке есть или реальный он хотя бы?», а мне говорят «Молодей человек а это Демо-счет». Ну думаю приплыли… Звоню ему естественно телефон выключен. Через пару минут он перезванивает и спрашивает какой пароль я поставил на ПК? (Вот тут нужно было сказать что бы он вернулся и я ввел бы пароль и т.д.) Но я был на эмоциях и начал на него гнать что он кидало и т.д. А обработал он красиво конечно, заговаривал только так.
В общем мой ноут полиция ищет до сих пор. (хотя записи с камер есть и видно куда он уходил)

Как я выяснил позже в приложении этого банка можно завести демо-счет (анонимно) с 300к на карте, выполнять переводы и получать чеки, только в чеке в самом верху написано, что это демо и когда он делал скрин он обрезал эту строку.

Мораль сей басни такова: берите только наличку и возле банкомата и сразу закидывайте на карту.

Грустно по сей день…
А зачем тут вообще selenium?
Как написали выше, в коде страницы есть данные, да еще и в удобном формате.
Тут можно все намного проще сделать:
import requests
import json

start_json_template = "window._cianConfig['frontend-offer-card'] = "

url = "https://www.cian.ru/sale/flat/222059642/"

photos = []

response = requests.get(url)
html = response.text

if start_json_template in html:
    start = html.index(start_json_template) + len(start_json_template)
    end = html.index('</script>', start)
    json_raw = html[start:end].strip()[:-1]
    json = json.loads(json_raw)
    for item in json:
        if item['key'] == 'defaultState':
            for photo in item['value']['offerData']['offer']['photos']:
                photos.append(photo['fullUrl'])
            break

print(photos)
У вас там в тексте ссылка поломалась
Видим две функции, HidD_GetFeature и HidD_SetFeature. Оба в файле не прослеживаются… Зато очень хорошо прослеживаются в официальной документации Майкрософт — тут и ...
Как-то увидел в одной статье про кастомизацию Битрикса
И Битрикс не был бы Битриксом без неведомой еб***ны

Если есть возможность поставить битрикс и не трогать его, настроив только в админке — вполне себе норм система, быстро и не дорого.
НО! Как только шаг влево, шаг вправо — куча костылей, что-то после обновы сломалось, стандартный функционал (описанный в документации) не работает и т.д.
Итого получится долго и дорого.
Друг переименовывает себя в Pavel Durov, загружает нужное фото = profit, теперь можно делать заявления, что Павел такой плохой… и он всех обманывает и т.д.
Бред.
За Геной наблюдаем через Kadira (картинка в начале поста)
1

Information

Rating
Does not participate
Location
Ставрополь, Ставропольский край, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
Python
Git
Django
Docker
Database