Technologique
660 subscribers
143 photos
3 videos
42 files
945 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
Новый рекламный ролик Lenovo к 25-летию серии Thinkpad о самом лучшем топовом бизнес лэптопе всех времён - ThinkPad X1 Carbon. Показанное в этом году на CES2017 пятое поколение модели стало ещё лучше, мощнее, удобнее в использовании и главное - работа от одного…
Серии лэптопов ThinkPad - 25 лет!

5 октября 1992 года IBM выпустила первый лэптоп ThinkPad, но он стал лишь самым первым, положив начало огромной серии моделей, выпускающихся на протяжении 25 лет и поныне компаниями IBM и ныне подразделением Lenovo.

В связи с данным событием Lenovo выпустили юбилейную модель, очень похожую на первый ThinkPad, в особенности раскладкой клавиатуры и классическим логотипом:
https://www.youtube.com/watch?v=4CgoI76_cfg

Unboxing юбилейной модели ThinkPad от Lenovo:
https://www.youtube.com/watch?v=EvDhuXaoL6c

"Future years - future users":
https://www.youtube.com/watch?v=pX9ZKwA-WBA

Links:
https://t.me/technologique/1060
https://t.me/technologique/914
https://t.me/technologique/913
https://t.me/technologique/274
https://t.me/technologique/244
Сегодня мировая премьера фильма "Blade Runner 2049".

https://www.youtube.com/watch?v=zvFp9v_InWM

http://www.kinopoisk.ru/film/589290/

Продолжение истории снятой сэром Ридли Скоттом ещё в 1982 году (http://www.kinopoisk.ru/film/403/).
"Бегущий по лезвию" давно стал классикой мировой научной фантастики и жанра киберпанк.

Обязательно перед просмотром фильма "Blade Runner 2049" найдите и посмотрите оригинальный фильм Ридли Скотта "Blade Runner" 1982-го года.

Сценарий (и соответственно сюжет) нового фильма полон экзистенциальной философии, вопросов существования человеческого вида в условиях технократического общества, а также библейских мотивов, без которых не обходится ни один фильм с участием Ридли Скотта.

Это определённо один из лучших научно-фантастических фильмов нашего времени и на мой взгляд это один из лучших фильмов, которые я когда либо видел! Действительно стоящий фильм за долгое время и просто нереальная драма!
Очень советую - смотреть обязательно!

Предыдущие материалы по теме:
https://t.me/technologique/1039
https://t.me/technologique/1011
https://t.me/technologique/1062
https://t.me/technologique/968
https://t.me/technologique/653

#киберпанк
#cyberpunk
Technologique
Сегодня мировая премьера фильма "Blade Runner 2049". https://www.youtube.com/watch?v=zvFp9v_InWM http://www.kinopoisk.ru/film/589290/ Продолжение истории снятой сэром Ридли Скоттом ещё в 1982 году (http://www.kinopoisk.ru/film/403/). "Бегущий по лезвию"…
Все опубликованные материалы по фильму:

https://www.youtube.com/watch?v=7tCeft9dbNE

Сразу скажу - трейлеры и тизеры вообще имеют мало отношения к сюжету самого фильма и обыгрывают абсолютно иную альтернативную версию фильма, придуманную Дени Вильнёвом для возбуждения интереса к картине. Поэтому - готовьтесь быть удивлёнными в кино!
Релиз PostgreSQL 10.

https://www.postgresql.org/about/press/presskit10/ru/

Возможности шардинга (партиционирования) и репликации, для распределённого хранения и бэкапов данных, теперь полностью встроены в движок СУБД.

Логическая репликация построена по модели publish–subscribe и позволяет выборочно реплицировать заданные таблицы.

Шардинг производится по интервальной (диапазонам значений) или списочной схемам партиционирования таблиц при помощи нового декларативного синтаксиса, выражений "PARTITION BY" и "PARTITION OF", в директиве "CREATE TABLE".

Наследование таблиц и контроль записи в них через правила, заданные в триггерах, теперь упразднены!

Новый синтаксис это только начало, первый шаг для поддержки базовых возможностей партиционирования и в дальнейшем разработчики PostgreSQL будут развивать возможности и фреймворк партиционирования для распределённого хранения данных с использованием СУБД PostgreSQL.
Устранение множественных критических уязвимостей авторизации и обмена ключами (handshake) в протоколе WPA2 стэка протоколов беспроводной передачи данных командой безопасности дистрибутива Debian.

https://www.youtube.com/watch?v=Oh4WURZoR98

https://www.debian.org/security/2017/dsa-3999

https://forum.openwrt.org/viewtopic.php?id=72340

https://community.ubnt.com/t5/UniFi-Updates-Blog/FIRMWARE-3-9-3-7537-for-UAP-USW-has-been-released/ba-p/2099365

Уязвимость KRACK attack (https://en.wikipedia.org/wiki/KRACK, https://www.krackattacks.com) не зависит от применяемых асимметричных шифров (WPA-TKIP, GCMP, AES-CCMP), позволяет перехватить и дешифровть трафик (даже используя пустой ключ при наличии компонента wpa_supplicant реализующего протоколы авторизации WPA/WPA2), и касается точек доступа и роутеров с демоном hostapd на борту (дистрибутивы OpenWRT, LEDE, оборудование Ubiquiti Networks и других вендоров), реализующим авторизацию клиентов по протоколам WPA/WPA2, и клиентов с установленным по умолчанию пакетом wpa_supplicant дистрибутива, содержащим соответствующий компонент системы, реализующий протоколы авторизации WPA/WPA2.

Описание принципа атаки:
https://papers.mathyvanhoef.com/ccs2017.pdf
Инфраструктура IT каналов в Telegram.

Мы с ребятами, авторами каналов, решили, что пора уже перестать сидеть в тени и нужно объединяться! Коллективный интеллект решает и консолидация рулит!

Предлагаем Вам в качестве рекомендации список интересных и дружественных нам каналов по смежной IT тематике, которые мы сами читаем и рекомендуем Вам.

#channels

Sea++ - Интересные материалы из мира C/C++, Python, Go, Linux и не только.

L'homme qui pleure - Авторский канал про ужасы IT индустрии и инфраструктуры в Санкт-Петербурге. Автор верует в единорогов и пытается стать гиперполиглотом.

Котики Кодят - официальный канал дайджест-подкаста "Котики Кодят". Новости из мира веб-разработки, программирования, фронтэнда и бэкенда, DevOps, операционных систем, машинного обучения и информационной безопасности.

Spalmalo Tech Talks - Полезные ссылки для разработчиков, DevOps инженеров, аналитиков данных (Data Scientists). Автор постит то, что хочет донести коллегам с примерно таким же стэком и интересами: Linux, Ruby, macOS/OSX, Python, ML, психология.

MicrosoftRus - ITpro News & Reviews - Авторские заметки о Microsoft, Windows Server, System Center, Azure, Office 365, OMS и не только, для IT профессионалов, разработчиков и всех, кто интересуется новыми технологиями.

The After Times - Несерьезный дайджест IT. Ежедневно. Цитаты, паста, картинки.

IT Broadcast - Канал для тех, кто хочет быть в теме и познавать новое в области IT. Входит в топ каналов Telegram о технологиях.

Linkmeup - Самый официальный канал единственного и неповторимого подкаста для связистов LinkMeUp. Ребята постят новости со своего сайта, группы ВКонтакте и просто интересные вещи из отрасли связи.

ЗаТелеком - Авторский канал про сферу Телеком отрасли. Новости, тренды и истории. Много фото со всего мира и мнение о происходящем.

Microsoft Developer - Официальный канал сообщества Microsoft Developer для разработчиков и всех, кто интересуется новыми технологиями.

IoT Space - Канал о бизнесе эры Интернета Вещей, цифровой трансформации нашей реальности и о формирующемся рынке и экосистеме IoT.

Robotics Channel - Канал о робототехнике, нейросетях, автоматизации, научных исследованиях и разработках в смежных областях.

Channels Lists:
https://github.com/goq/telegram-list

https://geektimes.ru/post/285704/

https://github.com/A-gambit/awesome-telegram-chats/

Links:
https://t.me/technologique/1070
CEO и основатель Nvidia Дженсен Хуанг на открытии конференции GPUTechConf Europe 2017, прошедшей в Мюнхене 10-12 Октября.

https://www.youtube.com/watch?v=1Te9PL46oIE

Дженсен (Jen-Hsun "Jensen" Huang) говорит про cutting edge of computational technologies, про текущие и грядущие определяющие для индустрии вычислительных систем вещи - о применении приложений дополненной и виртуальной реальности (Nvidia HoloDeck VR/AR), о замедлении закона Мура и переходе от алгоритмических методов решения задач к неалгоритмическим, но математическим методам параллельных вычислений на базе приложений линейной тензорной алгебры Ли, благодаря анализу и выявлению шаблонов в данных нейросетевыми методами глубокого машинного обучения, параллельным вычислениям в применении к искусственным нейросетям (технологии Tensor Core и набор инструкций CUDA TensorOp) и новым архитектурам параллельных процессоров для ускорения машинного обучения (дискретный процессор Nvidia Tesla Volta V100 построенный по архитектуре Tensor Core и использующий новый набор инструкций для глубокого машинного обучения CUDA TensorOp), производительность и эффективность которых будет определяться уже не только количеством операций с плавающей точкой за единицу времени (FLOPS), но в большей степени эффективностью и количеством операций машинного обучения за единицу времени, Tensor OPS - количество выработанных шабонов тензорных полей в процессе обучения на основе обработанных наборов данных, связей между ними, с закреплением и последующим выводом шаблонов для применения и создания приложений на базе многослойных перцептронов, фреймворков Convolutional Neural Networks (ConvNet), Recurrent Neural Networks (RNN) и других моделей искусственных нейросетей.

Но главный анонс конференции - это первый серийный бортовой суперкомпьютер Nvidia PEGASUS для обслуживания машинного зрения, анализа дорожной ситуации, роботизированного AI пилотирования и оснащения им систем беспилотных автомобилей (driver-less cars) для логистической индустрии, car-sharing сервсов и служб беспилотных такси - https://www.youtube.com/watch?v=1Te9PL46oIE&t=1h33m57s

Links:
Обязательно посмотрите предыдущие выступления на GTC:
https://t.me/technologique/987
https://t.me/technologique/988

CPU&GPU Tech:
https://t.me/technologique/1102
https://t.me/technologique/772
https://t.me/technologique/28
​​Популярность языков программирования с начала 2017 года по уровню контрибуции (вклада) разработчиков на разных языках в кодовую базу репозиториев проектов на GitHub.

Визуальное представление данных

Полная диаграмма

На мой взгляд самый эффективный и корректный рейтинг популярности языков - на основе данных по замерам контрибуции Krihelimeter

Уровень вклада участников в репозитории трансляторов различных языков программирования.
Embedding Rust in Python.

Статья годичной давности, но при этом не менее актуальная, об интересном опыте процесса оптимизации проекта Sentry на Rust.

Критические части Python приложений можно переписывать на Си и С++ - но это давно всем известно, со времён введения ctypes в Python.
Но я давно задавался вопросом - если заменить Си и C++ на Rust и взаимодействовать со скомпилированным кодом через CFFI, это будет безопасно и с практически нулевым оверхэдом!
Ребята из Sentry продемонстрировали эту концепцию на практике!

https://blog.sentry.io/2016/10/19/fixing-python-performance-with-rust.html

Армин Ронахер, автор фреймворка Flask, контрибьютор проекта Sentry, платформы мониторинга, логирования и агрегации ошибок, рассказал о том как происходила оптимизация критических по времени исполнения и памяти, а также чувствительных к задержкам частей кода на Python в проекте Sentry при помощи библиотечного модуля (парсера отладочных Source Map файлов из дампов логов Sentry), написанного на Rust и вызываемого через СFFI из обёртки (wrapper) на языке Python.
Также интересна и очень показательная на практике совместимость скомпилированного кода Rust с C ABI через rust-ffi интерфейс (https://doc.rust-lang.org/book/first-edition/ffi.html).

https://github.com/getsentry/libsourcemap - production парсер обёрнутый в Python

https://github.com/getsentry/rust-sourcemap - изначальная библиотека парсера на на Rust от Армина

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

https://github.com/PyO3/pyo3

https://github.com/dgrunwald/rust-cpython
Об отладке при помощи Source Map, постепенной типизации (gradual typing) и типизации контекста испонения (flow typing).

Чистый JavaScript сейчас используется всё чаще как слаботипизированный промежуточный язык (как ассемблер, Си или C--) для браузерного движка, компилятора JS, например V8 для Chromium или Spider/Jaeger Monkey для Firefox.

Есть более высокоуровневые языки (а также статические анализаторы и типизаторы, транс-компиляторы для JS) с более строгой динамической типизацией (flow sensitive typing - Dart2JS, TypeScript, Elm, Facebook Flow, Babel), которые транс-компилируются через трансформации абстрактных синтаксических деревьев в JS. Такой исходный код похож на жутко обфусцированный и минифицированный обычный JS код. Но он включает необходимые проверки типов (gradual typing) для run-time фазы исполнения кода и хорошо оптимизирован для стадии JIT компиляции браузерным движком, JS компилятором.

Всё движется к строгой статической типизации с CTTI и RTTI трюками выводов типов в compile-time и run-time соответственно:
https://webcache.googleusercontent.com/search?q=cache:https://blog.jooq.org/2014/12/11/the-inconvenient-truth-about-dynamic-vs-static-typing/

http://sitr.us/2014/11/21/flow-is-the-javascript-type-checker-i-have-been-waiting-for.html

Конечно, даже типизация контекста испонения (flow typing), которая используется ещё на этапе разработки в статических анализаторах кода в IDE (проверки типов параметров в WebStorm, Atom IDE, Visual Studio Code) и постепенная типипзация (gradual typing, типизация с включением проверок типов в исходный код промежуточных слабо типизированных языков или динамических языков с нестрогим контролем типов, типизированный байт-код для динамических языков, например mypy в СPython, либо наоборот директива динамической диспетчеризации типов в байткоде для виртуальной машины, например invoke-dynamic в JVM, dynamic тип в байт-коде DartVM и DLR .Net для C# - это всё вариации постепенной типизации) не защищают полностью от исключительных ситуаций и ошибок времени исполнения в run-time (не говоря о языках CoffeeScript, LiveScript в которых нет flow sensitive системы типов, как и в обычном JavaScript), а директива динамической диспетчеризации типов dynamic в байткоде только повышает риск исключений в типах при слабой нестрогой системе типов в run-time.

Поэтому подобным транс-компилированным JS приложениям необходима отладка. Файл source map подобен debug symbols для JS приложений. Он содержит реверс отображение, которое при помощи отладчика позволяет найти по транс-компилированному JS коду часть исходного кода на первоначальном языке в которой возникло исключение или ошибка типов. Библиотека парсера source map файлов позволяет этот процесс автоматизировать и выделять отладочную информацию из бинарных дампов в лог базы данных Sentry.

https://blog.sentry.io/2015/10/29/debuggable-javascript-with-source-maps.html

https://docs.sentry.io/clients/javascript/sourcemaps/

PS: Тема современных систем типов и контроля целостности памяти в многопоточных приложениях интересная, живая и горячая - thus of, stay tuned and don't switch channel. =)
Technologique
Об отладке при помощи Source Map, постепенной типизации (gradual typing) и типизации контекста испонения (flow typing). Чистый JavaScript сейчас используется всё чаще как слаботипизированный промежуточный язык (как ассемблер, Си или C--) для браузерного движка…
Полезные ссылки к статье:
https://en.wikipedia.org/wiki/Gradual_typing
https://en.wikipedia.org/wiki/Flow-sensitive_typing

CPython+Mypy:
https://t.me/technologique/155
https://www.python.org/dev/peps/pep-0484/
https://github.com/python/mypy

Facebook Flow:
https://flow.org
https://github.com/facebook/flow
https://github.com/flowtype/flow-typed

О возможностях разных редакторов кода:
https://t.me/technologique/887
https://t.me/technologique/888
https://t.me/technologique/889

Собственно вот так flow-sensitive typing работает в режиме реального времени при парсинге исходников и проверке типов параметров в Atom IDE (и в VSCode это тоже есть) - посмотрите по ссылкам, там много gif screen capture анимаций и конечно советую попробовать Atom IDE и VSCode на практике:

https://t.me/technologique/1086
https://t.me/technologique/1061

https://nuclide.io

https://github.com/facebook/nuclide

https://ide.atom.io

https://atom.io/packages/atom-ide-ui

https://github.com/flowtype/ide-flowtype

https://github.com/atom/atom-languageclient

https://github.com/flowtype/flow-language-server
Открыт исходный код Plus Messenger.

https://gitlab.com/rafalense/plus-messenger

Исходный код альтернативного Telegram клиента Plus Messenger был опубликован в репозитории GitLab ещё месяц назад, но широко об этом стало известно только сейчас.

#Telegram
Разговор двух Алис.

У голосовой помощницы Алисы от Яндекс есть ярко выраженная индивидуальность и очень эмоциональная натура.

Оказывается если заставить двух голосовых помощниц Яндекса пообщаться друг с другом выходят весьма забавные интеллектуальные беседы полные аллюзий. 😆😂👍

В целом русская версия самообучающегося AI выглядит именно так - Алиса учится у Алисы и становится лучшей версией самой себя. 😁😂

https://youtu.be/vsaMXZ4Q_t8

https://youtu.be/hDZNXh2X73k

https://youtu.be/xOHwbZCVFXc

Голосовая помощница Алиса доступна в приложении Яндекс.Поиск:

https://play.google.com/store/apps/details?id=ru.yandex.searchplugin

https://play.google.com/store/apps/details?id=ru.yandex.searchplugin.beta
lal - language-agnostic build system and dependency manager.

На днях нашёл интересный проект от Cisco для управления зависимостями и сборки проектов на разных языках (language-agnostic). Весьма полезен для управления зависимостями проектов на С/C++. В помощь тем кто пишет на С/C++ и до сих пор собирает проекты с помощью make скриптов.

Проект реализован на #Rust. =)

https://github.com/cisco/lal-build-manager
Андерс Хейлсберг о нововведениях в TypeScript на конференции MS Build 2017.

Очень интересное выступление Андерса Хейлсберга на Build 2017 о нововведениях в языке TypeScript с сильной строгой flow-sensitive системой типов (flow typing) - очень советую посмотреть!

https://channel9.msdn.com/Events/Build/2017/B8088/

Я сам практически не использую Windows в работе (и остаюсь приверженцем Debian и Arch Linux), но Андерс показывает классный отработанный до автоматизма экспириенс в Windows 10 и консоли, виртуозное владение TypeScript в редакторе с возможностями IDE Visual Studio Code - люблю смотреть такие выступления, это просто хай-тэк шоу и очень приятно наблюдать за работой профессионалов столь высокой квалификации!

Андерс молодец - остаётся актуальным в технологическом потоке, движет тренды, развивает технологии сам, всё ещё молод в душе, зажигателен и подаёт яркий пример для молодёжи! А ведь он делал ещё в разное время Turbo Pascal, Delphi и C#! Вряд ли я смогу назвать хоть ещё одного, столь экспрессивного, современного автора столь многих популярных языков программирования! Разве что таким же был его учитель, профессор Никлаус Вирт, в своё время.


Ссылки на материалы по теме:
https://t.me/technologique/1124
Dotty Linker & the future of Scala 3.

Разбирал код линковщика, модифицированный Dotty Linker, который пишется для реализации DOT-evaluation системы типов компилятора Scala 3.

https://github.com/dotty-linker/dotty

Если совсем коротко - система типов dependent object types evaluation (DOT calculus), придуманная Мартином Одерски, это реализация редукции графов для объектных типов, т.е. это реализация нестрогих/ленивых вычислений (non-strict/lazy evaluation strategy) для CTTI вывода типов по графовой модели их зависимостей в системе типов будущей Scala 3 (ныне проект компилятора и системы типов Dotty).
С одной стороны это увеличит безопасность программ благодаря конкретизации типов через их зависимости, с другой стороны увеличит производительность, т.к. граф зависимостей типов позволяет оптимизировать код и поток исполнения программы, приводя его в детерминированное состояние (оптимизация потока исполнения, циклов и рекурсивных вызовов, с приведением его графа к виду возможному для исполнения на детерминированном конечном автомате, детерминированной машине Тьюрига).
Но главное чего хотели добиться с помощью Dotty - неявное/автоматическое максимально возможное распараллеливание программы на потоки, с последующей графовой редукцией результатов вычислений.
Подобное распараллеливание потока исполнения с редукцией (по типу map-reduce или fork-join модели) результатов вычислений позволяют выполнять практически все чистые функциональные языки и логика кодогенераторов их компиляторов, что позволяет более эффективно и просто без явного ручного программирования распараллелить поток исполнения на множество вычислительных ядер и более эффективно и быстро исполнять программу.
Зависимые типы в системе типов языка дают граф зависимостей данных и кода при анализе программы и позволяют понять какие части программного кода более независимы друг от друга и от общих данных, и позволяют выполнить распараллеливание исполнения в отдельных программных потоках с возможным (более дорогим по накладным расходам системных вызовов) маппингом на системные потоки пространства ядра.
Но есть и минусы такого решения - зависимые типы ещё более затягивают процесс компиляции из-за наследования типов и разростающегося графа их зависимостей при выведении типов с помощью правил формализованных в DOT исчислении (DOT calculus).
К тому же архитектура стэковой машины (с сохранением контекста исполнения в стэковой структуре данных) и семантика байт-кода JVM ограничивают возможности и не способствует реализации ленивых вычислений (lazy evaluation) в чистом виде - в Clojure (а также Frege и Eta) например используется CTTI и RTTI хаки вывода типов, в т.ч. dynamic dispatch через invoke-dynamic байт код (то же что и dynamic тип в DLR .Net и С#) и multiple dispatch для обобщённых типов в RTTI фазе при исполнении кода, т.е. больше используется структурный и отложенный вывод типов в compile-time и позднее связывание (late binding) и динамическая диспетчеризация типов (dynamic dispatch, short-circuit/minimal evaluation) в run-time, нежели реальные чистые ленивые вычисления (lazy evaluation strategy).
Быстрая компиляция при такой системе типов - это архисложная задача с которой ещё предстоит справится.
Но у меня оптимизма остаётся всё меньше. Ни один язык с системой зависимых типов - в т.ч. из более-менее распространённых Idris, Agda, F*, системы автоматических доказательтв Coq и Matita, и символьных вычислений, которые вообще используют динамическую интерпретацию, перенося вывод типов в run-time фазу (RTTI) при исполнении кода - не компилируется быстро.
Саймон Пейтон Джонс специально создал для поддержки реализации lazy evaluation strategy слаботипизированный язык C-- в который компилируется Haskell.

Ссылки на материалы по теме:
https://en.wikipedia.org/wiki/Evaluation_strategy

https://t.me/technologique/343 =)
https://t.me/technologique/720
https://t.me/technologique/1002
https://t.me/technologique/1006
https://t.me/technologique/1007
https://t.me/technologique/1051
https://t.me/technologique/1052
https://t.me/technologique/1054
https://t.me/technologique/1072
Также для создания структурных систем зависимых типов может использоваться математический аппарат теории категорий.

https://gist.github.com/andrcmdr/e31ba4c9bf881fbff595cd799620ca72#algebras

Ссылки:
https://t.me/technologique/1054
https://t.me/technologique/1052
https://t.me/technologique/1051