• Что такое оверхэд (overhead)?

    @egorinsk
    Неизбежные накладные расходы.

    Например, программа, которую вы написали, делает полезную работу в течение 10 мс, но на запуск и завершение виртуальный машины Ява уйдет дополнительно 5 секунд, и эти 5 секунд будут оверхедом.
    Ответ написан
    2 комментария
  • Какая разница между jQuery .bind() .live() .delegate() и .on()?

    zimorodok
    @zimorodok
    bind — навешивает обработчик непосредственно на элемент (когда тот есть в DOM-е). При удалении элемента так-же удаляется.

    live — навешивает обработчик на document, используется делегирование (всплытие событий). Позволяет создать обработчик до того, как элемент появится в DOM-е. При удалении элумента обработчик не удаляется, а просто перестает срабатывать. Если в DOM снова вставить элемент, подходящий под селектор, обработчик снова отработает.

    delegate — точно так-же, как и live, использует делегирование, только явно указывается узел, на который навешивается обработчик. (удобно для разработки модулей, или как их еще называют, виджетов)

    on — объединяет возможности как bind, так и delegate (зависит от формы использования). Как верно было замечено, остальные методы deprecated и в новых версиях поддерживаться не будут. Елиный метод введен для того, чтобы не возникали вопросы какой метод использовать.
    Ответ написан
    Комментировать
  • Redis vs SQLite vs PostgreSQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    Молоток vs Кувалда vs Отвёртка

    Я решил выяснить, какой из инструментов лучше. Представил одинаковую задачу — ударять себя по большому пальцу ноги. Отвёртку решил держать за ручку и ударять наконечником, так как неудобно держать за наконечник и ударять ручкой. Для молотка и кувалды это одинаковые схемы. Запросы: ударить по большому пальцу и измерить время, сколько болит.

    Результат: если ударить больно, то палец болит. В чём же тогда прелесть отвёртки? Понимаю, что она подходит для узконаправленных задач, например, только откручивание или закручивание, т.е. для ограниченных задач. В остальном одни минусы: и держать неудобно, и площадь поражения невелика, и по пальцу я попал только с третьего раза.

    PS: Что вы используете для надёжного перманентного отбивания пальцев? Холивар классический русский молоток vs молоток из икеи можно опустить, разницы между ними практически не будет.
    Ответ написан
    4 комментария
  • Redis vs SQLite vs PostgreSQL

    @Ghostwriter
    1. В Redis лучше представлена работа с коллекциями. Простой пример — инкрементальный счётчик. Вы делаете incrby/hincrby для любого ключа, не заботясь о его наличие в хранилище. В Postgres аналогичная функциональность на основе последовательностей (nextval('foo')) подразумевает, что вы уже создали последовательность 'foo' ранее. Это подталкивает вас на написание процедур, которые перед попыткой изменить счётчик, сначала проверяют его наличие, при необходимости создают его и только потом изменяют. Больше ручной работы.

    2. Структуры данных в Redis оптимизированы либо под быстрый поик О(1), либо под компактность и приемлемую произволительность O(N), O(log(N)). Практически всегда получается обходиться простыми или вложенными хеш-таблицами с О(1) или О(n). В Postgres вы практически всегда пользуетесь той или иной разновидностью B/R-tree, GiST/GIN индексов со сложностью O(log(N)(+N)). До версии 8.4, индексы типа HASH в Postgres имели практически схожую с B-tree скорость поиска, поэтому их применение не имело никакого смысла. Сейчас, в версии 9.1, смысла стало больше, но не намного — HASH индексы не поддерживают Write-Ahead Log и при сбоях требуют ручной переиндексации:
    "Hash index operations are not presently WAL-logged, so hash indexes might need to be rebuilt with REINDEX after a database crash. They are also not replicated over streaming or file-based replication. For these reasons, hash index use is presently discouraged." http://www.postgresql.org/docs/9.1/static/indexes-types.html

    У себя в проектах, я использую и Redis, и Postgres. Первый — как эффективную систему для сбора онлайн-статистики (счетчики-лайки, различные метрики), а второй — как хранилище для пользовательских аккаунтов и контента с его мета-информацией. При этом, наметилась тенденция переносить контент на HBase, оставляя для Postgres только задачи по ACID-обслуживанию операций с пользовательскими аккаунтами.
    Ответ написан
    Комментировать
  • Redis vs SQLite vs PostgreSQL

    Stdit
    @Stdit
    Помимо РСУБД, мы используем MongoDB. Замечательная и быстрая штука, которая позволяет хранить коллекции из деревьев любой формы, строить индексы по любым их узлам, легко масштабируется горизонтально, имеет довольно мощную систему запросов на чтение и обновление. Недостаток — отсутствие джойнов, проблемы с агрегацией, они решаются путём предварительной агрегации при изменении данных или переучётом по крону.
    Ответ написан
    9 комментариев
  • Redis теряет данные?

    Screatch
    @Screatch Автор вопроса
    Ruby On Rails front-end developer
    Кажется разобрались.
    Виной кривой драйвер для Node.JS — node_redis

    Отказались от Redis в пользу mysql memory, производительность радует
    Ответ написан
    Комментировать
  • На каких объемах данных реляционные БД перестают работать?

    dbmaster
    @dbmaster
    согласен с pietrovich.

    52500 милионов записей в год ~= 4375 в месяц ~= 145.83в день ~= 6.08 в час

    добейтесь добавления 6 миллионов записей в час учитывая распределение по DATASOURCE_ID и будет вам счастье. В принцепи можно распределить разные data sources на разные сервера и таким образом добиться scale out.

    Hint: Майкрософт даёт пробовать на пол года Enterprise версию — заказчику не обязательно платить сразу.

    хотя вы же вроде ищите аргументы против (
    Ответ написан
    5 комментариев
  • На каких объемах данных реляционные БД перестают работать?

    dbmaster
    @dbmaster
    Как говорила моя старая знакомая, нужно сесть и посчитать.
    Ответ написан
    3 комментария
  • На каких объемах данных реляционные БД перестают работать?

    А что значит не потянет?

    Размер таблицы в MS SQL ограничен только размером диска.

    Другой вопрос — обработка данных, будет медленно, возможно будут ошибки, но это проблема настроек или несоответствие запрашиваемых объемов данных размеру оперативной памяти. Первая проблема с помощью гугла или довольно дешевого специалиста легко решается, а вторую все равно придется исправлять в клиенте независимо от базы.

    Если key-value вас устраивает, то такие движки конечно же будут работать на порядок быстрее, есть куча популярных.

    Тут я должен был сказать, что если другая модель не SQL более оптимально описывает ваши данные, то лучше использовать ее. Но такие базы, пока, не сравнятся по популярности с реляционными и нет исчерпывающей информации по всем возможным проблемам. Кроме того, на мой взгляд, производительность там также не очень откатана и вот там вполне может «не потянуть» внезапно и по непонятным причинам. В общем я бы рекомендовал такой вариант только если у вас какой-то совсем запущенный случай, который никак приемлемо не решить с помощью реляционной базы. А просто так на таких объемах я бы не экспериментировал.

    И вообще все эти тесты — фигня. Единственный нормальный тест — это создать вашу таблицу на двух движках, заполнить демо-данными и протестировать с реальными запросами и под нагрузкой близкой к ожидаемой. Хотя и это не дает полной картины, есть еще такие нюансы как: надежность, горячие бэкапы или даже зеркало, если потеря даже последних данных критична, масштабируемость, итд.

    Да и заказчика понимаю, поставите вы ему сейчас что-то модное и NOSQL, пусть даже производительность в несколько раз лучше (хотя тут тоже вопросы), а ему потом в случае чего придется срочно искать специалистов на эту базу, которые еще и возьмут втридорога.
    Ответ написан
    Комментировать
  • Backup БД Redis

    @quard
    в redis-cli сделать SAVE, потом файл базы скопировать
    Ответ написан
    2 комментария
  • Что должен знать и делать ведущий разработчик?

    Bambr
    @Bambr
    Вообще все сильно зависит от компании. Как уже на днях писали, то что человек работал тимлидом в мелкой конторе, не обязательно дает ему достаточные навыки, чтобы претендовать на более простую должность ведущего разработчика в каком-нибудь майкрософте — требования могут быть совершенно разные. Вообще про тимлидов выше уже много написали. Предположим, что у нас иерархия длиннее — не «тимлид -> программер», а например «тимлид -> ведущий программер -> программер -> стажер».
    1) С тимлидом все более менее понятно, этот человек в идеале должен обладать навыками менеджера, архитектора, быть техническим экспертом в своей области и авторитетным членом команды. При этом не должен забывать, что он — часть команды, а не главный чувак с подаванами. Этот человек принимает много решений (как самостоятельно, так и принимая мнения/идеи других людей), несет ответственность за команду перед руководством и ответственность перед командой за все происходящее.
    2) ведущий — как правило опытный разработчик. Должен уметь самостоятельно принимать решение о способе реализации задачи и думать о последствиях выбора того или иного решения. Четко знает, чем хороший код отличается от плохого, умеет оценивать скорость выполнения кода и потребляемые им ресурсы (типа «этот код вчетверо быстрее вон того, но жрет вдвое больше памяти и увеличивает нагрузку на базу»)
    3) программист/кодер — человек, способный самостоятельно закодировать четко описанную задачу (написать функцию с таким-то интерфейсом, которая будет решать такую-то задачу, и прикрутить ее вон туда). Если задача описана недостаточно конкрентно — есть шанс получить херовое решение. С другой стороны, неконкретности в постановке задачи — один из способов заставить кодера думать.
    4) стажер — человек, которому для решения даже достаточно четко очерченной несложной задачи потребуется внимание и советы старших. Тут важно отличать идиота и человека без опыта, внимание будет требоваться обоим, но «правильным» стажером является именно второй вариант :)
    Ответ написан
    2 комментария
  • NoSQL и сохранность данных?

    @skvot
    Да, редис привлекателен в первую очередь из-за скорости. Это скорее альтернатива memcached чем БД, на которой можно полностью строить приложение. При проектировании одной игры мы делали следующее: перед боем данные из бд подгружались в редис, во время боя использовался только редис, после боя записывали результаты назад в MySQL.
    Ответ написан
    1 комментарий
  • NoSQL и сохранность данных?

    sajgak
    @sajgak
    Как говорится: «любишь кататься, люби и саночки возиться».
    Если вам нужна производительность в любом случае вы будете жертвовать надежностью.

    Если по теме — используйте репликацию. Использовать fsunc при каждой записи как то глупо.

    Ну и не по теме — если сервер ляжет в процессе записи данных в mysql с ними случится ровно тоже, что и при записи в Redis, MongoDB или любую другую noSql базу
    Ответ написан
    1 комментарий
  • плагины для удобства работы в Visual Studio 2010

    Kalantyr
    @Kalantyr
    Resharper
    Ответ написан
    Комментировать
  • плагины для удобства работы в Visual Studio 2010

    artzub
    @artzub
    Программист
    visualstudiogallery.msdn.microsoft.com — большая галерея плагинов.
    Использую повседневно:
    1. Git Source Control Provider — goo.gl/jti8t
    2. PowerCommands — goo.gl/n4Oha
    3. Productivity Power Tools — goo.gl/56tZW
    4. VS10x Code Map v2 — goo.gl/fJa4Z
    • у этого разработчика плагинов есть очень полезные, но они платные.
    5. Javascript Parser — goo.gl/YkCaG
    Ответ написан
    1 комментарий