Как стать автором
Обновить
-10
0.1

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

Отправить сообщение

В основном биндинги не странные, кроме ваших.


Вот зачем они тут? Для того, чтобы в роутах написать несуществующий контроллер, а потом придумать его через алиас? Чтобы люди, которые примерно понимают как работает ларавель, но сразу сообразили, где этот чудо-контроллер находится?


Зачем мне каждый раз для этого писать контроллер?
Вопрос дискуссионный, но допустим общий контроллер лучше. Тогда почему бы не расположить эту логику в том самом BaseController, добавив 3 функции вида

   protected function getModel(string $controller): object
    {
        $class = ['OrdersResourceController' => 'Wolf\\Model\\Backend\\Order'][$controller] ?? null;
        if ($class) {
            return new $class();
        }
    }

/// или через конфиг
    protected function getResourceCollection(string $class): object
    {
        $path = app_path('etc/crud.json');
        if ($this->filesystem->isFile($path)) {
            $virtualTypes = json_decode($this->filesystem->get($path), true);
            if ($virtualTypes[$class] ?? null) {
                return new $virtualTypes[$class]['resourceCollection']();
            }
        }
    }

Простите, может быть очень бегло прочитал и не понял какой-то особой мысли, но у вас в коде дальше
routes.php


Route::get('Backend\Crud\OrdersResourceController@index');

?
тогда почему нельзя вместо странных биндигов напрямую прописать в роутах этот самый BaseController сразу?

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

ладно, допустим DDD не про все эти контексты, единый язык и тд, а про технические вопросы…
ну так у вас persistence ignorance и при этом вы рассказываете истории про хранение данных о маше и васе в реляционной бд… одна история интереснее другой.
это получается на каком-нибудь редисе и при отсутствии в языке/окружении генератора уникальных айди у вас "DDD" не взлетит?

ну а чем технически некий "генератор GUID" (насколько я понимаю, их GUIDы не с неба ангелы передают) и некий "генератор автоинкремента" отличаются? оба зависят от реализации, оба имеют свои странности, оба могут быть забагованы

Ваша категоричность вряд ли его (или кого-то еще) обидела. Она больше наивная какая-то. С первых ваших сообщений можно было подумать, что вам по факту написания коммитов в ос дали нормальный оффер и теперь вы якобы принимаете участие в приеме потенциальных коллег и раздаете офферы опять же по факту написания кода на гитхабе. А по факту оказалось, что ничего подобного вам никто делать не разрешит с т.з. того же прагматизма.
А если факт интервью и прочих этапов отбора никуда не девается, то и отсеять адекватных специалистов, но "не любителей опенсорсить на гитхабе" в пользу набора дурачков с коммитами вам никто не даст (по крайней мере не должен).
Как источник вакансий — гитхаб тоже не единственный. Могут предложить побеседовать на вакансию в офис и на фриланс-бирже. Тогда, наверное, надо еще с 0 до 2х ночи фрилансить за отзывы?
Вроде смысла мало — наверняка платное резюме в каком-нибудь hh будет лучше по этому параметру

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


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

Хотя мы разбили документ на 1,216 кусков, мы использовали лишь 459KB памяти. Всё это, благодаря особенности генераторов — объем памяти для их работы равен размеру самой большой итерируемой части. В данном случае, самая большая часть состоит из 101,985 символов.

Нет, не разбили, а всего лишь посчитали кол-во \n\n\n в файле, причем довольно странным подходом (даже с т.з. ограниченния памяти — а вдруг у вас виртуалка на 486sx и 500кбайт оперативки, а вы зачем-то храните временную строку и ищите по ней регуляркой — явный перерасход ресурсов).


И в чем тут особенность генераторов? В том, что вы, в отличие от первого примера, не прочитали весь файл целиком? это всего лишь отличие file_get_contents от fget(s).

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

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


Так объясните, в чем выгода "асинхронной организации кода"? Все примеры, которые вы приводите это банальные асинхронные запросы к хранилищу/микросервисам и т.д. И вот тут я действительно не понимаю, как выразить вашу мысль, чтобы не "дофантазировать".
Вы уверены, что на php нельзя сделать асинхронный запрос к базе / кэшу? нельзя сделать банальный http-запрос (либо каким либо еще протоколом, благо сокеты доступны и для всего более менее стандартного есть реализации) и не дожидаться его исполнения? в php не существует callbackов и из них нельзя себе построить маленький адок? http://docs.guzzlephp.org/en/stable/quickstart.html#async-requests


и используйте себе 10 микросервисов и подключение к базе на здоровье, не ожидая ответа (только зачем).


кстати, а микросервисы вы на чем пишите? на ноде? надеюсь они не занимаются только тем, что запрашивают другие микросервисы и хоть где-то вылезет код, который нельзя "однопоточно распаралелить"?

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


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

да, если nodejs-приложение умеет обрабатывать больше одного соединения. ибо пхп приложение скорее всего будет обрабатывать одно соединение (если там не reactphp)

А мы на fpm настроим 10 обработчиков, а остальные клиенты подождут на nginx… тоже же решение. Странный вы кейс придумали для демонстрации различия.
Я правильно вас понял, что в ноде при 15 "одновременных" запросах и 10 соединениях к базе в пуле не вместившиеся в 10ку не зависнут намертво на первом же запросе до возврата кем-то из 10ки соединения в пул, а запросы чудесным образом будут исполняться по какой-то очереди с нескольких обработчиков в одном соединении?
Если нет, то в чем выгода от такой "живости"?

планируете ли переходить на JavaScript?

Планируем нанять 10 js разработчиков с зп не менее 100$ час и чтобы каждому приходилось менять пакеты по 5 раз в день. Надеюсь за пару лет экономии с перехода c композера на yarn на однушку в подмосковье накоплю. Других полезных откровений в статье не нашел

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


  • Вася, когда эта фича будет готова на проде?
  • Ну 31 февраля (через X дней) — это наш DueDate


  • Петя, сколько делать эту фиговину (декомпозицию задачи мы не умеем)?
  • Ну, наверное, дней X — это некая оценка сложность задачи

В чем между ними разница? Если только Вася все X дней не занимается ничем другим, кроме своей задачи (у Пети X дней спринта "заняты" или просто менеджер понимает, что такой вот расход ресурса). Вариант с Васей разве лучше для вашего бизнеса?
Должны ли оценки Пети и Васи отличаться? Может быть Вася должен продумать что-то еще помимо "накину еще n дней на всякий случай", которых вы хотите избегать?


Нужна ли эта дата бизнесу? Судя по вашему комментарию, нет — не нужна. У вас там MVP, "если бизнесу надо — бизнес сам дату придумает". Если у бизнеса нет даты, то ему надо "чем быстрее, тем лучше", но быстрее чем будет готово оно все равно не появится.


Будут ли различия в части депремирования для Пети, не угадавшего время реализации и Васи, не угадавшего дату "на проде"? Похоже, что Вася не пострадает — он же дал оптимистичный прогноз. Просто у него коэф. к премии немного ухудшится (kpi жи).


Каким образом наличие due date дает «ответственность разработчика» за результат тоже не понятно. И чем эта ответственность отличается от ответственности Пети за результат?
Если Вася еще и "типаменеджер" своей задачки, то может ли он что-то требовать (соблюдения сроков от тестировщиков, перерисовки макета от дизайнера, изменений в логике и т.д.)? если это все надо согласовывать с настоящим менеджером, то это прям ответственная ответственность.
В примере вот есть — Вася не осилил дизайн, завалил сроки. Надо рисовать гайдлайны. А кто рисовать то будет? Вася или дизайнер? и кто поставит этому художнику задачу?


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

Краткий анонс статьи:
Нашел тут исходник какого-то математического софта на плюсах, ниче не понятно… сейчас я вам покажу, как правильно и читаемо надо было написать этот код на примере подсчета суммы двух введенных чисел на js.


Почему-то автор не взял пример из начала статьи и не отрефракторил его с элементами бизнес-логики.
Можно, конечно, вынести содержимое условия в функцию
elseif ( strlen(tx) >= 3 && checkStrLen3(tx)) {}, убрав содержимое в функцию "как есть", но тогда будет хороший if, плохой return.
Можно пойти дальше, заменив strncmp(tx, "+%e", 3) == 0 на функцию isE( tx ), но условие все равно будет из кучи функций


return isE(tx) || isPi(tx) || isNan(tx) || isInf(tx) || isPi(tx)

Стало ли проще найти дубликат? не факт.


const hasSlack = !!_.find(this.serviceAccounts, a => a.provider === 'slack' && a.accountId);
const hasSomeLoginCredentials = this.password || hasSlack;

Норм. Пароля может не быть у десятка человек, а поиск колбэком по serviceAccounts — каждому. Зато читаемо.


По итогу — в названии статьи про if, по тексту — похвальная попытка закопать кишки бизнес-логики поглубже, по факту — попытка не очень удачная — все model.user.id мясом наружу валяются в переменных строками выше.

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

> когда ответственность несут оба, мне видится абсурдным

Ну так уже сейчас ответственность несут оба, а то и трое — непосредственный продавец, импортер товара и «уполномоченная организация»
>Потребитель вправе предъявить требования, указанные в абзацах втором и пятом пункта 1 настоящей статьи, изготовителю, уполномоченной организации или уполномоченному индивидуальному предпринимателю, импортеру.

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

задерживать выплату до подтверждения со стороны покупателя, что он не имеет претензий
Вариант, что вам в магазине (а маркет это не обязательно про доставку почтой России) продадут кирпич в упаковке крайне мала. Проблема не с получением товара, а с тем, что в кирпич он может превратиться и через год (до окончания стандартной гарантии) и через два (до окончания срока службы) и задерживать деньги на такой срок никто не будет
Нет, вашими словами это скорее «Идеальное — это не то, что работает лучшим из всех способов, а то, что работает при набольшей возможной простоте». Хотя первая часть утверждения не о лучшем, а скорее о сложном.

>А почему тогда не так написано?
Вероятно потому, что фраза иллюстрирует сама себя — из нее убрано то, что можно было убрать.
Вы фразу неправильно понимаете.
В вашем случае — Идеальная пустота это там, где нечего убрать.
Наверное именно под эту перспективную геймерскую платформу и пилится Half-Life3… с открытым кодом, конечно, как и остальные игры в стиме. Я уже видел исходники 3ей части шедевра, они лежат в репе рядом с исходниками самого гитхаба.

До сих пор помнится, как адепт открытых исходников Гейб искал «авторов патчей» в HL2… наверняка, чтобы предложить им работу. https://habrahabr.ru/post/165607/

Информация

В рейтинге
3 229-й
Зарегистрирован
Активность