Задать вопрос
  • Как сформировать сложный запрос mysql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    WHERE (a=1 or b=1) and (a=2 or b=2)
    ?
    Ответ написан
    4 комментария
  • Как отличить лаги компьютера?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Жесткий диск периодически при запуске выдает ошибку об отсутствии.

    Для начала проверить исправность железа.
    Особенно диска (MHDD, Victoria), посмотреть SMART.

    Затем - при каких действиях тормозит и что в этот момент утилизируется максимально?
    Если только у вас не резко вычислительная задача, то ваш добротный 4-ядерный i5 вполне актуален до сих пор. Катастрофической разницы в производительности нет, хотя этими черепашьими шагами в пару процентов за поколение нынешние и побыстрее будут.
    ОЗУ - возможно просто недостаточно объёма. Но опять же зависит от задач.
    Ответ написан
    3 комментария
  • Как настроить проброс портов при балансировки Mikrotik PCC?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Если у вас не только в prerouting стоят первые 4 правила, но и в таблице маршрутизации созданы routing mark соответствующие, то картина ничем не отличается от одного аплинка. Эти правила как раз и обеспечивают ответ на входящее соединение именно на тот канал, откуда запрос пришёл.

    Я для удобства в nat завёл цепочку port_forward, в которую перебрасывал пакеты по правилам in-interface=ether2 и in-interface=ether3. А в этой цепочке уже обычный форвардинг без привязки к реальному интерфейсу.

    /ip firewall nat
    add action=masquerade chain=srcnat out-interface=ether3-gw0
    add action=masquerade chain=srcnat out-interface=ether4-gw1
    add action=jump chain=dstnat in-interface=ether3-gw0 jump-target=port_forwarding_udp protocol=udp
    add action=jump chain=dstnat in-interface=ether4-gw1 jump-target=port_forwarding_udp protocol=udp
    add action=jump chain=dstnat in-interface=ether3-gw0 jump-target=port_forwarding_tcp protocol=tcp
    add action=jump chain=dstnat in-interface=ether4-gw1 jump-target=port_forwarding_tcp protocol=tcp
    add action=dst-nat chain=port_forwarding_udp dst-port=6891 protocol=udp to-addresses=192.168.5.20
    add action=dst-nat chain=port_forwarding_tcp dst-port=80 protocol=tcp to-addresses=192.168.7.10

    Если с какого-то аплинка порт остаётся закрыт, попробуйте попинговать сам роутер. Если пингов нет на том же самом провайдере - разбирайтесь с routing-mark. Я не раскурил в своё время, как работает эта магия с check-gateway 8.8.8.8.
    Ответ написан
    5 комментариев
  • Как выяснить сколько осталось роутеру жить?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Пока не помрёт, столько жить и будет.

    https://geektimes.ru/post/256350/
    Или вскройте свой (что дешевле) или попробуйте заменить блок питания (что проще). Весьма вероятная причина, давняя и известная.
    Ответ написан
    Комментировать
  • По каким правилам соединяют маршрутизаторы?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Глобально доступные - те, которые вам даёт провайдер. Если у вас уже AS - то вы бы такое здесь не спрашивали, а спросили своего сетевого админа. ЛВС - любые адреса из серых подсетей.

    Главное, чтобы оба маршрутизатора знали, куда отправлять пакеты.
    Маршрутизатор X должен знать, что сеть B доступна через хост Y.
    Маршрутизатор Y должен знать, что сеть A доступна через хост X.
    Сами IP адреса хостов X и Y значения не имеют, как и количество этих адресов. Далее идёт только вопрос, как бы сделать, чтобы не прописывать эти таблицы маршрутизации вручную и всякие схемы резервирования, балансировки нагрузки, стоимости.
    Это если без NAT, просто пакетики перебрасывать между собой.
    Ответ написан
    5 комментариев
  • Как правильно убить postgresql idle процессы?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    pgbouncer держит всегда запущенными некоторый пул коннектов (дефолтно, во всяком случае, не в курсе, можно ли его попросить долговременно не держать коннекты вообще). Если вы их утилизируете не все - то будут idle.
    А так же это могут быть и старые коннекты, если инициатор соединение ещё не закрыл сам или оно ещё не было закрыто по таймауту. Например, приложение может иметь собственный пул коннектов.

    И, разумеется, pgbouncer обрабатывает только те коннекты, которые адресованы именно ему. СУБД он не трогает вовсе, pgbouncer - стороннее приложение, для postgresql - это просто ещё один клиент.
    Ответ написан
    Комментировать
  • Как фиксить эту проблему ( залил проект на хостинг )?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /var/www/vhosts/mysite/httpdocs/mysite.mysite/public/index.php on line 49

    5.3 это вроде бы текущий мастер https://github.com/laravel/laravel/blob/master/pub...
    49 строка пуста. А у вас там что?

    php-5.4.45 -l index.php
    PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in index.php on line 50

    Ошибка похожа. Значит вы не на 7.0.
    Ответ написан
  • Стоит ли делать на nosql highload с несколькими млрд строк, чтобы уйти от add column?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    А зачем останавливать репликацию и прочие странные вещи для добавления колонки в postgresql?
    Добавляете default null колонку. Транзакционно, мгновенно. Если колонка не должна быть null - то после добавления колонки меняете ей default, затем небольшими пачками обновляете имеющиеся строки, затем drop null.
    Ответ написан
    6 комментариев
  • Как одним select выбрать максимальную дату в MYSQL?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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