Coding: архитектура, программирование и разработка, подходы, best practices, devops, containers (k8s, docker, nomad, mesos), releases, waterfall/agile, scrum, sprints, CI/CD, Serverless computing, Microservice Architecture; ITIL/IT management; shift left ; KISS/SSOT; балансировка/шардирование; документирование

Программирование Best Practices

  • Почему все не стоит писать на С: Потому что в абсолютном большинстве веб приложений бутылочным горлышком является база данных, а не код приложения. Нет смысла тратить в разы больше ресурсов для улучшения производительности на 5%.

  • Почему исполняемый файл имеет зачастую большой объем: Например, если скомпилировать hello world на go, то он будет весить 2-3 мегабайта, потому что в бинарнике будет весь рантайм (сборщик мусора и всякие библиотеки для работы с IO операционной системы).



Читать дальше

Статистика и математика в IT

Сюда переношу все, что связано со статистикой и нужно было на практике – в тестировании, разработке и в других инженерных задачах.

Арифметической прогрессией (арифметической последовательностью) – последовательность с фиксированным инкрементом. Для меня

Арифметической прогрессией (арифметической последовательностью) - называется последовательность чисел a1,a2,...,an,


Читать дальше

Coding: Python

  • Python.org – основной сайт. Тут можно скачать актуальный python на windows/linux/mac os, посмотреть документацию
  • Гвидо ван Россум – творец языка. По сути аналог Линус Торвальдса для Linux.
  • Python – the second best language for everything. И это действительно так, включая новые-модные devops, AI, BigData, autotests.


Читать дальше

Coding/Network: Автоматизация (общее), программирование для сетевых инженеров, сетевая автоматизация (devnet, netdevops, netops); ZTP

  • Про системы конфигурации отдельная статья – CMS
  • Про NMS отдельная статья – NMS
  • (devnet, CMS annet) Нужно общаться с пользователям очень плотно если вы автоматизируете из работу – собирать требования/фидбеки, реагировать
  • Опрос на habr.
Как Вы управляете конфигурацией?
33.61% Ручное редактирование конфигурационных файлов - 40
31.93% GitOps - 38
20.17% Web UI - 24
14.29% другое - 17
Проголосовали 119 пользователей.


Читать дальше

Curl/wget разное

https://httpie.org/ – а еще есть такая “модная” альтернатива curl/wget

 

CURL

(curl/wget, xargs) многопроцессный curl

seq 1 10000 | xargs -n 1 -P 10 ./curl.sh &>test_log.10k.10p.log

cat curl.sh
>&2 echo "Transaction ID $1 started"
curl "https://srv.test:443/1024b.txt" -v -o 1024b.$1.txt
md5=$(md5sum 1024b.$1.txt)


Читать дальше

Linux xargs: запуск утилит на список, простая многопоточность в bash

xargs позволяет легко запускать утилиты на списки аргументов, даже если утилиты не поддерживают работу со списками. Реализуется простейшим образом – xargs каждый раз заново вызывает утилиту при запуске на список. Например, можно создать на основе списка множество директорий с помощью mkdir.

Читать дальше

Linux: bash спец. символы, man, переменные (> >> $ & # ~/$HOME $USER \ | /n \t ^M $? * ; ()), redirect stdout/stderr, ALIAS, bashrc, profile; программирование в bash (полезные скрипты, получение опций в скриптах, функции, условия, циклы, case, массивы)

~ echo $SHELL
/bin/bash

bash-3.2$ echo $SHELL # MACOS
/bin/zsh
  • https://www.gnu.org/software/bash/manual/ – manual по bash
  • wait <pid> – если процесс запущен в background, то wait позволяет подождать завершение execution процесса, пример использования
  • Universal CheatSheet – cheat.sh


Читать дальше

Network: ntttcp

  • (iperf/ntttcp) Microsoft не рукомендует использование iperf3 на Windows в пользу использования ntttcp (в первую очередь)/ctstraffic – iperf3 оффициально на винде не поддерживается (в отличии от второй версии), он обычно использует прослойку в виде cygwin и нестандартные вызовы сетевого стека – первое может накладывать задержку, второе не эмулирует реальные приложения.


Читать дальше

Системное программирование (C, C++, RUST)

  • Для отладки кода C, в том числе даже таких крупных проектов (напр. пропусков атак в них) как snort/suricata можно и нужно использовать отладчик GDB.
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, Assembly, C, C++, D, Fortran, Haskell, Go, Objective-C, OpenCL C, Modula-2, Pascal, Rust and partially others.


Читать дальше

Заметки по JMeter

Заметки

  • JMeter легко масштабируется с использованием remote_hosts (distributed mode) в одной подсети (см. подробнее ниже).
  • На практике можно запустить очень много JMeter нагрузчиков – знаю о инсталяциях с 10 ТЫС.


Читать дальше