Вообще я нормально отношусь ко всем стилям форматирования кода. Кроме тех где открывающая фигурная скобка на отдельной строке - зачем вы так делаете, извращенцы?!
В личных проектах я даже разрешаю ИИ вкорячивать код в немного другом стиле и не переделывать. Если надо будет, все равно одной кнопкой можно переформатить.
Однако если ты работаешь в команде, стиль у всех должен быть один сразу и навсегда. Любой тимлид скажет, как это прикольно - делать ревью на PR, где надо проскроллить сотни закоммиченных изменений отступов чтобы найти значимое изменение. А потом ещё раз, потому что у другого разраба другой стиль.
Это кажется очевидным, но как ни странно, практика показывает, что далеко не все разработчики об этом догадываются.
В личных проектах я даже разрешаю ИИ вкорячивать код в немного другом стиле и не переделывать. Если надо будет, все равно одной кнопкой можно переформатить.
Однако если ты работаешь в команде, стиль у всех должен быть один сразу и навсегда. Любой тимлид скажет, как это прикольно - делать ревью на PR, где надо проскроллить сотни закоммиченных изменений отступов чтобы найти значимое изменение. А потом ещё раз, потому что у другого разраба другой стиль.
Это кажется очевидным, но как ни странно, практика показывает, что далеко не все разработчики об этом догадываются.
Хочешь стать, или хотя бы показаться в глазах коллег и руководства толковым специалистом? Вот тебе простой, но очень полезный софт-скилл.
Допустим, тебе дали задачу «с историей». Прочитай эту историю. Всю. От начала и, блин, до конца. А потом уже задавай вопросы. Сразу вырастешь в глазах коллег.
Ну или забей, и немедленно начни спрашивать и комментировать, ничего не читая. Внезапно окажется, что на все твои вопросы и комментарии уже даны ответы, надо только прочитать коммент прямо под твоим. И как только тебе на это укажут, в глазах руководства ты тут же станешь этим, которому надо всё два раза объяснять. Что в плане будущей карьеры конечно же будет тебе мешать. А избавиться от этого будет гораздо сложнее, чем сразу сделать правильно.
Потому что очень достает порой, когда в рабочие обсуждения приходят люди, не желающие прочитать эти ужасные длинные три коммента, и поэтому спрашивающие заново то, что в них уже написано. И не только меня.
Допустим, тебе дали задачу «с историей». Прочитай эту историю. Всю. От начала и, блин, до конца. А потом уже задавай вопросы. Сразу вырастешь в глазах коллег.
Ну или забей, и немедленно начни спрашивать и комментировать, ничего не читая. Внезапно окажется, что на все твои вопросы и комментарии уже даны ответы, надо только прочитать коммент прямо под твоим. И как только тебе на это укажут, в глазах руководства ты тут же станешь этим, которому надо всё два раза объяснять. Что в плане будущей карьеры конечно же будет тебе мешать. А избавиться от этого будет гораздо сложнее, чем сразу сделать правильно.
Потому что очень достает порой, когда в рабочие обсуждения приходят люди, не желающие прочитать эти ужасные длинные три коммента, и поэтому спрашивающие заново то, что в них уже написано. И не только меня.
👍2😁1
В поездке удалось испытать приложение Летим - это виртуальная карта в лирах. Можно пополнять по СБП, можно платить по QR, можно снимать деньги в банкоматиках.
Также можно заказать выпуск физической карты, её привезут в отель на месте. Я не стал, показалось излишним, но есть нюанс. Чтобы в банкомате снять денег не втыкая карту - надо сфоткать приложением QR на экране, чтобы оно выписало банкомату волшебного пня. То есть нужно чтобы интернет на телефоне в этот момент работал.
В целом полезная штука, чтобы не возить с собой кэш, для всех кто наслаждается санкциями. Оплачивать с неё тоже можно по QR, там где он на терминале есть.
Комиссию за сервис берут при пополнении и при снятии наличных. За оплату QRом - не берут. Размеры не изучал, вроде немного, но в любом случае её видно сразу, до операции.
А вот дома как международной картой для покупки всяких сервисов ей видимо не воспользоваться: платёжная система Troy как я понял годится только в Турции.
Также можно заказать выпуск физической карты, её привезут в отель на месте. Я не стал, показалось излишним, но есть нюанс. Чтобы в банкомате снять денег не втыкая карту - надо сфоткать приложением QR на экране, чтобы оно выписало банкомату волшебного пня. То есть нужно чтобы интернет на телефоне в этот момент работал.
В целом полезная штука, чтобы не возить с собой кэш, для всех кто наслаждается санкциями. Оплачивать с неё тоже можно по QR, там где он на терминале есть.
Комиссию за сервис берут при пополнении и при снятии наличных. За оплату QRом - не берут. Размеры не изучал, вроде немного, но в любом случае её видно сразу, до операции.
А вот дома как международной картой для покупки всяких сервисов ей видимо не воспользоваться: платёжная система Troy как я понял годится только в Турции.
👍2
Когда мы пишеем тесты на бэкенд-путь, который возвращает данные с отношениями, ($order, в нём $order→user, в нём $order→user→plan и т.д.) — следует избегать проверять отсутсвие тех или иных id через assertJsonMissing(['id' => $order2->id]) и ему подобные методы. Когда тестов окажется много, и мы их запустим разом, инкремент-айдишники в таблицах побегут и в какой-то момент внутри $order, который в json есть, внезапно окажется $user у которого id такой же как у $order2, и тест не пройдет.
И мы будем голову ломать, почему вдруг этот тест сломался на ровном месте и почему это проявляется, только если сразу все тесты запустить. И ладно мы, мы-то быстро найдем почему. А вот если мы работаем с ИИ, он половину рабочего кода искромсает своми правками, пока допрёт, что это было. Если допрёт вообще — мой вот не допёр.
В общем, проверять json ответа без декодирования в массивы/объекты не очень хорошо, т.к. может повлечь подобные ложные мэтчи.
Правильнее либо декодировать json в массив и сделать assert по
конкретной структуре, либо использовать замыкания в assertJson(), которые также позволяют проверять указанный уровень структуры документа.
Имеется в виду запуск всего пакета тестов, например, в Laravel с включенным трейтом RefreshDatabase: таблицы БД после каждого теста чистятся, но структура заново не пересоздается. Это и быстрее, и более похоже на «живую» среду.
И мы будем голову ломать, почему вдруг этот тест сломался на ровном месте и почему это проявляется, только если сразу все тесты запустить. И ладно мы, мы-то быстро найдем почему. А вот если мы работаем с ИИ, он половину рабочего кода искромсает своми правками, пока допрёт, что это было. Если допрёт вообще — мой вот не допёр.
В общем, проверять json ответа без декодирования в массивы/объекты не очень хорошо, т.к. может повлечь подобные ложные мэтчи.
Правильнее либо декодировать json в массив и сделать assert по
конкретной структуре, либо использовать замыкания в assertJson(), которые также позволяют проверять указанный уровень структуры документа.
👍2
Из примера в предыдущем посте может показаться, что подобные совпадения редки, но это совершенно не так. При достаточно большом количестве тестов они могут встречаться регулярно. Причем это количество — не такое уж и большое на самом деле. У меня например два ложных срабатывания произошли уже на таких числах: 558 tests, 2110 assertions.
Кстати, проблема эта (ожидание, что что-то будет происходить очень редко) — сама по себе не так редка и локальна в программировании. Вы наверняка слышали о парадоксе дней рождения.
Если про дни рождения не слышали, то вкратце:
Сам по себе этот «парадокс» практической ценности для нас не имеет, однако есть часто встречающаяся проблема аналогичного свойства, у которой вероятность случайного мэтча выше, чем мы думаем. И о которой разработчики порой забывают. Это, конечно, хэши.
Навскидку кажется, что если мы хэшируем какую-то информацию, то совпадения будут крайне редки. Однако если мы генерируем не очень длинные хэш-строки (например, для ручного ввода — токены входа, короткие урлы и т.п.), совпадения могут возникать довольно часто. Каждый из нас наверно хоть раз в своей жизни применял защиту от этого по методу «в лоб». А именно — циклически генерировать хэши, пока не получится уникальный.
Но есть и более продвинутые решения, например библиотека Hashids, генерирующая уникальные хэши. Сейчас ее зачем-то переименовали в Squids , хотя hashids звучит значительно веселее. Рекомендую ознакомитсья, пользоваться, и генерируя хэши не забывать — случайности не случайны!
Кстати, проблема эта (ожидание, что что-то будет происходить очень редко) — сама по себе не так редка и локальна в программировании. Вы наверняка слышали о парадоксе дней рождения.
Этот парадокс относится к «веридическим» (или по-нашему истинным) парадоксам — утверждениям, которые интуитивно кажутся людям парадоксальными, но на деле оказываюстя верными (то есть по сути парадоксами не являются). К таким парадоксам относится например известнейший парадокс Монти Холла про автомобиль за одной из трех дверей.
Если про дни рождения не слышали, то вкратце:
Как вы думаете, сколько людей должно быть в одной комнате, чтобы вероятность того, что у каких-то двух из них совпадет день рождения (число и месяц), превысила 50%? На первый взгляд может показаться, что это какое-то большое число, однако правильный ответ — 23. Всего двадцать три человека.
Сам по себе этот «парадокс» практической ценности для нас не имеет, однако есть часто встречающаяся проблема аналогичного свойства, у которой вероятность случайного мэтча выше, чем мы думаем. И о которой разработчики порой забывают. Это, конечно, хэши.
Навскидку кажется, что если мы хэшируем какую-то информацию, то совпадения будут крайне редки. Однако если мы генерируем не очень длинные хэш-строки (например, для ручного ввода — токены входа, короткие урлы и т.п.), совпадения могут возникать довольно часто. Каждый из нас наверно хоть раз в своей жизни применял защиту от этого по методу «в лоб». А именно — циклически генерировать хэши, пока не получится уникальный.
Но есть и более продвинутые решения, например библиотека Hashids, генерирующая уникальные хэши. Сейчас ее зачем-то переименовали в Squids , хотя hashids звучит значительно веселее. Рекомендую ознакомитсья, пользоваться, и генерируя хэши не забывать — случайности не случайны!
👍2
К нам в офис внезапно приехал на каворкинг гроза раёнов, властелин бань и печных дел, завсегдатай Друпал.ру - Анатолий!
👍4
После аварии ночью с 1 на 2е починили всё к вечеру второго.
Но после этого раза 4 свет отрубался на несколько часов. Генератор жжот🔥 уже 40 литров почти сжёг!
Резервный LTE-модем тоже жжот, и я наконец-то научился заводить его на микротике за 2 минуты а не за полдня. Еще пара аварий и автоматизирую совсем💪
Но после этого раза 4 свет отрубался на несколько часов. Генератор жжот
Резервный LTE-модем тоже жжот, и я наконец-то научился заводить его на микротике за 2 минуты а не за полдня. Еще пара аварий и автоматизирую совсем
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Есть у нас на участке старая деревянная туалетная будка, классическая такая, с сердечком. Я в ней лопаты храню всякие. Давно хочу разобрать, потому что не нужна и уже кривится потихоньку.
А тут смотрим - в ней птицы гнездо вьют, прям через сердечко залетают и вьют. Придется оставлять)
А тут смотрим - в ней птицы гнездо вьют, прям через сердечко залетают и вьют. Придется оставлять)
😁2
Живу за городом 6 лет, в целом всё отлично, но иногда отмечаю у себя некоторые моменты самообмана и заблуждения относительно этой жизни.
Например, пока строились — думал, вот будет у меня офигенная веранда. Летом, сяду и буду кодить на свежем воздухе. Ляпота! Каждый раз, когда из отпуска лечу с нотбуком, тоже думаю — щас приеду, потеплеет, и на веранду с нотбуком.
Фиг там. Каждый день удобное кресло, механическая клавиатура, большой 4к-монитор и стол не оставляют веранде никаких шансов, как бы хорошо на улице ни было. Единственное для чего выхожу поработать на веранду — это для звонков, и то редко.
Хотя после стройки когда был ковид и все сидели дома я частенько совещания своей лаборатории с улицы проводил. У нас тогда лежала куча кустов на участке, выкорчеванных из пятна застройки. И мы их потихоньку в бочке жгли, с колонкой с музыкой — чисто матерые бомжары из американских фильмов. Вот и звонки у бочки проводил. Впрочем, половина сотрудников на эти созвоны соединялись с парковок гипермаркетов. Или даже изнутри, если связь позволяла. Так и жили в пандемию, зато на свежем воздухе.
А потом ковид кончился, и я из микроэлектроники ушел.
Например, пока строились — думал, вот будет у меня офигенная веранда. Летом, сяду и буду кодить на свежем воздухе. Ляпота! Каждый раз, когда из отпуска лечу с нотбуком, тоже думаю — щас приеду, потеплеет, и на веранду с нотбуком.
Фиг там. Каждый день удобное кресло, механическая клавиатура, большой 4к-монитор и стол не оставляют веранде никаких шансов, как бы хорошо на улице ни было. Единственное для чего выхожу поработать на веранду — это для звонков, и то редко.
Хотя после стройки когда был ковид и все сидели дома я частенько совещания своей лаборатории с улицы проводил. У нас тогда лежала куча кустов на участке, выкорчеванных из пятна застройки. И мы их потихоньку в бочке жгли, с колонкой с музыкой — чисто матерые бомжары из американских фильмов. Вот и звонки у бочки проводил. Впрочем, половина сотрудников на эти созвоны соединялись с парковок гипермаркетов. Или даже изнутри, если связь позволяла. Так и жили в пандемию, зато на свежем воздухе.
А потом ковид кончился, и я из микроэлектроники ушел.
😁2
Forwarded from AlayTravel️️️Agent
В аэропортах центральной части России из-за приостановки работы аэропортов продолжаются массовые задержки и отмены рейсов.
Во Внукове ограничения на полёты были сняты в 04:20, так что утром несколько рейсов успели вылететь. Аэропорт Пулково принял более 70 рейсов, перенаправленных из других городов. Теперь там образовалась очередь из самолётов, ожидающих разрешения на взлёт.
Чтобы следить за ситуацией и изменениями ваших рейсов, мы собрали основные официальные источники.
✈️ «Уральские авиалинии»
Росавиация напоминает, что пассажиры в случае продолжительных задержек вправе запросить напитки, питание или размещение в отеле в соответствии с Федеральными авиационными правилами, утверждеными приказом Минтранса России от 28 июня 2007 года № 82.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Уважаемые пассажиры
⚡️ В центральной части России массово приостановлена работа аэропортов — на приём и отправку самолётов закрыты Внуково, Домодедово, Жуковский, а также аэропорты Нижнего Новгорода, Калуги, Тамбова, Ярославля, сообщает Росавиация.
Судя по FR24, в московском…
Судя по FR24, в московском…
🤯3
- Роман, нам надо срочно, срочно созвониться в скайпе!
- Ок. копирую ник, кидаю в мессенджер
- У меня не получается вас найти!
на всякий случай проверяю, все находится
- Да вроде находит, я один такой.
- Нет, я не нахожу! Лучше вы меня ищите, по имени и фамилии.
ищу, вижу три аккаунта с одним и тем же человеком на аватаре
- Вижу три аккаунта, на какой звонить?
- Какие три аккаунта, вы что, меня по имени и фамилии найти не можете?!
Это одно из последних ярких воспоминаний от работы в скайпе лет семь назад. Потом он стал не нужен, а на днях, говорят, уже и помер. Пусть ему снятся электрические овцы.
- Ок. копирую ник, кидаю в мессенджер
- У меня не получается вас найти!
на всякий случай проверяю, все находится
- Да вроде находит, я один такой.
- Нет, я не нахожу! Лучше вы меня ищите, по имени и фамилии.
ищу, вижу три аккаунта с одним и тем же человеком на аватаре
- Вижу три аккаунта, на какой звонить?
- Какие три аккаунта, вы что, меня по имени и фамилии найти не можете?!
Это одно из последних ярких воспоминаний от работы в скайпе лет семь назад. Потом он стал не нужен, а на днях, говорят, уже и помер. Пусть ему снятся электрические овцы.
😁4
В преддверии 30 мая написал статью о защите персональных данных в Европе, то есть про GDPR.
Нервным, впечатлительным и беременным читать не рекомендуется. Как минимум один Анатолий на днях пострадал, выбежал из машины в шоке и трепете, когда я изложил ему тезисно перечисленные ниже моменты, так сказать в порядке частной беседы.
GDPR и бережное хранение персональных данных
Нервным, впечатлительным и беременным читать не рекомендуется. Как минимум один Анатолий на днях пострадал, выбежал из машины в шоке и трепете, когда я изложил ему тезисно перечисленные ниже моменты, так сказать в порядке частной беседы.
GDPR и бережное хранение персональных данных
🔥3
Кстати, завел себе блог на vc.ru: https://vc.ru/graker
Если кто живой там есть, добавляйтесь, будем крепко дружить и радостно друг друга лайкать
Если кто живой там есть, добавляйтесь, будем крепко дружить и радостно друг друга лайкать
vc.ru
Роман Грачев (@graker) — Блог на vc.ru
Роман Грачев Личный опыт 11 июня Учет времени
👍3
Чат жопотэ пишет вайбкод как боженька, но блин чтобы взять его и заставить сделать картинку не 3:2 а широкоформатную - нужно продать душу, почку, и всё равно он сделает 3:2.
😁1
Кажется, я нашел отличный способ добавлять в телеграм-канал лонгриды так чтобы они оставались читабельными, со вставками кода, и далеко ходить
читать не надо было.
Посмотрите на эту копию недавней заметки про дни рождения:
https://teletype.in/@graker/5lYOnhWEJo5
А если смотрите с телефона, нажмите Instant View!
Знаете эту платформу? Подводные камни, плюсы, минусы?
читать не надо было.
Посмотрите на эту копию недавней заметки про дни рождения:
https://teletype.in/@graker/5lYOnhWEJo5
А если смотрите с телефона, нажмите Instant View!
Знаете эту платформу? Подводные камни, плюсы, минусы?
Teletype
Совпадение id в тестах и парадокс дней рождения
Когда мы пишеем тесты на бэкенд-путь, который возвращает данные с отношениями, ($order, в нём $order→user, в нём $order→user→plan...