Иван
делайте один интерфейс, может еще что-то добавится к проекту
Тут некоторая проблема в том, что интерфейс всётаки разный. Но я подумаю, может быть можно придумать такой, чтобы был общий и в то же время без странностей в виде методов принимающих ассоциативные массивы в роли сишных структур.
Иван
"Но остаётся копипаста в контроллерах." можете делать класс на основе Action
В смысле компонент будет сам контроллером и будет иметь собственные экшны?
Dmytro
компонент -- не контроллер
Dmytro
контроллер -- отдельно, экшын -- отдельно, ну и компонент -- отдельно
Dmytro
логику ни к чему деражать в контроллере
Иван
То есть запилить для платежей отдельный контроллер, отдельный компонент. (Что есть экшн в данном контексте не понял, я думал что это собственно метод контроллера)
Dmytro
Можно выносить код экшынов в отдельные классы
Dmytro
http://www.yiiframework.com/doc-2.0/yii-web-erroraction.html
Dmytro
Вот пример
SiZE
Смотри у меня есть модель категории и модель статьи, соответствено в них прописаны релейшены, если я хочу показать все статьи одной категории, мне в какой модели вызывать findAll()?
релейшены в AR Yii2 подразумевают, что у тебя объект AR уже заполнен данными из БД и может получить эти релейшены. Бесполезно вызывать релейшены у нового объекта (new Category())->articles ни к чему не приведет
Dmytro
SiZE не рекомендую тратить на это время Человек в упор не желает читать доки
SiZE
=)))
👀
=)))
это не смешно, это грустно
👀
скорее надо так =(((((
Dmytro
Я это пишу не просто так, поверьте
SiZE
да я помню что он вчера писал )
👀
перед тем как ездить на машине, люди учат теорию - по крайней мере, правила так же и здесь - перед тем, как что-то делать, стоит почитать доки я всё понимаю, что у нас тут диаложек, и можно спрашивать - оперативно ответят, но задавать вопросы, ответы на которые идут в доке, которые как базовые знания о сигналах светофора - это не ок не в обиду никому, но тут уж очень много пролетает вопросов, ответы на которые просты как дважды два - достаточно лишь в доку залезть, и там глянуть
👀
я не против вопросов - я сам ни разу не гуру, всего не знаю, но бывает такое, что сталкиваешься с непредвиденым поведением - тогда да, здесь - самое место задавать вопросы, а если что-то не работает, потому что ты не знаешь базовых принципов фреймворка... ну что ж, добрые люди всегда будут готовы помочь, но если они кидают доку - это не на отъ**ись, а реально решение проблемы - будьте добры, проследуйте по ссылке, и посмотрите, как этим инструментом пользоваться
Иван
Чёрт, у меня тут Чёрная Дыра Рефакторинга 😆 В смысле чем больше привожу ооп в порядок, тем больше всплывает того, что нужно ещё привести. Тем временем для начальства это всё выглядит так, что вот тот крутой фрилансер всё очень оперативно сделал, а мне осталось чуть-чуть, но я копаюсь тут целую вечность 😭
who are you
беги от туда где заказчик говорит - тут пару часов или тут немного сделать, как правило это обман с целью сбить стоимость
who are you
вот как слышишь от заказчика эти слова сразу знай - ушлый
who are you
потому что простой заказчик не может знать чо тут сделать и на сколько это долго
who are you
а если все так просто и на пару часов - пусть сам и делает раз такой умный
who are you
сорян, блинчики надо делать) потом прочитаю
Иван
Да я тут уже 3 года работаю. Уже понял, что тут центральная обязанность сотрудника перед самим собой объяснять начальству свои заслуги, иначе их никто не поймёт, а вот причиной всех косяков окажешься. Но я оооочень не люблю говорить "вот Вася тут вот так и так накосячил", поэтому просто беру и пилю чтобы было хорошо. Как итог - я тут самый тормозной программист, который только и занимается исправлением каких-то косяков (видимо исключительно собственных).
Иван
Вдвойне неловко указывать что исправляю говнокод специалиста, чья ставка часовая х2 от моей)
Иван
С другой стороны можно действовать по его методу - быстро-быстро клепать то, что можно клепать быстро, а как начинаются сложности с поддержкой сваливать на другой проект. Но мне это ни совесть не позволит ни страх перед неподдерживаемыми проектами (наобжигался).
SiZE
сорян, блинчики надо делать) потом прочитаю
Поменьше мучного, побольше ночного )
Иван
А ещё иногда бизнесу как раз и нужно быстро-быстро сговнокодить и пущай так будет. Тут уже я действительно косячу со своими рефакторингами и переписываниями.
SiZE
Пока ты пишешь долго красивый код, для бизнеса он может потерять актуальность. Собственно как и для тебя
Иван
Тут надо разделять. Проект на пару дней или коробочный продукт на много лет.
У нас проекты либо на несколько месяцев, либо на год-полтора разработки. Плюс поддержка почти всегда за нами (да за мной по сути). Поэтому у меня черезчур большие глаза на проблемы в архитекруте. Поэтому я иногда начинаю делать некую работу на месяц, когда её можно за день сделать. Очень трудно выбирать между "уяк-уяк" и "с толком, с чувством, с расстановкой".
Иван
Начальство обожает "уяк-уяк", но ненавидит, когда потом из-за этого любая ерудна занимает очень много времени. Начальство ненавидит "с чувством, с толком, с расстановкой", но (должно бы любить, но) принимает как должное, что качественно написанные подсистемы потом весь период разработки и поддержки экономят кучу времени и сил на каждой задаче, кто бы её потом ни реализовывал.
Иван
Сейчас я вот взялся тут порядок навести, в может быть если бы по-быстрому всё наклепал костылями и копипастой, то сдали бы клиенту и только незначительно допиливали бы потом.
SiZE
После твоего рассказал, я представил, как тебя приковали к батарее и ты кодишь за еду
👀
Иван
После твоего рассказал, я представил, как тебя приковали к батарее и ты кодишь за еду
В смысле чего я тут работаю? Так везде будет тоже самое. Это моя проблема, что я не вникаю в бизнес в степени, достаточной для того, чтобы правильно расходовать время. Думал как-то, что это как-бы и не реально, но нет, есть у нас дядечка неопределённого возраста, который, вникает в наш бизнес и бизнес клиента до такой степени, что знает какие баги не надо закрывать, на какие фичи положить йух, где сделать адский костыль и забить на граничные случаи (которые в реале не случаются или не влияют на прибыль), а где нужно всё сделать идеально. И он даже не программист. Он маркетолог. Маркетолог, который ночью за пару часов фигачит нечитаемый код, приносящий/сохраняющий компании/клиенту деньги, сравнимые с моим месячным окладом. Вот это то, чего мне не хватает абсолютно. Я или напишу круто и надёжно, там где оно не требовалось, или накостыляю то, что как раз где не надо и ломается.
👀
Я обычно делаю что то хорошо, а потом копирую, и везде получается хорошо - и там, где так надо, и там, где можно было не напрягаться Благо, ООП заточен именно под это Если очень нужно, и проект на yii2 (ну и, конечно же, есть в какой-то VCS), то могу помочь, но как-то нехорошо получится, что я вам за бесплатно помогу, а вы за это денег иметь будете)
👀
Иногда бывает задача на уровне 2+2*2, а её расписывают/объясняют как факториал
👀
Брат моей жены (тоже программист, иначе не говорил бы), работая вместе со мной в одной компании, делал за день в разы (иногда - в десятки раз) меньше, чем я Вся его беда в том, что вместо того, чтобы найти готовое решение, он писал свои костыли Более того - иногда то, что он делал чуть ли не весь день решалось одной базовой функцией, которую я ему подсказывал, уходя домой Я надеюсь что моя история подтолкнет вас к правильным мыслям, и вы справитесь с вашими задачами :)
Иван
> делаю что то хорошо, а потом копирую Ммм, не понял. В смысле какие-то вещи с прошлого проекта на новый? Я тоже удачные решения перетаскиваю, попутно исправляя в соответствии с новым пониманием "как лучше".
👀
> делаю что то хорошо, а потом копирую Ммм, не понял. В смысле какие-то вещи с прошлого проекта на новый? Я тоже удачные решения перетаскиваю, попутно исправляя в соответствии с новым пониманием "как лучше".
Нет Я делаю по парадигме don't repeat yourself - как можно меньше повторений в коде Вашу задачу можно разложить на 4 составляющих: покупка, подтверждение, использование и деактивация подписки Собственно, столько и будет действий в коде: просто одни будут явные, другие - нет. Я вчера писал: подписка появляется после покупки, подтверждается - после подтверждения оплаты, начисляется на счет бонус - после подтверждения подписки, ну и деактивация - по времени (например, ограничить выборку по конечной дате подписки) Мне сложно вам объяснить, что не так, и как лучше делать - я не знаю до конца задачи, я не вижу "наследие", с которым вы работаете, поэтому то что я пишу, может показаться совершенно не относящимся к задаче
Иван
Нет Я делаю по парадигме don't repeat yourself - как можно меньше повторений в коде Вашу задачу можно разложить на 4 составляющих: покупка, подтверждение, использование и деактивация подписки Собственно, столько и будет действий в коде: просто одни будут явные, другие - нет. Я вчера писал: подписка появляется после покупки, подтверждается - после подтверждения оплаты, начисляется на счет бонус - после подтверждения подписки, ну и деактивация - по времени (например, ограничить выборку по конечной дате подписки) Мне сложно вам объяснить, что не так, и как лучше делать - я не знаю до конца задачи, я не вижу "наследие", с которым вы работаете, поэтому то что я пишу, может показаться совершенно не относящимся к задаче
А, ну так то понятно. Я сейчас собственно этим и занимаюсь. Устранением дублирования, разделением лишней связности (уже дольше в чате флужу). Тут просто такой момент, что действуя подобно тому, от кого я унаследовал проект, я бы уже закончил работу, но при этом добавил бы ещё дополнительной копипасты, к той, что осталась от него. И уже следующие зменения занимали бы кучу времени. А может быть их и не было бы.
👀
А, ну так то понятно. Я сейчас собственно этим и занимаюсь. Устранением дублирования, разделением лишней связности (уже дольше в чате флужу). Тут просто такой момент, что действуя подобно тому, от кого я унаследовал проект, я бы уже закончил работу, но при этом добавил бы ещё дополнительной копипасты, к той, что осталась от него. И уже следующие зменения занимали бы кучу времени. А может быть их и не было бы.
Я, хоть и не так долго здесь живу, уже привык, что лучше сразу делать так, чтобы можно было дублировать/расширять и тд. Месяц назад было обсуждение: там в какой то книге кто то предложил использовать метод для возврата значения переменной (внутри метода - return переменной) Кажется - зачем? А на деле - защита от будущих костылей Например, у меня сейчас есть метод getUserId: раньше он возвращал 999.[9 цифр номера мобильного], недавно сказали - а пусть userID будет рандомным Пиши я везде через номер телефона - столько пришлось бы менять, а так - в одном методе заменил
Иван
Сейчас долго размышлял на тему того, что никакого полиморфизма с платежами быть не может потому, как у них разные сценарии использования. В итоге сделал их, можно сказать, статическими. И тут же нахожу экшн отмены платежа, который вообще ничего не знает о том, что это за платёж, кроме его айдишника. *facepalm.jpg* Выходит нужен способ получить именно нужный компонент. Фабрика то есть.
Dmytro
Ну, тогда вам нужно обратиться к банде четырёх)
who are you
😉 как дела у вас?
Borys
да вот
Borys
ищу комплектацию пк на ведьмака 3
Borys
для ультра
👀
у меня 7870, 8 гиг ddr3 и athlon x2 250, и нормально так идёт)
Borys
на ультрах?
Borys
а сколько fps дает?
Borys
Ребят, а есть кто с Питера?
Пантелеев
Я был в Питере, могу хостел на восстания посоветовать
Пантелеев
1500 номер за ночь на двоих
Пантелеев
Санузел в номере
👀
а сколько fps дает?
В среднем 40-45, но не на ультра, а на средних, по моему
Borys
Хочца именно ультру
👀
Я думаю, r9 потянет
Borys
https://cs7060.userapi.com/c638719/v638719734/2c038/NFaABFyyTwA.jpg
Borys
Вот нашел пикчу в сети
Borys
Думаю норм игровой пк выйдет примерно на 70-80к
👀
В рублях не скажу, 1200-1500$
Denis
Думаю норм игровой пк выйдет примерно на 70-80к
ну смотря какой пк тебе нужен) для игр в fullhd вполне хватит i5+1060+16gb озу плюс остальное) тысяч в 50 может удастся уложится :)
Borys
Не знаю, я не шарю в железе абсолютно
SiZE
Я для вичера тоже недавно долго выбирал. В итоге продал 650 Ti Boost за 4500 и взял за 14000 Asus GTX 1060 3Gb
SiZE
6Gb для этой карты даст прирост порядка 10Fps.
SiZE
Если хочешь около 60-70 бери 1070 и можно ограничится i5
SiZE
И эта пикча из ДНС там цены завышены
Borys
Спасибо
Egor
я конечно понимаю что вы меня сейчас отправите читать доку, которую я десять раз прочитал, но хотя бы намекните в чем проблема
👀
static метод
👀
а ты пытаешься вызвать $this
👀
либо убери у метода static, либо используй (new self())->hasMany()
👀
ну или типа того (башка уже не варит, честно говоря, но суть не меняется - статический метод)
Egor
либо убери у метода static, либо используй (new self())->hasMany()
Спасиибо бро, надо было всего лишь убрать статик. Я просто ооп не знаю, только процедурное(
👀
учи ооп