Собрали в одном месте самые важные ссылкии сделали Тренажер IT-инцидентов для DevOps/SRE
Fuzzing - это процесс тестирования кода на основе максимально случайных данных (в том числе корректных и некорректных)
Позволяет организовать такую структуру
~/music │ ├── Artist 01 │ │ └── Album 01 │ │ │ └── Title 01 │ │ │ │── Title 02 │ ├── Artist 02 │ │ └── Album 01 │ │ │ └── Title 01 │ │ │ │── Title 02
Утилита позволяет реализовать порядок без перемещения файлов (с помощью ссылок)
Проект представляет собой Django-модуль, который позволяет организовать агрегацию логов на основе Django.
Django выступает в роли сервера, который принимает запросы логгирования, а клиент отправляет POST запросы на этот сервер.
ffi = FFIpp() ffi.cdef(""" class testClass { public: testClass(); void test(int); int returnsInt(int); private: void shouldNotBeInModule(); }; """) self.assertTrue(ffi.has_class("testClass")) ffi.set_source("example_module", """ class testClass { public: testClass(){} void test(int){/*nop*/} int returnsInt(int){return 1;} private: void shouldNotBeInModule() {/*nop*/} };""") ffi.compile() import example_module c = example_module.testClass() self.assertEqual(c.returnsInt(5), 1)
Модуль позволяет принять Github webhook для последующей удобной обработки
import keyboard # Press PAGE UP then PAGE DOWN to type "foobar". keyboard.add_hotkey('page up, page down', lambda: keyboard.write('foobar')) # Blocks until you press esc. wait('esc')
Модуль содержит набор моделей, view's. Можно адаптировать под обычную Django
~$ tag ~/frontend @frontend ~$ tag ~/backend @backend ~$ tag ~/frontend ~/backend @work ~$ tag ~/db @vm ~$ tag ~/web @vm # Or equivalently ~$ tag ~/frontend @frontend @work ~/backend @backend @work ~/db ~/web @vm # All tag names must begin with the @ symbol
# Execute 'git fetch origin' in all directories tagged @project ~$ run @project git fetch origin # Execute 'git status -sb' in all directories tagged @frontend and @backend ~$ run @frontend @backend git status -sb # Execute 'vagrant status' in all directories tagged @vms ~$ run @vms vagrant status # Directory paths can be specified along with tags ~$ run @backend ~/scripts ~/redis ls -la # The command can be executed in parallel as long as it doesn't wait for input ~$ run -p @backend 'sleep 5 && echo done' ~$ run -p @project git pull ~$ run -p @vms vagrant up
from signaller import Signal logging.basicConfig(level=logging.DEBUG) def slot(arg): print('slot:', arg) # Creating signals (you can set signal name, but it is not required, # signals can be anonymous): sig_test = Signal('sig_test') # Connecting signals to slots (uses weak references by default, # but you can force strong references by specifying weak=False): sig_test.connect(slot) sig_test.connect(lambda arg: print('slot_lambda:', arg), weak=False) # You can also use decorators for connecting signals to slots: @sig_test.connect def slot2(arg): print('slot2:', arg) # And weak=False can be specified when using decorators too: @sig_test.connect(weak=False) def slot3(arg): print('slot3:', arg) # Slots are automatically disconnected from signals # when using weak references: del slot2 # Or you can disconnect slots manually: sig_test.disconnect(slot3) # Emitting signals (you can send positional and keyword # arguments to connected slots): sig_test.emit('Hello world!')
Написание ботов не такая простая задача, как кажется. Необходимо учесть сценарии использования, пройти через дебри настроек и отладки, наладить мониторинг.
Мы консультируем по написанию ботов - обращайтесь https://t.me/axsapronov. Подскажем как разработать бота наиболее быстро