These are chat archives for LaravelRUS/chat

5th
Mar 2015
Maxim
@Big-Shark
Mar 05 2015 01:18
Можно у нас собраться)
LaravelButler

Приветствуем Вас, @nxeed, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

slider23
@slider23
Mar 05 2015 05:22
Точнее, по пути к вам :)
slider23
@slider23
Mar 05 2015 05:28
@Rhincodon если ты прям серьёзно настроен переводить книгу, то я её просто могу купить.
По поводу кэширования в репозиториях - имхо кэшировать можно и нужно. Если не там, вообще, то где ?
LaravelButler

Приветствуем Вас, @Medvezhopok, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Andrey
@Quiss
Mar 05 2015 07:26
надо просто составить табличку кто где находится
и выбрать город где получится самая большая сходка
а остальные по возможности подтянуться :)
Maxim
@Big-Shark
Mar 05 2015 07:26
Думаю это однозначно Москва)
Andrey
@Quiss
Mar 05 2015 07:27
сейчас узнаем
Константин Брызгалин
@constb
Mar 05 2015 07:46
http://prntscr.com/6cwkmj отлично я считаю =)
всем привет из томска
Andrey
@Quiss
Mar 05 2015 07:50
ещё не вечер)
Denis Isaychenko
@Rhincodon
Mar 05 2015 08:08
@slider23 та купить то я и сам могу, разрешение автора на перевод нужно всегда брать, это морально правильно. :)
я как то по типографике этот ресурс хотел перевести http://practicaltypography.com/ , списался с автором, а он сказал что типа его основной доход с продажи шрифтов и сайт помогает ему их продавать, а делать кириллическую версию шрифтов он пока не хочет, и запретил переводить. :)
Orel
@2byte
Mar 05 2015 09:08
Блах жив)
Второй вопрос просто жесть
g1nc
@g1nc
Mar 05 2015 09:44

Добрый день всем, подскажите как сделать сортировку того что вытягивается через отношения?
Есть модель Day у нее прописано отношение

public function lessons()
{
    return $this->hasMany('Lesson');
}

как вытягивать все Lesson используя $day->lessons, но попутно сортировать выборку по полю 'number' таблицы lessons?

NelinD
@NelinD
Mar 05 2015 09:45
сортировать lessons?
@grimmH ??
пересоздали, переголосуйте плз
g1nc
@g1nc
Mar 05 2015 09:49
да, вроде через $days->lessons->sortBy() работает
NelinD
@NelinD
Mar 05 2015 09:51
@grimmH это ты сортируешь коллекцию
еще как вариант
@grimmH
$days = Day::whereHas('lessons', function($q)
{
    $q->orderBy('number', 'desc');

})->get();
выборка приходит отсортированной от бд
g1nc
@g1nc
Mar 05 2015 09:52
спасибо
Orel
@2byte
Mar 05 2015 09:56
mongoDB кто юзает ?
vanchelo @vanchelo юзает
Andrey
@Quiss
Mar 05 2015 09:57
@vanchelo много чего юзает :D
Orel
@2byte
Mar 05 2015 09:57
)
vanchelo @vanchelo юзает много, но разбирается мало
SerafimArts @SerafimArts не понимает как так писать
SerafimArts @SerafimArts враки, уже умеет
Orel
@2byte
Mar 05 2015 10:00
@vanchelo посмотрел, понравилась. Но что если юзер имеет посты, которые комментили юзеры, комменты так же содержать данные этих юзеров, а юзер поменял свои данные или был удален вовсе, это гулять по коллекциям нужно? Читал что можно ссылки делать, но лучше не делать.
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:01
можно как в мускуле
Quiss @Quiss ^_^
Andrey
@Quiss
Mar 05 2015 10:01
я тож так умею xD
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:01
быстро учитесь)
Andrey
@Quiss
Mar 05 2015 10:01
@vanchelo шо забыл, с тобой же разбирались)
при боте )
Роман Сохарев
@greabock
Mar 05 2015 10:02
есть тут поYiicты?
NelinD
@NelinD
Mar 05 2015 10:02
This message was deleted
Orel
@2byte
Mar 05 2015 10:02
@vanchelo ну то, что надо редактировать, хранишь в других коллекциях и подтягиваешь из них ?
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:03
@2byte да
но например то что принадлежит только одной сущности можно и нужно хранить как embed данные
например у человека 100 телефонов
ты их хранишь не в отдельной таблице а как коллекцию у конкретного человека
Orel
@2byte
Mar 05 2015 10:05
@vanchelo Ага вот это и понравилось
censoredgit
@censoredgit
Mar 05 2015 10:05
@greabock есть
Роман Сохарев
@greabock
Mar 05 2015 10:06
@censoredgit в личку напишу
Orel
@2byte
Mar 05 2015 10:07
@vanchelo И как вообще впечатление, или юзаешь ее только для определенных проектов ?
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:09
юзал её только здесь http://success.pp.ua/vanchelo/entries
Andrey
@Quiss
Mar 05 2015 10:12
чет как-то защита храмает)
по домену аутентификация)
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:12
какая защита?
Andrey
@Quiss
Mar 05 2015 10:13
эм) я думал доступ должен быть по паролю
исходя из "http://success.pp.ua"
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:14
а ты все видишь записи?
Andrey
@Quiss
Mar 05 2015 10:14
угу
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:14
откуда знаешь?
я и говорю
должно было быть редирект на /login
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:14
это не все)
не должно)
это публичные
Andrey
@Quiss
Mar 05 2015 10:15
это были подозрения)
ладно уговорил, дай мне свои куки
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:15
у меня тоже самое что и у тебя
этот список одинаков для всех
Orel
@2byte
Mar 05 2015 10:19
@vanchelo Больше не на что не годна ?)
Brezhnev Ivan
@vanchelo
Mar 05 2015 10:19
пока никто не просил)
а для себя я люблю что-то новое)
LaravelButler

Приветствуем Вас, @alastairparagas, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

LaravelButler

Приветствуем Вас, @thangdq88, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

hvarts
@hvarts
Mar 05 2015 12:33
Ребят, дайте ссылку на генератор форм из лары 4, пожалуйста
Alexander Popov
@ruelephant
Mar 05 2015 12:36
а вот и слоныыы :)
hvarts
@hvarts
Mar 05 2015 12:37
@ruelephant ?
Alexander Popov
@ruelephant
Mar 05 2015 12:38
нет у меня ссылки на генератор
hvarts
@hvarts
Mar 05 2015 12:38
@ruelephant плохо, название бы хотя бы узнать..
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:38
former
slider23
@slider23
Mar 05 2015 12:39
Гугл на laravel form generator предлагает очень много разного. Ничего не юзал.
Alexander Popov
@ruelephant
Mar 05 2015 12:39
а зачем оно надо?
этим должен заниматся фронденд
hvarts
@hvarts
Mar 05 2015 12:40
@ruelephant ну просто в ларе 4 была такая фича
@ruelephant я к ней привык
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:40
@ruelephant ты всегда только данные отдаешь на клиента?
Alexander Popov
@ruelephant
Mar 05 2015 12:40
а что еще можно отдать на клиент?
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:40
ясно
вопрос снимается
Alexander Popov
@ruelephant
Mar 05 2015 12:41
нет не ясно, ты в каком контексте? :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:41
этим должен заниматся фронденд
Alexander Popov
@ruelephant
Mar 05 2015 12:41
эм, приведи пример что еще можно отдать на клиент
slider23
@slider23
Mar 05 2015 12:41
Я догадался, что нужно, кажется https://github.com/LaravelCollective/html
Alexander Popov
@ruelephant
Mar 05 2015 12:42
@slider23 и зачем это надо? :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:42
<input type="text" name="some" value="some"/>
это мы отдает html + данные
{"data": {"some": "some"}}
Alexander Popov
@ruelephant
Mar 05 2015 12:43
а причем тут инпут то, инпут часть дизайна
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:43
а это мы отдает только данные
дизайна здесь нет
Alexander Popov
@ruelephant
Mar 05 2015 12:44
отдавать HTML по ajax это круто
расстрельная статья
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:44
причем тут аякс?
ты короче чудишь без баяна
Alexander Popov
@ruelephant
Mar 05 2015 12:45
а это ты как отдашь? "{"data": {"some": "some"}}
это же JSON
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:45
и что?
JSON я отдаю по запросу
Alexander Popov
@ruelephant
Mar 05 2015 12:45
по AJAX запросу же да? :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:46
не обязательно
Alexander Popov
@ruelephant
Mar 05 2015 12:46
ajax я называю любой запрос, который не перегружает страницу
и инициализирован динамически
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:47
я тогда так поставлю вопрос: у тебя шаблонизация на стороне клиента или сервера?
slider23
@slider23
Mar 05 2015 12:47

а что еще можно отдать на клиент?

на клиент можно передать html

Brezhnev Ivan
@vanchelo
Mar 05 2015 12:47
у тебя сервер отдает html?
Alexander Popov
@ruelephant
Mar 05 2015 12:47
на стороне клиента, view вообще живут отдельно
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:47
вот именно
и человеку надо на стороне сервера
поэтому твой вопрос зачем это надо мимо
Alexander Popov
@ruelephant
Mar 05 2015 12:48
фактически это именно набор статических html, все взаимодействие по ajax
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:48
потому как ты делаешь тоже на стороне сервера
не надо вообще html статических
посмотри реакт
он генерирует html на лету
ты ему только данные с сервера скармливаешь
Роман Сохарев
@greabock
Mar 05 2015 12:49
@vanchelo да забей, это бесполезно. там все слишком логично
JhaoDa
@jhaoda
Mar 05 2015 12:49
@ruelephant ты когда несешь мудрость в народ, неси помедленней
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:49
ага)
Alexander Popov
@ruelephant
Mar 05 2015 12:49
когда я говорю "статических" я имею введу без участия PHP
JhaoDa
@jhaoda
Mar 05 2015 12:49
А то народ не успевает
Alexander Popov
@ruelephant
Mar 05 2015 12:49
а так там knockout
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:49
@ruelephant ты уже съехал с предыдущего высказывания
slider23
@slider23
Mar 05 2015 12:50
@ruelephant у тебя все сайты на этом ? А как ты решаешь проблему индексации поисковиками ?
Роман Сохарев
@greabock
Mar 05 2015 12:50
@jhaoda как это ты со своим братюней не согласен... это прямо удивительно ))
Alexander Popov
@ruelephant
Mar 05 2015 12:50
@slider23 никак, оно не требуется
JhaoDa
@jhaoda
Mar 05 2015 12:50
@greabock заманал ты меня, военный
Alexander Popov
@ruelephant
Mar 05 2015 12:50
я пишу в основном сервисы корпоративные, там все за авторизацией
slider23
@slider23
Mar 05 2015 12:50
ну а вот человеку требуется, и он хочет хелперы для формочек юзать, которых в л5 нет.
Alexander Popov
@ruelephant
Mar 05 2015 12:51
ну формочки я бы ручками прописал
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:51
@ruelephant выходит у тебя ни единой вьюхи нет на сервере?
Alexander Popov
@ruelephant
Mar 05 2015 12:51
без хелперов
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:51
за исключением одной
JhaoDa
@jhaoda
Mar 05 2015 12:51
Я вообще не понимаю, что элефантус делает среди нас, убогих
Orel
@2byte
Mar 05 2015 12:51
Я бы тоже за, ручками писать
Alexander Popov
@ruelephant
Mar 05 2015 12:51
@vanchelo нету, там максимум layout подключается
slider23
@slider23
Mar 05 2015 12:51
Ок, мы тебя поняли и рассказали "зачем это надо", вопрос закрыт.
Alexander Popov
@ruelephant
Mar 05 2015 12:52
ну просто это лишний php
Brezhnev Ivan
@vanchelo
Mar 05 2015 12:52
жесть
у тебя вообще не спрашивали как ты работаешь)
JhaoDa
@jhaoda
Mar 05 2015 12:52
Элефантус всегда всё обсирает. Мы всё делаем не так, как надо
slider23
@slider23
Mar 05 2015 12:52
для твоей задачи и твоего подхода он лишний
А не для всех
JhaoDa
@jhaoda
Mar 05 2015 12:52
Кому надо, правда, не уточняется
slider23
@slider23
Mar 05 2015 12:53
Плиз, поменьше категоричности, не надо всех в светлое будущее силой загонять.
JhaoDa
@jhaoda
Mar 05 2015 12:53
Дак ведь прозябнем в серости!
Alexander Popov
@ruelephant
Mar 05 2015 12:54
я просто считаю, времена когда мы писали <input type=text name=name value=<?=$name?>> во вьюхах, прошли
второй шаг был обертка над этим, "хелперы"
slider23
@slider23
Mar 05 2015 12:54
А третий ?
JhaoDa
@jhaoda
Mar 05 2015 12:54
@ruelephant тебе с нами не скучно?
Alexander Popov
@ruelephant
Mar 05 2015 12:55
@slider23 третий это <input type=text name=name> далее динамически проставляет value javascriptом
NelinD
@NelinD
Mar 05 2015 12:55
@slider23 телепатия?
Alexander Popov
@ruelephant
Mar 05 2015 12:55
@slider23 javascript берет из JSON эти данные
slider23
@slider23
Mar 05 2015 12:56
Переход на js-фреймворки пока неоправдан из-за тормозов в прогрессе поисковиков. Чтобы оперативно исполнять js нужно слишком много мощностей, пока столько нет. Про это Тонский недавно написал неплохо
NelinD
@NelinD
Mar 05 2015 12:56
@ruelephant то есть на одну страницу - два запроса минимум?
Alexander Popov
@ruelephant
Mar 05 2015 12:56
@NelinD JSON не значит лишний запрос
@NelinD у нас в целях оптимизации генерация JSON происходит в basecontroller, после чего он постпроцессигном вставляеться в HEAD
slider23
@slider23
Mar 05 2015 12:57
Не, с лишними запросами всё норм, проблема в том, что денег такой сайт скорее всего принесет меньше, чем сделанный по-старинке, на сервере
Роман Сохарев
@greabock
Mar 05 2015 12:57
@ruelephant да ты все верно говоришь, кому нужна эта индексация? Все равно поисковиками никто не пользуется. Хотя нет... ими же все пользуется. Что-то тут не сходится...
Alexander Popov
@ruelephant
Mar 05 2015 12:57
а индексация форм то кому нужна?
ладно тексты, но ФОРМЫ
которые нужно заполнять ПОЛЬЗОВАТЕЛЬСКИМИ данными
slider23
@slider23
Mar 05 2015 12:58
Есть такая вещь - клоакинг
За подозрение на который гугл карает
Роман Сохарев
@greabock
Mar 05 2015 12:58
если бы у меня было три руки, я бы сейчас сделал трипл-фейс-пальм =)
slider23
@slider23
Mar 05 2015 12:58
Ибо этим способом пользователю подсовывают самую грязь, типа адвари
Alexander Popov
@ruelephant
Mar 05 2015 12:59
@slider23 а причем тут это? :) для поисковика это просто пустые формы
или мы говорим про неверное детектирование?
теоретически
slider23
@slider23
Mar 05 2015 13:00
про неверное, да
Роман Сохарев
@greabock
Mar 05 2015 13:00
@ruelephant формы тут вообще не при чем
мы сейчас не про них говорим
slider23
@slider23
Mar 05 2015 13:00
но стоп, ты юзаешь нокаут и прочее только чтобы подставлять старый инпут в формы ?
Alexander Popov
@ruelephant
Mar 05 2015 13:00
@slider23 там полноценные модели, там и валидация есть
он еще динамически HTML меняет
Роман Сохарев
@greabock
Mar 05 2015 13:01
просто нужно использовать единый подход. Либо ты делаешь шаблонизацию на стороне клиента, либо на стороне сервера. Иначе у тебя в проекте только ты сам и разберешься. А через пару месяцев и ты сам не разберешься.
Alexander Popov
@ruelephant
Mar 05 2015 13:01
@greabock только клиент у меня
Denis Isaychenko
@Rhincodon
Mar 05 2015 13:01
а фреймворк какой?
на клиенте
Alexander Popov
@ruelephant
Mar 05 2015 13:01
knockout
slider23
@slider23
Mar 05 2015 13:01
ну, если форма сложная, то валидация на клиенте, конечно, нужна. Хотя и не отменяет серверную.
Alexander Popov
@ruelephant
Mar 05 2015 13:02
сервер потом перепроверит, ему AJAX пошлют
он вернет JSON с ошибками или success
оно скормится в knockout и там бац только модель накормить
она сама отрендерит ошибки как будто они на клиенте возникли
Andrey
@Quiss
Mar 05 2015 13:03
could not find driver
Alexander Popov
@ruelephant
Mar 05 2015 13:03
(модель на клиенте, не путать с серверной)
Andrey
@Quiss
Mar 05 2015 13:03
первый раз столкнулся, шо не так?
slider23
@slider23
Mar 05 2015 13:03
Но для простых и средних форм вполне хватает серверной валидации и серверной генерации, с серверной же вставкой old input.
Alexander Popov
@ruelephant
Mar 05 2015 13:04
мы не используем компромисные подходы, только новые версии браузеров, мегабайты клиентских библиотек
если у вас слабый процессор и тормози, вы тоже не наш клиент
slider23
@slider23
Mar 05 2015 13:05
Тогда почему не эмбер ? Он тяжелее нокаута :)
Роман Сохарев
@greabock
Mar 05 2015 13:05
если у вас сотовой телефон - мы посадим его батарею
Alexander Popov
@ruelephant
Mar 05 2015 13:05
для сотового телефона придется полноценное приложение писать
там нет поддержки нужных технологий
в браузере
вообщем отрываемся как можем в технологическом плане
без оглядки на совместимость
Denis Isaychenko
@Rhincodon
Mar 05 2015 13:08
это правильно, только там мы сможем эволюционировать в технологическом плане, всех кривых и косых за борт :)
Роман Сохарев
@greabock
Mar 05 2015 13:09
@ruelephant да ты уже потерпел фиаско со своей категоричностью, успокойся уже. Тебе пять человек уже сказали, что есть неизбежные юзкейсы для серверной генерации, а ты все палку гнешь. И все аргументы "а нам это не нужно", "у нас иной подход". У вас иной подход - может быть, ктож спорит. Только не всем нужен этот ваш подход.
Alexander Popov
@ruelephant
Mar 05 2015 13:09
ну насчет юзеркейса я слышал только "про детектирование гуглом JSа"
пока что
Роман Сохарев
@greabock
Mar 05 2015 13:10
и нагрузка на клиент
Alexander Popov
@ruelephant
Mar 05 2015 13:11
какая разница? у всех уже почти стоит i3 минимум
как правило i5 + 4, а обычно и 8 (у меня дома 16) рама
NelinD
@NelinD
Mar 05 2015 13:11
@ruelephant отжирание памяти
Роман Сохарев
@greabock
Mar 05 2015 13:11
ты совсем упорот? Я тебе только-что про смартфоны говорил
slider23
@slider23
Mar 05 2015 13:11
Вообще, у js-приложений есть еще минус, который я уже упоминал несколько раз - субьективная тормознутость
NelinD
@NelinD
Mar 05 2015 13:11
@ruelephant когда страничка берет себе 2-3 гига
Alexander Popov
@ruelephant
Mar 05 2015 13:12
@greabock про сматфоны отдельны момент, как правило подосывается специальная мобильная версия
slider23
@slider23
Mar 05 2015 13:12
достаточно посмотреть на клиент-банковские какие-нить приложения
NelinD
@NelinD
Mar 05 2015 13:12
@greabock с генерацией на сервере:D
Alexander Popov
@ruelephant
Mar 05 2015 13:12
ну нашли эталон технологий
slider23
@slider23
Mar 05 2015 13:12
когда лейаут загрузился, а на контенте лоадер крутится, модельки подгружает
Роман Сохарев
@greabock
Mar 05 2015 13:12
@NelinD :+1:
slider23
@slider23
Mar 05 2015 13:13
вот эта вот двойная загрузка контента напрягает мозг
и то, что вентилятор у ноута включается, когда на сайт заходишь - тоже не очень хорошо.
А в остальном я за миграцию на джаваскрипт, это прикольно.
Интерфейс гораздо отзывчивее становится
Alexander Popov
@ruelephant
Mar 05 2015 13:15
@slider23 можно скешировать, пререндерить json при формировании страницы
а потом его дополнять/обновлять уже отдельными запросами
Роман Сохарев
@greabock
Mar 05 2015 13:15
хватит искать лазейки
Alexander Popov
@ruelephant
Mar 05 2015 13:16
причем тут лазейки?
slider23
@slider23
Mar 05 2015 13:16
Потому что в 21м веке жить в рамках HTTP 1.1 - это ретроградство.
Но пока реалии таковы.
В качестве универсального решения джаваскрипт-сайты не годятся.
Но еще пять-десять лет и гугл научится в джаваскрипт
Тогда будет тотальная революция
Alexander Popov
@ruelephant
Mar 05 2015 13:17
у меня вон отец чертыхается на сайты, у него целерон
slider23
@slider23
Mar 05 2015 13:17
Будем бинарнички по HTTP/2 гонять
Alexander Popov
@ruelephant
Mar 05 2015 13:17
я ему говорю надо выкинуть комп и купить новый, а он говорит зачем я буду тратить деньги когда и раньше все работало
NelinD
@NelinD
Mar 05 2015 13:18
@slider23 еще 5-10 лет и нам, возможно, будет не до того на чем там сайты работают
Denis Isaychenko
@Rhincodon
Mar 05 2015 13:18
так гугл вроде умеет js уже, даже по клиентскому роутингу вроде ходить может
slider23
@slider23
Mar 05 2015 13:18
есть специальные боты, но не все
выкладывать публичные js-сайты пока нельзя. народ фантомом генерит странички для индексации
Роман Сохарев
@greabock
Mar 05 2015 13:19
@ruelephant потому что ты ищешь повод, чтобы оказаться правым. Тебе ж сказали: есть ситуации, когда такой подход не подходит (простите уж за каламбур). Лет через пять (а может и раньше) все так и будет. Но пока - нет.
Alexander Popov
@ruelephant
Mar 05 2015 13:20
@slider23 как правило можно, если у тебя аналог twitter и прочее
сайты-сервисы
новосной сайт уже конечно ой
slider23
@slider23
Mar 05 2015 13:20
Сайты-сервисы - да
Внутренние админки - безусловно да
Alexander Popov
@ruelephant
Mar 05 2015 13:21
я просто уже не помню когда в последний раз разрабатывал не сайт-сервис
помоему они все вымерли уже
slider23
@slider23
Mar 05 2015 13:21
:)
Alexander Popov
@ruelephant
Mar 05 2015 13:21
ну кроме старых типо ленты
slider23
@slider23
Mar 05 2015 13:23
покликай по топ 100 алексе
Alexander Popov
@ruelephant
Mar 05 2015 13:24
там там наверняка древние как мамонты сайты
slider23
@slider23
Mar 05 2015 13:25
точно. ладно, я работать, надоело одно и то же жевать. :)
NelinD
@NelinD
Mar 05 2015 13:50
все работают что-ли???
Роман Сохарев
@greabock
Mar 05 2015 13:52
от части
кто ни будь в курсе, куда @VladShcherbin пропал?
Andrew Gurinovich
@altmind
Mar 05 2015 14:01
ребят, оффтопик. может кто-то юзал яндекс почту для домена?
ее вообще можно использовать как openid провайдер?
у всех сотрудников есть почта, хотелось бы чтобы внутренние ресурсы компании использовали ПДД как провайдер авторизации
Alexander Popov
@ruelephant
Mar 05 2015 14:24
"В случае неудачной валидации фреймворк заполняет флэш-переменные ошибками валидации и возврашает редирект на предыдущую страницу." как грамотно изменить это поведение?
мне не надо что бы он гадил в сессию
тем более редиректил
Andrey
@Quiss
Mar 05 2015 14:24
не посылай withInput()
^_^
Alexander Popov
@ruelephant
Mar 05 2015 14:25
это поведение Form Requests
так называемых
насколько понял оно даже эксепшен не плюнет, в отличии от обычной валидации
JhaoDa
@jhaoda
Mar 05 2015 14:28
Шта, я не ослышался? Элефантус не знает, как?
Alexander Popov
@ruelephant
Mar 05 2015 14:29
такс, не надо путать, я сомневаюсь в своем решении :)
JhaoDa
@jhaoda
Mar 05 2015 14:29
Можно юзать не FormRequest, а обычную валидацию
Alexander Popov
@ruelephant
Mar 05 2015 14:29
я уже подумал над этим, не красиво
JhaoDa
@jhaoda
Mar 05 2015 14:29
Там же всё красивенько выкидывается?
Alexander Popov
@ruelephant
Mar 05 2015 14:29
FormRequest переопределить? :)
JhaoDa
@jhaoda
Mar 05 2015 14:29
Или написать свой супер-валидатор
Alexander Popov
@ruelephant
Mar 05 2015 14:30
а где его определить? :) Контролеры то еще не подгружены
JhaoDa
@jhaoda
Mar 05 2015 14:31
Шта? Контроллеры?
Alexander Popov
@ruelephant
Mar 05 2015 14:32
как мы помним из школьного курса php - FormRequest используется из контролера public function store(StoreBlogPostRequest $request)
JhaoDa
@jhaoda
Mar 05 2015 14:32
Не понимаю, в чем проблема поменять поведение FormRequest
Alexander Popov
@ruelephant
Mar 05 2015 14:32
до вызова каких либо екшенов
@jhaoda вопрос откуда правильно переопределять core классы
JhaoDa
@jhaoda
Mar 05 2015 14:33
@ruelephant ты странный. В папку app/Requests заглядывал?
Alexander Popov
@ruelephant
Mar 05 2015 14:33
у меня la5
JhaoDa
@jhaoda
Mar 05 2015 14:33
:)
Не заглядывал, понятно
Ну загляни
Alexander Popov
@ruelephant
Mar 05 2015 14:34
только она лежит в app/Http/Requests
JhaoDa
@jhaoda
Mar 05 2015 14:34
Ай, ну ты не заблудился же?
Alexander Popov
@ruelephant
Mar 05 2015 14:35
сусанин ты
JhaoDa
@jhaoda
Mar 05 2015 14:35
Вот в той папке тебе FormRequest приложения, меняй как угодно
Alexander Popov
@ruelephant
Mar 05 2015 14:35
ладно я понял, спасибо
JhaoDa
@jhaoda
Mar 05 2015 14:37
И не понятно, при чем тут «контроллера ещё нет». Его и не будет, так-то, если в Form Request авторизация не пройдёт
Alexander Popov
@ruelephant
Mar 05 2015 14:38
только валидация :)
JhaoDa
@jhaoda
Mar 05 2015 14:38
А нужный Form Request загрузится поперёд контроллера через reflection
Alexander Popov
@ruelephant
Mar 05 2015 14:38
авторизация в middleware
JhaoDa
@jhaoda
Mar 05 2015 14:40

@ruelephant загляни внимательно в FormRequest, увидишь там:

public function authorize() {
    return true;
}

Это возможность авторизации доступа к конкретному action

Никто не заставляет тебя её юзать, я объясняю процесс работы
Если эта авторизация провалится, до action дело вообще не дойдёт
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:47
@jhaoda нифига
@jhaoda вот последовательность вызовов
"App\Http\Controllers\WelcomeController"
"App\Http\Requests\SomeRequest"
class WelcomeController extends Controller
{
    /**
     * Create a new controller instance.
     */
    public function __construct()
    {
        dump(__CLASS__);
    }

    /**
     * Show the application welcome screen to the user.
     */
    public function index(SomeRequest $request)
    {
        dump(get_class($request));
        return view('welcome');
    }

}
конструктор всё равно дергается
и посредники которые ты в нем опишешь выполняться до валидации запроса
JhaoDa
@jhaoda
Mar 05 2015 14:48
@vanchelo окай, ошибся малость
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:48
я тоже думал как ты
а сейчас решил проверить)
JhaoDa
@jhaoda
Mar 05 2015 14:49
Но учитывая, что Request нужен для action, то пофигу
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:49
до того как ты написал я вообще не задумывался о последовательности)
JhaoDa
@jhaoda
Mar 05 2015 14:50
Ну и понятно, что не загрузив контроллер, не получится через reflection узнать тайп-хинты
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:51
можно
php parser
JhaoDa
@jhaoda
Mar 05 2015 14:52
@vanchelo и что, он юзается? Или нормальный Reflection?
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:52
нее, конечно reflection
метод call контейнера глянь
JhaoDa
@jhaoda
Mar 05 2015 14:52
Ну тогда замечание не существенно в контексте беседы :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:53
я имел ввиду что вообще можно узнать)
JhaoDa
@jhaoda
Mar 05 2015 14:53
А я же написал «не получится через reflection»
Brezhnev Ivan
@vanchelo
Mar 05 2015 14:57
@jhaoda
$parser = new PhpParser\Parser(new PhpParser\Lexer);

dump($parser->parse(file_get_contents(app_path('Http/Controllers/WelcomeController.php'))));
но это конечно геморой
пока доберешься до нужного метода через все эти nodes subNodes =)
NelinD
@NelinD
Mar 05 2015 14:59
@vanchelo нифига себе вы затейник
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:00
@NelinD проверил?
очень крутой парсер, если честно)
Alexander Popov
@ruelephant
Mar 05 2015 15:05
@vanchelo а распечатку результат можно? :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:05
да
Alexander Popov
@ruelephant
Mar 05 2015 15:07
ты для этого файл создал целый в гите O_o
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:07
всё для тебя
Alexander Popov
@ruelephant
Mar 05 2015 15:07
бедный github
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:08
да ему пофигу
LaravelButler

Приветствуем Вас, @DanTheBlue, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Alexander Popov
@ruelephant
Mar 05 2015 15:11
кстати Ctrl+Cmd+M в маке вызывает MAMPs
:)
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:11
на что исправить?
Cmd+Shift+M?
Alexander Popov
@ruelephant
Mar 05 2015 15:22
а что хотите добиться то?
Cmd+Shift+M вызывает авторизацию в google chrome
типо "сменить текущий аккаунт гугла"
Andrew
@bitw
Mar 05 2015 15:26
Cmd+Alt+Esc - вызывает что-то типа таскменеджера
Alexander Popov
@ruelephant
Mar 05 2015 15:26
а что вы хотите то?
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:32
я ничего
Alexander Popov
@ruelephant
Mar 05 2015 15:34
я имею введу что делает комбинация по замыслу?
Brezhnev Ivan
@vanchelo
Mar 05 2015 15:35
2015-03-05_173505.png
Роман Сохарев
@greabock
Mar 05 2015 15:57
https://twitter.com/brianwebb01/status/573501457229438976
интриги, скандалы, расследования
Alexander Popov
@ruelephant
Mar 05 2015 15:59
@vanchelo я код чата глянул, все обрусфировано :(
подрузомеваю что там что-то напутано с номерами клавиш
@greabock ех нафига такие анонсы, лучше бы помолчали
aleserche
@Aleserche
Mar 05 2015 16:16
ох, нехорошо получилось. Апдейтнулся на win 10, посидел месяц. Чувствую теперь, что глюки догнали
как бы мне теперь удержаться и не поставить 10 или убунту
Maxim
@Big-Shark
Mar 05 2015 16:19
@Aleserche и как она?
aleserche
@Aleserche
Mar 05 2015 16:20
вообще класс. Кажется это будет долгожитель как хр. Только иконки туповатые немного. С этой плоскостью совсем с ума посходили
откачусь на 8.1
Виртуалки перестали работать. Вот это очень и очень плохо. На либы ругается. Даже не знаю, что могло произойти
Maxim
@Big-Shark
Mar 05 2015 16:22
@Aleserche надо тоже попробовать 8.1 обновить до 10, пока бесплатно, хотя я так и не понял с этой бесплатностью
aleserche
@Aleserche
Mar 05 2015 16:23
вообще мс в последнее время радует
2 года не реинсталлил ос. Как же теперь все добро переносить. Охохохох~~~
Maxim
@Big-Shark
Mar 05 2015 16:26
@Aleserche я 5 лет непереставлял, а купил новый ноут, и скопировал только 1 папку, ворк, все остальное либо в облаке, либо можно скачать.
aleserche
@Aleserche
Mar 05 2015 16:29
ну что тут скажешь. Я облака меньше года назад начал активно юзать. Параноик и все такое. А как ставить 10, в которой без спроса могут какие угодно данные, тут как тут
aleserche
@Aleserche
Mar 05 2015 16:39
раз уж пошла такая беседа, кто какие облака юзает? Могу про клаудМейл. Что-то они криво свою прогу написали, когда пишешь в папку большой файл, начинается синх и операция длится неприлично долго выполняется. Приходится вырубать синх, заливать, потом включать обратно
у других такого не наблюдал
Maxim
@Big-Shark
Mar 05 2015 16:42
@Aleserche дропбокс, и гугл.
aleserche
@Aleserche
Mar 05 2015 16:43
кстати, да, надо посмотреть, что там за тарифы, мне обычно больше 100 гигов не нужно, может на чем-то одном остановлюсь
Maxim
@Big-Shark
Mar 05 2015 16:44
@Aleserche для больших файлов мегу юзаю
aleserche
@Aleserche
Mar 05 2015 16:44
гугл как-то страшно использовать, закроют все и сиди потом, вспоминай
хотя с другой стороны, если закроют гугл, значит все, делать нечего =)
Maxim
@Big-Shark
Mar 05 2015 16:46
@Aleserche всегда можно делать бекапы, как минимум в другие сервесы)
aleserche
@Aleserche
Mar 05 2015 16:47
я тут о почте подумал, стало страшно
я всегда гмайл использую как самый надежный
и если его закрыть, то будет катастрофа
Alexander Popov
@ruelephant
Mar 05 2015 16:55
ну заведи свой почтовик
берешь VDS, оплачиваешь, настраиваешь :)
Роман Сохарев
@greabock
Mar 05 2015 16:56
я может тормоз но с чего вдруг должны закрыть gmail?
Maxim
@Big-Shark
Mar 05 2015 16:56
@greabock спроси у жителей Крыма.
Роман Сохарев
@greabock
Mar 05 2015 16:56
пфф...
aleserche
@Aleserche
Mar 05 2015 16:57
ну мало ли, техничка ведро с грязной водой опрокинет, а растворенные в воде пыль и пр. прекрасно проводят электричество
Maxim
@Big-Shark
Mar 05 2015 16:57
@Aleserche большое же ведро должно быть)
aleserche
@Aleserche
Mar 05 2015 16:57
@Big-Shark у них же вроде мыло не закрыли, только некоторые сервисы или я ошибаюсь?
Роман Сохарев
@greabock
Mar 05 2015 16:58
ну разве что техничка может находится в сотне мест одновременно
aleserche
@Aleserche
Mar 05 2015 17:00
где-то читал, что датацентр можно убить одной ли каплей
Maxim
@Big-Shark
Mar 05 2015 17:07
@Aleserche Ну я даже незнаю что тут сказать
Alexander Popov
@ruelephant
Mar 05 2015 17:09
это в стиле китайцев, убийца-в-стиле-падающей капли :)
в центральный коммутатор капнуть из пипетки
представил в slow-mo екшен, падающая капля на микросхему и расползающиеся замыкание.
и потом взрывается вертолет
Maxim
@Big-Shark
Mar 05 2015 17:13
http://pastebin.com/EsxqUtgG кто что скажет по этому коду?
Alexander Popov
@ruelephant
Mar 05 2015 17:14
что-то мне кажется не феншуй
чуствую негативное влияние цы
Maxim
@Big-Shark
Mar 05 2015 17:14
Код не мой, так что пишите что думаете)
Alexander Popov
@ruelephant
Mar 05 2015 17:15
а мопед? :)
@Big-Shark а что пытались решить этим кодом?
что бы мы не играли в телепатов
array_reduce в начале уже напрягает
костыльсъ
особенно: if(!$available){
return;
Maxim
@Big-Shark
Mar 05 2015 17:18
@ruelephant приходит массив с данными по апи, дальше из этого массива выбираются нужные нам, и забиваются в базу
Alexander Popov
@ruelephant
Mar 05 2015 17:19
что за функция is_a?
ааа тфу
думал самописное
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:19
Alexander Popov
@ruelephant
Mar 05 2015 17:20
@Big-Shark на вскидку не вставил меня код :)
вроде не говнокод, но можно быстрее
если знать полное условие
Maxim
@Big-Shark
Mar 05 2015 17:22
http://pastebin.com/rNpGT5gY а это код функции которая идет чуть выше
Alexander Popov
@ruelephant
Mar 05 2015 17:22
а это что за копипаст?
моя оценка снижена на 1
2 из 5
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:23
@Big-Shark в usort очень странный компаратор, похож на дефолтное поведение, просто sort точно не канает?
Alexander Popov
@ruelephant
Mar 05 2015 17:23
писал какой то юный падован мне так кажется
или очень ленивый джедай на халтуре :)
" clone reset($interval)" как то кмх
учитывая что это все кормится в функцию
и массив все больше и больше
я думаю там по памяти не все хорошо
а нет, увидел $interval = array();
но это странное решение
массив из 1 элемента
aleserche
@Aleserche
Mar 05 2015 17:29
а мне не нравится то, что функция как-то много чего делает
Alexander Popov
@ruelephant
Mar 05 2015 17:30
мне кажется тут сначало бы разгрести то что нафичено с алгоритмом
а потом уже за чашкой английского чая обсуждать инкапсуляцию
Maxim
@Big-Shark
Mar 05 2015 17:30
@Nayjest вообще похож, но там обьект дата тайм, я не уверен как с ними сработает стандартный сорт, думаю также)
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:32
@Big-Shark с array_reduce и запихиванием значения в $v[]-- как-то неочевидно
Maxim
@Big-Shark
Mar 05 2015 17:33
@Nayjest да там все неочевидно
Alexander Popov
@ruelephant
Mar 05 2015 17:33
вообщем
а не код
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:33
+1 )))
LaravelButler

Приветствуем Вас, @IvanRyavkin, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:35

Особенно доставляет последняя строчка

$debug = 1;

Интересно, в чем ее магический смысл? ))

Alexander Popov
@ruelephant
Mar 05 2015 17:35
она в globals?
O_o
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:36
@ruelephant нет
Alexander Popov
@ruelephant
Mar 05 2015 17:36
жаль
было бы логично
Maxim
@Big-Shark
Mar 05 2015 17:36
нет, ее пхпшторм помечает как неиспользуемую
Alexander Popov
@ruelephant
Mar 05 2015 17:36
это новый тренд, комментарий из кода
автор хотел сказать что код нуждается в отладке
aleserche
@Aleserche
Mar 05 2015 17:37
нашел у себя в папке майнкрафты всех версий
Alexander Popov
@ruelephant
Mar 05 2015 17:37
гениально
aleserche
@Aleserche
Mar 05 2015 17:38
хорошая идея, использовать код для комментов
Alexander Popov
@ruelephant
Mar 05 2015 17:38
да просто гениальная
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:38

Мне когда-то на ревью попал код, где было написано что-то типа

/* Равшан скачал этот код откуда-то из интернета, я не знаю, что он делает */

только с индусским именем и на английском, а далее около тысячи строк лапшекода
:D

aleserche
@Aleserche
Mar 05 2015 17:39
коменты же никто не читает, то код-то прочитают, более того, попытаются понять весь код
Alexander Popov
@ruelephant
Mar 05 2015 17:39
вечер говнокода объявляю открытым
@Aleserche а что если код, невозможно понять?
aleserche
@Aleserche
Mar 05 2015 17:39
тихонько закрыть и больше не открывать
Maxim
@Big-Shark
Mar 05 2015 17:40
@Nayjest я сам както делал функцию которая переводила код в ютф8 2 раза, иначе не работало, написал сверхе //Magic )))
Alexander Popov
@ruelephant
Mar 05 2015 17:41
@Aleserche
aleserche
@Aleserche
Mar 05 2015 17:41
хоть бы рубашку погладил, смотреть противно
Alexander Popov
@ruelephant
Mar 05 2015 17:42
это же математик, какая рубашка
математики народ странный -
aleserche
@Aleserche
Mar 05 2015 17:44
и в общении очень тяжелые
Alexander Popov
@ruelephant
Mar 05 2015 17:45
а ты попробуй вообрази какой нибудь бесконечной замкнутый бублик
потом опиши его, и докажи что он скажем не замкнут
и у тебя тоже будут трудности в общении
сами блин себе проблемы выдумают, и сами героически их решают. Чудаки
главное потом что-то практическое совпадает с тем что они выдумали, и все начинают орать "математика полезная наука"
но 99% абстракций не будут использованы никогда
хотя я вот подумал, программисты тоже этим страдают :(
Alexander Popov
@ruelephant
Mar 05 2015 17:50
кому нужны классы, паттерны? Нужно интернет магазин, продать, купить, без смс, шлюхи, мальдивы, шлюхи, лечение не дорого
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:52
говорят, что трудности в общении у хардкорных технарей из-за психологической травмы, полученной в результате освоения глубин своего предмета )))
Alexander Popov
@ruelephant
Mar 05 2015 17:53
какая травма? мы психическиздоровы! (продолжает раскачиватся на стуле смотря в стенку)
@Nayjest есть просто предел компетенции, за которой уже пошел такой космос что это не посвященным не нужно
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:55
Физики, плотно работающие с пространством Минковского иногда испытывают проблемы с возвращением в привычное 3d пространство )))
Alexander Popov
@ruelephant
Mar 05 2015 17:55
тебе директор например сказал написать форму, а ты осознал несовершенство бытия и быстро, всего за год, попробывал написать свой совершенный framework
конечно это всего лишь попытка, попытка приблизится к совершеству. Но он то баран такой не может понять, что у тебя почти сияние чистого кода было
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:56
@ruelephant неа, фреймворк уже не модно, сейчас под это дело нужно DSL разрабатывать )))
Alexander Popov
@ruelephant
Mar 05 2015 17:57
свою архитектуру процессоров, свою память
потом переосмыслить подход к микроэлектронике, выкинуть все к фигам
Brezhnev Ivan
@vanchelo
Mar 05 2015 17:57
завязывайте)
Alexander Popov
@ruelephant
Mar 05 2015 17:57
и начать клепать квантовый компьютер
вот где hardcore!
вот это жизнь
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 17:58
@ruelephant реквестую квантовый чекбокс с третьим состоянием неопределенности!
Alexander Popov
@ruelephant
Mar 05 2015 17:58
ты не понял, чекбоксы буду сразу в двух состояниях!
они включены и выключены сразу
Brezhnev Ivan
@vanchelo
Mar 05 2015 17:59
каким образом их состояние будет меняться?
Alexander Popov
@ruelephant
Mar 05 2015 17:59
настройка СMS никогда не была столь легкой!
@vanchelo если ты смотришь на страницу с настройками, ты наблюдатель
значит ты уже влияешь на систему!
Brezhnev Ivan
@vanchelo
Mar 05 2015 17:59
я в курсе
Alexander Popov
@ruelephant
Mar 05 2015 18:00
вооот
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:00
и?
Alexander Popov
@ruelephant
Mar 05 2015 18:00
состояние будет случайное конечно же
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:00
в каком состоянии будет чекбокс когда я на него посмотрю?
ыыыы
очень удобно
Alexander Popov
@ruelephant
Mar 05 2015 18:00
что бы изменить состояние, тебе надо открыть и закрыть страницу
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:00
может глазами моргнуть?
Alexander Popov
@ruelephant
Mar 05 2015 18:01
нееет!
если ты моргнешь система опять будет в состоянии неопределенности
пока глаза закрыты
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:01
@vanchelo >> в каком состоянии будет чекбокс когда я на него посмотрю?
Чекбокс потеряет волновое состояние будет демонстрировать поведение, свойственное корпускулярным объектам
Alexander Popov
@ruelephant
Mar 05 2015 18:01
после открытия может быть уже другое состояние!
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:01
наверное еще ты под действием кота шредингера)
Alexander Popov
@ruelephant
Mar 05 2015 18:01
чуваки, давайте напишем такую админку
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:02
@ruelephant давай уже код
Alexander Popov
@ruelephant
Mar 05 2015 18:02
это будет бомба!
но мы конечно сможем только эмулировать с помощью random
у нас еще нет квантового компьютера :(
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:03
рандом не то
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:03
ага, в дебаггере наблюдать интерференцию булевого значения с самим собой после прохождения через функцию ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:03
ты не получишь рандомом гарантировано 50 на 50
Alexander Popov
@ruelephant
Mar 05 2015 18:03
назовем quantumAdmin
главное сразу подавать на сколково
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:03
а если два рядом чекбокса будут?
два они ведь не смогут быть включены
Alexander Popov
@ruelephant
Mar 05 2015 18:04
почему?
Dinar Garipov
@garf
Mar 05 2015 18:04
Зашел в гиттер, прифигел, вышел.
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:04
как почему
как и с котиками
если будут два котика один обязательно будет мертв
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:04
Главное не говорите Тейлору, а то Quantum Laravel 6... the sicret project
Alexander Popov
@ruelephant
Mar 05 2015 18:04
да?
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:04
это не я придумал
но какой будет жив а какой мертв заранее нельзя узнать
Alexander Popov
@ruelephant
Mar 05 2015 18:05
а если три котика?
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:05
хз
Alexander Popov
@ruelephant
Mar 05 2015 18:05
ванчелло завис
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:05
общался с живым человеком)
поэтому, да, для чата я завис)
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:06
Вообще, это только в копенгагенской интерпретации наблюдатель разрушает волновую функцию, а она сейчас не оч. в почете, нынче модны течения в направлении теорий струн
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:06
о да
Alexander Popov
@ruelephant
Mar 05 2015 18:06
а что там? :)
давайте тогда на струнах админку делать
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:06
@ruelephant Не, рано
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:06
11-ти мерную)
Alexander Popov
@ruelephant
Mar 05 2015 18:07
не рано :)
раньше начнем, раньше кончим
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:07
@ruelephant Нужно, чтобы на БАК закончили испытания, чтобы определить, какая из теорий струн верная, их там около 5-6 штук
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:07
М-теория?
Denis Isaychenko
@Rhincodon
Mar 05 2015 18:07
ещё один переводик о DDD с laracasts форума https://gist.github.com/Rhincodon/93faa2fcf9f620317964
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:07
о, спс
Alexander Popov
@ruelephant
Mar 05 2015 18:07
@Rhincodon для школоты, мы тут квантовые админки проектируем :)
а бак когда закончит?
у меня к ним просто один научный вопрос есть, уже давно мучает
"а что будет если закатить тележку в поток ускорителя?"
halflife 3 выйдет или нет?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:09
а х.з. они там уже строят серию новых ускорителей для проверки других концепций. Там вопрос в том, возникла ли вселенная при большом взрыве из одного тахиона, или нет
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:09
думаю ничего не произойдет
Alexander Popov
@ruelephant
Mar 05 2015 18:09
@vanchelo но гордон фриман....
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:09
@ruelephant какой халфлайф, когда в доте шапки по 30 баксов... ага, дождетесь ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:10
шапки?
Alexander Popov
@ruelephant
Mar 05 2015 18:10
шапки шапки
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:10
вы еще и в доту успеваете играть?
Alexander Popov
@ruelephant
Mar 05 2015 18:10
шапки их все
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:10
@vanchelo внутриигровые покупки, меняющие внешний вид персонажей, есть молва, что на них весьма неплохо зарабатывают )))
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:11
красавцы
Alexander Popov
@ruelephant
Mar 05 2015 18:11
@vanchelo а знаешь что самое красивое в этой схеме? они даже шапки не рисуют
там есть инструмент, который позволяет компьюрити рисовать шапки
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:12
@vanchelo Ога, еще пару тестов дописать и как раз можно будет успеть катку погонять пока тимсити размышляет над этим делом ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:12
)
Alexander Popov
@ruelephant
Mar 05 2015 18:12
которые потом продают в магазине
автор получает %
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:12
норм
тимсити юзаешь?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:12
да
Maxim
@Big-Shark
Mar 05 2015 18:13
Блин, 4 утра, вставать в 9, пойдука я спать, всем ББ, у дачного вечера)
Alexander Popov
@ruelephant
Mar 05 2015 18:13
луна еще высоко!
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:13
спокойной
Alexander Popov
@ruelephant
Mar 05 2015 18:13
работать!
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:15
похоже, любимый метод экстремального программирования "хуяк хуяк и на продакшен" себя исчерпал при работе с финансовыми данными, приходится вот тимсити юзать ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:17
давно её юзаешь?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:17
@vanchelo пол годика
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:18
раньше что юзал?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:18
@vanchelo хуяк хуяк и на продакшен в текущей компании, для опенсорца -- тревис
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:19
недавно видел опенсорсовый phpci, не смотрел?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:19
@vanchelo в Magento до этого тоже тимсити, но там все было настроено до меня
@vanchelo не, вроде как хватает того что есть. Тут более холиварный вопрос -- на чем деплой сценарии писать. Остановился на ларавел-команде которая юзает ремоут конекшены
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:22
я не дорос еще до TS
@Nayjest deployer?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:24
@vanchelo что deployer?
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:25
а что такое деплой сценарии?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:26
@vanchelo скрипт, выкладывающий обновления на продакшен сервера
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:26
вот я и написал, deployer?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 18:26
@vanchelo так что deployer? )) это скрипт какой-то, что-ли?
Brezhnev Ivan
@vanchelo
Mar 05 2015 18:27

на чем деплой сценарии писать

=)

Alexander Popov
@ruelephant
Mar 05 2015 19:17
блин у вас авы в одной цветовой гамме
я быстро глянул чуть с ума не сошел
можно подумать кто-то сам с собой разговаривает
Роман Сохарев
@greabock
Mar 05 2015 19:23
@Nayjest хаха, тебя сюда заманили? )
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 19:23
да я тут всегда был, я на Laravel пишу )))
Роман Сохарев
@greabock
Mar 05 2015 19:25
@Nayjest я тебя просто раньше не видел
Alexander Popov
@ruelephant
Mar 05 2015 19:25
я тоже
он засланный шпион
Роман Сохарев
@greabock
Mar 05 2015 19:25
@ruelephant ты тут вообще месяц )))
Alexander Popov
@ruelephant
Mar 05 2015 19:25
косит под местного
@greabock но меня то вы знаете :)
Роман Сохарев
@greabock
Mar 05 2015 19:29
о да... тебя мы знаем )
LaravelButler

Приветствуем Вас, @butschster, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

butschster
@butschster
Mar 05 2015 19:50
Привет, а есть люди, которые использовали Global Scopes в Laravel?
Alexander Popov
@ruelephant
Mar 05 2015 19:51
есть люди которые летали на луну, ты думаешь нет людей которые использовали какие то Global Scopes? пфф
butschster
@butschster
Mar 05 2015 19:52
:) ну собственно я не сомневаюсь, что такие есть, наверно стоило уточнить в данный момент здесь и сейчас
Alexander Popov
@ruelephant
Mar 05 2015 19:52
ты бы лучше конкретный вопрос задал
без прелюдий
а то ты через 3 часа получишь только утвердительный ответ
butschster
@butschster
Mar 05 2015 19:55
@ruelephant ок, я правда никуда не спешу, ну да ладно, вопрос: возникла проблема с созданием Scope объекта, в котором в методе apply есть условие <code>$builder->whereIn('status', ['new', 'approved']);</code>
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 19:55
@butschster Я просто делал скоуп в трейте и подключал в модели, где это необходимо, полет нормальный
Alexander Popov
@ruelephant
Mar 05 2015 19:56
This message was deleted
This message was deleted
butschster
@butschster
Mar 05 2015 19:56
т.е. задано изначально условие фильтрации, но потом если я хочу удалить это условие возникает проблема
@ruelephant будь снисходительнее, я первый раз сдесь и у меня нет цели флудить, есть цель решить проблему, чтобы изучение системы
Alexander Popov
@ruelephant
Mar 05 2015 19:58
я не издеваюсь, я помогаю формулировать :)
Brezhnev Ivan
@vanchelo
Mar 05 2015 19:58
@greabock, @Nayjest здесь давно))
butschster
@butschster
Mar 05 2015 19:59
Собственно в чем проблема: после создания этого условия, аналогично SoftDeleteScope есть метод addOnlyArchivedв котором реализовано обратная опирация показа только архивных записей,
protected function addOnlyArchived(Builder $builder)
    {
        $builder->macro('onlyArchived', function(Builder $builder)
        {
            $model = $builder->getModel();

            $this->remove($builder, $model);

            $builder->getQuery()->where($model->getQualifiedStatusColumn(), 'archive');

            return $builder;
        });
    }
Alexander Popov
@ruelephant
Mar 05 2015 20:00
что-то меня уже не впечатлило, зачем плодить глобальный "объект" под такое?
я не думаю что у вас получится "угодить" всем моделям
butschster
@butschster
Mar 05 2015 20:01
@ruelephant Для изучения возможностей
проблема еще не озвучена
Alexander Popov
@ruelephant
Mar 05 2015 20:02
я просто вижу уже косяки в архитектуре, о чем и сообщил
может по старой доброй традиции вернемся на -1 уровень абстракции и глянем что же вы хотите решить?
butschster
@butschster
Mar 05 2015 20:02

Теперь суть проблемы,

public function apply(Builder $builder, Model $model)
    {
        $builder->whereIn('status', ['new', 'approved']);

        $this->extend($builder);
    }

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

@ruelephant в общем, я хочу понять баг это или я просто не понимаю как работают скоупы, но как только я удаляю $builder->whereIn('status', ['new', 'approved']);, то получается проблема связанная с тем, что значения 'new', 'approved' уже попали в bindings, и при вызове $builder->getQuery()->where($model->getQualifiedStatusColumn(), 'archive'); он вместо использования archive использует new
Alexander Popov
@ruelephant
Mar 05 2015 20:08
я правильно понимаю, что вы хотите реализовать global query scopes?
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 20:08
Вообще, ларавелевский квери билдер слабоват, я в самых клинических случаях юзал квери билдер из доктрины, мимо этих ваших элоквентов )))
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:08
@butschster как ты скоуп удаляешь?
butschster
@butschster
Mar 05 2015 20:09
Этот пример аналогичен тому, что делает softDelete за исключением того, что они проверяют Null для даты удаления, а у меня в условие подставляются свои значения
Alexander Popov
@ruelephant
Mar 05 2015 20:09
@vanchelo у меня есть версия что он думает что whereIn перетрет поверх значение
но это из разряда телепатии
а он насколько я понимаю ДОБАВЛЯЕТ
butschster
@butschster
Mar 05 2015 20:10
я ничего не думаю, переде тем как написать я изучил как это все работает
Alexander Popov
@ruelephant
Mar 05 2015 20:10
и как же?
если вы делаете global query scopes, то надо реализовать метод remove или я не прав?
butschster
@butschster
Mar 05 2015 20:10
я его просто не указал, минуту
Alexander Popov
@ruelephant
Mar 05 2015 20:11
я конечно не совсем в теме, но по логике то
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:11
я вот так делал
Alexander Popov
@ruelephant
Mar 05 2015 20:12
@vanchelo в методе remove разве там по ссылке?
где происходит unset($query->wheres['active']);
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:13
а как сам думаешь?
объекты по ссылкам передаются
butschster
@butschster
Mar 05 2015 20:13
public function remove(Builder $builder, Model $model)
    {
        $column = $model->getStatusColumn();

        $query = $builder->getQuery();

        foreach ((array) $query->wheres as $key => $where)
        {
            if ($this->isStatusConstraint($where, $column))
            {

                unset($query->wheres[$key]);
                $query->wheres = array_values($query->wheres);
            }
        }
    }
собственно еще раз суть проблемы
Alexander Popov
@ruelephant
Mar 05 2015 20:13
@vanchelo а $query объект?
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:13
объекты по ссылкам)
Alexander Popov
@ruelephant
Mar 05 2015 20:13
хм ну да, туплю
я почему то ступил что $query массив
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:14
не
butschster
@butschster
Mar 05 2015 20:14
Есть apply метод, в нем мы делаем $builder->whereIn('status', ['new', 'approved']);, который добавляетфильтрацию
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:14
массивы кстати тоже по ссылкам если ты их не изменяешь
как только меняешь что-то массив клонируется
Alexander Popov
@ruelephant
Mar 05 2015 20:14
в методе всмысле?
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:14
@butschster да, всё верно
Alexander Popov
@ruelephant
Mar 05 2015 20:15
мне казалось return array должно всегда по значению
функция то уже сдохла
butschster
@butschster
Mar 05 2015 20:15
Т.е. $posts = Post::select()->toSql(); вернет select * frompostswhereposts.statusin ('new', 'approved')
далее, мы делаем запрос $posts = Post::select()->onlyArchived()->toSql(); и получаем select * frompostswhereposts.status= 'new'
Роман Сохарев
@greabock
Mar 05 2015 20:15
CTRL+SHIFT+M
не благодари
butschster
@butschster
Mar 05 2015 20:15
хотя ожидаем select * frompostswhereposts.status= 'archive'
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:16
что в методе onlyArchived?
butschster
@butschster
Mar 05 2015 20:16
он выше показан
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:16
этот?
protected function addOnlyArchived(Builder $builder)
    {
        $builder->macro('onlyArchived', function(Builder $builder)
        {
            $model = $builder->getModel();

            $this->remove($builder, $model);

            $builder->getQuery()->where($model->getQualifiedStatusColumn(), 'archive');

            return $builder;
        });
    }
butschster
@butschster
Mar 05 2015 20:17
да
Alexander Popov
@ruelephant
Mar 05 2015 20:17
мне кажется (небольшой оффтоп) игры с Global Scopes ни к чему хорошему не приведут, это не серебрянная пуля
butschster
@butschster
Mar 05 2015 20:17
Ну раз о них заявили в laravel документации есть необходимость знать как они работают
и сейчас я думал может есть какой то метод очищать старые bindings
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:18
ты просто удали из массива where как я показывал на примере выше
Alexander Popov
@ruelephant
Mar 05 2015 20:18
собственно как и с паттерном "Repositories" которые вчера обсуждали
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:21
где у тебя в методе remove косяк
butschster
@butschster
Mar 05 2015 20:21
Т.е. покажу цепочку чтобы осознать проблему
$builder->whereIn('status', ['new', 'approved']);
//$builder::bindings['where'] = 'new', 'approved'

// Удаляем условие
$this->remove($builder, $model);

unset($query->wheres[$key]);
$query->wheres = array_values($query->wheres);

//$builder::bindings['where'] = 'new', 'approved'

// Новое условие
 $builder->getQuery()->where($model->getQualifiedStatusColumn(), 'archive');
//$builder::bindings['where'] = 'new', 'approved', 'archive'

// Т.е. проблема в том, что из биндинга подставится первый параметр 'new' в новое условие
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:21
ты его дебажил?
butschster
@butschster
Mar 05 2015 20:23
Надеюсь все понимаю что такое bindings и как они работают?!
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:23
да
butschster
@butschster
Mar 05 2015 20:24
Т.е. после удаления должно быть
$builder::bindings['where'] = 'archive'
а получается
$builder::bindings['where'] = 'new', 'approved', 'archive'
Alexander Popov
@ruelephant
Mar 05 2015 20:26
а что это за строчки? unset($query->wheres[$key]); $query->wheres = array_values($query->wheres);
это внутри remove?
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:26
а если попробовать mergeBindings
есть вот и метод в билдере cleanBindings
protected function cleanBindings(array $bindings)
{
    return array_values(array_filter($bindings, function($binding)
    {
        return ! $binding instanceof Expression;
    }));
}
Vitaliy Stepanenko
@Nayjest
Mar 05 2015 20:27
ох, я с этими биндингами намучился, когда пытался добавить подзапрос, посторенный другим инстансом квери билдера ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:27
и как?
butschster
@butschster
Mar 05 2015 20:27
ну помимо этих значений могет быть и похожие биндинги
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:27
откуда?
сначала же global scope строится
так вот ты и удали ['new', 'approved']
butschster
@butschster
Mar 05 2015 20:28
вернее запрос может быть
Post::select()->where('key', '=', 'new')->where(....)->onlyArchived()
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:28
дай распечатку массива bindings
так будет намного проще сориентироваться
LaravelButler

Приветствуем Вас, @kuzroman, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

butschster
@butschster
Mar 05 2015 20:30
просто все доп условия также могут содержать похожие ключи, и они могут также потеряться
kuzroman
@kuzroman
Mar 05 2015 20:31
Доброй ночи. Может кто нибудь подсказать мне нубу как в 5й версии правильно передать модель контроллеру?
Роман Сохарев
@greabock
Mar 05 2015 20:32

вся проблема, насколько я понял, сводится к

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

что-то мне подсказывает, что это РАЗНЫЕ скоупы, а не один.

butschster
@butschster
Mar 05 2015 20:32
@greabock советую изучить ссылку приведеную выше
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:32
@kuzroman модель контроллеру?
куда передать, в метод, или в конструктор?
модель с данными или чистую?
butschster
@butschster
Mar 05 2015 20:33
Это скоуп softDelete, который поставляется из коробки, все что я сделал применил его чуть с другим запросом
kuzroman
@kuzroman
Mar 05 2015 20:35
@vanchelo в 4ке я просто мог указать public function get($id)
{
return json_encode(Order::find($id));
}
а в 5й Order не находит
butschster
@butschster
Mar 05 2015 20:36
@kuzroman \App\Order
Роман Сохарев
@greabock
Mar 05 2015 20:36
@butschster это нас приводит лишь к тому, что скоупы нужно указывать до указания прочей фильтрации.
butschster
@butschster
Mar 05 2015 20:36
@greabock, а чем это может помочь?
kuzroman
@kuzroman
Mar 05 2015 20:37
@butschster Это что namespace? Его где нужно указывать?
Ребят я вронтенщик, ну очень хочу разобраться с Laravel ;(
butschster
@butschster
Mar 05 2015 20:38
@kuzroman либо до объявления класса use App\Order; либо в момент запроса объекта \App\Order::...
kuzroman
@kuzroman
Mar 05 2015 20:40
@butschster а если у меня модели лежат в app\Models\ это где то нужно переопределять?
butschster
@butschster
Mar 05 2015 20:41
@kuzroman \App\Models\Order::...
kuzroman
@kuzroman
Mar 05 2015 20:42
@butschster просто phpStorm ругается Undefined namespace Models
butschster
@butschster
Mar 05 2015 20:45

@Nayjest

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

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

kuzroman
@kuzroman
Mar 05 2015 20:46
@butschster какое дело. Если я Order.php переношу в каталог app, то указав use App\Order; в контроллере все работает, но из каталога app/Models не работает
может нужно где переопределить пространство?
Роман Сохарев
@greabock
Mar 05 2015 20:47
ты namespace в своем Order укажи
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:47
в файле модель Order.php в вверху написать <?php namespace App\Models;
butschster
@butschster
Mar 05 2015 20:48
Ну собственно я так понял это недостаток скоупов и к ним нужен определенный подход :) и исправить не получится
kuzroman
@kuzroman
Mar 05 2015 20:49
Профит))) Спасибо парни!
Роман Сохарев
@greabock
Mar 05 2015 20:49
@butschster я так до сих пор и не понял, что у нас там с этими архивами-неархивами
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:49
@butschster так ты дашь распечатку биндингов?
Роман Сохарев
@greabock
Mar 05 2015 20:49
я просто самой проблемы не виду
создал два скоупа, и рулишь ими
butschster
@butschster
Mar 05 2015 20:49
@vanchelo я же их приводил выше
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:49
именно распечатку?
butschster
@butschster
Mar 05 2015 20:49
да
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:50
всего того что билдер насобирал?
я как-то пропустил этот момент
$builder->getRawBindings
butschster
@butschster
Mar 05 2015 20:50
$builder->whereIn('status', ['new', 'approved']);
//$builder::bindings['where'] = 'new', 'approved'

// Удаляем условие
$this->remove($builder, $model);

unset($query->wheres[$key]);
$query->wheres = array_values($query->wheres);

//$builder::bindings['where'] = 'new', 'approved'

// Новое условие
 $builder->getQuery()->where($model->getQualifiedStatusColumn(), 'archive');
//$builder::bindings['where'] = 'new', 'approved', 'archive'

// Т.е. проблема в том, что из биндинга подставится первый параметр 'new' в новое условие
Роман Сохарев
@greabock
Mar 05 2015 20:51
@vanchelo мне кажется, нас пытаются обмануть )
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:51
=)
butschster
@butschster
Mar 05 2015 20:52
@greabock этот скоуп аналог softDelete из Laravel
в чем обман?
Этап создания условия where - добавление в массив параметра wheres аргументов условия, передача в параметр bindings['where'] значений условия
Brezhnev Ivan
@vanchelo
Mar 05 2015 20:54
придется самому пробовать) не дождусь распечаток билдера
Роман Сохарев
@greabock
Mar 05 2015 20:54
ага
butschster
@butschster
Mar 05 2015 20:55
далее если мы из параметра wheres удаляем удалем условие, но из bindings они никуда не деваются, они там остаются и соответсвенно сбивается порядок их подстановки
Роман Сохарев
@greabock
Mar 05 2015 20:58
@butschster давай с тобой поднимемся на верх, в контроллер или репозиторий, и посмотрим, как ты употребляешь эти скоупы для выборки
butschster
@butschster
Mar 05 2015 20:58

Вывести только архивные записи

Post::select()->where('key', '=', 'new')->where(....)->onlyArchived()->get();

Вывести все записи кроме архивных

Post::select()->get();
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:00
$builder = App\User::whereIn('status', ['new','approved'])->whereIn('status', ['new','approved']);
print_r($builder->getQuery()->getRawBindings()['where']);
Array
(
    [0] => new
    [1] => approved
    [2] => new
    [3] => approved
)
butschster
@butschster
Mar 05 2015 21:00
верно, здесь все ок
это логично
Роман Сохарев
@greabock
Mar 05 2015 21:01
я ждал этой фразы
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:01
удалить биндинги можно только по значению
но как понять на каком месте значение?
просмотреть массив wheres?
butschster
@butschster
Mar 05 2015 21:01
$builder = App\User::where('another_key', 'new')->whereIn('status', ['new','approved']);
нет, это не поможет
вот пример, который сделает биндинг
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:02
Array
(
    [0] => Array
        (
            [type] => In
            [column] => status
            [values] => Array
                (
                    [0] => new
                    [1] => approved
                )

            [boolean] => and
        )

    [1] => Array
        (
            [type] => In
            [column] => status
            [values] => Array
                (
                    [0] => new
                    [1] => approved
                )

            [boolean] => and
        )

)
смотрим тип условия и колонку
butschster
@butschster
Mar 05 2015 21:02
bindings protectred
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:03
не
есть же метод clean
не, этот не то
butschster
@butschster
Mar 05 2015 21:04
cleanBindings
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:05
он не то делает)
чистит от экспрешенов
жаль что нет массива связей биндингов и условий
со ссылками
было бы удобнее
или в условия засунули бы ссылки на биндинги
собственно как грибок и сказал двумя скоупами решать надо
butschster
@butschster
Mar 05 2015 21:07
не совсем понимаю
Роман Сохарев
@greabock
Mar 05 2015 21:08
ну это два разных скоупа
butschster
@butschster
Mar 05 2015 21:08
ну запрос то один :)
эта пробелма тупо решается в моделе написанием скоупа локального
Роман Сохарев
@greabock
Mar 05 2015 21:09
один where status = archived
другой were status <> archived
butschster
@butschster
Mar 05 2015 21:09
но изначально я советовался насчет того есть ли метод избеждать данной проблемы, может я чего не заметил при изучении
@greabock предтавь модель, ты ей указал два трейта с глобальными скоупами, каждый из них в методе apply выполняет код фильтрации
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:10
не, всё ты заметил
да, есть тут косяк
Роман Сохарев
@greabock
Mar 05 2015 21:11
were status <> archived - глобальный скоуп, так?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:11
можно вызывать конечно его первым, но это реальный костыль
butschster
@butschster
Mar 05 2015 21:11
любом случае не корректно видимо работает удаление условий
а второй глобальный скоуп were status = archived
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:13
не совершенны они)
наверное тейлор их прикрутил чтобы были
butschster
@butschster
Mar 05 2015 21:13
ладно, ребята, пора идти, спасибо! Было интересно. Знаю теперь куда обращаться
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:14
удачи
censoredgit
@censoredgit
Mar 05 2015 21:35
тут есть такие кто использует репозитории в пятой ларе?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:35
да
censoredgit
@censoredgit
Mar 05 2015 21:36
какой в них смысл конкретно в этом фреймворке?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:36
этот паттерн от фрейма не зависит
censoredgit
@censoredgit
Mar 05 2015 21:38
но все же ?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:38
вопрос на самом деле "непонятный"
Роман Сохарев
@greabock
Mar 05 2015 21:38
Это просто посредник между контроллером и моделью, который доставляет что-то в базу или вытягивает из нее. Попутно он может что-то логировать, поджигать какие-то события или выполнять какие-то команды.
создан лишь для того, чтобы не балансировать между толстой моделью и толстым контроллером
censoredgit
@censoredgit
Mar 05 2015 21:41
@vanchelo у тебя есть метод в репозитории который только возвращает новый объект модели? (return new ModelName())
Роман Сохарев
@greabock
Mar 05 2015 21:41
ну и конечно же для того, чтобы ослабить связь между моделью и контроллером
censoredgit
@censoredgit
Mar 05 2015 21:42
@greabock чувствуется ты смешал тут сервис с репозиторием
Роман Сохарев
@greabock
Mar 05 2015 21:42
нет, ничего не смешал
и репозиторий не должен инстанцировать модели
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:42
function newEmpty() { return $this->model->newInstance(); }
если нужна пустая модель
@censoredgit в чем проблема?
Роман Сохарев
@greabock
Mar 05 2015 21:43
@vanchelo а мне кажется это не верным =(
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:44
почему?
censoredgit
@censoredgit
Mar 05 2015 21:44
@vanchelo в контроллере или команде ты используешь только этот метод чтоб получить новый инстанс модели?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:44
?
нет, я использую еще менеджеров
репозиторий не занимается морфингом моделей
только достает
но ничего плохого не вижу это в репах делать
censoredgit
@censoredgit
Mar 05 2015 21:45
@vanchelo а в менеджере метод использует этот репозиторий чтоб вернуть новый инстанс ?
Роман Сохарев
@greabock
Mar 05 2015 21:45
мне он видится, как бабка в гардеробе. Ты снимаешь куртку - отдаешь ей. Она идет вешает ее на вешалку, дает тебе номерок. Ты потом приходишь с этим номерком, отдаешь ей, она возвращает тебе куртку, делает какие-то записи в журнале. С хрена ли эта бабка должна шубы шить?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:46
нет, если я юзаю менеджер с репой то у меня репа не возвращает инстансы пустые
вот менеджер и шьет шубы
Роман Сохарев
@greabock
Mar 05 2015 21:47
вот это уже другой разговор )
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:47
но если следовать логике грибка, то должна быть швея, шредер, дублер
censoredgit
@censoredgit
Mar 05 2015 21:47
@vanchelo ну менеджер всегда обращается к репозиторию чтоб получить эту модель?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:47
нет
какую эту?
менеджер с репой не связан
хотя может быть один метод get($id)
там можно репу подсунуть
censoredgit
@censoredgit
Mar 05 2015 21:48
@vanchelo т.е. у менеджер твой может сделать new ModelName() ?
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:48
не
он можешь сделать это или через контейнер
у меня такое чувство что ты ищешь за что зацепится)
censoredgit
@censoredgit
Mar 05 2015 21:49
я понять хочу)
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:49
я понимаю что ты пытаешься этими вопроса понять
ага, вот тут ты new юзаешь
злодей какой)
censoredgit
@censoredgit
Mar 05 2015 21:50
по идеи если мы используем репозитории , то мы 100% должны обращаться к ним чтоб получить модель , иначе смысла от них нету
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:51
модель из базы да
пустой инстанс нет
репозиторий ведь не шьет модели
это как посыльный
censoredgit
@censoredgit
Mar 05 2015 21:51
почти всегда приводят пример с БД и Массивом
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:51
служба доставки
сегодня на самолете доставляли, завтра на такси
censoredgit
@censoredgit
Mar 05 2015 21:52
типа мы всегда можем подменить IDbRepository на IArrayRepository, что ты в этом случае будешь делать?
с новым инстансом
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:52
так нельзя
тогда тебе нужно писать еще одну абстракцию
через которую ты будешь модели дергать
чтобы она возвращала массивы вместо объектов
репозиторию вообще должно быть пофигу объекты у тебя или массивы
censoredgit
@censoredgit
Mar 05 2015 21:58
да это понятно, но что будет если ты забиндишь IPostRepository на ArrayPostRepository , но в коде где возвращается инстанс у тебя будет возвращаться Модель которая работает с БД , а не с массивом?
тут array можно заменить на ту же монго
Роман Сохарев
@greabock
Mar 05 2015 21:58
ну тут хз... как-то странно было бы если б мы в гардеробе боеприпасы складировали. Просто реопзиторий должен вместе с менеджером и деструктором в одном комплекте поставляться, одним пакетом.
вот пример репы абстрактной
Роман Сохарев
@greabock
Mar 05 2015 21:59
public function instance(array $attributes = array())
{
    $model = $this->getModel();
    return new $model($attributes);
}
от туда
Brezhnev Ivan
@vanchelo
Mar 05 2015 21:59
какой-то интересный у него реп
он хранит данные
items
Роман Сохарев
@greabock
Mar 05 2015 22:00
=)
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:00
у него items это или абстрактная модель или билдер
как-то странно назвал
Роман Сохарев
@greabock
Mar 05 2015 22:00
это скорее всего on the fly репа. То есть типа если ты один раз что-то дернул, то второй раз базу можно и не трогать.
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:01
вот тут он и создает объекты
Роман Сохарев
@greabock
Mar 05 2015 22:03

Arrounded is before anything a set of personnal helpers I carry arround from projects to projects, so I don't guarantee anything as far as how stable it is.

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

Brezhnev Ivan
@vanchelo
Mar 05 2015 22:03
конечно)
так все и делают)
censoredgit
@censoredgit
Mar 05 2015 22:04
@vanchelo твой менеджер это что-то типа сервисного слоя(сервис)?
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:08
@greabock по поводу предыдущей беседы
class Status {
    function __toString() {
        return 'status';
    }
}

class Value implements \Illuminate\Contracts\Support\Arrayable {
    protected $values;

    function __construct($values) {
        $this->values = $values;
    }

    function toArray() {
        return $this->values;
    }
}

$builder = App\User::whereIn(new Status, new Value([1,2]));
print_r($builder->toSql());
echo PHP_EOL;
print_r($builder->getQuery()->wheres);
print_r($builder->getQuery()->getRawBindings()['where']);
вот было бы здорово, если бы билдер умел биндить объекты
select * from `users` where `status` in ()
Array
(
    [0] => Array
        (
            [type] => In
            [column] => Status Object
                (
                )

            [values] => Value Object
                (
                    [values:protected] => Array
                        (
                            [0] => 1
                            [1] => 2
                        )

                )

            [boolean] => and
        )

)
Array
(
    [0] => Value Object
        (
            [values:protected] => Array
                (
                    [0] => 1
                    [1] => 2
                )

        )

)
а оно вон как выходит
получается что можно только условие убить легко, т.к. у нас объект, находим его в массиве и грохаем
а вот с биндингами вилы
жаль что в пхп нет Arrayble интерфейса
с методом __toArray()
хотя можно руками попробовать биндинги поставить
поглядите какая репа на должна быть
Роман Сохарев
@greabock
Mar 05 2015 22:12
я кстати, форумы сейчас дочитаю, и решу эту проблему с неведомыми скоупами. Зацепило меня прям...
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:12
давай
Роман Сохарев
@greabock
Mar 05 2015 22:13
обратите внимание, никакого инстанцирования ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:13
)
там вообще магия)
мы получаем из базы всегда массив
и сами распихиваем его по моделям
а в репу передаем как раз хранилище а не модель
но в ларке модель и есть хранилище
вот с этим и беда
Роман Сохарев
@greabock
Mar 05 2015 22:15
нужно больше слоев абстракции
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:15
я как-то читал за DDD и Data-driven design
на хабре
Роман Сохарев
@greabock
Mar 05 2015 22:16
ты опять про тот пост "почитайте эти книжки"? ))
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:16
нее
так вот они пишут что есть такая штука, если сильно по DDD заморочится получим в реузультате amenic модели которые ничего не умеют
что на корню ломает саму идею ООП
и мы скатываемся к функциональщине
Роман Сохарев
@greabock
Mar 05 2015 22:17
хаха
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:17
ну т.е. у нас модель получается DTA
которая только данные имеет и геттеры и сеттеры
но ничего не умеет
и мы ей везде суем чтобы с ней что-то сделать)
как в Вие, поднимите мне веки
ВекоПодниматель(Вий)
РукоСгибатель
Шагатель
и т.д.)
где это должно быть?
модель должна это уметь или какая-то служба?
Роман Сохарев
@greabock
Mar 05 2015 22:19
это уже датамапер какой-то получается.
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:19
вот щас модно CommandBus
раньше всё или в контроллеры пихали или в модели
Роман Сохарев
@greabock
Mar 05 2015 22:20
я вообще для него вижу два с половиной кейса
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:20
в контроллеры пихать вредно
Роман Сохарев
@greabock
Mar 05 2015 22:20
не понимаю я этот комманд бас
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:20
т.к. если решил из консоли запилить что-то или апи вздумал подключить, всё беда
Роман Сохарев
@greabock
Mar 05 2015 22:21
это да
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:21
да, комманд бас это очередная хрень которая призвана решить какие-то проблемы
мы создаем проблему а потом прикручиваем команд бас?
интересно как в крупных проектах живут все эти паттерны
Роман Сохарев
@greabock
Mar 05 2015 22:22

как там эта цитата? что-то вроде:

Любую проблему в программировании можно решить дополнительным слоем абстракции... кроме проблемы излишней абстракции

Brezhnev Ivan
@vanchelo
Mar 05 2015 22:22
ага)
ларка по этому пути идет)
Роман Сохарев
@greabock
Mar 05 2015 22:23
вашпе
надо познать дзен
Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.
по Фаулеру выходит что репа должны только отдавать записи
а вот в MS по другому думают https://msdn.microsoft.com/en-us/library/ff649690.aspx
у них репа в двух направлениях работает

@greabock

it can be worthwhile to build another layer of abstraction

везде абстракции)
может я ошибаюсь на счет репы Фаулера?
Роман Сохарев
@greabock
Mar 05 2015 22:33
окей, а вытаскивать их тогда что должно?
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:33
репа прослойка
вытаскивает сторадж
Роман Сохарев
@greabock
Mar 05 2015 22:34
это какая-то странная хрень
Посредничает между уровнями области определения и распределения данных (domain and data mapping layers), используя интерфейс, схожий с коллекциями для доступа к объектам области определения.
Роман Сохарев
@greabock
Mar 05 2015 22:35
Сторейдж происходит от слова store что буквально означает "хранить"
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:35
ну да, не сторадж
а ты не гуглил на тему репозиториев?
вроде как старая тема
Роман Сохарев
@greabock
Mar 05 2015 22:36
гуглил
и у всех свой взгляд
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:36
значит ты видел эти статьи)
не буду копипастить)
у меня нет своего взгляда
т.к. не я его создал
censoredgit
@censoredgit
Mar 05 2015 22:37
Для себя решил , что в ларе нафиг не нужны репозитории и возможно команды. Буду использовать сервисы =) т.е. логика с контроллера перейдет не в команду, а в сервис. А всякие методы для работы с моделью, в модели и останутся .
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:37
скоупами можно рулить сложные запросы
Роман Сохарев
@greabock
Mar 05 2015 22:37
Repository от слова posit что применительно к предметам означает ставить/класть
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:38
а большие и жирные скоупы хранить в трейтах
или в одельных классах
и подключать по необходимости
@greabock что тогда означает re?
обычно re это деструктивный процесс
реФорма - разрушение предыдущей формы
Роман Сохарев
@greabock
Mar 05 2015 22:40
сервис - это такой паттерн, когда ты понятия не имеешь какой это паттерн, но класс полезный )
нет
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:40
как нет
Роман Сохарев
@greabock
Mar 05 2015 22:40
это ре = пере
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:40
правильно
Роман Сохарев
@greabock
Mar 05 2015 22:41
перекладывать, переставлять
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:41
чтобы сделать пере, сначала разрушают предыдущую форму
вот даже remove
что означает?
restore
reset
здесь ведь re приставка?
короче надо этимологию слов изучать
Роман Сохарев
@greabock
Mar 05 2015 22:43
store - в значении складывать
restore - в значении вернуть назад
видимо... ты прав
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:43
store в корзину, restore из корзины?
почему тогда remove подразумевает удаление?
всё верно
здесь re не приставка
или они не описали)
Роман Сохарев
@greabock
Mar 05 2015 22:50
приставка re- многофункциональна
назад, снова, против
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:51
вот кстати в репе можно использовать больше одной сущности?
@greabock твоя правда)
Роман Сохарев
@greabock
Mar 05 2015 22:52
ты имеешь ввиду связанные сущности?
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:53
связанные например неявно
или какой-то сложный запрос где билдером не обойтись
Роман Сохарев
@greabock
Mar 05 2015 22:54
вот я вообще хз
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:54
и я так же
Роман Сохарев
@greabock
Mar 05 2015 22:54
у меня уже что-то крыша едет от поиска right-way
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:54
))
тогда я спать пойду)
Роман Сохарев
@greabock
Mar 05 2015 22:54
я вот что понял
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:54
пусть переваривается )
что?
Роман Сохарев
@greabock
Mar 05 2015 22:55
в ларе репозитории (в эталонном виде) реально не нужны
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:55
в эталонном согласен
потому как модель по сути и есть репа
а если тестировать?
удобно ли?
Роман Сохарев
@greabock
Mar 05 2015 22:56
я в тестах не бум-бум, ты же знаешь
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:56
это пока не бум-бум)
Роман Сохарев
@greabock
Mar 05 2015 22:56
ну да
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:57
если начнешь ковыряться в них разберешься быстро)
Роман Сохарев
@greabock
Mar 05 2015 22:58
в общем, я окончательно перегорел и ушел думать
Спокойной ночи тебе
Brezhnev Ivan
@vanchelo
Mar 05 2015 22:59
приятных
Alexander Popov
@ruelephant
Mar 05 2015 23:50
господи :(
посчитал бюджет, вроде неплохие деньги платят
но блин "тут на такси 500 рублей, тут ужин заказал за 1100"
спустил за 4 дня, около 10000
схожу с ума, опять без нефига выхожу к концу месяца
очень напрягся и вспомнил куда тратил, но 3 тысяч неучтенка