• Как заинклюдидть скрипт в webasyst?

    AMar4enko
    @AMar4enko

    Может быть проблема в правах?

    Ответ написан
    Комментировать
  • Как поступать, когда элементов много, а размеры формы ограничены?

    AMar4enko
    @AMar4enko

    На мой взгляд, с точки зрения UX, большую форму нужно разбивать на логические этапы ее заполнения и либо реализовывать их в виде мастера, как предложил voff, либо в принципе менять подход к внесению данных. Например, можно запросить только критически необходимую порцию информации, а когда дойдет до события, требующего дополнительную информацию, запросить ее при отсутствии. Такой подход позволит собрать данные постепенно, не вызывая негативной реакции пользователя на громадные формы.

    Ответ написан
    Комментировать
  • Как лучше организовать совместную работу с базой данных?

    AMar4enko
    @AMar4enko

    Не совсем понятно, что имеется в виду под термином "совмесТная работа".
    Изменение структуры? Это делается миграциями. Один решил, что нужно в БД добавить таблицу, делает миграцию, пушит в гит. Остальным придется это изменение принять перед своими пушами, ну и после pull-a они увидят, что добавилась новая миграция и должны будут ее накатить на свою БД.
    Другого пока ничего не придумали.

    Ответ написан
    Комментировать
  • В чём преимущество асинхронных серверов перед PHP/nginx?

    AMar4enko
    @AMar4enko

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

    Представьте себе, что у вас на сервер приходит запрос, связанный с выборкой данных из БД.
    Он отрабатывает, предположим, за 150 мс, из которых 130 это работа с базой данных.

    В случае с PHP у вас воркер будет заблокирован эти 150 мс для обработки других запросов.
    В случае с асинхронным сервером, он, пока запрос 1 ждет данные от БД в течение 130 мс, сможет принять и начать обрабатывать другие запросы. Предположим, что у нас один PHP-воркер. В этом случае таких запросов, как из примера, он сможет обработать семь штук за секунду.

    Асинхронному же, допустим, прилетят 20 запросов. Он обработает каждый до взаимодействия с БД, допустим за 10 мс, полетят 20 запросов к БД, пройдут, допустим, за 500 мс, и сервер сформирует ответ. И это все практически параллельно. Итого меньше чем за секунду мы таким образом обработаем 20 запросов.

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

    Ответ написан
    4 комментария
  • Как в axure дать элементам (shape, image и т.п.) адекватные названия?

    AMar4enko
    @AMar4enko
    Когда выделяете элемент, на панели справа есть поле Name и поле Description.
    Вот поле Name как раз и отвечает за осмысленное название. Но есть один прикол — макет, содержащий русские наименования элементов, экспортированный в html, может не работать. У меня не захотел работать в Windows — отказывался какие-то файлы грузить.
    Ответ написан
  • Генерация JSON с вложенными объектами

    AMar4enko
    @AMar4enko
    Если не городить велосипедов, то это обычно делается с помощью ORM. Т.е. вы описываете соответствие классов PHP сущностям БД, описываете взаимосвязи между сущностями, потом говорите «Выбрать мне posts вместе с user». В ответ получаете уже готовые объекты класса Post, у которых, например, свойство user также является объектом класса User. После всего этого вам останется только сделать json_encode ну или с препроцессингом каким-то, по ситуации.
    А если без ORM, то единственный выход это самостоятельно связывать результаты запросов из таблиц. В этом случае может помочь yalinqo, но по опыту лучше вам по ORM-path.
    Ответ написан
    Комментировать
  • Странное поведение unset и array_walk

    AMar4enko
    @AMar4enko
    Вполне ожидаемая история из-за модификации массива во время его итерации.
    Вы встали на элемент A, запихали его в новый массив, удалили А из массива, попросили следующий элемент.
    А массив-то уже изменился, элемента А нет, текущий элемент уже В. И итератор даст вам следующий элемент, т.е. С
    Ответ написан
    Комментировать
  • Custom routes в Sinatra (Padrino)?

    AMar4enko
    @AMar4enko
    Все, увидел — вы про наследование «CBaseUrlRule».
    Нет, в Sinatra такого нет.
    Ответ написан
  • Custom routes в Sinatra (Padrino)?

    AMar4enko
    @AMar4enko
    Вам просто хелпер для вьюх нужно написать, что-то типа article_url_for.
    В Sinatra это можно сделать как-то так:
    helpers do
      def article_url_for(id)
        # тут уже напишете выборку объекта из базы или кэша и формирование url
      end
    end


    В Sinatra нет генератора url, потому что там контроллеры как таковые отсутствуют. Т.е. если у вас в Yii есть роуты вида
    '/<categoryName:\\w+>/<articleSlug:\\w+>' => "articles/read" 
    '/<id:\\d+>' => "articles/read"


    то вы можете написать экшн в виде
    function actionRead(id = null, categoryName = null, articleSlug = null){
        if(!empty(id))
               article = Article::model()->findByPk(id)
        else
               article = Article::model()->findByAttributes(..)
    }
    

    И генерировать урлы:
    $this->createUrl('articles/read', array('categoryName' => 'Books', 'slug' => 'Another-great-book')) //сгенерирует url первого вида 
    $this->createUrl('articles/read', array('id' => 123)) //сгенерирует url второго вида
    


    Для того, чтобы генерировать url первого вида, передавая id объекта, вам в Yii все равно придется писать хелпер, который вытащит объект из базы и сгенерирует url стандартным способом, передав туда соотв. параметры.
    Ответ написан
    Комментировать
  • Есть ли более производительные аналоги Phonegap?

    AMar4enko
    @AMar4enko
    Боюсь вас разочаровать, но PhoneGap никакого отношения к производительности не имеет.
    Это всего лишь мостик между функциональностью, доступной в native-режиме конкретной платформы, и JavaScript-ом, исполняемым в in-app браузере.
    Ваше приложение работает так быстро, как быстро работает реализация JavaScript на конкретной платформе в конкретном браузере и также скорость зависит от того, какую именно функциональность HTML5 использует ваше приложение.

    Поэтому ваша проблема не в PhoneGap. Она в Android+HTML5, увы.

    P.S. Я знаю о чем говорю — разрабатывал приложение под PhoneGap на Sencha Touch. То, что вполне нормально работает на iOS, на Андроиде может быть катастрофически неповоротливо — я тестировал и там и там.
    Ответ написан
    Комментировать
  • m.domain.ru -> domain.ru/m на nginx (но с подковыркой)

    AMar4enko
    @AMar4enko
    Вам надо во втором сервере написать что-то вроде
    location /m/public/mobile {
                 proxy_pass                    http://localhost:8080/public/mobile/$uri;
                 proxy_set_header        X-Real-IP $remote_addr;
                 proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header        Host $http_host;
                 proxy_cache off;
                 proxy_redirect off;
    }
    


    Правда я не помню навскидку насчет $uri и /$uri — в каком-то из этих вариантов он выкинет из $uri location и в итоге у вас на бэкенд уйдет нужный запрос.
    Ответ написан
    Комментировать
  • m.domain.ru -> domain.ru/m на nginx (но с подковыркой)

    AMar4enko
    @AMar4enko
    Не совсем понятно — по какому адресу эта статика правильно лежит? И правильно ли, что запросы к статике вы проксируете? Может напрямую энджиниксом отдавать?
    Ответ написан
    1 комментарий
  • Ruby On Rails: Отдать статический html из haml через Asset Pipeline?

    AMar4enko
    @AMar4enko Автор вопроса
    Проблема крылась в структуре директорий
    /app
        /assets
            /javascripts
            /stylesheets
            /templates
               /login.html.haml

    Файл шаблона был в templates.
    Если папку templates перенести в javascripts, то все начинает работать как надо. В том числе и asset_url('templates/login.html.haml')
    Ответ написан
    Комментировать
  • mongodb и рэндомная выборка

    AMar4enko
    @AMar4enko
    Подскажите, почему вы отказываетесь от шардинга? Ведь это одна из ключевых особенностей монго — безболезненная горизонтальная масштабируемость?
    Ответ написан
  • Нейросеть «воздерживается». Как лечить?

    AMar4enko
    @AMar4enko
    Я не в курсе функционала Encog 3 Workbench, но вот пара трюков, которые в свое время использовал я:

    • для сигмоиды я входные и выходные данные нормализовал в диапазон, в котором сигмоида имеет отличную от нуля производную (например 0.1 — 0.9 для выходных и соответствующие им для входных).
    • у меня структура сети не была строго детерминированной изначально. Я брал один скрытый слой, добавлял нейрон, связывая его со всеми нейронами входа и всеми нейронами выхода и обучал. Если не мог достигнуть искомой ошибки — добавлял в этот слой еще один, также полностью связывая. Определял некое максимальное число нейронов в слое — при достижении этого количества нейронов в скрытом слое и большой ошибке добавлял еще один слой и всё по-новой. Как только приемлимая ошибка достигалась, я прореживал сеть, удаляя связи, изменение весовых коэффициентов которых мало влияло на результат.
    Ответ написан
  • Что такое {}.prototype?

    AMar4enko
    @AMar4enko
    Могу ошибаться, но судя по всему это глобальное определение прототипа для Object.
    Т.е. впоследствии при создании любого объекта для него будут доступны методы, определенные через prototype.
    Вы можете в любой момент добавить объекту метод. А через прототип вы добавляете его всем экземплярам Object сразу.
    Ответ написан
    Комментировать
  • Передать значение в загруженный ajax-ом диалог?

    AMar4enko
    @AMar4enko
    Тут куча вариантов, на самом деле, но я бы после того, как items сформирован, затолкал его в data элемента, к которому применялся модуль. Вначале его сохранить как var $el = $(this), а после формирования items сделать $el.data('selection', items); А в диалоге var selection = $el.data('selection'); Вообще было бы достаточно в контексте модуля определить var selections= {}; после чего сохранять туда items как selections.[fieldname] = items; Но вдруг вам где-нибудь еще эти items понадобятся.
    Ответ написан
  • Изучаю WebSocket, нужна подсказка?

    AMar4enko
    @AMar4enko Автор вопроса
    Да, думаю буду смотреть в сторону Node.js. Спасибо.
    Ответ написан
    Комментировать
  • Пиксельная линейка у Chrome?

    AMar4enko
    @AMar4enko
    Еще бы к ней какие-нибудь направляющие прилагались.
    Ответ написан
    Комментировать
  • CSS transitions и JavaScript

    AMar4enko
    @AMar4enko Автор вопроса
    Вот еще нашел JQuery Transit — позволяет анимировать через transitions, делать очереди, с простым fallback до обычной JS-анимации.
    ricostacruz.com/jquery.transit/
    Ответ написан
    Комментировать