long story short шпаргалка по лицензиями, что можно, что нельзя, что должно соблюдаться
https://tldrlegal.com/licenses/browse
https://tldrlegal.com/licenses/browse
и еще один long story short - шпаргалка по openssl, потому как сколько можно уже жить на http и пугаться от слов chain of trust
https://cheatography.com/albertx/cheat-sheets/openssl/
https://cheatography.com/albertx/cheat-sheets/openssl/
Cheatography
OpenSSL Cheat Sheet
A quick reference for using OpenSSL tool / library under Linux base system.
Всем привет, я вам кек принес, но это вам в счет Нового Года.
Вот баг https://bugs.python.org/issue3971, и ему 13 лет уже. Создали его в 2008, 10 лет молчали, потом так же молча закрыли. Welcome to the world of opensource community support, baby!
В этой истории прекрасно вообще всё. Единственный вопрос, который не дает мне покоя - это такой прикол или реально кто-то столнулся с описанной в первом комменте ситуацией?
Вот баг https://bugs.python.org/issue3971, и ему 13 лет уже. Создали его в 2008, 10 лет молчали, потом так же молча закрыли. Welcome to the world of opensource community support, baby!
В этой истории прекрасно вообще всё. Единственный вопрос, который не дает мне покоя - это такой прикол или реально кто-то столнулся с описанной в первом комменте ситуацией?
Спасибо вам, что читали мои заметки в этом году. Их было не так много, как хотелось бы, но обещаю в 2022 эту оплошность устранить.
Занимательная история сегодня произошла в мире IT журналистики. Я вообще не планировал про это писать, но всякие разные околоайтишные журналисты, блогеры и прочие мамкины копипастеры начали год с кликбейтных заголовков, что Microsoft опять обосрались, а число 220101001 is way to long, и в моей ленте про Y2K22 не написала разве что только сутулая собака.
Синопсис такой: весь мир сегодня узнал что Microsoft для версионирования внутри своих компонентов использует формат int32. Это такое довольно длинное число (2 147 483 647), которого казалось бы должно хватить всем. Проблема в том, что если вы кодируете год двумя символами, то вы рано или поздно придете к Y2K bug, и не важно в каком месте вы эти две цифры положите.
Поэтому, второй раз в истории человечества, всего лишь 22 года спустя после наступления на эти грабли первый раз, люди с удовольствием наступили на них еще раз, и 1 января 2022 года у всех кто исправно обновляет свой MS Exchange перестала ходить почта.
Котятки, пожалуйста, будьте умнее этой безмозглой массы хайпожоров, которая за инфоповодом даже не может прочитать что сами же скопипастили!
2147483647 - это предел в int32
220101001 - это число из заголовков (Reddit, ещё, etc ...)
Вообще первоисточник воть, и здесь автор банально объебался на один ноль в заголовке, а дальше все как один пошли тиражировать число, которое на порядок меньше int32, выдавая его превышение предела максимального значения. Красиво.
Синопсис такой: весь мир сегодня узнал что Microsoft для версионирования внутри своих компонентов использует формат int32. Это такое довольно длинное число (2 147 483 647), которого казалось бы должно хватить всем. Проблема в том, что если вы кодируете год двумя символами, то вы рано или поздно придете к Y2K bug, и не важно в каком месте вы эти две цифры положите.
Поэтому, второй раз в истории человечества, всего лишь 22 года спустя после наступления на эти грабли первый раз, люди с удовольствием наступили на них еще раз, и 1 января 2022 года у всех кто исправно обновляет свой MS Exchange перестала ходить почта.
Котятки, пожалуйста, будьте умнее этой безмозглой массы хайпожоров, которая за инфоповодом даже не может прочитать что сами же скопипастили!
2147483647 - это предел в int32
220101001 - это число из заголовков (Reddit, ещё, etc ...)
Вообще первоисточник воть, и здесь автор банально объебался на один ноль в заголовке, а дальше все как один пошли тиражировать число, которое на порядок меньше int32, выдавая его превышение предела максимального значения. Красиво.
Unpacking_in_Python_Beyond_Parallel_Assignment.pdf
183.7 KB
Отличный исчерпывающий гайд по запаковке-распаковке в python. Если вы начинаете писать на python, или кто-то когда-то вам сказал что
Этот текст настолько крутой, что я не удержался и сделал бекап в PDF, просто на всякий случай.
*args
и **kwargs
это только для передачи аргументов в функции, то этот текст должен раскрыть вам глаза на всю силу синтаксического сахара *
и **
в python.Этот текст настолько крутой, что я не удержался и сделал бекап в PDF, просто на всякий случай.
Все админы делятся на два типа: те кто делает бекапы, и те, кто ещё не делает бекапы.
В связи с этим у нас сегодня в меню книга "Сохранение данных: теория и практика", Алексей Бережной. Прямиком из 2016. Пять лет выдержки, за которые в этой области не было кардинальных изменений.
Кому эта книга может быть полезна?
- новичкам, которые только начинают свой путь в инфраструктуру.
- опытному инженеру, для систематизации собственных знаний, и сравнения опыта.
https://dmkpress.com/catalog/computer/securuty/978-5-94074-185-3/
В связи с этим у нас сегодня в меню книга "Сохранение данных: теория и практика", Алексей Бережной. Прямиком из 2016. Пять лет выдержки, за которые в этой области не было кардинальных изменений.
Кому эта книга может быть полезна?
- новичкам, которые только начинают свой путь в инфраструктуру.
- опытному инженеру, для систематизации собственных знаний, и сравнения опыта.
https://dmkpress.com/catalog/computer/securuty/978-5-94074-185-3/
Dmkpress
Сохранение данных: теория и практика
Купить книгу «Сохранение данных: теория и практика», автора Бережной А. в издательстве «ДМК Пресс». Выгодные цены в Москве, доставка. Заказать книги и учебники на официальном сайте издательства.
Короче говоря, вот ресурс подробно расписывающий все нюансы индексирования и тюнинга баз данных. На языке понятном разработчику (а значит и администратору).
А еще автор (Markus Winand) написал довольно толковую книгу SQL Performance Explained, и сайт Use the Index Luke это как бы бесплатная веб-версия этой DBA Bible.
А еще автор (Markus Winand) написал довольно толковую книгу SQL Performance Explained, и сайт Use the Index Luke это как бы бесплатная веб-версия этой DBA Bible.
Use-The-Index-Luke
SQL Indexing and Tuning e-Book for developers: Use The Index, Luke covers Oracle, MySQL, PostgreSQL, SQL Server, ...
SQL indexing and tuning tutorial for developers. No unnecessary database details—just what developers need to know. Covers all major SQL databases.
This media is not supported in your browser
VIEW IN TELEGRAM
dive: инструмент, который вам визуально покажет изменения, происходящие на каждом слое в имадже. Отлично подходит чтобы найти мертвую проститутку, которую запаковали в контейнер 7 слоёв тому назад.
Буду честен, я конечно люблю Python, но порой забываю нюансы про stack и heap, и отсутствие переменных в Python как таковых. Все потому что чаще надо документацию перечитывать, и помнить какие типы данных у нас изменяемые, а какие нет.
Именно поэтому "одинаковые" листы это разные ячейки в heap, а строки - те же самые.
Именно поэтому "одинаковые" листы это разные ячейки в heap, а строки - те же самые.
This is an example of using dd to asynchronously write 30% of memory to disk which would happen to be affected by the change in vm.dirty_ratio:
Note that the parameter affects the time it takes for the command to complete and the apparent write speed of the device. With dirty_ratio=40, more of the data is cached and written to disk in the background by the kernel. It is very important to note that the speed of I/O is identical in both cases. To demonstrate, this is the result when dd synchronizes the data before exiting:
Note that dirty_ratio had almost no impact here and is within the natural variability of a command. Hence, dirty_ratio does not directly impact I/O performance but it may affect the apparent performance of a workload that writes data asynchronously without synchronizing
root # MEMTOTAL_MBYTES=`free -m | grep Mem: | awk '{print $2}'`
root # sysctl vm.dirty_ratio=40
root # dd if=/dev/zero of=zerofile ibs=1048576 count=$((MEMTOTAL_MBYTES*30/100))
2507145216 bytes (2.5 GB) copied, 8.00153 s, 313 MB/s
root # sysctl vm.dirty_ratio=20
dd if=/dev/zero of=zerofile ibs=1048576 count=$((MEMTOTAL_MBYTES*30/100))
2507145216 bytes (2.5 GB) copied, 10.1593 s, 247 MB/s
Note that the parameter affects the time it takes for the command to complete and the apparent write speed of the device. With dirty_ratio=40, more of the data is cached and written to disk in the background by the kernel. It is very important to note that the speed of I/O is identical in both cases. To demonstrate, this is the result when dd synchronizes the data before exiting:
root # sysctl vm.dirty_ratio=40
root # dd if=/dev/zero of=zerofile ibs=1048576 count=$((MEMTOTAL_MBYTES*30/100)) conv=fdatasync
2507145216 bytes (2.5 GB) copied, 21.0663 s, 119 MB/s
root # sysctl vm.dirty_ratio=20
root # dd if=/dev/zero of=zerofile ibs=1048576 count=$((MEMTOTAL_MBYTES*30/100)) conv=fdatasync
2507145216 bytes (2.5 GB) copied, 21.7286 s, 115 MB/s
Note that dirty_ratio had almost no impact here and is within the natural variability of a command. Hence, dirty_ratio does not directly impact I/O performance but it may affect the apparent performance of a workload that writes data asynchronously without synchronizing
https://baturin.org/docs/iproute2/
ультимативный гайд по iproute2 с примерами и пояснениями, обязательный к прочтению для всех, и особеннодолбоебам староверам, кто все еще использует ifconfig
ультимативный гайд по iproute2 с примерами и пояснениями, обязательный к прочтению для всех, и особенно
#в_интернете_кто_то_не_прав
Сегодня я узнал что последняя заметка про iproute2 вызывает зуд в области ануса у FreeBSD-евангелистов.
Видимо пришла моя очередь пояснять за цветовую дифференциацию штанов.
Начну с того, что я понятия не имею как у вас там в мире FreeBSD живется, я там никогда не был, и не сильно хочется врываться туда с двух ног. Я последние 9 лет занимаюсь тем что админю линуксы и приложения поверх линуксов, а мир фря для меня это прямая визуализация мильтивселенной Marvell - примерно всё тоже самое что у меня дома, только вот во всяких мелочах все вообще иначе. Короче говоря, я без понятия как там живет в 2022 году фря, я с ней не работаю, и я не пишу в канал ничего о том как что-то работает во FreeBSD.
А теперь давайте поговорим за ifconfig vs iproute2 в мире Linux, и начнем мы с исторической справки постом ниже.
Сегодня я узнал что последняя заметка про iproute2 вызывает зуд в области ануса у FreeBSD-евангелистов.
Видимо пришла моя очередь пояснять за цветовую дифференциацию штанов.
Начну с того, что я понятия не имею как у вас там в мире FreeBSD живется, я там никогда не был, и не сильно хочется врываться туда с двух ног. Я последние 9 лет занимаюсь тем что админю линуксы и приложения поверх линуксов, а мир фря для меня это прямая визуализация мильтивселенной Marvell - примерно всё тоже самое что у меня дома, только вот во всяких мелочах все вообще иначе. Короче говоря, я без понятия как там живет в 2022 году фря, я с ней не работаю, и я не пишу в канал ничего о том как что-то работает во FreeBSD.
А теперь давайте поговорим за ifconfig vs iproute2 в мире Linux, и начнем мы с исторической справки постом ниже.
Изначально, сетевая подсистема в мире Linux развивалась достаточно хаотично и откровенно бессистемно, в результате чего, для работы с разными частями одной и той же системы было написано с нуля, или адаптированно из других nix-систем, множество разношерстных утилит, каждая из которых имела свой определенный синтаксис.
Для работы с сетевыми бриджами предлагается использовать brctl, с маршрутами - route, с сетевыми соединениями и статистикой - netstat, с таблицами arp нужно использовать команду arp, а для манипулирования туннелями - iptunnel.
Для работы с сетевыми бриджами предлагается использовать brctl, с маршрутами - route, с сетевыми соединениями и статистикой - netstat, с таблицами arp нужно использовать команду arp, а для манипулирования туннелями - iptunnel.
Из-за того, что утилиты для работы с сетевым стэком в Linux (ifconfig, arp, netstat, route, brctl, etc ...) были написаны во времена, когда динозавры ходили по планете, и со времен мезозоя все привыкли к определенного вида форматированию вывода этих команд, а разработка ядра, вот так сюрприз, не стояла на месте, сообщество столкнулось с проблемой: старые утилиты не могут без поломки совместимости внешних скриптов корректно отдавать вывод по новому функционалу, который был добавлен в ядро.
Как решение проблемы был написан модный стильный молодежный iproute2, который замыкает на себя работу с сетевой подсистемой Linux, и, как следствие, предоставляет единый интерфейс работы. Остальные команды были признаны устаревшими. Сделано это было 10+ лет назад, однако, люди до сих пор используют связку ifconfig + route + arp + netstat + brctl как голландский штурвал управления сетевой подсистемой.
Простой пример.
В старых версиях ядра, для решения простой задачи добавления второго ip адреса на существующий интерфейс (eg eth0) приходилось создавать новый, зависимый от основного, виртуальный интерфейс (eth0:0) и вешать на него нужный адрес. В выводе ifconfig интерфейсы eth0 и eth0:0 шли друг за другом, и этот бред был сделан просто потому что ifconfig не умеет отрисовывать два адреса на одном интерфейсе. Ядро уже лет 10 позволяет назначить больше одного адреса на интерфейс, а ifconfig все эти 10 лет не научился с этим работать. Потому что обратная совместимость сломается.
Я уверен что были и еще причины, но эта теория заговора мне нравится больше всего. Да и не важно почему так было сделано, важно сейчас понять одну простую истину - используя ifconfig вы не только обрекаете себя на использования целого вороха разных утилит для работы с сетевой подсистемой, но и сами же себе, добровольно, ограничиваете доступ к функционалу, который уже 10 лет предоставляет ядро, и который активно используют приложения, а пример с виртуальными адресами это просто капля в море упущенных возможностей.
Пользуйтесь пожалуйста актуальными инструментами во время работы. Вы же не хотите чтобы дантист вам поставил деревянную зубную пломбу?
Как решение проблемы был написан модный стильный молодежный iproute2, который замыкает на себя работу с сетевой подсистемой Linux, и, как следствие, предоставляет единый интерфейс работы. Остальные команды были признаны устаревшими. Сделано это было 10+ лет назад, однако, люди до сих пор используют связку ifconfig + route + arp + netstat + brctl как голландский штурвал управления сетевой подсистемой.
Простой пример.
В старых версиях ядра, для решения простой задачи добавления второго ip адреса на существующий интерфейс (eg eth0) приходилось создавать новый, зависимый от основного, виртуальный интерфейс (eth0:0) и вешать на него нужный адрес. В выводе ifconfig интерфейсы eth0 и eth0:0 шли друг за другом, и этот бред был сделан просто потому что ifconfig не умеет отрисовывать два адреса на одном интерфейсе. Ядро уже лет 10 позволяет назначить больше одного адреса на интерфейс, а ifconfig все эти 10 лет не научился с этим работать. Потому что обратная совместимость сломается.
Я уверен что были и еще причины, но эта теория заговора мне нравится больше всего. Да и не важно почему так было сделано, важно сейчас понять одну простую истину - используя ifconfig вы не только обрекаете себя на использования целого вороха разных утилит для работы с сетевой подсистемой, но и сами же себе, добровольно, ограничиваете доступ к функционалу, который уже 10 лет предоставляет ядро, и который активно используют приложения, а пример с виртуальными адресами это просто капля в море упущенных возможностей.
Пользуйтесь пожалуйста актуальными инструментами во время работы. Вы же не хотите чтобы дантист вам поставил деревянную зубную пломбу?
Server-Side Template Injection - отличный текст из 2015, актуальный и сейчас, о том как из-за незакрытого у вас SSTI можно отхватить от злоумышленников в совершенно в неожиданном месте - шаблонах генерации ваших html.
А вот поросшая мхом презентация из 2016 от RedHat на тему Q35 и сравнения с I440FX
Ну тот самый Q35 который быстрее выше ловче сильнее, а если по-простому, то если у вас есть задача виртуализировать какой-то толстый монолитный сервер, то скорее всего это лучше сделать c machine type Q35, а не с дефолтным I440FX
В openstack это можно сделать так
Ну тот самый Q35 который быстрее выше ловче сильнее, а если по-простому, то если у вас есть задача виртуализировать какой-то толстый монолитный сервер, то скорее всего это лучше сделать c machine type Q35, а не с дефолтным I440FX
В openstack это можно сделать так
Вот вам подарочки на последюю пятницу июля - набор скриптов для анализа производительности, которые написаны с минимальными зависимостями, тк авторы понимали, что в серьезном prod/prod-like окружении нельзя просто взять и сделать pip install package_name
работает даже на таком древнем мамонте, как ядро 2.6 и выше
https://0x.tools/#included-tools
работает даже на таком древнем мамонте, как ядро 2.6 и выше
https://0x.tools/#included-tools
0x.tools
Always-on Profiling for Production Systems
Always on Profiling for Production Systems