Technologique
663 subscribers
144 photos
3 videos
42 files
949 links
Deeply involved developers about various aspects, tendencies & conceptions of programming technologies, FLOSS, Linux, security, cloud infrastructures & DevOps practices, distributed systems, data warehousing & analysis, DL/ML, web3, etc.
Author: @andrcmdr
Download Telegram
Technologique
To become a giant, you may have to stand on the shoulders of others. — Isaac Newton rephrasing Год назад Wired писали о самом масштабном переносе данных в истории - об исходе сервиса DropBox из облачной инфраструктуры Amazon Cloud. [1] https://www.wired…
Rust 101 — вводный курс.

Эмили Данэм (DevOps at Mozilla) о языке Rust на Linux.Conf.AU 2017 в конце января этого года.

https://youtu.be/FMqydRampuo

Интересно её мнение о сравнении Rust с Go (а ведь многие до сих пор сравнивают, вместо того, чтобы "попробовать язык на вкус"):
Rust is a systems programming language, Go is a programming language for sysadmins.

И ведь правда, Go больше подходит для написания вспомогательных утилит системного уровня, middleware и серверов, реализующих сетевые протоколы и сетевые API.

Для создания серверных приложений с меньшим невыгружаемым пулом памяти (memory footprint, https://t.me/technologique/841) и меньшими задержками исполнения (без Stop-The-World GC, а GC STW latency есть всегда, в любых алгоритмах сборки мусора, даже при многопоточной сборке мусора в последних версиях Go задержки есть, хоть и минимальные, наносекундные; задержки исполнения потоков программы есть даже при многопоточной сборке мусора в неактивных suspended потоках в GC компиляторов языка D, потому что runtime вынужден останавливать потоки для проверки/подсчёта ссылок/указателей на страницы и сегменты памяти) — нужны другие модели безопасного управления памятью (runtimeless, GC-free) в многопоточных программах — например, RAII (destructor based) в C++, Reference Counting в Swift, region-based memory management в Ada.
Все эти модели безопасного управления памятью, наряду с опасным ручным управлением (unsafe, raw memory management) — есть в Rust.
Technologique
В Docker большие изменения в позиционировании продукта и модели разработки - новая нумерация версий (год.месяц) и разделение на Docker Community Edition (CE) и Docker Enterprise Edition (EE) https://www.docker.com/enterprise-edition https://blog.docker.…
Проект Docker представил серьёзную альтернативу CoreOS, Atomic и RancherOS - проект Moby и Linux Kit.

https://mobyproject.org

https://blog.docker.com/2017/04/introducing-the-moby-project/
https://github.com/moby/moby

https://blog.docker.com/2017/04/introducing-linuxkit-container-os-toolkit/
https://github.com/linuxkit/linuxkit

Ранее в конце января 2016 года было объявлено о слиянии с Docker компании Unikernel Systems (http://unikernel.org/projects/), разрабатывающей технологию контейнеризации на базе гипервизора Xen ядра Linux и дистрибутивы MirageOS (https://mirage.io) и ClickOS, и что впредь развитию system-wide контейнеризации отдан наивысший приоритет в разработках Docker.

https://blog.docker.com/2016/01/unikernel/
Грядущие изменения в ближайших обновлениях Telegram.

https://medium.com/tb-blog/about-payments-ad16609d7a01

Будут добавлены видео сообщения (наряду с голосовыми аудио сообщениями) с возможностью их преобразования в GIF анимацию.

Для каналов станет доступен новый сервис http://telesco.pe, для публикаций коротких циклических видео в каналах.
Информация об этом должна появиться в скором времени тут https://telegram.org/blog/video-messages

Будет внедрена платёжная платформа на базе https://stripe.com с монетизацией ботов (Bot Payments API) для совершения покупок и платежей прямо в Telegram через ботов!
Выпущена версия Redox 0.2 - проекта микроядерной операционной системы, написанной на безопасном языке Rust.
Также с этим релизом проекту Redox OS исполняется два года.

https://redox-os.org

https://github.com/redox-os/redox/releases/tag/0.2.0
https://github.com/redox-os

Другие проекты ОС, написанных на языке Rust:
http://wiki.osdev.org/Rust

https://github.com/rust-lang/rust-wiki-backup/blob/master/Operating-system-development.md

Главной проблемой при разработке ОС на Rust остаётся его семантика выделения памяти по умолчанию в куче (heap memory allocation), что конечно безопаснее, но медленнее при активном использовании памяти (выделении и автоматической очистке, region-based memory management), чем выделение пямяти под структуры данных и операции с ними на стеке.

http://scialex.github.io/reenix.pdf - проект reenix, порт микроядра weenix на Rust, хорошо описана проблема при выделении и освобождении памяти процессов микроядром, написанным на Rust

Таблица задержек разных видов носителей, хранилиц и каналов передачи информации, которую все программисты должны знать:
https://gist.github.com/jboner/2841832

https://gist.github.com/hellerbarde/2843375

https://gist.github.com/GLMeece/b00c9c97a06a957af7426b1be5bc8be6
Весьма интересная новость.
Кто-то из сетевых админов Ростелекома решил, руководствуясь принципами целесообразности для оптимизации маршрутов трафика, или наоборот следуя указаниям, отредактировать таблицы маршрутов автономных систем в BGP вручную, на своих транзитных маршрутизаторах, сделать маршруты между автономными системами статическими, хотя динамические маршруты являются рекомендацией ICANN/IANA.
Отредактировал таблицы BGP и вероятно по неопытности или с определённой целью анонсировал автономные системы международных платёжных систем на себя, через свою автономную систему и её подсети.
Маршруты динамически поменялись, перестроились, и трафик с этих автономных систем пошёл в подсети Ростелекома - трафик российских пользователей международных платёжных систем.
Скорее всего это было сделано для удобства пользователей, оптимизации маршрутов трафика, уменьшения промежуточных узлов перехода и получения меньших задержек доставки пакетов.
Но можно конечно усмотреть в этом правительственные действия по контролю платежей граждан через международные платёжные системы - как минимум определения источников трафика и международных переводов средств.
Это ещё раз показывает, что в старых базовых несущих протоколах маршрутизации в сети Интернет (BGP, OSPF), и не только в них, при их разработке никто не предусматривал какой-либо безопасности, защиты от непреднамеренного идиотизма и от преднамеренных злонамеренных действий, т.к. интернет с самого начала был очень открытым местом для разумных людей.

http://opennet.ru/opennews/art.shtml?num=46469
После стольких лет Intel наконец-то начали признавать критические уязвимости с удалённой эскалацией привелегий в интерфейсах управления в микрокоде своих процессоров.

Уязвимы, на чтение/запись памяти через DMA, с эскалацией привелегий и удалённым исполнением произвольного кода, все современные поколения процессоров, начиная с ядер архитектуры Nehalem и Sandy Bridge и заканчивая последним поколением Kaby Lake.

https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&languageid=en-fr

https://semiaccurate.com/2017/05/01/remote-security-exploit-2008-intel-platforms/

https://t.me/technologique/709
https://t.me/technologique/710
Technologique
Photo
$ may --force -B --with -U
Интереснейшая беседа Криса Андерсона, основателя и директора конференции TED, с Илоном Маском, состоявшаяся 28 апреля.
В беседе Илон фактически раскрыл секрет успеха его компаний и свой личный - он берёт простую, но сложную и дорогую в реализации идею, и далее исследует пути её удешевления при пошаговой реализации до коммерчески приемлемого уровня, достаточного для самоокупаемости. При этом он не боится сложных в реализации технологических решений на этапах в процессе реализации всего проекта. Как он сам говорит - "это простое осознание неизбежности технологического прогресса, либо это сделаешь ты, либо кто-то другой."

https://youtu.be/B8Kb_n2_HcY

Оригинал на английском:
https://youtu.be/zIwLWfaAg-8
Четырнадцатый раунд нагрузочных тестов производительности фреймворков для разработки сетевых и веб приложений от TechEmpower.

В новом раунде добавили многопоточный (actor based) фреймворк Tokio для Rust.

https://www.techempower.com/blog/2017/05/10/framework-benchmarks-round-14/

https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=plaintext&a=2

Фреймворк для создания сетевых приложений на Rust - Tokio:
https://tokio.rs
https://github.com/tokio-rs
https://github.com/tokio-rs/tokio-core
https://github.com/tokio-rs/tokio
https://github.com/tokio-rs/tokio-minihttp

https://crates.io/crates/tokio-core

https://medium.com/@carllerche/announcing-tokio-df6bb4ddb34

https://medium.com/adventures-in-rust/moving-to-tcpstream-bye-tokio-5a1488f337f6

Предыдущие посты по теме:
https://t.me/technologique/609
https://t.me/technologique/59
Проект Vagga.

https://youtu.be/bCSP5adDPJk

Docker - это уже синоним системы контейнеризаци. Но Docker написан на Go, и скомпилированный бинарный файл включает в себя run-time Go для управления памятью и маппинга потоков (go-routine) на системные треды, что неизбежно порождает оверхэд и задержки (stop-the-world, STW) сборки мусора в памяти, хоть и очень малые, но весьма ощутимые под реально высокой нагрузкой (https://t.me/technologique/841).

Rust имеет tiny-runtime, используемый только для обобщённых типов (параметрического полиморфизма, дженериков), для определения входящего типа данных через переменную-параметр во время исполнения кода. Поэтому Rust не имеет проблем с оверхэдом и задержками по памяти.

Поэтому контейнеризация и изоляция окружений на Rust имеет смысл.

Именно о таком проекте рассказывает спикер на недавнем RustFest, прошедшем 29-30 апреля в Киеве (http://2017.rustfest.eu) - о проекте Vagga.
https://youtu.be/dS9fIphTJfM

И ещё один очень интересный спич про Rust от Эмили Данэм с недавнего RustFest в Киеве (http://2017.rustfest.eu), прошедшего 29-30 апреля.

Предыдущий спич Эмили на Linux.Conf.AU 2017 — https://t.me/technologique/957 — оказался весьма популярен на нашем канале.