Задать вопрос
  • Как одним select выбрать максимальную дату в MYSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Одну строку?
    select info, date from table order by date desc limit 1;

    Если все строки с одинаковой максимальной датой - то да, подзапрос.
    Ответ написан
    Комментировать
  • Зачем скальпируют процессоры? Почему Intel сразу не ставит хорошую термопасту?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Давным-давно, в далёкой галактике...
    Хм, нет, в этой галактике. И не так уж давно, 199х, начало 200х годов процессоры поставлялись вообще без крышки, кулер устанавливался напрямую на кристалл CPU. Но бывало кристалл при неаккуратном воздействии повреждался. К тому же, в эти года был огромный прогресс производительности CPU, но и весьма заметный рост потребления энергии, что вело к увеличению массы кулера и повышению риска повредить кристалл.
    В итоге (не помню, кто первый), начали кристалл прикрывать теплораспределительной (и заодно защитной) крышкой. Одновременно с этим эту крышку начали снимать для разгона. Т.к. лишний посредник, немного ухудшает теплопроводность. К тому же, бывали случаи не совсем брака, кривая (выпуклая или вогнутая) крышка, кулер прижимался неплотно, что ухудшало охлаждение. Бывало, что неравномерно была припаяна сама крышка (а в те времена использовался именно припой) и ядро грелось сильнее, чем одноклассники. Иногда крышку снимали и вообще не ставили обратно. Иногда снимали, меняли термоинтерфейс и ставили крышку обратно. Штука рискованная (припой держится весьма прочно, повредить кристалл просто), давала всего несколько градусов выигрыша, поэтому не слишком популярная.

    Несколько лет назад интел офигел от отсутствия конкуренции и больше не использует припой между крышкой и кристаллом. Сначала в дешёвых CPU, начиная с Ivy Bridge LGA1155 (да, если вы не знали позицию интела: 6700K - это дешёвый процессор. Не дешёвый - это $1000 и выше). Сейчас уже и в младших представителях линейки энтузиастов (LGA 2011-3) используется термопаста вместо припоя. На счёт серверных xeon не уверен, но скорей всего там пока держится припой.

    Почему использует? Термопаста банально дешевле припоя, и значительно дешевле жидкого металла. На одного человека, выразившего недовольство новой политикой - есть армия тех, кто ничего не заметил. Первыми просто пренебрегли.

    Saboteur,
    Ни один производитель в мире не откажется от того, чтобы выпустить свою продукцию лучше, чем у конкурентов, особенно если это экономически оправдано

    Покажите конкурента. AMD Zen - надеемся, ждём. Текущая линейка не конкурент для производительного сегмента.
    А пока нет конкурента - можно снижать затраты на производство. Всё закономерно.
    Ответ написан
    4 комментария
  • Как посчитать количество записей за определённый период?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    select date(`created_at`) as create_date, sum(if(type = 'new', 1,0)) as new_count, sum(if(type = remove, 1,0)) as rm_count
    from actions 
    where user_id = 1 and created_at > DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
    group by create_date


    Ну а если надо часто такую аггрегацию делать - сделайте таблицу с предварительно агрегированными по дням данными.
    Ответ написан
    Комментировать
  • Почему глючит функция password_verify?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    php > var_dump(password_verify(null, '$2y$05$WjKwE1MiWPyPFghASGGcdupFqfcUHchkb2y/rwTiCWe40iIbqyxKq'));
    bool(true)
    php > var_dump(password_verify('', '$2y$05$WjKwE1MiWPyPFghASGGcdupFqfcUHchkb2y/rwTiCWe40iIbqyxKq'));
    bool(true)

    Проверяйте, от чего именно вы получаете хеш. И когда вы его получаете. Где-то там сам пароль потерян и осталась пустая строка.
    Ответ написан
    Комментировать
  • Как сделать SQL (MySQL), который добавить запись, если с момента последней прошёл 1 час?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    insert into tablename (datetimefield /*other fields*/) 
        select now(), /*other fields*/ 
        from (select 1) anyonerow 
        where not exists(
            select 1 from tablename where datetimefield >= now() - interval 1 hour
        )

    Результат была ли запись добавлена - смотреть в affected_rows.
    Ответ написан
    Комментировать
  • Как обработать входящий поток в php?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Разбирать вручную из file_get_contents('php://input');
    Возможно, ещё пригодится parse_str, которой PHP сам разбирает query string в $_GET и application/x-www-form-urlencoded в $_POST.
    Ответ написан
    1 комментарий
  • Как правильно сделать базу данных?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Таблица user_id, org_id, rating для лога кто именно за что и как проголосовал. Составной первичный ключ по user_id & org_id (или, возможно, org_id & user_id). В этой таблице проверять, голосовал ли этот пользователь уже за эту организацию.
    В таблицу организаций поле рейтинга с агрегированным значением текущего рейтинга, возможно количества проголосовавших и чего ещё надо для отображения. Не вычислять рейтинг в рантайме по таблице голосов.
    Ответ написан
    2 комментария
  • Как правильно выбирать видеокарту для компьютера?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Ой большое подозрение у меня, что не в видеокарту вы упираетесь. Фотошоп вообще умеет не профессиональные видеокарты использовать?
    Кроме цены видеокарты надо смотреть на цену и на остальной конфиг. С вашим процессором даже на современный средний сегмент замахиваться не думаю что оправдано. Видеокарта будет просто ждать инструкции от процессора и ничего не делать.

    Если на видеокарте стоит N памяти, то эта память работать будет с любой шиной и частотой. Вопрос в том, а будет ли от этого прок. На какие-нибудь бюджетные затычки маркетологи могут поставить 4гб памяти, но в тех играх и режимах, где не хватает видеопамяти этой видеокарте делать и так нечего, там будет не число кадров в секунду, а число секунд для рендера кадра.
    По отдельности параметры ничего не значат, только всё в комплексе. Смотреть какие семейства видеокарт в желаемом бюджете попадаются и читать их сравнительные обзоры.

    PS: по поводу не старта с первого раза - стоит осмотреть блок питания. Если он стар, а тем более если ровесник остального конфига, то могли деградировать конденсаторы. Да, вариант невозможности старта с первого раза, но дальнейшая вменяемая работа - такое тоже бывает от подсохших конденсаторов.
    Ответ написан
    3 комментария
  • Как перевести базу пользователей с паролями в md5 на хешер в Laravel?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Можете добавить default null поле для нового хеша пароля.
    На момент успешной авторизации вы знаете действительный пароль пользователя, значит если новый пароль в базе null, а старый хэш совпал, то сохраняете новый хеш в новое поле, а поле со старым паролем скидываете в null.
    Через пару месяцев/полгода/год/выбрать_по_настроению вырезаете код старого хэша и дропаете колонку из базы. Всем желающим авторизоваться, но у кого стоит null вместо пароля - пишете, что необходимо пройти процедуру восстановления пароля.

    Активная аудитория изменение не заметит. Теми, кто заходит слишком редко - придётся пожертвовать и заставить пройти более длинную процедуру.
    Ответ написан
    Комментировать
  • Правильное определение свойств в классах(php)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Зависит от версии PHP.
    Первые 3 примера допустимы в PHP 5.6 и выше. php.net/manual/en/migration56.new-features.php

    Вызов метода и обращение к другим свойствам - на данный момент непосредственно в коде объявления недопустимы.
    Ответ написан
    Комментировать
  • Как впустить конкретную машину через конкретный шлюз в Mikrotik?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Попробуйте что-то вроде такого: Mikrotik, выбор предпочтительного шлюза на основе Address Lists Пару лет назад я раскуривал, как сделать правила выхода через провайдера на основе address list. Т.е. то, что вы и хотите.
    Ответ написан
    Комментировать
  • Триггер на изменение данных?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Триггер не нужен, mysql умеет самостоятельно такое делать. ON UPDATE CURRENT_TIMESTAMP в объявлении колонки.
    https://dev.mysql.com/doc/refman/5.7/en/timestamp-...
    Ответ написан
    1 комментарий
  • При поиске по длине строки в MySQL индекс поля поможет или нет?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нет, не ускорит. Нужен функциональный индекс именно по length(field).

    mysql 5.7.6 позволяет создать вычисляемые поля: https://dev.mysql.com/doc/refman/5.7/en/create-tab...
    Это может быть STORED значение - т.е. будет занимать место как обычное поле, но вычисляться автоматически при добавлении/изменении строки. Может индексироваться всё с той же 5.7.6. И может быть virtual - такое поле вычисляется при обращении, не хранится на диске, но может индексироваться только с версии 5.7.8.

    Если ваша версия старая и не умеет генерируемые колонки - то в вашем распоряжении всё ещё остаются старые методы для имитации функционального индекса: создаёте ещё одно числовое поле, куда сохраняете длину текста. Индексируете как обычно. За актуальностью данных могут следить пара триггеров на before insert и before update.
    Ответ написан
    Комментировать
  • Миграция вешает сайт?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Изменение схемы в MySQL на лету - это своя особая песня.

    MySQL 5.6+: https://dev.mysql.com/doc/refman/5.6/en/innodb-onl...
    Или делать что-то странное, как в старые тяжёлые времена. Людьми, связавшимися с mysql, были изобретены разные методы. От извращений с созданием новых таблиц и триггеров до statement-репликации и alter table на слейве, затем объявление этого слейва новым мастером.
    Ответ написан
    Комментировать
  • Как сделать выборку и поиск по трём таблицам?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Релевантный поиск на лайках? Мда.
    Возьмите нормальный FTS (elasticsearch, shpinx), ну или хотя бы его встроенное в mysql подобие dev.mysql.com/doc/refman/5.7/en/fulltext-search.html
    Ответ написан
    Комментировать
  • Какие есть дистрибутивы Linux с оптимизацией менеджера пакетов в сторону многопоточной загрузки?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если правильно помню, Tor архитектурно открывают кучу соединений. А дебиан недавно вывесил зеркало пакетов напрямую в tor: https://habrahabr.ru/post/307208/
    Попробуйте.

    UPD: неправильно помню. Tor работает поверх одного соединения, которое периодически изменяется.
    Полезных мыслей пока нет.
    Ответ написан
  • SQLSTATE[22001]: String data, right truncated: 7?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Текущая транзакция будет отменена.
    Ответ написан
    Комментировать
  • Кеширование результата работы PHP?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    nginx.org/ru/docs/http/ngx_http_memcached_module.html
    Штатный, но в кеш должен писать кто-то другой.

    https://github.com/openresty/srcache-nginx-module
    Сторонний, может писать читать сам, в том числе не только в мемкеш.
    Ответ написан
    Комментировать
  • Как на php5.6 (guzzle5.3) отлавливать Exception?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    https://github.com/guzzle/guzzle/blob/5.3/src/Exce...
    ConnectException extends RequestException

    catch (\GuzzleHttp\Exception\RequestException $e) будет ловить оба исключения. Проверяйте код и стектрейс. Возможно вы смотрите не тот catch.
    Ответ написан
    Комментировать
  • Как создать дату в формате TIMESTAMP имея дату и минуты с начала суток?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    select `date` + interval minute_start minute from tablename;
    Ответ написан