Основы VCS на примере Git, patch/diff

  • https://git-scm.com/ – тут крутые entry видео, документация и прочее
  • с помощью ChatGPT Deep Research можно изучить любой GitHub проект

 

patch/diff
  • Утилита patch позволяет создать код на основе diff одной версии кода от другой
  • До сих пор на kernel.org есть возможность обновить одну версию ядра на другую используя diff между последовательными версиями через утилиту patch, это позволяет не выкачивать весь код, а скачать diff и применить его через patch
  • В целом patch/diff старый допотопный способ vcs (один разраб отправлял diff другому и тот через patch мог получить версию кода разраба), сейчас при разработке ядра linux не используется в пользу git, но при этом патчи до сих пор используются, например
    • для поддержки драйвера RAID в каком то ядре поставщик может предоставлять софт в виде патча для определенной версии ядра
    • для задач безопасности, например, grsecurity, выпускающий ранее бесплатно (теперь платно) патчи безопасности для ядра и доп.


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

Network: HTML, HTTP, browsers разные хинты

HTTP
http QUERY

<стартовая строка>: method, URI, http version
<заголовки>
<тело запроса>
  • В заголовке в поле Host передается адрес сервера (fqdn/ip), что позволяет напр. на web сервере с множеством сайтом определить какой сайт отдавать
  • Клиент и сервер могут использовать разные версии протокола НТТР, при этом все будет работать корректно.


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

Curl/wget разное

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

 

CURL

  • При генерации такого предупреждения CURL может сбрасывать соединение и по факту не докачивать файл, нужно всегда в случае файлов скачивать их с указанием –output и пути до файла (можно /dev/null)
Warning: Binary output can mess up your terminal.


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

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

  • (ping, nmap, xargs, bash) Ping целой подсети /24 в 253 потока.
for ip in 10.3.1.{1..254}; do ping -c5 ${ip} & done

 

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

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

Тестирование приложений: заметки по JMeter, gatling

Заметки

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


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

SecureCRT, Termius, MPutty, (supper)Putty, SolarPutty, mRemoteNG, iTerm, Mobaxterm, Windows Terminal

Альтернативы SecureCRT:

  • Termius – кросс-платформенная альтернатива
  • Windows: Windows Terminal, mRemoteNG, MPutty, SupperPutty, SolarPutty, Mobaxterm (препод Linux особенно хвалил)
  • MacOS: iTerm2 – шикарная альтернатива на Mac

 

 

PUTTY

Король, использую его + закладки сессий самой Windows. Получается довольно удобно. 🙂

По PPK можно легко получить public key – это делает WinSCP с кнопки.

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

Network: ntttcp

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


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

Synstart – синхронизация времени запуска программ и утилит в Linux

synstart решает задачу синхронизации старта запуска программ за счет их предварительной планировки по времени (см. cron). Код простой на python.

В сравнении с at/atd погрешность запуска программ между демонами значительно ниже – вместо секундной погрешности в at/atd при использовании synstart получаем миллисекундную погрешность (возможно добиться вплоть до 10 микросекунд при тюнинге sleep на демонах).

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

Ruby HTTP get/post

Simple get

Простая функция для отправки http get.

def get(request)
request = CGI::escape(request)
uri = URI("http://#{$server}/#{request}")
Net::HTTP.get(uri)
end

Get with header

Пример запроса с header. Обращаю внимание, что в старой версии ruby 1.9.3 обязательно нужно к uri применить метод .request_uri, в новых не обязательно.

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

Ruby: генератор списка выходных на год

Простейший генератор списка выходных на год.

Что можно кастомизировать (жирным в коде):

  • В переменной cur_date указываем дату отчета
  • В счетчике можно подкрутить количество дней с 365 до любого количества
  • Строку вывода можно заменить генерацией INSERT в какую то SQL таблицу (закоменчено)
#bin/generate_vacation_list.rb


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