Разработка кода и здоровый шмептицизм
209 subscribers
227 photos
23 videos
1 file
111 links
Пишу про коммерческую веб-разработку с ИИ и без него, тимлидинг и будни моей небольшой студии netspark.ru. 20 лет опыта с Drupal, также работаю с Laravel и Vue.js.

Между постами про разработку пишу просто про жизнь, которая в это время происходит.
Download Telegram
Все, пора домой, дальше будем про работу)
👍2
ИИ-мемы которые мы заслужили
😁1
Когда мы пишеем тесты на бэкенд-путь, который возвращает данные с отношениями, ($order, в нём $order→user, в нём $order→user→plan и т.д.) — следует избегать проверять отсутсвие тех или иных id через assertJsonMissing(['id' => $order2->id]) и ему подобные методы. Когда тестов окажется много, и мы их запустим разом, инкремент-айдишники в таблицах побегут и в какой-то момент внутри $order, который в json есть, внезапно окажется $user у которого id такой же как у $order2, и тест не пройдет.

Имеется в виду запуск всего пакета тестов, например, в Laravel с включенным трейтом RefreshDatabase: таблицы БД после каждого теста чистятся, но структура заново не пересоздается. Это и быстрее, и более похоже на «живую» среду.


И мы будем голову ломать, почему вдруг этот тест сломался на ровном месте и почему это проявляется, только если сразу все тесты запустить. И ладно мы, мы-то быстро найдем почему. А вот если мы работаем с ИИ, он половину рабочего кода искромсает своми правками, пока допрёт, что это было. Если допрёт вообще — мой вот не допёр.

В общем, проверять json ответа без декодирования в массивы/объекты не очень хорошо, т.к. может повлечь подобные ложные мэтчи.

Правильнее либо декодировать json в массив и сделать assert по
конкретной структуре, либо использовать замыкания в assertJson(), которые также позволяют проверять указанный уровень структуры документа.
👍2
Из примера в предыдущем посте может показаться, что подобные совпадения редки, но это совершенно не так. При достаточно большом количестве тестов они могут встречаться регулярно. Причем это количество — не такое уж и большое на самом деле. У меня например два ложных срабатывания произошли уже на таких числах: 558 tests, 2110 assertions.

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

Этот парадокс относится к «веридическим» (или по-нашему истинным) парадоксам — утверждениям, которые интуитивно кажутся людям парадоксальными, но на деле оказываюстя верными (то есть по сути парадоксами не являются). К таким парадоксам относится например известнейший парадокс Монти Холла про автомобиль за одной из трех дверей.


Если про дни рождения не слышали, то вкратце:

Как вы думаете, сколько людей должно быть в одной комнате, чтобы вероятность того, что у каких-то двух из них совпадет день рождения (число и месяц), превысила 50%? На первый взгляд может показаться, что это какое-то большое число, однако правильный ответ — 23. Всего двадцать три человека.


Сам по себе этот «парадокс» практической ценности для нас не имеет, однако есть часто встречающаяся проблема аналогичного свойства, у которой вероятность случайного мэтча выше, чем мы думаем. И о которой разработчики порой забывают. Это, конечно, хэши.

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

Но есть и более продвинутые решения, например библиотека Hashids, генерирующая уникальные хэши. Сейчас ее зачем-то переименовали в Squids , хотя hashids звучит значительно веселее. Рекомендую ознакомитсья, пользоваться, и генерируя хэши не забывать — случайности не случайны!
👍2
К нам в офис внезапно приехал на каворкинг гроза раёнов, властелин бань и печных дел, завсегдатай Друпал.ру - Анатолий!
👍4
После аварии ночью с 1 на 2е починили всё к вечеру второго.
Но после этого раза 4 свет отрубался на несколько часов. Генератор жжот 🔥 уже 40 литров почти сжёг!
Резервный LTE-модем тоже жжот, и я наконец-то научился заводить его на микротике за 2 минуты а не за полдня. Еще пара аварий и автоматизирую совсем 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Есть у нас на участке старая деревянная туалетная будка, классическая такая, с сердечком. Я в ней лопаты храню всякие. Давно хочу разобрать, потому что не нужна и уже кривится потихоньку.
А тут смотрим - в ней птицы гнездо вьют, прям через сердечко залетают и вьют. Придется оставлять)
😁2
Живу за городом 6 лет, в целом всё отлично, но иногда отмечаю у себя некоторые моменты самообмана и заблуждения относительно этой жизни.

Например, пока строились — думал, вот будет у меня офигенная веранда. Летом, сяду и буду кодить на свежем воздухе. Ляпота! Каждый раз, когда из отпуска лечу с нотбуком, тоже думаю — щас приеду, потеплеет, и на веранду с нотбуком.

Фиг там. Каждый день удобное кресло, механическая клавиатура, большой 4к-монитор и стол не оставляют веранде никаких шансов, как бы хорошо на улице ни было. Единственное для чего выхожу поработать на веранду — это для звонков, и то редко.

Хотя после стройки когда был ковид и все сидели дома я частенько совещания своей лаборатории с улицы проводил. У нас тогда лежала куча кустов на участке, выкорчеванных из пятна застройки. И мы их потихоньку в бочке жгли, с колонкой с музыкой — чисто матерые бомжары из американских фильмов. Вот и звонки у бочки проводил. Впрочем, половина сотрудников на эти созвоны соединялись с парковок гипермаркетов. Или даже изнутри, если связь позволяла. Так и жили в пандемию, зато на свежем воздухе.

А потом ковид кончился, и я из микроэлектроники ушел.
😁2
Трава пока мокрая, косить не прикольно, но в тестовом порядке выкосил себе площадочку. Теперь буду сидеть, смотреть и думать, как завтра достану штангу и наконец позанимаюсь.
А завтра придёт, подумаю ещё о чем-нибудь.
😁2👍1
Если кто собирается куда-нибудь полететь
Forwarded from AlayTravel️️️Agent
⚡️ Ограничения в российских аэропортах: где следить за изменениями и получать информацию

В аэропортах центральной части России из-за приостановки работы аэропортов продолжаются массовые задержки и отмены рейсов.

Во Внукове ограничения на полёты были сняты в 04:20, так что утром несколько рейсов успели вылететь. Аэропорт Пулково принял более 70 рейсов, перенаправленных из других городов. Теперь там образовалась очередь из самолётов, ожидающих разрешения на взлёт.

Чтобы следить за ситуацией и изменениями ваших рейсов, мы собрали основные официальные источники.

🔜 Информация о закрытии и открытии аэропортов — в официальном канале представителя Росавиации @korenyako.

🔜 Новое время вылета и прибытия — на табло аэропортов. Вот ссылки на сайты аэропортов, где вводили ограничения и на специальные уведомления с информацией для пассажиров.

Шереметьево
Внуково
Домодедово + уведомление
Жуковский + уведомление
Санкт-Петербург + уведомление
Нижний Новгород + уведомление
Казань + уведомление
Нижнекамск
Самара

🔜 Условия обмена билетов и связь с перевозчиками — в соцсетях и на сайтах авиакомпаний. Некоторые компании запустили выделенные горячие линии для пассажиров, другие ввели специальные условия обмена и возврата. Вот ссылки на телеграм-каналы российских авиакомпаний, которые уже опубликовали уведомления:

✈️ «Аэрофлот»
✈️ «Россия»
✈️ «Победа»
✈️ S7 Airlines
✈️ «Уральские авиалинии»
✈️ NordStar
✈️ Nordwind Airlines
✈️ «ИжАвиа»
✈️ Azur Air
✈️ «Ямал»

Росавиация напоминает, что пассажиры в случае продолжительных задержек вправе запросить напитки, питание или размещение в отеле в соответствии с Федеральными авиационными правилами, утверждеными приказом Минтранса России от 28 июня 2007 года № 82.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3
- Роман, нам надо срочно, срочно созвониться в скайпе!
- Ок. копирую ник, кидаю в мессенджер
- У меня не получается вас найти!
на всякий случай проверяю, все находится
- Да вроде находит, я один такой.
- Нет, я не нахожу! Лучше вы меня ищите, по имени и фамилии.
ищу, вижу три аккаунта с одним и тем же человеком на аватаре
- Вижу три аккаунта, на какой звонить?
- Какие три аккаунта, вы что, меня по имени и фамилии найти не можете?!

Это одно из последних ярких воспоминаний от работы в скайпе лет семь назад. Потом он стал не нужен, а на днях, говорят, уже и помер. Пусть ему снятся электрические овцы.
😁4
В преддверии 30 мая написал статью о защите персональных данных в Европе, то есть про GDPR.

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

GDPR и бережное хранение персональных данных
🔥3
Кстати, завел себе блог на vc.ru: https://vc.ru/graker

Если кто живой там есть, добавляйтесь, будем крепко дружить и радостно друг друга лайкать
👍3
Чат жопотэ пишет вайбкод как боженька, но блин чтобы взять его и заставить сделать картинку не 3:2 а широкоформатную - нужно продать душу, почку, и всё равно он сделает 3:2.
😁1
Кажется, я нашел отличный способ добавлять в телеграм-канал лонгриды так чтобы они оставались читабельными, со вставками кода, и далеко ходить
читать не надо было.
Посмотрите на эту копию недавней заметки про дни рождения:

https://teletype.in/@graker/5lYOnhWEJo5

А если смотрите с телефона, нажмите Instant View!
Знаете эту платформу? Подводные камни, плюсы, минусы?
Нашему турагентству AlayTravel яндекс наконец-то прислал наклейку "Хорошее место". А я смотрю и думаю: интересно, есть наклейки "Нехорошее место"? Я бы взял такую.
Правда, жаль, что офис у нас один, общий.
😁3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Так!

Кстати, наше турагентство AlayTravel отправилось во внезапную командировку. Так что я теперь не только способный и привлекательный айтишник, но и временно бать-одиночка с двумя детьми 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤨1