Search
Write a publication
Pull to refresh
4
0
Сергей @HSerg

Разработчик

Send message

Читаем XLSX на Android при помощи Apache POI

Reading time2 min
Views10K
UPD (06.09.2014): Больше нет необходимости компилировать с опцией --core-library
poi logoСама по себе задача прочитать формат XLSX при помощи Apache POI XSSF совершенно не хитрая. Не хитрая ровно до тех пор, пока вы не решите подключить эту библиотеку к вашему приложению для Android. К сожалению, гугление ни к чему не привело — мне не удалось найти реальных инструкций или рекомендаций по использованию XSSF на Android. Вообще ни одного упоминания о том, что эта библиотека действительно может работать на Android.

HSSF(XLS) — работает без проблем, XSSF(XLSX) — не удалось ничего найти, только рекомендации обрабатывать все при помощи POI где-нибудь на сервере.

Далее раскрываю, в чем заключается проблема и как я её решил
так сказать, свидетельство того, что XSSF на Android работать может

RippleDrawable для Pre-L устройств

Reading time9 min
Views15K
image

Доброго времени суток!


Те, кто следил за Google IO/2014, знают о новом Material Design и новых фишках. Одной из них является пульсирующий эффект при нажатии. Вчера я решил его портировать для старых устройств.
Читать дальше →

Input — новый шрифт для программирования

Reading time1 min
Views100K
Компания Font Bureau разработала новое семейство шрифтов Input, важнейшим из которых в данном случае для нас является шрифт Input Mono. Кириллица присутствует. Для персонального использования шрифты бесплатны.

Читать дальше →

«Правильное» ограничение скорости в Nginx. Миф или реальность?

Reading time3 min
Views35K


Вот уже много лет пользователей Nginx мучает один и тот же вопрос: «Как можно ограничить скорость в целом для IP адреса независимо от числа сессий (соединений)? Почему Nginx этого не умеет? Почему разработчики Nginx так упорно не хотят реализовать этот простой функционал?» И ответить мне им нечего, о чём думают разработчики Nginx — не понятно и известно, наверное, только господу богу.

Бороться с этим можно по разному, кто-то использует скрипты на подобие htb.init, кто-то пишет скрипты шейпинга самостоятельно и делится удачным опытом на Хабре, а некоторые и вовсе используют PHP для ограничения скорости отдачи файлов. Только представьте себе, каким будет оверхед и расход памяти, при использовании PHP в подобных целях.
Читать дальше →

Отобразить уведомление на Android Wear, не показывая его на телефоне

Reading time1 min
Views13K
Решил я все же, не смотря на свой скепсис, начать переносить приложения на Android Wear.

Первое дело — показывать уведомления, ИМХО, первая и важнейшая функция смарт-часов.
Открываю мануал и узнаю что уведомления на часы можно отправить только прицепом к общесистемному уведомлению Android. На Sony все было разделено и даже слишком, а тут все интегрировано и само собой работает. Гвоздями прибито.
Читать дальше →

Как легко сделать Navigation Drawer и вкладки, используемые в популярных приложениях от Google

Reading time15 min
Views126K
При использовании популярного приложения Play Маркет многие обратили внимание на вкладки для переключения контента. Такое применение вкладок можно найти и в других приложениях от Google, таких как Play Музыка, Play Пресса.



На этой почве возникает интерес, а иногда и необходимость (если заказчик просит) реализовать увиденное. Я не стал исключением и при проектировании нового приложения, дизайн которого был набросан на черновике, присутствовал очень схожий дизайн, хотя и имел всего несколько вкладок. Казалось бы, что сложного? Сейчас откроем официальную документацию, просмотрим необходимые разделы и приступим к делу. Но, изучив документацию, не смог обнаружить соответствующих примеров — и тут же возник новый вопрос. Почему Android разработчики из компании Google по умолчанию не предоставляют примеров с необходимой функциональностью, чтобы сделать это довольно просто, ведь это реализовано в каждом их приложении? Также, погуглив, нашлись аналогичные вопросы на Stack Overflow. Исходя из этого, оказалось, что существует проблема или, по крайней мере, нераскрытый вопрос, в котором следует разобраться.

Ниже хочу рассказать о том, как всё же можно реализовать паттерн Navigation Drawer вместе с вкладками, как в популярных приложениях от Google.
Читать дальше →

Unity3D + Google Services: мультиплеер для вашего проекта на Android и iOS

Reading time7 min
Views53K

В этой статье я хочу рассказать об использовании игровых сервисов Google в вашем приложении на Unity. На написание данного материала меня сподвигло достаточно большое количество проблем, встретившихся во время разработки нашего приложения, а также отсутствие каких-либо материалов на русском языке по этой теме. Да и собственно, на английском тоже. Описание использующегося плагина на гитхабе очень краткое и не дает ответа на возможные проблемы с работой сервисов. Думаю, здесь не стоит пояснять, что мультиплеер и рейтинги игроков зачастую повышают интерес пользователей, а следовательно и вашу возможную прибыль. А благодаря данной статье начинающие разработчики смогут начать использовать данные преимущества.
Читать дальше →

Intel GPA для Android — оптимизируем графику в мобильных приложениях

Reading time8 min
Views9.1K
image В продолжение серии статей, посвященных Intel INDE, хочу рассказать об уникальном (не побоюсь этого слова) инструменте для разработчиков, созданном компанией Intel — Intel GPA (Graphics Performance Analyzers). Я уже упоминал его в обзорной статье, посвященной Intel INDE.

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

Intel GPA поддерживает анализ производительности приложений для Windows и Android. Версия для Windows (DirectX) существует на рынке давно, о ней написано много статей; версия же для Android, предназначенная для приложений, использующих OpenGL, появилась сравнительно недавно, и многие разработчики даже не подозревают о ее существовании. Этот пробел я и собираюсь восполнить.
Читать дальше →

Через час ты проводишь вебинар: Google Hangouts on Air

Reading time5 min
Views53K
На днях возникла необходимость провести вебинар для студентов на безе компании, в которой тружусь.

Требования были следующие:

  • бесплатность для любой стороны;
  • работа из браузера;
  • возможность шарить экран;
  • запись трансляции;
  • простота в освоении (важно).

Бегло просмотрев несколько существующих сервисов, я понял, что все не нравится: почти все они не бесплатны; многие не работают прямо из браузера; нет бесплатной возможности записать вебинар.
Читать дальше →

30 полезных сервисов для веб-разработчиков и дизайнеров v2

Reading time3 min
Views86K
Предыстория: я веду свой паблик ВК о веб-разработке, в связи с чем я каждый день имею дело с большим количеством материалов о веб-разработке. Однажды (3 месяца назад) мне пришла в голову идея опубликовать на хабре подборку «30 полезных сервисов для веб-разработчика». Тот пост набрал почти 100 000 просмотров, и мне приятно, что он оказался полезен сообществу. С тех пор у меня поднакопилось больше 30 новых сервисов, которые будут полезны как разработчикам, так и дизайнерам. Лучшие из них я собрал в этом посте. Осторожно, под катом много картинок!
Читать дальше →

CSS GuideLines, часть 1. Синтаксис и форматирование

Reading time8 min
Views44K


Введение


CSS не идеален. Поначалу кажется, что он прост в освоении, но работая над реальным проектом вы столкнетесь со многими проблемами. Мы не можем изменить то, как работает CSS, но мы можем изменить тот код, который мы пишем.
Читать дальше →

Как мы боролись с тормозами в AndEngine

Reading time8 min
Views13K
Недавно наша команда закончила разработку двухмерной бродилки-стрелялки для Android на движке AndEngine. В процессе был получен определенный опыт по решению проблем с производительностью и некоторыми особеностями движка, которым хочется поделиться с читателями Хабра. Для затравки вставлю кусочек скриншота из игры, а все технические детали и примеры кода уберу под кат.


Читать дальше →

Свободная литература или сказ про дружбу CoolReader c Tor

Reading time5 min
Views72K
Картинка для привлечения внимания

Живет у меня в доме соседка: очень хорошая женщина, пенсионерка, ветеран труда, бывший медицинский работник, отработавший всю жизнь медсестрой в больнице. В настоящее время на пенсии. Я ей помогаю, чем могу, но сказ не про соседку, а про то, что подарила ей дирекция больницы, где она раньше работала планшет. Все бы ничего в этом планшете (WIFI есть, 3G нету, диагональ экрана 7 дюймов, на алиэкспрессе такие по 45 долларов с доставкой), но вот что делать с этим планшетом, естественно, не объяснили. И пришлось мне отвечать на вопрос, что делаю со своим планшетом я, а я на планшете книжки читаю, в основном Ясинского и Эльтерруса.

Естественно я подключил планшет к своему ноутбуку и перекинул апкашку CoolReader, а также свою библиотеку. К сожалению, через два дня выяснилось, что литературные пристрастия у нас разные и мои книжки соседке неинтересны. Пришлось поделиться паролем от своего вайфая и настроить opds «Флибусты», так как что такое Интернет соседка знала весьма приблизительно и ни компьютера, ни интернет-соединения у нее нет и никогда не было.

После выходных меня огорошили тем фактом, что нужные книжки с Флибусты не скачиваются. Сказать, что я был в недоумении — ничего не сказать — вся интересующая меня литература всегда была в свободном доступе, но соседка хотела Дарью Донцову и «50 оттенков серого» и, к моему удивлению, они действительно не скачивались.
Это была присказка - сказка будет впереди.

Алгоритмы сжатия данных без потерь, часть 2

Reading time9 min
Views104K
Часть 1

Техники сжатия данных


Для сжатия данных придумано множество техник. Большинство из них комбинируют несколько принципов сжатия для создания полноценного алгоритма. Даже хорошие принципы, будучи скомбинированы вместе, дают лучший результат. Большинство техник используют принцип энтропийного кодирования, но часто встречаются и другие – кодирование длин серий (Run-Length Encoding) и преобразование Барроуза-Уилера (Burrows-Wheeler Transform).
Читать дальше →

Домашняя бухгалтерия на платформе CUBA

Reading time16 min
Views36K


Цель этой статьи — рассказать о возможностях платформы CUBA на примере создания небольшого полезного приложения.
CUBA предназначена для быстрой разработки бизнес-приложений на Java, мы уже писали о ней несколько статей на Хабре.

Обычно на платформе строятся либо реальные, но слишком большие и закрытые информационные системы, либо приложения в стиле “Hello World” или искусственные примеры типа “Библиотеки” на нашем сайте. Поэтому некоторое время назад я и решил попробовать убить сразу двух зайцев — написать для себя полезное приложение и выложить его в общий доступ как пример использования нашей платформы, благо предметная область простая и всем понятная.

Читать дальше →

Масштабирование наоборот: БЭМ-методология Яндекса на небольших проектах

Reading time21 min
Views62K
В разработке интерфейсов отдельные фреймворки уже не так важны: когда инструменты доступны, наша задача сводится к выбору нужных. Чтобы сделать правильный выбор, следует начать с общего подхода, с методологии. Большинство методологий, однако, разработаны крупными компаниями. Применимы ли они в маленьких проектах или для успешного использования их нужно переизобретать заново?

Скорее всего, вы уже знаете об одной из таких методологий, разработанной Яндексом, — БЭМ. БЭМ утверждает, что трёх сущностей (блоков, элементов и модификаторов) достаточно для написания HTML и CSS, задания структуры кода и компонентной структуры с последующим масштабированием проекта до самого высокого уровня.

Я проработал в Яндексе достаточно долго и видел, как эта методология работает на больших проектах. В Яндексе БЭМ используют для разработки CSS- и JavaScript-компонент, с помощью этой методологии также пишут шаблоны и задают зависимости между компонентами. Есть БЭМ-инструменты, поощряются различные эксперименты с кодом, исследования. В масштабах большой компании эти трудозатраты окупаются и дают Яндексу возможность быстро и качественно разрабатывать сотни сервисов одновременно.

Могут ли маленькие команды получить от БЭМ то же самое? Я совершенно не был в этом уверен. Всё же БЭМ — абстракция, которая поставляется вместе с инструментами и технологиями. Для маленькой компании польза от переключения на «полный стек» этих технологий — сомнительна, многие из инструментов изначально приспособлены под крупные и сложные задачи. Быть может, тогда полезной окажется сама идея, сама методология?

Изначально эта моя статья была опубликована в известном многим журнале Smashing Magazine. Но я решил, что и на Хабре она может быть интересна, ведь многие здесь занимаются собственными небольшими проектами.

Читать дальше →

Awesome WM и Dbus

Reading time11 min
Views13K
Я думаю ни для кого не будет секретом, что у Awesome есть «узкое место», если мы запускаем внешний скрипт, который например должен считать данные из файла, или интернета и вернуть результат в виджет или саму систему, то мы периодически можем наблюдать явлениие «фриза», т.е. когда система перестает реагировать на нажатия клавиш и мыши до получения результата обработки (правда активный клиент при этом продолжает работать). Чаще всего это происходит при использовании io.popen или awful.util.pread
Читать дальше →

Памятка по составлению ИТ-бюджета

Reading time4 min
Views64K

Лучше один раз день потерять, а потом за 5 минут все согласовать




Формирование бюджета и обоснование затрат на ИТ — достаточно простая процедура, которая позволяет руководству компании увидеть выгоды инвестирования в технологии, а техническим специалистам разделять ответственность за состояние ИТ-инфраструктуры с руководством.

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

Планирование бюджета на ИТ можно разделить на три этапа:
Читать дальше →

Инструменты. Как юридически оформить разрыв партнерских отношений

Reading time6 min
Views11K
Наши постоянные партнеры, юридическая фирма «Ветров и партнеры» продолжает знакомить вас с наиболее актуальными вопросами юридического аспекта iT-предпринимательства и оформления прав на интеллектуальную собственность. Новый материал от юристов из «Ветров и партнеры» посвящен вариантам правового оформления партнерских отношений, которые в случае необходимости помогут на законных основаниях вывести партнера из бизнеса.



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

28 ошибок стартапера в глазах инвестора. Опыт бизнес-ангела

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



Управляющий директор венчурного фонда Vantage Point Capital Partners Ричард Хэррок в своей жизни повидал немало элеватор-спитчей и, решив поделиться опытом, составил для Forbes список основных ошибок и поступков, которых стартапер должен избежать во время презентации своего продукта, если хочет обрести благосклонность бизнес-ангела или привлечь венчурные инвестиции.
Читать дальше →

Information

Rating
6,200-th
Registered
Activity

Specialization

Specialist
Lead