Задать вопрос
  • Как организовать систему like’ов?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Сделайте к выборке ответов
    left join `table` on user_id=? and answer_id=answers.id


    Соостветственно, в результат добавится поле с лайком. Если оно null - значит пользователь не голосовал.
    Ответ написан
    Комментировать
  • Xen + HVM. Редактирование конфигурационного файла гостевого домена?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    disk = [
    'что на хост-системе, чем это будет являться в гостевой системе, доступ',
    ...
    ]
    Потому вопрос, а что именно вы пытаетесь сделать?
    Ответ написан
    Комментировать
  • Какое есть в PHP механизм отправка письма по очереди нескольким получателям?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Самое простое - заведите файлик last_email_index. Читаете файлик, инкрементируете циферку, если она стала больше, чем всего адресов - сбрасываете до 0, перезаписываете в файлик, отправляете письмо по адресу, равному полученному индексу массива.

    Если адреса и так в БД - то добавляете поле, когда последнее письмо было отправлено, выбираете адрес с самой старой датой, апдейтите на текущую дату и отправляете по этому адресу письмо.
    Ответ написан
    Комментировать
  • Яндекс.Метрика: почему не создаются цели через API?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    В описании апи этого тупо нет, но $params надо обернуть ещё в один массив:
    'content' => array('goal'=>$params),
    clubs.ya.ru/metrika/replies.xml?item_no=9965

    И сразу же ещё одна неимоверно логичная вещь - в ответ возвращается тупо список всех целей, включая добавленную. И искать среди них только что созданную цель надо самому.
    Ответ написан
    1 комментарий
  • Какая есть mini-ITX плата с возможностью установки 32GB памяти?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Планки памяти по 16гб/штука уже выпускаются? При том не регистровые?

    Вам или на серверном железе собирать (соответственно Xeon и регистровая память. Будут ли работать на десктопной материнке - прорабатывайте вопрос. Xeon'ы сейчас зачастую работают, а вот про память не узнавал. Скорей всего тоже искать серверную материнку) или без вариантов (т.е. ждать ещё пару лет появления такого железа в домашнем сегменте).
    Ответ написан
    3 комментария
  • Как проверить существование записи по Foreign key?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    and exists (select 0 from ...)

    В зависимости от объёма и explain'а, может оказаться эффективнее:
    SELECT * FROM `users` join (
    select distinct user_id from items
    ) hasitem on users.id=user_id WHERE `ballance` <= 10 AND `activated` = 1
    Ответ написан
    Комментировать
  • MySql - left join больших таблиц

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Подзапрос зачем?
    SELECT * FROM `Table1` s LEFT JOIN `Table2` t ON s.`id`=t.`id_obj` and `id_user`=7


    И без вывода explain'а такие вопросы не задаются.
    Ответ написан
    1 комментарий
  • Как проверить состояние жёстких дисков?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Классика жанра - MHDD или Victoria.
    Если поверхность чистая - то жить будут столько же, сколько и новые. Т.е. до первого спонтанного сбоя.

    SSD - SATA есть SATA. Биос понятий не имеет, HDD там или SSD. Подключили и работайте. Были бы эти самые SATA-порты в нужном количестве.

    Asus Commando - смысла нет гнаться за SATA3. И у неё SATA2 порты. В наиболее важной нагрузке - рандомный доступ на малой очереди - даже топовые SSD в SATA2 не упираются.
    А если зачем-то хотите красивых цифр линейного чтения, то ищите SATA-контроллер в исполнении как минимум PCI-E x2, иначе в шину PCI-E и упрётесь.
    Ответ написан
    2 комментария
  • RegExp в php. Проверка строки на наличие нужных последовательностей?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    У вас в третьем позитивном тесте c - русская, а я-то думаю, чего тест валится =)

    function checkStr( $sInput ) {
    	$sRegexp = '~^(:?%u00[0-9][0-9a-zA-Z])++$~';
    	return preg_match($sRegexp, $sInput);
    	}
    assert('checkStr("%u003c%u0073%u0063%u0072%u0069%u0070%u0074%u003e")');
    assert('checkStr("%u003c")');
    assert('checkStr("%u0046%u005c")');
    assert('checkStr("asd")==false');
    assert('checkStr("%a003da")==false');
    assert('checkStr("%k41ad")==false');
    assert('checkStr("Бла бла бла")==false');
    assert('checkStr("%u003c%u0073%u0063%")==false');
    assert('checkStr("%u003c%u0073ASFQ%u0063")==false');
    Ответ написан
    Комментировать
  • Mikrotik, выбор предпочтительного шлюза на основе Address Lists

    Melkij
    @Melkij Автор вопроса
    DBA для вашего PostgreSQL?
    Вот с таким mangle, кажется, работает как хотелось.
    /ip firewall mangle
    add action=mark-connection chain=input comment="mark input gw0" in-interface=\
        bridge-gw0 new-connection-mark=to_astral0 passthrough=no
    add action=mark-connection chain=input comment="mark input gw1" in-interface=\
        bridge-gw1 new-connection-mark=to_astral1 passthrough=no
    add action=mark-routing chain=output connection-mark=to_astral0 \
        new-routing-mark=to_astral0 passthrough=no
    add action=mark-routing chain=output connection-mark=to_astral1 \
        new-routing-mark=to_astral1 passthrough=no
    add action=mark-connection chain=forward connection-mark=no-mark \
        in-interface=bridge-gw0 new-connection-mark=to_astral0 passthrough=no
    add action=mark-connection chain=forward connection-mark=no-mark \
        in-interface=bridge-gw1 new-connection-mark=to_astral1 passthrough=no
    add action=jump chain=prerouting comment="process home connmark" \
        connection-mark=no-mark dst-address-type=!local in-interface=bridge-home \
        jump-target=prerouting_wan
    add action=jump chain=prerouting comment="process dmz connmark" \
        connection-mark=no-mark dst-address-type=!local in-interface=bridge-dmz \
        jump-target=prerouting_wan
    add action=jump chain=prerouting comment="set routing marks from home" \
        connection-mark=!no-mark in-interface=bridge-home jump-target=\
        prerouting_markroute
    add action=jump chain=prerouting comment="set routing marks from dmz" \
        connection-mark=!no-mark in-interface=bridge-dmz jump-target=\
        prerouting_markroute
    add action=mark-connection chain=prerouting_wan comment="use only gw0 list" \
        connection-mark=no-mark new-connection-mark=to_astral0 src-address-list=\
        wan_only_gw0
    add action=mark-connection chain=prerouting_wan comment="use only gw1 list" \
        connection-mark=no-mark new-connection-mark=to_astral1 src-address-list=\
        wan_only_gw1
    add action=mark-connection chain=prerouting_wan comment="use prefer gw0 list" \
        connection-mark=no-mark new-connection-mark=to_astral0 src-address-list=\
        wan_failover_prefer_gw0
    add action=mark-connection chain=prerouting_wan comment="use prefer gw1 list" \
        connection-mark=no-mark new-connection-mark=to_astral1 src-address-list=\
        wan_failover_prefer_gw1
    add action=mark-connection chain=prerouting_wan comment=PCC connection-mark=\
        no-mark new-connection-mark=to_astral0 per-connection-classifier=\
        both-addresses:2/0
    add action=mark-connection chain=prerouting_wan comment=PCC connection-mark=\
        no-mark new-connection-mark=to_astral1 per-connection-classifier=\
        both-addresses:2/1
    add action=mark-routing chain=prerouting_markroute comment=\
        "mark packet to_astral0" connection-mark=to_astral0 new-routing-mark=\
        to_astral0
    add action=mark-routing chain=prerouting_markroute comment=\
        "mark packet to_astral1" connection-mark=to_astral1 new-routing-mark=\
        to_astral1
    Ответ написан
    Комментировать
  • Как реализовать базу данных с 100 000 000 (100 млн.) записей?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Ответ написан
    Комментировать
  • Почему неправильно идет запрос в mysql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Скрипт каким образом запускается?
    Удостоверьтесь в том, что знаете, сколько именно раз он запускается.
    Это можно сделать, например, так:
    file_put_contents('dbupd.txt', date('Y-m-d H:i:s').' run'.PHP_EOL, FILE_APPEND);
    Ответ написан
    Комментировать
  • Быстрый разворот копий веб-серверов — это реально?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Chef и компания.
    Ответ написан
    Комментировать
  • Парсер API Яндекс-погоды не отдает image-v3 (xml, php). Почему?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Уж если вы пишете что-то, то включите хотя бы вывод ошибок.
    PHP вам говорит, что нет такого элемента image, и что константа v3 ему неизвестна. Но вы его не слышите. А это бы ясно сказало вам, в каком направлении рыть. И пришли бы с конкретным вопросом "как обратиться к элементу image-v3?", вместо этого.
    Ответ написан
    Комментировать
  • Получить временные интервалы

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Смысл извращаться с таймштампами, если давно есть штатный datetime?
    php.net/manual/en/class.datetime.php
    $rFrom = new datetime('first day of -6 month midnight');
    $rTo = new datetime('last day of -6 month midnight');
    var_dump($rFrom, $rTo);

    Класс DatePeriod тоже есть.
    Ответ написан
    1 комментарий
  • Как восстановить данные с отоформатированного диска?

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

    Если желаемого эффекта нет, а данные всё равно нужны - относите оригинал диска в лабораторию восстановления данных, приготовив донора и достаточно заметную сумму денег.
    Ответ написан
    Комментировать
  • Почему просачиваются локальные IP адреса на внешний интерфейс через NAT в Linux с KVM?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    На правах тычка пальцем в небо, пробовали натить весь трафик?
    /sbin/iptables -t nat -a POSTROUTING –o eth0 -j MASQUERADE
    Ответ написан
    Комментировать
  • Из-за чего большое время выполнения скрипта при поиске в MySql с использованием LIKE и ORDER?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    или укажите на явные ошибки

    Вот здесь:
    catalogProduct.list like '%|1|%'

    Толпа идентификаторов, разделённых | ?
    Это явная ошибка. Full scan быстрым бывает в одном случае - таблица очень мелкая, буквально пара записей.

    Вынесите эти идентификаторы в отдельную нормальную таблицу-связку.

    Мелкая ошибка - зачем left join, если требуете join? catalogProduct.list по вашему where не может быть null'ом.
    Ответ написан
    Комментировать
  • Как при каскадном подключении роутеров настроить маршрутизацию?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Я не сетевик и затруднюсь сказать, как это сделать верно, но что тут происходит:
    Для конкретики, 172.17.2.5 хочет послать пакет на 192.168.0.8. Это не его сеть, поэтому запрос уходит на микротик. Микротик по таблице маршрутизации посылает пакет на 172.17.2.117.
    Далее:
    Или tp-link дропает пакет нафиг из соображений безопасности - и надо разбираться с этим.
    Или tp-link спокойно пропускает пакет, где на него отвечает 192.168.0.8. Поскольку отправитель 172.17.2.5 не в его сети - ответ уходит вновь на tp-link. Там NATится по штатному правилу натить всё для WAN'а и уходит на 172.17.2.5. А 172.17.2.5 в итоге очень удивляется, что это за пакет от 172.17.2.117, он таких не ждёт - и выкидывает его. (в этом случае, видимо, надо поставить исключение для правила NAT'а)
    tcpdump на узлах скажет точно, кто куда доходит.
    Ответ написан