Как стать автором
Обновить
3
0
Евгений Баулин @raguanec

Java-разработчик

Отправить сообщение

Снежинки в стилистике StarWars своими руками (upd. 2018)

Время на прочтение1 мин
Количество просмотров19K

A long time ago in a galaxy far, far away... И вот опять наступил конец года… декабрь… Думаете Антонио Эррера решил нас порадовать новыми паттернами снежинок, выполненных в стилистике StarWars? И вы абсолютно правы. В прошлом году Антонио сделал всего два паттерна с Поргами (кстати в подборку этого года они так же вошли).
Так что же Антонио придумал на этот раз?
Всего голосов 23: ↑20 и ↓3+17
Комментарии11

Что такое Method Handles в Java

Время на прочтение7 мин
Количество просмотров20K

1. Вступление


В этом туториале мы рассмотрим важный API, представленный в Java 7 и расширенный в новых версиях, java.lang.invoke.MethodHandles.



Мы узнаем, что такое method handles, как их создавать и использовать.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии11

Дзен и искусство поддержки чистого кода

Время на прочтение8 мин
Количество просмотров21K


Привет, Хабр!

Говорить о чистом коде можно бесконечно, но следующая статья Дэйва Николетта очень метафорична и, надеемся, действительно достойна перевода. Пусть и немного «назидательна», о чем автор заранее преуведомляет читателей в оригинале статьи.

Приятного чтения.
Читать дальше →
Всего голосов 46: ↑46 и ↓0+46
Комментарии18

Страдать на работе — не обязательно

Время на прочтение5 мин
Количество просмотров17K
Смотрел я тут на днях выступление Kate Gregory на конференции Pacific++ 2018.

Видео выступления


Кейт — хороший программист и отличный спикер. Сам доклад поднимает много интересного о программировании на С++ и программировании вообще (стоит посмотреть). Но больше всего меня зацепила одна высказанная ею (буквально вскользь) мысль. Кейт удалось очень кратко и по делу обозначить мотивацию программистов. Звучала она так: «Программист во время работы стремится максимизировать своё счастье». Это звучит банально, но ведь так оно и есть.

Мы можем говорить, что болеем за проект, заказчика, компанию, человечество и мир во всём мире (и это даже может быть правдой). Но давайте будем честны. Мы люди и, как все люди, в первую очередь стремимся максимизировать своё счастье — глобально во всей жизни, стратегически в карьере, тактически в текущем проекте и мелочно здесь и сейчас, при написании вот этой функции, вот этой строки кода. Да, мы это делаем и было бы хорошо разобраться, что делает нас более счастливыми, а что — менее. Это позволит нам лучше понимать коллег, подчинённых да и самих себя.

Сразу хочу вынести за скобки вопросы оплаты труда, условий работы, начальства, коллектива и прочего. Если вы работаете там, где работаете — то всё это вас примерно устраивает. Давайте сфокусируемся на том, что делает нас счастливыми и несчастными при непосредственной работе над кодом.
Всего голосов 24: ↑22 и ↓2+20
Комментарии14

Junior и методы рационального мышления

Время на прочтение3 мин
Количество просмотров17K

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


Методы рационального мышления (здесь) — это вопросы, которые стоит задавать на каждом этапе обдумывания проблемы. С их помощью можно быстрее прийти к правильному решению и эффективнее построить свою работу.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии10

Структуры данных для самых маленьких

Время на прочтение22 мин
Количество просмотров337K
James Kyle как-то раз взял и написал пост про структуры данных, добавив их реализацию на JavaScript. А я взял и перевёл.

Дисклеймер: в посте много ascii-графики. Не стоит его читать с мобильного устройства — вас разочарует форматирование текста.


Читать дальше →
Всего голосов 91: ↑87 и ↓4+83
Комментарии51

Индексы в PostgreSQL — 10

Время на прочтение11 мин
Количество просмотров27K

В прошлых статьях мы рассмотрели механизм индексирования PostgreSQL и интерфейс методов доступа, а также хеш-индексы, B-деревья, GiST, SP-GiST, GIN, RUM и BRIN. Нам осталось посмотреть на индексы Блума.

Bloom


Общая идея


Классический фильтр Блума — структура данных, позволяющая быстро проверить принадлежность элемента множеству. Фильтр очень компактен, но допускает ложные срабатывания: он имеет право ошибиться и счесть элемент принадлежащим множеству (false positive), но не имеет права сказать, что элемента нет в множестве, если на самом деле он там присутствует (false negative).

Фильтр представляет собой битовый массив (называемый также сигнатурой) длиной m бит, изначально заполненный нулями. Выбираются k различных хеш-функций, которые отображают любой элемент множества в k битов сигнатуры. Чтобы добавить элемент в множество, нужно установить в сигнатуре каждый из этих битов в единицу. Следовательно, если все соответствующие элементу биты установлены в единицу — элемент может присутствовать в множестве; если хотя бы один бит равен нулю — элемент точно отсутствует.

В случае индекса СУБД мы фактически имеем N отдельных фильтров, построенных для каждой индексной строки. Как правило, в индекс включаются несколько полей; значения этих полей и составляют множество элементов для каждой из строк.

Благодаря выбору размера сигнатуры m, можно находить компромисс между объемом индекса и вероятностью ложного срабатывания. Область применения Блум-индекса — большие, достаточно «широкие» таблицы, запросы к которым могут использовать фильтрацию по любым из полей. Этот метод доступа, как и BRIN, можно рассматривать как ускоритель последовательного сканирования: все найденные индексом совпадения необходимо перепроверять по таблице, но есть шанс вовсе не рассматривать значительную часть строк.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии12

Тяжелая терапия: лекарство от палева для MacOS

Время на прочтение4 мин
Количество просмотров8.4K
Вы скажете, что тут и из коробки все отлично и вроде все гениально, вплоть до автогенерации такого пароля для web-сайтов, который даже зрительно не воспринимается с пятой попытки, однако, представим себе, что для нас важно защититься не только от повседневных хакеров, но и от самих разработчиков системы.
Читать дальше →
Всего голосов 41: ↑30 и ↓11+19
Комментарии7

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Время на прочтение6 мин
Количество просмотров195K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?
Всего голосов 99: ↑96 и ↓3+93
Комментарии41

Ну и куда теперь девать эти двигатели?

Время на прочтение6 мин
Количество просмотров132K
Недавняя публикация о возрождении и развитии двигателя SSME (RS-25) вызвала в ЖЖ наплыв лунных конспирологов в комментариях — судьбу двигателя шаттла они сравнивали с F-1 от Saturn V. Так что сегодня мы сыграем в игру «почувствуй себя руководителем Rocketdyne» и поговорим об извилистом жизненном пути технологий.


Двигатели F-1 и J-2 ракеты Saturn V в музее
Всего голосов 63: ↑62 и ↓1+61
Комментарии234

Apache Kafka: обзор

Время на прочтение12 мин
Количество просмотров359K
Привет, Хабр!

Сегодня мы предлагаем вам сравнительно краткую, но при этом толковую и информативную статью об устройстве и вариантах применения Apache Kafka. Рассчитываем перевести и выпустить книгу Нии Нархид (Neha Narkhede) et. al до конца лета.


Приятного чтения!
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии19

Team Leader. Быть или не быть, вот в чем вопрос

Время на прочтение6 мин
Количество просмотров24K

image


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

Читать дальше →
Всего голосов 52: ↑43 и ↓9+34
Комментарии53

Как научиться учиться. Часть 3 — тренируем память «по науке»

Время на прочтение5 мин
Количество просмотров45K
Мы продолжаем рассказ о том, какие техники, подтвержденные научными экспериментами, могут помочь в учебе в любом возрасте. В первой части мы обсуждали очевидные рекомендации вроде «грамотного распорядка дня» и прочих атрибутов здорового образа жизни. Во второй части речь шла о том, как дудлинг помогает лучше фиксировать материал на лекции, а рассуждения о предстоящем экзамене позволяют получить более высокую оценку.

Сегодня говорим о том, какие советы ученых помогают запоминать информацию эффективнее, а забывать важные сведения — медленнее.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии16

Как становятся менеджерами: 4 карьерные истории с разбором и выводами

Время на прочтение8 мин
Количество просмотров46K
В предыдущей статье «Почему люди не растут: чем больше вариантов роста, тем хуже», мы договорились продолжить препарирование этой темы и перейти к ответу на вопрос «А как все-таки расти?»

Особенно, видимо, вопрос зацепил тех, кто сейчас работает больше всех и начинает что-то подозревать…

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

История 1: не пофигическая


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

Как все запущено

Слава Панкратов, бизнес-тренер, управляющий партнер Школы менеджеров Стратоплан.

Моя схема получения первой менеджерской позиции – «Карьерный лифт»: мой менеджер стал директором новой компании и позвал меня на позицию руководителя отдела тестирования ПО. Я учился на 4 курсе института (первая вышка), стационар, 22 года.
Читать дальше →
Всего голосов 41: ↑26 и ↓15+11
Комментарии97

Не хочешь депозит 6,5? Расчет нормы доходности акций и полной доходности с помощью Moex API и парсера дивидендов

Время на прочтение5 мин
Количество просмотров8.4K

Немного о тексте ниже




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

Если инвестор очень долгосрочный и портфель составлен правильно, то он может покупать бумаги в любое время и по любой цене, 10-тилетний временной промежуток сгладит разницу за счет див.выплат (конечно мы должны искать ценные бумаги с постоянным денежным потоком).
Рассмотрим ситуацию, в которой вам надо найти ценные бумаги (далее я буду подразумевать конкретный тип бумаг — акции, с облигациями все понятно, там купон), которые приносит в виде дивидендов денежный поток, удовлетворяющий вашему финансовому плану. Самый простой пример — найти акцию, денежный поток которой превышает значение инфляции, т.е. 4% (по данным Росстата)
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии10

«Хочешь быть системным архитектором? Там только свет и чистота…»

Время на прочтение6 мин
Количество просмотров57K


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

— Рома, я задолбался быть инженером. Всё, ухожу!
Он ласково улыбнулся и сказал:
— Хорошо. Будешь системным архитектором. Там только свет и чистота. Выспись и приходи, расскажу, что будешь делать.

Я был молодым и наивным. Выспался и пришёл. Тогда начал постепенно становиться архитектором (сейчас стал), и могу смело сказать: света и чистоты тут столько же, сколько в буднях инженера. А вот ответственности больше. Поэтому — нет, не надо быть архитектором, если вы не понимаете, на что идёте.

Но! Если понимаете — это будет очень увлекательное приключение.
Читать дальше →
Всего голосов 73: ↑70 и ↓3+67
Комментарии111

Stream API & ForkJoinPool

Время на прочтение7 мин
Количество просмотров35K
Продолжаем серию полезностей, которыми мы делимся с вами. Теперь уже вновь по Java.

Если вы уже знакомы со Stream API и использовали его, то знаете, что это удобный способ обработки данных. С помощью различных встроенных операций, таких как map, filter, sort и других можно преобразовать входящие данные и получить результат. До появления стримов разработчик был вынужден императивно описывать процесс обработки, то есть создавать цикл for по элементам, затем сравнивать, анализировать и сортировать при необходимости. Stream API позволяет декларативно описать, что требуется получить без необходимости описывать, как это делать. Чем-то это напоминает SQL при работе с базами данных.



Стримы сделали Java-код компактнее и читаемее. Еще одной идеей при создании Stream API было предоставить разработчику простой способ распараллеливания задач, чтобы можно было получить выигрыш в производительности на многоядерных машинах. При этом нужно было избежать сложности, присущей многопоточному программированию. И это удалось сделать, в Stream API есть методы BaseStream::parallel и Collection.parallelStream(), которые возвращают параллельный стрим.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Переход на embedded PostgreSQL в unit-тестах

Время на прочтение13 мин
Количество просмотров37K

В приложениях, работающих с базами данных, естественным образом возникает потребность в тестах, которые проверяют корректность результатов выполнения запросов. На помощь приходят различные встроенные (embedded) базы данных. В этой статье я расскажу о том, как мы перевели unit-тесты с HSQLDB на PostgreSQL: зачем это затеяли, с какими трудностями столкнулись и что нам это дало.

Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии49

Как стать Oracle Certified Professional Java SE 8 Programmer

Время на прочтение7 мин
Количество просмотров94K
В этой статье речь снова пойдет о сертификации. Не так давно я рассказывал о процессе получения сертификата от компании Google для Android разработчиков. Почитать об этом можно вот здесь. В статье я периодически приводил сравнение с процессом получения сертификатов от Oracle. Немного подумав, я решил раскрыть эту тему подробнее, благо сертификат от Oracle я получил полгода назад и еще не все забыл. Естественно, на хабре уже не раз описывали этот процесс. Например, достаточно подробные описания можно найти тут и тут. Однако, указанные статьи были написаны несколько лет назад, и затрагивают Java SE 7. Я же постараюсь сосредоточиться на особенностях экзамена по Java SE 8 и в принципе обновить информацию по процессу получения сертификата. Тех, кому все еще интерсено, прошу под кат.
Поехали
Всего голосов 19: ↑18 и ↓1+17
Комментарии9

Web Scraping с помощью python

Время на прочтение7 мин
Количество просмотров561K

Введение


Недавно заглянув на КиноПоиск, я обнаружила, что за долгие годы успела оставить более 1000 оценок и подумала, что было бы интересно поисследовать эти данные подробнее: менялись ли мои вкусы в кино с течением времени? есть ли годовая/недельная сезонность в активности? коррелируют ли мои оценки с рейтингом КиноПоиска, IMDb или кинокритиков?
Но прежде чем анализировать и строить красивые графики, нужно получить данные. К сожалению, многие сервисы (и КиноПоиск не исключение) не имеют публичного API, так что, приходится засучить рукава и парсить html-страницы. Именно о том, как скачать и распарсить web-cайт, я и хочу рассказать в этой статье.
В первую очередь статья предназначена для тех, кто всегда хотел разобраться с Web Scrapping, но не доходили руки или не знал с чего начать.

Off-topic: к слову, Новый Кинопоиск под капотом использует запросы, которые возвращают данные об оценках в виде JSON, так что, задача могла быть решена и другим путем.
Читать дальше →
Всего голосов 40: ↑31 и ↓9+22
Комментарии48

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность