Самоуправляемые виртуальные инфраструктуры: VMware обновляет vRealize Suite

Автор: admin от 7-04-2018, 21:35, посмотрело: 31

На прошлой неделе VMware объявили об обновлении своей платформы управления облаком vRealize Suite. Оно выйдет 4 мая этого года, направлено на упрощение работы с SDDC (программно-определяемым ЦОД) и включает ряд новых функций.



Подробнее о некоторых из них расскажем под катом.



Самоуправляемые виртуальные инфраструктуры: VMware обновляет vRealize Suite

Категория: Программирование

 

Разбор задачек от Одноклассников на JPoint 2018

Автор: admin от 7-04-2018, 21:35, посмотрело: 33

Алоха!



Самым, наверное, интересным событием на этой неделе в мире Java стала конференция JPoint, которая прошла в Центре Международной Торговли в Москве. Одноклассники предложили посетителям тоже поучаствовать в разработке самой высоконагруженной системы на Java и помочь нашим разработчикам в решении практических задач, с которыми они сталкиваются в своей работе.



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

Категория: Программирование

 

Проверяй входящие данные. Исходная причина уязвимости и атаки на Cisco IOS

Автор: admin от 7-04-2018, 21:35, посмотрело: 44

Проверяй входящие данные. Исходная причина уязвимости и атаки на Cisco IOS


В пятницу 6 апреля 2018 началась мощная атака на оборудование Cisco.



Много пишут о том, что главная причина, по которой эта атака успешна, это открытые во внешние сети сервисные порты Cisco Smart Install.



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



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



Вы лишь можете заставить изменить эти значения с помощью каких либо ограничивающих использование приёмов. Чему многие будут не рады. «Защита от дурака» это один из примеров этих обязывающих ограничений.





Я хочу обратить внимание на корень самой уязвимости. В отчёте есть такая часть:

Категория: Программирование

 

Паттерны внедрения зависимостей. Часть 2

Автор: admin от 7-04-2018, 21:35, посмотрело: 33

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

Категория: Программирование

 

Мессенджеры, пора делать следующий шаг

Автор: admin от 7-04-2018, 05:55, посмотрело: 36

Мессенджеры, пора делать следующий шаг


В последние пару лет, мессенджеры изменили привычный ход потребления контента, whatsapp, telegram, viber, простите. Теперь весь контент сосредоточен в них, аудитория растет дикими темпами, они многое изменили, но самое главное — им еще предстоит — способ доставки контента, а если точнее — P2P CDN.

Почему P2P CDN это необходимый шаг и как все может работать (и что это вообще такое?!) — всё это рассмотрим в посте.

Категория: Программирование

 

Что будет если объединить ArrayList и LinkedList?

Автор: admin от 7-04-2018, 05:55, посмотрело: 30

Приветствую вас!

После изучения коллекций, а именно такие реализации List, как ArrayList и LinkedList, возникла идея, а почему бы не объединить эти структуры данных в одну и посмотреть, что из этого получится.



Зачем это нужно?




  • Проблема ArrayList — у него есть начальный размер по умолчанию DEFAULT_CAPACITY или заданный размер initialCapacity, при превышении этого размера, создается новый массив большего размера, при этом туда копируются данные из старого массива, что по времени очень затратно и именно это дает в наихудшем случае алгоритмическую сложность O(n)

  • Проблема LinkedList — здесь наоборот, добавить новый элемент, это всего лишь добавить новую связь (создать еще одну Node и добавить ссылку на неё), но операция получения элемента по индексу очень затратна, т.к. нужно будет пройтись по всему списку от начала, что очень затратно и дает O(n)



Решение



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

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

Что будет если объединить ArrayList и LinkedList?

Категория: Программирование

 

Из Балтийского моря в Индийский океан

Автор: admin от 7-04-2018, 05:55, посмотрело: 31

Рассказ пойдет о том, как началось мое путешествие с острова Котлин на остров Джаву.

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

На мою долю выпало деcктопное приложение по тестированию основного софта. Оно написано на многообещающем языке Kotlin (на время работы была версия 1.1.), но унификация есть унификация. В связи с этим хочу поделиться парой моментов, с которыми столкнулся в ходе работы, а также впечатлениями, которые на меня произвел Kotlin, так как я с ним работал впервые. Стоит отметить, что информации по данному языку довольно много, как и различных его сравнений с Java, я лишь хочу поделиться своими впечатлениями.

Категория: Программирование

 

Spring Boot. Фоновые задачи и не только

Автор: admin от 7-04-2018, 05:55, посмотрело: 37

Введение


В данном туториале я хочу привести пример приложения для отправки email-ов юзерам, основываясь на дате их рождения(например с поздравлениями), используя аннотацию Scheduled. Я решил привести данный пример, т к по моему мнению он включает в себя довольно многие вещи, такие как работа с базой данных(в нашем случает это PostgreSQL), Spring Data JPA, новый java 8 time api, email-сервис, создание фоновых задач и небольшую бизнес-логику при этом оставаясь компактным. Сегодня интернет пестрит огромным множеством туториалов которые обычно сводятся к тому как наследоваться от CrudRepository, JpaRepository и тд. Туториал расчитан на то, что вы уже смотрели хотя бы некоторые из них и имеете представление о том, что такое Spring Boot. Я же постораюсь показать пример приложения, которое более обширно показывает его возможности и как с ним работать.

Создание проекта


Идем на Spring Initializr.

Добавляем зависимости:

1. PosgreSQL — в качестве базы данных
2. JPA — доступ к базе
3. Lombok — для удобства и избавления от бойлерплейт кода(не придётся писать геттеры, сеттеры и тд самим), подробнее тут
4. Mail — собственно для работы и отправки email-ов, оф. документация

Указываем группу и артефакт, к примеру com.application и task. Скачиваем и распаковываем проект, затем открываем его в среде разработки, у меня это Intellij IDEA.

База данных


Теперь устанавливаем себе PostgreSQL. Далее создаём базу данных с юзером и паролем. Если у вас линукс, то можете сделать это следующими командами:

sudo -u postgres createuser <username>
sudo -u postgres createdb <dbname>
$ sudo -u postgres psql
psql=# alter user <username> with encrypted password '<password>';
psql=# grant all privileges on database <dbname> to <username> ;

На windows это можно сделать с помощью pgAdmin или его альтернатив.

Категория: Программирование

 

Never Fail Twice, или как построить мониторинговую систему с нуля

Автор: admin от 7-04-2018, 05:55, посмотрело: 34

У нас было 2 виртуальные машины, 75 сайтов, десятки тысяч машин для мониторинга, тысячи метрик, две базы данных и одна очередь ActiveMQ, Python и целое множество библиотек всех сортов и расцветок, pandas, а также numpy, dash, flask, SQL Alchemy. Не то чтобы это был необходимый запас для системы, но если начал собирать компоненты, становится трудно остановиться. Единственное, что вызывало у меня опасение — это javascript. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем JS зомби. Я знал, что рано или поздно мы перейдем и на эту дрянь.



Never Fail Twice, или как построить мониторинговую систему с нуля

Категория: Программирование

 

Learn OpenGL. Урок 4.10 — Инстансинг

Автор: admin от 6-04-2018, 20:40, посмотрело: 32

Learn OpenGL. Урок 4.10 — Инстансинг

Инстансинг



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

Категория: Программирование