В чем опасность использовать прямую работу с БД если есть API

Жил был скрипт, который использовал вот таакой запрос к БД Zabbix:

select sendto from media where userid in (select userid from (select users_groups.userid from operations inner join opmessage_grp on opmessage_grp.operationid=operations.operationid inner join users_groups on opmessage_grp.usrgrpid=users_groups.usrgrpid where operations.actionid in (select actionid from conditions where conditiontype=2 and value=%s union all select actionid from conditions where conditiontype=0 and value in (SELECT groups.groupid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE triggers.triggerid=%s) union all select actionid from conditions where conditiontype=1 and value in (SELECT hosts.hostid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE triggers.triggerid=%s)) union all select opmessage_usr.userid from operations inner join opmessage_usr on opmessage_usr.operationid=operations.operationid where operations.actionid in (select actionid from conditions where conditiontype=2 and value in (select triggers.triggerid from triggers where triggers.triggerid = %s union all select triggers.templateid from triggers where triggers.triggerid = %s) union all select actionid from conditions where conditiontype=0 and value in (SELECT groups.groupid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE triggers.triggerid=%s) union all select actionid from conditions where conditiontype=1 and value in (SELECT hosts.hostid FROM triggers INNER JOIN functions ON triggers.triggerid=functions.triggerid INNER JOIN items ON items.itemid=functions.itemid INNER JOIN hosts ON hosts.hostid=items.hostid INNER JOIN hosts_groups ON hosts_groups.hostid=hosts.hostid INNER JOIN groups ON groups.groupid=hosts_groups.groupid WHERE triggers.triggerid=%s))) as us group by userid union all select userid from users_groups where usrgrpid=18) and mediatypeid=5

Единственной функцией котого было дать список телефонов пользователей по id триггера. И работал бы этот скрипт еще долго, если бы не случилось обновление Zabbix с 3.4 до 4.4 Структура БД изменилась. Запрос работать перестал. Посмотрел я на него, посмотрел.. И понял, я наверное был не в себе когда его писал, и повторить такой подвиг больше не смогу. Решил переписать его использую API Zabbix. Вышло много понятнее 😉

Карта для Minecraft 1.7.10 «Сталкер в России»

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

Карта:

Набор модов:

Работа с API Zabbix из PHP

Поискал, поискал, ничего толкового не нашел. Пришлось написать самому. Выложил на GitHub. Описание актуального API Zabbix тут.

Пример использования:

1C управляемые формы, выбор из списка значений

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

Теперь воспроизведу всё пошагово:

Создаем реквизит, например «Категория». ВАЖНО! — тип — произвольный:

выбор из списка значений


У меня был длительный затык именно на этом месте.

Далее ставим галочку «Режим выбора из списка» и назначаем обработку начала выбора на клиенте

Ну и собственно заполнение списка:

В чём была моя ошибка? Тип реквизита выбирал текст. Ну да, только когда я добавлял в список выбора цифры в Элементы.Категория.СписокВыбора.Добавить(0,»1″), то 1С их преобразовывала с цифры..

Update: 02/04/2024:

Для того чтобы получить выбранное значение или индекс можно воспользоваться:

На этом задача «выбор из списка значений» будем считать завершеной. Еще больше всяких шпаргалок по 1С, легко найдется здесь.

Простейшая http авторизация на PHP

Иногда проще бывает встроить «базовую» авторизацию (так называемая http авторизация) в скрипт, чем «пилить» что-то специальное под авторизацию. К счастью протокол HTTP позволяет это сделать — а именно перед открытием страницы можно спросить у пользователя…ну например банальное логин-пароль. Например так:




1 103 104 105 106 107 293