воскресенье, 6 марта 2022 г.

VPN сервисы бывают разные...

ВНИМАНИЕ!

Есть такой "бесплатный" VPN:
https://finevpn.org/
Создатели пишут на своем сайте на русском, английском и китайском:
"Бесплатный VPN, список VPN серверов, ВПН адреса."
Я проверил их IP адреса, оказалось, что они находятся в Россйской Федерации, вот пример адресов, якобы в Нидерландах и Великобритании:
nl.finevpn.org, uk.finevpn.org, они принадлежат некой "Global Layer B.V.": 5.183.255.10, 141.98.87.10, 45.10.166.132 и любой сервис геолокации IP скажет вам, что эти IP адреса находятся в Москве, Россия. Если вы поверили словам на сайте https://finevpn.org/ или отзывам Trustpilot, проверьте физическое расположение серверов этой "организации": https://www.ipvoid.com/ip-geolocation/ или https://www.ip-lookup.org/location/.
Будьте осторожны с "бесплатными" VPN, они не только торгуют вашими интересами и личной информацией, но и могут цинично и грубо "стучать на вас" кому-то в РФ.

четверг, 18 ноября 2021 г.

Почему крайне неразумно устанавливать себе на смартфон месседжер Telegram

 

 Публикую основные тезисы для тех, кто увлечен "безопасностью" Telegram на основе технического анализа в статье https://www.securitylab.ru/analytics/490726.php.

Основные претензии к приложению и сервису:
1. Программа сразу же выгружает всю Вашу базу контактов на сервера Telegram.
2. Изначально в любой переписке сообщения не зашифрованы совсем.
3. Даже расхваленное шифрование Telegram активно критикуется экспертами безопасности, так что нет никакой гарантии, что даже “зашифрованные чаты” не хранятся в открытом виде на серверах Telegram.
4. Проблемы нетехнического характера - спам рекламой в каналах Telegram с ноября 2021 года
    На концептуальном уровне у Telegram есть несколько нестандартных решений, которые, как мы полагаем, не должны быть частью протокола безопасности. А конкретно:
    • Функция сквозного шифрования не используется по умолчанию [7]. По этой причине большинство технически неискушенных пользователей используют Telegram без функции секретного чата и считают, что сообщения шифруются. Без секретных чатов, по сути, пользователи должны доверять серверам Telegram.
    • Telegram использует криптографический протокол MTProto собственной разработки, что уже неоднократно подвергалось критике. Общая доктрина безопасности говорит о том, что разработчикам не следует изобретать велосипед в криптографической части, а доверить проектирование криптографического протокола экспертам. Те, кто исследовал этот протокол, также имеют скептическое мнение. Специалист по криптографии Мэтт Грин высказал следующее: «Telegram имеет 10 миллионов деталей, которые поддерживают единичный неавторизованный обмен ключами по методу Диффи-Хеллмана». [8]
    • Telegram изначально запрашивает список контактов с телефона/компьютера и хранит полученную информацию на сервере. То есть на серверах хранится огромная база контактов, которая может стать целью для атаки или быть попросту продана властям без ведома пользователя. Это еще один пример, когда пользователи должны доверять безопасности серверов Telegram.
3.2 Проблемы, связанные с технической безопасностью
    • Группа исследователей в 2015 году анонсировала схему атаки на Telegram типа «челове-посередине», которая может быть осуществлена властями конкретного государства. Атака связана с генерированием общих секретов по методу Диффи-Хеллмана для двух жертв, имеющих одинаковый 128-битный визуальный отпечаток, и пользователи, которые сравнивают отпечатки, не смогут обнаружить атаку. При реализации атаки «дней рождения» потребуется всего лишь 264 операции. С того момента количество битов, используемых в отпечатках, значительно увеличилось, однако в целом проблема остается актуальной. Чтобы проверить ключи и предотвратить MITM-атаки, пользователи должны визуально сравнить сетку квадратов с четырьмя оттенками синего. Здесь сразу же всплывает человеческий фактор. Во-первых, пользователь может не заметить едва различимых отличий между сетками. Во-вторых, у пользователя вообще может не быть желания возиться со сравнением сеток.
    • До 2014 года протокол MTProto использовал модифицированную версию схему обмена ключами по методу Диффи-Хеллмана [9]. Вместо генерации ключей при помощи стандартного протокола на базе алгоритма Диффи-Хеллмана, сервер отсылал пользователю ключ, обработанный операцией XOR вместе с произвольным числом (nonce). Сей факт позволяет фальшивому серверу использовать различные nonce-переменные для двух пользователей, в результате чего будет один и тот же ключ, но который будет известен серверу. Повторимся еще раз: пользователи должны доверять серверу Telegram. Несмотря на то, что этот вопрос был решен, одно только присутствие этой проблемы вызывает массу вопросов относительно компетенций разработчиков Telegram в области безопасности, поскольку проблема чрезвычайно проста.
    • В некоторых частях протокола при хешировании вместо SHA-256 используется алгоритм SHA-1, который, как известно, неустойчив к коллизиям [10]. Создатели Telegram утверждают, что SHA-1 используется в тех частях протокола, где устойчивость к коллизиям не принципиальна, однако все же более сильная хеш-функция была бы уместнее. История не раз доказывала, что бреши и неучтенные моменты – довольно распространенное явление.
    • Даже при использовании секретного чата, мобильная версия Telegram позволяет третьей стороне просматривать информацию о метаданных. Например, злоумышленник может узнать, когда пользователи выходят в онлайн и уходят в оффлайн вплоть до секунд. Telegram не требует соглашения от обоих сторон для установления коммуникации, и злоумышленник может подключиться и получить информацию о метаданных без ведома пользователя. Кроме того, у злоумышленника есть хороший шанс обнаружить, общаются ли два пользователя между собой посредством подключения и анализа метаданных на обоих концах провода. Мы назвали эту проблему «утечка доступности». Более подробно этот вопрос будет рассмотрен в разделах 4 и 5.
    • Как показывают предыдущие примеры, во многих случаях пользователи Telegram должны полностью доверять безопасности сервера, что немного иронично, поскольку изначальной целью основателей Telegram было создание продукта, защищенного от слежки. Даже несмотря на то, что многие уязвимости, связанные с безопасностью, были устранены, некоторых найденных проблем не должно было быть изначально.
 

четверг, 17 декабря 2020 г.

Why you should not use Chrome - based «Electron» to make your desktop GUI app

 

The introduction

There are many GUI frameworks out there in the world nowadays. Most of them are closely tied to the programming language: Qt (C++), .Net (C#), “Electron” (JavaScript), Swing and SWT (Java) to mention few. Since JavaScript is a bread and butter for Web UI developers, they think that having Electron is a shortcut to the desktop world and their familiar Web techs fuel their new desktop thing. Apparently so, however it is not fully true.

1. Limited desktop GUI capabilities and user experience.

Lets see what desktop applications lately have been built using Electron: Skype, Slack, Microsoft Visual Studio Code, Tusk (Evernote Client), Discord, WordPress Desktop, newly revealed by Elon Musk’s team - SpaceX Dragon Space Ship touch screen apps etc. We do not see among them any popular game or 3D modeling tool and you know the reason why, the Electron gives you the Web framework only. Everything you can show on a Web page can become a new Electron app. Also, soon you will notice that your “browser” app looks and feels like a Web page with all its slow transitions, heavy CPU cycles, and regular Web page experience. No more, and no less. In other words the Electron is designed for not heavy graphics, it is for entry-level experience “desktop” app creators who learned some Web stack only. Hey Elon, you could save 3-5% money on Electron developers salary for repacking Dragon Web pages into the Electron GUI app :-) Just use regular Chrome or Firefox and bookmarks!

2. Huge resources consumption.

Well, since this Electron app is the only stuff Dragon crew members run on their PC with sensor monitors, then this is not a big deal. Regular users who are running 5-50 small and big apps on their laptops is completely another story. Now, lets imagine that all these small and more advanced apps have been built with the fancy Electron by our happy JavaScript lovers. I started my Slack and Skype apps to see how hungry they are. Skype took 500 MB RAM, Slack eat 500 MB RAM also. Both they occupied 1 GB RAM, nice…. Think please, I started two messengers. I have 16 GB RAM, OS uses 1 GB with all drivers, services etc. Now Skype and Slack came in. I lost 2 GB just for 2 really typical messengers. So, if I will start Discord, then open Visual Studio Code without any files opened, then these Electron based apps will eat up 1 GB more! 2 GB of RAM just for 3 messengers and and a code editor, Electron guys, this is ridiculous! The startup time of these cr...ppy made apps took some CPU and my drive access time. And they are slow despite of the fact I use SSD drive and Intel i7 CPU. I would prefer not to give gigabytes of RAM to communication apps made with Electron, but rather to large test data in my local databases, running VMs on my laptop, and have more RAM for my regular multi-process C++ compile and link tasks.

3. Huge size of any apps.

This is another disadvantage of the Electron framework, you will need to carry the entire Web platform with your app to users. Even if you make a tiny GUI app that targets some network (Web) operations you can not pack the app in a megabyte. Rather you will occupy 300 – 600 MB on your users drive. An the next Electron app will occupy the same amount of space. 10 simple Electron-based apps will eat 3 – 5 GB of your drive space. Huuuhh..

4. Security concerns. 

In a Web browser users have password managers, SSL certificates warning, CORS protection and other security measures - all that learned from Web attacks during decades. What does Electron framework provide and what do JavaScript app developers employ to secure their apps? This is a very big users' concern now.

The conclusion.

If you are entry – level Web developer and wish to enter the desktop app market with a MVP, then this Electron is a “silver bullet” in your hands. And then, be ready to learn really powerful GUI frameworks and compiling programming languages (to avoid frustrations while hunting for bugs and security vulnerabilities). The reason is - your users, they do not want to pay bucks for tens of limited, slow, heavy, buggy (always in the dynamic languages like JavaScript), possibly insecure (due to the lack of experience of JavaScript SDE novices)  and non-native looking Web based apps.

And please, Discord, Skype, Slack teams, rewrite your Electron - based apps with 5-10 times less resource - hungry tech frameworks and programming languages, some people are forced by bosses to use your cr...ppy built apps!

вторник, 10 ноября 2020 г.

Как попасть в свободный Интернет мир

Как уже многие заметили, в некоторых странах Интернет занавес становится плотнее и многие ищут пути получать жизненно важную информацию.

VPN сервисы и скрытая сеть Tor позволяет решить проблему неконстутиционной цензуры. 

Бесплатный и надежный способ - это сеть Tor, но она не является решением абсолютно всех вопросов доступа к информации, например её скорость довольно медленная, как минимум в 8 раз хуже привычной. Кроме того, чтобы настроить конкретное приложение (какую-нибудь Library на устройстве или открыть любимый сайт в браузере) приходится потрудиться. К примеру, если загрузить Tor Browser, запустить его, то в нем не будут работать ввиду принудительных ограничений JavaScript, требуемывй сайтами. Но если запустить Tor Browser и потом заставить обычному приложению (Chrome, Firefox или другой программе) подключаться с Интернет через запущенный клиент Tor Интернет, то вполне себе работает, хоть и медленно.

Второй вариант это купить платный VPN сервис с хорошим рейтингом и забыть о проблемах с цензурой. Недавно обнаружил сервис SurfShark. Если найдется 28 евро на банковской карточке (или эквивалент по курсу), дают VPN на 15 месяцев. С качественным VPN все приложения на настроенном устройстве подключаются к свободному Интернет через VPN (например в ЕС). И нет рекламы и продажи ваших данных третьим лицам.

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

понедельник, 4 мая 2020 г.

Как стать программистом



Что можно ответить ребенку младше 18 лет или даже взрослому, у которого появилось желание стать программистом? Может сложиться впечатление, что стать программистом нетрудно и потом можно работать через Интернет и неплохо зарабатывать. К сожалению, подростки, да и взрослые, имея доступ в Интернет попадают под заблуждение, что «в Интернет всё есть», что нужно только «скачать» или «посмотреть курсы». Это верно только отчасти. Да, много (если не большинство) компаний работают распределенно, используя Интернет как связующее звено между сотрудниками и офисами по всему миру. Интернет также соединяет на различных площадках заказчиков и исполнителей. Однако в мире разработки программного обеспечения (ПО) также существует безработица, хоть и обычно меньше, чем в других отраслях; есть трудные боссы и нечистоплотные заказчики. Но самое трудное для школьника или взрослого, решившегося на переквалификацию, обычно является объем знаний и навыков, требуемые для этой работы.
Что можно посоветовать? Для начала скажу банальные вещи, так как все коллеги согласились, что я не дружу с головой, если бы я сказал, что-то типа «прочитай вон ту книжку и станешь классным программистом». Я попробую в одном предложении, ниже по тексту будут подробности. Итак обязательны: пытливый ум и усидчивость, математическая подготовка, разговорный английский, знание самих вычислительных систем, фундаментальные знания алгоритмов, операционных систем и сетей передачи данных, владение 1-2 компьютерными языками — это тот минимум, который дается в 4-х летнем колледже или институте, который поможет приблизиться к цели — стать востребованным инженером-программистом. Такой инженер — программист не побоится пойти на интервью в Amazon, Google, Microsoft или Яндекс и кто-то с третьего-десятого (справедливо) жесткого интервью туда даже попадет работать. Возможно кто-то будет работать не на гигантов индустрии ПО и Интернет, но тоже со временем найдет интересную работу. Если Вы дойдя до этого момента расстроились, то это только потому, что такова реальность. Подготовка занимает годы. Чтобы понять, о чем я пишу, нужно видеть ситуацию как она есть, без «розовых очков». Далее подробно, почему всё именно так.
Разберемся для начала с терминами и специальностями. В ИТ сфере, связанной с программный обеспечением, существуют много специальностей, узкопрофильных областей, в принципе это так же, как в медицине или авиастроении. К примеру, в ИТ есть системные инженеры, которые в основном не пишут программный код, но тем не им также необходима подготовка по нескольким дисциплинам, а крупные компании часто дополнительно требуют сертификацию специалиста по одной или нескольким технологиям. В области сопровождения (администрирования) существуют и менее квалифицированные специалисты, в основном это сотрудники технической поддержки (support или даже «эникейщики»), которые находятся в подчинении менеджеров или системных инженеров. Для простоты далее мы назовем эти роли «инженерная» и «не инженерная». Я опущу область инженеров — системотехников и менее квалифицированных «ремонтников» компьютерной техники, так как эти специальности не являются целью статьи.
По примеру сопровождения информационных систем, собственно процесс разработки, выпуска и поддержки любого программного обеспечения требует как глубокой инженерной подготовки, так и работу тех, кто будет выполнять не инженерную (простую, с точки зрения инженера) работу. Например, существует технология обеспечения качества программного обеспечения (QA) или в более узком смысле тестирования ПО, в этой области требуется знать определенные процессы и технологии; также существует область разработки интерфейсов пользователя (UI), есть работа по верстке HTML страниц для Интернет сайтов. Есть кодировщики, которые знают какой-то язык программирования и не более. Такие не инженерные специальности можно освоить с помощью различных курсов, они могуть стать отправной точкой для будущей, возможно, более общей специализации. Это путь роста «снизу → вверх» из «компьютерщика» / UI-щика / кодировщика далее в инженеры — программисты, который, в свою очередь, обязательно потребует на определенном этапе получения знаний из области инженерии ПО. Рассмотрим, что такого особого в этой инженерии программного обеспечения.
В инженерии программного обеспечения требуется владеть необходимым минимумом знаний. Хочу заметить, что это не какие-то тайные знания, нет, причина в том, что несмотря на множество специализаций, появляющиеся новые технологии и веяния моды (хайпа), инженеры — программисты (software development engineers) прежде всего инженеры. Они смогут понимать язык и работу инженера, кто-то захочет расти по карьерной леснице как менеджеры продукта, архитекторы ПО, тех.директора. Но это возможно только имея знание и понимание, чем занимаются их коллеги и подчиненные. Также на рынке freelance они смогут взяться за «денежный» заказ, который придется «не по зубам» низкоквалифицированным фрилансерам из стран треьего мира, готовым «за еду» продать свою вчерашнюю поделку.
Тогда где и как учиться? Ситуация в России в последние два деятилетия, начиная со школьного и кончая ВУЗами несколько в кризисе. Достаточно сравнить количество и качество научных публикаций в разных странах, чтобы понять, что наука развитых стран и Китая уже обошла науку в РФ, вспомним, например, кто разработал и продвигает стандарт связи 5G. Видя это, компании Яндекс и Mail.ru уже конкурируют с ВУЗами за студентов, так как им удобнее и качественее самим подготовить «под себя» своих будущих сотрудников. Хотя надо отдать должное ведущим школам, которые выживают несмотря на размер всепоглащающего госбюджета «безопасности». В большем выйгрыше выглядят ВУЗы США, Великобритании, Германии, так как в их программах вообще нет того откровенного хлама, который не нужен инженерам — программистам. Да, в таких ВУЗах и колледжах не учат философии, культурологии и истории. Зато уже на втором — третьем курсе студенты получают знания и навыки, которые дают им работу.
Можно ли все освоить самостоятельно, чтобы стать инженером-программистом? Теоретически да. Если есть достаточно много времени и средств - ведь нужно обеспечить себя во время учебы в течении 2-5 лет, то можно успешно учиться самостоятельно. Придется запастись хорошими учебниками и найти либо преподавателей, либо опытных наставников, которые будут направлять весь процесс. Какие предметы / учебники осваивать? В общем это основные дисциплины, которые преподают в техническом коледже или ВУЗе:
  • Разговорный английский. Именно с упором на «разговорный». Критически важно. Требуется не просто «читать и переводить со словарем», а именно достаточно свободно общаться, в том числе с коллегами. Без этого пункта закрыты большинство путей и возможностей в принципе.
  • Разделы высшей математики для ВУЗов: множества, функции, математический анализ, желательно теория вероятностей. Пространственная геометрия если требуется (для 3D моделирования или игр).
  • Устройство современных микропроцессоров. Критически важно. Не нужно учить микрокод популярных процессоров, достаточно знать и понимать каждый компонент микропроцессора и связанных с ним аппаратных элементов.
  • Современные вычислительные системы и параллельное программирование. Критически важно. Знать устройство многопроцессорных систем, процессы, потоки, знание и понимание общих для всех многопоточных систем проблем, такие как «мертвая блокировка», состояние гонки, отсутствие блокировок.
  • Информатика: алгоритмы и структуры данных, блок-схемы. Критически важно. Тут нужно выучить очень много и обязательно с лабораторными работами: алгоритмы поиска и сортировки, теория графов. Нужно понимать большое «О», сложность алгоритмов. Важно понимать баланс память — скорость. Без этого нечего делать в инженерах.
  • Современные операционные системы и системное программное обеспечение. Критически важно. Знать их устройство и понимать как программист взаимодействует с ними, лабораторные обязательно! Нужно знать и понимать как минимум устройство Unix (и похожие на них Linux, MacOS) и Windows. Android и iOS в мобильном мире растут от мира Unix, так что без Unix-подобных операционных систем никак.
  • Компиляторы и интерпретаторы. Критически важно. Обязательно погрузиться в язык С и сделать несколько лабораторных работ с операционными системами (выше). Важно понимать работу препроцессора компилятора, этапы компиляции и компоновки. Разобратья как работают интерпретаторы на примере Python или JavaScript. Дальнейшее развитие зависит от изучающего, как минимум один из них: C++17, Rust, Dart, Go, Java. Я не говорю, что после изучения именно этих языков программирования можно стать инженером — программистом, я говорю о минимуме знаний. На этом этапе пригодятся знания об устройстве операционнах систем и взаимодействие с ними.
  • Криптография и защита данных. Важно. Хэширование, симметричное и ассиметричное шифрование, современные реализации шифрования в сети Интернет. Вот тут и пригодится математика.
  • Сети передачи данных и Интернет. Критически важно. Устройство сетей, виды протоколов, лабораторные работы, например многопоточный UDP и TCP сервер и клиент. Тут уже нужны все знания до этого пункта.
  • Современные реляционные и нереляционные базы данных. Важно. Лабораторные обязательно! Важен практический опыт с SQL и NoSQL языками, их DDL, DML и так далее. Пригодится теория множеств.
Это и есть те самые знания, которые приближают человека к инженерии программного обеспечения. Для дальнейшего развития придется осваивать архитектурные шаблоны и паттерны программирования, а в зависимости от специализации еще и дюжину нужных инструментов: IDE, git, CASE, Bash, openssl, «облачные» сервисы.... Гораздо надежнее отыскать не поверхностные курсы по каким-то технологиям, а систематизирующие знания качественные ВУЗовские учебники, а потом, осваивая науку по учебникам, заведя тетрадки по предметам и делая лабораторки, подсматривать непонятную информацию в Интернет. Курсы хороши тогда, когда они полностью покрывают конкретную востребованную область инженерии или являются дополнением к учебнику.
Мне стало любопытно, какие же существую в 2020 году на русском языке учебники и справочники, которые помогут в самостоятельном обучении будущему инженеру — программисту. Попробую проанализировать. Также в будущем я в общих чертах хотел бы описать какие технологии потребуются при специализации в каждой области:
  • разработка ПО для предприятий
  • разработка Интернет сервисов
  • создание коммерческих продуктов
  • мобильная разработка для iOS и Android.

To be continued...

пятница, 28 февраля 2020 г.

Clcache to speed up rebuilds of large Visual C++ projects

Caching tool for Microsoft Visual C++ compiler to speed up rebuilds of large Visual C++ projects

On Windows with Microsoft Visual Studio and C++ compiler its not easy to use very effective and popular ccache. Still when you change a line of code and have to wait a half an hour for the solution is being rebuild then it forces to find a solution for caching of obj files. Incremental builds with /Zi option help but in case of switching git branches or changing some base class you will be forced to rebuild entire project or solution.
You can try to use a patch for ccache to cache C++ builds in Microsoft Visual Studio. Another way is clcache project. Here is the recepie:

1. Get clcache.exedistribution or build clcache.exe from sources

  • To setup clcache.7z extract the archive to some folder (e.g. C:\TEMP\clcache), the archive contains clcache.exe which is compiled Python source code and support libraries. The clcache.exe is built using Python 3.7 and PyInstaller Python module.
  • Another way is to make clcache.exe from source: https://github.com/frerich/clcache

2. Setup cl compiler

See «Integration for Visual Studio» or follow the next steps:
The next step will tell clcache that the original compiler to forward calls to is no longer available using the default name. See Visual Studio 2017 Community path to cl.exe:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx86\x64
Some users have reported (see e.g. #18) that in order to make Visual Studio pick up clcache, the original cl.exe compiler binary you need to rename:
Rename cl.exe to e.g. cl_original.exe
Rename cl.exe.config to e.g. cl_original.exe.config
Copy the generated (or use distributed) clcache.exe file to the folder with cl_original.exe (original cl compiler) and rename clcache.exe toi cl.exe.
Copy all other files from the distributive archive to the same folder with cl_original.exe file.
So the idea is to cheat Visual Studio and make it to use clcache.

3. Set environment variables to use clcache

Set CLCACHE_CL environment variable to point to cl_original.exe:
CLCACHE_CL=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx86\x64\cl_original.exe

In order to solve an issue with timeouts set environment variable to 100 seconds timeout:
CLCACHE_OBJECT_CACHE_TIMEOUT_MS=100000

4. Use /Z7 compiler option in all C++ projects in order to generate appropriate format of binary files

The /Z7 option produces object files that also contain full symbolic debugging information for use with the debugger. These object files and the built executable can be substantially larger than files that have no debugging information. The symbolic debugging information includes the names and types of variables, as well as functions and line numbers. No PDB file is produced.
Another option is to use some environment variable like CL_Z_OPTION to use its value in Visual Studio projects options:
CL_Z_OPTION=/Z7
Then in All options settings of your project in Visual Studio you will add to the end:
%CL_Z_OPTION%

5. Configure clcache storage capacity to keep all your object files

If you have over 1 GB of objects files then default settings of clcache are not enough so please enlarge the cache size to the required one. Go to the folder with clcache.exe and run this command to setup 4 GB cache in bytes:
clcache.exe -M 4294967296

6. Check clcache statistics

Run "clcache.exe -s" to check the effectiveness of the settings. Pay attention to cache misses. Then more cache hits and less cache misses then more effective your clcache is configured.

четверг, 1 ноября 2018 г.

Setup Jitsi Meet videoconference server



Недавно я наткнулся на интересный проект видеоконференций Jitsi Meet. Проект с открытым исходным кодом небезизвестной Atlassian. Проект использует WebRTC, ZRTP. Публичный сервер https://meet.jit.si/ готов к работе "из коробки". Но если это open source, почему не должен сразу заработать на другом сервере? Не так просто. На проверку этот типичный open source как и все остальные нужно "допиливать напильником" в нескольких местах.

Итак, оригиналы руководств и "допиливание" под Linux:

Установка и первоначальная настройка: https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md

Добавление безопасности: https://github.com/jitsi/jicofo#secure-domain
Для заведения пользователя используем prosodyctl:
# prosody register [user_name] [site_domain] [password]

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

Для Debian (вроде только у него такая бага в установке) нужно поправить название сгенерированного сертификата Letsencrypt:
# cd /etc/jitsi/meet
# mv ./[your_site].cert [your_site].crt

Чтобы приложение Jitsi Meet Electron "увидело" что на Вашем сервере стоит Jitsi API, потребуется сделать символическую ссылку, примерно следующее (Debian):
# cd /usr/share/jitsi-meet
#  ln /usr/share/jitsi/libs/external_api.min.js /usr/share/jitsi/external_api.js

В итоге в браузере должно открываться: https://[your_site]/external_api.js
Потом скачаете под свою ОС Jitsi Meet Electron (https://github.com/jitsi/jitsi-meet-electron/releases/) и сможете подключаться к своему серверу (укажите  URL в настройках Вашего приложения). Вроде мобильные приложения и без этого фикса заработают. В "настольных" у организатора появится возможность удаленно управлять (при согласии участника) рабочим столом участника конференции.

Google Chrome: как собрать под свой домен и добавить в Chrome/Chromium расширение: https://github.com/jitsi/jidesha

Хотите править настройки сервера? Вот исходник с подробными комментариями: https://github.com/jitsi/jitsi-meet/blob/master/config.js
У Вас надо идти в папку установки и править:
# cd /etc/jitsi/meet
# vi [site_name].js

Вот что там есть интересного:

  • Раскомментировать это для стриминга приложения (видео из плеера) в конференцию:
// desktopSharingFrameRate: {
// min: 5,
// max: 5
// },
// Optional desktop sharing frame rate options. Default value: min:5, max:5.
Например, Вам нужно 15 кадров в секунду минимум и 25 максимум, установите min и max соответственно.
На момент публикации Desktop Sharing в настольном Jitsi Meet Electron не читал настройку desktopSharingFrameRate сервера, но она отлично работает в браузерах.
  • Настроить Ваше расширение для Chrome:
desktopSharingChromeExtId: null,
// The ID of the jidesha extension for Chrome.
Соберете расширение и запишите вместо null хэш вашего.

Личный опыт человека: https://www.adamhyde.net/setting-up-jitsi-letsencrypt-cert-and-desktop-sharing/

пятница, 27 апреля 2018 г.

Rust popularity is growing. Slowly but surely.


During last few years I keep my eye on Rust. Its goals are very attractive and it becomes more and more mature every year.

Just couple of facts:

1. Mozilla Foundation already uses Rust in the latest Firefox you probably browse this blog :-)

2. Rust is the most loved programming language at Stackoverflow Web site.

3. Redmonk analytics charted Rust:
#47 place in 2016 year
#26 in March 2017
and ...
#23 in March 2018.
I quote: "This makes it more popular in these rankings than Clojure, Groovy, or Visual Basic, which is a significant achievement for a language that is prized for its safety but not considered as easy to pick up as other languages on this list."


понедельник, 22 мая 2017 г.

Rust language is growing - WOW!


System functional and object - oriented programming languages family is my priority, see the new system programming language that is most discussed,  has (slowly but surely) growing amount of commits on GitHub and most loved on Stackoverflow! Keep the eye on Rust...