Technologique
652 subscribers
144 photos
3 videos
42 files
947 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
Весьма интересный и близкий нам канал о технологиях программирования на С, C++, Go и Python, а также о Linux, ведёт Сергей Аббакумов - Sea++. Подписывайтесь на канал, чтобы поддержать автора в его стремлении писать больше об этих технологиях программирования.

Канал очень молодой, создан недавно, но уже достаточно интересный, есть авторские посты, качество материалов и тем хорошее, и уже выработан формат постов, в частности автор пишет посты на русском в канал и на английском в telegra.ph, что является большим плюсом для зарубежной публики.

Мне понравилась серия постов про обработку ошибок и исключений в С++:

https://xn--r1a.website/sea_plus_plus/22 - про использование идиомы RAII (деструкторной техники освобождения ресурсов) в обработке исключительных ситуаций

https://xn--r1a.website/sea_plus_plus/23 - про сравнение с методом обработки исключений в Go

В Go обработка исключений и ошибок происходит посредством возврата состояний через тип-интерфейс error. [1] [2] [3] [4]

https://xn--r1a.website/sea_plus_plus/24 - про класс Expected<T> от Андрея Александреску, соавтора D и стандартной библиотеки языка D (библиотеки Phobos).

О подобном способе обработки исключений в Java, посредством класса Either<MyError, MyResult>, как альтернативе checked exceptions, писал недавно Марио Фуско из RedHat в Twitter.
Technologique
На Mobile World Congress 2017, проходящем в Барселоне, Sony и финская компания Jolla объявили о долгосрочном сотрудничестве. Jolla будет поставлять ОС Sailfish, для смартфонов Xperia. Sailfish - дистрибутив для мобильных платформ на базе ядра Linux и проекта…
Jolla выпустили обновление Sailfish OS 2.1.1

Обновление образов прошивок будет доступно для устройств Jolla и Sony Xperia.

https://blog.jolla.com/sailfish-os-2-1-1-now-available-jolla-devices-early-access/

https://blog.jolla.com/sony-xperia-project-update/

Девайсов с Sailfish на борту по прежнему очень мало - это устройства Jolla собственной разработки компании и с недавних пор отдельные устройства Sony Xperia, прошивки для которых разрабатываются по договору о сотрудничестве Jolla с Sony.
Поддержка устройств не очень широкая и вряд ли будет таковой. Причины этого обективны и понятны - рынок уже занят и поделён.
Все основные производители мобильных устройств и SoC чипов завязаны на Open Handset Alliance, который недостаточно open, чтобы быть открытым для сторонних производителей железа и софта, и альянс сильно завязан на Google и экосистеме Android, которые обязывают компании альянса, для участия в нём и экосистеме Android, закрывать спецификации своих SoC и запрещают открывать исходники драйверов для сторонних производителей софта.

https://www.openhandsetalliance.com/oha_members.html#handset

https://www.openhandsetalliance.com/oha_members.html#semiconductor

https://www.openhandsetalliance.com/oha_members.html#software

Это захват и сегментация рынка, и защита своих лидирующих позиций на нём для Google, как производителя софта и защита доходов от производства устройств и их компонентов для производителей железа, т.е. это фактически закрытый рынок и закрытый конгломерат компаний его формирующих, который не приемлет новых производителей софта и ОС.
Даже китайские производители железа не смогли изменить ситуацию на рынке и снизить зависимость от Google.

Во многом это и послужило большим препятствием для выхода на мобильный рынок и дальнейшего широкого распространения Ubuntu на нём, что подтолкнуло Canonical на зарытие проектов конвергентного интерфейса и мобильного дистрибутива Ubuntu Linux по причине убытков и неокупаемости проектов.

Canonical искали точки входа на рынок, сначала пытались распространять устройства с помощью европейских (например Bq) и азиатских мобильных операторов, участвовали со своим проектом мобильного дистрибутива Ubuntu в Mobile World Congress в Барселоне на протяжении нескольких лет для его популяризации среди производителей устройств, европейских и азиатских операторов , после пытались сотрудничать с азиатскими производителями железа (например Meizu) - но ничего не вышло.

Думаю та же участь ждёт проект Jolla Sailfish, даже не смотря на сотрудничество с Sony.
Такая ситуация на рынке делает любой проект альтернативной ОС невостребованным и слабо окупаемым.
Производитель железа должен иметь уверенность в прибыли, сколько он устройств сможет и должен произвести и отгрузить, сколько из них будут востребованы, согласно исследованиям рынка и ситуации на нём, чтобы окупить их разработку и производство и ещё заработать прибыль - Google с Android и альянс дают гарантии этого, а сторонние производители софта не дают никаких гарантий.
С другой стороны производитель софта должен создавать удобный инструментарий для разработки приложений и формирования экосистемы вокруг ОС - успех ОС во многом зависит от её SDK, доступности языковых и инструментальных средств для разработки приложений под неё.

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

Хотя сам я за Jolla очень болею, но уже ни на что не надеюсь, потому что на успех Ubuntu у меня лично была очень большая надежда и большие ожидания свершений, и сейчас я просто использую те устройства что более доступны.

На таком рынке сможет остаться только полностью самостоятельный производитель софта и железа ("full-stack vendor"), как например Apple, чтобы составить конкуренцию и зарабатывать на нём деньги.
Technologique
Jolla выпустили обновление Sailfish OS 2.1.1 Обновление образов прошивок будет доступно для устройств Jolla и Sony Xperia. https://blog.jolla.com/sailfish-os-2-1-1-now-available-jolla-devices-early-access/ https://blog.jolla.com/sony-xperia-project-update/…
Даже в самой экосистеме Android такая ситуация на рынке и в альянсе порождает негативные тенденции - замкнутость экосистемы, элиминация/исключение не только иных производителей софта, но и железа (пример - слабый успех YotaPhone 2, что послужило причиной замораживания всего проекта, слабый успех Intel на мобильном рынке, не смотря на влияние корпорации и технологически очень хорошо проработанные последние поколения мобильных чипов), из-за чего устройства всё больше становяться до ужаса однообразными, как по своей железной начинке, дизайну, форм-фактору, так и по пользовательским интерфейсам приложений и системы, из-за влияния одного главного производителя софта, Google, со своим мнением о том "как нужно делать интерфейсы правильно".
Тем не менее такая унификация железа, ОС, SDK и интерфейсов не делает разработку приложений, прошивок и их поддержку более простой - до сих пор в экосистеме Android присутствует значительная фрагментация самой ОС в плане существующего железа и его поддержки, возникшая во многом из-за закрытости драйверов для SoC (производители SoC чипов в альянсе делятся спецификациями и исходниками драйверов только с производителями конечных устройств) и из-за модели выпуска и поддержки обновлений прошивок целиком под конкретные устройства самими производителями конечных устройств. Таким образом фрагментация ОС возникла из-за vendor centric модели выпуска и распространения самой системы, сконцентрированной вокруг производителей конечных утсройств, которые решают сделать ли прошивку, её обновления, ядро и драйверы доступными или нет, что делает процесс поддержки прошивок устройств самими производителями (без привлечения сообщества) очень сложным и также негативно влияет на процесс разработки приложений разработчиками под различные устройства, т.к. нужно поддерживать как можно больше различных стройств и сделать универсальную поставку приложения работающего на всех устройствах становится всё сложнее, даже не смотря на наличие единого SDK.

И именно по этим причинам пользователи выбирают устройства Apple, как альтернативную экосистему c единой ОС для ограниченного спектра мобильных устройств и их железа.

Выпустив Windows для персональных компьютеров в своё время Microsoft поступили очень грамотно (что было весьма очевидно для того времени), разработав единый универсальный API ядра и системных библиотек (WinAPI), и заставив производителей самого железа, а также производителей компьютеров "в сборе" и лэптопов, распространять как минимум бинарные драйверы железа и устройств для их поддержки и работы в ОС Windows.

Links:
https://xn--r1a.website/technologique/777
https://xn--r1a.website/technologique/933
https://xn--r1a.website/technologique/936
https://xn--r1a.website/technologique/938
Technologique
Интересные времена настали, интересные... - Mr.Robot Мистер Робот продлён на третий сезон! https://www.instagram.com/p/BJLknNEBpIH/ Лишь бы Сэм Эсмэйл не уронил планку сценария! PS: eps2.2_init1.asec - действительно интересная и глубокая по своему смыслу…
Первый тизер третьего сезона сериала "Мистер Робот".

С каждым сезоном сериал "Мистер Робот" всё больше отражает тенденции в американском и глобальном обществе и политике, а также показывает влияние технологий на информационное общество - побочные эффекты применения и использования цифровых технологий, тотальная слежка за гражданами, ограничение свободы доступа к информации, всё большее влияние глобальных корпораций и финансовых конгломератов на жизни и судьбы людей, распространение криптовалют и darknet.
Во втором сезоне было сделано весьма смелое предположение, что после краха традифионной финансовой системы фиатных денег международные финансовые конгломераты могут перейти на криптовалюты, основанные на блокчейн алгоритмах. И это вполне подтверждается текущими экспериментами крупных международных банков (например UBS) с блокчейн алгоритмами.
Я конечно не сторонник теорий заговоров, но мне думается, что появление Bitcoin в текущую post-2K эру было далеко не случайным и весьма своевременным, учитывая также факт сокрытия его авторства. 😉

Сложно представить до чего дойдёт фантазия (фантазия ли? скорее предупреждение и предостережение) Сэма Эсмейла в новом, третьем, сезоне, премьера которого состоится 11 октября этого года.

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

Links:
https://xn--r1a.website/technologique/553
Technologique
https://www.kinopoisk.ru/news/2590497/ https://www.kinopoisk.ru/film/404213/ Главная жанрообразующая книга Уильяма Гибсона "Нейромант" ждёт своей экранизации PS: Наша колекция фильмов по IT тематике: https://telegram.me/technologique/304 Весьма интересный…
Первую книгу трилогии "Киберпространство", роман "Нейромант" ("Neuromancer", 1984) будет экранизировать Тим Миллер, режиссёр "Дэдпула".

https://www.kinopoisk.ru/news/3019210/

http://deadline.com/2017/08/deadpool-tim-miller-neuromancer-william-gibson-movie-fox-simon-kinberg-1202145496/

Права на экранизацию второй и третьей книги трилогии "Киберпространство" ("Sprawl" trilogy), романов "Граф Ноль" ("Count Zero", 1986) и "Мона Лиза Овердрайв" (Mona Lisa Overdrive, 1988) писателя Уильяма Гибсона, были выкуплены ещё в 2007 году и ожидают своей экранизации.

В англоязычной литературе цикл романов был озаглавлен издательствами в разные годы по разному ("Neuromancer", "Cyberspace", и даже "Matrix"), т.к. сам Уильям Гибсон не объединял цикл романов в трилогию и не давал специально трилогии названия.
Наиболее известно название "Sprawl trilogy", по первому изданию всех трёх романов одной трилогией.

Термин "Sprawl" в романе "Нейромант" и всём цикле применяется в смысле "urban sprawl" и обозначает рост количества строений, т.к. в романах описывается экспансия, расширение урбанистической агломерации и городских метрополий будущего, одна из которых и обозначается нарицательным именем "Sprawl", "Муравейник", "расскадник", городская агломерация, простирающаяся вдоль восточного побережья Соединённых Штатов, вокруг дуо-города Бостон-Атланта (Boston-Atlanta Metropolitan Axis, BAMA), являющаяся расскадником, порождающим криминальную среду будущего киберпространства. Сам термин "киберпространство" был впервые изобретён в этом цикле романов Уильяма Гибсона.

Уильям Гибсон в библиотеке Максима Мошкова:
http://lib.ru/GIBSON/

Очень советую прочитать оригинал романа "Нейромант" ("Neuromancer") на английском языке:
http://lib.ru/GIBSON/neuromancer.txt

Wiki:
https://ru.wikipedia.org/wiki/Киберпространство_(трилогия)
https://en.wikipedia.org/wiki/Sprawl_trilogy
https://en.wikipedia.org/wiki/The_Sprawl

Links:
https://xn--r1a.website/technologique/611

#киберпанк
#cyberpunk
zRAM - swapped your memory from zipped swap partition, placed right into the same RAM memory, and getting more memory!

Подкачиваешь оперативку прямо из сжатого раздела подкачки в оперативке и получаешь больше памяти! ©

Модуль ядра Linux zRAM полезен для "современных" ультрабуков со "стандартными" 8 ГиБ RAM, когда памяти недостаточно и конфигурация не поддерживает апгрейд (память нерасширяема, нет слотов, впаяна в матплату - on-board soldered RAM), для серверов при использовании виртуализации, для серверов приложений (для апплетов экосистемы Java), при тестировании массивных Java приложений и GC на многогигабайтных кучах (heap), а также для систем сборки и поставки проектов (процессов CI/CD в DevOps практике), для компиляторных ферм, используемых для сборки очень крупных проектов, требующих для процесса компиляции и сборки много памяти и процессорного времени, в этом случае zRAM будет полезен для мэйнтейнеров пакетов различных дистрибутивов и любителей компилировать и собирать source-based дистрибутивы (Gentoo и другие) и пакеты для них, создавать локальные зеркала скомпилированных и собраных пакетов (ebuild для Gentoo) для подобных дистрибутивов, на серверной площадке компании или проекта, и т.д.

https://www.kernel.org/doc/Documentation/blockdev/zram.txt

Установка и настройка zRAM в Gentoo, ArchLinux и Debian.

https://habrahabr.ru/post/172137/ - давняя статья Дмитрия Петрашко (@darkdimius, к слову одного из основных авторов компилятора Dotty с системой зависимых типов для Scala 3)

#Linux
Technologique
Шикарный спич на недавней конференции C++Now 2017, прошедшей в мае, от Нико Матсакиса, одного из основных разработчиков Rust! Нико очень простым языком на примерах объясняет весьма сложные концепции, например как устроена идиома контроля заимствований и владений…
Нико Матсакис о библиотеке Rayon для параллельной обработки данных в языке Rust на конференции Rust Belt.

https://youtu.be/gof_OEv71Aw

Библиотека Rayon позволяет обрабатывать данные параллельно с использованием композитных комплексных типов данных, поддерживающих параллелизм при работе с ними, например параллельных коллекций.
Для этих целей библиотека Rayon обеспечивает создание параллельных итераторов и редукцию рекурсивных алгоритмов в параллельные с использованием поддерживаемой библиотекой операции/метода join (https://en.wikipedia.org/wiki/Fork%E2%80%93join_model).

http://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/

Перевод на русский язык:
https://habrahabr.ru/post/274299/

https://github.com/nikomatsakis/rayon

https://crates.io/crates/rayon

https://docs.rs/rayon/

Links:
https://xn--r1a.website/technologique/1012
Андрей Бреслав, автор Kotlin, о поддержке сопрограмм (coroutines), итераторов и продолжений (continuations) в языке Kotlin и семантике байт-кода JVM для работы с асинхронным многопоточным исполнением кода в программах, ленивыми и отложенными вычислениями, и событийно асинхронным неблокирующим вводом-выводом.

https://youtu.be/4W3ruTWUhpw
Для работы, правильного настроя на творческий процесс написания программ и приятного отдыха - классный сайт, c GIS и аудио-стримингом, для поиска интересных радиостанций по всему миру!

http://radio.garden/live/

Список интересных избранных радиостанций, которые сам часто слушаю:
https://gist.github.com/andrcmdr/5953df2752285b714108ef2ee6bde61d
Антон Кекс - про применение Kotlin в реальных проектах.

Многие вещи про которые говорит Антон в текущей версии Kotlin уже исправлены, тем не менее спич и доклад весьма интересны, также весьма интересно наблюдать за развитием языка Kotlin.

https://youtu.be/CABN2r4GPpQ

На английском:
https://youtu.be/lpPbCWpBM3I

#Kotlin
Technologique
И снова про патентный троллинг и патентные войны в наше время... https://youtu.be/Scq94Er7VB8
JVM vs. .Net

Спустя время "open source и Oracle патенты" (41:41) смотрится очень забавно, в свете последних разбирательств Oracle vs. Google по патентам на API - а ведь Ричард Столлман предупреждал в своё время, ещё когда Java принадлежала Sun, что Java не свободна.
Тем не менее исходники Java были открыты и был создан проект OpenJDK до покупки Sun компанией Oracle, поэтому Google удалось избежать претензий со стороны Oracle по патентам на API.
В этом случае лицензии FOSS сработали как и должны были, сработали в защиту открытых платформ.

Хотя .Net тоже не свободен, но есть свободная (распространяемая по свободной лицензии) open source платформа Xamarin Mono, которая сейчас развивается очень большими темпами, благодаря покупке Xamarin компанией Microsoft и благодаря открытию исходников .Net и созданию проекта .Net Core - уже можно писать мобильные приложения на Xamarin.Android и Xamarin.iOS, десктопные приложения на Xamarin.Mac и кроссплатформенные десктоп приложения на Mono+GTK# для Linux и Windows, например так сделан оригинальный KeePass 2.

Всё это ещё раз показывает - FOSS это реальная сила и открытый исходный код рулит абсолютно, всё остальное это принцип "разделяй и властвуй", когда вендоры сегментируют сообщество разработчиков и стараются привязать как можно больше людей к своей экосистеме, потому что от этого зависит их конкурентоспособность и соответственно коммерческий успех на рынке ПО.

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

https://youtu.be/1z32YuiyncI

Ссылки по теме (Thread):
https://xn--r1a.website/technologique/610
https://xn--r1a.website/technologique/577
https://xn--r1a.website/technologique/530
https://xn--r1a.website/technologique/444
https://xn--r1a.website/technologique/434
https://xn--r1a.website/technologique/400
https://xn--r1a.website/technologique/327
Technologique
JVM vs. .Net Спустя время "open source и Oracle патенты" (41:41) смотрится очень забавно, в свете последних разбирательств Oracle vs. Google по патентам на API - а ведь Ричард Столлман предупреждал в своё время, ещё когда Java принадлежала Sun, что Java не…
Но в Java как в технологии всё равно больше шума и boilerplate кода в экосистеме - сама технология Java это поощряет, а её популярность это только усугубляет.

Об этом есть очень классный доклад Антона Кекса, особенно первая его часть, с очень подробным анализом проблем в экосистеме Java.

Первую часть посмотрите обязательно - очень крутой обзор и разбор проблем в экосистеме с разных сторон.

Часть первая:
https://youtu.be/TSAlj04_tkA

Часть вторая:
https://youtu.be/cPXTozVjSHo
Бартош Милевски - теория категорий

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

https://youtu.be/p54Hd7AmVFU

Полный курс лекций — Category Theory:
https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_

Category Theory II:
https://www.youtube.com/playlist?list=PLbgaMIhjbmElia1eCEZNvsVscFef9m0dm

Links:
https://xn--r1a.website/technologique/1002
Бартош Милевски - правда о типах

Пожалуй лучшая лекция, раскрывающая понятие теории типов, систем типов и что такое тип, основываясь на очень простых концепциях теории категорий.

https://youtu.be/dgrucfgv2Tw
Наикрутейшая лекция о теории категорий применительно к практическому программированию от Филипа Вадлера, соавтора Haskell

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

https://www.infoq.com/presentations/category-theory-propositions-principle/

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

Есть виды типизированного лямбда исчисления (https://gist.github.com/andrcmdr/7121c3d9eb83f06785d8055a5c3604a3, https://xn--r1a.website/technologique/1002).
Если к ним применить теорию категорий - это уже будет конструктор для разработки различных систем типов.

Парадигм пограммирования много конечно, но все они сводятся к нескольким основным структурным парадигмам - структурной (процедуры/функции, модули, объекты/классы) и функциональной (лямбда функции (термы и типы) и категории). Или же по типу программ - к императивной и декларативной парадигме.

Сейчас всё идёт к ФП, потому что теория категорий предлагает более мощный структурный паттерн для создания программ, композиции типов данных и функций для их обработки, композиции систем типов и методов работы с типами, а также формальной верификации программ.

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

Типизированное лямбда исчисление и теория категорий - это очень мощные концепции в парадигме функционального программирования и именно за ними будущее всего пограммирования и всей IT отрасли.


Список литературы, статей и лекций - "Programming Language Theory":
http://steshaw.org/plt/
https://github.com/steshaw/plt

Дополнительные материалы:
Лекция Филипа Вадлера "Утверждения как типы" - https://www.youtube.com/watch?v=IOiZatlZtGU
Google выпустили Android 8 Oreo

Из основных новшеств: полная поддержка Instant Apps в Google Play, легковесная сборка платформы Android Go, поддержка Java 8 API (finally!) и языка Kotlin.

https://youtu.be/7kD0ZYzJbYo
Следующее поколение процессоров Intel, Coffee Lake, разрабатываемых по 14 nm техпроцессу, будет выпущено в октябре.

На видео есть пасхалка с подсказкой о дате выпуска на кружках с кофе. 😁👍

Не смотря на прежние технологические нормы в 14 нанометров для транзисторов Intel говорят о значительной оптимизации архитектуры, благодаря чему удалось повысить производительность чипов до 40 процентов относительно предыдущего поколения Kaby Lake и при этом значительно снизить их энергопотребление.

https://youtu.be/AAQuQh4dSgA?t=4m50s
Technologique
Сегодня состоялся официальный релиз Go 1.8. https://blog.golang.org/go1.8 https://golang.org/doc/go1.8 https://github.com/golang/go/tree/release-branch.go1.8 Как я уже писал выше - серьёзно улучшен Garbage Collector в runtime компилятора за счёт упрощения…
Сегодня состоялся официальный релиз Go 1.9

Как всегда в очередной раз улучшены алгоритмы работы сборщика мусора (GOGC) - повышена производительность выделения и освобождения больших объектов в памяти кучи (heap) для приложений использующих очень большой невыгружаемый пул памяти (memory footprint) и очень большие кучи (heap size >50GB), хранящие много крупных объектов в памяти, что весьма хорошо для улучшения производительности in-memory кэширования и приложений in-memory баз данных написанных на Go.

Вызов функции runtime.ReadMemStats и подсчёт указателей в памяти теперь занимают меньше чем 100µs даже на очень больших кучах (heaps).

В run-time улучшен механизм inline подстановок кадров стэка вызова функций, что также повышает производительность работы с памятью.

В компиляторе Go теперь по умолчанию включена паралльельная компиляция, что значительно повышает скорость сборки и компиляции очень крупных проектов на многоядерных машинах.

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

Множество небольших улучшений сделано в инструментарии Go (Go toolchain) и стандартной библиотеке, с которыми можно более подробно ознакомиться в Release Notes.

https://blog.golang.org/go1.9

https://golang.org/doc/go1.9

https://github.com/golang/go/tree/release-branch.go1.9

http://talks.godoc.org/github.com/davecheney/go-1.9-release-party/presentation.slide#1

Links:
https://xn--r1a.website/technologique/1008
https://xn--r1a.website/technologique/750
https://xn--r1a.website/technologique/721