Как стать автором
Обновить
64
0
Иван @Aivean

Пользователь

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

Классы типов в Scala (с небольшим обзором библиотеки cats)

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

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

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

Обзор курсов по Deep Learning

Время на прочтение11 мин
Количество просмотров70K
Привет, Хабр! Последнее время все больше и больше достижений в области искусственного интеллекта связано с инструментами глубокого обучения или deep learning. Мы решили разобраться, где же можно научиться необходимым навыкам, чтобы стать специалистом в этой области.

image
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии29

Play! Lift! Srsly?

Время на прочтение13 мин
Количество просмотров17K
Play! и Lift, — эти два фреймворка являются олицетворением того, куда движется основной поток Scala веб-разработчиков. Воистину, попробуйте поискать на Stack Overflow фреймворки для Scala и вы поймете что я прав. Я верю, что процент здравомыслящих людей, которым надоели сложные комбайны, велик, поэтому расскажу про «другой» фреймворк Xitrum.
Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии35

Свой облачный хостинг за 5 минут. Часть 1: Ansible, Docker, Docker Swarm

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

Привет Хабр! Последние 1.5 года я работал над своим проектом, которому был необходим надежный облачный хостинг. До этого момента я больше 10 лет занимался веб-программированием и когда я решил построить свой хостинг у меня были относительно поверхностные знания в этой области, я и сейчас не являюсь системным администратором. Все что я буду рассказывать может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.
Читать дальше →
Всего голосов 64: ↑63 и ↓1+62
Комментарии42

Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$

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


В последнее время всё большую популярность набирают Wi-Fi модули на основе ESP8266. Я тоже решил приобщиться к прекрасному, задумав реализовать термометр, отдающий данные по HTTP. Итак, поехали.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии74

Искусственный рассвет

Время на прочтение9 мин
Количество просмотров232K
Началось всё год назад. Перед Новым 2014 годом несколько пришел в упадок жизненный тонус. Процесс самокопания привел к следующей мысли:



— А, что ж так темно-то, Господи? © День радио.

Впрочем, для человека, живущего зимой по летнему времени — мысль вполне естественная.
Что же делать?
Всего голосов 187: ↑185 и ↓2+183
Комментарии87

Программа курса и материалы по Scala

Время на прочтение14 мин
Количество просмотров48K
Добрый день.

Меня зовут Головач Иван, я практикующий Java Tech Lead с опытом в программировании 10+ лет (Java EE, J2ME, C, C++, M-language, Delphi), который перешел на Scala.

Я подготовил и прочитал как обычные курсы по программированию (Java Core + Junior Java Developer), так и спецкурсы (Multicore Programming for JVM (раз и два)).

В данный момент я стартую спецкурс по Scala и в этом топике хочу поделиться материалами, которые я нашел наиболее интересными/информативными (курс готовился более года).
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии32

Новая версия HP Vertica: Dragline 7.1

Время на прочтение13 мин
Количество просмотров7.5K
image
8 августа 2014 года вышла новая версия HP Vertica 7.1. Команда Майкла Стоунбрейкера продолжает утверждать, что работа с большими данными сродни БАМу и продолжает новым версиям выдавать названия с строительной тематикой. Итак, Бульдозером (6 версия) по таблицам данные разровняли, сверху неструктурированными данными во Flex зону приложили (версия 7.0), пришла пора большого Экскаватора повернуть реки вспять. Встречаем версию Dragline 7.1! В этой статье я опишу, что же изменилось в новой версии.

Расширения функциональности проекций


Напомню для тех, кто в курсе и расскажу для тех, кто не знает: проекцией в Vertica называется материализация данных таблицы. Таблица в Vertica это описание структуры таблицы (столбцов), constraints и партиций. А непосредственно данные хранятся в проекциях, которые создаются на таблицы. Проекции чем-то похожи на индексы, они хранят данные по всем или не всем столбцам таблицы. Может быть более одной проекции на таблицу, проекции могут хранить отсегментированные и отсортированные данные по разным правилам. Данные во всех проекциях автоматически обновляются при обновлении записей таблицы. Фактически проекции содержат данные таблицы полностью всех колонок или частично определенных колонок. Жертвуется дисковое место серверов кластера, но значительно ускоряются выборки для разных групп запросов.

Выражения в проекциях

До новой версии в проекциях можно был указать исключительно только колонки таблицы. Это накладывало определенные ограничения на использование проекций. Например, если в запросах часто в фильтрации использовалось выражение по колонкам таблицы, поиск по этому фильтру не был максимально эффективным за счет того, что в проекции не было возможности указать сортировать хранимые данные по выражению. Сортировка же по столбцам выражения вряд ли помогла повысить производительность. Это могло вылиться в достаточно серьезную проблему. В качестве решения потребовалось бы добавить в таблицу новую колонку, в которую можно сохранять результат вычисления. Так же потребовалось изменить алгоритм загрузки в эту таблицу данных первоисточников, чтобы во время загрузки заполнять вычисляемый столбец. Так же пришлось бы перегружать всю таблицу, чтобы заполнить добавленное поле. Если в таблице десятки и сотни миллиардов записей и в нее идет постоянная загрузка, такое решение физически было бы невыполнимо.

В новой версии для проекций введена возможность указать как столбцы, так и выражения:
CREATE PROJECTION sales_proj (sale_id, sale_count,  sale_price, sale_value) AS
  SELECT sale_id, sale_count, sale_price, sale_count * sale_price
  FROM sales 
  ORDER BY sale_count * sale_price
  SEGMENTED BY HASH(sale_id) ALL NODES KSAFE 1;


Следующий запрос к созданной проекции таблицы:
SELECT *
FROM sales_proj_b0
WHERE value > 1000000
ORDER BY value;

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

На такие проекции накладываются следующие ограничения:
  • Нельзя использовать функции, которые могут изменить результат (например функцию TO_CHAR, так как она вернет разный результат в зависимости от выставленной кодировки клиента)
  • Нельзя использовать служебные мета функции
  • Нельзя обновлять записи таблицы оператором MERGE (UPDATE и DELETE разрешены)


Проекции такого типа можно создать и перестраивать на таблицу в любой момент времени, без остановки работы с ней пользователей и загрузки данных. Таким образом, проблема включения вычисляемого столбца в сортировку для повышения производительности запросов более не актуальна.
Читать дальше →
Всего голосов 7: ↑4 и ↓3+1
Комментарии6

За один проход

Время на прочтение7 мин
Количество просмотров154K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1+71
Комментарии56

Фантастические сериалы — обзор от фаната

Время на прочтение8 мин
Количество просмотров81K
Мне наступили на больную мозоль, сделав некий обзорный пост по нескольким фантастическим сериалам.
А так как субботним вечером делать особенно нечего, давайте-ка я сделаю свой, более полный.
Да, будут спойлеры, имейте в виду.
Да, и очень много картинок! Трафик!

Начнём со Stargate

Целое семейство сериалов, начавшихся с одноимённого фильма.
Это во-первых, конечно,

Stargate SG-1
10/10
image
Читать дальше →
Всего голосов 238: ↑132 и ↓106+26
Комментарии262

Учим Pebble Watch понимать русский язык

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

Доброго времени, читатели Хабра.
В данной статье я хочу поделиться способом, с помощью которого мне удалось научить свои Pebble Watch понимать смски на русском языке и корректно отображать имена звонящих из телефонной книги. Способ не мой, а подсмотренный, ссылки на первоисточник, разумеется, я дам. Однако бурное обсуждение в данном обзоре, и количество негативных мнений, относительно отсутствия возможности у Pebble Watch читать смски на русском языке позволило мне судить о том, что большинство Хабраюзеров про этот способ не слышали.
Читать дальше →
Всего голосов 61: ↑51 и ↓10+41
Комментарии28

Youtube

Время на прочтение1 мин
Количество просмотров222K
Приходится ждать загрузки видео >360p по несколько секунд, обрывы на середине просмотра стало уже обыденным делом и это с достаточно широким каналом.

image

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

Для того чтобы запрос шел мимо cdn серверов ютуба надо заблокировать диапазон ip адресов (в роутере или на компьютере).

173.194.55.0/24 и 206.111.0.0/16
Читать дальше →
Всего голосов 205: ↑147 и ↓58+89
Комментарии179

Механические клавиатуры

Время на прочтение17 мин
Количество просмотров761K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

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

Механические клавиатуры. Путеводитель.

Читать дальше →
Всего голосов 323: ↑313 и ↓10+303
Комментарии331

Архитектура Adobe Flex 3 компонентов для новичка

Время на прочтение7 мин
Количество просмотров3.2K
Знакомиться со Adobe Flex мне пришлось в почти боевых условиях. Неожиданно понадобилось писать что-то работающее, пользуясь лишь примерами из Интернета и помощью старших товарищей. Поблизости не было ни одной книги по Flex, да и времени на чтение тоже, что сильно сказалось на теоретической базе. Многое делалось на ощупь простым русским методом проб и ошибок. Чтож, попробовать пришлось порядочно. Сейчас, глядя назад, я понял, что многие грабли можно было избежать, если бы имелась под рукой простая вводная статья объясняющая что к чему. Под катом собраны 3 вопроса, из-за недопонимания которых у меня чаще всего возникали проблемы. Надеюсь, ответы на них помогут начинающим быстрее разобраться в тонкостях построения компонентов этого фреймворка.

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

Делаем Desire HD из Desire

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


Буквально пару дней назад я прочитал пост Вторая жизнь HTC HD2 и задумался, а можно ли сделать Desire HD из моего Desire? Как оказалось, можно, и даже не очень сложно. В общем, поразмыслив некоторое время о плюсах и минусах перехода на HD, я приступил к превращению. После всех действий я получил все возможности Desire HD в корпусе Desire. Никаких проблем и ошибок не возникло.
Читать дальше →
Всего голосов 109: ↑96 и ↓13+83
Комментарии139

Новые «фишки» Far Manager v2.0

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

Думаю, что многие хабраюзеры использует файловый менеджер Far в своей повседневной работе. И уже почти все знают, что теперь он полностью бесплатен для всех, доступен в исходном коде, выпускается под платформы x86 и x64. Но не все в курсе, что он постоянно развивается, и в нем реализуются новые “плюшки”, которых в свое время очень не хватало.

Повышение полномочий
Раньше, при попытке зайти в папку, доступ к которой отсутствовал, просто выводилось сообщение «Доступ запрещен».
Сейчас, Far Manger «поумнел» и самостоятельно выполняет запрос административных полномочий через механизм UAC.

Копирование файлов
В прошлых версиях при выделении файлов на панели и копировании в буфер обмена (Ctrl+Ins) копировались только имена файлов.
В текущей версии (v2.0 build 1666) – помимо имен файлов копируются также ссылки на эти файлы, что позволяет легко передать их в Explorer (например, на Рабочий стол) или в какую-то другую программу, поддерживающую такое обращение с файлами (например, программы для записи DVD). Копирование полных путей к файлам (Ctrl+Alt+Ins) оставлено без изменений.

Не смотрел, появились ли какие-то новые, «вкусные плагины» — для работы мне хватает плагинов для работы с 7-zip, PicView Advanced и Coloree.
Если вы знаете какие-то особо вкусные «плюшки», прошу поделиться в комментариях.
Всего голосов 109: ↑87 и ↓22+65
Комментарии114

Мошенничество с использованием пластиковых карт

Время на прочтение3 мин
Количество просмотров504K
Ещё один сценарий мошенничества с использованием пластиковых банковских карт. Наиболее уязвимы карты Сбербанка, пригодные для платежей в интернете — начиная от Visa Classic и MasterCard Standard. Владельцы «зарплатных» Maestro и прочих Momentum данному приёму не подвержены.
Читать дальше →
Всего голосов 241: ↑221 и ↓20+201
Комментарии279

О HTML5 в инфографике

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

Рыская в интернете я натолкнулся на весьма приятную по исполнению и интересную к прочтению инфографику о HTML5.
Я решил ее перевести. Что из этого вышло можете лицезреть по клику на уменьшенной картинке.

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

Имени автора, я к сожалению не нашел. Только ссылку на его твиттер.

P.S. Убрал опечатки и обновил картинку с инфографикой.
Всего голосов 121: ↑109 и ↓12+97
Комментарии80

Эффективная обработка фотографий в Photoshop

Время на прочтение6 мин
Количество просмотров146K
Эффективная обработка фотографий в Photoshop

Читая статьи о Photoshop, я часто удивляюсь тому, насколько многие авторы усложняют решение по сути простых задач по обработке. Этим страдают и многие «монументальные» писатели, например Дэн Маргулис. Но ему это простительно – его задача написать о всех тонкостях и нюансах процесса обработки, рассмотреть его со всех ракурсов и сторон. Хотя именно эта особенность подачи материала в его книгах отталкивает многих читателей.

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

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

Читать дальше →
Всего голосов 288: ↑244 и ↓44+200
Комментарии117

Как не стать спамером со своей уютной рассылочкой

Время на прочтение1 мин
Количество просмотров67K
image
Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»

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

И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
Читать дальше →
Всего голосов 238: ↑230 и ↓8+222
Комментарии60
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность