Как стать автором
Обновить
5
0

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

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

Лямбда-выражения в Java 8

Время на прочтение19 мин
Количество просмотров463K
В новой версии Java 8 наконец-то появились долгожданные лямбда-выражения. Возможно, это самая важная новая возможность последней версии; они позволяют писать быстрее и делают код более ясным, а также открывают дверь в мир функционального программирования. В этой статье я расскажу, как это работает.

Java задумывалась как объектно-ориентированный язык в 90-е годы, когда объектно-ориентированное программирование было главной парадигмой в разработке приложений. Задолго до этого было объектно-ориентированное программирование, были функциональные языки программирования, такие, как Lisp и Scheme, но их преимущества не были оценены за пределами академической среды. В последнее время функциональное программирование сильно выросло в значимости, потому что оно хорошо подходит для параллельного программирования и программирования, основанного на событиях («reactive»). Это не значит, что объектная ориентированность – плохо. Наоборот, вместо этого, выигрышная стратегия – смешивать объектно-ориентированное программирование и функциональное. Это имеет смысл, даже если вам не нужна параллельность. Например, библиотеки коллекций могут получить мощное API, если язык имеет удобный синтаксис для функциональных выражений.

Главным улучшением в Java 8 является добавление поддержки функциональных программных конструкций к его объектно-ориентированной основе.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии24

MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)

Время на прочтение8 мин
Количество просмотров92K
Давно хотел рассказать про MapReduce, а то как ни взгляшешь на подобное — такая заумь, что просто ужас берет, а на самом деле очень простой и полезный подход для многих целей. И реализовать самому — не так уж и сложно.

Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.

Начнем с того как собственно родилась лично у меня идея MapReduce (хотя я и не знал, что он так называется, и, разумеется, пришла она мне куда позже чем Гугловсцам).

Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.

Как посчитать все слова в Википедии (неправильный подход)


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

В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.

$dict['word1'] += 1

Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?

Читать дальше →
Всего голосов 141: ↑133 и ↓8+125
Комментарии53

Какие бывают типы OutOfMemoryError или из каких частей состоит память java процесса

Время на прочтение3 мин
Количество просмотров206K
Если вы словили OutOfMemoryError, то это вовсе не значит, что ваше приложение создает много объектов, которые не могут почиститься сборщиком мусора и заполняют всю память, выделенную вами с помощью параметра -Xmx. Я, как минимум, могу придумать два других случая, когда вы можете увидеть эту ошибку. Дело в том, что память java процесса не ограничивается областью -Xmx, где ваше приложение программно создает объекты.

image

Читать дальше →
Всего голосов 76: ↑73 и ↓3+70
Комментарии39

Ещё раз (надеюсь, последний) про double-checked locking

Время на прочтение4 мин
Количество просмотров52K
Статей про double-checked locking на Хабре было столько, что казалось бы ещё одна — и Хабр лопнет. Вот только по Java неплохие публикации: Реализация Singleton в JAVA, Правильный Singleton в Java, А как же всё-таки работает многопоточность? Часть II: memory ordering или вот замечательный пост от TheShade (слава web-archive!). В наши дни, наверно, каждый Java-разработчик слышал, что если используешь DCL, будь добр объявить переменную volatile. Найти сегодня в коде известных опенсорсных проектов DCL без volatile довольно трудно, но оказалось, что проблемы ещё не полностью решены. Поэтому я добавлю небольшую заметку по теме с примерами из реальных проектов.

Иногда складывается ощущение, что программисты не включают мозги и не пытаются понять, как что работает, а просто следуют простым и понятным правилам вроде «объяви переменную volatile, используй DCL, и всё будет хорошо». К сожалению, такой подход в программировании не всегда работает.
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии116

Всё о версиях Windows 8.1 и о том, как легально загрузить последний образ без подписки

Время на прочтение6 мин
Количество просмотров770K
Хочу поделиться в одной заметке важной, на мой взгляд, информацией о версионности образов Windows 8.1, и о том, как любой желающий может совершенно легально загрузить ту языковую версию и издание, которые ему требуется. С учётом того, что после выхода Windows 8.1 образы пересобирались минимум пять раз, вопрос версионности становится интересным для администраторов и энтузиастов.

Недавно я писал о том, как можно совершенно легально загрузить самый последний Microsoft Office с сайта Microsoft — как корпоративную версию, так и коробочную Retail — любые языки и продукты, со всеми интегрированными обновлениями. Сегодня я расскажу, как сделать то же самое и с операционной системой — средствами предоставляемыми самой Microsoft.

Но для начала я хочу рассказать о версиях Windows 8.1. Не об изданиях — этого добра в сети много, а именно о публичных версиях сборок ОС. Ведь для любого администратора удобно загрузить образ со всеми интегрированными обновлениями, чем устанавливать сотню самостоятельно. Причём загрузить образ с сайта Microsoft, а не самодельную сборку с торрентов. Всё что я буду рассказывать о версиях ОС Windows 8.1 применимо и к Windows Server 2012 R2, за исключением канала для бесплатной загрузки образов для переустановки ОС. Но давайте всё по порядку.
Читать дальше →
Всего голосов 75: ↑71 и ↓4+67
Комментарии60

[LibGDX] Создаем клон Flappy Bird — Zombie Bird

Время на прочтение127 мин
Количество просмотров198K
Доброго времени суток %username%. Не давно наткнулся на хороший туториал по созданию клона игры Flappy Bird используя LibGDX и этот туториал мне понравился своей простотой и детализацией.

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

Туториал разбит на 12 дней, содержит множество картинок, полотен кода и исходный код разбит по дням. Кому интересно, добро пожаловать под кат.
Подробнее
Всего голосов 111: ↑102 и ↓9+93
Комментарии29

Робот-пылесос Kärcher RC 3000: опыт эксплуатации

Время на прочтение33 мин
Количество просмотров731K
В своей жизни я встречал людей, которым нравится пылесосить. Да, именно так, сам процесс наведения чистоты доставляет удовольствие. Причина может быть разной — от демонстрации собственной нужности до мизофобии.

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

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

Прочного и надежного робота-уборщика, способного нормально функционировать в самых тяжелых условиях:



Мой выбор пал на RC 3000 от Karcher, впечатлениям от эксплуатации которого и посвящается данная статья.

Осторожно: под катом много фотографий и видеороликов
Всего голосов 317: ↑303 и ↓14+289
Комментарии330

NASA дало возможность всем желающим следить за судьбой «Вояджера-1»

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


Около месяца назад в этом топике разгорелся спор относительно волнующего факта того, покинул ли автоматический зонд «Вояджер-1» пределы Солнечной системы или пока ещё нет — правда, суть спора сводилась не к фактологии, а к тому, какой источник более авторитетен.

Теперь арбитром этого спора (образно говоря, конечно) стало NASA: в одном из последних обновлений ресурса агентства, посвящённого миссии «Вояджер-1» появился интерактивный датчик по данным которого можно будет практически однозначно судить, покинул ли аппарат пределы гелиосферы или нет.
Узнать подробности
Всего голосов 76: ↑72 и ↓4+68
Комментарии29

Как начать летать самостоятельно, хоть на чем-то, с мотором

Время на прочтение10 мин
Количество просмотров235K
Вторая статья для желающих начать летать самостоятельно.
Сегодня мы будем рассматривать варианты сжигания дохлых мамонтов (бензина) для приобретения кинетической энергии.

Парящий полет (первая статья)
  • Параплан
  • Дельтаплан
  • Планер

Моторный полет (под катом)
  • Самолет
  • Мотодельтаплан (дельталет)
  • Паратрайк (аэрошют)
  • Парамотор (карлсон, мотопараплан)
  • Мотопланер



Первый раз за штурвал самолета я сел в 18 лет. До первого самостоятельного вылета налетал 25 часов и совершил около 100 взлетов и посадок. Сейчас мой суммарный налет на всем, что летает — порядка 400 часов. Это жутко мало, чтобы считать себя опытным пилотом, но достаточно, чтобы подсесть на “летную иглу”. Приглашаю и вас стать авиазависимыми.
Запустить двигатель
Всего голосов 142: ↑133 и ↓9+124
Комментарии176

Ультрагидрофобное покрытие

Время на прочтение1 мин
Количество просмотров86K
Судя по рекламным роликам, состоит из основы и финального покрытия. Наносится спреем. Отталкивает воду изо всех сил.

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

Но ролики впечатляют, согласитесь.
Читать дальше →
Всего голосов 109: ↑99 и ↓10+89
Комментарии266

Автомобильная телеметрия за 100$

Время на прочтение4 мин
Количество просмотров81K
Так вышло, что я довольно давно интересуюсь автомобилями и автоспортом, однако моя основная работа непосредственно связана с разработкой под мобильные платформы — и мне всегда были интересны возможности для связи технологий из этих разных миров. К счастью, последнее время для этого стало гораздо больше возможностей. В этой заметке хочу коротко поделиться своим опытом работы с автомобильной телеметрией.

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

image

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

Как купить акции IT-компаний на зарубежных биржах? (часть 1)

Время на прочтение45 мин
Количество просмотров265K
Stock Investing for Dummies (theory)Многие из вас, читая на Хабре статьи об успешных IT-фирмах и быстро развивающихся высокотехнологичных компаниях, наверняка, задумывались о том, чтобы инвестировать свои деньги в их акции с целью получения прибыли, когда через несколько месяцев или даже лет рыночная стоимость этих акций заметно вырастет.

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

Но в итоге я всё же сделал усилие над собой: сначала немного вник в азы торговли акциями, а потом наконец решился и начал торговать акциями на фондовых рынках США (NYSE, NASDAQ, AMEX). И, самое главное, я понял, что купить акции — это не так уж и сложно, как казалось раньше, и даже не так затратно (в плане накладных расходов), как я предполагал. И в этой статье я хочу поделиться исключительно своим опытом в данной области в виде общих теоретических сведений и практического руководства (HOWTO) для новичков.

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

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

Разделил статью на две части:
  1. В первой части рассмотрим теоретические основы торговли акциями.
  2. Во второй части будет практическое руководство для новичков по покупке и продаже акций.
Кто заинтересовался, добро пожаловать под кат.
Всего голосов 42: ↑41 и ↓1+40
Комментарии59

Android x86 с эмулятором ARM на большом экране

Время на прочтение2 мин
Количество просмотров144K
Доброго времени суток.
Под катом я расскажу, как мне удалось запустить Android на eeePC и подключить к нему большой телевизор.
Читать дальше →
Всего голосов 38: ↑32 и ↓6+26
Комментарии24

Android x86 на Asus Eee PC 900

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

Зачем?


Принесла мне тётя с работы розовый нетбук, подаренный её дочкой, с проблемой «всё тормозит и не работает». А хочется, чтобы можно было и в интернете полазить, и фильмы посмотреть, и в простенькие игрушки поиграть. И так уж получилось, что нетбук был укомплектован уж очень медленным SSD. А так как Android у тёти есть на телефоне, то решено было ставить именно его — для интернета хватит.
Читать дальше →
Всего голосов 78: ↑73 и ↓5+68
Комментарии68

Опыт интеграции библиотеки OpenIAB в Android приложение

Время на прочтение10 мин
Количество просмотров8.9K
В этой статье мы бы хотели поделиться своим опытом интеграции библиотеки OpenIAB в наше Android приложение, помогающее изучать английские слова. Если кто не знает, то OpenIAB это библиотека, которая позволяет подключать in-App покупки различных магазинов приложений, абстрагируясь от деталей реализации API конкретного магазина.


OpenIAB разрабатывается исходя из следующий принципов:

* API библиотеки должно быть максимально похоже на API Google Play In-app Billing.
* Один APK файл должен работать для всех поддерживаемых магазинов приложений.
* Никаких посредников при проведении оплат. Это значит что нет никаких третьих сторон которые обрабатывают транзакции. Под капотом библиотеки все транзакции обрабатываются все теми же Google Play, Yandex.Store и другими нативными приложениями магазинов. По сути, OpenIAB является прослойкой, приводящей API различных аппсторов к одному API, который мы и будем использовать в своем приложении.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии5

Уязвимость ShellShock эксплуатируется in-the-wild

Время на прочтение3 мин
Количество просмотров23K
Уязвимость Shellshock (CVE-2014-6271) по масштабности и последствиям для всемирной сети и подключенных к ней устройств можно сравнить только с печально известной Heartbleed, которая была обнаружена весной этого года. Такое название получила уязвимость в командном интерпретаторе Bash, который используется во всевозможных модификациях и дистрибутивах Linux, Unix, Apple OS X (включая новейшую версию OS X Mavericks), а также Android. Уязвимости присвоен наивысший — 10-й уровень опасности, при этом уязвимыми являются все версии интерпретатора, включая новейшую 4.3.



Основную опасность Shellshock представляет по той причине, что он позволяет удаленно выполнить код на уязвимой ОС (исполнять необходимые атакующим команды интерпретатором). При этом с точки зрения эксплуатации уязвимости, это сделать довольно просто. Сам Bash привлекается к использованию в CGI-скриптах (что и позволяет осуществлять удаленную эксплуатацию), которые работают на веб-серверах и не только, например, с использованием компонента cgi_module. Одна из вредоносных программ, которая доставляется атакующими на скомпрометированный сервер обнаруживается AV-продуктами ESET как Linux/DDoS.M.

Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии17

Unity3d. Уроки от Unity 3D Student (B00-B03)

Время на прочтение5 мин
Количество просмотров245K
Добрый день. Предлагаю свой вариант перевода уроков по Unity3d от www.unity3dstudent.com

Введение.


Данная статья представляет из себя первый набор базовых (из раздела Beginner) уроков. Уроки в основном нацелены на изучение скриптинга и использование компонентов.
Поэтому предполагается, что с основами работы в GUI Unity вы слегка знакомы. Если нет, изучите вводный раздел на этом же сайте.
Уроки достаточно ясные и короткие, так что трудностей в процессе их изучения должно возникать минимум.

PS: А хорошо это или плохо — вопрос достаточно сложный.

В некоторых местах уроков есть минимальные косметические изменения, не затрагивающие основную суть.

Перейти к урокам
Всего голосов 54: ↑53 и ↓1+52
Комментарии9

Stripe анонсировала новую децентрализованную валюту Stellar

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


Процессинговая компания Stripe анонсировала новую валюту Stellar.

Валюта базируется на открытом коде от Ripple, поэтому унаследовала от последнего многие черты. Это децентрализованный протокол для выполнения финансовых операций, который можно использовать для отправки денег в любую точку мира, в любой паре валют. К примеру, протокол поддерживает отправку денег в долларах, а получение в евро. Исходный код всех компонентов открыт, использование абсолютно бесплатно. Stellar, как и Ripple, призван устранить разрыв между криптовалютами и фиатными деньгами, позволяя легко осуществлять переводы между ними. По сути, это распределённая глобальная валютная биржа.

Но самое интересное заключается в том, что создатели бесплатно раздают валюту всем желающим. Вы тоже можете получить свою часть.
Читать дальше →
Всего голосов 39: ↑33 и ↓6+27
Комментарии98

ZeptoLab и Codeforces объединяют усилия

Время на прочтение3 мин
Количество просмотров25K
Ох и давненько мы не радовали хабражителей чем-нибудь свеженьким — за это время накопилось много того, чем делиться хочется. И мы не будем себя в этом сдерживать!

Эта статья будет интересна скорее разработчикам, ну а также всем тем, кто неравнодушен к прекрасному, происходящему по ту сторону игр.

У нас много новостей: мы серьезно выросли за этот период и перешагнули отметку в 80 человек, захватили практически весь этаж в БЦ и по традиции дали нашим художникам возможность оформить новое пространство с присущим им вкусом:

image

Выпустили Cut The Rope “Time Travel” и Cut The Rope 2 c уже всемирно полюбившимися персонажами:

image

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

Сейчас у нас ведется разработка никак не связанных с Cut The Rope игр, которые свет увидит чуть позже (пока сохраним интригу). Ну и, разумеется, любителей резать веревки и монстрика Ам-Няма нам еще есть, чем удивить.

За прошедший год мы существенно доработали и обкатали внутренний фреймворк, позволяющий писать весь игровой код на С++ и собирать билды сразу под iOS и Android. Также за прошедший год мы стали активно использовать возможности C++11, и, несмотря на очевидное количество legacy-кода в самом фреймворке, использование возможностей C++11 в проектном коде новых тайтлов становится нашим стандартом. Параллельно мы рассматриваем прочие средства разработки, например Unity. Однако, в нашем фреймворке есть ряд преимуществ, отказываться от которых так просто не хочется.
Читать дальше →
Всего голосов 64: ↑51 и ↓13+38
Комментарии42

Пара слов о числах с плавающей точкой в Java

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

Несколько дней назад мне на глаза попался занимательный такой вопрос, касающийся того, каков будет результат выполнения данного кода:
double a = 2.0 - 1.1;

или такого:
double f = 0.0;
for (int i=1; i <= 10; i++) {
	f += 0.1;
}

Вопреки всем моим ожиданиям, ответ: 0.89999999999999991 в первом случае и 0.99999999999999989 во втором.
Для тех, кто хочет узнать почему, а так же еще несколько занимательных фактов про этот тип данных, милости просим.

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

Информация

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