Evil Technologies
الذهاب إلى القناة على Telegram
421
المشتركون
لا توجد بيانات24 ساعات
لا توجد بيانات7 أيام
لا توجد بيانات30 أيام
أرشيف المشاركات
Shadow Broker, чел если ты еще тут. Черкани пожалуйста мне сюда: https://t.me/idklolsome.
ps. знакомый автора канала ищет пропавшего товарища. это сообщение будет позже удалено
собрал посты сюда про дефер в одну статейку на медиум. Дальше мб будут незначительные доработки, но в целом, как то так, почти финальный вариант
https://medium.com/@4nd3rs0n/golang-defer-c412798fda00
https://itnext.io/top-10-ways-to-protect-eks-workloads-from-ransomware-ae96d1c1e839
Будет полезно блютимам всяким и девсекопсам
Repost from sdnv's funk-hole
Сегодня настраивал мониторинг
smartctl на linux-серверах
В качестве системы мониторинга используется Zabbix, настройка этого дела вообще простая
1. Установить пакет smartmontools, желательно >=7.2 версии
2. Добавить zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl в /etc/sudoers (я делал через Ansible, плейбуку оставлю в комментах)
3. Добавить официальный шаблон smart_agent2 в веб Zabbix и прикрутить шаблон к серверам
Но! Шаблон не умеет мониторить результаты Self-Test NVMe диска, поэтому пришлось орудовать напильником
Делов немного, но все равно неприятно, дописал шаблон, протестировал, все работает. Теперь собирается айтем NVMe Self-Test и есть триггер для него
Хз как стать контрибом в Zabbix Community, поэтому прост залил репу в свой гитхаб
#шпаргалки #софти да, то что defer берёт значения не по завершению функции, а по объявлению (тут второй скрин) можно пофиксить. Делается это достаточно просто
defer func() {
fmt.Printf("Num is %d\n", num)
}()
Таким образом, мы вместо того что бы сразу передать значения из текущего скоупа вызываемой функции – вызываем анонимную функцию без параметров.
Сама эта анонимная функция будет выполнена на момент завершения функции и будет иметь скоуп родительской
Немного о
defer в Golang
defer это что то вроде комманды для отложенного выполнения действия. Вы заранее можете объявить что сделать на завершение функции (выход из её скоупа)
Проблемы с defer
===============
defer даёт не всегда предсказуемый результат и прежде чем пихать его в функции стоит разобраться в том, какое поведение от него стоит ожидать, что бы потом не тратить время на дебаг.
Неочевидным результат выполнения его работы может стать достаточно легко. Например:
var num int32 = 10
defer fmt.Printf("Num is %d\n", num)
num = 5
Здесь мы объявили число num = 0, вызвали defer, а после этого изменили число.
Однако в данном случае defer не знает, что число изменилось и выведет Num is 0
Следующий момент, который стоит учесть при разработке, это порядок выполнения нескольких defer в одной функции. defer будут выполняться в обратном порядке от объявления => первый объявленные defer будет запущен последним.
Например, если вы запустите.
defer fmt.Println("one")
defer fmt.Println("two")
defer fmt.Println("three")
то вывод вы получите в обратном порядке =>
three
two
one
defer не влияет на ретёрн. Если вы решили переобъявить значение которое хотите вернуть в defer – то ничего не переобъявится, а просто вернётся значение до defer
И да ясно, что лучше вообще не писать код, где может возникнуть путаница с defer, я бы лично вообще посоветовал минимизировать количество функций, в которых более одного defer. Однако знать о нюансах его использования лучше заранее, что бы потом не дебажить плохой код днями, а сразу знать куда костыль подложить