Pull to refresh
1
0

User

Send message

Знакомство с шейдерами на примере GPUImage

Reading time12 min
Views31K


В этой статье я собираюсь описать разработку приложения для iphone, которое будет в реальном времени обрабатывать видео с камеры устройства. Для этого мы будем использовать GPUImage фреймворк, напишем собственный шейдер на OpenGL ES и попробуем разобраться в том, что представляют из себя фильтры для обработки изображений.
Читать дальше →
Total votes 47: ↑43 and ↓4+39
Comments5

ActiveRecord Hacks

Reading time4 min
Views10K
Сегодня я поделюсь своим набором не всегда очевидных функций и возможностей Active Record, с которыми я столкнулся в процессе разработки Ruby on Rails приложений или нашел в чужих блогах.

Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments18

HackStore — Альтернативный магазин приложений для Mac OS

Reading time4 min
Views18K
Всем привет! Сегодня я бы хотел рассказать про свой проект HackStore — альтернативный магазин приложений для Mac OSX.



Предыстория



В январе 2011 года Apple запустила Mac App Store, по аналогии с подобным магазином приложений для iOS.
Оставаясь верной своим традициям, Apple установила жесткие проприетарные условия для разработчиков. И если iOS с самого рождения была закрытой системой, то Mac OS напротив, всегда являлась открытой платформой по отношению к сторонним разработчикам. С момента появления первой OS X разработчики успели создать огромное количество как платных, так и бесплатных утилит, игр и приложений.
В момент открытия Mac App Store многие разработчики оказались перед сложным выбором. Чтобы попасть в App Store, им необходимо было изменять приложение, урезать часть функционала, менять лицензию, покупать Mac Developer Program. В противном случае им оставалось продолжать распространять свое приложение как раньше, при этом рискуя потерять пользователей.
При этом, из-за жестких требований AppStore, многие популярные и известные приложения вообще не имеют шанса туда попасть. Так, к примеру, App Store закрыт для приложений, которые распространяются с лицензиями Open Source, MIT или CCL, а также тем, которые даже незначительно меняют системные функции или оформление. Доступ к магазину приложений также закрыт для множества популярных утилит и твиков, таких как CleanMyMac, MacHider, Magician, Adium, Skype и для многих других не менее удобных и полезных приложений.
Читать дальше →
Total votes 123: ↑105 and ↓18+87
Comments117

Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

Reading time6 min
Views38K
По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

  • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
  • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
  • бенчмарки надо делать правильно: иначе могут дико дрожать;
  • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
  • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
  • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
  • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
Читать дальше →
Total votes 166: ↑153 and ↓13+140
Comments60

Чем опасен rebase-2, или как rebase мешал баг искать

Reading time2 min
Views35K
Однажды старший программист Антон, попивая кофе и вспоминая уволенного в предыдущей статье Васю, просматривал очередной тикет в багтрекере. В тикете было сказано, что одна из программ в очень важном проекте стала при некоторых условиях возвращать «BAD» вместо «GOOD». Недолго думая, Антон написал тестовый скрипт и приступил к поиску причины такого поведения.
testscript.sh
#!/bin/bash
result=`./project.sh`
echo $result
if [[ "$result" == "GOOD" ]]
then
    echo "Test passed"
    exit 0
elif [[ "$result" == "BAD" ]]
then
    echo "Test failed"
    exit 1
else
    echo "Can not apply test"
    exit 125
fi


git bisect start
./testscript.sh
git bisect bad
./testscript.sh
git bisect good
…

В компании использовали rebase, история коммитов была линейной, и поиск по ней доставлял Антону одно удовольствие.
Как вдруг:
— Хм… Проект не компилируется, тест прогнать не получится. Ну ладно, не беда, пропустим: git bisect skip.
— Что за ерунда? Опять не компилируется. Опять пропустим…
— Опять??? Какой @#$%^ запушил столько битых коммитов?
Читать дальше →
Total votes 67: ↑62 and ↓5+57
Comments90

История одного garbage collection'а

Reading time5 min
Views28K
Эта поучительная история повествует о том, как важно развивать навыки гугления, и о том, как я боролся с ежечасным полным Garbage collection.

Краткое описание проблемы


После того, как мы мигрировали в продакшене один из компонентов системы (единственный, работающий на Tomcat) на новую версию томката, неожиданно саппорт запаниковал, увидев в логах полуторасекундные запуски GC.
Читать дальше →
Total votes 64: ↑59 and ↓5+54
Comments64

Правильный Singleton в Java

Reading time4 min
Views424K
Уверен, каждый из читателей, знает что такое шаблон проектирования “Singleton”, но не каждый знает как его программировать эффективно и правильно. Данная статья является попыткой агрегирования существующих знаний по этому вопросу.

Кроме того, можно рассматривать статью как продолжение замечательного исследования, публиковавшегося на Хабрахабре ранее.
Читать дальше →
Total votes 67: ↑53 and ↓14+39
Comments84

Правильно освобождаем ресурсы в Java

Reading time4 min
Views162K
Неправильное освобождение ресурсов — одна из наиболее часто допускаемых ошибок среди Java-программистов. Под ресурсом в данной статье я буду подразумевать всё, что реализует интерфейс java.io.Closeable. Итак, сразу к делу.

Будем рассматривать на примере OutputStream. Задача: получить на вход OutputStream, сделать некоторую полезную работу с ним, закрыть OutputStream.
Читать дальше →
Total votes 68: ↑59 and ↓9+50
Comments82

Готовим адаптивное видео для HTTP Live Streaming

Reading time7 min
Views38K
Почти все пользуются, и, наверняка, многие слышали про динамическую адаптацию видеопотока под пропускную способность сети. В последнее время это уже практически обязательное требование к online-видео в интернете. Преимущества адаптивного видеопотока очевидны: если сеть временами «проседает», видео продолжает отображаться в плеере без видимых подкачек и буферизации; качество картинки автоматически выбирается адекватным пропускной способности сети.

Несмотря на то, что динамическая адаптация видеопотока уже сравнительно «старая» технология, существует множество мелких подробностей о том, как добиться лучшего результата. Чтобы и на серверной стороне попроще и подешевле, и чтобы такое видео было совместимо с как можно большим количеством клиентов (Web, iOS, Android, ну и не забываем про Smart TV).

Посмотреть, как сделать адаптивное видео для HLS
Total votes 15: ↑12 and ↓3+9
Comments14

«Сверкающие кинжалы» или как мы арабский проект делали

Reading time6 min
Views93K
**внимание, эта статья обрывается так же внезапно, как и проект в ней описываемый**

Начало


Начиналось всё более чем оптимистично: заказчики из ОАЭ (новый для нас рынок), презентабельный внешний вид представителей, обещания других контрактов, «деньги не проблема». Всё это в сумме сыграло с нами злую шутку и, на свою беду, мы подписались на эту разработку. Хотелось попробовать. В итоге это обернулось расторжением контракта в одностороннем порядке, но не со стороны клиента, а нами — компанией-аутсорсером.
Читать дальше →
Total votes 153: ↑150 and ↓3+147
Comments127

ExtJS4: практические впечатления

Reading time5 min
Views25K
При выборе программной платформы обычно разбегаются глаза — тут такое, тут сякое и все неизменно превосходно. Не больше помогают и разного рода сравнительные матрицы — можно увидеть, что во фреймворке Х нет подключения к промышленной системе автоматического смыва воды в унитазах, но эта информация не всегда полезна.

А хочется понять, на что годится та или иная библиотека в практических применениях, хочется прочитать о чьем-нибудь опыте. А с этим не очень. Например, по ExtJS я ничего такого не нашел. Пришлось пробовать самому.

Далее следуют мои впечатления от работы на ExtJS 4.1.1. Они по определению субъективны и не претендуют на вселенские обобщения.

Читать дальше →
Total votes 54: ↑42 and ↓12+30
Comments60

C/C++ plugin for IntelliJ IDEA as OpenSource

Reading time1 min
Views25K
Здравствуйте.

Сегодня, после двух недель ожидания, Advanced Tools опубликовали исходники плагина, если кто не знает, этот плагин дает поддержку C/C++ для IDE которые базируются на IntelliJ платформе(web ide, idea, etc)

Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments16

Мой опыт продаж в App Store. $29K за 15 месяцев

Reading time3 min
Views154K
Хочу поделиться опытом разработки и продаж своего iOS-приложения из категории «Производительность» (Productivity). О приложении рассказывать не буду, чтобы не сочли за рекламу. Просто графики и выводы, которые я сделал.



Читать дальше →
Total votes 140: ↑131 and ↓9+122
Comments86

Где зарыт iPhone или насколько точен GPS?

Reading time4 min
Views81K
Нормальная точность Мы планировали создать приложение для поисковых игр — игр, в которых нужно находить места в реальном мире.
Первое, что нам потребовалось — точный инструмент для сбора точек и создания маршрутов. Простое указание их на карте не подходило, т.к. погрешность геометок достигает 200 метров — человек мог прийти по координатам в поисках небольшой вещи, а оказывалось, что до места еще сотни шагов. Чтобы не заставлять пользователей бродить, было решено разработать систему снятия координат телефонами прямо на месте.
Имея опыт разработки такой системы под Android и помучившись с ее сервисами геолокации, мы предположили, что сделать это на iOS будет проще (айфоны вроде бы очень похожи) и точнее (в идеале мы должны не бояться бросить айфон в лесу, чтобы потом найти его по компасу).
Для проверки этих предположений мы написали прототип, который приводил пользователя стрелкой к месту снятия координат, а заодно сделали интересные выводы о точности встроенного компаса и GPS.
Читать дальше →
Total votes 49: ↑39 and ↓10+29
Comments71

AWS: Хороший, плохой, злой

Reading time8 min
Views15K
Здесь, в awe.sm, мы с самого начала использовали Amazon AWS для хостинга. За последние три года мы изучили, что хорошо, а что не очень и сформулировали для себя свой собственный набор правил для запуска высоко доступной, высоко производительной системы, которые в некоторых случаях отличаются от того, что советует Amazon.

Мы собираемся поговорить о следующих родственных понятиях:
  1. Для людей, которые слышали об Amazon, но еще не имели возможности его использовать, мы покажем все преимущества и недостатки этого сервиса, с которыми мы столкнулись в своей работе.
  2. Для тех, кто уже использует AWS, мы проясним некоторые детали и расскажем о лучшей практике использования Amazon для таких высокопроизводительных сервисов, как наш, где непрерывная работа системы является самым высоким критерием.

Читать дальше →
Total votes 39: ↑33 and ↓6+27
Comments21

О том, как выпустить отличное iOS приложение, которое никому не нужно

Reading time7 min
Views63K

1. Для начала нужна хорошая и востребованная идея


Все началось с тайм-менеджмента. Прочитав Тайм Драйв, я пришел к выводу, что Глеб Архангельский действительно сделал очень хорошую работу и все разложил по полочкам. Но, когда захотелось применить его теорию на практике, используя смартфон, возникла проблема — до сих пор не было хоть какой-то минимально приемлемой реализации его методики.

В то время я как раз был в поисках идеи для пробы пера на AppStore. Я протестировал с десяток популярных планировщиков под iOS, платных и бесплатных. Некоторые были хороши в своих аспектах (списки задач, календари), но универсального решения я не нашел. Вернее нашел, но они были страшные и неуклюжие, и, судя по всему, неудачные в плане коммерции. Поэтому было решено реализовать универсальный и, в то же время, простой органайзер с максимальным применением советов Глеба Архангельского, как самых практичных, на мой взгляд.

Читать дальше →
Total votes 119: ↑98 and ↓21+77
Comments183

Красной таблетки не существует

Reading time5 min
Views128K

О чем это


Я долгое время был адептом идей о равенстве, свободе и братстве том, что существует красная таблетка.

— Что можно с помощью ООП решить все проблемы масштабирования программ;
— Что с помощью одной методологии можно выстроить разработку проектов;
— Что с помощью нескольких гениальных книг можно научиться проектировать интерфейсы.

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

Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.

Читать дальше →
Total votes 355: ↑326 and ↓29+297
Comments348

Вебсокеты: боевое применение

Reading time6 min
Views78K
imageВебсокеты — это прогрессивный стандарт полнодуплексной (двусторонней) связи с сервером по TCP-соединению, совместимый с HTTP. Он позволяет организовывать живой обмен сообщениями между браузером и веб-сервером в реальном времени, причем совершенно иным способом, нежели привычная схема «запрос URL — ответ». Когда два года назад я присматривался к этому стандарту, он был еще в зачаточном состоянии. Существовал лишь неутвержденный набросок черновика и экспериментальная поддержка некоторыми браузерами и веб-серверами, причем в Файрфоксе он был по умолчанию отключен из-за проблем с безопасностью. Однако теперь ситуация изменилась. Стандарт приобрел несколько ревизий (в том числе без обратной совместимости), получил статус RFC (6455) и избавился от детских болезней. Во всех современных браузерах, включая IE10, заявлена поддержка одной из версий протокола, и есть вполне готовые к промышленному использованию веб-серверы.

Я решил, что настало время попробовать это на живом проекте. И теперь делюсь, что из этого вышло.
Что вышло
Total votes 96: ↑91 and ↓5+86
Comments137

Сколько стоит создать приложение или вся правда о деньгах

Reading time7 min
Views71K
Узнав, что я занимаюсь разработкой мобильных приложений, мои знакомые время от времени, спрашивают: «сколько стоит разработать приложение?». И я честно отвечаю: «от 200 долларов». Приложение будет писать на экране HELLO WORLD, его не пропустят в магазин из-за «bad user experience», но работать-то приложение будет!

Самое удивительное, что огромное количество разработчиков и вправду создает что-то за 3000 долларов и даже выкладывает это в App Store.

Некоторые рассказы российских разработчиков поразительно напоминают бродячий сказочный сюжет «о волшебном помощнике»: в духе конька горбунка или золотой рыбки. Из ниоткуда появляются дизайнеры и композиторы и бесплатно творят захватывающие вещи, а программисты со смирением Золушки по ночам строчат изначально гениальный код…

Так и хочется, заглянуть им в глаза и проникновенно спросить:

— Ребят, а вы из какой сказки?

А то в моей суровой реальности разработка качественного, пусть и не большого приложения для Appstore – это долго, непросто и дорого.

Основные статьи расходов при создании проекта:

Статья Расход
Дизайн приложения $ 13 000
Создание уникальности $ 10 000
Производство графики $ 35 000
Программирование $ 45 000
Текстовый контент $ 5 000
Локализация $ 3 000
Музыка и звук $ 1 000
Полировка $ 17 000
Маркетинг $ 30 000
Управление $ 30 000
Итого: $ 189 000


Вся раскладка будет сделана на примере нашего приложения "МоиЭмоции". Приложение бесплатное, весь функционал можно посмотреть.

Почему так дорого?
Total votes 221: ↑174 and ↓47+127
Comments213

Почему ИТшнику стоит стать ИПшником и почему не стоит регистрировать ООО

Reading time7 min
Views86K
В этой статье даются ответы на нижеследующие вопросы, основываясь на личном опыте и опыте коллег.

1. Почему стоит начать работать «в белую»
2. Почему на начальном этапе ИП лучше ООО
3. Что делать, если партнёров несколько

Если вы – начинающий или уже опытный фрилансер и подумываете о работе «в белую», но ещё точно не определились с вопросами «Стоит ли оно того?» и «ИП или ООО?», вэлком
под кат
Total votes 371: ↑361 and ↓10+351
Comments183

Information

Rating
Does not participate
Location
Антарктика
Registered
Activity