Открыть список
Как стать автором
Обновить
-21
Карма
0
Рейтинг

программист эникейщик

Чего ждать от коробочных приложений?

Этот код написан специально под ваш бизнес

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


Вы сами в это верите? код будет написан под ваш бизнес, но вероятность того что он будет ЛЕГКО масштабироваться и меняться близка к нулю.
Писать код так что бы он легко менялся и масштабировался надо уметь, дело не в том что бы писать под бизнес, дело в том что бы уметь так писать и не лениться так делать.
Сколько живу — ни разу не видел. У Яндексов спросите сколько раз они переписывали свои приложения и сколько там легаси, кода унаследованного и в котором ни кто ни когда не будет разбираться, который при необходимости — заменят другим, но ни когда не будет в нём разбираться.

Code style для миграций Laravel

я про Фому, вы про Ерёму. Главное назначение миграции это возможность как накатить так и откатить изменения в схеме БД без участия человека, в ручном режиме. Сделать эти изменения повторяемыми, не зависящими от среды.
Continuos delivery, миграции, репозитории нужны для переносимости кода, для отчуждаемости кода от разработчика.

Миграция которая создаёт колонку, почему она не должна упасть если в таблице присутствуют какие то другие колонки? Кажется я повторяюсь.

Ваше возмущение по поводу владельцев кода, это что то с чем то. Вас не возмущает что работу между сотрудниками делят по отделам? что каждая команда отвечает за свой функционал или фичу? нет? странно.
Сервис ориентированная архитектура не слышали? Каждый микро-сервис со своим стеком технологий? нет?
Владелец продукта?
У кода не может быть владельца? у Фичи?

Code style для миграций Laravel

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

Кроме того, у нас сейчас работа ведётся одновременно в 30-ти ветках, то есть одной таблицы будет 30-ть копий, влитые ветки в мастер ни кто не удаляет, то есть у нас на текущий момент могло бы быть 1800 версий одной и той же таблицы.

Сложно администрировать такое хозяйство.

Code style для миграций Laravel

Вы в курсе что такое миграции и как они работают? Если миграция создает колонку в таблице, то она упадет только если такая колонка уже создана. Ни один механизм миграцийни когда не проверяет что схема бд находиться в каком то преопределенном состоянии.
Миграции это способ версионировать схему базы данных. Каждая миграция это аналог камита. Каждая миграция это изменение состояния между до миграции и после миграции. Но в отличии от версионирования у миграцийнет дерева. Нет механизма для записи осередности применения измененийк схеме базы данных.

Code style для миграций Laravel

В одной версии эта колонка обязательная (тестируем новый функционал), а в другой эта колонка не обязательная (старые требования), у нас нет возможности развернуть отдельную бд под каждую версию приложения.
На уровне БД если эти проверки делать, то потребуется для каждой версии кода, делать свою версию бд, свои инстанс.
Не айс.

Code style для миграций Laravel

И почему умрёт миграция по добавлению колонок? оно колонки добавит. А вот когда мы будем инсертить через модель новую запись у которой не все колонки заполнены (текущая версия не знает о колонке добавленной другой версией), тогда приложение упадёт.

Code style для миграций Laravel

Система разделена на модули-сервисы, у каждой таблицы есть команда владелец.
Проблема не в том что таблицу правит два разных человека которые между собой не договариваются, проблема в том что для одной фичи нужны одни колонки, для другой другие, и какие то колонки могут после проверки гипотезы на драфте умереть на всегда.
А приложение не должно падать от таких вещей. Если приложению важно что бы какие то данные соответствовали каким то требованиям, то эти требования надо проверять на уровне приложения, а не БД, потому что БД одна, а версий приложения с десяток.
Перекраивать БД под каждую конкретную версию кода не реально (ветки фич иногда приходиться сливать в одну ветку и тестировать их совместную работу)
Мне кажется у вас не было опыта подобной разработки, поэтому вам сложно уловить на слух, это та вещи которую надо увидеть.

Code style для миграций Laravel

Люди из-за проблем с миграциями и деплоем кода в целом, запариваются за переход на сервисную модель, а потом и на микросервисы.
Есть разница между пет проектами, ин-хаус для фирмы на пару тысяч сотрудников и для приложения которое работает с десятками тысяч пользователей с функционалом объёма примерно обычной CRM системы, в которой лидов 100500 вариантов и каждый вариант обрабатывается уникальным образом.

Code style для миграций Laravel

Размер колонок меняется миграцией в любую сторону. Разве это проблема?
Но на самом дела колонки всегда надо создавать максимальной длины. Современным СУБД не важно колонка 10 символов или 100, если в неё пишется только 5, то места на диске будет занято только на 5 символов.
При желании тип колонки можно поменять в миграции. Если колонку добавили недавно, то это не проблема. Если колонку добавили давно, то просто добавляем новую колонку и работаем только с ней, старую колонку не пишем и не читаем.
Работать с таблицами через select *, это всегда был дурной тон. Всегда надо указывать колонки которые вас действительно интересуют.
И на самом деле в таблице должны быть колонки для индексов и одна колонка data в которую пишется json с бизнес данными. Но это высший пилотаж. Для тех кто понимает что такое база данных.
Если в таблице стало 200+ колонок и используется только 10. То почему не начать работать с новой таблицей?
Первый релиз делаем миграцию с новой таблицей и пишем посев данных с переносом данных из одной таблицы в другую, следующий релиз меняем в моделе имя таблицы и теперь мы работаем с новой таблицей в которой только нужные нам 10 колонок.

Code style для миграций Laravel

хайповая тема — документарные БД, кому то нравиться, у нас не используются.

Почему управлять государством должен продуктовый менеджер?

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

Сейчас не зависит.

MarkedText — маркдаун здорового человека

Предложение классное, лучше чем текущая реализация md, в части списков и заголовков, но таблицы видимо, да, что не придумывай норм не получиться.
Мне кажется их можно только самые простые делать в простом формате, хотите красоты — пользуйтесь не простыми форматами, используйте для этого навороченные редакторы.
С ручным выравниванием колонок я тоже намучался.
С другой стороны если будет возможность вставить картинку, то проще таблицу нарисовать в продвинутом редакторе и в документ вставить ссылку на картинку.
По части «Преформатированный текст», не соглашусь, писать ```php или ```sql не напрягает, 4 пробела подряд — очень спорное решение. Я понимаю что спец символов доступных из русской раскладки, не так много, но. Почему бы не сделать тройной символ;
С другой стороны что бы написать php всё равно надо раскладку переключить поэтому и символ ` тоже норм. Можно конечно вместо php писать «пхп», «скл», «иксмл», что бы не переключать раскладу, но мне кажется это будет слишком для консервативных умов.

Буддизм с точки зрения программиста

Спасибо за прочтение!

спасибо за написание. Я исповедую свой собственный буддизм, который один в один как у вас. Главное понимать что всё течёт и всё меняется — «и это пройдёт», не надо суетиться, не надо горячиться, надо жить в своё удовольствие и не мешать другим получать удовольствие от их жизни.
Аминь :)

Типобезопасная работа с массивами PHP, часть 2

Классная наверное штука, только узнал я про неё поздно :)
Вопрос конечно что делать если какое то свойство было, а потом его не стало, это не про Яндекс конкретно, а вообще такое бывает, что иногда один набор параметров в ответе, иногда другой.
И как бы из CSV делать объекты, если у CSV структура вариативная, у одного файла такие колонки, у другого чуть чуть другие.
Обращаешься к свойству, а его нет, и? какой то аналог key_exists() придётся использовать.
В общем согласен, есть альтернативы, но я про них, во первых, не знаю, во вторых, я с ними работать не умею.
Конечно надо делиться альтернативами. У любой статьи самое интересное в коментах :)

Типобезопасная работа с массивами PHP, часть 2

я не могу требовать от Яндекса что бы они выдавали мне объекты, бесполезно ждать от fgetcsv() что бы мне выдавались объекты с конкретным набором свойств.
Мне как раз и нужна эта «безопасная» работа с массивами что бы спокойной конструировать DTO, или как то по другому парсить ответы от API и делать другие подобные вещи.

Архитектурное мышление на примере одиночного велопутешествия по Алтаю

— Ваш вес меньше 70 кг

85
— Вы не вешаете на багажник больше 25 кг.

думаю 10ка максимум, палатка, еда, вода, инструменты, сменная одежда, не представляю что там на 25кг нагрузить можно.
— Вы ездите аккуратно, например не разгоняетесь до 50 км/ч на спусках по грунтам.

у меня 55 км/ч на спуске по асфальту максимум получалось разгоняться, где вы такие грунты видели что бы 50 ехать и не бояться? наоборот на спуске поджимаешь тормоза и по факту едешь 20 максимум
— Вы в принципе ездите не шибко быстро.

средняя за поездку по асфальту 28, пиковая до 38ми,
— Вы ездите аккуратно — объезжаете камни, кочки, бордюры.

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

смотрите выше
— У вас хорошая вилка, а то и двухподвес.

смотрите выше
— У вас прочные обода и спицы — а они бывают очень разными.

обода нет, а спицы да, толще стоковых, все колёса собраны на заказ
— Вы не любите перекачивать камеры.

всегда на максималку накачаны.
— У вас широкие покрышки.

1,4
— У вас рама карбон, которая так же может съедать резкие удары.

у меня рамы алюминиевые, и вилка жёсткая, после поездки по горам Башкирии рама треснула, пришлось менять, это к вопросу об амортизации. На моём веле она отсутствует, у меня спортивная жёсткая «подвеска» :)
— Вам просто пока везет. Или вы проехали не достаточно много.

общего пробега у меня не менее 15к км (замена цепи каждые 2к-3к км, цепь я менял 5+ раз), пробега собственно по грунтам в походах не более 2к.

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

Архитектурное мышление на примере одиночного велопутешествия по Алтаю

спицы ломаются если у них не равномерное натяжение. Я всегда ездил с велобагажником, и не по асфальту, а по грунтам, там колесу от ям достаётся безбожно, но спицы у меня ни когда не лопались, потому что натяжение равномерное.

Среда разработки PHP на базе Docker

+1
Читал статью и не мог понять почему не Ларадок
Автор не разобрался с Ларадоком и сделал свой аналог.

PHP-класс для работы с INI-файлами

Оформить пакет композера не сложно. Я делал это год назад и как то справился. Кажется надо просто в репозитории иметь composer.json где будут прописаны пути к классам.
Как пример https://packagist.org/packages/sbwerewolf/language-specific. И потом в жизни самому так удобней использовать. Ни какого копипаста. Подключил зависимостьти оно само работает. И само обновиться когда что то в исходниках поправишь.
По коду мелкое замечание. Не красиво использовать '\n' красиво это PHP_EOL.
И верное замечание про проверки. Если хочешь что бы таоим кодом пользовались, то сделвй его удобным.
Можно сделать фабрику что бы пользоаатель библиотеки мог подсунуть свою реализацию, но в своей реализации сделать проверки. Кому будет мало сможет твой класс пепеписать и подставить.
В порядке друкжеской критики.
Спасибо что поделился кодом.

HTTP-клиент на стероидах

Чтение возможностей было интересным, но без подроьностей применееия стало бесполезным. Надо примеров.

Информация

В рейтинге
5,944-й
Откуда
Екатеринбург, Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность