Рубрика «open source» - 210

Runtyper — это плагин для Babel, выполняющий проверку типов прямо во время выполнения JavaScript кода. Он обнаруживает некорректные операции, например строгое сравнение строки и числа, и бросает предупреждение в консоль. Это позволяет вам находить ошибки типизации на ранней стадии, при этом не требует дополнительных аннотаций кода.

Runtyper warning example

Читать полностью »

В комментариях к последней статье про шишки, которые нам довелось набить за 15 лет использования акторов в C++, вновь всплыла тема отсутствия в SObjectizer-5 распределенности «из коробки». Мы уже отвечали на эти вопросы множество раз, но очевидно, что этого недостаточно.

В SObjectizer-5 нет распределенности потому, что в SObjectizer-4 поддержка распределенности была, но по мере того, как расширялся спектр решаемых на SObjectizer задач и росли нагрузки на SObjectizer-приложения, нам пришлось выучить несколько уроков:

  • под каждый тип задачи желательно иметь свой специализированный протокол. Потому что обмен большим количеством мелких сообщений, потеря части которых не страшна, сильно отличается от обмена большими бинарными файлами;
  • реализация back-pressure для асинхронных агентов — это сама по себе непростая штука. А когда сюда еще и примешивается общение по сети, ситуация становится гораздо хуже;
  • сегодня какие-то куски распределенного приложения обязательно будут написаны на других языках программирования, а не на C++. Поэтому требуется интероперабильность и наш собственный протокол, заточенный под C++ и SObjectizer, мешает разработке распределенных приложений.

Далее в статье попробуем раскрыть тему подробнее.

Читать полностью »

С января 2017 года владельцы репозиториев GitHub и другие разработчики свободного программного обеспечения начали получать письма с вредоносным вложением. В письме некто говорит, что якобы заинтересовался репозиторием и может предложить работу над другим программным проектом: условия и расценки во вложении.

В одном из образцов вредоносной рассылки в клуджах зафиксированы российские почтовые серверы:

Return-Path: <ludv.jani-2015@vrg.se>
Received: from unknown (HELO mail.bsme-mos.ru) (95.163.65.54)
by ariel.informaction.com with SMTP; 27 Jan 2017 11:25:22 -0000
Received: from unknown (HELO o) (zayavka@bsme-mos.ru@94.23.58.202)
by mail.bsme-mos.ru with SMTP; 27 Jan 2017 14:25:17 +0300
Subject: question
Date: Fri, 27 Jan 2017 12:25:26 +0100
X-MSMail-Priority: Normal
X-Mailer: Microsoft Windows Live Mail 16.4.3528.331
X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
This is a multi-part message in MIME format.

Читать полностью »

Google открыла портал для 2000 своих проектов Open Source - 1

Свободное программное обеспечение — неотъемлемая часть бизнеса Google. В этой компании проекты буквально рождаются и умирают с open source. Без Linux и открытого ПО не существовало бы компании Google в том виде, в каком мы её знаем. Google не только использует СПО в повседневной деятельности, но и постоянно выкладывает в открытое достояние собственные наработки. Например, за три месяца текущего года Google открыла Chrome для iOS, Upspin (фреймворк для глобального единого пространства имён), E2EMail (экспериментальный почтовый сервис с оконечным шифрованием), перцептуальный JPEG-энкодер Guetzli. Это только самые крупные проекты, которыми Google поделилась с сообществом в 2017 году.

Всего за время своей работы Google опубликовала код уже более 2000 проектов. Только как их посмотреть? Теперь вдобавок к репозиториям на GitHub все open source проекты Google доступны по единому адресу Google Open Source. Это новый портал свободного программного обеспечения поисковой компании.
Читать полностью »

День святого Патрика уже позади, день смеха уже на носу, так что было важно мне не упустить такое благоприятное время для подготовки именно этого материала. А он про следующее. Всем, кому приходилось поработать с FMDB и знакомиться с ее лицензией, доводилось лицезреть в нем следующий текст:

If you are using FMDB in your project, I'd love to hear about it. Let Gus know
by sending an email to gus@flyingmeat.com.

And if you happen to come across either Gus Mueller or Rob Ryan in a bar, you
might consider purchasing a drink of their choosing if FMDB has been useful to
you.

Finally, and shortly, this is the MIT License.

который можно перевести следующим образом:

Если вы используете FMDB в своем проекте, я был бы рад узнать про это. 
Дайте знать об этом Гусу, направив ему письмо на gus@flyingmeat.com.

И если вам доведется столкнуться с Гусом Меллером или Робом Райаном в баре, 
рекомендуем угостить их напитком по их выбору, раз FMDB действительно 
пригодилось вам.

В общем, если в двух словах, применяется лицензия MIT.

Замечательно, что авторы кода подошли к вопросу о лицензии с долей юмора и помимо стандартного ее текста оставили еще вот и такую приписку. А вдвойне замечательно то, что такая приписка вполне наводит мысли на другой тип лицензии – Beerware. Не слышали про такую? Если вдруг нет, тогда давайте-ка познакомимся с ней. Итак, встречайте:

Угости Гуса пивом! Или про лицензию Beerware - 1Читать полностью »

Picture 30

В ноябре прошлого года в нашем блоге была опубликована статья о разработке и использовании плагина PVS-Studio для SonarQube. Мы получили много откликов от клиентов и просто заинтересованных пользователей с просьбами провести тестирование плагина на реальном проекте. Так как интерес к этому вопросу не ослабевает, было решено провести тестирование на C# проекте PascalABC.NET. Также не будем забывать, что SonarQube содержит собственный статический анализатор C# кода — SonarC#. Для полноты картины проведем исследование и SonarC#. Целью данной работы является не сравнение анализаторов, а показ основных особенностей их взаимодействия с сервисом SonarQube. Прямое сравнение анализаторов было бы не вполне корректным по той причине, что PVS-Studio является специализированным инструментом поиска ошибок и потенциальных уязвимостей, в то время как SonarQube — это сервис оценки качества кода по большому числу параметров: дублирование кода, соблюдение стандартов кодирования, покрытие кода модульными тестами, возможные ошибки в коде, плотность комментариев в коде, технический долг и т.д.
Читать полностью »

Масштабирование Git (и кое-какая предыстория) - 1
Несколько лет назад Microsoft приняла решение начать долгий процесс по восстановлению системы разработки во всей компании. Мы большая компания, с множеством коллективов — у каждого собственные продукты, приоритеты, процессы и инструменты. Есть некоторые «общие» инструменты, но их много разных — и ОЧЕНЬ БОЛЬШОЕ количество разработанных внутри компании инструментов одноразового использования (под коллективами я имею в виду подразделения — тысячи инженеров).

У этого есть отрицательные стороны:

  1. Множество избыточных инвестиций в коллективы, которые разрабатывают похожие инструменты.
  2. Невозможность финансировать какой-либо инструментарий до «критической массы».
  3. Затруднения для сотрудников в перемещении по компании из-за разных инструментов и процесса.
  4. Сложность в обмене кодом между организациями.
  5. Разногласия с новичками в начале работы из-за чрезмерного изобилия инструментов «только для MS».
  6. И так далее...

Читать полностью »

Завершаем рассказ, начатый в первой части. Сегодня рассмотрим еще несколько граблей, на которые довелось наступить за годы использования SObjectizer-а в повседневной работе.

Продолжаем перечислять грабли

Народ хочет синхронности...

Акторы в Модели Акторов и агенты у нас в SObjectizer общаются посредством асинхронных сообщений. И в этом кроется одна из причин привлекательности Модели Акторов для некоторых типов задач. Казалось бы, асинхронность — это один из краеугольных камней, один из бонусов, поэтому пользуйся себе на здоровье и получай удовольствие.

Ан нет. На практике быстро начались просьбы сделать в SObjectizer возможность синхронного взаимодействия агентов. Очень долго я этим просьбам сопротивлялся. Но в конце-концов сдался. Пришлось добавить в SObjectizer возможность выполнить синхронный запрос от одного агента к другому.

Выглядит в коде это вот так:

Читать полностью »

Сможет ли Питон прожевать миллион запросов в секунду? - 1

Возможно ли с помощью Python обработать миллион запросов в секунду? До недавнего времени это было немыслимо.

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

Python-сообщество в последнее время уделяет много внимания производительности. С помощью CPython 3.6 за счет новой реализации словарей удалось повысить скорость работы интерпретатора. А благодаря новому соглашению о вызове (calling convention) и словарному кешу CPython 3.7 должен стать еще быстрее.

Для определенного класса задач хорошо подходит PyPy с его JIT-компиляцией. Также можно использовать NumPy, в котором улучшена поддержка расширений на Си. Ожидается, что в этом году PyPy достигнет совместимости с Python 3.5.

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

Читать полностью »

Глубинное обучение по особенностям заголовка и содержимого статьи для преодоления кликбейта - 1
Облако слов для кликбейта

TL;DR: Я добился точности распознавания кликбейта 99,2% на тестовых данных по особенностям заголовка и контента. Код доступен в репозитории GitHub.

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

В этой статье я постараюсь решить эти вопросы и вывести выявление кликбейта на новый уровень.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js