Как стать автором
Обновить
1
0
Eugene Probkin @Ewka

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

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

Какие технологии использует Netflix

Время на прочтение2 мин
Количество просмотров24K
Мы постоянно работаем над тем, чтобы IaaS был простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Для этого мы проводим оптимизацию всех систем и рассказываем о своем опыте в нашем блоге на Хабре.

Пара примеров:


Сегодня мы поговорим о том, какие технологии в своей работе использует Netflix. Об этом в своем блоге рассказал Крис Умланд (Chris Ueland), а мы проанализировали его заметку.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии6

Управляй компьютером через bluetooth! (Linux only)

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


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

Для начала скачиваем программку BluePad (linux only), она состоит из пакета, для установки на компьютер и апплета для мобильного телефона. Пакет просто устанавливаем, а для телефона в архиве лежит две версии: обычная и alternative (для телефонов, не поддерживающих UTF-8), выбираем нужную и устанавливаем на телефон.

Подключение. Последовательность действий такая:
-включаем BluePad на компьютере
-«подключиться», «найти»
-компьютер ждёт подключения, включаем BluePad на телефоне
-выбираем язык, жмём «5» и в конце списка обнаруживаем и нажимаем «Choose Device»
-телефон находит компьютер и подключается
-настраиваем на телефоне управление под свой плеер

Вот и всё! С помощью BluePad'а также можно управлять презентациями, играми и даже двигать мышью!
Всего голосов 23: ↑20 и ↓3+17
Комментарии10

25+ видеоуроков по Android для начинающих

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

Приветствую вас, уважаемый хабрачеловек!
Предлагаю вашему вниманию бесплатно серияю видеоуроков в котрых рассмотренно базовые понятия разработки под Android.
Читать дальше →
Всего голосов 111: ↑108 и ↓3+105
Комментарии33

Замыкания в Javascript [Часть 1]

Время на прочтение15 мин
Количество просмотров59K
Перевод статьи Ричарда Корнфорда Javascript Closures.

  • Введение
  • Разрешение имен свойств объектов
    • Присваивание значений
    • Чтение значений

  • Разрешение имен идентификаторов, контексты исполнения и цепь областей видимости
    • Контекст исполнения
    • Цепь областей видимости и свойство [[scope]]
    • Разрешение имен идентификаторов

  • ...

Введение


Замыкание
Замыкание — это выражение (обычно функция), которое может иметь свободные переменные, вместе со средой, которая привязывает эти переменные (т.е. “замыкает” это выражение).

Замыкания относятся к наиболее мощным особенностям ECMAScript (javascript), но они не могут быть применены должным образом без понимания. Несмотря на то, что их легко создать, даже случайно, их создание может иметь пагубные последствия, в частности, в некоторых относительно распространенных окружениях браузеров. Чтобы избежать случайных столкновений с недостатками и использовать преимущества замыканий, необходимо понимать их механизм. Это сильно зависит от роли цепи областей видимости в разрешении имен идентификаторов (identifier resolution) и от разрешения имен свойств в объектах.

Самое простое объяснение замыкания в том, что ECMAScript допускает вложенные функции, определения функций и функции-выражения (function expressions) внутри тел других функций. И эти вложенные функции имеют доступ ко всем локальным переменным, параметрам и функциям, находящихся внутри их внешней функции (внешних функций). Замыкание образуется, когда одна из этих вложенных функций становится доступной вне той функции, в которую она была включена, таким образом, она может быть выполнена после завершения внешней функции. В этот момент она все еще имеет доступ к локальным переменным, параметрам и внутренним декларациям функций (function declarations) своей внешней функции. Эти локальные переменные, параметры и декларации функций (изначально) имеют те же значения, которые были во время завершения внешней функции и могут взаимодействовать с внутренней функцией.

К сожалению, правильное понимание замыканий требует понимания механизмов, которые стоят за ними, и немало технических подробностей. Хотя некоторые из алгоритмов, определенных в ECMA 262, затронуты в начале последующего объяснения, большинство не могут быть опущены или просто приведены к упрощенному виду. Если вы знакомы с разрешением имен свойств объектов, то можете пропустить этот раздел, но только люди, уже знакомые с замыканиями, могут позволить себе пропустить последующие разделы и прямо сейчас перестать читать и вернуться к их использованию.
Читать дальше →
Всего голосов 38: ↑26 и ↓12+14
Комментарии13

Программирование-по-Контракту в Java

Время на прочтение31 мин
Количество просмотров51K
Добрый день.
В рамках детальной проработки курса удаленного образования «Java Core» я пишу серию публикаций и делаю несколько переводов наиболее популярных статей.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Сейчас я предлагаю Вам на рассмотрение мой перевод «Programming With Assertions» с некоторыми комментариями.

Оригинальная публикация не только детально объясняет варианты использования ключевого слова assert в Java и то, как реализована поддержка данного механизма на уровне загрузки классов, но также является достаточно неформальным введением в Разработку-по-Контракту (Design-by-Contract).




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



Программирование с утверждениями (oracle.com: Programming With Assertions)

Утверждение (assert) — это оператор (statement) языка программирования Java, который позволяет вам проверить свои предположения о программе. Например, если вы пишете метод, вычисляющий скорость частицы, можно «утверждать», что расчетная скорость меньше скорости света.

Каждое утверждение содержит логическое выражение, которое, по вашему мнению, будет верным в момент выполнения. В противном случае, система выбросит исключение. Проверяя, что логическое выражение на самом деле верно, утверждение (assert) подтверждает ваши предположения (ожидания) о поведении программы, увеличивая уверенность в том, что программа не содержит ошибок.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии2

Охотники на волков с Wall Street. Часть 3

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

Изображение: Mark Finn — Unsplash

В первых двух частях нашей дискусси (1, 2) вокруг книги Майкла Льюиса «Высокочастотная революция на Уолл-стрит» мы обсудили отдельные моменты из главы о том, как трейдер из достаточно консервативного канадского банка начал работать на Wall Street. В ходе своего карьерного роста он добился ежегодного оклада в полтора миллиона долларов и возглавил крупный отдел из двадцати специалистов, но дальше все пошло не так гладко, как хотелось бы.
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии8

О начинающих разработчиках и принципах работы с ними

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

За последние десять лет через меня прошло много начинающих разработчиков. Да и чего греха таить, я тоже когда-то был начинающим разработчиком. За это время я получил тысячи вопросов а-ля “как стать разработчиком”, а также просьб взять людей к себе на практику. К сожалению, даже под чутким руководством более опытных специалистов, далеко не каждому хватает сил и мотивации перейти на качественно новый уровень. Статистика — вещь упрямая: количество “пытающихся” и “достигающих успеха” распределяется согласно принципу Парето, т.е. 20/80, где из десяти человек максимум двоим удается пройти первоначальное испытание. Остальные отваливаются по дороге или процесс обучения у них растягивается на долгие годы. И все же, каким должен быть начинающих разработчик, какими навыками и знаниями он должен обладать? Об этом и пойдет речь в статье.

Читать дальше →
Всего голосов 149: ↑103 и ↓46+57
Комментарии160

Обработка ошибок в Node.js

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


Пост содержит перевод статьи «Error Handling in Node.js», которую подготовили сотрудники компании Joyent. Статья была опубликована 28 марта 2014 года на сайте компании. Dave Pacheco поясняет, что статья призвана устранить неурядицу среди разработчиков, касаемо лучших практик работы с ошибками в Node.js, а так же ответить на вопросы, которые часто возникают у начинающих разработчиков.
Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Комментарии11

Актуальная статистика доходов от casual игр

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

Погода в магазине Apple меняется быстро. Никому не интересны прогнозы за прошлый год. Я рискну рассказать про свой опыт разработки casual игр под iPhone в текущем 2014 году от Рождества Христова.

Немного статистики на завтрашний день.
App Annie gathers data on 1,156,827 Apps and 289,377 Publishers in 155 Countries.

За прошедшие 2 года число приложений в магазине не увеличилось. Миллион приложений. Миллион чьих-то надежд на успех, деньги, славу. За тот же период времени число надеющихся удвоилось.
Не удивительно, ведь раз в квартал Землю облетает очередная весть! За 2 часа разработки! Flappy Bird приносит! Скромному вьетнамскому юноше $50 000 в день!

Если бы не было столь чудных историй, Apple обязан был бы придумывать их. Чтобы тысячи новых парней покупали $100 лицензии на разработку и кодили, кодили, кодили.

Вот. А что же в действительности? В действительности, Ваше приложение (хорошее и легкое) ждет обычная судьба.
Читать дальше →
Всего голосов 72: ↑67 и ↓5+62
Комментарии76

Spring изнутри. Этапы инициализации контекста

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


Доброго времени суток уважаемые хабравчане. Уже 3 года я работаю на проекте в котором мы используем Spring. Мне всегда было интересно разобраться с тем, как он устроен внутри. Я поискал статьи про внутреннее устройство Spring, но, к сожалению, ничего не нашел.

Всех, кого интересует внутреннее устройство Spring, прошу под кат.
Читать дальше →
Всего голосов 57: ↑53 и ↓4+49
Комментарии16

JSR 133 (Java Memory Model) FAQ (перевод)

Время на прочтение25 мин
Количество просмотров146K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии32

Правильное использование promise в angular.js

Время на прочтение5 мин
Количество просмотров109K
imageВ процессе использования angular.js трудно обойтись без объекта $q (он же promise/deferred), ведь он лежит в основе всего фреймворка. Deferred механизм является очень простым и мощным инструментом, который позволяет писать лаконичный код. Но чтобы по-настоящему использовать эту мощь, необходимо знать обо всех возможностях данного инструмента.
Вот несколько моментов, о которых вы возможно не знали.
Познать мощь
Всего голосов 41: ↑39 и ↓2+37
Комментарии15

Обработка входящих заявок, опыт небольшой веб-студии

Время на прочтение3 мин
Количество просмотров34K
Мы — небольшая веб-студия, но и у нас, нет-нет да и потеряется входящая заявка от клиента или застрянет где-нибудь в почте между сотрудниками. Я расскажу как мы решили задачу работы с заявками. Скажу сразу, это простое решение — в статье не будет про CRM которая интегрируется с ip-телефонами, вычисляет день рожденья клиента по фотографии или ходит на встречи вместо менеджера, представители крупных интернет-компаний вряд ли найдут здесь что-то интересное.

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

Почему мы не используем CRM?
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии17

Хешируем строки на этапе компиляции с помощью annotation

Время на прочтение9 мин
Количество просмотров11K
Недавно я начал разрабатывать приложение под Android и передо мной возникла задача защитить его от реверса. Беглый просмотр гугла позволил предположить, что ProGuard, входящий в состав Android Studio, с задачей справится. Результат меня действительно устроил за исключением одной маленькой детали — строки.
Программа обменивается с сервисом информацией с помощью Intent. Ключевой частью которых является строка действия. И если для взаимодействия с системой или другими приложениями строка должна иметь определённый формат, то для обменов внутри приложения достаточно её уникальности. Для удобства рекомендуется составлять данную строку из имени пакета и названия действия. Например:
public final class HandlerConst {
    public static final String ACTION_LOGIN = "com.example.app.ACTION_LOGIN";
}

Это удобно для отладки, но сильно снижает качество обсфускации кода. Хочется, чтоб в релизе программы вместо данной строки оказался, например, её MD5 хеш.
public final class HandlerConst {
    public static final String ACTION_LOGIN = "7f315954193d1fd99b017081ef8acdc3";
}

Под катом рассказано, как добиться такого поведения с помощью подручного велосипеда.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии8

Core Data для iOS. Глава №3. Теоретическая часть

Время на прочтение28 мин
Количество просмотров26K
Хабралюди, добрый день!
Сегодня хочу начать написание ряда лекций с практическими заданиями по книге Михаеля Привата и Роберта Варнера «Pro Core Data for iOS», которую можете купить по этой ссылке. Каждая глава будет содержать теоретическую и практическую часть.



Содержание:

Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии4

STM32 vs Arduino

Время на прочтение3 мин
Количество просмотров229K
Приехала вчера крошечная платка на STM32F103C8.

STM32F103C8 Front STM32F103C8 Front

Это 48ногий 32битный микроконтроллер. И это отличный вариант апгрейда для тех, кто использует Arduino.
Сравним?
Всего голосов 75: ↑69 и ↓6+63
Комментарии259

Animate.css — набор кроссбраузерных CSS3 анимаций

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

Animate.css




На днях наткнулся на эту замечательную вещь и решил поделиться с Хабрахабром.
Animate.css — сборка отличных кроссбраузерных CSS3 анимаций в одном файле.
Читать дальше →
Всего голосов 71: ↑65 и ↓6+59
Комментарии23

JavaPNS и JRE7

Время на прочтение2 мин
Количество просмотров4.9K
По роду деятельности столкнулся с необходимостью отправлять push уведомления на яблочные девайсы. Была найдена библиотека JavaPNS 2.2, подготовлен сертификат для Developer версии, написан сервис который шлет push уведомления, все запустилось все завертелось, push уведомления отправляются — в общем полное счастье. Но вот настал день релиза, был вновь подготовлен уже Production сертификат и экспортирован вместе с приватным ключом в p12 все задеплоено на сервера… иииии… как вы наверное уже догадались ничего не заработало :). Судя по логам push отправляется, но на девайс ничего не приходит.
Скандалы, интриги, расследования
Всего голосов 7: ↑5 и ↓2+3
Комментарии2

Быстрый способ создать установщик для Java программы

Время на прочтение4 мин
Количество просмотров18K
Вам никогда не надо было быстро создать установщик для своего Java-приложения, но не хотелось тратить на это кучу времени, создавая свой собственный? Возможно, вы удивитесь, но в стандартной поставке JDK7 такой инструмент уже присутствует.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии12

Пишем живые обои с часами

Время на прочтение4 мин
Количество просмотров24K
ClockНедавно я решил разобраться, как делать живые обои для андроида, а разбираться лучше всего на хорошем примере — таком, который потом пригодится. Я всегда хотел удобные часы. Для андроида уже существует достаточное количество подобных обоев, но обычно они рисуют большие часы в каком-нибудь фиксированном углу экрана и перекрываются виджетами, которых у меня немало. Мне хотелось, чтобы часы были разбросаны по всему экрану, тогда вероятность увидеть их будет выше.
Как сделать такое читайте дальше
Всего голосов 79: ↑76 и ↓3+73
Комментарии37
1

Информация

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