• Алгоримы, математика, как решается такое уравнение?

    Ответ написан
    Комментировать
  • Помогите с Mysql

    nochkin
    @nochkin
    Я бы диски проверил если есть возможность. Особенно если это один диск без рейда.
    Ответ написан
    1 комментарий
  • Помогите с Mysql

    la0
    @la0
    1. Убедитесь, что с дисками всё ОК. Может они всё IO съели просто (рейд развалился, например.)
    2. Убедитесь, что у вас не возникла внезапная фрагментация БД.
    3. Снимите нагрузку с мускула и убедись, что без неё он хоть как-то работает (напр. авторизуйтесь и запросите список процессов)
    4. Убедитесь, что в show processlist адекватная картина.

    Обычно этого достаточно.
    Ответ написан
    2 комментария
  • Перевод терминов Git на русский?

    robux
    @robux
    Работает локально:
    • init — инициализировать git
    • config — конфигурировать git
    • add — добавить файл/каталог в индекс
    • rm — удалить файл/каталог (из индекса и физически)
    • mv — переименовать файл/каталог (в индексе и физически)
    • commit — зафиксировать индекс
    • branch — создать ветку
    • merge — слить ветки
    • rebase — переслить ветки
    • checkout — встать на ветку
    • status — текущее состояние
    • diff — показать что изменено
    • remote — настроить связь с удалёнными

    Работает удалённо:
    • clone — клонировать (init+remote+pull)
    • fetch — забрать (без слияния)
    • pull — забрать и слить
    • push — отправить

    В остальное еще не вникал.
    Ответ написан
    2 комментария
  • На одном из моих сайтов больше 40% посетителей пользуются IE6. Что делать?

    ruskar
    @ruskar
    Conflict Intelligence Team
    Сейчас развитие устройств и технологий идёт так, что пользователей, которые заходят на сайт через мобильные платформы (планшеты, Android, iOS и т.д.) как правило больше, чем пользователей с сильно устаревшими браузерами (IE 6-7). Так что гораздо резоннее потратить время на оптимизацию под мобильные платформы, чем под очень устаревшие браузеры.
    Ответ написан
    1 комментарий
  • Управление кешем nginx

    forefinger
    @forefinger
    Есть модуль ngx_cache_purge, который умеет работать с (fast|s|uw)cgi_cache и proxy_cache.
    Ответ написан
    1 комментарий
  • Управление кешем nginx

    SkyCat
    @SkyCat
    Да, можно.

    В конфиге:
    fastcgi_cache_bypass $http_x_update;

    В скрипте при обновлении страницы:
    curl -s -o /dev/null -H "X-Update: 1" http://www.site.ru/expired_node
    Ответ написан
    1 комментарий
  • Почему в марте 2013 на один час меньше времени, чем в марте 2012 (PHP)?

    PaulZi
    @PaulZi
    Дело в переводе летнего времени в последнее воскресение марта (которое у нас отменили).
    strtotime конвертирует время в unixtimestamp соответственно то прибавляя 3600, то нет.
    Ответ написан
    4 комментария
  • Комбинированный снимок для повышения резкости

    Lions_Heart
    @Lions_Heart
    Вроде фотошоп успешно справляется с этой задачей. Вот вам статейка с описанием алгоритма fotoforge.livejournal.com/133864.html
    Ответ написан
    1 комментарий
  • Почему тормозит mysql при insert и update?

    KEKSOV
    @KEKSOV
    Пожалуй, вот хорошая статья о проблемах больших таблиц.

    И с чего, вдруг, такая «боязнь» партиционирования? Вот живой пример из подсистемы статистики на сайте одного из моих заказчиков. За год там накопилось около 5.000.000 записей, все прекрасно работает и ничего не тормозит:

    SET NAMES cp1251;
    DROP TABLE IF EXISTS stat_event;
    CREATE TABLE stat_event
    (
    -- Общие поля
        `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Ключ записи',
        `oid` BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID Объекта',
        `created` DATETIME NULL COMMENT 'Время создания записи',
        `changed` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT 'Время последнего изменения записи',
        `uid` BIGINT UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID пользователя, сделавшего последние изменения',
        `comments` BLOB COMMENT 'Примечание',
    
    -- Поля объекта
        `event_time` DATETIME NOT NULL COMMENT 'UNIX timestamp события (может отличаться от значения в поле created)',
        `event_type` ENUM (
              'UNKNOWN'     -- тип события не определен
            , 'INDEX'       -- загрузка заглавной страницы
            , 'PRODUCT'     -- загрузка страницы с описанием товара
            , 'CATEGORY'    -- загрузка страницы с описанием категории
            , 'GROUP'       -- загрузка страницы с описанием группы категорий
            , 'SITEMAP'     -- загрузка роботом карты сайта
            , 'ORDER'       -- оформление заказа через сайт
            , 'OTHER'       -- прочее событие
            , '404'         -- страница не найдена
            , '301'         -- редирект страницы
            , 'VIEW_CART'   -- просмотр корзины заказов
            , 'OFFLINE_MSG' -- Отправка сообщения через Форму пожаловаться
            , 'ONLINE_MSG'  -- Отправка сообщения через Форма помощь онлайн
            , 'PAGE_LOAD'   -- Страница загружена в браузер
        ) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'Тип события',
        `server_name` ENUM('0','foo.ru','boo.ru','goo.ru') NOT NULL DEFAULT '0' COMMENT 'Сервер, на котором произошло событие',
        `shop_object_id` BIGINT UNSIGNED DEFAULT 0 COMMENT 'идентификатор объекта магазина, если событие связано с ним',
        `request_uri` TEXT NULL COMMENT 'строка запроса',
        `query_string` TEXT NULL COMMENT 'параметры запроса',
        `bot` ENUM('0','1') NOT NULL DEFAULT '0' COMMENT 'В строке USER_AGENT встречается bot',
        `remote_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'IP-адрес клиента',
        `referer` TEXT NULL COMMENT 'Адрес страницы, с которой пришел клиент',
        `user_agent` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'название браузера, переданного серверу',
        `server` TEXT NULL COMMENT 'php-переменная $_SERVER',
        `session` TEXT NULL COMMENT 'php-переменная $_SESSION',
        `cookie` TEXT NULL COMMENT 'php-переменная $_COOKIE',
        `request` TEXT NULL COMMENT 'php-переменная $_REQUEST',
        `event_params` TEXT NULL COMMENT 'Дополнительные параметры события, как правило это JSON',
        `profiler` TEXT NULL COMMENT 'json счетчиков производительности',
        `profiler_total` DECIMAL(8,5) NOT NULL DEFAULT 0 COMMENT 'время, за которое был выполнен запрос',
        `db` TEXT NULL COMMENT 'json счетчиков SQL-запросов',
        `tephlon` TEXT NULL COMMENT 'json статистики кеша SQL-запросов',
        
        PRIMARY KEY (`id`, bot, event_time )
    ) ENGINE=MYISAM DEFAULT CHARSET=cp1251 COMMENT 'События, происходящие на сайте'
    PARTITION BY RANGE COLUMNS( event_time ) 
    SUBPARTITION BY LINEAR KEY( bot )
    SUBPARTITIONS 2
    (
          PARTITION p2011_09 VALUES LESS THAN ( '2011-10-01 00:00:00' )
        , PARTITION p2011_10 VALUES LESS THAN ( '2011-11-01 00:00:00' )
        , PARTITION p2011_11 VALUES LESS THAN ( '2011-12-01 00:00:00' )
        , PARTITION p2011_12 VALUES LESS THAN ( '2012-01-01 00:00:00' )
    
        , PARTITION p2012_01 VALUES LESS THAN ( '2012-02-01 00:00:00' )
        , PARTITION p2012_02 VALUES LESS THAN ( '2012-03-01 00:00:00' )
        , PARTITION p2012_03 VALUES LESS THAN ( '2012-04-01 00:00:00' )
        , PARTITION p2012_04 VALUES LESS THAN ( '2012-05-01 00:00:00' )
        , PARTITION p2012_05 VALUES LESS THAN ( '2012-06-01 00:00:00' )
        , PARTITION p2012_06 VALUES LESS THAN ( '2012-07-01 00:00:00' )
        , PARTITION p2012_07 VALUES LESS THAN ( '2012-08-01 00:00:00' )
        , PARTITION p2012_08 VALUES LESS THAN ( '2012-09-01 00:00:00' )
        , PARTITION p2012_09 VALUES LESS THAN ( '2012-10-01 00:00:00' )
        , PARTITION p2012_10 VALUES LESS THAN ( '2012-11-01 00:00:00' )
        , PARTITION p2012_11 VALUES LESS THAN ( '2012-12-01 00:00:00' )
        , PARTITION p2012_12 VALUES LESS THAN ( '2013-01-01 00:00:00' )
    
        , PARTITION p2013_01 VALUES LESS THAN ( '2013-02-01 00:00:00' )
        , PARTITION p2013_02 VALUES LESS THAN ( '2013-03-01 00:00:00' )
        , PARTITION p2013_03 VALUES LESS THAN ( '2013-04-01 00:00:00' )
        , PARTITION p2013_04 VALUES LESS THAN ( '2013-05-01 00:00:00' )
        , PARTITION p2013_05 VALUES LESS THAN ( '2013-06-01 00:00:00' )
        , PARTITION p2013_06 VALUES LESS THAN ( '2013-07-01 00:00:00' )
        , PARTITION p2013_07 VALUES LESS THAN ( '2013-08-01 00:00:00' )
        , PARTITION p2013_08 VALUES LESS THAN ( '2013-09-01 00:00:00' )
        , PARTITION p2013_09 VALUES LESS THAN ( '2013-10-01 00:00:00' )
        , PARTITION p2013_10 VALUES LESS THAN ( '2013-11-01 00:00:00' )
        , PARTITION p2013_11 VALUES LESS THAN ( '2013-12-01 00:00:00' )
        , PARTITION p2013_12 VALUES LESS THAN ( '2014-01-01 00:00:00' )
    
        , PARTITION p2014_01 VALUES LESS THAN ( '2014-02-01 00:00:00' )
        , PARTITION p2014_02 VALUES LESS THAN ( '2014-03-01 00:00:00' )
        , PARTITION p2014_03 VALUES LESS THAN ( '2014-04-01 00:00:00' )
        , PARTITION p2014_04 VALUES LESS THAN ( '2014-05-01 00:00:00' )
        , PARTITION p2014_05 VALUES LESS THAN ( '2014-06-01 00:00:00' )
        , PARTITION p2014_06 VALUES LESS THAN ( '2014-07-01 00:00:00' )
        , PARTITION p2014_07 VALUES LESS THAN ( '2014-08-01 00:00:00' )
        , PARTITION p2014_08 VALUES LESS THAN ( '2014-09-01 00:00:00' )
        , PARTITION p2014_09 VALUES LESS THAN ( '2014-10-01 00:00:00' )
        , PARTITION p2014_10 VALUES LESS THAN ( '2014-11-01 00:00:00' )
        , PARTITION p2014_11 VALUES LESS THAN ( '2014-12-01 00:00:00' )
        , PARTITION p2014_12 VALUES LESS THAN ( '2015-01-01 00:00:00' )
        
        , PARTITION p2015_01 VALUES LESS THAN ( '2015-02-01 00:00:00' )
        , PARTITION p2015_02 VALUES LESS THAN ( '2015-03-01 00:00:00' )
        , PARTITION p2015_03 VALUES LESS THAN ( '2015-04-01 00:00:00' )
        , PARTITION p2015_04 VALUES LESS THAN ( '2015-05-01 00:00:00' )
        , PARTITION p2015_05 VALUES LESS THAN ( '2015-06-01 00:00:00' )
        , PARTITION p2015_06 VALUES LESS THAN ( '2015-07-01 00:00:00' )
        , PARTITION p2015_07 VALUES LESS THAN ( '2015-08-01 00:00:00' )
        , PARTITION p2015_08 VALUES LESS THAN ( '2015-09-01 00:00:00' )
        , PARTITION p2015_09 VALUES LESS THAN ( '2015-10-01 00:00:00' )
        , PARTITION p2015_10 VALUES LESS THAN ( '2015-11-01 00:00:00' )
        , PARTITION p2015_11 VALUES LESS THAN ( '2015-12-01 00:00:00' )
        , PARTITION p2015_12 VALUES LESS THAN ( '2016-01-01 00:00:00' )
        
        , PARTITION p2016_01 VALUES LESS THAN ( '2016-02-01 00:00:00' )
        , PARTITION p2016_02 VALUES LESS THAN ( '2016-03-01 00:00:00' )
        , PARTITION p2016_03 VALUES LESS THAN ( '2016-04-01 00:00:00' )
        , PARTITION p2016_04 VALUES LESS THAN ( '2016-05-01 00:00:00' )
        , PARTITION p2016_05 VALUES LESS THAN ( '2016-06-01 00:00:00' )
        , PARTITION p2016_06 VALUES LESS THAN ( '2016-07-01 00:00:00' )
        , PARTITION p2016_07 VALUES LESS THAN ( '2016-08-01 00:00:00' )
        , PARTITION p2016_08 VALUES LESS THAN ( '2016-09-01 00:00:00' )
        , PARTITION p2016_09 VALUES LESS THAN ( '2016-10-01 00:00:00' )
        , PARTITION p2016_10 VALUES LESS THAN ( '2016-11-01 00:00:00' )
        , PARTITION p2016_11 VALUES LESS THAN ( '2016-12-01 00:00:00' )
        , PARTITION p2016_12 VALUES LESS THAN ( '2017-01-01 00:00:00' )
        
        , PARTITION p2017_01 VALUES LESS THAN ( '2017-02-01 00:00:00' )
        , PARTITION p2017_02 VALUES LESS THAN ( '2017-03-01 00:00:00' )
        , PARTITION p2017_03 VALUES LESS THAN ( '2017-04-01 00:00:00' )
        , PARTITION p2017_04 VALUES LESS THAN ( '2017-05-01 00:00:00' )
        , PARTITION p2017_05 VALUES LESS THAN ( '2017-06-01 00:00:00' )
        , PARTITION p2017_06 VALUES LESS THAN ( '2017-07-01 00:00:00' )
        , PARTITION p2017_07 VALUES LESS THAN ( '2017-08-01 00:00:00' )
        , PARTITION p2017_08 VALUES LESS THAN ( '2017-09-01 00:00:00' )
        , PARTITION p2017_09 VALUES LESS THAN ( '2017-10-01 00:00:00' )
        , PARTITION p2017_10 VALUES LESS THAN ( '2017-11-01 00:00:00' )
        , PARTITION p2017_11 VALUES LESS THAN ( '2017-12-01 00:00:00' )
        , PARTITION p2017_12 VALUES LESS THAN ( '2018-01-01 00:00:00' )
        
        , PARTITION p2018_01 VALUES LESS THAN ( '2018-02-01 00:00:00' )
        , PARTITION p2018_02 VALUES LESS THAN ( '2018-03-01 00:00:00' )
        , PARTITION p2018_03 VALUES LESS THAN ( '2018-04-01 00:00:00' )
        , PARTITION p2018_04 VALUES LESS THAN ( '2018-05-01 00:00:00' )
        , PARTITION p2018_05 VALUES LESS THAN ( '2018-06-01 00:00:00' )
        , PARTITION p2018_06 VALUES LESS THAN ( '2018-07-01 00:00:00' )
        , PARTITION p2018_07 VALUES LESS THAN ( '2018-08-01 00:00:00' )
        , PARTITION p2018_08 VALUES LESS THAN ( '2018-09-01 00:00:00' )
        , PARTITION p2018_09 VALUES LESS THAN ( '2018-10-01 00:00:00' )
        , PARTITION p2018_10 VALUES LESS THAN ( '2018-11-01 00:00:00' )
        , PARTITION p2018_11 VALUES LESS THAN ( '2018-12-01 00:00:00' )
        , PARTITION p2018_12 VALUES LESS THAN ( '2019-01-01 00:00:00' )
        
        , PARTITION p2019_01 VALUES LESS THAN ( '2019-02-01 00:00:00' )
        , PARTITION p2019_02 VALUES LESS THAN ( '2019-03-01 00:00:00' )
        , PARTITION p2019_03 VALUES LESS THAN ( '2019-04-01 00:00:00' )
        , PARTITION p2019_04 VALUES LESS THAN ( '2019-05-01 00:00:00' )
        , PARTITION p2019_05 VALUES LESS THAN ( '2019-06-01 00:00:00' )
        , PARTITION p2019_06 VALUES LESS THAN ( '2019-07-01 00:00:00' )
        , PARTITION p2019_07 VALUES LESS THAN ( '2019-08-01 00:00:00' )
        , PARTITION p2019_08 VALUES LESS THAN ( '2019-09-01 00:00:00' )
        , PARTITION p2019_09 VALUES LESS THAN ( '2019-10-01 00:00:00' )
        , PARTITION p2019_10 VALUES LESS THAN ( '2019-11-01 00:00:00' )
        , PARTITION p2019_11 VALUES LESS THAN ( '2019-12-01 00:00:00' )
        , PARTITION p2019_12 VALUES LESS THAN ( '2020-01-01 00:00:00' )
        
        , PARTITION p2020_01 VALUES LESS THAN ( '2020-02-01 00:00:00' )
        , PARTITION p2020_02 VALUES LESS THAN ( '2020-03-01 00:00:00' )
        , PARTITION p2020_03 VALUES LESS THAN ( '2020-04-01 00:00:00' )
        , PARTITION p2020_04 VALUES LESS THAN ( '2020-05-01 00:00:00' )
        , PARTITION p2020_05 VALUES LESS THAN ( '2020-06-01 00:00:00' )
        , PARTITION p2020_06 VALUES LESS THAN ( '2020-07-01 00:00:00' )
        , PARTITION p2020_07 VALUES LESS THAN ( '2020-08-01 00:00:00' )
        , PARTITION p2020_08 VALUES LESS THAN ( '2020-09-01 00:00:00' )
        , PARTITION p2020_09 VALUES LESS THAN ( '2020-10-01 00:00:00' )
        , PARTITION p2020_10 VALUES LESS THAN ( '2020-11-01 00:00:00' )
        , PARTITION p2020_11 VALUES LESS THAN ( '2020-12-01 00:00:00' )
        , PARTITION p2020_12 VALUES LESS THAN ( '2021-01-01 00:00:00' )
        
        , PARTITION p2021_01 VALUES LESS THAN ( '2021-02-01 00:00:00' )
        , PARTITION p2021_02 VALUES LESS THAN ( '2021-03-01 00:00:00' )
        , PARTITION p2021_03 VALUES LESS THAN ( '2021-04-01 00:00:00' )
        , PARTITION p2021_04 VALUES LESS THAN ( '2021-05-01 00:00:00' )
        , PARTITION p2021_05 VALUES LESS THAN ( '2021-06-01 00:00:00' )
        , PARTITION p2021_06 VALUES LESS THAN ( '2021-07-01 00:00:00' )
        , PARTITION p2021_07 VALUES LESS THAN ( '2021-08-01 00:00:00' )
        , PARTITION p2021_08 VALUES LESS THAN ( '2021-09-01 00:00:00' )
        , PARTITION p2021_09 VALUES LESS THAN ( '2021-10-01 00:00:00' )
        , PARTITION p2021_10 VALUES LESS THAN ( '2021-11-01 00:00:00' )
        , PARTITION p2021_11 VALUES LESS THAN ( '2021-12-01 00:00:00' )
        , PARTITION p2021_12 VALUES LESS THAN ( '2022-01-01 00:00:00' )
    )
    ;
    
    -- ALTER TABLE `stat_event` ADD UNIQUE `oid` (`oid`);
    ALTER TABLE `stat_event` ADD INDEX `shop_object_id` (`shop_object_id`);
    ALTER TABLE `stat_event` ADD INDEX `event_type` (`event_type`);
    ALTER TABLE `stat_event` ADD INDEX `time_bot` (`event_time`, `bot`);
    ALTER TABLE `stat_event` ADD INDEX `time_bot_type` (`event_time`, `bot`, `event_type`);
    ALTER TABLE `stat_event` ADD INDEX `shop_object_id` (`shop_object_id`);  
    
    Ответ написан
    Комментировать
  • celery. Запуск одной задачи последовательно

    Почитайто про routing. Надо эти задачи отправить в отдельную очередь и настроить только один воркер, обрабатывающий эту очередь, а в нем разрешить тольо один поток. Это единственный способ, если вы хоите использовать только celery.
    Если нужна еще надежность, нужна сторонная реализация многомашинного lock'а, задачу выполнять под ним. Также, как и в первом случае лучше настроить отдельную очередь но уже с несколькими воркерами.
    Ответ написан
    Комментировать
  • Полнотекстовый поиск на нескольких таблицах

    Garg0t
    @Garg0t
    Всё же попробуйте Sphinx. Помимо высокой производительности, в нем большая работа проделана по повышению релевантности. В свежем номере журнала «Хакер» есть интервью с Андреем Аксеновым (разработчиком Sphinx), он рассказывает об основных принципах, по которым он работает.

    С помощью Sphinx вы серьезно повысите качество выдачи, относительно способа, которым хотите решить задачу «в лоб».
    Ответ написан
    5 комментариев
  • Кому интересна настольная книга с лучшими статьями Хабра?

    TomasHuk
    @TomasHuk
    Книга не интересна, журнал — да.
    Думаю лучше б выпускали журнал с наиболее интересными публикациями за неделю или месяц. Периодичность выхода, соответственно, раз в неделю или раз в месяц. Проблемы с наполнением журнала нет, постов хоть завались. Плюс информация была бы всегда актуальной. Аудиторию свою нашли бы. Добавить в ППА пункт про бонусы за печать в журнале и, скорее всего, выросло бы количество постов и их качество.
    А среди лучших постов за все время есть немало, мягко говоря, бесполезных или утративших актуальность статей, которые бы странно смотрелись в книге, ИМХО.
    Ответ написан
    2 комментария
  • Кому интересна настольная книга с лучшими статьями Хабра?

    valemak
    @valemak
    Фрилансер
    Интересная идея. Лучшие статьи + лучшие комментарии к ним.
    Ответ написан
    1 комментарий
  • Хранить и считать время круга

    @edogs
    Хранить в int
    Вычислять как 1:44.912=1000*60*1+1000*44+912 и соответственно наоборот.
    Разница и среднее и прочее — высчитывается очень просто.
    Ответ написан
    1 комментарий
  • Какую версию Python изучать?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Похоже, python way сейчас таков, что надо знать обе версии.
    Как это было два года назад, так и еще два года будет.
    Ответ написан
    Комментировать
  • Какую версию Python изучать?

    Doktor_Gradus
    @Doktor_Gradus
    Книга Марка Лутца «Изучаем Питон» посвящена сразу обеим веткам, там подробно рассказываются различия, хотя и сделан некоторый упор на 3.x.
    Ответ написан
    Комментировать