LINUX.ORG.RU
ФорумTalks

Уже обсудили новость про то, как код на Питоне для localhost'а внезапно дропнул БД в продакшене?

 , , ,


0

1

Сабж. Оригинал новости: https://keepthescore.co/blog/posts/deleting_the_production_database/ .

Сам виновник новости:

def database_model_create():
    """Only works on localhost to prevent catastrophe"""
    database = config.DevelopmentConfig.DB_DATABASE
    user = config.DevelopmentConfig.DB_USERNAME
    password = config.DevelopmentConfig.DB_PASSWORD
    port = config.DevelopmentConfig.DB_PORT
    local_db = PostgresqlDatabase(database=database, user=user, password=password, host='localhost', port=port)
    local_db.drop_tables([Game, Player, Round, Score, Order])
    local_db.create_tables([Game, Player, Round, Score, Order])
    print('Initialized the local database.')

Note that host is hardcoded to localhost. This means it should never connect to any machine other than the developer machine. Also: of course we use different passwords and users for development and production.

★★★★★

Thankfully nobody’s job is at risk due to this disaster. The founder is not going to fire the developer – because they are one and the same person.

Взоржал

Midael ★★★★★
()

код на Питоне для localhost’а внезапно дропнул БД в продакшене

Кликбейт такой кликбейт

Why? This is something we’re still trying to figure out.

vvn_black ★★★★★
()

Правды ради, питонячьи обёртки к бд зачастую написаны через жопу, например где-нибудь внутри есть singleton который игнорит создание ещё одного подключения, даже если хост отличается. Вообще половина либ к пистону боль и ад

upcFrost ★★★★★
()

Криворукожопые недоучки должны страдать.
Криворукожопые недоучки возомнившие себя девелоперами должны страдать вдвойне.
Криворукожопые недоучки возомнившие себя девелоперами и открывающие бизнесы должны страдать максимально.

Я бы на месте судьи присудил бы этой конторе компенсировать пользователями утрату данных и запрет работать девелопером и управлять другими девелоперами лет на десять как минимум.

Goury ★★★★★
()
Ответ на: комментарий от upcFrost

Вранья ради.

От через жопу непонятно где взятого мусора в голове, приводящего к такому бреду, никакие обёртки не помогут.

Goury ★★★★★
()
Ответ на: комментарий от upcFrost

где-нибудь внутри есть singleton который игнорит создание ещё одного подключения

я так и делал а нахрена нужно более чем одно подключение?

доступ для чтения из БД всем а на изменение только для одного подключения.

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)

А с чего они решили, что виноват вот этот кусок кода? И вообще у них что в пг-хба написано?

ya-betmen ★★★★★
()
Ответ на: комментарий от upcFrost

Вообще половина либ к пистону боль и ад

Ну, как говорят, зато не пешком.

BceM_IIpuBeT ★★☆☆☆
()

весёлые пидорки с эмодзи-поносом

we deleted the production database by accident

Не удивлён.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

Допустим, основная база данных проекта - mysql, но тебе к ней нужен OSM Nominatim (вторая база - pg). А третья база ведёт логи /уведомления, предположим, тоже mysql, чтобы не засирать ключи у основной базы и оставлять её белой и пушистой.

Итого, у тебя в проекте три базы.

alexmaru
()
Последнее исправление: alexmaru (всего исправлений: 2)

Ну так не удивительно. 99.99% так называемых «стартапов» это говнокод на петоне, который лезет в базу прям под ногами на локалхосте.

Reset ★★★★★
()

Интересно, al и Beard Hair (зарегистрированный сегодня) в комментариях это лоровцы?

xtouqh
()
Ответ на: комментарий от ggrn

При том, что жопоруки пишут на питоне, но не пишут, например, на COBOL. Потому что туда, где реально используется COBOL, жопоруков не допускают, а самим жопоруками он почему-то не нужен, хотя зря.

mertvoprog
()
Ответ на: комментарий от ggrn

Ну, вот, новость утверждает, что скрипт, в котором захардкожено 'localhost', подключился не к localhost'у, а к удалённой машине, на которой и удалил БД (с другим логином и паролем). Не на localhost'е.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

а нахрена нужно более чем одно подключение?

Допустим когда у тебя две базы? Или одно из подключений блокируется, а connection pool в драйвер не завезли?

upcFrost ★★★★★
()
Ответ на: комментарий от XoFfiCEr

одна и sqlite все до кучи в одной базе, логи в текстовый файл

Ну то что ты непуганый говнокодер бложикописатель не видавший шардинга и мастер-слейв баз это тут уже все в курсе.

deep-purple ★★★★★
()
Ответ на: комментарий от mertvoprog

При том, что жопоруки пишут на питоне, но не пишут, например, на COBOL. Потому что туда, где реально используется COBOL, жопоруков не допускают, а самим жопоруками он почему-то не нужен, хотя зря

Смотря что на называть жопоруком. Если для тебя 50-летняя тетенька, которая в 8 часов приходит на работу и в 17 часов уходит, и пишет код по книжкам 70-х годов — это годный, квалифицированный кодер, то я согласен, да, жопоруков туда не берут. Но если мерять это по индустрии 2000-2020 годов, то становится очевидный возникающий сам собой отрицательный отбор, когда те, кто что-то умел и могу учиться, давным давно ушли на более приятную работу, где не нужно каждый день ковырять лапшу кода из goto, глобальных переменных, и примитивных абстракций, где кол-во кода даже по сравнению с крестами соотносится как 1:2-1:3. Конечно, если речь не идет про внешнюю функцию, которая сделает всё за тебя.

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от deep-purple

сам ты говнокодер, я просто никогда большими проектами не занимаюсь, принципиально. И нет у меня никакого блога.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от saahriktu

Смотри как умею ssh -L 65432:localhost:5432 user@server

ggrn ★★★★★
()
Ответ на: комментарий от mertvoprog

Так и запишем в Nasa работают жопоруки.

ggrn ★★★★★
()
Ответ на: комментарий от Goury

Я бы на месте судьи

  • запретил называть детей именем подсудимого

  • запретил пользоваться компьютерами

  • запретил работать в коммерческих организациях

  • обязал жертвовать 25% дохода питон фаундейшн

  • обязал носить нашивку с логотипом питона

chenbr0
()
Ответ на: комментарий от XoFfiCEr

никогда

Так не неси чушь, некомпетентный. В следующий раз промолчи — за умного сойдёшь.

принципиально

Засунь свои некомпетентные принципы в свою некомпетентную норку, мыш.

deep-purple ★★★★★
()
Ответ на: комментарий от XoFfiCEr

логи в текстовый файл записывались

структурированыые логи или уведомления невозможно нормально держать в файлах, если они связаны с объектами. И если ты запустишь их выборки, ляжет всё.

alexmaru
()
Ответ на: комментарий от alexmaru

с действиями пользователя они связаны.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от deep-purple

Да именно что непуганные, покуда работают вчёрную через какие-то вебмани и карточки ;)

mertvoprog
()
Ответ на: комментарий от Goury

обычно это армянская контора в названии имеющая «global enterprise research....»

darkenshvein ★★★★★
()

Объясните не-смузихлёбу, где ломающий код. А то с «пистоном» дела не имел, не могу понять, где конкретно они накосячили.

Korchevatel ★★★★★
()
Ответ на: комментарий от xtouqh

Бывает, конечно, и такое, но в сабжевом случае утверждается, что такого не было. Что было две разных машины. На localhost'е велась разработка, а БД продакшена была на другой, удалённой машине. И так продолжалось какое-то время до сабжевого случая.

новость утверждает, что скрипт, в котором захардкожено 'localhost', подключился не к localhost'у, а к удалённой машине, на которой и удалил БД (с другим логином и паролем). Не на localhost'е.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от mertvoprog

Суровому продакшну, типа банков и каких-то госучреждений.

только если банку 100500 лет и все это писалось в эпоху «когда все компьютеры были большими», не?

Qwentor ★★★★★
()
Ответ на: комментарий от saahriktu

Я к тому, что localhost можно взять и переопределить, именно на той машине, где запускался скрипт. Вот 127.0.0.1 было бы надежней.

xtouqh
()
Ответ на: комментарий от saahriktu

криво прочитанный env файл (если рядом лежит env.prod), мог такое учудить. Или наоборот, если есть env.local и .env с прод-параметрами.

alexmaru
()
Ответ на: комментарий от Korchevatel

Объясните не-смузихлёбу, где ломающий код. А то с «пистоном» дела не имел, не могу понять, где конкретно они накосячили

Они сами не знают.

byko3y ★★★★
()
Ответ на: комментарий от mertvoprog

Думаю да, поскольку обречено умереть со временем, переписавшись на ту же жаву. Хотя этого времени может пройти и много.

Qwentor ★★★★★
()
Ответ на: комментарий от byko3y

50-летняя тетенька, которая ... пишет код по книжкам 70-х годов

Гарантия 100%, что эта тетенька кушать не может от «одно приложение = одно соединение с БД на все случаи».

Очень умные люди дали вам язык запросов, подсистему пользователей, ролей, защиту на уровне строк, хранимые процедуры... Целый мир. Даже мандатный доступ кое-где в БД вкорячили.

Но нет, мы завернем всё в универсальный ORM и будем строить параллельный мир, а БД будем использовать как хранилку таблиц.

------------

Почитал на GitHub закрытые Issues этого peewee - очень смешно выглядит, что все закрываются мгновенно с комментарием «это не ошибка, так и должно быть».

Toxo2 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.