Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Thursday, 12 September 2024

Cканер кода SonarQube

Всем привет.

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

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

  • что такое SonarQube;
  • как установить этот инструмент на локальный компьютер;
  • как сканировать файлы проекта;
  • как провести анализ проекта в SonarQube.

В статье будет рассмотрена открытая версия для сообщества. SonarQube невероятно полезный инструмент, так что я с радостью поделюсь своими знаниями о нем.


Что такое SonarQube?

SonarQube - это платформа с открытым исходным кодом, разработанная SonarSource, для непрерывной оценки качества кода путем статического анализа.

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

Завершив сканирование кода, о чем будет рассказано далее, SonarQube формирует отчет, который можно посмотреть в GUI через браузер. Все обнаруженные проблемы представляют собой “интерактивные тикеты”, позволяющие писать к ним комментарии, делегировать их другим пользователям, открывать или закрывать и т. д.


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



SonarQube также объясняет суть проблемы при нажатии на соответствующую ссылку “Why is this an issue?” .


Tuesday, 1 February 2022

Оптимизация ELK стека.


Всем привет.

Как любая сложная система ELK стек нуждается в оптимизации своей работы, т.е. настроек по умолчанию. Для нормальной работы ELK стека приведенные ниже рекомендации по оптимизации работы Elasticsearch будут одинаково справедливы как для кластерной схемы так и без нее. Что же следует сделать?

1) Установить размер heap size.

Так как Elasticsearch написан на Java, то для работы необходимо настроить размер «кучи» (heap size).  В каталоге установки Elasticsearch имеется файл jvm.options, в котором уже указаны размеры, по умолчанию - это 1 Гб. Однако, для настройки рекомендуется указать новые параметры в файле каталога jvm.options.d, который находится там же.

-Xms16g

-Xmx16g

Пример выше использует минимальный Xms и максимальный Xmx размер heap size, равный 16 Гб. Для настройки данных параметров следует использовать следующие рекомендации:

- установите значения Xmx и Xms не более 50% от имеющейся физической памяти узла. Оставшуюся память Elasticsearch будет использовать для других целей. Чем больше heap size, тем меньше памяти используется под системные кеш. JVM и память: чем больше тем лучше? Не всегда.

Xmx & Xms <= 31Gb

- устанавите значение не более того значения, которое использует JVM для сжатия указателей, он же compressed object pointers. Данное значение составляет около 32 Гб. Стоит также отметить, что рекомендуется ограничивать heap size еще одним параметром JVM, а именно zero-based compressed oops (обычно размер около 26 Гб). 

2) Отключить подкачку.

Подкачка негативно сказывается на производительности и стабильности работы Elasticsearch, ведь система может выгрузить страницы JVM на диск.

Есть несколько вариантов работы с подкачкой:

1. Полное отключение подкачки. Перезапуск Elasticseach при этом не требуется.

sudo swapoff -a

2. Ограничение подкачки через значение vm.swappiness=1 для sysctl.

3. Использование mlockall для блокировки адресного пространства в оперативной памяти.

Чтобы включить mlockall в конфигурации Elasticseach elasticsearch.yml указываем для параметра bootstrap.memory_lock значение true:

bootstrap.memory_lock: true

Перезапускаем Elasticsearch и проверяем настройки через запрос к любому узлу:

curl -X GET "http://192.168.1.10:9200/_nodes?filter_path=**.mlockall&pretty"

Если перезапуск Elasticsearch завершился ошибкой вида:

[1] bootstrap checks failed

[1]: memory locking requested for elasticsearch process but memory is not locked

или проверка показывает, что данная настройка не применилась, необходимо сделать следующее в зависимости от способа установки:

1. Установите значение параметра MAX_LOCKED_MEMORY как unlimited в /etc/sysconfig/elasticsearch для rpm или /etc/default/elasticsearch для dep.

2. Если вы используете systemd для запуска Elasticsearch, то лимиты должны быть указаны через настройку параметра LimitMEMLOCK. Для этого выполните команду:

sudo systemctl edit elasticsearch

и укажите следующее значение:

[Service]

LimitMEMLOCK=infinity

Thursday, 2 April 2020

Java Web Start в клиент-банке.

Всем привет.

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

Java-апплет - прикладная программа, чаще всего написанная на языке программирования Java в форме байт-кода. Java-апплеты выполняются в веб-браузере с использованием виртуальной Java машины (JVM). Апплеты используются для предоставления интерактивных возможностей веб-приложений, которые не могут быть предоставлены HTML. Так как байт-код Java платформо-независим, то Java-апплеты могут выполняться с помощью плагинов браузерами многих платформ, включая Microsoft Windows, UNIX, Apple Mac OS и GNU/Linux. 

Почему Java используется в интернет клиент-банке?

Использование технологий Java необходимо в интернет-банкинге для выполнения операций, связанных с криптографией, и взаимодействия с защищенными токенами (например, Secure Token-337 производства компании Автор) для хранения персональных сертификатов. Java - это универсальная кросс-платформенная технология, которая работает на всех современных операционных системах и браузерах, и обеспечивает широкие возможности и высокий уровень безопасности, поэтому её использование в системах класса клиент-банк является обоснованным и необходимым. 

Технологии Java используются для операций, связанных с ЭЦП: 
  • генерация нового закрытого ключа; 
  • сертификация нового ключа старым действующим; 
  • подписание документов, заявок, почтовых сообщений; 
  • вход в систему (опционально, если включено администратором); 
  • смена номера телефона для OTP SMS (опционально, если включено администратором); 
  • системные операции с токеном (смена пин-кода, форматирование, удаление старых ключей). 

Т.е. теперь вы понимаете что чей бы ни был клиент-банк, но Java он хочет для работы с такими ЭЦП. С другой стороны нам  неприятно наблюдать как многие веб-браузеры отказываются от поддержки Java. 

Sunday, 15 December 2019

Советы по безопасности на рабочем месте.

Всем привет.

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

Используйте двухфакторную аутентификацию где только возможно. Если ваш персонал использует электронные ключи заставьте их эти ключи правильно хранить (сейф или забирать с собой).

Не сохраняйте пароли в web-браузерах.

Чаще используйте режим "Инкогнито" и завершение работы по меню "Выход" в web-браузерах.

Не открывайте PDF-документы в web-браузерах. Перенастройте их открытие на SumartaPDF, Foxit или STDUViewer.

Включите AdBlock и NoScript, отключите Flash и Java в web-браузерах если это не использует прикладная задача.

Не обсуждайте рабочие вопросы в мессенджерах типа Viber и Telegram. Тем более не пересылайте в этих мессенджерах пароли и важные документы в открытом виде. Периодически удаляйте историю.

Не подключайте личные смартфоны к рабочим ПК даже для подзарядки. Используйте для этого автономные зарядные устройства или павербанки.

Берегите себя.


Tuesday, 26 February 2019

Make Solution - те що вам треба!

Всім привіт.

Кажуть що Програмування - одна з найцінніших навичок для кар'єрного зростання, саморозвитку і створення чогось нового.

Ви вирішили стати розробником!

Незалежно від вибору мови або методу навчання, вам слід почати з самого початку. Треба починати з самих основ і бути наполегливим. Обраний напрямок в навчанні буде залежати більшою мірою від того, чому саме ви хочете навчитися програмувати і скільки часу ви готові приділяти цьому процесу. Зрозуміло ви можете записатися на професійні курси. Або якщо ви хочете створювати ігри і веб-сайти кращим вибором будуть інтерактивні курси. Безкоштовні онлайн тренінги і проекти можуть допомогти вам в написанні першої програми. Потрібно знайти потрібне джерело в залежності від мови програмування. Це гарна відправна точка, однак подальше навчання вам потрібно взяти на себе. Якщо ви застрягнете на якійсь проблемі або вам потрібно знайти відповідь на своє питання, не варто забувати про довідники та форуми.

А з якої мови почати?

Я думаю що перша мова має бути простою і популярною на ринку. Такою мовою є Python. Зазвичай його вибирають в якості першої мови програмування. Код програми на Python читабельний. Вам навіть не потрібно бути програмістом, щоб в загальних рисах зрозуміти, що відбувається в програмі. Через нескладний синтаксис Python вам знадобиться менше часу для написання програми, ніж, наприклад, на Java. Величезна база бібліотек, яка заощадить вам купу сил, нервів і часу. Python є високорівневою мовою. А значить, вам не потрібно особливо думати про осередки пам'яті і про те, що там розмістити. Python - це мова широкого призначення.

PHP - ще один дуже популярна мову. Вона навіть простіше, ніж Python. Дуже легко знайти собі ментора або рішення якої-небудь проблеми на форумі. Все тому, що в світі існує величезна кількість PHP-програмістів різного рівня. У PHP немає нормального імпорту, є безліч варіантів вирішення однієї і тієї ж задачі. Це іноді ускладнює навчання. І PHP заточений виключно під web.

Java може стати непоганим вибором для новачка. Ця мова популярніша, ніж Python, але і трохи складніше. Зате інструменти для розробки набагато краще опрацьовані. Варто лише порівняти Eclipse і IDLE. Після Java вам буде простіше перейти до роботи з низькорівневими мовами програмування.

Ruby - хороший вибір в якості другої мови, але не першої.

JavaScript - дуже проста мова, але нічому доброму він вас не навчить. А завдання першої мови програмування все-таки навчити вас чогось правильному, задати якусь логіку.

Saturday, 16 December 2017

Фишка Windows Script Host.

Всем привет.


Слегка подзабытый сервер сценариев Windows Script Host имел очень полезные фишки. Одна из них это выполнение сценариев написанных на разных скриптовых языках.


WSH позволяет комбинировать все установленные в системе скриптовые языки в одном файле с расширением .wsf. Например, VBScript предоставляет функцию, отображающую окошко для ввода текста (InputBox), и она вам очень нужна, но скрипт свой вы пишете на JScript, который такой функцией не располагает. Решается проблема очень просто - создать файл wsf со следующим содержанием (на примере VBScript, JScript и PerlScript):


<?xml version="1.0" encoding="windows-1251"?>
<job id="MyTestJob">
    <script language="VBScript">
    <![CDATA[
        Function WSHInputBox(Message, Title, Value)
            WSHInputBox = InputBox(Message, Title, Value)
        End Function
    ]]>
    </script>
    <script language="JScript">
    <![CDATA[
      //Ваш код на JS
      var name = WSHInputBox("Enter your name:", "Query", "Pypkin");
      WScript.Echo("Имя: " + name);
    ]]>
    </script>
    <script language="PerlScript">
    <![CDATA[
      use strict;
      our $WScript;
      use LWP::UserAgent;
      sub do_request
      {
        my $lwp = new LWP::UserAgent;
        my $response = $lwp->get($_[0]);
        if($response->is_success)
        {
          return $response->headers->as_string;
        }
        else
        {
          return $response->error_as_HTML;
        }
      }
    ]]>
    </script>
</job>


Thursday, 20 July 2017

Удивительный Javascript в играх.

Привет.

Javascript развивается так стремительно, что начинает оказывать очень сильное воздействие на процесс разработки web-приложений. Создается впечатление, что его возможности безграничны и их реализация зависит только от мастерства разработчика.

Ниже представлены несколько игр, которые разработаны целиком на Javascript. Еще пару лет назад для создания таких приложений нужно было использовать Flash со всеми его недостатками. А сегодня нужен всего лишь браузер, чтобы оценить великолепие решений (лучше всего подходит браузер Chrome, так как в нем реализован самый лучший механизм JavaScript на сегодняшний день.)

Такие приложения помогают представить, на что способен JavaScript и отбросить в сторону все сомнения о его функциональности и перспективности в сфере разработки веб-проектов.
Итак, позвольте представить!

Browser Pong

Browser Pong
Browser Pong - игра в пинг-понг развернутая на весь экран, а в качестве игровых элементов выступают окна браузера. Выглядит весьма впечатляюще и стоит посмотреть. Вы могли представить, чтобы окнами браузера можно было играть? C помощью JavaScript можно реализовать и такое чудо!

Saturday, 21 January 2017

Почему же Python?

Всем привет.

В прошлом году я вам говорил про удивительный Scratch и не только. Так вот "не только" относилось к Arduino. Но сегодня речь не о нем. Так получилось что изучая новую для меня тему "Визуализация данных" я наступил на другой не менее популярный язык - Python.

Почему же Python? Язык без компилятора и IDE без лицензии? 

Начать использовать Python есть много причин. Язык Python невероятно эффективен: ваши программы делают больше, чем многие другие языки, в  меньшем объеме кода. Синтаксис Python также позволяет писать «чистый» код. Ваш код будет легко читаться, у вас будет меньше проблем с  отладкой и  расширением программ по сравнению с  другими языками.

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

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

Все еще сомневаетесь? Python используют Goоgle, NASA и Pixar. Неплохая кампания, правда.)

Чтобы убедиться насколько это серьезно предлагаю вам анонс из трех книг про Python.

Мэтиз Эрик
Изучаем Python. Программирование игр, визуализация данных, веб-приложения. СПб.: Питер, 2017. 496 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-496-02305-4.
Книга «Изучаем Python» — это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и  многое другое). В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на  практике, работая над тремя крупными проектами: создадите собственную «стрелялку» с  нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. 

Уэс Маккинли
Python и анализ данных/ Пер. с англ. Слинкин А. А. - М.: ДМК Пресс, 2015. - 482 с.: ил. ISBN 978-5-97060-315-4.
Эту книгу можно рассматривать как современное практическое введение в разработку научных приложений на Python, ориентированных па обработку данных. Описаны те части языка Python и библиотеки для него, которые необходимы для эффективного решения широкого круга аналитических задач: интерактивная оболочка IPython, библиотеки NumPy и pandas, библиотека для визуализации данных matplotlib и др.

Ноа Гифт и Джереми М. Джонс
Python в системном администрировании UNIX и Linux
Перевод А. Киселева – Пер. с англ. – СПб.: Символ Плюс, 2009. – 512 с., ил. ISBN 978 5 93286 149 3.
Книга «Python в системном администрировании UNIX и Linux» демонстриру ет, как эффективно решать разнообразные задачи управления серверами UNIX и Linux с помощью языка программирования Python. Каждая глава посвяще на определенной задаче, например многозадачности, резервному копированию данных или созданию собственных инструментов командной строки, и предла гает практические методы ее решения на языке Python. Среди рассматривае мых тем: организация ветвления процессов и передача информации между ними с использованием сетевых механизмов, создание интерактивных утилит с графическим интерфейсом, организация взаимодействия с базами данных и создание приложений для Google App Engine. Кроме того, авторы книги соз дали доступную для загрузки и свободно распространяемую виртуальную ма шину на базе Ubuntu, включающую исходные тексты примеров из книги и спо собную выполнять примеры, использующие SNMP, IPython, SQLAlchemy и многие другие утилиты.

Wednesday, 4 May 2016

Поддержка Java в web-браузерах.

Всем привет.

Недавно я думал-гадал что только с поддержкой Flash случаются проблемы в web-браузерах. Конкретно я писал об этом в Google Chrome. Но недавно столкнулся с еще одной проблемой.

Это поддержка Java. Удивлены? Я тоже. Тем более что обнаружилось это в системах клиент-банк ряда коммерческих банков. Акцентирую - ряда банков! То есть код клиент-банка использует JVM (Java Virtual Machine)  и требует поддержку Java-плагина в нашем web-браузере. Но вот добиться этого оказалось нелегко по ряду причин. 


Да, можно быстренько установить JRE (Java Runtime Environment) и думать что у тебя все для работы есть. Однако тут начинаются тонкости. Первая из них, это то что на вашей ОС могут жить несколько версий JRE. Им хорошо, а вот web-браузеру не очень. Клиент-банк не понимает что кроме той версии что требуется установлена еще одна версия Java. Проверить что творится у вас можете запустив контрольный Java апплет на Панели управления вашей Windows. 



Если у вас тут более одной строки - ждите проблем. Разумеется разработчик самой Java рекомендует удалить более старые версии. Непонятно только почему  же установка новой версии не удаляет старую автоматом? Можете проверить свою версию Java поддержку вашим web-браузером здесь. Это мой вариант теста.

Версия на печать

Популярное