These are chat archives for LaravelRUS/chat

11th
Mar 2016
Maxim
@Big-Shark
Mar 11 2016 03:26
Есть сейчас кто онлайн у кого в браузере стоит русский по дефолту?
Artur Gafurov
@assurrussa
Mar 11 2016 03:26
@Big-Shark есть
Alexander Zhuravlev
@SCIF
Mar 11 2016 03:27
@Big-Shark Омг. По дефолту??? Это же анахронизм :)
Роман Сохарев
@greabock
Mar 11 2016 04:05
А что так глухо-то? =))
Maxim
@Big-Shark
Mar 11 2016 04:06
@greabock да вроде норм
Dave
@aios
Mar 11 2016 04:42
@greabock пятница
ngohiep
@ngohiep
Mar 11 2016 04:51
@greabock
YoungPadavan
@YoungPadavan
Mar 11 2016 05:37
Здравствуйте. Ребят, потребовалось перевести приложение со становящегося платным mandrill на бесплатный sendgrid. Никаких проблем возникнуть не должно было, но когда залил обновления на живой, то начал получать такой exception: Swift_TransportException' with message 'Connection could not be established with host smtp.sendgrid.net [Connection timed out #110]. Нет доступа к серваку, только cpanel. Локально все работает. Никто не сталкивался с таким?
KarmaBot
@KarmaBot
Mar 11 2016 05:37
@YoungPadavan, здравствуй.
JhaoDa
@jhaoda
Mar 11 2016 05:39
@YoungPadavan ну недоступен он, и что?
Вчера, блин, телеграм не отвечает — пишут в чат. Сегодня этот хост не отвечает — опять в чат. Завтра гугл не откроется — тоже в чат писать будете?
Роман Сохарев
@greabock
Mar 11 2016 05:59
@YoungPadavan по какому порту соединяешься?
Maxim
@Big-Shark
Mar 11 2016 06:01
@jhaoda куда писать если gitter не открывается?
JhaoDa
@jhaoda
Mar 11 2016 06:02
@Big-Shark в Спортлото, конечно же :)
Роман Сохарев
@greabock
Mar 11 2016 06:25
@Big-Shark я те дам скайп @jhaoda можешь ему писать, если гиттер не открывается )
а если он еще и телефон даст, можно писать ему, даже когда интернета нет
Andrei Sosnov
@atehnix
Mar 11 2016 06:27
@greabock а если адрес даст, то и без связи писать можно :)
JhaoDa
@jhaoda
Mar 11 2016 06:43
Да, с гиттером в последнее время что-то плохо
@greabock у него есть мой скайп :)
slider23
@slider23
Mar 11 2016 06:52
@YoungPadavan а почему sendgrid, а не mailgun например ? 10к писем в месяц бесплатно, в laravel есть поддержка для работы через API
Maxim
@Big-Shark
Mar 11 2016 06:53
@slider23 а сендгрида нет?
Anton Vorontsov
@symbios-zi
Mar 11 2016 06:58
доброе утро всем
Soprun Vladislav
@vlsoprun
Mar 11 2016 07:03
Всем доброго утра
JhaoDa
@jhaoda
Mar 11 2016 07:07
Уже почти есть поддержка sparkpost, 100к в месяц бесплатно
Maxim
@Big-Shark
Mar 11 2016 07:11
@jhaoda есть те кому не хватает 10к в месяц бесплатно?
JhaoDa
@jhaoda
Mar 11 2016 07:14
@Big-Shark ну а вдруг
Anton Vorontsov
@symbios-zi
Mar 11 2016 07:17
обновил Laravel до последней версии. Еще что либо нужно сделать перед тем как обновить php5 до php7?
Maxim
@Big-Shark
Mar 11 2016 07:19
@symbios-zi помолиться)
Anton Vorontsov
@symbios-zi
Mar 11 2016 07:20
@Big-Shark и все?
Ivan
@Hunternnm
Mar 11 2016 07:39
Боброе утро!
Soprun Vladislav
@vlsoprun
Mar 11 2016 07:40
@Hunternnm Боброе
Ivan
@Hunternnm
Mar 11 2016 07:40
@symbios-zi кровь девственницы есть в наличии? Иначе ничего не получится
Юрий
@sawerus
Mar 11 2016 07:55
Народ привет !
Домен может нужен кому? ka53.ru
JhaoDa
@jhaoda
Mar 11 2016 07:56
@symbios-zi можно белой курицей обойтись, зарезав её во славу Великого Мпото
Только чисто белой, а то Великий Мпото обидится и опкэш тебе отключит
E.Wolf
@wolf-alone
Mar 11 2016 07:58

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

$name = 'News';
$model = App\Model\$name

Немного утрированный пример, но суть вопроса отражает

JhaoDa
@jhaoda
Mar 11 2016 07:59
@wolf-alone никак
А, понял... $model = 'App\\Model\\'.$name
E.Wolf
@wolf-alone
Mar 11 2016 08:00
@jhaoda о как, спасибо, сейчас попробую
saori
@saorityan
Mar 11 2016 08:03
@wolf-alone еще слешь впереди App если ты уже в каком то неймспейсе
E.Wolf
@wolf-alone
Mar 11 2016 08:04
@saorityan спасибо
KarmaBot
@KarmaBot
Mar 11 2016 08:04
Спасибо (+1) для @saorityan принято! Текущая карма +8.
E.Wolf
@wolf-alone
Mar 11 2016 08:05
@jhaoda первое спасибо что-то не прошло, спасибо!
KarmaBot
@KarmaBot
Mar 11 2016 08:05
Спасибо (+1) для @jhaoda принято! Текущая карма +706.
VirDignus
@virdignus
Mar 11 2016 08:25
ёу
Soprun Vladislav
@vlsoprun
Mar 11 2016 08:25
@virdignus Привет ))
VirDignus
@virdignus
Mar 11 2016 08:26
нород, подскажите. что провославнее юзать, надо загрузить аваторки юзеров на сервак, что юзать Storage vs Request->File
Soprun Vladislav
@vlsoprun
Mar 11 2016 08:27
This message was deleted
VirDignus
@virdignus
Mar 11 2016 08:28
@vlsoprun не понял )
Soprun Vladislav
@vlsoprun
Mar 11 2016 08:28
Request поможет получить файл, а Storage поможет его разместить в хранилище
Да, написал какую то ересть :smile:
VirDignus
@virdignus
Mar 11 2016 08:30
то есть сторэдж помогает управлять хранилищами
я могу наделать кучу хранилищ, и при заругзке разруливать что куда
вот оно чо
@vlsoprun спасибо
KarmaBot
@KarmaBot
Mar 11 2016 08:31
Спасибо (+1) для @vlsoprun принято! Текущая карма +104.
JhaoDa
@jhaoda
Mar 11 2016 08:36
@virdignus @vlsoprun Storage не сильно поможет, потому что метод move-то у UploadedFile
VirDignus
@virdignus
Mar 11 2016 08:37
@jhaoda так всё же, чем пользоваться
если Storaage бесполезный, тогда зачем он нужен
JhaoDa
@jhaoda
Mar 11 2016 08:37
@virdignus для начала надо понять принцип работы этого всего
Ибо твои вопросы некооректы
Soprun Vladislav
@vlsoprun
Mar 11 2016 08:37
@jhaoda Просто я хотел немного привнести логики на "Storage vs Request->File" ))
JhaoDa
@jhaoda
Mar 11 2016 08:38
Request помогает получить UploadedFile. Storage, наверное, может помочь собрать путь для него (или не может, я никогда не пользовался). UploadedFile сам себя сохраняет
VirDignus
@virdignus
Mar 11 2016 08:39
@jhaoda задача состоит в управлении загружаемыми файлами пользователей
аватарки, картинки всякие
прикреплённые документы
Diaskhan
@Diaskhan
Mar 11 2016 08:39
Кто нибдуь может подсказать, есть ли толковая книга по Ларавел ??
JhaoDa
@jhaoda
Mar 11 2016 08:39
@virdignus я написал, что и как работает
Юрий
@sawerus
Mar 11 2016 08:39
@Diaskhan Дока и исходники )
Diaskhan
@Diaskhan
Mar 11 2016 08:40
Сухая дока ниче не дает
Хотелось бы по влажнее
))
Soprun Vladislav
@vlsoprun
Mar 11 2016 08:40
@Diaskhan Возьми смазку и задрачивай ее ))
Юрий
@sawerus
Mar 11 2016 08:40
@vlsoprun )))
Diaskhan
@Diaskhan
Mar 11 2016 08:42
Спасибо, как я раньше не догадался ))
KarmaBot
@KarmaBot
Mar 11 2016 08:42
@Diaskhan, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
VirDignus
@virdignus
Mar 11 2016 08:43
@jhaoda спс
KarmaBot
@KarmaBot
Mar 11 2016 08:43
Спасибо (+1) для @jhaoda принято! Текущая карма +707.
Alex
@ZAZmaster
Mar 11 2016 08:57
Всем привет
KarmaBot
@KarmaBot
Mar 11 2016 08:57
@ZAZmaster, привет =)
Alex
@ZAZmaster
Mar 11 2016 08:58
кто пользовался https://github.com/yajra/laravel-datatables/ ?
Orion55
@orion55
Mar 11 2016 09:04
Всем привет!
KarmaBot
@KarmaBot
Mar 11 2016 09:04
@orion55, привет =)
Diaskhan
@Diaskhan
Mar 11 2016 09:09
@KarmaBot Привет
Orion55
@orion55
Mar 11 2016 09:11
@Diaskhan привет
Sergey Protko
@fesor
Mar 11 2016 09:38
@Hunternnm да да, путешевствие сквозь время, на пути к изобретению колеса ORM
Orion55
@orion55
Mar 11 2016 09:38
@fesor а когда будет изобретение ActiveRecord? :-)
Sergey Protko
@fesor
Mar 11 2016 09:39
@orion55 active record имеет отношение к одной записи, ORM - связь многих записей (релейшены)
Active Record + ORM = элоквент тот же
Data Mapper + ORM = какой-нибудь Spot2 или что там
Orion55
@orion55
Mar 11 2016 09:39
@fesor не, Active Record реализует CRUD
Nuzsk
@Nuzsk
Mar 11 2016 09:40
@fesor не, Active Record реализует CRUD
это как
Sergey Protko
@fesor
Mar 11 2016 09:42
@orion55 "управление одной записью"
@orion55 CRUD не CRUD - это просто аббривиатура. Суть ActiveRecord - одна запись в базе
Orion55
@orion55
Mar 11 2016 09:43
@fesor CRUD - create, read, update, delete — «создание, чтение, обновление, удаление»
Sergey Protko
@fesor
Mar 11 2016 09:43
@orion55 спасибо капитан
KarmaBot
@KarmaBot
Mar 11 2016 09:43
Спасибо (+1) для @orion55 принято! Текущая карма +25.
Sergey Protko
@fesor
Mar 11 2016 09:43
@orion55 а теперь задумайся что ты говоришь)
Orion55
@orion55
Mar 11 2016 09:43
@fesor запись и операции над ней, а не просто данные
Sergey Protko
@fesor
Mar 11 2016 09:43
@orion55 ну так это уже не CURD)
@orion55 круд это тупые операции над данными, больше подходит под описание row data gateway
Active Record = Domain Object + Row Data Gateway в одном объекте
а CRUD - это одна из вариаций как можно юзать active record
Orion55
@orion55
Mar 11 2016 09:44
@fesor ну...
Sergey Protko
@fesor
Mar 11 2016 09:45
ну и да - операция read сама по себе не относится к active record так как active record это объект, представляющий запись в базе. Ее ты можешь создавать, обновлять и удалять
то что методы выборок у тебя могут быть в статических методах не значит что это часть active record паттерна
Orion55
@orion55
Mar 11 2016 09:45
@fesor всё равно через sql реализуется
Sergey Protko
@fesor
Mar 11 2016 09:45
это файнедры, которые я так люблю. Их можно в отдельный объект при желании вынести (то что ларавельщики репозиториями величают)
@orion55 ну ок, попробуй через sql запилить реализацию active record для монги)
@orion55 ты сейчас говоришь просто "умные" слова
Orion55
@orion55
Mar 11 2016 09:46
@fesor во, понять, не могу как создать репозитарий для сервис-контейнеров или я что-то путаю?
Sergey Protko
@fesor
Mar 11 2016 09:47
@orion55 что значит "репозиторий для сервис-контейнеров"?
Orion55
@orion55
Mar 11 2016 09:47
@fesor монго - это nosql
Sergey Protko
@fesor
Mar 11 2016 09:47
@orion55 и? active record там что-ли нельзя запилить?
Orion55
@orion55
Mar 11 2016 09:47
@fesor мне посоветовали все сервис контейнеры в репозитарий поместить
Sergey Protko
@fesor
Mar 11 2016 09:47
у тебя просто один объект active record будет представлять не строчку в базе а документ
JhaoDa
@jhaoda
Mar 11 2016 09:47
@orion55 ты ваще конкретно путаешь
Sergey Protko
@fesor
Mar 11 2016 09:47
@orion55 убей того что тебе сказал это, либо ты не правильно понял
Orion55
@orion55
Mar 11 2016 09:47
@fesor значит я что-то не то понял
JhaoDa
@jhaoda
Mar 11 2016 09:48
@orion55 тебе если и советовали такое, то наоборот — репы в контейнер
Sergey Protko
@fesor
Mar 11 2016 09:48
@orion55 сервис контейнер - это сервис контейнер, сервисы это сервисы, репозиторий - вид сервиса. Тебя видимо просили регистрировать репозиторий как сервис
JhaoDa
@jhaoda
Mar 11 2016 09:48
Как грицца, правда ли, что Хаим выиграл в лотерею Волгу?
Правда, но не Хаим, а Сёма, не Волгу, а шубу, и не выиграл, а проиграл,..
Sergey Protko
@fesor
Mar 11 2016 09:49
@jhaoda как думаешь, полезно было б народу почитать про то как мы докатились до active record и что было до?
JhaoDa
@jhaoda
Mar 11 2016 09:49
@fesor некоторой части народа, да
Orion55
@orion55
Mar 11 2016 09:49
@fesor массивы были до
Sergey Protko
@fesor
Mar 11 2016 09:49
@orion55 массивы как таракаты - они будут и после)
JhaoDa
@jhaoda
Mar 11 2016 09:49
Ибо большая часть документацию по РНР ещё не дочитала :)
Sergey Protko
@fesor
Mar 11 2016 09:50
@orion55 я тебе могу на массивах data mapper реализовать)
Nuzsk
@Nuzsk
Mar 11 2016 09:50
все что было то и сейчас есть
тем же объектным базам данных куча лет )
Orion55
@orion55
Mar 11 2016 09:50
@fesor я помню в школе с областью памяти напрямую работал
@fesor так что указатели и области памяти позволяют реализовать практически любую структуру данных :-)
Sergey Protko
@fesor
Mar 11 2016 09:50
@orion55 карандашем? баловался с корой головного мозга?
@orion55 опять же ты путаешь что зачем. Я говорю тебе не о структурах данных, а о том как с базой данных работать в терминах ООП
как сокрыть состояние базы данных и удобно с ней работать, а не размазывать ее везде и всюду как нынче любят делать
Orion55
@orion55
Mar 11 2016 09:51
@orion55 работать в терминах ООП или сама база ООП?
Sergey Protko
@fesor
Mar 11 2016 09:52
@orion55 про объектные базы было модно вспоминать в начале 00-х
@orion55 в итоге пару лет поговорили и забыли, не жизнеспособная концепция
Orion55
@orion55
Mar 11 2016 09:52
@fesor Оракл, MySQL - Объектные базы
Nuzsk
@Nuzsk
Mar 11 2016 09:52
mysql объектная?
о нет
:smile:
Sergey Protko
@fesor
Mar 11 2016 09:52
@orion55 а теперь попробуй усомниться в своих утверждениях
@orion55 и приведи мне определение термина "объектная база данных"
можешь википедию почитать если хочешь
@Nuzsk как буд-то бы оракл такой фигней страдал)
@orion55 короч мой тебе совет. Если ты уверен что ты что-то знаешь - лучше посомневайся и погугли. Поймал себя на мысли что мол "вот это надо делать именно так" и сомневайся)
Orion55
@orion55
Mar 11 2016 09:55
@fesor тогда я ничего не напишу в принципе - буду всё сомневаться :-)
Sergey Protko
@fesor
Mar 11 2016 09:56
@orion55 ну я про свободное время)
Nuzsk
@Nuzsk
Mar 11 2016 09:56
@fesor я тут решил погуглить, что есть свежего в объектных базах
Sergey Protko
@fesor
Mar 11 2016 09:56
@orion55 что бы было чего почитать, а то типичная проблема разработчиков они зациклены на том что они знают и не знают чего не знают
вот такое нашлось
поддерживает LINQ
Sergey Protko
@fesor
Mar 11 2016 09:57
@Nuzsk ну это скорее документно ориентированная база, как коуч или монга но только маленькая для встраивания в приложеньки
@Nuzsk у меня в компании даже вроде как пробовали юзать
@Nuzsk ну мол на бэкэнде оно не жизнеспособно
Orion55
@orion55
Mar 11 2016 09:58
@fesor я знаю, то что ничего не знаю
Sergey Protko
@fesor
Mar 11 2016 09:59
@orion55 уже лучше) а в "области памяти" мы все лазали, кто в универах по специальности учился)
только для php это мало пользы дает)
Nuzsk
@Nuzsk
Mar 11 2016 09:59
@fesor а в чем отличие документориентированной от объектной?
Maxim
@Big-Shark
Mar 11 2016 10:00
@fesor можно статью про то как мы докатились до АР, и про то как реализовать дата маппер на массивах
Sergey Protko
@fesor
Mar 11 2016 10:00
@Nuzsk считай что в документноориентированной мы храним не маленькие объекты, а корень агрегата, и как поддокументы у него связанные объекты выступают
@Nuzsk а когда гремела слава объектно-ориентированных баз все мечтали получить такую базу, что бы мэпперы между объектами и базой не нужны были
тип взял загрузил объект типа из памяти и радуешься
а потом оказалось что с такой схемой делать какие-то сложные выборки, для репортов или аналитики например - маленький ад.
Nuzsk
@Nuzsk
Mar 11 2016 10:01
@fesor понял, ну вообще довольно тонкая грань
Sergey Protko
@fesor
Mar 11 2016 10:02
@Nuzsk грань нетонкая, документноориетированная база не должна содержать связей
Nuzsk
@Nuzsk
Mar 11 2016 10:02
особенно если учесть, что современные бд позволяют на java запросы строчить
Sergey Protko
@fesor
Mar 11 2016 10:02
между документами. Все связи зашиты внутри одного документа
а у объектных баз данных таких ограничений небыло) так что по сути да, это как развитие оных идет
Maxim
@Big-Shark
Mar 11 2016 10:02
@Nuzsk на java?
Sergey Protko
@fesor
Mar 11 2016 10:03
@Big-Shark да, эластик серч например
там можно фигачить выборки на java)
и на javascript
Maxim
@Big-Shark
Mar 11 2016 10:04
@fesor я просто javascript много где встречал, в тойже монге, а вот java не припоминал сразу)
ну например
Maxim
@Big-Shark
Mar 11 2016 10:05
@Nuzsk ну всеж это экстеншен
Nuzsk
@Nuzsk
Mar 11 2016 10:06
@Big-Shark ну таких решений много на самом деле, часто натыкаюсь
Maxim
@Big-Shark
Mar 11 2016 10:06
@Nuzsk https://www.commandprompt.com/community/plphp/ ну и на пхп можно)
Orion55
@orion55
Mar 11 2016 10:10
сейчас задам вопрос, опять гуру ООП начнут кидаться какашками, но вопрос в следующем: в чем существенная разница между абстрактным классом и интерфейсом?
Nuzsk
@Nuzsk
Mar 11 2016 10:11
:smile:
NelinD
@NelinD
Mar 11 2016 10:11
@orion55 бгггг
Nuzsk
@Nuzsk
Mar 11 2016 10:11
ну что ты как неродной
будто не ларавельщик
Maxim
@Big-Shark
Mar 11 2016 10:11
@orion55 это мой любимый вопрос для собеседований)
NelinD
@NelinD
Mar 11 2016 10:12
@Big-Shark задавать или отвечать?)
Maxim
@Big-Shark
Mar 11 2016 10:12
@NelinD задавать
Nuzsk
@Nuzsk
Mar 11 2016 10:12
и слушать один и тот же ответ в 99% случаев?
Sergey Protko
@fesor
Mar 11 2016 10:13
@Nuzsk ну для постгреса хранимки можно и на php писать)
Orion55
@orion55
Mar 11 2016 10:13
@Big-Shark а как бы ты на него ответил?
Maxim
@Big-Shark
Mar 11 2016 10:13
@Nuzsk хаха, ну процентах в 90 люди не знают ответ)
Nuzsk
@Nuzsk
Mar 11 2016 10:13
@Big-Shark не смеши
это самый простой вопрос из возможных
Sergey Protko
@fesor
Mar 11 2016 10:14

@orion55

в чем существенная разница между абстрактным классом и интерфейсом?

интерфейс не может иметь реализации

Maxim
@Big-Shark
Mar 11 2016 10:14
@Nuzsk реально.
Orion55
@orion55
Mar 11 2016 10:14
@Big-Shark всё что я нашёл, абстрактный класс может хранить переменные и реализовывать методы, а интерфейс должен быть реализован
Sergey Protko
@fesor
Mar 11 2016 10:14
@orion55 ну и да, по дефолту ты должен выбирать интерфейсы, и абстрактные классы как способ устранять дублирование
Orion55
@orion55
Mar 11 2016 10:14
но это возникает следующий вопрос: про множественное наследование интерфейсов и трейты в абстрактных классах
Nuzsk
@Nuzsk
Mar 11 2016 10:15
интерфейсы не наследуются
они имплементируются
Orion55
@orion55
Mar 11 2016 10:15
@Nuzsk класс может несколько интерфейсов имплементировать
Nuzsk
@Nuzsk
Mar 11 2016 10:15
это не наследование
это имплементация множества интерфейсов
Orion55
@orion55
Mar 11 2016 10:16
@Nuzsk но трейты тоже не наследование
Nuzsk
@Nuzsk
Mar 11 2016 10:16
трейты это горизонтальный вид наследования
можно так назвать
Orion55
@orion55
Mar 11 2016 10:16
@Nuzsk а интерфейсы это?
NelinD
@NelinD
Mar 11 2016 10:16
@Nuzsk скорее привика а не наследование
Sergey Protko
@fesor
Mar 11 2016 10:17
@Nuzsk трейты - это не наследование, это copy-n-paste кода, устранение дублирование тупого кода
@orion55 интерфейс это контракт, какие сообщения должен уметь обрабатывать объект
Nuzsk
@Nuzsk
Mar 11 2016 10:17
@fesor там с миксинами довольно тонкая грань
Sergey Protko
@fesor
Mar 11 2016 10:17
@Nuzsk вот именно, люди часто подменяют понятие "трейт" на "миксин"
Nuzsk
@Nuzsk
Mar 11 2016 10:17
да, виноват
:smile:
Sergey Protko
@fesor
Mar 11 2016 10:17
и миксины и множественное наследование - это плохо, так как легко и просто можно нарушить LSP
Nuzsk
@Nuzsk
Mar 11 2016 10:18
вот неправда, миксины это очень хорошо
если использовать там, где нужно
Sergey Protko
@fesor
Mar 11 2016 10:18
@Nuzsk приведи пример где миксины это хорошо
@Nuzsk и где оно лучше композиции
Nuzsk
@Nuzsk
Mar 11 2016 10:19
@fesor да те же игры как пример, почти в любой статье о горизонтальном наследовании именно такие случаи рассматриваются
dihalt
@dihalt
Mar 11 2016 10:23
Коллеги, а что подразумевается под словом "виджет" в контексте использования шаблонизатора (блейд)?
И ещё вопрос. Практикуется ли множественное наследование шаблонов (лайаутов)? Предположим страница сложносоставная, каким образом собираются подобные страницы?
Orion55
@orion55
Mar 11 2016 10:26
@dihalt тебе хана, заикнулся про множественное наследование :-)
JhaoDa
@jhaoda
Mar 11 2016 10:26
@orion55 т.е. для тебя что шаблоны, что классы — монопенисуально?
Andrew
@alutskevich
Mar 11 2016 10:28
@dihalt шаблоны нельзя наследовать) их можно использовать)
NelinD
@NelinD
Mar 11 2016 10:28
@jhaoda единоудово
dihalt
@dihalt
Mar 11 2016 10:30
@orion55 имелось ввиду extends
Роман Сохарев
@greabock
Mar 11 2016 10:30
@dihalt в ларе нет виджетов "искаропки"
dihalt
@dihalt
Mar 11 2016 10:31
This message was deleted
@greabock это понял, сам подход интересует
Роман Сохарев
@greabock
Mar 11 2016 10:32
@dihalt https://github.com/greabock/widget-system вот тебе примитивная система виджетов
Роман Сохарев
@greabock
Mar 11 2016 10:38
@dihalt вообще эта тема и без виджетов легко разруливается композиторами/криэйторами
dihalt
@dihalt
Mar 11 2016 10:39
@greabock а где про это почитать?
JhaoDa
@jhaoda
Mar 11 2016 10:39
@dihalt в доке
Maxim
@Big-Shark
Mar 11 2016 10:40
@jhaoda становишься предсказуем)
Orion55
@orion55
Mar 11 2016 10:41
@Big-Shark раньше в маны посылали, а теперь в документацию :-)
JhaoDa
@jhaoda
Mar 11 2016 10:42
@Big-Shark да меня поражают такие вопросы, сразу же видно, что человек документацию не читал нормально
dihalt
@dihalt
Mar 11 2016 10:43
@jhaoda в разделе шаблонизатор ничего про композиторы нема
JhaoDa
@jhaoda
Mar 11 2016 10:43
Ткнули носом в ссылку, почитал, через день ткнули в другую, почитал — знания обрывочные, системы ноль
@dihalt вот я и говорю...
dihalt
@dihalt
Mar 11 2016 10:44
@jhaoda @Nuzsk спс, уже нашёл
KarmaBot
@KarmaBot
Mar 11 2016 10:44

Благодарный

@dihalt, вы выполнили условие: "Высказать 20 благодарностей.".
С чем и поздравляем =)
Благодарный
Спасибо (+1) для @jhaoda принято! Текущая карма +708.
Спасибо (+1) для @Nuzsk принято! Текущая карма +27.
Soprun Vladislav
@vlsoprun
Mar 11 2016 10:46
@dihalt Грац!
Sergey Protko
@fesor
Mar 11 2016 10:48
@Nuzsk ммм дай ссылку, а то у меня что-то совсем другие представления об этих вещах в контексте игр. Игры единственный кейс где ивенты хороши для развязывания системы например.
не смог найти именно ту статью что хотел
но эта тоже сойдет
dihalt
@dihalt
Mar 11 2016 10:59
@Nuzsk @jhaoda А какие ещё преимущества даёт композер шаблонов, кроме как внедрение переменных в оные с декомпозицией кода?
Nuzsk
@Nuzsk
Mar 11 2016 10:59
@dihalt я не ларавельщик.
Andrew
@alutskevich
Mar 11 2016 11:00

товарищи) вопрос на "мысли")..

в системе за действия начисляется рейтинг юзеру) сейчас реализация такова, что при выполнении действия, бросается ивент о том, что надо начислить рейтинг) handler обрабатывает параметры и начисляет рейтинг).. может лучше убрать event и реализовать через facade?) Например, будет Rating::incRating();

JhaoDa
@jhaoda
Mar 11 2016 11:01
@alutskevich а фасад-то тут при чем?
Это всего лишь удобная (хотя кому как) обертка к некоему классу/сервису
dihalt
@dihalt
Mar 11 2016 11:01
@alutskevich на мой взгляд событием лучше, вдруг завтра захочется повесить на юзера какое-нибудь ярмо, связанное с повышением рейтинга
Andrew
@alutskevich
Mar 11 2016 11:03
@jhaoda да да) обертка) Обратился к классу, вызвал метод начисления рейтинга) фасад привел как пример)..
Sergey Protko
@fesor
Mar 11 2016 11:04
@alutskevich то что ларавельщики называют фасад на самом деле называется глобальный доступ к сервис локатору
антипаттерн если коротко
Andrew
@alutskevich
Mar 11 2016 11:04
@dihalt те же мысли).. я подумал, может сами события - уже куча мусорного кода, который лучше использовать в особых случаях)
dihalt
@dihalt
Mar 11 2016 11:05
@alutskevich оно и эстетичней, кмк
Andrew
@alutskevich
Mar 11 2016 11:06
@fesor за информацию спасибо) об этом не знал)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 11:22
Накидал тему для шторма, нормик? http://color-themes.com/?view=theme&id=56e2aa50333ecc1800c3941c =)
Ну точнее это та, которая у меня основная на протяжении последних пары лет
Maxim
@Big-Shark
Mar 11 2016 11:25
@SerafimArts так себе)
Sergey Protko
@fesor
Mar 11 2016 11:26
@SerafimArts ты уже в дизайн и цветоведенье с велосипедами пошел? продуктивен))
Soprun Vladislav
@vlsoprun
Mar 11 2016 11:27
Мне Darcula очень нравится )))
когда солнце не светит...
Nuzsk
@Nuzsk
Mar 11 2016 11:28
кстати, кто vscode обновлял на последнюю версию?
у меня одного автокомплит в this. перестал подхватываться? (js)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 11:30
@fesor в дизайн я уже давно =)))
http://vk.com/serafim_arts тока тссс
butschster
@butschster
Mar 11 2016 11:42
@SerafimArts Ты такой молодец!
Anton Vorontsov
@symbios-zi
Mar 11 2016 11:42
дизайнер-программист
верстальщик-бухгалтер
Nuzsk
@Nuzsk
Mar 11 2016 11:44
он еще и вокалист наверное
Anton Vorontsov
@symbios-zi
Mar 11 2016 11:44
@Nuzsk :D тогда уж басист
моя любимая тема в sublime http://i.imgur.com/eC0uGpF.png глаза не так сильно устают
Юрий
@sawerus
Mar 11 2016 11:47
@symbios-zi Solarized темная нравится
Anton Vorontsov
@symbios-zi
Mar 11 2016 11:48
@sawerus эта Solarized light
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 11:49
@symbios-zi нет, не вокалист, но музыкой занимаюсь
правда пока очень посредственно
Nuzsk
@Nuzsk
Mar 11 2016 11:50
а танцы, танцы?
:smile:
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 11:50
только 3ю и 5ую позиции шарю+
:D
ну и с бубном
но это профессиональная травма
Anton Vorontsov
@symbios-zi
Mar 11 2016 11:51
гопак норм танец
как капоэро боевой
JhaoDa
@jhaoda
Mar 11 2016 12:16
@symbios-zi капоэйра, бро
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:17
@jhaoda я смотрел фильм с марком дакаскасом, там так переводили :D
JhaoDa
@jhaoda
Mar 11 2016 12:17
@symbios-zi да там ещё и не так могли перевести
NelinD
@NelinD
Mar 11 2016 12:19
@symbios-zi это который сейчас у невского снимается?)
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:20
@NelinD ммм?
какого невского?
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:21
@NelinD Tor браузера нет на работе, не могу посмотреть
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:22
NelinD
@NelinD
Mar 11 2016 12:25
@symbios-zi ты последний посмотри)
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:26
неее... наши фильмы стараюсь не смотреть. Михалков тому виной ))
в процессе очень захотелось вытереть пыль с монитора
а не вышло :smile:
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:29
Badoo перешли на PHP7 и сэкономили $1M (хабр)
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:37
есть желающие у них работать? Товарищ все еще ищет программиста в Badoo
Maxim
@Big-Shark
Mar 11 2016 12:39
@symbios-zi так он же в мамбу вроде искал?
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:41
@Big-Shark а блин )
это же другие. :D
я чота подумал что это мамба ))
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 12:42
не, баду шарят
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:42
а Badoo блин тоже сайт знакомств
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 12:42
ну т.е. на выставках, девконах
доклады всякие
и проч
а мамба - вообще непонятная херь
даже не слышал никогда
Anton Vorontsov
@symbios-zi
Mar 11 2016 12:43
@SerafimArts ну как уж. известный сайт знакомств
Arman
@a-r-m-a-n
Mar 11 2016 12:48
This message was deleted
Arman
@a-r-m-a-n
Mar 11 2016 12:56
всеми привет. Только начал изучать, пытаюсь поднять проект/движок, подключил разные пакеты работы с моделями, но реально некоторые вещи бесят. И теперь не знаю переписать как мне удобно или работать как в этих пакетах и офф документации? Стыдно перед теми кто откроет код за мной и проблемы когда с кем то начну работать кто в ларавел уже давно. Как лучше тут поступить?
Nuzsk
@Nuzsk
Mar 11 2016 12:57
а что бесит?
Arman
@a-r-m-a-n
Mar 11 2016 13:02
допустим что за меня решили с created_at и updated_at, да можно отключить, но раз впихивают, то большие шансы что другие будут работать с этим
Maxim
@Big-Shark
Mar 11 2016 13:02
@arman-kazgozhin и что тебя бесит в этом?
Arman
@a-r-m-a-n
Mar 11 2016 13:03
я привык сам следить за этими метками, а там на уровне БД прописаны дефолтные состояния.
JhaoDa
@jhaoda
Mar 11 2016 13:04
@arman-kazgozhin какие дефолтные? null?
Ivan
@Hunternnm
Mar 11 2016 13:04
@arman-kazgozhin эм... всё можно сменить то
Arman
@a-r-m-a-n
Mar 11 2016 13:05
да, можно. но по-умолчанию логика заложена.
created_at при добавлении, а updated_at при обновлении и как я понял только если что-то поменялось
JhaoDa
@jhaoda
Mar 11 2016 13:08
@arman-kazgozhin а когда еще надо менять updated_at?
Maxim
@Big-Shark
Mar 11 2016 13:09
@arman-kazgozhin а у тебя опыт до ларавеля с фреймверками был? Или только велики?
Arman
@a-r-m-a-n
Mar 11 2016 13:09
zend
Artur Gafurov
@assurrussa
Mar 11 2016 13:10
@arman-kazgozhin https://gitter.im/LaravelRUS/chat?at=56e2c3449f24605773d740c9 ответь на вопрос, уж очень интересно.
Arman
@a-r-m-a-n
Mar 11 2016 13:12
Просто привык что это время редактирования, и часто надо показать когда редактировали или для сортировки. А тут аякс какую-то незначительную метку переключил у модели и все.
JhaoDa
@jhaoda
Mar 11 2016 13:13
@arman-kazgozhin ну так заведи своё поле, которое будет обновляться только при Настоящем Полноценном Редактировании™
Я не понимаю сути претензий. Тебе не нравится — отключаешь и пилишь свою логику обновления времени.
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:15
ещё как вариант:
public function setUpdatedAtAttribute($value)
{
    if ($this->isDirty(['attr1', 'attr2'])) {
        $this->attributes['updated_at'] = Carbon::now();
    }
}
Arman
@a-r-m-a-n
Mar 11 2016 13:15
Надо это помнить. И если начну так отключать все, то что в конце останется?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:16

Я не понимаю сути претензий. Тебе не нравится — отключаешь и пилишь свою логику обновления времени.

Ну собственно это (мой пример выше) оно и есть

JhaoDa
@jhaoda
Mar 11 2016 13:16
@arman-kazgozhin не надо утрировать
@arman-kazgozhin ну и ты всегда можешь предложить патчик :) Удачи в общении со Школьником :)
Maxim
@Big-Shark
Mar 11 2016 13:17
@arman-kazgozhin а что еще раздражает?
Arman
@a-r-m-a-n
Mar 11 2016 13:19
мне понравились именные роуты. раздражает что надо везде их указывать. Т.е. в контроллере вместо view('admin.index', ['models' => $models]), хотелось бы просто view(['models' => $models]), а вторым аргументом уже можно менять view-файл
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:19
@arman-kazgozhin
1) не обязательно
2) можно (см. переменную $layout)
а, не
не лайаут
Arman
@a-r-m-a-n
Mar 11 2016 13:20
плюс использую notification('admin.index') - хотелось бы чтоб именные роуты сами по умолчанию цеплялись
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:20
ну короче это тоже можно
Maxim
@Big-Shark
Mar 11 2016 13:20
@arman-kazgozhin чет я не понял, а каким образом именые роуты с вью сочитаются?
Arman
@a-r-m-a-n
Mar 11 2016 13:22
у меня есть роут "admin.page.index" урл по ним и строю и есть можно вьюху указать "admin.page.index", зачем везде одно и тоже писать, хотелось бы чтоб брал текущий и от него танцевал по деволту. в зенде как раз не надо указывать вьюху, но можно поменять в любой момент. а в ларавел надо сначала указать вью, а потом передать данные или нет?
Alexander Popov
@ruelephant
Mar 11 2016 13:23
забыл, как называется паттер когда родитель возращает инициализированный собой класс потомка?
Maxim
@Big-Shark
Mar 11 2016 13:23
@arman-kazgozhin ну да, вроде логично, так как разные методы могут отдавать разные вью
@arman-kazgozhin и имя вью не зависит от роуота или акшена
Alexander Popov
@ruelephant
Mar 11 2016 13:23
return new Children($this);
Maxim
@Big-Shark
Mar 11 2016 13:24
@ruelephant врапер? Фактори?
Nuzsk
@Nuzsk
Mar 11 2016 13:24
@ruelephant напоминает то ли декоратор то ли визитор
зависит от типа родителя
NelinD
@NelinD
Mar 11 2016 13:25
@ruelephant порождение?)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:25
визитор - это другое
Nuzsk
@Nuzsk
Mar 11 2016 13:25
ну визитор тоже себя любит подставлять
но иначе конечно
короче - не понятно, нужны подробности
Arman
@a-r-m-a-n
Mar 11 2016 13:26
@Big-Shark да, логично когда не сильно используешь именные роуты, но когда на них работаешь, то иногда прям разрывает всего.
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:26
визитор - это хрень, которая обходит нужные классы и делает что-нибудь
Evgeny
@meze
Mar 11 2016 13:26
говнокод это называется, родитель о потомках ничего знать не должен
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:26
например сервис-провайдеры
вполне себе визиторы
Nuzsk
@Nuzsk
Mar 11 2016 13:26
не знаю никаких провайдеров
визитор знаю :smile:
Alexander Popov
@ruelephant
Mar 11 2016 13:27
а у меня вообще своя терминология, ибо я один всегда сижу на проекте :)
ну похоже на декоратор
Maxim
@Big-Shark
Mar 11 2016 13:27
@arman-kazgozhin именные роуты не одно и тоже что и путь до вью, ты уверен что ты верно понял что аткое именные роуты?
@meze это почему же?
Nuzsk
@Nuzsk
Mar 11 2016 13:28
@ruelephant попробуй один из этих вариантов посмотреть http://cpp-reference.ru/patterns/structural-patterns/
Arman
@a-r-m-a-n
Mar 11 2016 13:31
@Big-Shark Присваивая имена роутам вы можете сделать обращение к ним (при генерации URL в шаблонах (views) или редиректах) более удобным
return view('admin.profile', $data);
Это все из доков. Вещи понимаю что разные. Но ведь как удобно указав именной роут не только делать редиректы и строить урл, но и задавать вью по умолчанию, ставить метки во вью допустим notification('admin.index') и т.д.
Maxim
@Big-Shark
Mar 11 2016 13:32
@arman-kazgozhin эмм, ну фиг знает, как по мне ты странную штуку хочешь
Alexander Popov
@ruelephant
Mar 11 2016 13:33
хз я тут структуру накрутил конечно
Evgeny
@meze
Mar 11 2016 13:33
@Big-Shark а нафиг это нужно? bidirectional связь, зависимость от конкретных классов, а не абстракций
Роман Сохарев
@greabock
Mar 11 2016 13:33
@SerafimArts не, визитор, это не про то
Alexander Popov
@ruelephant
Mar 11 2016 13:33
класс коннекта возращает резалт, который возращает уже по записи (через генератор) каждая запись обернута в свой тип класса
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:33
@greabock вай?
Alexander Popov
@ruelephant
Mar 11 2016 13:34
получается ConnectClass->ControlClass($connectClass)->ItemClass($connectClass, $rowArray)
Maxim
@Big-Shark
Mar 11 2016 13:34
@meze а разве Information expert не говорит о том что родитель может делать со своими детьми что хочет, скрывая их за собой?
Роман Сохарев
@greabock
Mar 11 2016 13:36
@SerafimArts Ну потому, что визитор подразумевает создание интерфейса "посещаемого" объекта, и предполагается, что все точки посещения, наследуются от этого интерфейса. Это позволяет, посещать кучу разных объектов, разных классов массово.
вообще на практике, ни разу не встречал этот паттерн. Он немного не про php. У нас просто нет такой необходимости.
Alexander Popov
@ruelephant
Mar 11 2016 13:41
когда я слышу интерфейс в php, я сразу настораживаюсь
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:42
@ruelephant почему?
Alexander Popov
@ruelephant
Mar 11 2016 13:42
обычно 99,9% без интерфейса решаются
*задач
Nuzsk
@Nuzsk
Mar 11 2016 13:42
решается, но не так хорошо
Alexander Popov
@ruelephant
Mar 11 2016 13:42
это как в ларе, для 1 класса создаем интерфейс для DI
ну и нафига?
Nuzsk
@Nuzsk
Mar 11 2016 13:43
ну к месту применять надо
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:43
@ruelephant как раз в ларе это не нужно
Alexander Popov
@ruelephant
Mar 11 2016 13:43
ну как не надо
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:43
но это хорошая практика
Alexander Popov
@ruelephant
Mar 11 2016 13:43
посмотри доки
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:43
потому что программировать надо на основе интерфейсов, а не реализации
это один из слонов хорошего кода
Alexander Popov
@ruelephant
Mar 11 2016 13:43
знаешь что самое смешное?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:43
а ты блин, слон :D
Nuzsk
@Nuzsk
Mar 11 2016 13:44
@ruelephant если бы фреймворки писались бы без интерфейсов - ты бы не смог их нормально расширять
Alexander Popov
@ruelephant
Mar 11 2016 13:44
что когда нам надо будет новую реализацию, она на 99% сломает интерфейс
Nuzsk
@Nuzsk
Mar 11 2016 13:44
потому что договор бы постоянно нарушался
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:44
@Nuzsk в go нет интерфейсов
:D
Alexander Popov
@ruelephant
Mar 11 2016 13:44
а он и так постоянно нарушается
Evgeny
@meze
Mar 11 2016 13:44
@Big-Shark не помню о чем IE, но не думаю, что они такое допустили бы, это даже пахнет странно, что надо внести изменения в базовый класс каждый раз, когда от него наследуются
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:44
ну он и не предназанчен ни для чего серьёзного в принипе
Nuzsk
@Nuzsk
Mar 11 2016 13:44
не нарушается
если бы нарушалось - ты бы не смог расширять фрейм )
Alexander Popov
@ruelephant
Mar 11 2016 13:45
ну представь, ты пишешь абстрактный код, сделал все шоколадно
сделал интерфейс для ммм коннекта к бд
реализация - Mysql
потом ХОП! и тебе уже надо MSSQL
ты такой хренак хренак и уже сломал интерфейс
Nuzsk
@Nuzsk
Mar 11 2016 13:45
ну вот надо проектировать с умом
и пробовать разные варианты
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:46
@ruelephant раз сломал - сам виноват
значит всё обрушится
но по крайней мере ты знаешь, что нарушил
т.к. тупо ничего не заработает
Alexander Popov
@ruelephant
Mar 11 2016 13:46
поэтому я не люблю интерфейсы
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:46
а т.к. знаешь - не будет никаких непонятных ошибок
@ruelephant потому что они дают надёжный код?
Maxim
@Big-Shark
Mar 11 2016 13:47
@meze а наследование тут причем? я так понимаю нам он не использует наследование, это просто вложенный класс
Nuzsk
@Nuzsk
Mar 11 2016 13:47
это как на с++ ругаться
потому что не компилируется
не компилируется что попало *
Arman
@a-r-m-a-n
Mar 11 2016 13:47
а есть какой простой сайт с открытыми исходниками?
Alexander Popov
@ruelephant
Mar 11 2016 13:47
@meze я использую вложенные друг в друга классы, дабы не дать сделать search до connect
Evgeny
@meze
Mar 11 2016 13:48
хз, он упомянул родитель-потомок %)
Alexander Popov
@ruelephant
Mar 11 2016 13:48
ну это как бы родитель и потомок
только не в наследовании
ладно напишем "порождаемый класс"
Nuzsk
@Nuzsk
Mar 11 2016 13:48
может владелец и подчиненный?
Alexander Popov
@ruelephant
Mar 11 2016 13:49
мммм
как то не очень
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:49
хозяин и раб
Alexander Popov
@ruelephant
Mar 11 2016 13:49
материнский класс и чилдрен :)
хозяин рабов не рождает
Evgeny
@meze
Mar 11 2016 13:50
порождаемый класс это тоже о наследовании )
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:50
квина и ларва?
chumaty
@chumaty
Mar 11 2016 13:50
Добрый день, подскажите, можно ли в роутах прописать urldecode для того, чтобы при обращениее в реально существующую папку, эта функция срабатывала?
KarmaBot
@KarmaBot
Mar 11 2016 13:50
@chumaty, здравствуй.
Nuzsk
@Nuzsk
Mar 11 2016 13:50
короче агрегат это зовется
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:51
ну или барак и марики
Alexander Popov
@ruelephant
Mar 11 2016 13:51
-- Завернул --
JhaoDa
@jhaoda
Mar 11 2016 13:51
@ruelephant картинку заверни
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 13:51
карась и булька
Alexander Popov
@ruelephant
Mar 11 2016 13:51
@jhaoda забыл как заворачить :)
Nuzsk
@Nuzsk
Mar 11 2016 13:52
:elephant:
Alexander Popov
@ruelephant
Mar 11 2016 13:52
только убить нельзя
породить можно, а убить нельзя :(
Maxim
@Big-Shark
Mar 11 2016 13:54
@arman-kazgozhin laravel.io laravel.com
Sergey Protko
@fesor
Mar 11 2016 13:55
ооо, @ruelephant вернулся)

@ruelephant

поэтому я не люблю интерфейсы

ты просто не умеешь с ними работать)

или мало работал с кодом, где нет интерфейсов а стоило бы
вообще да, интерфейсы как бы нарушают одну важную идею ООП и введены они только для удобства. Идея же в том, что объекты не должны знать умеет ли объект обрабатывать сообщения или нет. Ну то есть отправили сообщения и накласть на то что там дальше будет.
но с интерфейсами удобнее и предсказуемее
Arman
@a-r-m-a-n
Mar 11 2016 13:59
благодарю; А модели где лучше держать? почему-то User положили в app, хотя удобнее наверно app/models?
KarmaBot
@KarmaBot
Mar 11 2016 13:59
@arman-kazgozhin, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
Maxim
@Big-Shark
Mar 11 2016 13:59
@fesor а интерфейс разве не говорит что я умею отправлять сообщения и я уменя есть для этого функция ... ?
@arman-kazgozhin как угодно, можно и в models
Nuzsk
@Nuzsk
Mar 11 2016 13:59
@fesor если уж рассматривать идею ооп моделирования как таковую
Soprun Vladislav
@vlsoprun
Mar 11 2016 13:59
@arman-kazgozhin Я в app/Models ))
Nuzsk
@Nuzsk
Mar 11 2016 14:00
то ты не можешь взаимодействовать неизвестно с чем
Arman
@a-r-m-a-n
Mar 11 2016 14:00
@Big-Shark спасибо
KarmaBot
@KarmaBot
Mar 11 2016 14:00
Спасибо (+1) для @Big-Shark принято! Текущая карма +712.
Nuzsk
@Nuzsk
Mar 11 2016 14:00
@fesor или я не совсем понял идею
Sergey Protko
@fesor
Mar 11 2016 14:00
@Big-Shark нет, функции принимают сообщения (сообщение это вызов метода по сути)
@Big-Shark интерфейс говорит "я объект который умеет принимать такие-то сообщеньки"
Dinar Garipov
@garf
Mar 11 2016 14:04
Ну ты ведь не можешь пользоваться методом, не зная, есть он или нет. Такой он или нет.
Evgeny
@meze
Mar 11 2016 14:06
в пчп4 могли же %)
Dinar Garipov
@garf
Mar 11 2016 14:07
Я не о том. Интерфейс как бы говорит, что сюда можно метод использовать без страха. В нем точно есть такие методы.
Evgeny
@meze
Mar 11 2016 14:14
о том как раз таки, это уже вопросы типизации, а не ооп
на любое неопределенное сообщение объект может по дефолту отвечать notimplementedexception
Dinar Garipov
@garf
Mar 11 2016 14:15
Ну наверно ты прав. :)
А солид разве не требует абстракцию вместо конкретики?
Alexander Popov
@ruelephant
Mar 11 2016 14:18
@meze зато в случаи интерфейса ты можешь проверить тип и уже 100% знать :)
интерфейсами мы затыкаем типизацию ака
dihalt
@dihalt
Mar 11 2016 14:50
Парни, а как сделать (-условно)одновременно два ajax запроса? Если их тупо ставить подряд, второй тупить начинает, выполняется с задержкой.
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 14:52
@dihalt вроде свойство "async" отвечает за это. Отправку синхронными сделай
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 14:55
@dihalt полюбасу они будут с задержкой
т.к. JS работает в одном потоке
dihalt
@dihalt
Mar 11 2016 14:56
а как быть? конская задержка. первый за 30мс возвращается, второй минимум секунда
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 14:57
ну во-первых у xhr есть два режима - синхронный и асинхронный
нужно использовать асинхронный
у fetch запросов только асинхронный режим
так что надо понять как ты это отправляешь (через какой объект) и с какими опциями
dihalt
@dihalt
Mar 11 2016 14:58
@SerafimArts ща покопаюсь поглубже, спс
KarmaBot
@KarmaBot
Mar 11 2016 14:58
Спасибо (+1) для @SerafimArts принято! Текущая карма +293.
Alexander Popov
@ruelephant
Mar 11 2016 14:59
это канал по laravel товарищи
dihalt
@dihalt
Mar 11 2016 14:59
@ruelephant и шо? ларавельщик != программист?
Alexander Popov
@ruelephant
Mar 11 2016 15:00
ларавельщик = php = backend
dihalt
@dihalt
Mar 11 2016 15:00
@ruelephant скажи спасибо, что тема программерская. тут бывают тёрки похлеще.
@ruelephant ты слишком плохого мнения о ларавельщиках
Soprun Vladislav
@vlsoprun
Mar 11 2016 15:00

@ruelephant backend = говнокод = боль

Мы что мазохисты? ))

Alexander Popov
@ruelephant
Mar 11 2016 15:01
где я высказал мнение о ларавельщиках?
не надо мне тут
Nuzsk
@Nuzsk
Mar 11 2016 15:01
да и так все о ларавельщиках понятно
dihalt
@dihalt
Mar 11 2016 15:01
@ruelephant сообщение от 18-00
Alexander Popov
@ruelephant
Mar 11 2016 15:02
я уверен что тут многие катаются на велосипедах, давайте тогда еще на канале обсуждать "слетает цепь помогите"
dihalt
@dihalt
Mar 11 2016 15:02
@ruelephant накаркаешь
Alexander Popov
@ruelephant
Mar 11 2016 15:02
я не сказал что они ограничены этим
я сказал что talk line такая :)
dihalt
@dihalt
Mar 11 2016 15:04
@SerafimArts ну так и есть, асихронный режим - запрос кинул и пошёл своими делами заниматься. Проблема тут, как ты правильно отметил из-за одного потока. Т..е пока первый аякс не вернулся, второй сушит вёсла. Блин.
Alexander Popov
@ruelephant
Mar 11 2016 15:14
@dihalt может тебе вебсокеты использовать?
по взрослому так сказать
Arman
@a-r-m-a-n
Mar 11 2016 15:16
@dihalt еще есть проблема с сессиями, если сессия на файлах, то тогда блокируется вначале открытия и разблокируется в конце. чтоб таких провисов не было, надо закрывать сессию перед "тяжелым" кодом. Тогда запросы не будут друг друга ждать
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 15:16
@dihalt эм, как бы они выполняются кусками поочерёдно
а не целиком
так что у тебя где-то в коде проблема
например вызов await или Promise.all, которые гарантирую поочерёдное выполнение запросов
а не параллельное
dihalt
@dihalt
Mar 11 2016 15:17
@ruelephant может, но во первых я их не юзал, во вторых, тут не моё хозяйство, работу работаю.
Alexander Popov
@ruelephant
Mar 11 2016 15:19
а ты учись
а то всю жизнь костыли и будешь делать, если не будешь делать немного больше чем требуется для задачи
dihalt
@dihalt
Mar 11 2016 15:19
@SerafimArts по правде говоря я использовал не нативный вызов, а средства библиотеки (webix). Такую задачу поставили. Но для себя поковыряюсь.
JhaoDa
@jhaoda
Mar 11 2016 15:19
Пришел Слон и опять флуд
Alexander Popov
@ruelephant
Mar 11 2016 15:19
где флуд?
мы вебсокеты обсуждаем
dihalt
@dihalt
Mar 11 2016 15:20
@SerafimArts погоди, поочерёдно суть последовательно. Тут наверное в браузере затык, сколько подобных процессов он может выполнять одновременно. Я предполагаю, тема не изученная, надо восполнить пробела.
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 15:21
бесконечно сколько
но в одном треде
ну точнее пока очередь не кончится
ariyDezmond
@ariyDezmond
Mar 11 2016 15:26
всем привет. в общем нужно в админке(sleeping owl. в форме создания продукта) сделать айтем(выпадающий список). проблема в том что этот список из другой таблицы. итак вопрос! как получить список из другой таблицы и засунуть в выпадающий список для выбора одного из пунктов этого списка?
KarmaBot
@KarmaBot
Mar 11 2016 15:26
@ariyDezmond, привет, как настроение?
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:01
где хранить сервис-контейнеры?
dihalt
@dihalt
Mar 11 2016 16:13
@arman-kazgozhin а можно по подробнее про сессии и из связь с запросами?
JhaoDa
@jhaoda
Mar 11 2016 16:19
Опять народ собрался создавать и хранить какие-то сервис-контейнеры...
Alexander Popov
@ruelephant
Mar 11 2016 16:20
где?
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:25
Я имел ввиду такие классы, которые и не модель и не контроллер, например класс для работы с почтой, для обработки изображений и т.д. Где такие лучше хранить?
Alexander Popov
@ruelephant
Mar 11 2016 16:28
в любом месте
у меня есть папка app/classes
или сделай свой пакет композер с локальной репы...
последний вариант самый кашерный, но геморой...
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:29
А сервис-контейнер предназначен для связывания какого-то класса с приложением? Чтобы затем его просто получать через App::make() ?
Alexander Popov
@ruelephant
Mar 11 2016 16:29
не только
ты можешь классы использовать напрямую в контроллерах напрямую
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:29
да, через DI, тогда для чего еще сервис-контейнер?
Alexander Popov
@ruelephant
Mar 11 2016 16:30
например тебе надо сделать singleton
проще сделать через сервис контейнер, чем думать свою реализацию
вообще объясню проще
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:31
а для чего чаще всего применяют сервис-контейнеры?
Alexander Popov
@ruelephant
Mar 11 2016 16:31
сервис-контейнер - expert mode
прямой вызов - лайт
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:32
под прямым вызовом подразумевается DI ?
Alexander Popov
@ruelephant
Mar 11 2016 16:33
ну как di так и new
тебя тут ничего не ограничивает по сути
сервис-провайдеры часто используются для регистрации отношения интерфейс-реализация
посмотри главу - http://laravel.su/docs/5.0/container
"СВЯЗЫВАНИЕ ИНТЕРФЕЙСА С РЕАЛИЗАЦИЕЙ"
$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');
вот самый частый кейс
и в DI используют App\Contracts\EventPusher
потом если надо они в 1 месте (в сервис контейнере) правят и уже другой класс на реализации
@M-a-x-i-m
JhaoDa
@jhaoda
Mar 11 2016 16:37
@M-a-x-i-m это называется сервис-провайдер
Alexander Popov
@ruelephant
Mar 11 2016 16:38
и да, сервис-провайдер
JhaoDa
@jhaoda
Mar 11 2016 16:38
@M-a-x-i-m сервис-провайдеров может быть сколько угодно, а сервис-контейнер — один и создавать его не надо
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:43

и да, сервис-провайдер

т.е. связь реализации с интерфейсом, создание singleton - это сервис провайдеры? Так что-же такое сервис контейнер? В доке написано "средство для управления зависимости", не понял этот термин. Хочу точно понять что есть сервис провайдер, а что сервис-контейнер, не получается пока

JhaoDa
@jhaoda
Mar 11 2016 16:44
@M-a-x-i-m сервис-провайдер предназначен для инициализации каких-то компонентов приложения, например
Alexander Popov
@ruelephant
Mar 11 2016 16:45
Service Container (сервис-контейнер, ранее IoC-контейнер) - Это суть вещь которая занимается инициализацией, код ядра. Грубо говорят загрузчик
JhaoDa
@jhaoda
Mar 11 2016 16:45
И в частности, он может связывать интерфейсы с реализациями и просто регистрировать классы в сервис-контейнере
Alexander Popov
@ruelephant
Mar 11 2016 16:45
а вот сервис провайдер, это класс для регистрации
@jhaoda поправь если не прав
JhaoDa
@jhaoda
Mar 11 2016 16:45
@ruelephant «Это суть вещь которая занимается инициализацией, код ядра. Грубо говорят загрузчик» — херня
Alexander Popov
@ruelephant
Mar 11 2016 16:45
ну он же непосредственно занимается загрузкой?
не будем лезть в ядро глубоко...
JhaoDa
@jhaoda
Mar 11 2016 16:46
@ruelephant загрузкой чего?
Alexander Popov
@ruelephant
Mar 11 2016 16:47
загрузкой библиотек по требованию, у меня контроллер например требует App\Contracts\EventPusher через DI, он и подсовывает его туда
JhaoDa
@jhaoda
Mar 11 2016 16:47
@ruelephant а при чем тут код ядра?
Alexander Popov
@ruelephant
Mar 11 2016 16:47
ну реализация Di это "часть ядра" :)
где "ядро" это все что НЕ приложение
и поставляется из коробки
для упрощения
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:49

И в частности, он может связывать интерфейсы с реализациями и просто регистрировать классы в сервис-контейнере

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

JhaoDa
@jhaoda
Mar 11 2016 16:49
@M-a-x-i-m никакой, тебе его ларавель предоставляет
Alexander Popov
@ruelephant
Mar 11 2016 16:49
@M-a-x-i-m ты его не увидишь, он выше твоего приложения
реализовывать его не надо
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:50
о как
JhaoDa
@jhaoda
Mar 11 2016 16:50
@M-a-x-i-m ты вообще примеры смотрел в доке?
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:50
@jhaoda угу :(
Alexander Popov
@ruelephant
Mar 11 2016 16:50
@M-a-x-i-m у тебя в доке дается "SERVICE CONTAINER" но не для того что бы ты его "трогал", а что бы ты понимал как его использовать
конкретно public function __construct(Mailer $mailer) уже использование SERVICE CONTAINER
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:51
Внедрением зависимотстей занимается сервис-контейнер?
Alexander Popov
@ruelephant
Mar 11 2016 16:51
да
JhaoDa
@jhaoda
Mar 11 2016 16:51

@M-a-x-i-m когда ты в провайдере пишешь

$this->app->singleton('Riak\Contracts\Connection', function ($app) {
return new Connection(config('riak'));
});

то $this->app это и есть контейнер

Alexander Popov
@ruelephant
Mar 11 2016 16:51
@jhaoda не надо....
ты сейчас запутаешь
JhaoDa
@jhaoda
Mar 11 2016 16:51
@ruelephant слон, иногда лучше жевать
Alexander Popov
@ruelephant
Mar 11 2016 16:52
что?
я стараюсь не запутать, максимально все упроситить
JhaoDa
@jhaoda
Mar 11 2016 16:52
@ruelephant ну-ну
Alexander Popov
@ruelephant
Mar 11 2016 16:52
ты видишь человек совсем плавает, сейчас пойдут вопросы, придется жевать ядро..
а там совсем все не так просто как кажется
Pavel Kuzmin
@s00d
Mar 11 2016 16:53

Всем привет. Может мне кто-то объяснить почему:

 Schema::table('table', function ($table) {
                $table->integer('balance', 100)->nullable();
});

лара зачем-то пытается это поле сделать auto_increment primary key и разумеется орет:
Multiple primary key defined (SQL: alter table `table` add `balance` int null auto_increment primary key)

KarmaBot
@KarmaBot
Mar 11 2016 16:53
@Virus191288, привет =)
JhaoDa
@jhaoda
Mar 11 2016 16:53
@ruelephant я-то вижу, а ты вот ерунду говоришь
Alexander Popov
@ruelephant
Mar 11 2016 16:53
где конкретно?
JhaoDa
@jhaoda
Mar 11 2016 16:53
@ruelephant я тебе выше сказал, где. Буфер маловат, забыл?
Alexander Popov
@ruelephant
Mar 11 2016 16:54
я тебе ответил, а ты проигнорировал
JhaoDa
@jhaoda
Mar 11 2016 16:54
@ruelephant класс Application, если ты не знал, это и есть контейнер
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:54
т.е. сервис-контейнер, это тот контейнер, который содержит в себе различные сервисы, созданные через сервис-провайдеры?
JhaoDa
@jhaoda
Mar 11 2016 16:54
@M-a-x-i-m да
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:55
@ruelephant @jhaoda спасибо большое, понял
KarmaBot
@KarmaBot
Mar 11 2016 16:55
Спасибо (+1) для @ruelephant принято! Текущая карма +57.
Спасибо (+1) для @jhaoda принято! Текущая карма +709.
Alexander Popov
@ruelephant
Mar 11 2016 16:56
спасибо @jhaoda
KarmaBot
@KarmaBot
Mar 11 2016 16:56
Карма @jhaoda не потревожена. Слишком часто её пошатывали.
JhaoDa
@jhaoda
Mar 11 2016 16:56
@M-a-x-i-m так же замечу, что помещать что-то в контейнер можно где угодно, но для порядка это принято делать в провайдерах
Alexander Popov
@ruelephant
Mar 11 2016 16:56
фаг
@jhaoda по поводу Application == Контейнер честно говоря не вникал, есть ли там прослойки или нет еще
JhaoDa
@jhaoda
Mar 11 2016 16:57
А еще в контейнер можно запихнуть строки, например
$this->app->instance('dir.upload', 'attachments');
echo app('dir.upload');
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 16:58
@jhaoda в общем это такой ящик, для хранения различного функционала
JhaoDa
@jhaoda
Mar 11 2016 16:58
@M-a-x-i-m именно
Alexander Popov
@ruelephant
Mar 11 2016 17:01
@jhaoda старый извращенец
JhaoDa
@jhaoda
Mar 11 2016 17:01
@ruelephant что опять?
Alexander Popov
@ruelephant
Mar 11 2016 17:01
в контейнер - строки
JhaoDa
@jhaoda
Mar 11 2016 17:01
А, ну т.е. ларавель можно, а мне — нет?
Alexander Popov
@ruelephant
Mar 11 2016 17:01
ларе много что прощают
включая вызовы __CALL
JhaoDa
@jhaoda
Mar 11 2016 17:02
@ruelephant что-то ты мне какую-то дичь втираешь
Alexander Popov
@ruelephant
Mar 11 2016 17:03
да нет, вызовы __CALL там есть
и много
Artemiy Ryabinkov
@Furdarius
Mar 11 2016 17:03

Народ, подскажите, код обработки входных данных лучше где держать? В реквестах может или в сервисе отдельном для каждого контроллера?

Сейчас просто в контроллере куча такого кода:

$include = array_filter(explode(',', $request->input('include')), 'strlen');
        $orders = collect(array_filter(explode(',', $request->input('order')), 'strlen'))
            ->map(function($item) {
                $data = explode('-', $item);
                return [
                    'name'  => $data[0],
                    'order' => $data[1]
                ];
            });
JhaoDa
@jhaoda
Mar 11 2016 17:03
@ruelephant :( ты меня прям расстраиваешь
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 17:04
а какие еще ящики есть в laravel, кроме app? Я так понимаю в освном только app и используется?
JhaoDa
@jhaoda
Mar 11 2016 17:04
Ты мне дичь втираешь про двойные стандарты: ларавель можно, а другим нельзя — чо за бред?
@M-a-x-i-m я же сказал — контейнер один
Maxim Morozov
@m-a-x-i-m
Mar 11 2016 17:04
@jhaoda аа, пардон
Alexander Popov
@ruelephant
Mar 11 2016 17:05
@jhaoda ну это плохой код на самом деле
JhaoDa
@jhaoda
Mar 11 2016 17:05
@Furdarius форм реквест, например
Alexander Popov
@ruelephant
Mar 11 2016 17:05
сам знаешь, с производительностью не очень
JhaoDa
@jhaoda
Mar 11 2016 17:05
@Furdarius или job
Alexander Popov
@ruelephant
Mar 11 2016 17:05
500 мс КАРЛ!
JhaoDa
@jhaoda
Mar 11 2016 17:05
@Furdarius или сервис
ruelephant @ruelephant сел на старую пластинку
JhaoDa
@jhaoda
Mar 11 2016 17:05
@ruelephant послушай, ты болен
Alexander Popov
@ruelephant
Mar 11 2016 17:06
чем?
Artemiy Ryabinkov
@Furdarius
Mar 11 2016 17:06
@jhaoda Понятно, спасибо
KarmaBot
@KarmaBot
Mar 11 2016 17:06
Спасибо (+1) для @jhaoda принято! Текущая карма +710.
Alexander Popov
@ruelephant
Mar 11 2016 17:06
@jhaoda ну реально медленно
JhaoDa
@jhaoda
Mar 11 2016 17:06
@ruelephant и вообще я не понял, что, в мире Go плохо кормят?
Alexander Popov
@ruelephant
Mar 11 2016 17:06
пришлось немного откатиться на пых, го слишком долго
сейчас работа с LDAP, там нет готового пакета
а реализовывать протокол с нуля, не ах идея
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:07
@ruelephant в любом DI можно строки в контейнер пихать
Alexander Popov
@ruelephant
Mar 11 2016 17:07
@SerafimArts я не говорю что нельзя
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:07
начиная от спринга в джаве
Alexander Popov
@ruelephant
Mar 11 2016 17:07
@SerafimArts я говорю что наркомания использовать DI для этого
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:07
заканчивая phpdi
JhaoDa
@jhaoda
Mar 11 2016 17:08
Да все лохи, кроме Слона
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:08
строки - это такой же тип данных
JhaoDa
@jhaoda
Mar 11 2016 17:08
Он один «знает, как»™
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:08
в качестве его интерфейса используется алиас
Alexander Popov
@ruelephant
Mar 11 2016 17:08
микроскоп - это такой же тяжелый предмет
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:08
т.к. в php это примитивы
Alexander Popov
@ruelephant
Mar 11 2016 17:08
what?
JhaoDa
@jhaoda
Mar 11 2016 17:08
Ладно, я пойду, вы тут только не до крови, окэ?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:09
любой примитив - это интерфейс примитива
Alexander Popov
@ruelephant
Mar 11 2016 17:09
в пыхе?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:09
в любом языке
Alexander Popov
@ruelephant
Mar 11 2016 17:09
ну в пыхе насколько я знаю, на уровне ядра там полная ересь со строками
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:10
@ruelephant ты плохо знаешь пых
Alexander Popov
@ruelephant
Mar 11 2016 17:10
я сужу по функциям работы со строками
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:10
для строк используется zend_string, который лежит в стеке
Alexander Popov
@ruelephant
Mar 11 2016 17:10
они идиотичны
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:10
так что считай, что это как интеджер пул в джаве
не суть
Alexander Popov
@ruelephant
Mar 11 2016 17:11
в яве строка это массив
если мне память не изменяет
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:11
у примитивов есть виртуальные методы рендера и операторов
Alexander Popov
@ruelephant
Mar 11 2016 17:11
массив символов
остальное все сахар
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:11
в пыхе строка это массив байт
и это намного лучше, чем массив символов, т.к. нет проблем с кодировками
Alexander Popov
@ruelephant
Mar 11 2016 17:12
strlen? :)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:12
strlen возвращает количество байт
Alexander Popov
@ruelephant
Mar 11 2016 17:12
у ней есть проблемы с кодировками
если мы говорим про "удобство"
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:13
но при опции mb.override=2 он подключает драйвер мультибайтовой поддержки
так что начинает возвращать количество символов
Alexander Popov
@ruelephant
Mar 11 2016 17:13
дадада
а еще есть mb_strlen
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:13
но это нафиг не нужно

а еще есть mb_strlen

который подключает драйвер исключительно для данной функции

да
Alexander Popov
@ruelephant
Mar 11 2016 17:13
но что-то мы отвлеклись
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:14
это нужно, потому что он тяжёлый
Alexander Popov
@ruelephant
Mar 11 2016 17:14
обсуждали же "больные люди хранят строки в DI"
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:14
для сравнения
пых весит 8 метров
Alexander Popov
@ruelephant
Mar 11 2016 17:14
DI же хранит зарегистированные ассоциации у себя в массиве?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:14
драйвер для строк 24 с половиной метра
@ruelephant да
Alexander Popov
@ruelephant
Mar 11 2016 17:15
ну вот, вместо переменной, мы получаем массив
+ мета еще небось
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:16
чо?
какой переменной?
Alexander Popov
@ruelephant
Mar 11 2016 17:16
мы же рассматриваем идиотичную ситуацию?
где вместо $test = "string"
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:16
я не понимаю что мы рассматриваем
Alexander Popov
@ruelephant
Mar 11 2016 17:16
вызываем DI
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:17
а тут ['test' => 'string']
Alexander Popov
@ruelephant
Mar 11 2016 17:17
нефига
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:17
что ничем не отличается
Alexander Popov
@ruelephant
Mar 11 2016 17:17
а meta ему не надо?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:17
какая meta?
Alexander Popov
@ruelephant
Mar 11 2016 17:17
ну фиг его знает, место регистрации для отладки
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:17
зачем?
Alexander Popov
@ruelephant
Mar 11 2016 17:18
я не знаю, просто эта штука не для строк, она легко может утащить к себе что-то "до кучи"
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:18
почему не для строк?
давай возьмём ОО язык любой
di.singleton(MyStringInterface.class, new String("sdafsdf"));
например джаву
ну так почему не для строк?
Alexander Popov
@ruelephant
Mar 11 2016 17:20
ну может быть это моя параноя
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:20

в чём отличия:
di.singleton(MyStringInterface.class, new String("sdafsdf"));

от

di.singleton(AuthUserInterface.class, new User(...));

Alexander Popov
@ruelephant
Mar 11 2016 17:20
но я боюсь он лишную память пожрет
ну нет, тут ты лукавишь
в PHP это две большие разницы
стандартный примитив и кастомный
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:22
что?
кастомный?
примитив только один бывает
считай что это тоже самое что в джаве
т.к. работает точно так же
один в один
Alexander Popov
@ruelephant
Mar 11 2016 17:23
в пыхе строки это не классы
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:23
это структуры
тогда и в джаве числа это не классы
Alexander Popov
@ruelephant
Mar 11 2016 17:23
ява это отдельная песня
но да, числа вроде бы как низкоуровневый примитив
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:24
ну тогда и в руби символы это не классы
@ruelephant нет
это объект
который точно так же работает на стеке
Alexander Popov
@ruelephant
Mar 11 2016 17:24
но в пыхе то они по разному работают
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:24
читай про интеджер пул в джаве, например
@ruelephant в пыхе тоже есть этот самый стек
я уже говорил
Alexander Popov
@ruelephant
Mar 11 2016 17:25
да но..
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:25
а структура называется zend_string
Alexander Popov
@ruelephant
Mar 11 2016 17:25
нельзя сравнивать zend_string с userClass()
они на разном уровне
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:25
почему?
и что?
это такая же структура
у неё есть такой же интерфейс
просто недоступный из языка
Alexander Popov
@ruelephant
Mar 11 2016 17:26
классы то как обрабатываются?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:26
так же
на стеке
и есть классовый пулл
точнее нет
есть объектный пул
Alexander Popov
@ruelephant
Mar 11 2016 17:26
там какая то особая уличная магия
я краем уха слышал
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:26
по-этому в пыхе new Class === new Class
т.к. они выдираются из одного места в памяти
и адреса у них одинаковые
Alexander Popov
@ruelephant
Mar 11 2016 17:27
ээм?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:27
и в джаве 42 == 42
Alexander Popov
@ruelephant
Mar 11 2016 17:27
new Class === new Class???
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:27
ну да
Alexander Popov
@ruelephant
Mar 11 2016 17:27
они же разные объекты вернут
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:27
нет
ну т.е. это ты думаешь что разные
а в реальности тот же самый
потому что пул, Карл
Alexander Popov
@ruelephant
Mar 11 2016 17:28

$a = new Class;
$a->test = 'failed';
$b = new Class;
$b->test = 'passed';

var_dump($a, $b);

Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:28
это уже разные
ты видишь что я написал?
и что ты
и в джаве тоже 42 !== 23
прикинь
Alexander Popov
@ruelephant
Mar 11 2016 17:29
ладно к твоему примеру
return new Class === new Class; // TRUE?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:29
да
echo spl_object_hash(new \StdClass) === spl_object_hash(new \StdClass);
проверяй где угодно
Alexander Popov
@ruelephant
Mar 11 2016 17:30
но нет никакой разницы же, в каком порядке они вызываются
это две одинаковые конструкции
$a = new Class;
$b = new Class;
return new Class === new Class; // TRUE?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:30
да
иди изучай ядро пыха
я тебе не гугл =)
Alexander Popov
@ruelephant
Mar 11 2016 17:31
но по твоей логике если они возращают один адрес
значит $a $b должны на одно и то-же смотреть
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:31
да
Alexander Popov
@ruelephant
Mar 11 2016 17:31
но этот пример же работает - $a = new Class;
$a->test = 'failed';
$b = new Class;
$b->test = 'passed';
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:32
потому что идёт инкремент ссылок в zval
Alexander Popov
@ruelephant
Mar 11 2016 17:32
ссылок на что?
адрес то один
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:32
а точнее zval внутренний ссылается на внешний и при изменении оного меняется адресация у переменных
@ruelephant адрес до смены был один
после изменения уже другой
твой Кеп
Alexander Popov
@ruelephant
Mar 11 2016 17:33
после изменения свойства ты хочешь сказать?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:33
меняя поле (а не свойство) - ты меняешь объект
а при смене объекта меняется его адрес
точнее он вытаскивается из стека
Alexander Popov
@ruelephant
Mar 11 2016 17:34
тогда не меняю, а клонирую
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:34
точно так же, как работает оператор clone
Alexander Popov
@ruelephant
Mar 11 2016 17:34
и так каждый раз происходит что ли?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:34

тогда не меняю, а клонирую

@ruelephant тебе это знать не нужно

@ruelephant не знаю, проверь
и расскажи
Alexander Popov
@ruelephant
Mar 11 2016 17:35
$a = new Class; // Address - 1
$a->test = 'failed'; // Address - 2
$a->test = 'passed'; // Address - 3
по твоей теории получается
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:35
я этого не говорил
и таких теорий не выдвигал
Alexander Popov
@ruelephant
Mar 11 2016 17:36
ну здрасти
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:36
т.к. знаю, что это всё не так работает
я сказал что два объекта с одинаковыми внутренностями занимают один и тот же адрес
и то, возможны нюансы
но одинаковые строки всегда занимают одну и ту же ячейку в памяти
в отличие от объектов
Alexander Popov
@ruelephant
Mar 11 2016 17:37
я думаю это справедливо только если они только что созданы, но не приведены к такому состоянию
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:38
проверь, яж сказал
Alexander Popov
@ruelephant
Mar 11 2016 17:38
леееень :)
Vlad Shcherbin
@VladShcherbin
Mar 11 2016 17:38
весёлый вечер пятницы?)
Alexander Popov
@ruelephant
Mar 11 2016 17:38
да
Vlad Shcherbin
@VladShcherbin
Mar 11 2016 17:38
кто побеждает?)
Alexander Popov
@ruelephant
Mar 11 2016 17:39
как всегда
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:39
@ruelephant а схренали тогда я должден тебе что-то рассказывать?
Alexander Popov
@ruelephant
Mar 11 2016 17:39
побеждает пятница
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:39
если тебе лень
Alexander Popov
@ruelephant
Mar 11 2016 17:39
может ты любишь расказывать
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:39
хочешь чего-то узнать, пожалуйста, плати
информация и опыт - это деньги
короче
не неси пурги по поводу того, что строки не могут являться частью DI контейнера
т.к. интерфейс, под которым они объявляются полностью им соответствует
Alexander Popov
@ruelephant
Mar 11 2016 17:41
РРРРР!!!
моя параноя не дает покоя
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:41
что соответсвует идеям DI
Alexander Popov
@ruelephant
Mar 11 2016 17:47
ну ладно не будем холивать в кровь в священную пятницу
:)
projct1
@projct1
Mar 11 2016 17:52
чуваки, я тока ща начинаю знакомство с галпом, в связи с этим вопрос: надо ли на данном этапе развития сразу юзать элексир? или лучше сначала с голым галпом поработать?
Aleh Kashnikau
@mkusher
Mar 11 2016 17:53
@SerafimArts не так же
$a = new \stdClass;
$b = new \stdClass;
тут два разных в памяти объекта
echo sprintf("%s\n%s", spl_object_hash(new \stdClass), spl_object_hash(new \stdClass));
здесь одно и тоже значение из-за сборщика мусора - создали объект, получили хэш, просрали ссылку, коллектор почистил,
потом опять новый объект, получили ссылку и т.д.
Oscar
@OSDDQD
Mar 11 2016 17:54
@rorc дело вкуса, но зачем отказываться от эликсира? Сахарок же.
Aleh Kashnikau
@mkusher
Mar 11 2016 17:56
может меня конечно переклинило, но емнип вот так
что касается copy-on-write то это же про всякое говно типа массивов и строк
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:56
@mkusher ну значит это исключение
Aleh Kashnikau
@mkusher
Mar 11 2016 17:57
@SerafimArts что именно?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:57
вполне возможна иная ситуация при включении опкеша и прочих приблуд
Aleh Kashnikau
@mkusher
Mar 11 2016 17:58
опкеш же не меняет порядок создания и управления объектами о.о
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 17:59
ну блин, мало ли что
а хотя хрен
например APC берёт из кеша данные для getName метода объекта рефлексии полей
простыми словами была бага в getName() у APC
так что кешеры могут управлять всем этим
в теории
на практике - хз
Aleh Kashnikau
@mkusher
Mar 11 2016 18:01
так это ж вообще не то
я про этот баг не знаю, не читал, но по описания опять же
просто старые опкоды посылались
кешеры говорят что запускать
а не как
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:02
@mkusher уверен?
и они не могут оптимизить опкод для ускорения работы, даже в теории?
Alexander Popov
@ruelephant
Mar 11 2016 18:02
я помню как то с кешером хлебнул горя
он закешировал результат функции автолоадинга
что называется "удачной отладки"
Aleh Kashnikau
@mkusher
Mar 11 2016 18:03
вопрос про оптимизацию справедливый
Oscar
@OSDDQD
Mar 11 2016 18:03
@ruelephant эм? Опкод-кешер закешировал результаты? Wtf?
Alexander Popov
@ruelephant
Mar 11 2016 18:03
я не говорил про опкод кешер
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:04
лол
Alexander Popov
@ruelephant
Mar 11 2016 18:04
шо?
Aleh Kashnikau
@mkusher
Mar 11 2016 18:04
хз, конечно они могут че угодно с опкодами делать, но хоть один делает?
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:04
перевожу на русский: Я добавил в композер новую зависимость, а апдейт не сделал
Oscar
@OSDDQD
Mar 11 2016 18:04
Да не, ничо, просто у тебя странные взгляды на логические цепочки :D
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:04
@mkusher ну вот этого я не знаю =)
Aleh Kashnikau
@mkusher
Mar 11 2016 18:05
надо почитать, никогда про это не думал
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:05
вообще - хорошо бы если бы было
Alexander Popov
@ruelephant
Mar 11 2016 18:05
@SerafimArts там же весь кеш автоматический
Aleh Kashnikau
@mkusher
Mar 11 2016 18:05
ну хз насколько хорошо, честно говоря
Alexander Popov
@ruelephant
Mar 11 2016 18:05
я даже не знаю как его "очистить"
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:05
ну статический анализ и тюнинг - это хорошо
Aleh Kashnikau
@mkusher
Mar 11 2016 18:05
если с этим сам рантайм не осиливается, то кешеры-то как :))
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:05
например разворот небольших циклов
Aleh Kashnikau
@mkusher
Mar 11 2016 18:05
так это до опкодов происходит
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:05
или "убирание" неюзабельных переменных
@mkusher уверен?
Aleh Kashnikau
@mkusher
Mar 11 2016 18:06
ну в хороших штуках это в этапе компилирования
происходит
в пхп я не помню
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:06
это gcc так делает, ага
Oscar
@OSDDQD
Mar 11 2016 18:06
@ruelephant автоматические кеши? Они обычно по ttl живут.
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:06
но php != gcc
Aleh Kashnikau
@mkusher
Mar 11 2016 18:06
не только gcc
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:06
ну блин
Alexander Popov
@ruelephant
Mar 11 2016 18:06
@OSDDQD ну по ttl и сигнатуре функции
Aleh Kashnikau
@mkusher
Mar 11 2016 18:06
ну на этапе опкодов думать про оптимизации боль, кмк
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:07
я к тому, что это один из вариантов оптимизации
Oscar
@OSDDQD
Mar 11 2016 18:07
@ruelephant уточню на всякий случай, мы про опкод говорим?)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:07
или например видишь, что функция используется один или два раза - встраиваешь
Aleh Kashnikau
@mkusher
Mar 11 2016 18:07
так блин, это ж опять не на этапе опкодов думать
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:07
почему?
Aleh Kashnikau
@mkusher
Mar 11 2016 18:07
лучше было бы
да неудобно потому что)
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:08
т.е. после построения ast чтоль? =)
Alexander Popov
@ruelephant
Mar 11 2016 18:08
@OSDDQD что ты подрузомеваешь под "опкод"?
Aleh Kashnikau
@mkusher
Mar 11 2016 18:08
ну где-то там поудобнее
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:08
ну хз
никогда таким не занимался
ыыы, в теории же опкод можно перевести в любой другой
jvm или асм
Aleh Kashnikau
@mkusher
Mar 11 2016 18:09
примерно, когда пытаемся создавать опкоды по операциям, мы как раз держим всю инфу
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:09
:D
Alexander Popov
@ruelephant
Mar 11 2016 18:09
@SerafimArts @OSDDQD у меня стоял банальный APC с настройками по умолчанию
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:10
у меня opcache в язык встроен
начиная с 5.5
и ничего не ломалось
:D
Alexander Popov
@ruelephant
Mar 11 2016 18:10
это как?
Oscar
@OSDDQD
Mar 11 2016 18:10
@ruelephant ну OPCache появился в пхп же
Alexander Popov
@ruelephant
Mar 11 2016 18:10
не вкурсе
Alexander Popov
@ruelephant
Mar 11 2016 18:11
я обычно смотрю новинки только если они нужны для бизнес логики
остальное время я отсыпаюсь :)
Oscar
@OSDDQD
Mar 11 2016 18:11
@SerafimArts кстати, как он на практике OPCache? Просто на всех живых проектах либо APC, либо xCache
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:11

я обычно смотрю новинки только если они нужны для бизнес логики

@ruelephant Новые версии Битрикса чтоль разглядываешь?

Alexander Popov
@ruelephant
Mar 11 2016 18:11
не с встроенным opcache не работал
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:11
@OSDDQD karma.laravel.su
Alexander Popov
@ruelephant
Mar 11 2016 18:11
@SerafimArts я пишу на ларе
Aleh Kashnikau
@mkusher
Mar 11 2016 18:12
черт, это ж чат ларавел, как я вообще сюда попал о.о
Alexander Popov
@ruelephant
Mar 11 2016 18:12
нежданчик
Oscar
@OSDDQD
Mar 11 2016 18:12
Вот это поворот
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:12
@mkusher внезапно
@mkusher а где ты надеялся это обсудить всё? :D
Oscar
@OSDDQD
Mar 11 2016 18:13
@ruelephant звучит как отдельный ЯП
Alexander Popov
@ruelephant
Mar 11 2016 18:13
https://pp.vk.me/v375/assets/thumbnails/8ee188d169461465.320.vk.jpg
Aleh Kashnikau
@mkusher
Mar 11 2016 18:13
ну, симфони там чатик)
Oscar
@OSDDQD
Mar 11 2016 18:13
@mkusher ну да, те кто используют симфони, им без кеширование то и проект толком не запустить :D
Alexander Popov
@ruelephant
Mar 11 2016 18:14
@OSDDQD ну фактически это как руби и рельсы
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:14
@Big-Shark @Enleur @fesor перелезайте сюда, тут симфони чатик нужен+
:D
Alexander Popov
@ruelephant
Mar 11 2016 18:14
NOOO!
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:14
В симфони чатике про вебпак болтают
Oscar
@OSDDQD
Mar 11 2016 18:14
@ruelephant да годный же фреймворк так то, если не считать многословность и описывание каждого геттера и сеттера
Kirill Nesmeyanov
@SerafimArts
Mar 11 2016 18:15
@OSDDQD ну так это ядро считай
с идеальными интерфейсами
а поверх него можно накидать абстракций для более удобной работы под конкретные задачи
Oscar
@OSDDQD
Mar 11 2016 18:15
@SerafimArts да, я на самом деле рад, что сперва работал с симфони и только уже после познакомился с ларавелем
Alexander Popov
@ruelephant
Mar 11 2016 18:15
не идеальное ядро, с идеальным интерфейсом :)
Kirill Nesmeyanov
@SerafimArts