Pull to refresh
-12
0
Коля @SbWereWolf

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

Send message

Спасибо за добрые слова. Назойливость не вызывает ни чего кроме отвращения. Ни какого привлечения этой назойливостью не добиться.

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

Автору могу посоветоват смотреть старые видео Егора Бугаенко и почитать побольше статей с разбором SOLID.

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

Еще хорошая книжка "Совершенны код". Главная мысль книжки в том, что код должен быть максимально примитивным, требовать минимального погружения в контекст. И классы с ограниченым набором методов этл именно то что позволяет писать программы с минимальным контекстом.

Применение наследования по 10 поколений это не тру ООП, тру ООП это использование композиции классов, это зависимости от интрфейсов и максимальное использование абстрактных классов.

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

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

ООП это всегда оабота на будущее, которого не видят люди не способные видеть дальше собственного носа.

Когда я написал статью с аналогичным смыслом мне влепили 50 минусов.

Про fixup слышу первый раз, думаю эта фишка не давно появилась. Идея красивая, все камиты с почеркушками слепляем в один камит вместе с камитом где мы эти почеркушки стерли. И всё шито крыто 👍

Спросите меня как написать статью и получить десятки минусов - я вас научу. Мои статьи стабильно огребают -20 .. -50.

Промежуточных вариантов не бывает. Или слабый интерес отщепенцов с 0..+4 или всеобщее осуждение до -50 😁

Дело то в том что Хабр это тоталитарное сообщество, ты или думаешь как все или тебя здесь не любят. Что понятно,все программисты фанатики, по другому быть и не могло 😁

Поэтому стстему Кармы надо убирать и заменить на систему лайков и дизлайков как на Ютубе.

Мне в целом не понятно зачем эта карма нужна ? Люди всё равно имеют фильтры на статьи +10 (или сколько там по умолчанию). Ну будет кто то постить статьи с минусами и ? В чем ущерб для кого ?

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

За супер полезные лично мне статьи голосую добавлением в фэйворится, то есть в закладки.

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

С десктопа я хабре не читаю уже года три как.

Так что слизни классная тема была, но особенности приложения ВК для смартфонов создавали большие трудности для использования этойфичи.

Жаль что убрали.

Объект обёртка создаётся над массивом, конструктор принимает не json-строку, а уже распашеный массив.

Дать json и сказать распарки кусочек - так не получиться.

С symfony serialiser не сравнивал, не в курсе. Но думаю у серилайзера назначение другое, не думаю, что сериалайзер выдаст элемент без приведения типа и выдаст реальный тип элемента, и позволит проверить итоговое значение является подставленным значением по умолчанию или исходное значение такое и было.

Мой пакет предназначен для анализа исходного значения, не только для конвертации в заданный тип.

Мой пакет не является заменой чему либо, у него своя судьба :) своё предназначение, зачем его качают 300 раз в месяц для меня загадка. Из 500 скачиваний в месяц 200 установок это хвосты от установки другого моего пакета, для работы с XML. И тут тоже для меня загадка зачем качать пакет для работы с XML, когда есть более популярные аналоги.

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

Звёздочка (*) это классно, if() - есть, тоже хорошо, у вас получается свой Domain-specific language написан. Если у вас такой богатый функционал, то почему нет статьи ? Пишите, почитаем.

Проблема с вашим DSL только в том, что нет поддержки от IDE, то есть ноль защиты от опечаток и нет статического анализа, но если строчка входит на экран без переносов, то и не беда.

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

Писать ifEmpty руками это точно не мой способ, всегда стремлюсь к максимальной автоматизации.

И вы упускаете возможность перебрать все элементы массива, вот этот 0 он же означает, что там может быть 0 .. 100500 элементов, вашим способом придётся строчку клеить, писать лишний foreach , у меня можно перебирая вложенные элементы смотреть на индекс элемента (имя элемента) и от этого применять разные обработки через switch{case:} совсем другой подход к работе с массивами.

$data = (new AdvancedArrayFactory())->makeAdvancedArray($response);
$members = $data
    ->pull("response")
    ->pull("GeoObjectCollection")
    ->pull("featureMember");
foreach($members->arrays() as $index => $dataset)
  {
    foreach($dataset->arrays() as $name => $object)
      switch($name)
        {
          case 'GeoObject':
            /* обработчик для GeoObject */
            if($object->has('metaDataProperty')){
              $metaDataProperty = $object->get('metaDataProperty')->asIs()
                /* что то делаем с $metaDataProperty */
            }
            break;
          case 'SpatialObject':
            /* обработчик для SpatialObject */
            break;
      }
  }

что мы тут сделали ? перебрали все элементы-массивы внутри "featureMember", для каждого "объекта" обработали его свойства соответствующим обработчиком.

Если каких то элементов нет, то ни чего не сломается, код просто проедет мимо, будет работать дальше.

Для такого использования написана моя библиотека, не для того что бы какие то конкретные элементы получить. Получить элемент и поработать с его внутренностями - вот так надо :)

Вполне может быть так, что способ обработки элемента зависит от его типа. У PHP сплошь и рядом надо проверять, что вернулся не false :) Разработчики API тоже могут такие приколы у себя реализовать.

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

Такой подход реализован в Typed, и в принципе это стандартный способ записи, только вопросики ни кто не пишет, и так понятно, что элемента может не быть.

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

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

Индексы у домов, дома не образуют между собой иерархии, они просто нижний слой в адресных объектах, поэтому ни какой вложенности, "многоуровневости" по индексам не возможно получить. Мне в выборке для населённого пункта надо было хотя бы какой то получить, можете доработать выборку своим алгоритмом, брать не min(), брать max(), написать case любой сложности или обойтись if, дело ваше.

Приведённое решение не единственно верное, а только пример для ваших собственных решений.

Если вам для импорта БД из XML файлов не нужен PHP, если вы легко пишите хранимки, то пожалуйста поделитесь своими наработками. Для того статьи и пишутся. что бы обмениваться опытом.

допустим. смотрим следующий кейс - добавление доска на 1 гиабайт, добавить меньше интерфес панели не позволяет :)

/dev/vdb1       988M   24K  921M   1% /mnt/experimental

1 гигабайт это 1024 мегабайта, тут сайз 988, 1024-988=36 мегабайт, я не ошибся ? где они ? Я думаю их линукс захомячил на свои служебные нужды. Но много конечно, помниться когда то весь объём HDD был 20 мегабайт :) году так в 1985-ом.

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

вы если хотите это обсудить то пишите мне в ВК в личку

Подравляю вы изобрели еще один велосипед. Первый такой велосипед изобрел я сам, пятььлет назад.

Я решал аналогичную проблему, написал для этого пару классов, потом код оформил в пакет.

composer require sbwerewolf/language-specific

И статью на Хабр написал.

https://habr.com/ru/articles/522348/

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

Автор, очень объёмная статья, её бы разбить на десяток поменьше, и выкладывать раз в неделю. И на ресурсе с тематикой СУБД. На хабре не поймут и не оценят.

В целом интересное чтение. Кажеться скорость работы такой системы будет не самая высокая, в силу её универсальности.

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

Надо бы сравнительных тестов с "конкурентами", с альтернативными решениями.

То есть материла у вас на серию статей, публикуйтесь !

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

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

Они ещё в 2НДФЛ лишние 200 тысяч дохода мне приписали и налоги с этой суммы заплатили, но я это выяснил уже после суда, хотел по этому поводу судиться, но дела отвлекли, когда опомнился уже поздно было.

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

После смены пять минут потратить можно, или раз в неделю полчаса, простои же не по пять раз на дню случаются ?

Главное добавить причину "другое", и вот когда этого "другое" становиться много, залазить в коменты и дорабатывать классификатор.

Классификаторы видимо надо делать локальные для каждого цеха и может быть станка

Напишите пожалуйста как это сделать. Для меня это не очевидная вещь.

ГАР появился два года назад, год назад быза весила 290 гигабайт XML файлов, сейчас в архиве 80 гигов, развёрнутая около 400, вы точно ФИАС в формате ГАР импортировали ?

У меня статья есть, где я описываю как на 4 ядрах у меня это заняло 9 часов, в 4 потока.

1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Senior
From 3,000 $
SQL
PHP
Laravel
Docker
Git
OOP
.NET
XML
PostgreSQL
MySQL