10 языков программирования для изучения в 2018 году

Вышло ежегодное исследование TIOBE Index for January 2018, где определены самые популярные языки программирования 2018 года. Рассказываем, какие языки вошли в топ-10, в какой сфере они применяются и какие задачи выполняют. Опытные разработчики пройдут мимо — ничего интересного, а джуниоры определят интересную сферу и выберут перспективный язык для изучения. Дерзайте!


Читать дальше →

One-cloud — ОС уровня дата-центра в Одноклассниках


Алоха, пипл! Меня зовут Олег Анастасьев, я работаю в Одноклассниках в команде Платформы. А кроме меня, в Одноклассниках работает куча железа. У нас есть четыре ЦОДа, в них около 500 стоек более чем с 8 тысячами серверов. В определенный момент мы поняли, что внедрение новой системы управления позволит нам более эффективно загрузить технику, облегчить управление доступами, автоматизировать (пере)распределение вычислительных ресурсов, ускорить запуск новых сервисов, ускорить реакции на масштабные аварии.


Что же из этого получилось?

Читать дальше →

Как я чинил интерактивный логин, или Что там в кишках у //chrome/test/ChromeDriver?

Эта статья возникла из-за одной моей ошибки и двух багов — по одному в Chromium Headless и Chrome Driver. В результате пришлось собрать всё это из исходников (в статье есть подробнейшая инструкция), отладить цепочку взаимодействия Selenium<->ChromeDriver<->Chromium в отладчике IntelliJ IDEA и Microsoft Visual Studio, покопаться в Java, C++ и JS.

Статья будет интересна тем, кто хочет понять, чем им грозит переход на Selenium + Headless Chrome и как с этим жить. А также всем, кто просто хочет немного поглумиться над несчастным быдлокодером.

Под катом есть пачка скриншотов (трафик!).

Кстати, всё это можно было бы сделать скринкастом — но нельзя, потому что время компиляции C++ необычайно долгое. Вместо этого тут будут скриншоты для привлечения внимания.

Вначале напомню названия участвующих продуктов. Их три штуки:

  • Chromium — это браузер. Небрендированная версия Google Chrome, без автообновлений, анальных следящих зондов, но и без несвободных компонентов типа кодеков.
  • Chromium ChromeDriver — это часть Chromium, которая отвечает за управление им с помощью внешних инструментов.
  • Selenium и его Selenium Chrome Driver — эта штука предоставляет Java API для управления Хромиумом. Джава тут не принципиальна, на JavaScript и Puppeteer было бы то же самое.
  • ...Далее...

[Из песочницы] Привет, мир или рождение 500-метровой звезды программирования

Привет, мир!


Всем привет. Меня зовут Илья, я живу во Владивостоке и моё хобби — программирование.Сразу хочу сказать, что мне 15 18 лет (я не уверен, можно ли размещать несовершеннолетним свои статьи на Хабре). Мой никнейм — Скарамуш, единственный, но, к сожалению, весьма повторимый (даже здесь его кто-то успел занять). Почему Скарамуш? Да потому что так называется моя любимая книга, написанная английским мастером пера Рафаэлем Сабатини. Главный герой книги — Андре-Луи Моро, гордо несущий по жизни роль Скарамуша (вообще Скарамуш — это один из персонажей классической итальянской комедии, хитрый малый, вечно плетущий интриги), является человеком остроумным, находчивым, решительным и ловким. Я такой же. Наверное. (Особенно ловок я был вчера, когда разбил кружку об унитаз. Даже не спрашивайте, что я делал).
Читать дальше →

QueryDSL: Предикаты

QueryDSL Predicate — это мощный и чрезвычайно гибкий инструмент для работы с БД и просто подарок для Java-разработчиков, которые не очень хорошо разбираются в SQL (или совсем не разбираются), поскольку предикаты позволяют работать с БД при помощи привычного объектного представления сущностных зависимостей.



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

Как я искал зависимости через include файлы на java

Доброго времени суток. Сегодня расскажу о том как выполнить часть работ по сертификации кода по требованиям РД ФСТЭК(контроль отсутствия недкларированных возможностей). В требованиях по статическому анализу есть требование контроля компиляции файлов или ответить на вопрос все ли файлы компилируются в объектные файлы и есть ли файлы которые не компилируются. Для этого составим списки файлов cpp, c, h. Для этого зайдем в папку с исходниками и выполним команду «find. -iname *.cpp», «find. -iname *.c», «find. -iname *.o» запишем выдачу в файлы «c_cpp_files.txt» и «h_files.txt».
Читать дальше →

[Из песочницы] Тестирование с помощью JUnit 5 на Kotlin

В этой статье будут рассмотрены основные возможности платформы JUnit 5 и приведены примеры их использования на Kotlin. Материал ориентирован на новичков в Kotlin и/или JUnit, хотя, возможно, и более опытные разработчики найдут интересные вещи.
Читать дальше →

Как использовать корутины Kotlin в Java


Не редкий случай встретить синхронный код там где его быть не должно. На этом маленьком примере я хочу показать как можно использовать корутины Kotlin в Java

Читать дальше →

К вопросу о принципах работы асинхронных решений

Предлагаем вашему вниманию отличное новогоднее чтение для программистов :) Статью Александра Чистякова ( alexclear ), которую тот написал, вдохновившись тезисами доклада Mons Anderson ( codesign ) на HighLoad++ 2017.

Александр Чистяков

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

Для того, чтобы классифицировать существующие решения, придумаем сначала оси координат. С точки зрения инженера-разработчика "синхронная" и "асинхронная" парадигмы основаны на абстракциях, различающихся как сложностью применения, так и «эффективностью» (что такое «эффективность», нам еще предстоит определить).

Осторожно, под катом жёсткий хардкор! Читать дальше →

Создание дистрибутивов для разных операционных систем в Java 9 и 10

В статье рассказывается о построении полноценных дистрибутивов для Windows, macOS и Linux стандартными средствами Java 9 и 10.

Дополняет ранее опубликованную статью об уменьшении размера дистрибутива, делая акцент не на модульности, а на особенностях создания дистрибутива для разных операционных систем.

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


Читать дальше →


Последние посты