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

Разработчик

Send message

Решение задачи сброса тяжелой логики на одну из множества открытых вкладок

Reading time2 min
Views14K
Не так давно я начал разрабатывать библиотеку DuelJS, которая предоставила удобный интерфейс для определения состояния вкладки Master (активная) или Slave (неактивная). Однако позже мне начали поступать предложения для оптимизации соединений по веб-сокетам. Подход DuelJS: если вкладка активна -> держать соединение, если неактивна -> класть — является не продуктивным. На помощь приходит расширение TabNinja.



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

Unity: Сборка под Android или «размер имеет значение»

Reading time5 min
Views56K
В некоторых случаях необходимо работать над снижением размера сборки для Андроид. Например, установка тяжеловесных APK для пользователей мобильного интернета может влететь в копеечку. Превышение размера APK в 50 Мб в Google Play выливается в дополнительные трудности при аплоаде.



Мы разрабатывали под Андроид на Unity 2D-игру, которая изобилует картинками (большинство с областями прозрачности) и разнообразными звуками, и столкнулись с проблемой размера APK. Забегая вперед скажу, что решив ее и снизив вес в 1,5 раза, мы получили в 1,5 раза больше скачиваний. Заставляет задуматься, не правда ли?
Читать дальше →

Знакомство с GStreamer: инициализация

Reading time3 min
Views11K
image

Чуть больше года назад пользователь POPSuL опубликовал серию статей (1, 2 и 3) о мультимедийном фреймворке GStreamer (за что ему огромное спасибо). Я бы хотел продолжить его начинание, сделав больший упор на кодовую составляющую, нежели на инструменты командной строки, входящие в состав GStreamer.

В данной статье я расскажу о самой первой операции при работе с фреймворком — инициализации. А в качестве закрепления материала мы напечатаем версию GStreamer.
Читать дальше →

Архитектура Android-приложений… Правильный путь?

Reading time5 min
Views95K
От переводчика: Некоторые термины, которые использует автор, не имеют общепринятого перевода (ну, или я его не знаю:), поэтому я решил оставить большинство на языке оригинала — они всё равно понятны и для тех, кто пишет под android, но не знает английский.
Куда писать об ошибках и неточностях, вы знаете.


За последние несколько месяцев, а также после дискуссий на Tuenti с коллегами вроде @pedro_g_s и @flipper83 (кстати говоря, 2 крутых Android-разработчика), я решил, что имеет смысл написать заметку о проектировании Android-приложений.

Цель поста — немного рассказать о подходе к проектированию, который я продвигал в последние несколько месяцев, и также поделиться всем тем, что я узнал во время исследования и реализации этого подхода.
Удиви меня

Обзор площадки для тестирования веб-уязвимостей OWASP Top-10 на примере bWAPP

Reading time6 min
Views68K
Привет, Хабр!

В этой статье предлагаю читателю ознакомится с уязвимостями веб-приложений (и не только), по классификации OWASP Top-10, и их эксплуатацией на примере bWAPP.

image

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

Питание 9/12-вольтовых SOHO-маршрутизаторов от USB-источника

Reading time4 min
Views39K
Самодельный переходник-преобразователь для питания распространенных SOHO-маршрутизаторов, требующих напряжения 9/12 В, от любого 5-вольтового источника достаточной мощности с разъемом USB.



Предыстория


Несколько лет назад у меня завелась пара USB/WiFi-маршрутизаторов Sapido RB-1842. Один я таскал с собой в поездки, чтобы удобнее было раздавать отельный/квартирный/мобильный интернет, а второй поставил стационарно в сельском доме, где интернет доступен только мобильный. Довольно скоро выяснилось, что обоим нужно автономное питание: возимый с собой иногда приходилось ставить на балкон, чтобы ретранслировать WiFi из отельного холла или соседнего кафе, а в деревне регулярно отключают свет на 10-20-40 минут — ноутбуки и гаджеты работают, базовая станция тоже, а интернета нет.

Порадовавшись, что модель пятивольтовая, я отрезал кабели от блоков питания маршрутизаторов, поставив в разрыв разъемы USB «мама/папа» и при нужде запитывал их от обычных повербанков. При этом один из купленных у китайцев безымянных повербанков оказался способен при наличии входного напряжения одновременно заряжать батарею и давать энергию на выходе, а при пропадании — переключаться на батарею. То есть, получился прекрасный пятивольтовый UPS, которого хватало где-то на час-полтора (в том повербанке два аккумулятора 18650) и за которым не требовалось никакого присмотра.
Читать дальше →

Планшет в роли дополнительного монитора

Reading time2 min
Views91K
Приветствую!

Вдохновившись публикацией «Легким движением руки планшет превращается в… дополнительный монитор», я решил сделать собственную связку ноутбук-планшет, но не с помощью IDisplay, а с помощью Air Display. Программа так же, как и IDisplay, может устанавливаться на PC и Mac, IOS и Android. У автора поста планшет работает как второй монитор за счёт установленной виртуальной машины, не имея панели задач, чем я был очень огорчен, ведь управление удобней вести с планшета с панелью задач.
Читать дальше →

Сайты справа налево: как подключить RTL-стандарт

Reading time4 min
Views39K
Когда неподготовленный человек видит сайт на арабском, иврите или любом другом RTL (right-to-left) языке, у него кружится голова: справа налево располагаются не только текст, но и элементы интерфейса.



Когда мы в Alconost впервые столкнулись с необходимостью локализовать сайт на арабский, а затем протестировать его, нам пришлось изучить, как именно RTL пользователи смотрят на мир:
  • вместо подчёркивания, курсива или р а з р я д к и арабы обычно пользуются надчёркиванием;
  • дробный перенос слова на другую строку не допускается;
  • пустое пространство в строке устраняется растяжением букв;
  • цифры пишутся слева направо;
  • в арабском знаки препинания пишутся слева направо;
  • в иврите и в арабском нет заглавных букв.

А если в RTL текст нужно вставить слово на латинице, оно пишется как обычно: слева направо. Такой смешанный RTL-LTR текст превращается в отличный тренажер для глаз.
Как же добиться поддержки RTL на сайте?

Копирование книг с Android (Amazon Kindle, Google Books)

Reading time1 min
Views11K
Я купил электронную книгу в Amazon Store, сын захотел копию. Возиться с DRM не очень то и хотелось, поэтому появилась идея сделать скриншот каждой страницы. Сначала думал перелистывать и делать копию экрана — в результате появился маленький шелл скрипт:
Читать дальше →

Экспорт Избранного на Хабре в PDF. Версия 2.0

Reading time3 min
Views29K
Доброго времени суток, хабражители!



Думаю, многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра». Такая же мысль посетила и меня чуть больше года назад.

Представляю вам новую версию программы закачки статей с Хабра, Гиктаймс и Мегамозг в формате PDF.

Новый проект называется HabraParse.

Проект состоит из библиотечки, которая парсит сайты, и скрипта, использующего лишь часть возможностей этой библиотеки. Скрипт написан на python3, для его работы потребуются модули docopt, requests и weasyprint (все их легко можно установить командой pip install name).

На текущий момент в скрипте имеются следующие возможности:
  • скачать статью по её ID;
  • скачать список URL избранного для заданного пользователя;
  • скачать статьи из избранного в папку в формате PDF или HTML (пока реализация HTML не на высоте, поэтому по умолчанию используется формат PDF, но он работает значительно дольше).


Использование опций --gt/--mm позволяет сохранять статьи с GeekTimes.ru и Megamozg.ru.

Краткое описание параметров скрипта
Usage:
  ./habraparse.py save_favs_list [--gt|--mm] <username> <out_file>
  ./habraparse.py save_favs [--gt|--mm] [-cn --save-html --limit=N] <username> <out_dir>
  ./habraparse.py save_post [--gt|--mm] [-c --save-html] <topic_id> <out_file>

По умолчанию все команды работают с проектом HabraHabr.ru.
При задании опций --gt/--mm скрипт будет работать с GeekTimes.ru/Megamozg.ru.

Команды:
  save_favs_list - сохранение в файл <out_file> списка URL избранного для пользователя <username>
  save_favs - сохранение в папку <out_dir> статей из избранного для пользователя <username>
  save_post - сохранение в файл <out_file> статьи с заданным ID



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

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

Почему компании не умеют обращаться с деньгами

Reading time7 min
Views21K
Так сложилось, что моя карьера — сначала разработчика, затем архитектора, технического директора и наконец предпринимателя, развивалась преимущественно в околофинансовом секторе. Большая часть моей профессиональной деятельности прошла в проектировании и написании софта для банков, компаний-брокеров и схожих с ними компаниях. Об одной из наиболее типичных технических проблем финансового сектора я и хотел бы рассказать уважаемым хабравчанам.



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

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

Кроссплатформенное приложение в Android Studio на jMonkeyEngine 3

Reading time6 min
Views24K
jMonkeyEngine (jME) — трёхмерный игровой движок с открытым исходным кодом. Написан на Java и использует по умолчанию LWJGL для рендеринга. Полностью поддерживаются версии OpenGL со второй по четвёртую.
Как-то раз упоминался на Хабре в далёком 2010-м году.

Помимо характеристик примечателен джавой и не очень примечателен средой разработки NetBeans, которая идёт в комплекте с SDK.

В данной статье хочу рассказать о том, как прикрутить обезьянку к привычной Android Studio.
Читать дальше →

Визуализация многомерных данных с помощью диаграмм Эндрюса

Reading time2 min
Views30K
В эпоху Big Data графическое представление многомерных данных является весьма актуальной задачей. Однако результат визуализации не всегда соответствует ожиданиям. Вот пример не самого наглядного графика для изображения многомерных данных «Ирисы Фишера»:

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

Продукты JetBrains по ценам прошлого года

Reading time1 min
Views36K
Нас постоянно спрашивают: «Когда же будут скидки?». Отвечаем: «Скидки — есть!».

До 5 февраля на ВСЕ продукты JetBrains можно приобрести новую лицензию или обновить существующую со скидкой 40% от текущей цены.

На этот раз акция не международная, а только для жителей трех стран: России, Украины и Беларуси. Мы понимаем, что курсы валют сильно пошатнулись и изменили цены в последние месяцы, и надеемся, что наша акция как-то компенсирует это и позволит вам не экономить на производительности и качестве кода.

Как воспользоваться скидкой?
Читать дальше →

Канделябр vs леденец

Reading time3 min
Views23K
Не успела наша команда разработчиков Марьяжа для Android протрезветь после празднования нового 2015 года, как в отзывах на Google Play начали сыпаться единицы за “тормоза”. Единицы сыпались от пользователей достаточно мощных устройств вроде Nexus 5, 6 и 7. Единственное, что их объединяло — это операционная система: Android 5 (Lollipop).
Читать дальше →

PostgreSQL vs MySQL

Reading time8 min
Views348K


В преддверии своего доклада на конференции PGCONF.RUSSIA 2015 я поделюсь некоторыми наблюдениями о важных различиях между СУБД MySQL и PostgreSQL. Этот материал будет полезен всем тем, кого уже не устраивают возможности и особенности MySQL, а также тем, кто делает первые шаги в Postgres. Конечно, не стоит рассматривать этот пост как исчерпывающий список различий, но для принятия решения в пользу той или иной СУБД его будет вполне достаточно.
Читать дальше →

Объемные планеты в 2D через шейдер

Reading time7 min
Views58K
А помните, как вы просили меня про шейдеры написать? Помните? Нет? А вот я помню и даже написал. Милости просим, поговорим о прекрасном.

Сегодня я поведу речь о том, как я делал объемные вращающиеся планеты для нашей игры blast-off. Тоесть они, конечно, совершенно плоские, всего пара треугольников, но выглядят как объемные.



Заинтересовало? Прошу под кат. Картинок прилично.
Читать дальше →

Сайт без бекэнда: аутентификация пользователя в BaaS parse.com через социальные сети

Reading time7 min
Views31K
Я буду каждое утро развертывать мир, как резиновую ленту на мяче для гольфа, а вечером завертывать обратно. Если очень попросишь — покажу, как это делается.
Р. Брэдбери

UPDATE: Parse не будет работать к 2017 году.

Введение


В статье описан Backend-as-a-Service подход к хранению и обработки данных. Рассказаны преимущества и недостатки представителя такого подхода — сервиса parse.com. Коротко представлен сервис аутентификации пользователей через соц. сети uLogin. Основное назначение — показать, как эти два сервиса могут взаимодействовать, чтобы проект не требовал регистрации пользователей по логину и паролю, но в то же время сохранилась возможность авторизации пользователей к действиям над объектами.

О BaaS и parse.com


Parse.com — один из самых популярных провайдеров backend-as-a-service (BaaS). BaaS подход позволяет не поднимать свой сервер для хранения и обработки данных приложения. Это используется в мобильных разработках и в обычном вебе. Parse.com имеет свои SDK под несколько платформ, в том числе серверных. Но я расскажу о javascript.

Возможность работать с базой данных через javascript, не поднимая свой сервер, открывает отличные возможности, например, для Single page application (SPA), которое можно хостить на Github Pages, Bitbucket и многих других бесплатных. Первый вопрос, который у меня возник, когда я услышал про работу с БД из клиентского кода — это разграничение прав доступа, так как ключи общеизвестны. Изучив документацию parse.com, я выяснил, что для этого используется авторизация пользователей. Каждый пользователь имеет свой логин и пароль. SDK имеет методы регистрации нового пользователя по логину и паролю, аутентификации по этим же данным. Можно добавить email, при этом сам parse.com умеет отправлять настраиваемые письма для верификации email.
Читать дальше →

WebSocket RPC или как написать живое WEB приложение для браузера

Reading time4 min
Views63K


В статье речь пойдет о технологии WebSocket. Точнее не о самой технологии, а о том, как ее можно использовать. Я давно слежу за ней. Еще когда в 2011 году один мой коллега прислал мне ссылку на стандарт, пробежав глазами, я как-то расстроился. Выглядело настолько круто, и я думал, что в момент, когда это появится в популярных браузерах, я уже буду планировать, на что потратить свою пенсию. Но все оказалось не так, и как гласит caniuse.com WebSocket не поддерживается только в Opera Mini (надо бы провести голосование, как давно кто-либо видел Opera Mini).

Кто трогал WebSocketы руками, тот наверняка знает, что работать с API тяжело. В Javascript API достаточно низкоуровневый (принять сообщение — отправить сообщение), и придется разрабатывать алгоритм, как этими сообщениями обмениваться. Поэтому и была предпринята попытка упростить работу с вебсокетами.

Так и появился WSRPC. Для нетерпеливых вот простое демо.
Читать дальше →

8 сортов муды в твоей веб-студии

Reading time6 min
Views74K
Муда, что по-японски означает «потери» — это любая деятельность, которая потребляет ресурсы, но не создает ценности для клиента. (Источник).



Эта короткая заметка для тех, кто системно ищет, где его студия теряет деньги. Похвальное занятие в наше весёлое время.

Хорошо систематизировали виды потерь ребята из Toyota. Тойотовцы выделяют 7-8 видов муды, потерь на производстве. Посмотрим, есть ли аналоги между потерями в автомобилестроении и работе студии.
Читать дальше →

Information

Rating
6,181-st
Registered
Activity

Specialization

Specialist
Lead