Pull to refresh
-3
0
Send message

А кто-то пробовал прозрачно переносить историю заббикса из postgresql в кликхаус используя fdw? https://github.com/adjust/clickhouse_fdw.
Я вот только что поднял на коленке — базово работает, интересно что по производительности и точности данных. Из патчей только один в в веб-интерфейсе


//include/db.inc.php
function zbx_sql_mod($x, $y) {
        //return ' MOD('.$x.','.$y.')';
        return ' (('.$x.')%('.$y.'))';
}

Это да, но ты пойди до него еще доберись, если там стоит какой-нибудь CHAOS+tarpit и сам ссш на высоких портах. От ботов хватает даже банального правила на DROP + перевешивания на высокий порт. А не от ботов — алерт на auth логи.

Ну, я вот почему-то предполагаю что в ЧГК участвуют студенты и не самые глупые студенты. Наверняка хотя бы один АСУшник у них был. Опять таки преподаватели могли иметь практический опыт построения этой системы. Студенты могли иметь доступ на предприятия с мощным оборудованием которое включается-выключается. Если точно измерять частоту — можно замерить реакцию системы на импульсное воздействие и определить порядок передаточной функции. Сейчас уже не помню все, но методы исследования систем есть и проходятся в универе.

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

Я слышал что СССР была единая энергосистема и частота и фаза генераторов по все стране была одинаковой (а иначе как их еще объединить систему). Соответственно, получить сведения о текущей частоте сети было просто. То что частота связана с нагрузкой — это элементарно и проходилось наверное даже в школе. Падает нагрузка — растет скорость вращения турбин. Влияние включения — выключения телевизоров — тоже вполне реально, т.к. вполне могли оставаться ламповые телевизоры, который потребляли кучу энергии. Если синхронизировать моменты выключения — полагаю что скачок по частоте вполне реально было уловить.

Я тут статью вспоминаю про то что ключ зашифрованный паролем аналогичен ключу без пароля. Не знаю насколько она актуальна, но все же лучше этот ключ зашифровать дополнительно. https://habr.com/ru/company/wirex/blog/419829/

Ну нет же. Ключ может храниться на неизвлекаемом носителе. Например тот же TPM. Пароль надо вводить при каждом логине на сервер, ключ может быть расшифрован один раз и храниться ssh-agent'ом. Один ключ может безопасно использоваться для входа на несколько серверов, пароль — нет. Ваш пароль передается на удаленный серевер и легко может быть извлечен рутом на сервере куда вы логинитесь (как пример — специальный pam модуль). Единственный плюс пароля — отсутствие необходимости хранить ключ.

Тем что пароль передается на удаленный сервер в открытом виде и если он (сервер) скомпроментирован, будет скомпроментирован и ваш пароль при логине. Если вы его используете на нескольких серверах — будет получен доступ и к ним. Если же вы генерируете пароли для каждого сервера — то в практическом плане ключ удобнее тем что он безопасно может быть один для доступа на многие сервера.

Ого. Интересно.Заставило почитать исходный код. Вы ведь используете репликацию с hot_standby_feedback? Как я понял standby вычисляет и посылает в этом случае ид транзакции с мастера (на standby нет своих номеров транзакций), которая еще хранит нужные ему строки и мастер не очищает строки чтобы не удалить строки которые нужны на standby.


При этом truncate таким не страдает и спокойно очищает строки. Интересно, vacuum full это по сути запрос cluster, но в нем все равно проверяется какие строки должны оставаться видимы.


https://github.com/postgres/postgres/blob/8ce3aa9b5914d1ac45ed3f9bc484f66b3c4850c7/src/backend/commands/cluster.c#L864


egorov, звучит как тема для еще одной статьи — как работает host_standby_feedback и на что он влияет на мастере)

VACUUM FULL все же накладывает эксклюзивную блокировку (ожидает завершения транзакций на таблице). Проверить просто — открыть два окна, в одном начать транзакцию и выбрать что-то из таблицы, в другом выполнитьVACUUM FULL. Он не начнется пока не будет завершена транзакция в другом окне.


Соглашусь с предыдущим комментарием — выглядит так, как будто можно заменить на


SET statement_timeout = '1s';
VACUUM FULL table_name;

Спасибо за статью, узнал про запрос TABLE.
Возник вопрос — чем не подошел pg_repack?


И еще дополнение — в приведенном запросе имена индексов не сохранятся, добавится префикс swap. И так каждый раз.


Заголовок спойлера
CREATE TABLE _swap_%table(LIKE %table INCLUDING ALL);
INSERT INTO _swap_%table TABLE %table;
DROP TABLE %table;
ALTER TABLE _swap_%table RENAME TO %table;

Статью не обещаю. Напишу только что
1) если почта корпоративная — все записи dkim+spf+dmarc настраивает ваш админ на вашем домене. И он волен крутить ручки как угодно. Другое дело что строгие правила редко где нужны. (Лучше пусть кто-то напишет от вашего имени чем письмо не дойдет).
2) у гугла так сделано потому что если сделать более строгие требования есть большие шансы что поломается почта у тех кто пользуется пересылкой (а вы не хотите чтобы ваша почта терялась)


Видимо гугл на домене gmail уповает на другие механизмы защиты от спама.

Хочу добавить: это не критика автора статьи, статья очень крутая, я восхищен анимацией, собранной статистикой и слогом. Больше тут недоумение реакцией и критикой сервиса такси. Каммон, это действительно не та информация, которую стоит как-то сильно защищать.

Я обычно использую sslsplit. Вот что сходу нашлось. Для других сервисов думаю можно найти аналогично.


Заголовок спойлера
curl -d '{"skip_estimated_waiting":false,"estimate_waiting_selected_only":false,"summary_version":2,"supports_paid_options":true,"supports_hideable_tariffs":true,"with_title":true,"format_currency":true,"parks":[],"supports_explicit_antisurge":true,"id":"0000000000000000000000000","size_hint":240,"payment":{"type":"card","payment_method_id":"cash"},"selected_class":"econom","route":[[30.33606681550002,59.936871546400001],[30.4992504,59.8971657]],"selected_class_only":false,"position_accuracy":0,"suggest_alternatives":true,"supports_multiclass":true,"zone_name":"spb","supported_markup":"tml-0.1","supports_no_cars_available":true,"tariff_requirements":[{"class":"econom","requirements":{}},{"class":"business","requirements":{}},{"class":"comfortplus","requirements":{}},{"class":"vip","requirements":{}},{"class":"ultimate","requirements":{}},{"class":"maybach","requirements":{}},{"class":"minivan","requirements":{}},{"class":"child_tariff","requirements":{}},{"class":"mkk_antifraud","requirements":{}},{"class":"cargo","requirements":{}},{"class":"express","requirements":{}}],"extended_description":true,"requirements":{}}' -XPOST  'https://tc.mobile.yandex.net/3.0/routestats?block_id=default' -H 'Content-Type: application/json; charset=utf-8'

Впервые проявил активность и сразу насрали в карму. Следующую статью предлагаю написать про яндекс такси с предложением парсить их представителям Ситимобил. Точно такой же запрос без авторизации. Точно так же возвращаются ид машин. Рейтлимит не проверял, скорее всего его нет.


curl -d '{"simplify":true,"classes":["econom"],"id":"000000000000000000000000000000","point":[30.33606681550002,59.936871546400001],"supported":["code_dispatch"],"full_adjust_task":true,"current_drivers":[]}' -XPOST  'https://tc.mobile.yandex.net/3.0/nearestdrivers?block_id=default' -H 'Content-Type: application/json; charset=utf-8'

ответ
{
    "drivers": [
        {
            "display_tariff": "econom",
            "free": true,
            "id": "2669ba69328b74a733f34aca3e87098f",
            "positions": [
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:42.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:41.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:37.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:36.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:33.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:31.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:30.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:29.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:27.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:26.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:23.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:21.000000+0000"
                },
                {
                    "direction": 7.0,
                    "lat": 59.938283,
                    "lon": 30.336619,
                    "timestamp": "2019-12-19T15:06:19.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "96a7724ac3666322272512aa2d914f89",
            "positions": [
                {
                    "direction": 282.0,
                    "lat": 59.937850999999995,
                    "lon": 30.331927,
                    "timestamp": "2019-12-19T15:06:44.000000+0000"
                },
                {
                    "direction": 282.0,
                    "lat": 59.937850999999995,
                    "lon": 30.331927,
                    "timestamp": "2019-12-19T15:06:35.000000+0000"
                },
                {
                    "direction": 282.0,
                    "lat": 59.937850999999995,
                    "lon": 30.331927,
                    "timestamp": "2019-12-19T15:06:27.000000+0000"
                },
                {
                    "direction": 282.0,
                    "lat": 59.937850999999995,
                    "lon": 30.331927,
                    "timestamp": "2019-12-19T15:06:19.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "business",
            "free": true,
            "id": "6c5a49546c1c369269e3e441992a063a",
            "positions": [
                {
                    "direction": 184.0,
                    "lat": 59.936082,
                    "lon": 30.341468,
                    "timestamp": "2019-12-19T15:06:48.000000+0000"
                },
                {
                    "direction": 184.0,
                    "lat": 59.936249999999994,
                    "lon": 30.341492,
                    "timestamp": "2019-12-19T15:06:38.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "462341153693937e3089e3f9986eccdf",
            "positions": [
                {
                    "direction": 198.0,
                    "lat": 59.935739999999996,
                    "lon": 30.341271,
                    "timestamp": "2019-12-19T15:06:41.000000+0000"
                },
                {
                    "direction": 260.0,
                    "lat": 59.935984999999995,
                    "lon": 30.341431,
                    "timestamp": "2019-12-19T15:06:31.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.936065,
                    "lon": 30.341400999999998,
                    "timestamp": "2019-12-19T15:06:17.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "6d6004d783a6b1ceb4eb1ee79986127f",
            "positions": [
                {
                    "direction": 0.0,
                    "lat": 59.936989,
                    "lon": 30.330199999999998,
                    "timestamp": "2019-12-19T15:06:44.000000+0000"
                },
                {
                    "direction": 0.0,
                    "lat": 59.937002,
                    "lon": 30.330174,
                    "timestamp": "2019-12-19T15:06:36.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "business",
            "free": true,
            "id": "4f3240e25b5b3755020ff4acf795a52c",
            "positions": [
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:43.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:36.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:33.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:32.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:29.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:26.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:25.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:23.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:22.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:19.000000+0000"
                },
                {
                    "direction": 174.0,
                    "lat": 59.937272,
                    "lon": 30.330042,
                    "timestamp": "2019-12-19T15:06:17.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "comfortplus",
            "free": true,
            "id": "9c130b08a5a03f252e7d38639fbf1b80",
            "positions": [
                {
                    "direction": 224.0,
                    "lat": 59.937495999999996,
                    "lon": 30.32998,
                    "timestamp": "2019-12-19T15:06:48.000000+0000"
                },
                {
                    "direction": 224.0,
                    "lat": 59.937495999999996,
                    "lon": 30.32998,
                    "timestamp": "2019-12-19T15:06:31.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "1cfbd787a81806c0cbe76b6d6ff53965",
            "positions": [
                {
                    "direction": 189.0,
                    "lat": 59.937428999999995,
                    "lon": 30.330049,
                    "timestamp": "2019-12-19T15:06:42.000000+0000"
                },
                {
                    "direction": 189.0,
                    "lat": 59.937428999999995,
                    "lon": 30.330049,
                    "timestamp": "2019-12-19T15:06:33.000000+0000"
                },
                {
                    "direction": 189.0,
                    "lat": 59.937428999999995,
                    "lon": 30.330049,
                    "timestamp": "2019-12-19T15:06:25.000000+0000"
                },
                {
                    "direction": 189.0,
                    "lat": 59.937428999999995,
                    "lon": 30.330049,
                    "timestamp": "2019-12-19T15:06:17.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "552f58f744ad5655b13e1039da0934b5",
            "positions": [
                {
                    "direction": 103.0,
                    "lat": 59.934892999999995,
                    "lon": 30.329645,
                    "timestamp": "2019-12-19T15:06:33.000000+0000"
                },
                {
                    "direction": 103.0,
                    "lat": 59.934942,
                    "lon": 30.32924,
                    "timestamp": "2019-12-19T15:06:16.000000+0000"
                }
            ]
        },
        {
            "display_tariff": "econom",
            "free": true,
            "id": "8e06bb9ae835176c2f38aa8e380cc1df",
            "positions": [
                {
                    "direction": 104.0,
                    "lat": 59.93367,
                    "lon": 30.339648999999998,
                    "timestamp": "2019-12-19T15:06:47.000000+0000"
                },
                {
                    "direction": 104.0,
                    "lat": 59.93367,
                    "lon": 30.339648999999998,
                    "timestamp": "2019-12-19T15:06:42.000000+0000"
                },
                {
                    "direction": 104.0,
                    "lat": 59.933792,
                    "lon": 30.338673999999997,
                    "timestamp": "2019-12-19T15:06:33.000000+0000"
                }
            ]
        }
    ]
}

После чего пишем статью про gmail, они неправильно настроили spf+dmarc
~all — разрешает подделывать адреса отправителей, т.е. любой может написать от вашего адреса почты. DMARC политика установлена в none что также разрешает всякие непотребства. Ждем)


Заголовок спойлера
dig -t txt _spf.google.com +short
"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

dig -t txt _dmarc.gmail.com +short
"v=DMARC1; p=none; sp=quarantine; rua=mailto:mailauth-reports@google.com"

СравниТакси? Приложение для телефонов. Или надо программно?

Есть такая штука — Residential Proxies. В итоге как обычно — защита обходится не так сложно. Но в то же время доставит проблемы легитимным пользователям впн.

Думаю те, кто ходят готовы к этому. Вопрос в том, готов ли бизнес потерять клиента (а значит и деньги) из-за странной политики к пользователям впн.

Что есть тенденция из-за наших новых законов и из-за блокировок гнать весь трафик через зарубежный впн. И такие блокировщики по AS доставляют боль. Иногда проще отказать от сервиса чем отключать ради него впн.

В некоторых сервисах такси есть такая штука — вызов такси кому-то в другой части города. Есть например в том же яндексе. И точно так же показываются машины рядом. Удобная штука. А вот вы предложили сделать ее менее удобной.

Information

Rating
Does not participate
Registered
Activity