These are chat archives for yiisoft/yii2/rus

10th
May 2016
askanim
@askanim
May 10 2016 00:56
@dyar74 @aios а вот и можно всё сделать и выглядит это вполне красиво и аппетитно
@aios @dyar74
INSERT INTO user_group (user_id, type_id) 
SELECT 
    user_id, 
    type_id 
FROM 
    users 
    INNER JOIN user_type 
WHERE 
    user_id =: id 
    AND type_id =: type_group
Вот вам и запрос выбирающий данные из двух таблиц и заносящий в другую таблицу
@dyar74 и почему так не делают? если это сокращает код, и запрос к бд всего один посылается...
это оптимальнее двух запросов
Pavel Sokolov
@ComradePashka
May 10 2016 01:38
можно ваще пользователям тупо выдавать аккаунты на доступ к БД - пусть там сами апдейтят, вставляют, удаляют. следят за целостностью :) это тоже оптимальнее чем строить веб-сайт, учить там всякие фреймворки/CMS/ЯП
askanim
@askanim
May 10 2016 01:50
This message was deleted
This message was deleted
Ты хоть понял какую ты ща дичь сказал... При чём тут sql запросы и то что ты написал
там выше чувак написал что так не делается
This message was deleted
This message was deleted
я и спросил почему?
Vasily Belosloodcev
@bupy7
May 10 2016 03:16
@DevAndreyL принесут лично в руки под роспись
Yaroslav
@dyar74
May 10 2016 04:22
@askanim. С такими запросами или избыточность таблиц или скорее всего проблемы с логикой приложения
@askanim ну и еще перед инсертом как бы надо проверить а вдруг запись уже существует
Maksim Kiselev
@MKiselev
May 10 2016 05:37
Сап, разрабы.
Yaroslav
@dyar74
May 10 2016 06:22
всем привет :)
KarmaBot
@KarmaBot
May 10 2016 06:22
Hello, @dyar74!
Maksim Kiselev
@MKiselev
May 10 2016 06:23
@dyar74 привет, какая специализация, с БД дружишь?
KarmaBot
@KarmaBot
May 10 2016 06:23
Будь как дома, @MKiselev, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Maksim Kiselev
@MKiselev
May 10 2016 06:23
@KarmaBot go)
Yaroslav
@dyar74
May 10 2016 06:37
@MKiselev а какой вопрос ?
@MKiselev я дружу с гуглом и мануалами :)
Maksim Kiselev
@MKiselev
May 10 2016 06:40
Yaroslav
@dyar74
May 10 2016 06:41
@MKiselev постгресом не работал, так разворачивал на его базе 1С, но сам с ним не работал
Maksim Kiselev
@MKiselev
May 10 2016 06:41
Там не сколько постгрес, сколько работа с EAV Model.
Yaroslav
@dyar74
May 10 2016 06:47
@MKiselev сори это к гуру надо
Maksim Kiselev
@MKiselev
May 10 2016 06:50
@dyar74 не, это выпиливать надо. Обидно, что я всратый джун не знал на что нарываюсь используя EAV Model на таблице от 500К записей и кучей LEFT JOIN'ов)))
Шишки на практике конечно круто набивать, но если бы сразу знал best practics когда EAV заменяют JSONB, то жил бы припеваючи.
Dave
@aios
May 10 2016 07:26
@MKiselev а ты разве как то можешь от EAV уйти?
@MKiselev JSONB как то не варик мне кажется.
askanim
@askanim
May 10 2016 07:26
@dyar74 не понял тебя
Maksim Kiselev
@MKiselev
May 10 2016 07:27
@aios почему JSONB не варик?
askanim
@askanim
May 10 2016 07:27
@dyar74 у меня три таблицы в одной хранятся юзеры, в другой группы юзеров
Yaroslav
@dyar74
May 10 2016 07:27
@askanim а третья?
askanim
@askanim
May 10 2016 07:27
@dyar74 и в третей я храню айди юзера и его принадлежность к группе
@dyar74 то есть айди группы
Dave
@aios
May 10 2016 07:27
@MKiselev из пустого в порожнее. Кеширование и распределенность.
Maksim Kiselev
@MKiselev
May 10 2016 07:28
@askanim юзер может состоять в нескольких группах?
Yaroslav
@dyar74
May 10 2016 07:28
@askanim добавь два раза одно и тоже
Maksim Kiselev
@MKiselev
May 10 2016 07:28
@aios я не понял тебя.
askanim
@askanim
May 10 2016 07:28
@MKiselev да именно, затем я это и делал
Maksim Kiselev
@MKiselev
May 10 2016 07:28
@askanim а в чем вопрос?
askanim
@askanim
May 10 2016 07:28
@dyar74 там два раза одно и тоже не добавится с чего ты взял?
Dave
@aios
May 10 2016 07:29
@askanim решать проблему в лоб это не решение. в JSONB у тебя просто формат хранения меняется.
бля не тому...
askanim
@askanim
May 10 2016 07:29
@MKiselev нету его дуар говорит что этот запрос не такой
Yaroslav
@dyar74
May 10 2016 07:29
@askanim а как ты проверяешь или есть запись в базе
askanim
@askanim
May 10 2016 07:29
@dyar74 тебе весь код скинуть?
Yaroslav
@dyar74
May 10 2016 07:29
@askanim и смысл селектом добавлять в базу
askanim
@askanim
May 10 2016 07:29
@dyar74 ща погоди ссыль на гитхаб дам
Yaroslav
@dyar74
May 10 2016 07:30
@askanim из формы приходит и обновляй или инсерть
askanim
@askanim
May 10 2016 07:31
@dyar74 https://github.com/askanim/bike_001/blob/master/app/model/login/register.php
askanim
@askanim
May 10 2016 07:32
@dyar74 вот ты мне ща предлогаешь написать ещё строк 10 кода
Maksim Kiselev
@MKiselev
May 10 2016 07:32
@aios если есть что предложить дельное или знаешь как оптимизировать ЕАV, го в ЛС пообщаемся.
askanim
@askanim
May 10 2016 07:32
@dyar74 и ещё запрос к базе
@dyar74 и ещё проверку
@dyar74 когда я это всё сделал в одном запросе
@dyar74 это когда я уже буду настройки на сайте делать где будут изменяться данные пользователя там да нужны будут проверки
@dyar74 я понимаю к чему ты клонишь могут быть дубликаты да если послать голый запрос дубликат пройдёт.
@dyar74 но кто сказал что я потом буду добавлять голый запрос. Конечно будет проверка существует ли уже такой пользователь с такой же группой в таблице
Yaroslav
@dyar74
May 10 2016 07:37
@askanim или будет ошибка если в настройках таблицы уникальный ключ юзер ид + груп ид
askanim
@askanim
May 10 2016 07:37
@dyar74 ар... не будет такой ошибки потому что там нет уникальных ключей
@dyar74 просто ты мне вчера предложил два запроса туда фигануть... Как я понял.
@dyar74 а там всё одним решается
Yaroslav
@dyar74
May 10 2016 07:38
@askanim если будет проверка, то смысла в таком запросе нет, погугли insert + select в одном запросе
Yaroslav
@dyar74
May 10 2016 07:39
@askanim оно не решается одним запросом, а создаются грабли в будущем
askanim
@askanim
May 10 2016 07:40
@dyar74 дык там не будет дубликатов
@dyar74 в регистрации один и тот же пользователь не дойдёт до этого запроса
@dyar74 вообще
@dyar74 скрипт выкинет ошибку
Yaroslav
@dyar74
May 10 2016 07:41
@askanim твои грабли, ты и думай. Еще не забывай об уязвимостях
askanim
@askanim
May 10 2016 07:41
@dyar74 точней он отработает и вернёт ему ошибку что такой пользовател ьв базе есть
Alexey Rogachev
@arogachev
May 10 2016 08:22
Всем привет
KarmaBot
@KarmaBot
May 10 2016 08:22
О! @arogachev! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
Alexey Rogachev
@arogachev
May 10 2016 08:22
:hand:
Maksim Kiselev
@MKiselev
May 10 2016 08:23
@arogachev привет)
KarmaBot
@KarmaBot
May 10 2016 08:23
@MKiselev и тебе не хворать :)
Alexey Rogachev
@arogachev
May 10 2016 08:24
Переношу сайт. Как запросы вида site.ru/index.php/more/.../ перенаправлять на site.ru/more/.../ 301 редиректом?
Что-то разнятся везде советы
Maksim Kiselev
@MKiselev
May 10 2016 08:27
@arogachev у тебя дофига чего в индексе поисковика?
Alexey Rogachev
@arogachev
May 10 2016 08:28
я вот тоже думаю... а может не морочиться и поисковики сами переиндексируют
новостей активных порядка 1500
и с десяток статических страниц
Maksim Kiselev
@MKiselev
May 10 2016 08:30
@arogachev есть трафик с поисковика приличный, то думаю 301 хорошее решение. Кармабот, загугли как избежать дублей при ЧПУ
KarmaBot
@KarmaBot
May 10 2016 08:30
скудновато инфы
по большей части русскоязычное и речь только про корень сайта
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:35
@arogachev мне предстоит аналогичная задача, и я собираюсь редиректы делать еще в nginx
если правило можно формализовать под одну регулярку, то nginx справится с этим блестяще
Alexey Rogachev
@arogachev
May 10 2016 08:36
@beowulfenator :hand: Круто) вот надо бы и разобраться
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:36
именно в этом?
Alexey Rogachev
@arogachev
May 10 2016 08:36
ну
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:36
сейчас покажу конфиг
Alexey Rogachev
@arogachev
May 10 2016 08:37
у меня основных проблемы 2
надо убрать index.php через 301
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:37
map $uri $new {
    include /etc/nginx/redirect.map;
}
это раз
Alexey Rogachev
@arogachev
May 10 2016 08:37
и 2я - есть рубрики новостей и на сайте сейчас получается так news-category-1/1-kak-kodit-na-yii2
а надо чтобы было news/1-kak-kodit-na-yii2
ну рубрик немного, 5 что ли
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:38
это 2
server {
    //... other stuff

    if ($new) {
        rewrite ^ $new redirect;
    }

    location / {
        try_files $uri $uri/  /index.php?$args;
    }

    //... other stuff
}
Alexey Rogachev
@arogachev
May 10 2016 08:38
т.е. все новости чтоб проходили через news
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:38
ну и сам редирект мап
куча строк вида:
Alexey Rogachev
@arogachev
May 10 2016 08:39
я думаю там регулярка нужна, что начинается request_uri с index.php
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:39
/channel/b-corps-on-rails /channel/startup-on-rails;
во
а теперь давай посмотрим регулярки
Alexey Rogachev
@arogachev
May 10 2016 08:39
и второе - > сохранить все после index.php в новом адресе
включая get параметры и т.п.
ну у меня немного проще, у меня сами slugи не меняются
возможно для статических страниц но их там штук 10 не больше
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:41
я бы на твоем месте сделал все именно через внешний файл, потому что тогда проще обновлять конфиг
а в этом файле:
Alexey Rogachev
@arogachev
May 10 2016 08:42
почему через внешний?
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:42
удобно модифицировать
ну и у меня там будет 1000 строк
значит про index.php делай так:
Alexey Rogachev
@arogachev
May 10 2016 08:42
у меня немного другая ситуация просто
т.е. на псевдокоде: location index.php вернуть request_uri Без index.php 301
а как там из строки удалить index.php чет не могу найти
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:43
location ~ ^/index.php {

}
вот так мы находим все, что начинается с /index.php
Alexey Rogachev
@arogachev
May 10 2016 08:44
так
видел еще вариации с if (request_uri = )
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:47
вроде на if ругаются
я вот подумал
server {
    rewrite ^/index.php/(.*)$ https://$host$1 permanent;
}
а вот так можно сделать?
даже вот так
Alexey Rogachev
@arogachev
May 10 2016 08:49
что есть $1 ?
служебная переменная, но что в ней
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:49
то, что в скобках
в регулярке выражения в скобках выделяются в переменные
$1 - первые скобки
Alexey Rogachev
@arogachev
May 10 2016 08:49
так
Permanent - Это 301
moved permanently, так?
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:50
вроде да
The return directive is the simpler of the two general-purpose directives and for that reason we recommend using it instead of rewrite when possible (more later about the why and when). You enclose the return in a server or location context that specifies the URLs to be rewritten, and it defines the corrected (rewritten) URL for the client to use in future requests for the resource.
т.е. лучше return а не rewrite
Maksim Kiselev
@MKiselev
May 10 2016 08:51
@arogachev почитай ещё про rel=canonical
Alexey Rogachev
@arogachev
May 10 2016 08:52
@MKiselev читал, а как это поможет в данном случае?
Maksim Kiselev
@MKiselev
May 10 2016 08:53
@arogachev это я тебе говорю к тому, чтобы если о поисковиках заботишься, то заюзать бы не помешало. Если просто редирект сделать на nginx сервере, то в чем проблема?
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:53
@MKiselev типа не редиректы делать, а на кривых страницах давать ссылки на правильные страницы через canonical?
Maksim Kiselev
@MKiselev
May 10 2016 08:53
Гугли nginx 301 redirect for index php
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:53
@arogachev насколько я вижу, return без регулярки, а rewrite с регуляркой
а тебе надо модифицировать URI
Maksim Kiselev
@MKiselev
May 10 2016 08:54
@beowulfenator редиректы тоже делать, просто на старых canonical объявить.
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:54
@MKiselev а как старые откроются, если редирект есть?
Alexey Rogachev
@arogachev
May 10 2016 08:54
@MKiselev на новом сайте нет дублей ссылок
получается что проиндексировано ранее поисковиками надо заредиректить на новый лад
более правильный
Maksim Kiselev
@MKiselev
May 10 2016 08:55
Ну так 301 код.
Alexey Rogachev
@arogachev
May 10 2016 08:55
location ~ ^/index.php
вот это у нас все что начинается с index.php
а дальше пока непонятно
Konstantin Sirotkin
@beowulfenator
May 10 2016 08:56
в смысле если твой сервер раньше выдавал документ по /old-uri.html, то два варианта, или ты настраиваешь сервер, чтобы по запросу на /old-uri.html он выдавал 301 редирект на /new-uri.html, или ты продолжаешь выдавать документ по /old-uri.html, но при этом также в заголовках сообщаешь, что канонический адрес - это /new-uri.html?
Dave
@aios
May 10 2016 08:56
Привет всем
KarmaBot
@KarmaBot
May 10 2016 08:56
@aios и тебе не хворать :)
Dave
@aios
May 10 2016 08:56
знает кто то опенкарт?
заказ нарисовался терять не хочу.
отдам с потрохами.
Alexey Rogachev
@arogachev
May 10 2016 08:58
хорошо хоть не битрикс)
Dave
@aios
May 10 2016 08:58
не я серьезно.
Maksim Kiselev
@MKiselev
May 10 2016 09:00
@aios немного баловался, есть альтернативные шаблоны где допилили кучу фич, платно правда, но оно того стоит. Комьюнити большое довольно.
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:00
@arogachev
server {
    location ~ ^/index.php(.*)$ {
        return 301 https://$host$1;
    }
}
?
Maksim Kiselev
@MKiselev
May 10 2016 09:02
@beowulfenator у меня для yii2 вот такое стоит:
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        try_files $uri =404;
    }
Alexey Rogachev
@arogachev
May 10 2016 09:02
@beowulfenator попробую, а хардкодить Https по-моему не гуд
может быть $scheme ? или что там у них есть
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:05
наверняка и домен у них тоже где-то есть в переменных - смотреть надо
Alexey Rogachev
@arogachev
May 10 2016 09:06
вроде работает
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:06
ну и отлично
Alexey Rogachev
@arogachev
May 10 2016 09:06
:beer:
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:06
наверное для твоей задачи мап-файл - это перебор
Alexey Rogachev
@arogachev
May 10 2016 09:06
да, но возможно придется заюзать для статики
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:06
(мне без него никак - кое-где меняется все)
Alexey Rogachev
@arogachev
May 10 2016 09:07
там около 10 статических страниц, и у них урлы кривота
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:07
нууу
Alexey Rogachev
@arogachev
May 10 2016 09:07
а точка звездочка это что?
(.*)
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:07
точка - любой символ
Alexey Rogachev
@arogachev
May 10 2016 09:07
любое количество любых символов
?
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:07
звездочка - 0 и больше повторений
да
Alexey Rogachev
@arogachev
May 10 2016 09:07
а все
ну и доллар конец регулярки
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:07
(.+) - это было бы 1 и больше любых символов
Alexey Rogachev
@arogachev
May 10 2016 09:08
теперь надо скомбинировать это с другими
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:08
ага, а крышка ^ - это начало строки
$ - конец строки, а не регулярки
Alexey Rogachev
@arogachev
May 10 2016 09:09
т.е. страницы вида site.ru/index.php/kategoriya-novostey-1/1-kak-pech-tort
надо редиректить на site.ru/news/1-kak-pech-tort
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:09
ща запилим
Alexey Rogachev
@arogachev
May 10 2016 09:09
@beowulfenator спасибо
KarmaBot
@KarmaBot
May 10 2016 09:09
Спасибо (+1) для @beowulfenator принято! Текущая карма +5.
Alexey Rogachev
@arogachev
May 10 2016 09:09
я полагаю просто выше кинуть locationы для этого
он же по приоритетности сверху вниз идет
чтоб 2 редиректа не делать
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:10
а категорий новостей много?
Alexey Rogachev
@arogachev
May 10 2016 09:10
таких категорий всего 5 кажется
так что не страшно
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:10
вообще, можно и в одну регулярку запихнуть
Alexey Rogachev
@arogachev
May 10 2016 09:11
а типа (cat1|cat2|cat3)
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:11
^/index.php/(slug1|slug2|slug3)/(.*)$
да
и тогда будет $2
Alexey Rogachev
@arogachev
May 10 2016 09:11
да, так лучше
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:11
или в первых скобках указать, что их не надо выносить в переменную
(?:slug1|slug2|slug3)
(если я ничего не путаю)
тогда вторые скобки останутся $1
Alexey Rogachev
@arogachev
May 10 2016 09:12
сейчас опробуем
/everybody stand back/
I know regular expressions
:)
Alexey Rogachev
@arogachev
May 10 2016 09:14
:smile:
регулярки - сила
не так часто приходится использовать правда
кое-что забывается
Alexey Rogachev
@arogachev
May 10 2016 09:20
(?:slug1|slug2|slug3) @beowulfenator так чет не пашет
http://lalka/index.php/analitika/1-kak-pech-tort -> http://lalka/news/1-kak-pech-tort/
как и ожидалось
а вот без trailing slash в конце получается так
http://lalka/index.php/analitika/1-kak-pech-tort -> http://lalkaanalitika/
лалкоаналитика одним словом :smile:
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:24
полностью блок как выглядит?
(конфигурации)
Alexey Rogachev
@arogachev
May 10 2016 09:28
ща
кстати я проверил ответ curlом, он корректен в обоих случаях
@beowulfenator
 location ~ /index.php/(?:analitika|ceny|gde-marzha)/(.*)$ {
     return 301 http://$host/news/$1;
 }
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:31
крышку в начале бы
location ~ ^/index.php...
Alexey Rogachev
@arogachev
May 10 2016 09:31
/
в конце слеш же)
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:32
крышка в начале нужна, чтобы оно не срабатывало на uri вида /foo/bar/index.php/ceny/foobar
так в итоге работает или нет?
Alexey Rogachev
@arogachev
May 10 2016 09:33
да крышка потерялась)
   location ~ ^/index.php/(?:analitika|ceny|gde-marzha)(.*)$ {
       return 301 http://$host/news/$1;
   }

   location ~ ^/index.php(.*)$ {
       return 301 http://$host$1;
   }
итоговый вариант
но есть проблемы по прежнему когда без слеша в конце
http://lalka/index.php/analitika/1-kak-pech-tort -> http://lalkaanalitika/
вот этот баг так и остался
скорей всего тут единицей становится уже analitika
а не все что после
а, или второе срабатывает еще правило
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:36
в первом странно получается
по идее /index.php/analitika/foobar делает $1="/foobar"
не будет там /news//foobar в результате?
Alexey Rogachev
@arogachev
May 10 2016 09:37
так и есть, курлом глянул
/news//1-kak-pech-tort
вот что получается
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:37
значит надо в первом редиректе http://$host/news$1;
Alexey Rogachev
@arogachev
May 10 2016 09:38
ну или как у тебя со слешем в конце
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:38
ну или так, да
просто странно
Alexey Rogachev
@arogachev
May 10 2016 09:38
странности) курлом ответ норм!
в браузере - сливает хост и название категории
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:39
убери второе правило и посмотри, срабатывает ли первое
Alexey Rogachev
@arogachev
May 10 2016 09:39
так я ее и дебажу, http://lalkaanalitika
получается
аа
ща
даже с 1м правилом такая ерунда
но почему курлом то ответ норм
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:45
может черт с ним, с этим "?:"?
сделать нормальные скобки и дать $2?
Alexey Rogachev
@arogachev
May 10 2016 09:46
ща опробуем
но это крайне странно
в курле норм а в браузере нет
@beowulfenator не помогло с $2 :smile:
а со слешем в конце - норм
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:53
а не может там быть каких-то других правил, которые применяются?
Alexey Rogachev
@arogachev
May 10 2016 09:54
в Nginx нету
там для фавикона, статики и проксируется на другой веб серв
Konstantin Sirotkin
@beowulfenator
May 10 2016 09:54
тогда идей нет
Alexey Rogachev
@arogachev
May 10 2016 09:54
This message was deleted
This message was deleted
Alexey Rogachev
@arogachev
May 10 2016 10:14
@beowulfenator все куда интереснее) проблема локальная, другой человек открыл и норм)
:smile: то ли браузер то ли какие-то настройки закосячились
Maksim Kiselev
@MKiselev
May 10 2016 10:15
@arogachev почисти кэш браузера, можешь быстро чекнуть через http://cmle.ru
Konstantin Sirotkin
@beowulfenator
May 10 2016 10:15
во как
Alexey Rogachev
@arogachev
May 10 2016 10:20
:+1:
кэш, собака
:angry:
Vasily Belosloodcev
@bupy7
May 10 2016 10:40
Почему в Yii2 DI такой конченный? Почему нельзя вызвать чо типо Yii::$app->di->get('Kakoyto\Bleat\Class') и получить его экземпляр, и позже, всегда дергать его из любого места. Зачем его объявление заранее? Мне мож там описывать нехер. Тупо надо иметь один экземпляр по всему приложению.
Я все.
Dave
@aios
May 10 2016 10:45
@bupy7 Laravel has you)
Vasily Belosloodcev
@bupy7
May 10 2016 10:46
А да, и сервис локатор как-то совсем что-то иное. Они не дополняют друг друга, а вообще как-то работают сами по себе. Попробуй дерни зависимостями какой-нибудь Connection и тебе покажут залупу, ибо он не сконфигурирован. А то, что в локатор посмотреть - не царское это дело для DI в Yii2.
@aios шило на мыло?))
Dave
@aios
May 10 2016 10:46
@bupy7 нет - шило на лексус.
askanim
@askanim
May 10 2016 10:47
Кто с задачей сталкивался
Получать данные из wiki
ут
en
Vasily Belosloodcev
@bupy7
May 10 2016 10:48
@aios шило на шило)
Maksim Kiselev
@MKiselev
May 10 2016 10:48
@askanim в чем трабл, гугли wikipedia en
Vasily Belosloodcev
@bupy7
May 10 2016 10:49
@MKiselev его в гугле забанили, ну
Dave
@aios
May 10 2016 10:50
@bupy7 Берешь говно и DI-му, потом ебло M-A-Xима, охапку дров Yii2 готов.
askanim
@askanim
May 10 2016 10:50
@MKiselev мне нужно получать данные к себе на сайт от туда
Vasily Belosloodcev
@bupy7
May 10 2016 10:51
@aios в наше время нет смысла выбирать фреймворк вообще. все собирается из пакетов через composer. на github уже есть все, и все поддерживается людьми долгие годы. фреймворки скоро уйдут в прошлое.
Dave
@aios
May 10 2016 10:53
@bupy7 ага был тут один - доказывал мне тоже самое. мол все собирают все из чего то. ЭТОГО быть не должно. Должен быть один стандарт по которому работают все. Просто сам по суди - ты попадаешь в коллектив - где нужно думать кто пидрила а кто нет - или ты попадаешь в коллектив где ты точно знаешь что все пидрилы. Какая ситуация лучше?
Maksim Kiselev
@MKiselev
May 10 2016 10:53
@bupy7 пусть через TOR идет))
@askanim file_get_contents, curl?
Vasily Belosloodcev
@bupy7
May 10 2016 10:54
@aios не вижу вообще никакой связи. есть PSR, SOLID, DDD следовать этому достаточно, чтобы собрать годноту.
@aios zend-expressive пошли по этому правилу, и молодцы.
@aios это как один очень и очень хороший пример
Dave
@aios
May 10 2016 10:56
@bupy7 я не о том.
Vasily Belosloodcev
@bupy7
May 10 2016 10:56
@aios а о чем?
Dave
@aios
May 10 2016 10:57
@bupy7 мне абсолютно срать кто по какому правилу и куда пошел. Ты водитель - берешь машину в аренду. В одной Электронная коробка передач - в другой Механика? Какую выберешь?
Maksim Kiselev
@MKiselev
May 10 2016 10:57
@askanim когда встанет вопрос, "БЛЯ, А КАК МНЕ ПОЛУЧИТЬ ЭЛЕМЕНТ С ID = XYI?", тогда юзай http://php.net/manual/ru/refs.xml.php
Либо есть либа PHPQuery которая позволяет JQuery селекторы юзать.
Dave
@aios
May 10 2016 10:59
@bupy7 ну так механика или электроника?
askanim
@askanim
May 10 2016 11:00
@MKiselev Да мне в xml бы дадуматсья как сейчас получить, заголовок, дату рождения и инфо
Vasily Belosloodcev
@bupy7
May 10 2016 11:02
@aios да мне похуй, если честно, хоть телескопическая) ко всему есть ДОКА)))
Maksim Kiselev
@MKiselev
May 10 2016 11:02
@askanim были где-то наработки, но вроде как просрал.
Читай доку.
Dave
@aios
May 10 2016 11:02
@bupy7 ну ты усложняешь. представь вот твоя поломалась - в какую ты сядешь?
Vasily Belosloodcev
@bupy7
May 10 2016 11:02
@aios я сяду за вторую свою машину
@aios либо на моц, если тепло
Maksim Kiselev
@MKiselev
May 10 2016 11:03
@askanim http://php.net/manual/ru/class.domxpath.php
Используй XPath, в комментах смотри пример.
KarmaBot
@KarmaBot
May 10 2016 11:03
@MKiselev, у нас тут принято писать кратко и по делу. А если нужно показать длинный код, то можно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Dave
@aios
May 10 2016 11:03
@bupy7 лады) я понял.
Vasily Belosloodcev
@bupy7
May 10 2016 11:04
@aios ко всему есть документация. этого достаточно)
Dave
@aios
May 10 2016 11:04
@bupy7 попробуем по другому. за тобой гоняются две женщины. одна хорошо готовит - другая - трахается. Какую выберешь?
Vasily Belosloodcev
@bupy7
May 10 2016 11:04
@aios сложный выбор, на самом деле
Maksim Kiselev
@MKiselev
May 10 2016 11:04
@aios это ты на что аналогию делаешь? Рили сложный выбор.
Dave
@aios
May 10 2016 11:05
@MKiselev да блять пытаюсь ему доказать что он в этой ситуации выбирать не будет
он сука сядет и подрочит вот в чем дело.
Vasily Belosloodcev
@bupy7
May 10 2016 11:05
@aios я не понимаю тебя)
Dave
@aios
May 10 2016 11:05
и с машиной - он не будет выбирать - а скажет " у меня есть чертеж - я соберу свою"
там у меня технологии PSR SOLID и DDD
она у меня летать будет.
и потом приезжает на СТО
а ему говорят - мы такой машины не знаем
Vasily Belosloodcev
@bupy7
May 10 2016 11:06
@aios ага, машину сам собрал, и поехал на СТО))) ты втираешь какую-то дичь)
@aios мне в общем-то так и говорят всегда, поэтому руками по книгам. книга лучший друг)
Dave
@aios
May 10 2016 11:06
@bupy7 ладно короче мы не поняли друг друга. остаемся при своем.
Maksim Kiselev
@MKiselev
May 10 2016 11:07
@bupy7 наверное собрал себе и братюням.
@bupy7 и попал под трамвай, а братюне машина очень нравится, чуть сломалась в СТО пригнал, а ему - "иди на хрен")
Vasily Belosloodcev
@bupy7
May 10 2016 11:09
@aios ты не втыкаешь, что на хайлоад проектах от фреймворка не остается ничего))) если там магазинчики пишешь - конечно, можно и конченный DI юзать, и JS в моделях, и все остальное.
Nuzsk
@Nuzsk
May 10 2016 11:10
а чем DI конченный, простите?
он не замедляет работу проекта, только старт слегка
Vasily Belosloodcev
@bupy7
May 10 2016 11:10
@Nuzsk у него своя идеология, в этом и конченный
@Nuzsk скорость не имеет значения
@Nuzsk я о его принципе работы
Nuzsk
@Nuzsk
May 10 2016 11:11
какая идеология?
Vasily Belosloodcev
@bupy7
May 10 2016 11:11
@Nuzsk хуевая)))
Nuzsk
@Nuzsk
May 10 2016 11:11
ну какая, какая?
Vasily Belosloodcev
@bupy7
May 10 2016 11:13
@Nuzsk к примеру, ты не сможешь дернуть какой-нибудь класс с зависимостью \yii\db\Connection заранее НЕ ОПИСАВ В DI ЭТОТ САМЫЙ CONNECTION... т.е. локатор для него неприступная крепость.
Maksim Kiselev
@MKiselev
May 10 2016 11:13
Вопрос от джуна, DI в YII2 это компоненты куда можно в конфиг задать параметр class который имплементирует некоторый интерфейс этого компонента?
Vasily Belosloodcev
@bupy7
May 10 2016 11:13
@Nuzsk ты не можешь дергать произвольные классы через DI
@Nuzsk заранее не описав их
Nuzsk
@Nuzsk
May 10 2016 11:13
@bupy7 можешь
Vasily Belosloodcev
@bupy7
May 10 2016 11:13
@Nuzsk покаж)
Nuzsk
@Nuzsk
May 10 2016 11:13
привет аннотации с конкретной имплементацией
KarmaBot
@KarmaBot
May 10 2016 11:13
@Nuzsk даров!
Nuzsk
@Nuzsk
May 10 2016 11:14
@KarmaBot ты вовремя
Vasily Belosloodcev
@bupy7
May 10 2016 11:14
@Nuzsk а причем аннотация?) в yii есть аннотации?
Nuzsk
@Nuzsk
May 10 2016 11:14
@bupy7 если надо - есть
и yii не про ынтерпрайз\хайлоад, казалось бы
Vasily Belosloodcev
@bupy7
May 10 2016 11:14
@Nuzsk ну, аннотации это, как минимум плохо. плюсом, это не спасает от невозможности смотреть в локатор DIю
Nuzsk
@Nuzsk
May 10 2016 11:15
все можно если нужно
Vasily Belosloodcev
@bupy7
May 10 2016 11:15
@Nuzsk да, можно, можно переписать к хуям все)
@Nuzsk или тупо выкинуть
@Nuzsk и взять что-то нормальное
@Nuzsk а не придумывать велосипед
Maksim Kiselev
@MKiselev
May 10 2016 11:16
@bupy7 а какой норм фреймворк в мире PHP по твоему?)
Nuzsk
@Nuzsk
May 10 2016 11:16
хз о чем ты
DI вообще на твой код не влияет ровным счетом никак
Vasily Belosloodcev
@bupy7
May 10 2016 11:17
@MKiselev всеми я не пользовался, к сожалению, и не вижу смысла. поэтому не отвечу на этот вопрос.
Nuzsk
@Nuzsk
May 10 2016 11:17
если ты конечно придерживаешься принципа IoC
Vasily Belosloodcev
@bupy7
May 10 2016 11:17
@Nuzsk ты зендом пользовался?
Nuzsk
@Nuzsk
May 10 2016 11:17
@bupy7 конечно нет
Maksim Kiselev
@MKiselev
May 10 2016 11:17
@bupy7 на вопрос про DI ответь пожалуйста выше который.
Vasily Belosloodcev
@bupy7
May 10 2016 11:17
2ым
Nuzsk
@Nuzsk
May 10 2016 11:17
но видел
Vasily Belosloodcev
@bupy7
May 10 2016 11:17
@Nuzsk тогда разговор ни о чем. там DI кошерный.
@MKiselev я не могу найти, скопипасть
Nuzsk
@Nuzsk
May 10 2016 11:18
демагогия пошла
Vasily Belosloodcev
@bupy7
May 10 2016 11:19
я понимаю, что глупо что-то писать плохое в сообществе о Yii
надо идти в ветку лары
Nuzsk
@Nuzsk
May 10 2016 11:19
я не пишу на yii, лол
Vasily Belosloodcev
@bupy7
May 10 2016 11:19
или симфони
@Nuzsk тогда к чему ваши аргументы были, если вы даже не юзали?))
Nuzsk
@Nuzsk
May 10 2016 11:20
я хорошо знаю yii, но я не пишу на yii
Vasily Belosloodcev
@bupy7
May 10 2016 11:20
@Nuzsk а на чем пишите?
Nuzsk
@Nuzsk
May 10 2016 11:20
сейчас Ember, тк перешел на сторону фронтенда
Maksim Kiselev
@MKiselev
May 10 2016 11:28
@bupy7 в ЛС.
Почему Singleton анти-паттерн почти?
Nuzsk
@Nuzsk
May 10 2016 11:29
потому что не нужен
а где нужен - там не антипаттерн
Maksim Kiselev
@MKiselev
May 10 2016 11:29
Ну мне понадобился, ничего проще чем синглтон я не придумал.
Nuzsk
@Nuzsk
May 10 2016 11:30
окей, используй
но если можно без него - лучше без него
Maksim Kiselev
@MKiselev
May 10 2016 11:30
Не, может он и не нужен тут. Сейчас опишу как я его использую.
del

Есть поведение Access, в нем есть метод isAccessed($operation, $relation = null, $class = null) которое проверяет доступно ли некоторому юзеру какое-либо действие. Так же можно создать экземпляр объекта и вызвать метод напрямую, ну типа

$access = new \app\behaviors\Access();
$access->isAccessed('view', 'boss', 'app\models\Items'))

Есть места, где такое могло бы породить много инициализаций класса, поэтому я сделал AccessSingleton, который создает только один Instance класса Aceess.

Nuzsk
@Nuzsk
May 10 2016 11:35
в итоге у тебя много бехавиоров на самом деле используют один синглтон?
или один и тот же бехавиор цепляется в много мест?
Maksim Kiselev
@MKiselev
May 10 2016 11:37

@Nuzsk ну я показал, что поведение может использоваться без ownera(модели, к которой прикрепляем), поэтому чтобы не делать каждый раз:

(new \app\behaviors\Access())->isAccessed('view', 'boss', 'app\models\Items'))

Я ебанул синглтон.

Nuzsk
@Nuzsk
May 10 2016 11:38
убирай нафиг
Maksim Kiselev
@MKiselev
May 10 2016 11:38
Что убирать?
Nuzsk
@Nuzsk
May 10 2016 11:38
или сделай это в компоненте
или вовсе убери эту синглтонность )
я бы так сделал
Maksim Kiselev
@MKiselev
May 10 2016 11:41

@Nuzsk спасибо.
Ну я вот так и думал, что по феншую это наверное в компонент надо выделить.

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

KarmaBot
@KarmaBot
May 10 2016 11:41
Спасибо (+1) для @Nuzsk принято! Текущая карма +69.
Nuzsk
@Nuzsk
May 10 2016 11:41
@MKiselev еще есть вариант - работать через DI
Maksim Kiselev
@MKiselev
May 10 2016 11:41
@Nuzsk есть пример?
Nuzsk
@Nuzsk
May 10 2016 11:42
@MKiselev у твоего сервиса\поведения есть состояние?
Maksim Kiselev
@MKiselev
May 10 2016 11:48
Нету. Вообще проблема тут похоже архитектурная... Ведь даже с моим уровнем логики понятно, что поведение в текущей реализации слишком много на себя берет обязаностей, а именно возможность проверки прав доступа для пользователя без аттача к какому-либо объекту.
хочешь как синглтон его, хочешь как просто зависимость регистрируй
Alexey Rogachev
@arogachev
May 10 2016 11:56
:anguished:
Maksim Kiselev
@MKiselev
May 10 2016 11:56
This message was deleted
Nuzsk
@Nuzsk
May 10 2016 11:57
This message was deleted
:anguished:
Maksim Kiselev
@MKiselev
May 10 2016 11:58
O_o
This message was deleted
This message was deleted
atcq1
@atcq1
May 10 2016 11:59
@arogachev у вас все хорошо?
Denis Sevostyanov
@den67rus
May 10 2016 12:08
Всем привет, как в activeRecord правильно, составить такой запрос?
SELECT * FROM `items` WHERE (`catid` = 73 OR `catid` = 74) AND (`id` != 10868 OR `id` != 10869) AND `published` = 1
KarmaBot
@KarmaBot
May 10 2016 12:08
Не узнал тебя, @DEN007. Богатым будешь :)
Maksim Kiselev
@MKiselev
May 10 2016 12:16
@DEN007 ща напишу
$models = Items::find()
  ->where([
        'and',
        ['catid' => [73,74]],
        ['not', ['id' => [10868, 10869]]],
        ['published' => 1],
    ])
    ->all();

Вместо (catid = 73 OR catid = 74) будет catid IN(73, 74)
Вместо (id != 10868 OR id != 10869) будет id NOT IN(10869, 10868)

Проверяй.

Nuzsk
@Nuzsk
May 10 2016 12:22
аккуратно у тебя вышло
Revin Roman
@rmrevin
May 10 2016 12:23
@MKiselev только not in использует логику AND для сравненя (в сообщении выше OR используется, это либо неправильно составленый запрос, либо особое требование)
id NOT IN (10868, 10869) === (id != 10868 AND id != 10869)
Maksim Kiselev
@MKiselev
May 10 2016 12:24
Точно, там же OR.
askanim
@askanim
May 10 2016 12:26
@MKiselev подскажи плиз я вот получаю xml строку она сплошная идёт
@MKiselev а мне её не сплошную а отформатированную но в xml
Revin Roman
@rmrevin
May 10 2016 12:28
кстати
(`id` != 10868 OR `id` != 10869)
абсолютно всегда будет => true
Maksim Kiselev
@MKiselev
May 10 2016 12:30
$models = Items::find()
    ->where([
        'and',
        [
            'or',
            ['catid' => 73],
            ['catid' => 74],
        ],
        [
            'or',
            ['not', ['id' => 10868]],
            ['not', ['id' => 10869]],
        ],
        [
            'published' => 1
        ],
    ])
    ->all();
@askanim зачем тебе форматированный XML?
@askanim мне порой кажется, что тебя в гугле забанили. Вот ответ на SO http://stackoverflow.com/questions/3616540/format-xml-string
askanim
@askanim
May 10 2016 12:34
@MKiselev да уже получил :D
Maksim Kiselev
@MKiselev
May 10 2016 12:34
@askanim http://codepad.org/hbS5iOQD вот кратко и красиво.
askanim
@askanim
May 10 2016 12:34
@MKiselev ща другой вопрос кодировка не сохраняется
Maksim Kiselev
@MKiselev
May 10 2016 12:34
@askanim что значит кодировка не сохраняется?
askanim
@askanim
May 10 2016 12:36
@MKiselev ну я уже сохраняю полученное в xml файл, а там ужс... вот такой: Джоли
Maksim Kiselev
@MKiselev
May 10 2016 12:36
Ну покажи код.
Denis Sevostyanov
@den67rus
May 10 2016 12:37
@rmrevin по сути это исключение определенных id из выдачи, я не мог понять как делать каскады с использование or и and, в данном запросе логичнее все-таки использовать in
Maksim Kiselev
@MKiselev
May 10 2016 12:37
Я вот по столу бью, @MKiselev ну я уже сохраняю полученное в xml файл, а там ужс... вот такой: Джоли
Denis Sevostyanov
@den67rus
May 10 2016 12:37
@MKiselev спасибо, разобрался теперь.
KarmaBot
@KarmaBot
May 10 2016 12:37
Спасибо (+1) для @MKiselev принято! Текущая карма +4.
Maksim Kiselev
@MKiselev
May 10 2016 12:37
@DEN007 AR сам сделает in если ты сделаешь 'field' => [values]
Denis Sevostyanov
@den67rus
May 10 2016 12:40
@MKiselev да я уже понял как составился запрос ->createCommand()->rawSql;
Maksim Kiselev
@MKiselev
May 10 2016 12:41
@DEN007 :smile: хорошо. А то некоторые тут в гугл не могут))
askanim
@askanim
May 10 2016 12:43
@MKiselev я тебе прост осказал с чего ты взял что не могу=))
Maksim Kiselev
@MKiselev
May 10 2016 12:44
@askanim заметь, я лично на тебя не указывал :clap:
askanim
@askanim
May 10 2016 12:56
@MKiselev
$dom = new DOMDocument('1.0', 'utf-8');

$dom->loadXML($result);

// Сохраняем XML-документ как строку и выводим в браузер
$xml = $dom->saveXML();
echo htmlspecialchars($xml);
// Сохраняем XML-документ в файл
$dom->save('test.xml');
он не сохраняет в utf-8
он там даже в файле не выводитеё
Maksim Kiselev
@MKiselev
May 10 2016 12:57
Покажи откуда $results берется.
askanim
@askanim
May 10 2016 12:59
@MKiselev
$response = file_get_contents("http://ru.wikipedia.org/w/api.php", false, $context);
if (false === $response) {
return false;
}
return $response;
$result =  get_wiki_url("Анджелина Джоли")
Nuzsk
@Nuzsk
May 10 2016 13:00
ахах
if (false === $response) {
return false;
}
return $response;
Maksim Kiselev
@MKiselev
May 10 2016 13:00
@Nuzsk а чего смешного?)
askanim
@askanim
May 10 2016 13:00
@MKiselev не знаю
Nuzsk
@Nuzsk
May 10 2016 13:00
@MKiselev если респонс это фолс...то надо вернуть фолс? :smile:
return file_get_contents("http://ru.wikipedia.org/w/api.php", false, $context);
Maksim Kiselev
@MKiselev
May 10 2016 13:01
@Nuzsk так он похоже кусок кода вырвал и добавл return(по крайней мере надеюсь)
askanim
@askanim
May 10 2016 13:02
@MKiselev
function get_wiki_url($title) {

$context = stream_context_create(array(
'http' => array(
'method'=>"POST",
'content' => $reqdata = http_build_query(array(
'action' => 'opensearch',
'search' => $title,
'prop' => 'info',
'format' => 'xml',
'inprop' => 'url'
)),
'header' => implode("\r\n", array(
"Content-Length: " . strlen($reqdata),
"User-Agent: MyCuteBot/0.1",
"Connection: Close",
""
))
)));
$response = file_get_contents("http://ru.wikipedia.org/w/api.php", false, $context);
if (false === $response) {
return false;
}
Maksim Kiselev
@MKiselev
May 10 2016 13:02
Хотя нет, get_wiki_url
@askanim приучай себя к camelCase))
askanim
@askanim
May 10 2016 13:03
@MKiselev
return $response;
//парсим строку
/*$xml = simplexml_load_string($response);
return $xml->Section->Item;*/
}
Maksim Kiselev
@MKiselev
May 10 2016 13:03
@askanim ты задолбал кусками кода, скинь весь код на http://pastebin.com
askanim
@askanim
May 10 2016 13:05
@MKiselev http://pastebin.com/k4X8jh35
Maksim Kiselev
@MKiselev
May 10 2016 13:06

@askanim начиная с PHP 5.4+ имеется Array short syntax, используй его, код читаемее становится.

Было: $a = array('v', 'a', 's', 'y', 'a',);
Стало: $a = ['v', 'a', 's', 'y', 'a',];

askanim
@askanim
May 10 2016 13:06
@MKiselev да вкурсе привычка ... Постараюсь избавиться
Maksim Kiselev
@MKiselev
May 10 2016 13:12
@askanim у тебя xml файл-то сохраняется норм, а кракозябры в браузере по тому что используешь htmlspecialchars
askanim
@askanim
May 10 2016 13:14
@MKiselev у меня и в файле кракозябры
Maksim Kiselev
@MKiselev
May 10 2016 13:14
@askanim Да, вижу, ща.
askanim
@askanim
May 10 2016 13:14
@MKiselev я кажется понял я получаю у wiki xml без какой либо кодировки
askanim
@askanim
May 10 2016 13:30
@MKiselev чёто не могу ваще срастить
Maksim Kiselev
@MKiselev
May 10 2016 13:37

@askanim короче эти кракозябры это Html entity.

<?php
function get_wiki_url($title)
{
    $context = stream_context_create(array(
        'http' => array(
            'method' => "POST",
            'content' => $reqdata = http_build_query(array(
                'action' => 'opensearch',
                'search' => $title,
                'prop' => 'info',
                'format' => 'xml',
                'inprop' => 'url'
            )),
            'header' => implode("\r\n", array(
                "Content-Length: " . strlen($reqdata),
                "User-Agent: MyCuteBot/0.1",
                "Connection: Close",
                ""
            ))
        )));
    return file_get_contents("http://ru.wikipedia.org/w/api.php", false, $context);
}

$result =  html_entity_decode(get_wiki_url("Анджелина Джоли"));
echo $result;

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadXML($result);
$dom->save('test.xml');

DOMDocument похоже сам преобразует обратно кирилицу к Html entity, предполагаю по XML стандарту документ не должен содержать non ASCII символы, поэтому и кодирует.

KarmaBot
@KarmaBot
May 10 2016 13:37
@MKiselev, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
askanim
@askanim
May 10 2016 13:39
@MKiselev спасибо ща ещё про функцию почитаю
KarmaBot
@KarmaBot
May 10 2016 13:40
Спасибо (+1) для @MKiselev принято! Текущая карма +5.
Maksim Kiselev
@MKiselev
May 10 2016 13:40
@askanim я вроде разобрался, ща дам резалт.
Vitaly Voskobovich
@voskobovich
May 10 2016 13:43
Мужики, кто в курсе, почему может умирать csrf токен? Стоит оставить форму на какое-то время и она больше не отправляется из-за 400 ошибки (не валидный токен).
где вырубить время жизни токена?
askanim
@askanim
May 10 2016 13:46
@voskobovich может в куках данные из формы хранить?
Maksim Kiselev
@MKiselev
May 10 2016 13:46

@askanim

$dom = new DOMDocument();
$dom->loadXML(get_wiki_url("Анджелина Джоли"));
$dom->encoding = 'UTF-8';
$dom->save('test.xml');

Почитал за тебя XML стандарты. Слушай, ты так с помощью чата будешь всегда заказы делать?
Вот рабочий вариант, ты когда грузил XML файл, там не была указана кодировка. Её необходимо указать через свойство после загрузки $dom->encoding = 'UTF-8';

@askanim наркоман))
Vitaly Voskobovich
@voskobovich
May 10 2016 13:47
@askanim зачем?
Maksim Kiselev
@MKiselev
May 10 2016 13:47
@voskobovich не слушай его, он велосипеды пишет.
askanim
@askanim
May 10 2016 13:47
@voskobovich а потом их отправлять по нажатии на кнопку
Vitaly Voskobovich
@voskobovich
May 10 2016 13:47
@MKiselev есть мысли? а то в исходниках копаться не охота
askanim
@askanim
May 10 2016 13:48
@voskobovich в куках храни там время жизни куков укажешь
This message was deleted
@MKiselev я перелопатил уже весь php net, просто не знал что мне поможет
@MKiselev я даже incov использовал
@MKiselev но спасибо и это не совсем заказ...
@MKiselev это я разбирался как сохранить xml файл. Спасибо)
KarmaBot
@KarmaBot
May 10 2016 13:49
Спасибо (+1) для @MKiselev принято! Текущая карма +6.
Maksim Kiselev
@MKiselev
May 10 2016 13:51
@voskobovich ну чего ты их боишься? Я вот уже смотрю вникаю https://github.com/yiisoft/yii2/blob/master/framework/web/Request.php
Vitaly Voskobovich
@voskobovich
May 10 2016 13:51
@MKiselev я ничего не боюсь, просто такая простая проблема наверняка кто-то знает решение. Я удочку кинул и пока своими делами занимаюсь)
@MKiselev надешь решение, будет круто) я уже когда-то смотрел как устроена валадация запросов, но дело давно было уже не вспомню сходу
askanim
@askanim
May 10 2016 13:54
@MKiselev
 protected function generateCsrfToken()
    {
        $token = Yii::$app->getSecurity()->generateRandomString();
        if ($this->enableCsrfCookie) {
            $cookie = $this->createCsrfCookie($token);
            Yii::$app->getResponse()->getCookies()->add($cookie);
        } else {
            Yii::$app->getSession()->set($this->csrfParam, $token);
        }
        return $token;
    }
@MKiselev так токены это куки?
Maksim Kiselev
@MKiselev
May 10 2016 13:55
@askanim лолшто? Токены это токены.
Vitaly Voskobovich
@voskobovich
May 10 2016 13:55
@askanim =)
Dmitry Guzun
@webmoder
May 10 2016 13:55
@askanim токены != куки
Vitaly Voskobovich
@voskobovich
May 10 2016 13:56
токены !== куки
токены <> куки
токены NOT куки
askanim
@askanim
May 10 2016 13:56
@MKiselev там фигурирует слово куки
Dmitry Guzun
@webmoder
May 10 2016 13:56
@askanim токен является идентифицирующим фактором аутентификации
askanim
@askanim
May 10 2016 13:57
@MKiselev ну всм токены записываются в куки :?
Vitaly Voskobovich
@voskobovich
May 10 2016 13:57
@askanim так же там есть слово Сессия.
так че там, какого хрена они сдыхают через время? При том, что кука жива, авторизация в сервисе есть и все гуд. прсто форма тупо не отправляется
askanim
@askanim
May 10 2016 13:57
@MKiselev значит существование токена зависит напрямую от существования кука
Dmitry Guzun
@webmoder
May 10 2016 13:57
@askanim да токен записывается в куки, но ход твоих мыслей очень странный
Maksim Kiselev
@MKiselev
May 10 2016 13:58
Я короче с работы домой пошел, сами разбирайтесь))
askanim
@askanim
May 10 2016 13:58
@webmoder значит нужно увеличть время жизни кука
Maksim Kiselev
@MKiselev
May 10 2016 13:58
У МЕНЯ НА ЛОКАЛХОСТЕ ВСЁ РАБОТАЕТ
Dmitry Guzun
@webmoder
May 10 2016 13:58
@askanim куки всеголишь хранилище, токен не зависит от наличия механизма кук
Maksim Kiselev
@MKiselev
May 10 2016 13:58
@askanim наркоман, он же говорит они живые, там по умолчанию 0 expire стоит.
askanim
@askanim
May 10 2016 13:58
@webmoder но он говорит у него данные из формы потом не живут
Dmitry Guzun
@webmoder
May 10 2016 13:58
@askanim токен не зависит от куков в данном контексте
askanim
@askanim
May 10 2016 13:59

@voskobovich

Мужики, кто в курсе, почему может умирать csrf токен? Стоит оставить форму на какое-то время и она больше не отправляется из-за 400 ошибки (не валидный токен).

Dmitry Guzun
@webmoder
May 10 2016 13:59
@askanim у токена свое время жизни, увеличивая время жизни поставщика(куки) проблема не решается никоим образом
askanim
@askanim
May 10 2016 13:59
@webmoder @webmoder у него время жизнитокена пропадает
Vitaly Voskobovich
@voskobovich
May 10 2016 13:59
@webmoder о, у токена есть время жизни?
askanim
@askanim
May 10 2016 14:00
@webmoder странная фигня какая то
Dmitry Guzun
@webmoder
May 10 2016 14:00
@voskobovich как правило да, смотря где :)
Vitaly Voskobovich
@voskobovich
May 10 2016 14:00
ааа, йопта
askanim
@askanim
May 10 2016 14:01
@webmoder токен это что - то созданное внутри yii и что то живое?
Dmitry Guzun
@webmoder
May 10 2016 14:01
@voskobovich если мы говорим об устройстве токенов, то время жизни не является обязательным фактором
@askanim в данном контексте да
Vitaly Voskobovich
@voskobovich
May 10 2016 14:01
@webmoder ну я хочу чтобы токены оставлись но чтобы они не ломали мне работу сайта)
askanim
@askanim
May 10 2016 14:01
@webmoder от чего оно живёт? В php есть session, что может временно жить
@webmoder и есть куки
Dmitry Guzun
@webmoder
May 10 2016 14:02
@askanim читай токен = пароль
askanim
@askanim
May 10 2016 14:02
@webmoder ну так блин он должен куда то записывать в сессию или в куки
Dmitry Guzun
@webmoder
May 10 2016 14:02
@askanim который никак не завист от платформы браузера и коня в вакуме
Vitaly Voskobovich
@voskobovich
May 10 2016 14:02
@webmoder у меня сайт на аяксе и <head> может долго не одновляться как и формы в интерфейсе. Вот столкнулся с тем, что формы устаревают. Хочу найти причину.
askanim
@askanim
May 10 2016 14:02
@webmoder если он со временем исчезает это куки скорее всего
Vitaly Voskobovich
@voskobovich
May 10 2016 14:03
@askanim он НЕ исчезает
он просто перестает быть валидным
askanim
@askanim
May 10 2016 14:03
@voskobovich он меняется?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:03
а вот дальше я хз
askanim
@askanim
May 10 2016 14:03
@voskobovich что значит по твоему не валидный?
@voskobovich это значит он не действительный либо изминился
@voskobovich либо удалился
Dmitry Guzun
@webmoder
May 10 2016 14:03
@askanim он не исчезает и не меняется, у него время жизни истекает в данном случае
askanim
@askanim
May 10 2016 14:03
@webmoder бред
@webmoder я вот размышляю с точки зрения на php
Vitaly Voskobovich
@voskobovich
May 10 2016 14:04
я ж это в самом вопросе написал. Кто-то знает как попросить yii делать токены вечными?
askanim
@askanim
May 10 2016 14:04
@voskobovich да он в куки записывается !
Vitaly Voskobovich
@voskobovich
May 10 2016 14:04
@askanim мужик, не отвлекай.
askanim
@askanim
May 10 2016 14:04
@voskobovich я даже скинул где
Vitaly Voskobovich
@voskobovich
May 10 2016 14:04
я понимаю что ты учишься и все интересно но…)
давай ответ найдем и дальше можно вопрсоы задавать какие хочешь)
Dmitry Guzun
@webmoder
May 10 2016 14:04
@askanim почитай про механику
askanim
@askanim
May 10 2016 14:04
protected function generateCsrfToken()
    {
        $token = Yii::$app->getSecurity()->generateRandomString();
        if ($this->enableCsrfCookie) {
            $cookie = $this->createCsrfCookie($token);
            Yii::$app->getResponse()->getCookies()->add($cookie);
        } else {
            Yii::$app->getSession()->set($this->csrfParam, $token);
        }
        return $token;
    }
чё вы мне парите токе создан и записан в куки
Vitaly Voskobovich
@voskobovich
May 10 2016 14:05
ты реально не догоняешь
мне генерация докена до сраки
есть механизм валидации этого токена
в результате система говорит да или нет
Dmitry Guzun
@webmoder
May 10 2016 14:06
@voskobovich какой Yii?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:06
там ответ, мне дешевле самом у в код залезть и глянуть че к чему, если ты мешать будешь)
@webmoder второй
коем-то веке вошел в чатик к пацанам потрындеть)
Dmitry Guzun
@webmoder
May 10 2016 14:07
@voskobovich ты генерируешь meta csrf-token в head?
и его используешь?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:08
@webmoder не, у меня весь интерфейс на pjax так что токен есть в самой html форме. Думаю он и юзается) хотя сейчас проверю
да
Dmitry Guzun
@webmoder
May 10 2016 14:09
@voskobovich http://zero-exception.blogspot.ru/2015/01/yii2-using-csrf-token.html
читай раздел * With Ajax
Vitaly Voskobovich
@voskobovich
May 10 2016 14:09
в хеаде тоже есть))
Dmitry Guzun
@webmoder
May 10 2016 14:10
а при ajax какой используешь?
глянь может поможет
askanim
@askanim
May 10 2016 14:11
Я здесь предполагая, что нет другого запроса на ваш бэкэнда из другого / вкладке окна браузера, потому что это может также изменить CSRF)

В настоящее время CSRF либо хранится в куки своей собственной или в сессии. Таким образом, в основном это истекает, если место, где она хранится истекает.

Поэтому в основном , если вы использовали Request :: enableCsrfCookie (который по умолчанию), убедитесь , что также обновить Request :: csrfCookie настройки истекает позже (вы можете добавить 'истекают' для этого). Основное значение для этого должно быть "сессия" (пока окно браузера не закроется).

Если вы не используете, что и CSRF хранится в сессии вы будете иметь, чтобы до TTL сессии.
Vitaly Voskobovich
@voskobovich
May 10 2016 14:11
@dyar74 вооо чет дельное, я до этого не догуглил
askanim
@askanim
May 10 2016 14:11
@voskobovich так там говорится что твои токены в куках хранятся и они истекают
@voskobovich и сессию закроешь тоже токен пропадёт
@webmoder
 public function getCsrfToken($regenerate = false)
    {
        if ($this->_csrfToken === null || $regenerate) {
            if ($regenerate || ($token = $this->loadCsrfToken()) === null) {
                $token = $this->generateCsrfToken();
            }
            // the mask doesn't need to be very random
            $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.';
            $mask = substr(str_shuffle(str_repeat($chars, 5)), 0, static::CSRF_MASK_LENGTH);
            // The + sign may be decoded as blank space later, which will fail the validation
            $this->_csrfToken = str_replace('+', '.', base64_encode($mask . $this->xorTokens($token, $mask)));
        }
        return $this->_csrfToken;
    }
Эта функция вызывается при отправки формы ?
не эта скорее вызывается при входе
Vitaly Voskobovich
@voskobovich
May 10 2016 14:13
@askanim авторизация не падает. А значит сессия и соответственно кука живы) Логично?
Dmitry Guzun
@webmoder
May 10 2016 14:13
@askanim по идее
askanim
@askanim
May 10 2016 14:13
@voskobovich куки не вечны
@voskobovich куки не сессия
Vitaly Voskobovich
@voskobovich
May 10 2016 14:13
ну когда кука умирает, умирает и сессия, так?
askanim
@askanim
May 10 2016 14:13
@voskobovich нет
Vitaly Voskobovich
@voskobovich
May 10 2016 14:14
ибо ИД сессия хранится в куке
askanim
@askanim
May 10 2016 14:14
@voskobovich сессия хранится на сервере
@voskobovich сессия к кукам вообще не чего не имеет общего
@voskobovich куки хранятся в браузере у клиента
Vitaly Voskobovich
@voskobovich
May 10 2016 14:14
@askanim я смотрю ты активно плюсик хочешь
askanim
@askanim
May 10 2016 14:14
@voskobovich сессии хранятся на сервере
Vitaly Voskobovich
@voskobovich
May 10 2016 14:14
решил мне всю мат часть напомнить)
Dmitry Guzun
@webmoder
May 10 2016 14:14
@askanim держи спасибо за старания :)
Vitaly Voskobovich
@voskobovich
May 10 2016 14:15
ок, считай что это я усвоил) дальше?
если кука сдохнет, то клиент потеряет связь с сессий на сервере, верно?
нет куки = нет ИД сессии = клиент забыл сессию = так?
askanim
@askanim
May 10 2016 14:16
@voskobovich ну такое можно устроить наверно поставить условие и при исчезновении кука закрыть сессию
Dmitry Guzun
@webmoder
May 10 2016 14:16
@KarmaBot что за дела?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:16
@askanim так вот, повторяю)
клиент остается авторизованный, все работает как и работало
авторизация есть, кука есть, все есть
что дальше?
Oleg
@Malezha
May 10 2016 14:17
@webmoder нужно в конце или в начала писать
@webmoder спс
KarmaBot
@KarmaBot
May 10 2016 14:17
Спасибо (+1) для @webmoder принято! Текущая карма +7.
Vitaly Voskobovich
@voskobovich
May 10 2016 14:18
смотри конфиг какой у меня
        'user' => [
            'loginUrl' => "http://account.{$domain}/auth/login",
            'identityCookie' => [
                'name' => '_identity',
                'httpOnly' => true,
                'domain' => ".{$domain}",
            ],
        ],
        'request' => [
            'cookieValidationKey' => '',
        ],
        'session' => [
            'cookieParams' => [
                'domain' => ".{$domain}",
                'httpOnly' => true,
            ],
        ],
Dmitry Guzun
@webmoder
May 10 2016 14:18
@Malezha спасибо за пояснение
KarmaBot
@KarmaBot
May 10 2016 14:18
Спасибо (+1) для @Malezha принято! Текущая карма +37.
Vitaly Voskobovich
@voskobovich
May 10 2016 14:18
время жизни не менял)
кароче влезу сам подебажу) расскажу топотом че было
@askanim спасибо за матчасть
KarmaBot
@KarmaBot
May 10 2016 14:20
Спасибо (+1) для @askanim принято! Текущая карма +4.
Vitaly Voskobovich
@voskobovich
May 10 2016 14:20
о, +4 тоже не плохо)
карма
KarmaBot
@KarmaBot
May 10 2016 14:20
@voskobovich, Ваша карма +77. Вы благодарили 22 раз.
- Достижения: "Находчивый", "Любитель сладкого", "Благодарный"
- Профиль voskobovich на yiiframework.ru
askanim
@askanim
May 10 2016 14:21
@voskobovich я ищу почему токен умирать может в yii
@voskobovich но думаю дело в том что куки умирают
Vitaly Voskobovich
@voskobovich
May 10 2016 14:21
@askanim давай) найдешь еще плюсик дам
askanim
@askanim
May 10 2016 14:21
@voskobovich и сессия на этом не заканчивается
Vitaly Voskobovich
@voskobovich
May 10 2016 14:21
у тебя развернут проект какой-то?
проведи эксперимент
askanim
@askanim
May 10 2016 14:21
@voskobovich я вообще на yii не работаю пока что
@voskobovich я на голом php
Vitaly Voskobovich
@voskobovich
May 10 2016 14:22
тогда ясно откуда все те мысли велосипедные)
пора на ии садиться
askanim
@askanim
May 10 2016 14:22
@voskobovich у меняв двиге есть хеш который хранится в сессии
Aleksandr Demchenko
@stronglab
May 10 2016 14:24
@askanim объективно, ты считаешь свой двиг лучше, чем фреймворк уровня yii?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:24
@askanim у меня тож много чего в двиге есть)
Dmitry Guzun
@webmoder
May 10 2016 14:25
@stronglab он для самообучения пошел по данному пути, а не из-за того что он напишет круче
Aleksandr Demchenko
@stronglab
May 10 2016 14:25
@voskobovich vvti?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:25
@stronglab drta!
Aleksandr Demchenko
@stronglab
May 10 2016 14:26
@voskobovich xnf?
Vitaly Voskobovich
@voskobovich
May 10 2016 14:26
@stronglab t!
askanim
@askanim
May 10 2016 14:26
@voskobovich http://yiiframework.ru/forum/viewtopic.php?t=36024
Vitaly Voskobovich
@voskobovich
May 10 2016 14:26
не делай так больше
ссылки вставляй ссылками
askanim
@askanim
May 10 2016 14:27
@stronglab нет
@voskobovich там найди пост
четвёртый сверху
там как раз сказано что токе в yii может хранистя либо в сессии либо в куках
Dave
@aios
May 10 2016 14:27
я просто ору с людей...
askanim
@askanim
May 10 2016 14:28
@voskobovich за это отвечает параметр enableCsrfCookie
@voskobovich нужно ему задать хранить токены в сессии
@voskobovich а проблему жизни сессии решить через реализацию Lock Screen.
@voskobovich https://toster.ru/q/203491
@voskobovich попробуйц может получится, там говорит чувак как увеличить время жизни сессии
Yury Izotov
@pandalowry
May 10 2016 14:33
всем привет )
KarmaBot
@KarmaBot
May 10 2016 14:33
@pandalowry, ну рассказывай. Как жизнь? :)
askanim
@askanim
May 10 2016 14:33
@voskobovich хотя странно у меянсессия бесконечно живёт на сайте и я ни каких параметров не задавал
@pandalowry дарова)
KarmaBot
@KarmaBot
May 10 2016 14:33
Приветствую тебя, @askanim!
Dmitry Guzun
@webmoder
May 10 2016 14:34
@pandalowry hi
Yury Izotov
@pandalowry
May 10 2016 14:34
@webmoder привет )
KarmaBot
@KarmaBot
May 10 2016 14:34
Hello, @pandalowry!
Yury Izotov
@pandalowry
May 10 2016 14:34
я как всегда пропустил все прения. Но это даже хорошо
askanim
@askanim
May 10 2016 14:37
@voskobovich попробовал увеличить сессию?
@pandalowry вот скажи токен умирает в юи когда время сессии истекает?
@pandalowry и какого чёрта время сессии истекает по времени а не по выходу сессии
Yury Izotov
@pandalowry
May 10 2016 14:40
@askanim не могу знать ) я не знаю php и yii
askanim
@askanim
May 10 2016 14:41
@pandalowry ты мне на такие вопросы отвечал
@pandalowry ты эт обязан знать :D Если ты знал ответы на те вопросы)
Yury Izotov
@pandalowry
May 10 2016 14:42
@askanim не больно то и сложные вопросы ) а реализацию сессий в php и ее обертку в yii я рили не знаю
но, хочу предостеречь от путаницы в головах
askanim
@askanim
May 10 2016 14:43
@pandalowry сессия сама по себе не умирает
@pandalowry в php
Maksim Kiselev
@MKiselev
May 10 2016 14:43
@pandalowry обёртка в Yii только для того, чтобы headers посылать до отдачи страницы, и предоставить ООП API для работы с сессиями.
askanim
@askanim
May 10 2016 14:43
@pandalowry только если закрыть браузер
@pandalowry это у куков есть какое то время жизни
@pandalowry как таковое
Maksim Kiselev
@MKiselev
May 10 2016 14:44
@askanim блять че ты несешь, Session identifier хранится в куках, куки могут быть бессрочными, РНР чистит иногда сессии на своей стороне.
Yury Izotov
@pandalowry
May 10 2016 14:44
@askanim сессии пхп юзают куки
askanim
@askanim
May 10 2016 14:44
@pandalowry а сессию нужно либо самому заставить умереть либо закрыть браузер
Yury Izotov
@pandalowry
May 10 2016 14:44
сессии в пхп - серверная часть + куки
@askanim это специально тебе сообщаю
Maksim Kiselev
@MKiselev
May 10 2016 14:45
Директива session.gc_maxlifetime указывает как раз время жизни сессий.
Yury Izotov
@pandalowry
May 10 2016 14:45
как правильно говорит @MKiselev , он понимает что сессии на сервере пхп и куки - 2 разных человека но связанные между собой (за счет реализации серверных сессий пхп неявно юзающих куки)
хотя я пхп не знаю че мне такие вопросы задавать )
askanim
@askanim
May 10 2016 14:46
@MKiselev @pandalowry http://php.net/manual/ru/intro.session.php
Maksim Kiselev
@MKiselev
May 10 2016 14:46

Директива session.gc_maxlifetime указывает как раз время жизни сессий.

Обосрался немного, но вот.
session.gc_maxlifetime integer
session.gc_maxlifetime задает отсрочку времени в секундах, после которой данные будут рассматриваться как "мусор" и потенциально будут удалены. Сбор мусора может произойти в течение старта сессии (в зависимости от значений session.gc_probability и session.gc_divisor).

@askanim и нахер ты доку кидаешь?
askanim
@askanim
May 10 2016 14:47
@pandalowry @MKiselev вы ща сказали что все сессии хранятся в куках
@MKiselev когда сессии хранятся на сервере
Yury Izotov
@pandalowry
May 10 2016 14:47
@askanim получше прочти доку какую ты читаешь
цитирую
Каждому посетителю сайта присваивается уникальный идентификатор, называемый идентификатором сессии (session id). Он хранится либо в cookie на стороне пользователя, либо передается через URL.
то есть сессия пхп хранится на сервере
Maksim Kiselev
@MKiselev
May 10 2016 14:48

@askanim

@askanim блять че ты несешь, Session identifier хранится в куках, куки могут быть бессрочными, РНР чистит иногда сессии на своей стороне.

Yury Izotov
@pandalowry
May 10 2016 14:48
ее идентификатор - в куке
Maksim Kiselev
@MKiselev
May 10 2016 14:48
Session identifier
Yury Izotov
@pandalowry
May 10 2016 14:48
поправьте если не прав. Мне позволительно я не знаток пхп
askanim
@askanim
May 10 2016 14:48
@MKiselev @pandalowry только id
@pandalowry всё остальное на сервере
Yury Izotov
@pandalowry
May 10 2016 14:48

@askanim

Session identifier

Maksim Kiselev
@MKiselev
May 10 2016 14:48
@askanim ты тупой что ли, я тебе 20 сообщений назад сказал, Session identifier хранится в куках.
Yury Izotov
@pandalowry
May 10 2016 14:49
@askanim тебе это полчаса 2 человека говорят, ты доку нам показываешь
Maksim Kiselev
@MKiselev
May 10 2016 14:49
@pandalowry он похоже тролль, пиздец у меня подгорает от его нубства.
askanim
@askanim
May 10 2016 14:49
@MKiselev @pandalowry я не правильно вас понял сорян
Yury Izotov
@pandalowry
May 10 2016 14:49
@MKiselev не думаю что тролль но нубас конечно ацкий )
askanim
@askanim
May 10 2016 14:50
@pandalowry иди в баню :D
Yury Izotov
@pandalowry
May 10 2016 14:50
@askanim за правду не обижаются Леня. Ты всем тут уже мозг вынес и не по разу
askanim
@askanim
May 10 2016 14:50
@pandalowry я не обижаюсь
Maksim Kiselev
@MKiselev
May 10 2016 14:50
@pandalowry не понимаю нахера тыкать людей работающих с PHP в доку, это пиздец обидно. При чем выше я ему таки неочевидные таски решал.
askanim
@askanim
May 10 2016 14:50
@pandalowry :S
Yury Izotov
@pandalowry
May 10 2016 14:50
@MKiselev ну меня тыкать еще можно я же не знаю php )
askanim
@askanim
May 10 2016 14:51
@MKiselev я просто id не увидел прости
@MKiselev :S
Yury Izotov
@pandalowry
May 10 2016 14:51
но даже моих вообще-то не экспертных знаний хватает чтоб отличать норм вопросы от безумных )
Maksim Kiselev
@MKiselev
May 10 2016 14:51
@pandalowry :smile:
askanim
@askanim
May 10 2016 14:51
@MKiselev дак куки на сессию по умолчанию бесрочные?
Yury Izotov
@pandalowry
May 10 2016 14:52
@askanim ты понимаешь что сам спросил? Он тебе 10 минут назад обьяснял о серверной сборке мусора и автоудалении сессий
xFalkoN
@xFalkoN
May 10 2016 14:52
Всем привет!
KarmaBot
@KarmaBot
May 10 2016 14:52
Будь как дома, @xFalkoN, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Yury Izotov
@pandalowry
May 10 2016 14:53
@askanim то есть теоретически можно заголовок в куки поставить бессрочный, но это не повлияет на утерю сессии (сборку мусора)
xFalkoN
@xFalkoN
May 10 2016 14:53
Я вижу у вас тут жара :) За сессии прояснить нннннннада?
Maksim Kiselev
@MKiselev
May 10 2016 14:53

@askanim

session.cookie_lifetime integer
session.cookie_lifetime указывает время жизни cookies, отправляемого в браузер клиента, в секундах. Значение 0 означает, что cookies будут валидны до закрытия браузера. По умолчанию равно 0. См. также session_get_cookie_params() и session_set_cookie_params().

session.gc_maxlifetime integer
session.gc_maxlifetime задает отсрочку времени в секундах, после которой данные будут рассматриваться как "мусор" и потенциально будут удалены. Сбор мусора может произойти в течение старта сессии (в зависимости от значений session.gc_probability и session.gc_divisor).

Yury Izotov
@pandalowry
May 10 2016 14:53
@xFalkoN вот проясни @askanim мы уже устали
@askanim ты понимаешь что сам спросил? Он тебе 10 минут назад обьяснял о серверной сборке мусора и автоудалении сессий
Oleg
@Malezha
May 10 2016 14:54
Сессии может хранить не только сам пых в файловой системе, но и memcache, redis или база данных и без автоочистки. Кука будет жить сколько, сколько её зададут.
askanim
@askanim
May 10 2016 14:54
@MKiselev а в yii также?
@MKiselev если также то почему у чувака схлопывается токен...
Maksim Kiselev
@MKiselev
May 10 2016 14:54
@askanim в yii обычные сессии и используются бля, там только ОБЁРТКА!
Nuzsk
@Nuzsk
May 10 2016 14:54
зачем ругаться?
askanim
@askanim
May 10 2016 14:55
@MKiselev тогда почему не живёт токен у чувака...
Yury Izotov
@pandalowry
May 10 2016 14:55
@Nuzsk привет )
KarmaBot
@KarmaBot
May 10 2016 14:55
Привет, @pandalowry! Проходи, присаживайся. В ногах правды нет :)
Maksim Kiselev
@MKiselev
May 10 2016 14:55

@MKiselev если также то почему у чувака схлопывается токен...

Не, ну он точно тролль))) Я откуда знаю где у него затупы при использовании pjax'a, он же не в ручную там токены проставляет.

Nuzsk
@Nuzsk
May 10 2016 14:55
@pandalowry и тебе
askanim
@askanim
May 10 2016 14:55
@MKiselev я просто спрашиваю мне интересно
Yury Izotov
@pandalowry
May 10 2016 14:55
@askanim начну издалека - ты yii поставил? работал с ним?
askanim
@askanim
May 10 2016 14:56
@MKiselev я знаю что ты на 99% процентов знаешь больше чем я
@pandalowry вот он мне его поставил @MKiselev
Maksim Kiselev
@MKiselev
May 10 2016 14:56
@askanim вот я бы знал почему у него умирает токен я бы молчал думаешь? Ну и логика у тебя.
Yaroslav
@dyar74
May 10 2016 14:56
@pandalowry. А зачем в чате о юии работать с юии :)
Arthur Abdullaev
@yutsura_twitter
May 10 2016 14:57
Привет, ребят! Какие самые важные моменты стоит знать о yii? Мне по работе нужно его за неделю освоить более-менее
KarmaBot
@KarmaBot
May 10 2016 14:57
@yutsura_twitter, ну рассказывай. Как жизнь? :)
Dmitry Guzun
@webmoder
May 10 2016 14:57
@askanim ты правильно делаешь что интересуешься, но неправильно делаешь выводы.
Проще сразу задать вопрос если тебе интересно, а не учить других что куки и сессии это разные вещи
Maksim Kiselev
@MKiselev
May 10 2016 14:57
@yutsura_twitter так пройдись по гайду.
Dmitry Guzun
@webmoder
May 10 2016 14:57
@askanim рано еще пока
Arthur Abdullaev
@yutsura_twitter
May 10 2016 14:57
@MKiselev прохожусь
просто может еще что подскажете
askanim
@askanim
May 10 2016 14:57
@webmoder не ну это так то разные вещи
Maksim Kiselev
@MKiselev
May 10 2016 14:58
@yutsura_twitter https://yiiframework.com.ua/ru/doc/guide/2/
На русском.
Dmitry Guzun
@webmoder
May 10 2016 14:58
@askanim а никто и не говорил что это одинаковые вещи
Yaroslav
@dyar74
May 10 2016 14:58
@yutsura_twitter будут конкретные вопросы пиши
Arthur Abdullaev
@yutsura_twitter
May 10 2016 14:59
@dyar74 окей
askanim
@askanim
May 10 2016 14:59
@webmoder Ладно я подгарел. Но мыслил в верном направлении
Nuzsk
@Nuzsk
May 10 2016 14:59
во что превратился yii чат...
Maksim Kiselev
@MKiselev
May 10 2016 14:59
@yutsura_twitter ну ещё Best practices почитай.
Nuzsk
@Nuzsk
May 10 2016 14:59
какие-то сраные велосипеды и нубские вопросы
xFalkoN
@xFalkoN
May 10 2016 14:59
А в чём вопрос, а то я не осилил простыню!? я так опнял что тип задаёт большой промежуток, а к примеру через 30 мин сессия накрывается, так?
Roman Salnikov
@RSalo
May 10 2016 14:59
как установить пэхапэ?
Oleg
@Malezha
May 10 2016 14:59
@Nuzsk тут просто не банят похоже =)
Dmitry Guzun
@webmoder
May 10 2016 14:59
@askanim мыслил да, излагал нет
Maksim Kiselev
@MKiselev
May 10 2016 15:00
@RSalo sudo apt-get install php
Nuzsk
@Nuzsk
May 10 2016 15:00
@Malezha стоило бы...
askanim
@askanim
May 10 2016 15:00
@webmoder ну дак я новичёк куда мне правильно то... Просто пытался донести как мог... своё предположение
Roman Salnikov
@RSalo
May 10 2016 15:00
@MKiselev а можно полный гайд?
xFalkoN
@xFalkoN
May 10 2016 15:00
@RSalo гугли как установить пэхапэ? ЗЫ =))
Dmitry Guzun
@webmoder
May 10 2016 15:00
@xFalkoN у чувака умирает токен при ajax, с этого и началось
askanim
@askanim
May 10 2016 15:00
@voskobovich
Мужики, кто в курсе, почему может умирать csrf токен? Стоит оставить форму на какое-то время и она больше не отправляется из-за 400 ошибки (не валидный токен).
вот в чём вопрос был
Maksim Kiselev
@MKiselev
May 10 2016 15:01
@RSalo https://github.com/yiisoft/yii2/tree/master/docs/guide-ru
Вот что на русском, там вниз листай маркдаун есть.
Yaroslav
@dyar74
May 10 2016 15:01
@RSalo а что такое пхп? ;)
Yury Izotov
@pandalowry
May 10 2016 15:01
@MKiselev опередил )
askanim
@askanim
May 10 2016 15:01
@xFalkoN мне кажется там кука умирает в которую положен токен
Maksim Kiselev
@MKiselev
May 10 2016 15:01
@dyar74 язык программирования, интерпритируемый, с динамической типизацией.
Roman Salnikov
@RSalo
May 10 2016 15:01
@MKiselev да не, для меня это слишком сложно. есть где можно нажать две кнопки и все будет делаться за тебя?
askanim
@askanim
May 10 2016 15:02
но это чисто предположение
Yury Izotov
@pandalowry
May 10 2016 15:02
@askanim как ты можешь знать "когда там кука умирает" то есть какое время жизни ее задано в заголовке http
Maksim Kiselev
@MKiselev
May 10 2016 15:02
@RSalo ну в %OS_NAME% Software centre зайди))
askanim
@askanim
May 10 2016 15:02
enableCsrfCookie
@pandalowry ну токен же умерает
Yury Izotov
@pandalowry
May 10 2016 15:02
я пока не увижу эту куку своими глазами (токенскую) и не прочту документацию по csrf в yii (а я не читал) не могу утверждать такое
Roman Salnikov
@RSalo
May 10 2016 15:03
а вы любите поиздеваться=(
askanim
@askanim
May 10 2016 15:03
@pandalowry я почитал что токены вносятся здесь enableCsrfCookie либо в куку либо в сессиию
xFalkoN
@xFalkoN
May 10 2016 15:03
@askanim По-моему всё изи у типа закончилась сессия!
askanim
@askanim
May 10 2016 15:03
@xFalkoN а в юи сессия не бесрочная?
Dmitry Guzun
@webmoder
May 10 2016 15:04
@xFalkoN тоже к этому склоняюсь, но утверждать не могу
Yury Izotov
@pandalowry
May 10 2016 15:04
@askanim ну токен же не кука. Токен это токен. Короче у него частная ситуация а ты все за нас уже решил )
askanim
@askanim
May 10 2016 15:04
@xFalkoN когда стандартно его устанавливаешь юи и там сессию открываешь она со сроком ?
Roman Salnikov
@RSalo
May 10 2016 15:04
по дефолту сессия 180 минут
Dmitry Guzun
@webmoder
May 10 2016 15:04
т.к про устройство csrf в yii не знаю ничего
Yury Izotov
@pandalowry
May 10 2016 15:04
т.к про устройство csrf в yii не знаю ничего
askanim
@askanim
May 10 2016 15:04
@RSalo почему я сам когда сессию открываю
Yury Izotov
@pandalowry
May 10 2016 15:04
слова мудрого человека
askanim
@askanim
May 10 2016 15:05
@RSalo у себя, на двиге, и пока я на кнопку выход их сессии не нажму хоть через неделю сяду... Она живая
xFalkoN
@xFalkoN
May 10 2016 15:05
@askanim Зависит от настроек.
askanim
@askanim
May 10 2016 15:05
@RSalo хотя я параметров не задавал...
Roman Salnikov
@RSalo
May 10 2016 15:05
@askanim мб session.cache_expire = 0 стоит в настройках?
askanim
@askanim
May 10 2016 15:05
@xFalkoN не задавал не чего я на ночь оставляю комп работать с утра сожусь тыкаю по личнмоу кабинету тыкаю меня не выбивает от туда
xFalkoN
@xFalkoN
May 10 2016 15:06
@xFalkoN так ещё мозги может делать настройка в php.ini
Dmitry Guzun
@webmoder
May 10 2016 15:06
@askanim а ты пробовал через неделю зайти?
askanim
@askanim
May 10 2016 15:06
@webmoder нет но через часиков 10-15 да
@webmoder но думаю неделю тоже продержит
@RSalo думаю да хотя я сам там ни чего не ставил
Dmitry Guzun
@webmoder
May 10 2016 15:06
@askanim но ты не проверял
Roman Salnikov
@RSalo
May 10 2016 15:06
в пхпинфо посмотри лайфтайм сессии
и все станет на места
askanim
@askanim
May 10 2016 15:07
@RSalo ща гляну
Yury Izotov
@pandalowry
May 10 2016 15:07
может быть еще веселее браузер в аноним режиме - автосброс сессий
короче в описанной проблеме более чем дофига мест где что нибудь может не так быть
по фотографии не лечим же
(с) Ванга
Maksim Kiselev
@MKiselev
May 10 2016 15:08
@askanim возьми и проверь, хватит нубские догадки бросать!
236286
@236286
May 10 2016 15:08
как дела тут?
Roman Salnikov
@RSalo
May 10 2016 15:08
@236286 помоги чуваку с сессиями
Nuzsk
@Nuzsk
May 10 2016 15:08
очень плохо
236286
@236286
May 10 2016 15:08
@Nuzsk Че там ?
@RSalo щас разберемся
Yury Izotov
@pandalowry
May 10 2016 15:09
@236286 приветствую
KarmaBot
@KarmaBot
May 10 2016 15:09
Прувет, @pandalowry!
Nuzsk
@Nuzsk
May 10 2016 15:09
@236286 велосипедом придавило
Roman Salnikov
@RSalo
May 10 2016 15:09
@Nuzsk костыли помогут
Yury Izotov
@pandalowry
May 10 2016 15:09
@Nuzsk мопед не мой честно
Dmitry Guzun
@webmoder
May 10 2016 15:09
@all слишком много спикеров, я сваливаю
236286
@236286
May 10 2016 15:09
@webmoder ты чё?
webmoder @webmoder избегает холивара
askanim
@askanim
May 10 2016 15:10
@MKiselev memcache.session_redundancy
Nuzsk @Nuzsk забегает в холивар
webmoder @webmoder :running:
pandalowry @pandalowry не понимает холивар если речь шла о догадке одного человека про сессии в продукте какой ему только что поставили
236286
@236286
May 10 2016 15:11
@webmoder вот тебя заставим программировать
bupy7 @bupy7 :alien: чиката
Yury Izotov
@pandalowry
May 10 2016 15:11
@bupy7 привет )
KarmaBot
@KarmaBot
May 10 2016 15:11
@pandalowry, привет, как настроение?
Dmitry Guzun
@webmoder
May 10 2016 15:11
@236286 why???
Vasily Belosloodcev
@bupy7
May 10 2016 15:11
@pandalowry здаров)
KarmaBot
@KarmaBot
May 10 2016 15:11
О! @bupy7! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
askanim
@askanim
May 10 2016 15:11
всем привет
KarmaBot
@KarmaBot
May 10 2016 15:11
@askanim, здравствуй.
Vasily Belosloodcev
@bupy7
May 10 2016 15:11
@KarmaBot пшел вон, халоп
Yury Izotov
@pandalowry
May 10 2016 15:11
@bupy7 Василий ) Коль ты мое имя разучил и мне не грех Вася, тебя помнить
Vasily Belosloodcev
@bupy7
May 10 2016 15:12
@pandalowry да пожалуйста, Юрий))) мне не жалко)
236286
@236286
May 10 2016 15:12
@webmoder все крепить тебя буду в программировании
Yury Izotov
@pandalowry
May 10 2016 15:12
@bupy7 :hand: рукопожатье
Dmitry Guzun
@webmoder
May 10 2016 15:12
@236286 why???
Vasily Belosloodcev
@bupy7
May 10 2016 15:12
@pandalowry :five:
Roman Salnikov
@RSalo
May 10 2016 15:13
заходят как-то юиишник, лаварелщик и рельсист в бар, а бармен им говорит - идите нахер из моего бара!
Yury Izotov
@pandalowry
May 10 2016 15:13
@RSalo а сам бармен на чем прогает
Roman Salnikov
@RSalo
May 10 2016 15:13
@pandalowry vim
236286
@236286
May 10 2016 15:13
@webmoder Покаяся, быдлокодер
Vasily Belosloodcev
@bupy7
May 10 2016 15:13
@RSalo vim'ом надо комп блокировать)
Yury Izotov
@pandalowry
May 10 2016 15:14
@RSalo прогать в редакторе - это мощь. Он тогда емаксистов еще не должен пускать
Vasily Belosloodcev
@bupy7
May 10 2016 15:14
@RSalo пароли это прошлый век)
Yury Izotov
@pandalowry
May 10 2016 15:14
и Столлмана
Dmitry Guzun
@webmoder
May 10 2016 15:14
@236286 мне кажется что ты перепутал жертву
askanim
@askanim
May 10 2016 15:15
@pandalowry ДА session.cookie_lifetime = 0 у меня в php info
236286
@236286
May 10 2016 15:15
@webmoder У тебя хороший код?
askanim
@askanim
May 10 2016 15:15
@pandalowry вот она у меня вечно и живёт
Dmitry Guzun
@webmoder
May 10 2016 15:16
@236286 смотря кто смотреть будет
Yury Izotov
@pandalowry
May 10 2016 15:16
далее все развивалось так - юиишник создал сеть баров, они работали неплохо и их было много. И он имел гешефт. Ларавельщик создал небольшую сеть баров какая работала клиентоориентированно и все равно имела гешефт. Рельсист создал один бар, в каком все было очень клиентоориентированно и кружки сами прилетали методом левитации к столику клиента. Многие находили это безумным. Бар был достропримечательностью и имел гешефт. И стали все жить поживать со своими барами
236286
@236286
May 10 2016 15:16
@webmoder Это хорошо тогда
Roman Salnikov
@RSalo
May 10 2016 15:16
@askanim я имел ввиду не кэш, а лайфтайм. строчкой ошибся
ну ты бы сам понял
askanim
@askanim
May 10 2016 15:17
@RSalo да я понял)
Roman Salnikov
@RSalo
May 10 2016 15:18
круто было бы в минске сделать коворкинг для разрабов юии. я бы паходу туда каждый день бы ходил:D
236286
@236286
May 10 2016 15:18
@RSalo круто бы))
Yury Izotov
@pandalowry
May 10 2016 15:19
@askanim ну не скажи, вечно жив тока Ленин. Декларативно и в мавзолее. Без мозговой полости. То есть я к чему - даже если декларировать бессрочную сессию в куках, настройках пхп и других местах, для защиты это не очень ОК по этому все равно сессия имеет экспайр
Roman Salnikov
@RSalo
May 10 2016 15:19
почему ленин жив? потому что лайфтайм в настройках = 0
Yury Izotov
@pandalowry
May 10 2016 15:19
а бессрочное время жизни ставится ну например для компилированных ассет-компонентов с уникальными ссылками с белибердой (типа image1fn59dfe9|.jpg) так они все равно рекомпилятся
@RSalo да, такой ленин будет вечно жив и дело партии будет жить. Однако, можно взломать КПСС оставив Ленина живым надолго
лучше всего сменить его на Сталина через энное кол-во дней
Roman Salnikov
@RSalo
May 10 2016 15:20
@pandalowry ты уже паходу баг нашел, что бы их взломать:D
askanim
@askanim
May 10 2016 15:21
@pandalowry я думаю просто самое оптимальное это через определённый промежуток времени постоянно изменять хеш сессии который генерится при входе
Yury Izotov
@pandalowry
May 10 2016 15:21
@RSalo не, баг не находил. Но с веб приложениями в мире работаю не один я )
askanim
@askanim
May 10 2016 15:21
@pandalowry и обновлять его в бд
Yury Izotov
@pandalowry
May 10 2016 15:21
@askanim csrf Токен это почти то что ты сказал. С оговорками большими
Roman Salnikov
@RSalo
May 10 2016 15:21
идеальнее было бы после каждого запроса изменять кэш
askanim
@askanim
May 10 2016 15:22
@RSalo то есть после каждого обновления страницы хеш менять
@RSalo а сервер не лопнет если пользователей будет дофига?
Roman Salnikov
@RSalo
May 10 2016 15:23
@askanim да нет, если генерация будет не такая сложная
askanim
@askanim
May 10 2016 15:24
@RSalo
class Hash
{
    public static function getCode($length=6) {

        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
        $code = "";
        $clen = strlen($chars) - 1;

        while (strlen($code) < $length) {

            $code .= $chars[mt_rand(0,$clen)];
        };
        /*$options = [
            'cost' => 11,
            'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
        ];*/
        return password_hash($code, PASSWORD_DEFAULT);
    }
}
Roman Salnikov
@RSalo
May 10 2016 15:24
можно просто кортежем её в дальнейшем вставлять и не думаю, что это должно много времени занимать
askanim
@askanim
May 10 2016 15:29
Ладно всем спасибо и всем снов
Dmitry Guzun
@webmoder
May 10 2016 15:32
@askanim давай, ты только не обижайся, умничать пока еще действительно рано
askanim
@askanim
May 10 2016 15:32
@MKiselev Спасибо тебе за помощь и терпение)
KarmaBot
@KarmaBot
May 10 2016 15:32
Спасибо (+1) для @MKiselev принято! Текущая карма +7.
askanim
@askanim
May 10 2016 15:33
@webmoder Да умничать вообще не хорошо просто иногда сущность в виде гномика вылизает наружу
Dmitry Guzun
@webmoder
May 10 2016 15:34
@askanim ну бывает, тут действительно могут хорошо помочь, главное правильно вопросы задавать :)
askanim
@askanim
May 10 2016 15:34
@webmoder и в результате оп чигагоп таринтитарирарай...
@webmoder да здесь собрались действительно очень умные люди...
@webmoder и знающие свою работу...
Ладно всем снов
Vitaly Voskobovich
@voskobovich
May 10 2016 15:41
@askanim ты тож таким будешь)
@webmoder так а чему пришли с токеном?
askanim
@askanim
May 10 2016 15:41
@voskobovich о так что там у тебя было
Vitaly Voskobovich
@voskobovich
May 10 2016 15:42
@askanim я не дебажил еще) увидел что тут закрутилось и решил оставить пока задачу
askanim
@askanim
May 10 2016 15:43
@voskobovich чисто моя догадка истекает время сессии попробуй проверь
Vitaly Voskobovich
@voskobovich
May 10 2016 15:43
@askanim вы тут пол дня обсуждали этот вопрос с разных сторон, так и не пришли к выводам?
askanim
@askanim
May 10 2016 15:44
@voskobovich ну я не один это предположил
@voskobovich https://toster.ru/q/203491
Vitaly Voskobovich
@voskobovich
May 10 2016 15:44
@askanim типо кука жива, а сессия нет?
askanim
@askanim
May 10 2016 15:44
@voskobovich ini_set('session.cookie_lifetime', 120960);
@voskobovich в index.php
Vitaly Voskobovich
@voskobovich
May 10 2016 15:45
@askanim это вы так в php делаете) а у нас все красивенько через конфиги аппа
ок, попробую
askanim
@askanim
May 10 2016 15:46
@voskobovich ну как оно там в yii делается глянь и попробуй.. Попытка не пытка
Vitaly Voskobovich
@voskobovich
May 10 2016 15:46
я вообще надо сделать лок скрин и будет мне счастье) только время надо узнать через которое протухает форма
askanim
@askanim
May 10 2016 15:47
@voskobovich протухает когда наверно у сессии кука кончается, опять это догадка, на 100% не уверен...
@voskobovich ладно я не гуру, ща фигни ещё наговорю, спроси у кого нибудь тут есть крутые спецы. Я так велостроитель гавнокода. :D :D Даже ещё до framework не дорос
пшёл спать завтра ещё гавнокодить много :D
Vitaly Voskobovich
@voskobovich
May 10 2016 15:51
@askanim главное что ты общительный =) это хорошо
Alexey Rogachev
@arogachev
May 10 2016 15:56
ребят, вопросик по Nginx
вроде как exact match (=) имеет высший приоритет
почему-то в моем случае, срабатывает регулярка (~), а строгое сопоставление игнорится
речь про секции location
First, Nginx looks for an exact match. If a location block using the = modifier is found to match the request URI exactly, this location block is immediately selected to serve the request.
Denis Sevostyanov
@den67rus
May 10 2016 17:51
еще вопрос как в activeRecord правильно, составить такой запрос?
SELECT * FROM `items` WHERE (`publish_up` >= DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY)) AND (`published` = 1)
при таком подходе не работает
News::find()
             ->where([
                'and',
                ['>=', 'publish_up', "DATE_SUB(CURRENT_DATE, INTERVAL " . $day . " DAY)"], // Выберем из этих категорий
                ['=', 'published', 1],
            ])
            ->all();
получается в кавычках и соответственно не работает
 'DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY)'
Razzwan
@Razzwan
May 10 2016 17:59
@ostashevdv о, спасибо, не знал, что такое простое решение. Тоже когда-то мучился
@ostashevdv спасибо
KarmaBot
@KarmaBot
May 10 2016 17:59
Спасибо (+1) для @ostashevdv принято! Текущая карма +25.
Vitaly Voskobovich
@voskobovich
May 10 2016 18:04
Мужики, поясните эту аномалию http://sandbox.onlinephpfunctions.com/code/3a9d9997f14e3ddf88a353054261877d91f745c3
кто знает ответ?
Dave
@aios
May 10 2016 18:07
@voskobovich ты уже готовый инт переводишь intval
Vitaly Voskobovich
@voskobovich
May 10 2016 18:07
@aios и?
Dave
@aios
May 10 2016 18:08
@voskobovich подобное возможно из-за сдвига байтов. я такое в C++ ловил.
правда не помню при каких обстоятельствах
Vitaly Voskobovich
@voskobovich
May 10 2016 18:09
хм… интересно
Dave
@aios
May 10 2016 18:09
@voskobovich хотя нет
у тебя какого то черта 6999 получается float
Vitaly Voskobovich
@voskobovich
May 10 2016 18:10
@aios так тип данных от умножения не меняется))
я хз кароче)
Dave
@aios
May 10 2016 18:10
@voskobovich в сишке меняется
Vitaly Voskobovich
@voskobovich
May 10 2016 18:11
ай, дырявый пых, старое корыто =))
Roman Salnikov
@RSalo
May 10 2016 18:13
@Razzwan ты разобрался почему форма у тебя в реакте не работала?
Razzwan
@Razzwan
May 10 2016 18:13
@RSalo да, потому что там гораздо больше html-а должно быть.
Oleg
@Malezha
May 10 2016 18:13
Подобная ситуация. Похоже там какое то хитрое приведение к типу.
Razzwan
@Razzwan
May 10 2016 18:14
@RSalo в исходниках глянул - там еще дропдаун должен быть. Документация неполная.
Roman Salnikov
@RSalo
May 10 2016 18:14
@Razzwan ну так пиши тогда продолжение
Oleg
@Malezha
May 10 2016 18:14
Ниже в комментах есть подробности.
Razzwan
@Razzwan
May 10 2016 18:14
@RSalo как только будет свободный час - запишу ;)
Roman Salnikov
@RSalo
May 10 2016 18:14
ок. жду
Vitaly Voskobovich
@voskobovich
May 10 2016 18:17
@Malezha 10 years ago - круто, такие старые комменты ппц) я еще тогда пых в глаза не видел
Oleg
@Malezha
May 10 2016 18:20
@voskobovich похоже, приводить что либо, кроме строки к типам float, int нежелательно. @aios скорее всего прав, бага где то в самом коде на C, но почему не правят?
@voskobovich зря я читаю там комменты, волосы встают дыбом от такого http://php.net/manual/ru/function.intval.php#117624
Revin Roman
@rmrevin
May 10 2016 18:24
@Malezha @voskobovich это всё в доке написано
Dave
@aios
May 10 2016 18:25
например, floor((0.1+0.7)*10) скорее всего вернет 7 вместо ожидаемого 8, так как результат внутреннего представления будет чем-то вроде 7.9999999999999991118....
то есть разрабы сами не знают как оно работает...
Revin Roman
@rmrevin
May 10 2016 18:26
это математика
почитай про мантисы
Vitaly Voskobovich
@voskobovich
May 10 2016 18:26
@aios ограничения платформы на которой выполняется код) ОС разные, кишки разные
@rmrevin в моем случае что делать?))
Revin Roman
@rmrevin
May 10 2016 18:26
@voskobovich а какая задача?
Dave
@aios
May 10 2016 18:27
@rmrevin к сожалению "расчеты из ядерной физики" мне еще в задачи не попадали. так что не требуется пока что.
Vitaly Voskobovich
@voskobovich
May 10 2016 18:28
это мой PriceFormatter который переводит пользовательский ввод в инт, а потом обратно в цену с копейками.
Revin Roman
@rmrevin
May 10 2016 18:28
это не ядерная физика, тут как раз описывается, почему приведение типов неожиданный результат выдает
потому что (float)8 на самом деле == 7.9999999999999991118
Dave
@aios
May 10 2016 18:29
ну по факту должно возвращаться округление по первому знаку.
или я чего то не понимаю?
Vitaly Voskobovich
@voskobovich
May 10 2016 18:29
вот конкретно функция была, которая брала инт и конвертировала в цену. Ранее число в эту функцию попадало из БД, а сейчас я там посчитал его перед тем как передать на конвертацию в цену
Oleg
@Malezha
May 10 2016 18:29
@rmrevin я скорее сокрушался с того, что intval не умеет разбирать экспоненциальную часть.
То есть strval в случае чего её возвращает, а вот другая функция работать с ней не умеет.
Nuzsk
@Nuzsk
May 10 2016 18:30
This message was deleted
var_dump(intval(round($price)));
вот так работает, как ни странно
Vitaly Voskobovich
@voskobovich
May 10 2016 18:32
@Nuzsk round($price) - вернет float
Nuzsk
@Nuzsk
May 10 2016 18:32
@voskobovich а ты попробуй
Vitaly Voskobovich
@voskobovich
May 10 2016 18:32
@Nuzsk а что конкретно ты проверяешь-то?
@Nuzsk и так работает) var_dump($price / 100);
Dave
@aios
May 10 2016 18:34
@voskobovich нашел
Nuzsk
@Nuzsk
May 10 2016 18:34
вообще странно, что в intval более аккуратной работы не предусмотрели
Revin Roman
@rmrevin
May 10 2016 18:34
@Malezha
<?php
$input = (0.7 + 0.1) * 10;
var_dump((float)$input); // 8 (на самом деле 7.9999999999999991118)
var_dump((int)$input); // 7 (потому что (int)7.9999999999999991118)
var_dump((string)$input); // 8 (потому что float == 8)
бля..
Из чисел с плавающей точкой ¶
вот эту строчку ищи
@voskobovich При преобразовании из float в integer, число будет округлено в сторону нуля.
это все объясняет.
Vitaly Voskobovich
@voskobovich
May 10 2016 18:35
угу
кароче удалю то преобразование и нормал
Revin Roman
@rmrevin
May 10 2016 18:35
@voskobovich в твоём случае все расчёты нужно вести до форматирования
то есть пока значения в int, после этого форматировать
именно в этом сокральный смысл этого метода с хранением в int, что все расчеты ведутся только с целыми числами, а затем форматируется в человекопонятный вид
Vitaly Voskobovich
@voskobovich
May 10 2016 18:39
@rmrevin так вроде у меня так же…) щас перепроверю
Vitaly Voskobovich
@voskobovich
May 10 2016 18:46
@rmrevin не помогло
я убрал у себя округление, в итоге получаю float(6999) но при записи в БД в поле типа int оно конвертится в int и уже в БД записывается как 6998
Revin Roman
@rmrevin
May 10 2016 18:48
делай round сначала
потом (int)
Dave
@aios
May 10 2016 18:49
@voskobovich сильно скажется поле в базе перебить? мне кажется если нагрузки не большие можно костылем этим решить. и работай тогда уже с флоатами.
Vitaly Voskobovich
@voskobovich
May 10 2016 18:49
@rmrevin помогло)
@aios та вся заморочка эта с ценами в интах чтобы работа в интах)
в тем же успехом можно было все оставить в флоатах и бегать по граблям с этими байтами(
Revin Roman
@rmrevin
May 10 2016 18:50
чёт я не могу поймать, уменя (int)(float)6999 возвращает всегда 6999
Dave
@aios
May 10 2016 18:50
@rmrevin потому что ты int переводишь сначала во флот потом в инт опять
Revin Roman
@rmrevin
May 10 2016 18:51
я делал вычислением
тут просто утрировал пример
Vitaly Voskobovich
@voskobovich
May 10 2016 18:51
@rmrevin
$price = floatval('69.99') * 100;

var_dump($price / 100);
var_dump(intval($price) / 100);
этот код попробуй
в итоге такое вышло return intval(round(floatval($value) * 100));
Кстати, кому интересно то вот репо https://github.com/voskobovich/yii2-price-formatter
Revin Roman
@rmrevin
May 10 2016 18:56
intval и floatval можно не дёргать, просто указывать тип через (int) (float) (экономия на вызовах функций)
return (int)round((float)$value * 100);
Vitaly Voskobovich
@voskobovich
May 10 2016 18:57
то есть (int) быстрее intval() ?
Revin Roman
@rmrevin
May 10 2016 18:57
тут просто не происходит вызова функции
(int) это языковая конструкция
а intval - функция, которая дёргает сишную функцию
Andrey
@DevAndreyL
May 10 2016 18:57
Никто не сталкивался со смещением названия месяца?(текущий и предыдущий месяцы имеют одинаковые названия но даты для каждого стоят свои).
Vitaly Voskobovich
@voskobovich
May 10 2016 18:58
@DevAndreyL Ооо… здарова)))
KarmaBot
@KarmaBot
May 10 2016 18:58
О! @voskobovich! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
Andrey
@DevAndreyL
May 10 2016 18:58
@voskobovich Привет )
KarmaBot
@KarmaBot
May 10 2016 18:58
Будь как дома, @DevAndreyL, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Andrey
@DevAndreyL
May 10 2016 18:58
Давно тебя не видел здесь)
Vitaly Voskobovich
@voskobovich
May 10 2016 18:58
@rmrevin Рома, выше я там спрашивал че делать с ситуацией когда csrf токен не валидным становится через время?
Revin Roman
@rmrevin
May 10 2016 19:00
продублируй, не видел
Vitaly Voskobovich
@voskobovich
May 10 2016 19:02
@rmrevin так я в принципе все уже и сказал)
оставляю страницу открытой на время, потом заполняю форму и отправляю ее а мне 400 в ответ. Обновляю страницу, заполняю, отправлю - все ок
Revin Roman
@rmrevin
May 10 2016 19:02
А точно проблема в csrf? может сессия умирает?
у сессии время жизни по-умолчанию 1440 секунд вроде
Roman Salnikov
@RSalo
May 10 2016 19:04
@rmrevin 180 минут по дефолту
Vitaly Voskobovich
@voskobovich
May 10 2016 19:05
@rmrevin так я ж обновляю страницу и все снова гуд, если бы сессия умирала то меня должно было разлогинить. Разве нет?
Revin Roman
@rmrevin
May 10 2016 19:06
@RSalo
http://fi2.php.net/manual/ru/session.configuration.php
session.gc_maxlifetime "1440"
после перезагрузки скорее всего автологин срабатывает
Roman Salnikov
@RSalo
May 10 2016 19:08
@rmrevin а, точняк. меня клинит. это у кэша 180 минут
@rmrevin спс
KarmaBot
@KarmaBot
May 10 2016 19:08
Спасибо (+1) для @rmrevin принято! Текущая карма +11.
Revin Roman
@rmrevin
May 10 2016 19:09
да без проблем ) незачто )
Vitaly Voskobovich
@voskobovich
May 10 2016 19:11
@rmrevin хм…надо посмотреть меняется ли ИД сессии
но спасибо)
KarmaBot
@KarmaBot
May 10 2016 19:11
@voskobovich, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
Vitaly Voskobovich
@voskobovich
May 10 2016 19:11
@rmrevin спс
KarmaBot
@KarmaBot
May 10 2016 19:11
Спасибо (+1) для @rmrevin принято! Текущая карма +12.
Roman
@Skinka
May 10 2016 20:15
кто нить шарит как сделать связанные поля в jqGrid????