• Небольшой ресурс на Amazon

    Stdit
    @Stdit
    micro instance (примерно $15) вполне хватает, к тому же на одной вдске можно сделать virtual host и разместить пару десятков мелких сайтов.
    Ответ написан
    Комментировать
  • XSS и экранирование?

    Stdit
    @Stdit
    Если html формируется на сервере — то и экранирование на сервере.
    Если формируется на клиенте — то экранируется в рамках json (или в чем он там приходит с сервера), а html-экранирование может выполнять javascript-шаблонизатор.
    И ещё, я не понял, причем тут perl.
    Ответ написан
    Комментировать
  • Дизайн клиента API. Как лучше возвращать ошибки от API?

    Stdit
    @Stdit
    Я сталкивался. Когда-то тоже ломал голову над этим вопросом, и не нашел однозначного ответа, потому что всякий способ имеет как сильные, так и слабые стороны. Пробовал разные варианты, включая велосипеды, возврат кода ошибки и даже возврат ассоциативных массивов типа {status, result}. Многие не рекомендовали бросать исключения, аргументируя тем, что исключение должно оставаться исключением, а не становиться бизнес-логикой (в том числе, когда параметры исключения передаются в его конструктор при его бросании, в зависимости от типа исключения). В целом же, на практике оказалось, что это достаточно удобно, уменьшает количество условий, проверок, код становится короче и читается проще, багов становится меньше. На скорости работы почти не отражается. В нескольких поздних проектах на php обработка ошибок модели была сделана похожим образом. При реализации rest-api на эту модель достаточно просто создаются контроллеры. Возможно у кого-то есть другой опыт и он поделится негативными впечатлениями от исключений, но после выбора такого подхода мне жалеть не приходилось. Так что, как разработчику, такой способ контроля ошибок вполне бы подошел.
    Ответ написан
    4 комментария
  • Как сравнить две базы данных?

    Stdit
    @Stdit
    Посмотрите индексы, присутствуют ли они в обоих в базах.
    Еще можно посмотреть статистику по своей schema: www.postgresql.org/docs/9.1/static/monitoring-stats.html
    Там видно количество фулсканов, автивность запросов и т.д.
    Ну и explain.
    Ответ написан
    2 комментария
  • Борьба между Smarty и отладчиком браузера

    Stdit
    @Stdit
    Первое, что бросается в глаза — у li нет ol/ul. А с html4 версией этого файла (поменять doctype, убрать section, header) такая же беда, или все нормально?
    Ответ написан
    1 комментарий
  • Генератор псевдослучайных чисел с зависимой вероятностью вывода нужных чисел?

    Stdit
    @Stdit
    Я когда-то делал генератор псч с произвольным распределением через хэш-функцию. Алгоритм лобовой, на математическую и техническую красоту не претендует, но все равно я его опишу, вдруг кому-то пригодится.

    — Нам нужен генератор псч, скажем от 0 до 99 с варьируемой вероятностю выпадения чисел.
    — Заводим массив из 10000 элементов. Все числа заносим в массив по 100 раз.
    — Выбирая из массива число со случайным (через обычный гпсч) индексом от 0 до 9999, мы получим число от 0 до 99 с равной вероятностью.
    — Для уменьшения вероятности выпадения числа нужно уменьшить количество этих чисел в массиве. Например, если число «8» будет входить в массив не 100, а 50 раз — то его вероятность выпадения будет вдвое ниже, чем остальных.
    — Для увеличения вероятности выпадения числа расширяем массив и добавляем ещё таких чисел.

    Таким образом, можно построить почти любую функцию распределения (разумеется, с ограничениями на коэффициенты вероятности выпадения чисел). Плавность растройки такого генератора напрямую зависит от размера массива.
    Ответ написан
    3 комментария
  • Портится ли электронная начинка, например, смартфона со временем?

    Stdit
    @Stdit
    По-моему, у смартфона могут выйти из строя в первую очередь электрохимические элементы — батарея, электролитические конденсаторы, а так же жидкие кристаллы матрицы (вот у меня на старом, к примеру, внезапно появилось несколько выбитых полос). Могут также окислиться и прийти в негодность шлейфы и разьемы. С тем, чтобы полупроводники выходили из строя или начинали «тормозить» — не сталкивался.

    Вообще, апгрейдить смартфон имеет смысл, разве что, пока он ещё стоит каки-то денег. Или если новый имеет какую-то ну очень желанную технологию (LTE например). А так, если он полностью устраивает, то пускай служит, зачем его менять?
    Ответ написан
    Комментировать
  • MySQL запрос, как?

    Stdit
    @Stdit
    Если все запросы к статистике заранее известны, может быть полезна предварительная агрегация путем денормализации на триггерах. К примеру, таблице page_stat назначить триггер after insert, который заносит запись в таблицу page_uid (page, uid), если такая там ещё не имеется. Запрашивать page_uid будет уже полегче, хотя всё равно потребуется пересчёт. Чтобы избежать и его в том числе, можно и на эту таблицу поставить триггер after insert, который в случае появления новой записи инкрементирует счетчик конкретной страницы в третьей таблице page_uniques_count (page, count). Те данные, что уже есть в базе, надо будет перед активацией триггеров соответственно прогнать запросом и занести в служебные таблицы. Ситуация осложняется введением запросов на количество уников за определенный (не произвольный) период времени (например, за день, месяц). Это реально организовать соответствующим образом, добавив в служебные таблицы дату, округленную до нужного интервала. Для каждого такого интервала может потребоваться отдельная таблица-счетчик, но более крупные интервалы можно получить из мелких (например, по месецам из ежедневной) путем классической агрегации через group by, которая в этом случае будет работать значительно быстрее, чем с сырыми данными из page_stat.
    Ответ написан
    1 комментарий
  • IDE с принципом работы FTP как у Notepad++

    Stdit
    @Stdit
    Я бы порекомендовал изменить свой подход к разработке. Закачивать к себе весь код проекта — это нормально. Это значительно упрощает навигацию, позволяет использовать межфайловые подсказки и прыжки, избавляет от риска потерять файл из-за ошибки закачки, и многое другое. А если навесить ещё и систему контроля версий — будет вообще хорошо. Если же эти радости жизни вас не интересуют, а в силу каких-то причин нужно именно редачить файлы на сервере, попробуйте eclipse или что-то на его основе. Например, Aptana.
    Ответ написан
    Комментировать
  • Как вы учитесь на работе?

    Stdit
    @Stdit
    Всесильных программистов, к сожалению, не бывает, предел нагрузки есть у каждого. Есть вероятность, что вечный дедлайн и кровь из носа — это результат плохого планирования и неадекватной оценки возможностей либо исполнителем, либо его руководителем. Если руководителем — это повод поговорить или поискать другую работу, а если исполнителем — повод начать закладывать время на обучение при назывании планируемых сроков, поскольку постоянное обучение (без фанатизма, конечно) свойственно нормальному разработчику, от мелочей вроде изучения фич новых версий используемых библиотек до постижения новых перспективных технологий.
    Ответ написан
    1 комментарий
  • Агрегация статистики в SQL-хранилище?

    Stdit
    @Stdit
    Вариант с map-reduce — не факт, что будет более быстродействующим решением. Поможет денормализация. Чтобы избежать агрегации на каждом запросе статистики, и ударных нагрузок на процессор и память во время таких запросов, логично во время занесения каждой очередной записи увеличивать счетчики, находящиеся в специальных таблицах. Для этого на вставку можно поставить триггер, инкрементирующий нужный счетчик (счетчик текущего часа, счетчик текущего дня). Разумеется, под каждую форму статистического запроса потребуется отдельный счетчик.
    Ответ написан
    1 комментарий
  • Как удобно организовать данные на HDD?

    Stdit
    @Stdit
    Храню в местах, выделенных для этого авторами ОС (документы, музыка, фильмы и т.д, дополнительно завел толко директории с виртуальными машинами и с проектами). Музыка упорядочивается в плейлисте сама, по исполнителю и альбому, время, когда я её добавил, не имеет значения. Фильмы после просмотра обычно удаляю, в редких случаях заливаю на NAS (его структура файлов тоже вполне линейная, без особых заморочек). Если винтов несколько, я бы их неаверное попытался объединить.
    Ответ написан
  • Как сделать, чтобы при клике на option у селекта не скрывалось всплывающее меню?

    Stdit
    @Stdit
    Попробуйте использовать не выпадающий селект, а с зафиксированным размером (size). Если нужно именно выпадение с фиксацией, тогда придётся вручную его анимировать или писать целиком «свой селкет».
    Ответ написан
    Комментировать
  • Простейшая очередь задач на PHP?

    Stdit
    @Stdit
    Один из самых простых способов организации фоновых задач (таких как отправка письма, например) — делегировать их скрипту в cron-е через базу данных. То есть записывать задачу с аргументами в таблицу-очередь, а кроном эту очередь разбирать по таймеру. Если по каким-то причинам это не подходит (например, из-за скорости реакции или нагрузки на бд), то наверное смотреть в сторону gearman.
    Ответ написан
    1 комментарий
  • Как создать перегруженный конструктор класса в JS?

    Stdit
    @Stdit
    [мимо]
    Ответ написан
    Комментировать
  • Как создать перегруженный конструктор класса в JS?

    Stdit
    @Stdit
    А зачем вам объект «окружность»? Что вы с ним потом собираетесь делать, ради чего здесь он создаётся? Может проще написать просто какой-нибудь «хелпер»:
    helpers.circle = function (context, x, y, radius, color) {
        context.arc(x, y, radius, startDegrees, endDegrees, counterClockwise);
        context.fillStyle = color;
        context.fill();
    }
    

    Ну или завести объект «рисовальщик», хранящий ссылку на графический контекст и настройки рисования, и имеющий необходимые методы (вроде приведённого выше) для работы с этим контекстом:
    function Painter(context, defaultColor) {
        this.context = context;
        this.defaultColor = defaultColor;
        this.circle = function (x, y, r, color) {
            if (color === undefined) {
                color = this.defaultColor;
            } 
            this.context.arc(x, .... // code
        }
    }
    

    Это если вам нужно наследование. Объекты по-моему имеет смысл создавать только для реально существующих инстансов (спрайты, например, от которых наследуются игровые объекты и персонажи). Если окружность — это динамический объект, тогда можно уже думать и крутить, в зависимости от архитектуры графики, например так:
    function Circle(x, y, r, color) {
        this.x = x;
        this.y = y;
        this.r = r;
        this.color = color;
        this.render = function (context) {
            context.arc(this.x, ... 
        }
    }
    
    Ответ написан
    6 комментариев
  • Нравится ли вам такая тема для phpBB3?

    Stdit
    @Stdit
    Тема аккуратная, но я почему-то не люблю темы с рамочками и инвертированными заголовками. Особенно с рамочками для каждого пункта форм, как при регистрации. И синий цвет почему-то напрягает (особенно свет от светодиодов :))
    Вот дизайн сайта www.wysibb.com/ намного более удачный, и лучше бы форум был выдержан в его стиле.
    Это мои субъективные ощущения.
    Насчет покупки темы — если она удачно вписывается в дизайн проекта, для которого я ставлю форум, то конечно имеет смысл купить её.
    Ответ написан
    Комментировать
  • Допустил ошибку в структуре таблицы. Как исправить?

    Stdit
    @Stdit
    Создайте отношение в таком виде: [id, dt, pupil_id, disc_id, value]. Для каждого ученика и предмета на нужную дату ставится оценка. Потом получаете все необходимые данные и рисуете по ним график. Другой плюс такой формы хранения в том, что сможете построить общий график успеваемости по дисциплине без учёта учеников, и другие аналитические запросы.
    Ответ написан
    3 комментария
  • Возможно ли сверстать только css'ом?

    Stdit
    @Stdit
    Конечно же картинкой. CSS-ом вообще лучше не делать сложные элементы, потому что картинки практичнее. Они более совместимые, быстрее рендерятся, понятнее верстаются и переверстываются, и к тому же во многих случаях картинки в подходящем формате (например png8 с альфой) занимают меньше места, чем горы стилей с префиксами браузеров.
    Ответ написан
    Комментировать