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
Forwarded from Блог*
#prog #rust #моё

Меня тут один Олег попросил коротко рассказать о афинных типах в Rust. Что ж, рассказываю.

Аффинные системы типов — это системы типов, в которых объявленные значения можно использовать не более одного раза. Как и прочие ти́повые навороты, это позволяет писать более корректные программы путём перекладывания бо́льшего числа проверок на компилятор.

Для демонстрации практической пользы приведу пару примеров из стандартной библиотеки Rust:

1. std::sync::Mutex. Для корректной работы многопоточной программы требуется, чтобы доступ к совместно разделяемым изменяемым данным был должным образом синхронизирован. Один из способов достичь его — это защитить изменяемое значение мьютексом. Простой способ, обладающий, однако, существенным недостатком: очень просто забыть захватить блокировку перед тем, как получить доступ к значению (особенно если мьютекс защищает несколько переменных). Какое решение предлагает Rust?

Посмотрим на то, как создать мьютекс. Единственный способ создать мьютекс — это передать ему защищаемое значение. После этого получить доступ к разделяемому значению можно, только попытавшись захватить блокировку или же разрушив мьютекс, причём последнее можно сделать только в том случае, если поток (в смысле thread) единолично владеет мьютексом. Таким образом, несинхронизированный доступ исключён.

Другая возможная проблема с мьютексом связана с тем, что в большинстве языков программирования значения неявно копируются: нужно прилагать специальные усилия для того, чтобы удостовериться, что каждый из thread-ов получает один и тот же мьютекс, а не свою собственную копию (тут была шутка про Go, но она была настолько толстой, что Telegram не давал загрузить пост). В Rust это получается автоматически: нет методов, позволяющих получить копию мьютекса, поэтому расшарить можно только тот или иной вид указателя на мьютекс.

2. std::fs::File. Сборщик мусора помогает освобождать занятую память, но он не очень помогает с внешними ресурсами, в частности, файлами: закрыть файл обычно нужно сразу после того, как работа с ним окончена, а сборщик мусора никаких гарантий по времени закрытий файла не даёт. В стандартной библиотеке большинства языков программирования (даже с GC) есть отдельная функция, которая закрывает файл. Тем не менее, присутствие этой функции обнажает серьёзный изъян в системе типов: файл невозможно использовать после закрытия (также, как и до открытия, но обычно это не является большой проблемой), но это состояние никак не отслеживается в системе типов. Более того, дважды закрывать файл может быть попросту опасно: например, на Linux файл описывается файловым дескриптором — фактически, просто числом. После закрытия файла это же числовое значение может быть переиспользованно для другого файла, поэтому второе закрытия того же файлового дескриптора может привести к закрытию файла в другой программе!

Как эти проблемы обходятся в Rust? Если вы проверите API File, то... Вы не найдёте там метода close! Когда File выходит из области видимости, для него вызывается деструктор, который и закрывает файл. Т. к. явного метода закрытия файла в публичном API нет, единственный способ форсировать закрытие файла — это дропнуть файл (например, вызовом std::mem::drop). В силу того, что после этого получить доступ к файлу нельзя, возможность двойного закрытия статически запрещается.

Очевидно, аффинные типы не являются серебряной пулей. Каковы же недостатки? Конкретно в случае с File недостаток очевиден: закрытие файла может завершиться ошибкой, но закрытие посредством вызова деструктора не позволяет об этом узнать. Более сильные линейные типы (в которых каждое значение используется ровно один раз) позволили бы решить эту проблему, требуя явно вызывать close и таким образом давать доступ к возможным ошибкам, но это уже тема для другого поста.
Forwarded from Блог*
Системное_программное_обеспечение_файловые_системы_ОС_Unix_zmAwX5u.pdf
795.3 KB
за сегодня обнаружил небольшой пробел того как именно выделяется файловый дескриптор и как ОСь себя ведет и что в этот момент творится в ФС. поэтому колупаю эту сторону. пока вот метода и микростатья. для начала уже закрыло прилично так вопросов

== СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - 1997год

Unix:
- Структура ФС на диске
- Индексный дескриптор файла
- Монтируемость ФС
- Рабочие файлы
- Каталоги
- Специальные файлы (файлы устройств)
- права доступа
- Логическая структура ФС
- Внутрисистемная организация ввода/вывода
- Данные, ассоциированные с ОС и с процессом
- Взаимодействие с устройствами

Windows NT:
- Объектная модель и контроль доступа
- Организация ввода-вывода
- NTFS, принципы, восстанавливаемость


ААААА ВИнда, за что ты такая сложная а ????? переусложнили капец... и слои и клиент-серверы и микроядра и басы...

== Что такое файловый дескриптор простыми словами
https://timeweb.com/ru/community/articles/chto-takoe-faylovyy-deskriptor-prostymi-slovami
Forwarded from Заработок онлайн 💰NOSCAM
Please open Telegram to view this post
VIEW IN TELEGRAM
наконец добрался дослушать

== REST vs gRPC
https://youtu.be/jlzomoLBl6U

== REST vs GRPC (JSON index attachment)
ttps://youtu.be/jILVrU1w_yc
хехех... короч пошел ка я читать кернель как писать... надоели эти ваши сайтики и вебчики

== Rust takes a major step forward as Linux's second official language
https://www.zdnet.com/article/rust-takes-a-major-step-forward-as-linuxs-second-official-language/

== Rust support
https://lkml.org/lkml/2021/12/6/461
Forwarded from CyberYozh
Финалисты конкурса AES.

(Конкурс по выбору нового алгоритма шифрования, для замены DES)
.

AES (англ. Advanced Encryption Standard) — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES. Этот алгоритм хорошо проанализирован и сейчас широко используется. Но многие забывают про достойные альтернативы (Но не все, например, масштабно используются в Truecrypt/Veracrypt/Zulucrypt, и не только).

Twofish.

Симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа до 256 бит. Число раундов 16. Разработан группой специалистов во главе с Брюсом Шнайером. Являлся одним из пяти финалистов второго этапа конкурса AES. Алгоритм разработан на основе алгоритмов Blowfish, SAFER и Square.

Отличительными особенностями алгоритма являются использование предварительно вычисляемых и зависящих от ключа узлов замены и сложная схема развёртки подключений шифрования. Половина n-битного ключа шифрования используется как собственно ключ шифрования, другая — для модификации алгоритма (от неё зависят узлы замены).

Serpent.

Разработан Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном. Некоторые предыдущие разработки авторов тоже носили названия в честь животных, например Tiger, Bear.

Алгоритм являлся одним из финалистов 2-го этапа конкурса AES. Как и другие алгоритмы, участвовавшие в конкурсе AES, Serpent имеет размер блока 128 бит и возможные длины ключа 128, 192 или 256 бит. Алгоритм представляет собой 32-раундовую SP-сеть, работающую с блоком из четырёх 32-битных слов. Serpent был разработан так, что все операции могут быть выполнены параллельно, используя 32 1-битных «потока».

При разработке Serpent использовался более консервативный подход к безопасности, нежели у других финалистов AES, проектировщики шифра считали, что 16 раундов достаточно, чтобы противостоять известным видам криптоанализа, но увеличили число раундов до 32, чтобы алгоритм мог лучше противостоять ещё неизвестным методам криптоанализа.

Став финалистом конкурса AES, алгоритм Serpent в результате голосования занял 2 место.
Шифр Serpent не запатентован и является общественным достоянием.

Обсудить в чате 👉 https://news.1rj.ru/str/+jrxm2KHbIl9kMDQy
== Всё, что вы не знали о CAP теореме
https://habr.com/ru/post/328792/

== Забудьте САР теорему как более не актуальную
https://habr.com/ru/post/258145/

== You Can’t Sacrifice Partition Tolerance
https://codahale.com/you-cant-sacrifice-partition-tolerance/
Instead of CAP, you should think about your availability in terms of yield (percent of requests answered successfully) and harvest (percent of required data actually included in the responses) and which of these two your system will sacrifice when failures happen.

== Мифы о CAP теореме
https://habr.com/ru/post/322276/

== Нам мало CAP. Да здравствует PACELC
https://temofeev.ru/info/articles/nam-malo-cap-da-zdravstvuet-pacelc/
Forwarded from Папка “Избранное” (Oleg Agapov)
Вчера был на вебинаре про GPT-3. Я всё время как-то обходил эту тему и весь хайп по этому поводу, а тут решил погрузиться и узнать что же это такое.

В двух словах, это очень большая нейронка, обученная на 170B слов, причем на корпусах из разных языков (включая русский).

Что она может:
- генерировать саммари по тексту
- писать развернутые тексты по ключевым фразам или эпилогу
- отвечать на вопросы (Q&A)
- даже вести диалог (чатбот)

Пока качество производимого текста очень неоднородно. Иногда получается интересно, иногда похоже на ерунду. Однако уже есть несколько стартапов, которые построены на основе GPT-3.

Но, самым известным (и интересным) проектом, основанным на GPT-3 является Github Copilot. Это когда просто описываешь желаему функциональность, а код пишет нейронка. Вот теперь есть желание попробовать как это работает. Записался в лист ожидания, когда получу доступ отпишусь что-как.

А пока можно зайти в playground (регистрация обязательна) для GPT-3 и поиграться с этой нейронкой.
Forwarded from CyberYozh
Отправка и получение почты без регистрации (и смс)

5ymail - позволяет отправлять email без регистрации и раскрытия своего реального адреса. Почта может содержать вложения/быть отформатированы с помощью встроенного html-редактора.

myTrashMail
Здесь можно создать одноразовый ящик под регистрацию в сервисах, форумах итд. Учетная запись создается на определенное время и удаляется после окончания этого срока.

Spambog
Очень функциональный почтовый сервис, не требующий как регистрации, так и ваших личных данных. Можно получать и отвечать на письма, есть функция пересылки, вложения, форматирования, автоматическое удаление прочитанного и многое другое. Хорошо подходит на роль отдельного ящика для регистраций.

Mailinator
Вот еще один сервис, создает почтовый ящик очень быстро и полностью автоматически. Сервис работает только на входящие сообщения.

Обсудить в чате 👉 https://news.1rj.ru/str/+jrxm2KHbIl9kMDQy
== Why you should check-in your node dependencies
https://www.jackfranklin.co.uk/blog/check-in-your-node-dependencies/

блин дало задуматься.
скорость конечно и устойчивость такого подхода просто дикая

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

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