All streams
Search
Write a publication
Pull to refresh
8
0
Максим @MaxLevs

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

Send message

Астрологи объявили весёлые выходные отладки грамматики. Количество переписываний парсера увеличено вдвое.

Ну написано же, IPS, раздача, бонусы, телеграм. Для полноты не хватает только "купи тачку за 1₽".

А как вам запрос структуры поможет, если эту структуру абы как поменяли, например, до запуска приложения? В любом случае на этапе запроса получим ошибку, что схема не соответствует ожидаемой.

Вы извлечённые из базы данные потом как‑то должны обработать. И если эта обработка — не просто «получи и передай куда‑то ещё как‑есть», тогда вы ожидаете, что данные будут содержать определённые поля и хранить данные определённого типа, чтобы понимать, как это обрабатывать.

Для этого у вас должны быть гарантии, что вы извлекли то, что ожидали извлечь, и ничего неожиданного (например, данные из других полей) не получили. Для получения этих гарантий требуется выбрать, что будет источником истины: приложение или база — что‑то одно.

В данном случае источник истинны — код, в котором мы сами описываем ту схему данных, с которое это приложение умеет работать. И да, вы правильно заметили, что структура базы может поменяться, и надо как‑то обеспечить поддержку этих изменений в приложении. Для этого есть свои инструменты.

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

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

Описанные выше подходы были про Code First. Есть ещё DB first, когда мы извлекаем из базы описание структуры и, например, генерируем описание схемы и модели в коде.
Однако тут также требуется на этапе разработки после изменения схемы базы вызвать соответствующие инструменты. Так что это как будто ещё более нестабильно.

Как видим, код всё равно менять придётся. Так что я не совсем понимаю, что именно вы вкладывали в сценарий "кто-то поменял структуру"?

Ну всё, скоро microsoft придёт и за этоц статьёй

Вы правы в том, что пример запроса выглядит странно. Однако запрос структуры тут ни при чем. Данных должно быть достаточно, так как users уже хранит описание таблицы.

export const users = table(
  "users",
  {
    id: t.integer().primaryKey().generatedAlwaysAsIdentity(),
    firstName: t.varchar("first_name", { length: 256 }),
    lastName: t.varchar("last_name", { length: 256 }),
    email: t.varchar().notNull(),
    invitee: t.integer().references((): AnyPgColumn => users.id),
    role: rolesEnum().default("guest"),
  },
  (table) => [
    t.uniqueIndex("email_idx").on(table.email)
  ]
);

Но вот что точно смущает, так это то, что в запросе поля взяты как будто наобум. Обычно ожидается увидеть одно из трех:

  1. Запрос всех "своих" полей без ссылочных сущностей

  2. Запрос вообще всех полей со ссылками

  3. Запрос через * (хотя я такое нн встречал в выхлопе ORM, но не удивился бы такое увидеть)

А вот в актуальном примере какая-то лажа.

Ага. В котором пароль от Wifi в открытом виде в конфиге отображается в том случае, если этот пароль наследуется из подключённой security-конфигурации.

Пруфы
Security-профиль скрывает пароль (что от него и ожидается)
Security-профиль скрывает пароль (что от него и ожидается)
А вот в профиле wifi-инетерфейса оно теперь в отрытом виде. Безопасность👍
А вот в профиле wifi-инетерфейса оно теперь в отрытом виде. Безопасность👍

Старый winbox на моей памяти себе такого не позволял.

Хотел лайкнуть, но, к сожалению, не могу. Поэтому отпишусь так.

Согласен с Вами. Особенно, если учесть, что современные компиляторы очень хорошо умеют в оптимизацию. На https://godbolt.org/ это прекрасно можно увидеть.

Нет, голосовые ИИ – смерть.

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

А я не знал даже этого (с).

Что в умножении матриц принципиально требует ассемблера? И почему условный с++ для этого не подходит?

Ага. Сначала надо поставить инструмент для анализа уязвимостей, тоже из исходников, проверить там, а уже потом собирать. Вдруг на этапе компиляции используется баг компилятора для получения доступа к машине, на которой производится сборка.

Предлагаю прочитать пользовательское соглашение. Уверен, там найдется много интересного.

Да и вообще, все устройства сейчас скорее передаются в использование на самообеспечение, чем продаются. Телефоны, автомобили, умные колонки. Не мы ими владеем, а они нашими данными, с нашего же согласия.

P.S. Кстати, интересно, на каком этапе пользователь принимает соглашение, когда покупает колонку? У меня таких устройств нету, поэтому даже не представляю.

Это показывает, как уязвим протокол и пуллы к ddos-у. Систему можно нагнуть, а страдать будут энтузиасты, на которых всё и держится.

Домашняя директория и так засоряется всякими dotfolders. Хочется, чтобы была +- общая папочка-органайзер. И ~/.local/bin как раз в этой роли выступает.

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

Крайне сомнительное чтиво. К психопатии не имеет никакого отношения. Эти диагнозы пусть психиатр раздаёт. Или среднестатистический работник it научился различать психопата и социопата?

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

Весьма странное сравнение.
Да и за каждым ли тараканом с таком бегаете? Эффективность выше спавнрейта?

То есть там вот такие методы помогают? Добавить пробел, убрать пробел, поиграться с регистрами символов в хосте и названии заголовка. Ужас 🤣
Ребятам респект, конечно)

Согласен. А то как-то просто. И при рождении сразу выбирать оператора на всю жизнь

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity