Pull to refresh
-4
0
Евгений @afanasiy_nikitin

User

Send message

Как использовать Parquet и не поскользнуться

Reading time7 min
Views62K


О хранении данных в Parquet-файлах не так много информации на Хабре, поэтому надеемся, рассказ об опыте Wrike по его внедрению в связке со Spark вам пригодится.
В частности, в этой статье вы узнаете:

— зачем нужен “паркет”;
— как он устроен;
— когда стоит его использовать;
— в каких случаях он не очень удобен.

Читать дальше
Total votes 10: ↑10 and ↓0+10
Comments14

Как мы ломали Glusterfs

Reading time11 min
Views35K


История началась год назад, когда к нам пришёл наш друг, коллега и большой эксперт по энтерпрайз стораджам со словами: «Парни, у меня тут завалялась шикарная хранилка со всеми модными фичами. 90Tb». Особой необходимости мы в ней не видели, но, естественно, отказываться не стали. Настроили туда пару бекапов и на какое-то время благополучно забыли.

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

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

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

Из множества вариантов наш взгляд особенно зацепил Глустер, Гластер. Всё равно, как называть. Лишь бы результат был. Поэтому мы начали над ним измываться.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments20

Zero Downtime Deployment и базы данных

Reading time18 min
Views14K

image


В этой статье подробно объясняется, как решать проблемы, связанные с совместимостью баз данных при деплое. Мы расскажем, что может произойти с вашими приложениями на проде, если вы попытаетесь выполнить деплой без предварительной подготовки. Затем мы пройдемся по этапам жизненного цикла приложения, которые необходимы, чтобы иметь нулевое время простоя (прим. пер.: далее — zero downtime). Результатом наших операций будет применение обратно несовместимого изменения базы данных обратно совместимым способом.

Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments0

Регистрация и авторизация с помощью Spring Security на примере простого приложения

Reading time21 min
Views292K
Добрый день!

В этой статье будет рассмотрено создание простого веб приложения с использованием Spring Boot и Spring Security. В приложении будет реализована регистрация новых пользователей и авторизация, ограничение доступа к страницам сайта в зависимости от роли пользователя.
Главная цель статьи показать как можно ограничить доступ к различным страницам сайта для пользователей с разными ролями.

Что будет представлять из себя приложение


Сайт со следующими страницам:

  • страницы доступные всем пользователям: главная, регистрации и логина;
  • страница доступная для зарегистрированных пользователей: новости;
  • страница доступная для администратора.

Что будем использовать


  • JDK 8+;
  • Intellij Idea;
  • Spring (Spring Boot, Spring MVC, Spring Security);
  • Hibernate;
  • JSP;
  • PostgreSQL.
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments10

Моноиды, полугруппы и все-все-все

Reading time12 min
Views41K

Если ты на практике используешь ООП, то хорошо разбираешься в таких вещах, как «паттерны проектирования». А знаешь ли ты, что есть множество полезных паттернов, которые не укладываются в этот стандартный список? К сожалению, многие из них связаны с «функциональным программированием», которое, согласно легенде, сложное и заумное. Если десять раз сказать слово «моноид», можно вызвать Дьявола.


Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

Читать дальше →
Total votes 60: ↑57 and ↓3+54
Comments22

36 материалов о нейросетях: книги, статьи и последние исследования

Reading time8 min
Views115K
Что делать, если хочется побольше узнать про нейронные сети, методы распознавания образов, компьютерное зрение и глубокое обучение? Один из очевидных вариантов — подыскать для себя какие-либо курсы и начать активно изучать теорию и решать практические задачи. Однако на это придется выделить значительную часть личного времени. Есть другой способ — обратиться к «пассивному» источнику знаний: выбрать для себя литературу и погрузиться в тему, уделяя этому всего полчаса-час в день.

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

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments9

Андрей Ершов об эволюции Future в Java и Scala на jug.msk.ru

Reading time2 min
Views4.8K
31 августа 2017 года в офисе компании КРОК прошла встреча московского сообщества Java-разработчиков с участием Андрея Ершова, рассказавшего об эволюции базового примитива асинхронной разработки Future и его реализации в языках программирования Java и Scala.


Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments0

Зачем мне твои неизменяемые коллекции? Они же медленные

Reading time5 min
Views13K
Бывает так, что когда человек начинает писать на Kotlin, Scala или %language_name%, он делает манипуляции с коллекциями так, как привык, как “удобно”, как “понятнее” или даже “как быстрее”. При этом, разумеется, используются циклы и изменяемые коллекции вместо функций высшего порядка (таких как filter, map, fold и др.) и неизменяемых коллекций.

Эта статья — попытка убедить ортодоксов, что использование “этой вашей функциональщины” не влияет существенно на производительность. В качестве примеров использованы куски кода на Java, Scala и Kotlin, а для измерения скорости был выбран фреймворк для микробенчмаркинга JMH.

image
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments31

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time5 min
Views170K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Total votes 385: ↑339 and ↓46+293
Comments185

Функциональные паттерны при моделировании предметной области – анемичные модели и компоновка поведений

Reading time5 min
Views14K
Привет, Хабр! Не так давно в издательстве «Manning» вышла непростая, но долгожданная и выстраданная автором книга о функциональном моделировании предметных областей.



Поскольку у нас готовятся книги как по Scala, так и по паттернам предметно-ориентированного проектирования, опубликуем одну из статей сахиба Гоша об идеях, заложенных в его книгу, и спросим, насколько эта книга была бы вам интересна
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments8

Консоль в массы. Переход на светлую сторону. Bash

Reading time6 min
Views55K
keep-calm-and-bin-bash

Вступление


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

Мы добрались до самой интересной и увлекательной темы — это скрипты на bash. Когда вы запускаете терминал, внутри него работает специальная программа-оболочка — shell (англ) — интерпретатор команд. Shell понимает все команды, которые вы вводите с клавиатуры, и обрабатывает их. Также выводит сообщения об ошибках, следит за корректностью команд и их синтаксисом. Примером таких команд могут быть: сменить директорию, создать новую директорию, добавить текстовый файл, отредактировать текстовый файл, сохранить изменения и другие.
Total votes 69: ↑57 and ↓12+45
Comments108

Классические паттерны проектирования на Scala

Reading time14 min
Views37K
Об авторе:
Pavel Fatin работает над Scala plugin'ом для IntelliJ IDEA в JetBrains.

Введение



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

Содержание статьи составляет основу моего выступления на JavaDay конференции (слайды презентации).

Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments29

Нанимайте личность, а не набор навыков. Мои самые важные вопросы в собеседовании

Reading time4 min
Views76K

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


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


Есть куча гайдов, помогающих провести собеседование. Они содержат множество полу-осмысленных микро-советов по основам психологии. Или просто набор, возможно, осмысленных вопросов для проверки разных навыков. Я прочитал много таких гайдов, книжку про техники проведения собеседований, и даже прошел специальный тренинг.


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


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

Читать дальше →
Total votes 60: ↑38 and ↓22+16
Comments99

Патчим gnupg или пара RSA-32768 за 106 минут

Reading time10 min
Views15K
security

На самом деле патчим gnupg и libgcrypt…

Когда-то давным давно, чтобы использовать 8192 и 16384 RSA ключи я правил размер в keygen.c и размер SECMEM буффера по соседству. Дела давно минувших дней, теперь SECMEM вынесена в config.h и именуется SECMEM_BUFFER_SIZE.

В итоге после скачивания верии 2.0.29 под свежий debian 8.3, за место убитой 12й убунты апдейтом на 14ую, я быстренько подкрутил размер ключика и размер буфера и радостно сгенерировал на 5200U 16кбит ключ за 18 (или 19) минут, что раньше занимало 45-50 минут на P6200.

Но вот 32кбит дали мне пачку ошибок. Свободное время есть — разбираемся.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments19

Поняв Docker

Reading time14 min
Views221K

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


К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


Что мы имеем сегодня


  • Зоопарк дубовых VPS-хостингов.
  • Дорогие IaaS и PaaS с гарантированным vendor lock in.
  • Уникальные сервера-снежинки.
  • Ворох устаревших зависимостей на неподдерживаемой операционке.
  • Скрытые связи частей приложения.
  • Незаменимый админ полубог на скейтборде.
  • Радуга окружений: development, testing, integration, staging, production.
  • Генерация конфигов для системы управления конфигами.
  • Feature flagging.
docker run docker
Total votes 92: ↑83 and ↓9+74
Comments245

Анализ данных на Scala. Считаем корреляцию 21-го века

Reading time8 min
Views22K

Очень важно выбрать правильный инструмент для анализа данных. На форумах Kaggle.com, где проводятся международные соревнования по Data Science, часто спрашивают, какой инструмент лучше. Первые строчки популярноcти занимают R и Python. В статье мы расскажем про альтернативный стек технологий анализа данных, сделанный на основе языка программирования Scala и платформы распределенных вычислений Spark.

Как мы пришли к этому? В Retail Rocket мы много занимаемся машинным обучением на очень больших массивах данных. Раньше для разработки прототипов мы использовали связку IPython + Pyhs2 (hive драйвер для Python) + Pandas + Sklearn. В конце лета 2014 года приняли принципиальное решение перейти на Spark, так как эксперименты показали, что мы получим 3-4 кратное повышение производительности на том же парке серверов.
Подробности
Total votes 21: ↑20 and ↓1+19
Comments21

Вопросы для нового интервью с Эдуардом Шишкиным

Reading time1 min
Views4.9K
Договорился с Эдуардом Шишкиным, разработчиком ФС Reiser4, о новом интервью (интервью пятилетней давности можно прочитать по ссылке).

В комментариях можно оставлять свои вопросы. Само интервью будет опубликовано мной здесь, на Хабре.
Total votes 9: ↑8 and ↓1+7
Comments9

Linux-контейнеры дома: зачем и как

Reading time8 min
Views120K



Рассуждения


При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.

Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
Читать дальше →
Total votes 64: ↑64 and ↓0+64
Comments84

«Чтобы стать хорошим системщиком, нужно 5–10 лет опыта» — интервью с Алексеем Шипилёвым из Java Performance Team

Reading time26 min
Views28K
В преддверии Java-конференции Joker 2015, которая начнется уже завтра, я публикую большое интервью с Алексеем Шипилёвым, инженером команды Java Performance Team из Oracle, одним из самых крутых и известных во всем мире специалистов по производительности. Ну и конечно, прекрасным спикером.

С Алексеем мы подробно поговорили:
  • про грядущие изменения в классе String;
  • про то, кто же на самом деле разрабатывает OpenSource;
  • про системных разработчиков и их карьеру;
  • про обмен технологиями, «научную» и «продуктовую» разработку;
  • про сложность низкоуровневых задач;
  • про развитие Java-сообщества и бенчмарк-войны;
  • про mutable vs immutable;
  • про Unsafe;
  • про JMH, бенчмарки и узкую специализацию.


Вот видео нашего разговора. Больше часа длиной, можно слушать в дороге.



Ниже под катом — расшифровка нашей беседы для тех, кто видео не очень.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments12

Печальное состояние сисадмина в эпоху контейнеров

Reading time3 min
Views81K
Системное администрирование сейчас в печальном состоянии. Оно в хаосе.

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

Проблема в контейнерах, готовых виртуальных машинах (prebuilt VMs), а также в невероятном хаосе, который они создают, потому что в их концепции не хватает «доверия» и «обновлений».

Давайте взглянем на Hadoop. Судя по всему, никто не знает как собирать Hadoop с нуля; это просто огромная куча из зависимостей, необходимых версий и утилит сборки.

Ни одна из «замечательных» утилит не собирается традиционной командой make. Каждая утилита поставляется со своим собственным не переносимым и не совместимым c чем-либо «методом дня» для сборки.

И так как никто не умеет собирать вещи с нуля, то все просто скачивают бинарники со случайных веб-сайтов, часто даже без проверки цифровой подписи.
Читать дальше →
Total votes 141: ↑130 and ↓11+119
Comments99
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity