Задать вопрос
  • Yii: rules и очень много сценариев, в которых чёрт ногу сломит?

    AMar4enko
    @AMar4enko
    Помимо on есть еще except, для исключения единичных сценариев
    P.S. Ну а в целом, тащить эту лабуду напрямую в ActiveRecord смысла точно никакого нет, только сорить. Я бы вынес эту валидацию в behaviors, и в методе behaviors пропускал ненужные отталкиваясь от нужных сценариев.
    Ответ написан
    Комментировать
  • Как настроить русский язык в Ruby on Rails?

    AMar4enko
    @AMar4enko
    # encoding: utf-8
    в самом начале каждого файла, в котором используются русские символы
    Ответ написан
  • Как добавить в график Sparkline дополнительную шкалу?

    AMar4enko
    @AMar4enko
    Sparkline это библиотека для построения мелких inline-графиков.
    График, про который вы говорите, это highcharts либо flot. Это легко понять, посмотрев html-разметку элемента, в котором график.
    В highcharts можно создавать сколько угодно осей, как x, так и y, и привязывать графики к разным осям.
    Ответ написан
  • Почему не приходят данные методом POST от банка?

    AMar4enko
    @AMar4enko
    А вы по логам не можете посмотреть, когда от них приходит запрос, с какими данными, и что вы в ответ отдаете?
    Ответ написан
  • Как в Yii передать параметры в JS или записать кусок js-кода в свойство контроллера/компонента?

    AMar4enko
    @AMar4enko
    Плохо искали, для этого используется CClientScript.
    На самом деле ваша история с $cssArr и $jsArr это велосипед, потому что все необходимые для этого инструменты как раз CClientScript и предоставляет.

    Например, для добавления в выходную страницу JS-файла используется
    www.yiiframework.com/doc/api/1.1/CClientScript#reg...

    Для добавления CSS-файла
    www.yiiframework.com/doc/api/1.1/CClientScript#reg...

    А для добавления "сырого" скрипта
    www.yiiframework.com/doc/api/1.1/CClientScript#reg...

    Во всех вышеперечисленных методах вы можете выбрать, куда именно Yii запихает эти файлы и скрипты. Конкретно для сырых скриптов есть CClientScript::POS_READY - т.е. переданный код будет находится в обертке JQuery ready и выполнится после иницализации jQuery
    Ответ написан
    Комментировать
  • iPad при гарантийной замене в авторизованном СЦ дают новый или восстановленный после бу?

    AMar4enko
    @AMar4enko
    В гарантии на оборудование для iPad mini написано
    ОБЯЗАТЕЛЬСТВА APPLE В СЛУЧАЕ ГАРАНТИЙНОГО СЛУЧАЯ
    В случае подтверждения случая, подпадающего под гарантию, компания Apple по своему усмотрению либо:

    (i) произведет ремонт Изделия Apple с использованием новых или бывших в употреблении запчастей, эквивалентных новым по производительности и надежности; либо

    (ii) заменит Изделие Apple на изделие, как минимум функционально идентичное Изделию Apple и изготовленное из новых и (или) бывших в употреблении запчастей, которые эквивалентны новым по производительности и надежности; либо

    (iii) вернет уплаченную цену Изделия Apple при условии его возврата.

    При замене изделия или детали либо возмещении уплаченной цены любой заменяющий элемент становится вашей собственностью, а элемент, который был заменен или за который выплачено возмещение, становится собственностью компании Apple.

    На замененную запчасть или изделие либо на отремонтированное Изделие Apple распространяется оставшаяся гарантия исходного Изделия Apple или гарантия сроком 90 (девяносто) дней с даты замены или ремонта, в зависимости от того, какой срок предоставляет вам больший период покрытия.

    В случае обращения за гарантийным обслуживанием в стране, не являющейся страной покупки Изделия Apple, компания Apple может выполнить ремонт или заменить изделие и запчасти на сопоставимые изделия или запчасти в соответствии с местными стандартами.
    Ответ написан
    Комментировать
  • CKEditor jqury + ajax передача метом POST идет с ошибкой?

    AMar4enko
    @AMar4enko
    Попробуйте вместо
    data: "h1="+h1
                +"&url="+url
                +"&state="+state....

    сделать
    data: {h1: h1, url: url, state: state}
    Есть подозрение, что проблема в urlencode
    Ответ написан
  • Исключение элемента по регэкспу

    AMar4enko
    @AMar4enko
    Глядите
    rubular.com/r/PoWHYBdnL5
    Ответ написан
    Комментировать
  • Redmine, как с ним работать?

    AMar4enko
    @AMar4enko
    Найдите, куда редмайн логи пишет, и посмотрите, на что он ругается.
    Ответ написан
  • Как сохранить цепочку действий в cocos2dx?

    AMar4enko
    @AMar4enko
    Потрудитесь нормально расставить теги исходных кодов. Эту кашу никто читать не будет.
    Ответ написан
    Комментировать
  • AngularJS: Отмена перезаписи значений объекта $resource после вызова save();

    AMar4enko
    @AMar4enko
    Может быть мимо кассы, конечно, но я в свое время отказался от $resource в пользу Restangular. На порядок более гибкий инструмент.
    Посмотрите, может быть вам понравится.
    Ответ написан
    Комментировать
  • Какой выбрать язык для написания клиента в клиент-серверной 2D игре?

    AMar4enko
    @AMar4enko
    По поводу клиента - есть node-webkit.
    На нем, например, написан Game Dev Tycoon.
    Разработка клиента будет максимально приближена к разработке веб-приложения на JavaScript + HTML + CSS, и потом можно будет в standalone-приложение упаковать.
    Ответ написан
    Комментировать
  • Nginx. Обработка css файлов интерпретатором php

    AMar4enko
    @AMar4enko
    Во-первых непонятно сейчас, регулярка на типы файлов включена в какой-то свой location или прописана на самом верхнем уровне под server.
    Я бы написал так
    location '/assets/' {
        location '/assets/do-not-serve-css' {
            location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
               root /var/www/myuser/data/www/site.ru;
               access_log /var/www/httpd-logs/site.ru.access.log ;
               access_log /var/www/nginx-logs/myuser isp;
            }
        }
        location '/assets/feel-free-to-serve-css' {
            location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
               root /var/www/myuser/data/www/site.ru;
               access_log /var/www/httpd-logs/site.ru.access.log ;
               access_log /var/www/nginx-logs/myuser isp;
            }
        }
    }

    Такой механизм изоляции regexp-локаций рекомендует использовать Игорь Сысоев, разработчик nginx.
    Согласно моему конфигу, если вы запросите css-file по адресу /assets/do-not-serve-css/any.css, то он не будет отдан через nginx и вы должны будете прокинуть обработку такого файла куда-то дальше. Если по адресу /assets/feel-free-to-serve-css/any.css, то он будет отдан nginx-ом
    Ответ написан
    2 комментария
  • Как правильно реализовать таблицу БД для создания тегов на сайте?

    AMar4enko
    @AMar4enko
    А на кой такой оверхед-то?
    В таблицу object добавляете строковый "tags", где в строке теги через разделитель какой-нибудь.
    Это поле используете для вывода тегов на странице
    В таблице tag_object строковое поле tag, и id объекта, чтобы искать по конкретным тегам.
    Плюс я бы еще держал таблицу tags, где был бы список всех уникальных тегов с количествами использований.

    Зачем вам id для тегов? Про slug - если вам надо искать по транслитерованному тегу, то туда же в tag_object его пихайте.

    Если у вас 10000 объектов и 1000 тегов, посчитайте, сколько в худшем случае записей у вас будет в таблице tag_object? В вашем случае, для того, чтобы просто получить список тегов к объекту, нужно будет столько геммороя поиметь - ладно, если к одной записи (и то ничего хорошего). А если к списку? Да с пагинацией? Присоединять таблицу с 10000000 ради списка тегов?
    Ответ написан
    7 комментариев
  • Как реализовать "обратный" порядок вызова методов класса PHP?

    AMar4enko
    @AMar4enko
    $cookie = Cookie::make('name', 'value');
    return Response::make($content)->withCookie($cookie);

    Тот, кто получит Response, сам отправит данные в браузер. Попробуйте их схему применить в случае, если make($content) непосредственно отправляет контент в браузер - не получится.
    Потому что вы данные отправите в браузер, а заголовок уже не сможете, так как перед этим отправлены данные.
    Это все называется fluent interface или текучий интерфейс.
    Но он был придуман не для того, чтобы выполнять методы в произвольном порядке, а для того, что бы писать более компактный и читаемый код.

    Но я вот еще что придумал, пример (могут быть ошибки, не запускал)

    class SomeFreakyEntity {
        var param1, param2;
        public function terminalMethod(){
        // Этот метод всегда выполняет некое действие с настроенным объектом, конец текучего интерфейса
            var_dump($this);     
        }
        public function withSomeParams1($value){
            $this->param1 = $value;
            return $this;
        }
        public function withSomeParams2($value){
            $this->param2 = $value;
            return $this;
        }
        // Ловим любой вызов необъявленного статического метода
        public static function __callStatic($method, $arguments){
            $o = new __CLASS__;
            return call_user_func_array(array($o, $method), $arguments)        
        }
    }


    Теперь можно писать как-то так:
    SomeFreakyEntity::terminalMethod();
    SomeFreakyEntity::withSomeParams1('blabla')->terminalMethod();
    SomeFreakyEntity::withSomeParams2('blabla')->terminalMethod();
    SomeFreakyEntity::withSomeParams2('blabla')->withSomeParams1('blabla')->terminalMethod();
    SomeFreakyEntity::withSomeParams1('blabla')->withSomeParams2('blabla')->terminalMethod();


    А в вашем случае
    Template::withData($dataArray)->render('templateName')
    Ответ написан
  • Как реализовать "обратный" порядок вызова методов класса PHP?

    AMar4enko
    @AMar4enko
    А какова цель? Получить более естественный, легко читаемый код?
    Чем не нравится конструкция типа:
    $this->template('templateName')->withData($array)->render()


    Есть еще вариантик - перекрыть в Template метод __toString():
    В render устанавливаете имя шаблона, в withData параметры.
    В __toString вызываете непосредственно render с установленными ранее именем шаблона и параметрами.
    Тогда весь вызов будет как (string)$tpl->render('templateName')->withData($dataArray)

    Так или иначе, вам придется определять какой-то терминальный метод. Просто во втором случае он неявно вызывается, в том числе и в конструкциях типа
    $html = "<some html code>$tpl</some html code>"
    Ответ написан
    1 комментарий
  • На чем реализовать печать чеков на ККМ из веб-интерфейса?

    AMar4enko
    @AMar4enko
    Можно предположить следующую схему - есть сервер, который знает физическое расположение чековых принтеров и их адреса (у них же есть WiFi, сетевые интерфейсы)
    При авторизации в клиенте сервер уведомляется о том, с какого терминала произошло подключение и знает, какой принтер там рядом.
    При оформлении заказа и его печати сервер (,а не браузер) отправляет на принтер задачу для печати.
    Как показывает практика, ничего толкового из обычной печати на чековый принтер не выходит - надо пользоваться их специальными командами.
    Ответ написан
    Комментировать
  • Занимаюсь веб-разработкой и хочу делать небольшие приложения под мобильные платформы. С чего начать?

    AMar4enko
    @AMar4enko
    Я бы посоветовал вам качественно изучить хотя бы одну технологию от и до.
    PhoneGap это тупик. Лучше не стоит, правда.
    Вот вы сделаете приложение для iPhone, реализуете там свой тулбар на css + html. В аппстор сунете, а вам пропишут reject и скажут "Друг, у нас для тулбаров нативные элементы управления есть".
    Вы начнете искать, а можно ли как-то из под PhoneGap использовать нативные элементы управления. Найдете.
    Окажется, что там нужно будет в phonegap-проектике покопаться под XCode (вы же в курсе, что вам OS X нужна будет для сборки проекта для iPhone?)
    Потом вам понадобится простенькая база данных в приложении. Вы попробуете использовать in-browser SQL database storage. Окажется, что из-за особенностей хранения данных браузером из-под PhoneGap она у вас периодически будет пропадать. Вы пойдете искать бесшовную замену, найдете. Опять надо в XCode идти проект править, чтобы он собрался правильно.
    В итоге вы вместо разработки будете искать пути решения проблем, с разработкой никак не связанных.
    Так что мой вам совет: хотите малой кровью начать делать мобильные приложения - возьмите Android и делайте на здоровье. А нервы поберегите, пригодятся.
    Ответ написан
    1 комментарий