BufWriter<Master<'_>> – Telegram
BufWriter<Master<'_>>
105 subscribers
451 photos
28 videos
34 files
1.7K links
https://www.patreon.com/alxe_master

Видео/статьи. Конспект и мои вольные комментарии по инженерии. тут только то, что считаю полезным для себя или других =)

#os, #cloud, #rust, #golang, #python, #javaScript, #cpp, etc
Download Telegram
== От RS232 до USB
https://youtu.be/46mumUSiIXA
- RS232 четкие значения напряжения для нуля и единицы. до 15метров
- RS422 дифференциальная пара, имеет значение только разница потенциалов. до 5км.
- USB-- до 127 устройств . полудуплекс
- USB 2.0 увеличена скорсть
- USB 3.0 Полный дуплекс!
- USB-C более продуманная версия и более технологичная чем 3.0

== RS232. Теория
https://youtu.be/BTDYAvUEFV8
Forwarded from Tech Talk
В США рассекретили документ от ноября 2020 года о том, какой доступ к каким мессенджерам имеет ФБР. iMessage и Whatsapp выдают больше всего, причем iMessage выдает расшифрованные бэкапы сообщений из iCloud (если они там есть), зато Whatsapp делится информацией о новых действиях в нужных аккаунтах почти в реальном времени.

▪️Signal: содержания сообщений не предоставляет, предоставляет дату регистрации аккаунта и когда пользователь в последний раз соединялся.
▪️Telegram: содержания сообщений не предоставляет, информацию по решению суда не выдает. В документе есть ссылка на политику Telegram, что он может выдать IP-адрес и номер телефона по расследованиям подтвержденных случаев терроризма.
▪️Viber: содержания сообщений не предоставляет, предоставляет номер телефона и IP-адрес на момент регистрации, по запросу предоставляет метаданные (какой номер телефона на какой когда писал и звонил).
▪️iMessage: содержание сообщений предоставляет "ограничено" (что это значит, в документе не объясняют). Предоставляет основную информацию о пользователе. По ордеру на обыск выдает бэкапы iCloud. Если пользователь бэкапит iMessage в iCloud, то выдает и этот бэкап сообщений iMessage (они в облаке зашифрованы, но у Apple есть ключи). При этом Apple, в отличие от Whatsapp, не предоставляет pen register - это когда ФБР почти в реальном времени получает новую информацию о действиях пользователя в аккаунте.
▪️Whatsapp: содержание сообщений можно получить, если у пользователя iPhone и архив Whatsapp бэкапится в iCloud (то есть выдает фактически Apple). Предоставляет основную информацию о пользователе. По решению суда представляет список заблокированных аккаунте пользователей. По ордеру на обыск представляет адресную книгу. При этом предоставляет pen register (фактически, такой вариант прослушки на уровне метаданных) - сообщает о новых действиях в нужном аккаунте с задержкой в 15 минут, то есть кто кому когда писал и звонил.

Еще в таблице есть информация про Line, Threema, Wechat и Wickr, но это уже сами почитайте) Интересно, что у всех мессенджеров вроде почти одинаковое шифрование (кроме Telegram, дада), но метаданные все выдают по-разному.

https://propertyofthepeople.org/document-detail/?doc-id=21114562
BufWriter<Master<'_>>
== Whonix: руководство для начинающих https://habr.com/ru/company/alexhost/blog/532980/
== КАК РАБОТАЕТ ПАМЯТЬ КОМПЬЮТЕРА
https://youtu.be/Wh22_O8jXVQ

- байтовая адресация
- словестная адресация (специализированные устройства, не для общих масс)

размер регистра определяет максимальный адрес в ОЗУ

отрицательное число: -5
1) 5
= 0101
2) добавляем бит знака
= 1101
3) инвертируем все кроме знакового бита
= 1010
4) добавляем единицу
-5 = 1011
5) оставшиеся биты будут заполнены битами знака
= 11111011 (для слова в 1 байт)

== КАК РАБОТАЮТ СИСТЕМЫ СЧИСЛЕНИЯ
https://youtu.be/kG_ipMygRUc


хороший канал, кстати говоря https://www.youtube.com/channel/UCIn6hza5Ai119FJnLMJzECQ
== КАК РАБОТАЕТ КЭШ ПРОЦЕССОРА
https://youtu.be/7n_8cOBpQrg

полный обьем кэша вычисляется как сумма
1) ПОЛЕЗНЫЙ размер кэша
2) СЛУЖЕБНЫЕ данные
полезный размер = 128 байт
32 х 4 + 4 х 4 = 144 байта

кэш прямого отображения = каждая строка ОЗУ соответствует определенной строке в КЭШ памяти. поделив сегменты ОЗУ на количество строк в кэше. очень быстро становится понятно соотвествие кэша и ОЗУ
+ быстрый поиск
= тег (старшая часть адреса) + индекс строки + смещение

наборно ассоциативный кэш
бьется на сегменты прямого кэша
медленней чем больше сигментов

полностью ассоциативный кэш
- низкая производительный

кэшконтроллер должен сам предсказывать и загружать автоматически из ОЗУ в кэш

LRU - last recently used (заменяются те данные которые дольше всех лежат без дела)
MFU - most frequently used (заменяются те что только что использовались)
LFU - least frequently used (заменяются данные которые используются реже всех)

несколько маленьких кэшей лучше одного большого

L1 и L2 пренадлежит каждому ядру ЦПУ поотдельности.

L3 делится между всеми ядрами

архитектуры L2:
- inclusive (дублирование с Л1) озу -> L2 -> L1 (копирует)
- exclusive (не дублируется) озу -> L2 -> L1 -> L2 (возвращает то что переполнилось)

если L3 inclusive - то можно не искать. если Exclusive - то искать надо

inclusive хранит МЕНЬШЕ данных. но быстрей

exclusive хранит БОЛЬШЕ данных. но медленней

!!! большие типы данных читаются быстрей всех
НО больше кэшмиссов (так как забьются кэши бестрей)

И лучше иметь массив который полностью помещается в кэш.

выбор типа всегда трейдофф и баланс

РАСШИРЕНИЕ ЧИСЛЕННОГО ТИПА
- явное или неявное (компилятором) приведение типов до машинного слова

Когерентность кэша
- совпадает ли копия в кэше с копией в ОЗУ

механизмы когерентности описываются правилами и протоколами в каждом из ЦПУ
S - shared
I - invalid
M - modified
= MSI протокол
E - exclusive
= MESI протокол
O - owned
= MOESI протокол
F - Forward (вместо Owned)
= MESIF
== КАК РАБОТАЕТ ПРОЦЕССОР
https://youtu.be/k9wK2FThEsk

разрядность = размер машинного слова = количество памяти которым опирируется процессор за раз

регистры - маленькие быстрые ячейки памяти прямо в процессоре

максимальный размер регистра = разрядность

регистры
- специального назначение
- общего назначения (переменные, параметры, временное хранилище)

AH=8 AL=8
AX=16
EAX=32
RAX=64

сегментные регистры SS CS DS ...

регистры для работы со стеком BP, CP, ...

флаговые регистры FLAGS...

указатель команд (instruction pointer) IP

регистры могут ПЕРЕПОЛНЯТЬСЯ !!!

БИОС
- найти первое ПЗУ
- найти нулевой сектор
- загрузить команду в ЦПУ
- передать управление команде

работа с трансляцией адресов
1) режим реальных адресов = 16бит
2) защищенный = 32бит
3) 64 разрядный

ИЛИ
1) режим реальных адресов + защищенный = legacy mode = 32бит
2) 64 разрядный + режим совместимости = long mode = 64бит

уровни привелегий
0 - привелегированный - ОС
1
2
3 - юзерспейс - прикладные программы

вся ОЗУ поделена на сегменты!

логический адрес = адрес начала сегмента + смещение в сегменте

в режиме реальных адресов = 2^20 = 1мб
физический адрес = адрес начала << 4 + смещение

в защищенном режиме
происходит виртуализация адреса !

логический адрес = селектор дескриптора + смещение в сегменте

селектор дескриптора (16бит) = уровень привелегий + таблица + индекс строки в таблице

таблица это структура = индекс + начальний адрес сегмента + уровень привелегий + размер сегмента

виртуальная память = страничная организация памяти.
- Каталог таблиц страниц,
- таблица страниц
- страница

64ьитный режим
- ОТКЛЮЧЕНА СИГМЕНТАЦИЯ
- есть ограничение на адресацию физической 2^52 и виртуальной памяти 2^48. изза ограничений ОС и процессоров

программа получает логический адрес
и в зависимости от режима памяти транслируется сразу в физический адрес или в виртуальный а затем в физический

получив сигнал процессор генерирует прерывание и обрабатывается обработчиком прерывания

типы прерывания
- исключение
- программный
- аппаратный

не все ОС разрешают вызывать программам прерывания напрямую
== КАК РАБОТАЕТ СТЕК
https://youtu.be/MXoMuymbfo8
SP (stack pointer) указатель вершины
BP (base pointer) адрес начала фрейма

push - поместить на вершину
pop - извлечь из вершины

push 3
pop AX - кладет на AX значение из вершины. смещает вершину ниже

jmp - просто прыгает внужную строку кода
call - перед прыжком заносит в регистр адресс возврата
ret - возвращается обратно по адресу который положил call

фрейм - место в стеке

вызов функции
- пролог (сохранение данных ДО старта функции, создание нового стэка)
- call proc
- push bp
- mov bp, sp
- код
- push 4
- push 5.5
- ....
- эпилог (возврат обратно в родительский стэк)
- mov sp, bp
- pop bp
- ret

Передача параметров функции (stdcall)
- передаются в стэк параметры в обратном порядке
- push 3 # arg[2]
- push 2 # arg[1]
- push 1 # arg[0]
- call fn
- push bp
- mov bp, sp
- mov ax, [bp + 4]
- mov bx, [bp + 6]
- mov cx, [bp + 8]
- передать можно через
- стэк
- регистры
- глобальные переменные (нельзя вызывать себя рекурсивно)

область локальных переменных - стэковый кадр (фрейм)
== КАК РАБОТАЮТ КОДИРОВКИ
https://youtu.be/4MFcmreAUhs

строки это основной вид информации

символ представляется в машине как код символа

ASCII = 7 бит

появились кодовые страницы

ANSI (American national standards institute)

- windows-125х (где х это код страны)

UNICODE
- каждый символ представляется МИНИМУМ 2 байта
- первые 128 символов полностью совпадает с ASCII
проблемы:
- расточительно по памяти т.к. минимум 2байта
- be/le - хз как расшифровывать

кодировки (правила хранения)

>> UCS-2
BOM-байты (byte order mark) - вначале каждой строки были символы указывающие как хранится BE или LE

СТРОКА = БОМ байты + символы по 2 байта
——> еще больше стало!

>> UTF-8
коды символов не фиксированные от 1 до 4х байт
- первые 128 символов = ASCII
- в начале символа стоит маска говорящая сколько байт надо прочитать
—> нефиксированное количество времени на обработку. медленней
== так как один из самых коротких - используется при передаче по сети

>> UTF-16
- вернули BOM
- сурогатная пара для обозначения 4байтных символов
+ быстрей работает

>> UTF-32
- каждый символ это 4 байта
- BOM
== еще быстрей
== еще понятней длина строки

СИ
конец строки = 00 (нуль терминатор)

в других языках используются Неизменяемые строки и при изменении используется COW
== КАК РАБОТАЮТ ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ
https://youtu.be/U0U8Ddx4TgE

IEEE-754 описывает стандарт FP

FPU - floating point unit

7.25 = 111.01

(-1)^S * 1.M * 10 ^ E
s - знак числа
M - мантисса (дробная часть числа)
E - экспонента (степень основания, смещение)

7.25
0) целую часть представляем 2 системе
= 111
1) дробную часть умножаем на два пока не получим 0. полученное значение записываем как значение дробной в 2 системе
= 01
2) целую часть смещаем до тех пор пока не останется
смещается до того места пока не останется одна единица
= 111.01 -> 1.1101
3) количество смещений и есть экспонента
= 1.1101 * 10^10
4а) знак записывается первым битом 0 или 1 (отрицательное)
4б) дробное записывается в свой сегмент, заполняя нулями справа все что отсутсвует
4в) степень записывается в свой сегмент ХИТРО! добавляется 127 (максимальное число размерности минус 1 для степени)
== 0 10000001 11010000000000000000000

спец значения в степени
- +бесконечность = если знак 0 и степень все 1 а в дробной части 0
- -бесконечность = если знак 1 и степень все 1 а в дробной части 0
- NaN = знак не имеет значения. дробная часть не 0. степень все 1

стандарты
- одинарная точность (32бит)
- двойная точность (64бит)
- четырехкратной точности (128бит)
- расширенная двойная точность (80бит)
Ускорение установки HTTPS-соединений

Саймон Харн рассказал о том, как HTTPS-сертификаты влияют на производительность сайта — "The Performance Cost of EV Certificates".

Есть три основных типа HTPS-сертификатов: Domain Validation (DV), Organisation Validation (OV), Extended Validation (EV). DV-сертификаты выдаются на основе факта принадлежности домена, как в Let's Encrypt. OV- и EV-сертификаты выдаются организациям за оплату.

EV-сертификат предоставляет большее количество информации для пользователя, но по-большому счёту он не сильно отличается от OV. Вы могли видеть, что сайт использует EV-сертификат, когда в адресной строке рядом с иконкой замка зелёным текстом отображался владелец сертификата. С версии Chrome 77 такие сертификаты отображаются обычным значком замка без зелёного текста.

OV-сертификаты валидируются на стороне веб-сервера отправкой запроса на сервер организации, выдавшей сертификат. EV-сертификаты не могут валидироваться на стороне веб-сервера, поэтому их валидация происходит на клиенте, замедляя установку HTTPS-соединения. Задержка наиболее заметна в странах бывшего СССР, в Восточной Австралии, Канаде и большинстве стран Африки. Некоторые организации сталкивались с минутной задержкой для пользователей в Китае. Эта проблема решается переходом на OV-сертификат.

#http #performance #security

https://simonhearne.com/2020/drop-ev-certs/
Algorithmic Trading with Interactive Brokers (Python and C++) (2019)
Автор: Matthew Scarpino
Количество страниц: 418

В этой книге описывается процесс разработки приложений на основе API IB Trader Workstation (TWS). Начальные главы знакомят с фундаментальными классами и функциями, а последующие главы показывают, как их можно использовать для реализации полномасштабных торговых систем. При наличии алгоритмической системы трейдерам не нужно часами смотреть на графики; просто запустите торговое приложение и позвольте TWS API выполнять свою работу.

Скачать книгу