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

Разработчик

Send message

Крошечный Excel на чистом JavaScript (30 строк кода)

Reading time2 min
Views137K
Особенности:
  • Около 30 строк обычного JavaScript
  • Использованные библиотеки: отсутствуют
  • Синтаксис как в Excel (формулы начинаются с "=")
  • Поддерживаются произвольные выражения(=A1+B2*C3)
  • Обнаруживаются циклические ссылки
  • Автоматическое сохранение в localStorage

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

Продвижение приложений в AppStore (Google Play)

Reading time9 min
Views53K

Прежде чем мы написали этот материал, наши приложения загрузили более 2 000 000 раз, мы провели порядка 50 больших промо кампаний, побывали в топах AppStore более, чем в 24-х странах пока наконец не собрали всё это в один большой work flow. В статье почти нет очевидных вещей про ключевые слова, красоту иконок, скриншотов и рекламные кампании. Мы попытались привести работу продуктовой компании к единой модели, ответив на вопросы: «что?», «когда?», «зачем?» и даже на вопрос «а дальше что?». Если вы разрабатываете собственное приложение, хотите начать это делать или у вас просто есть друг разработчик или маркетолог продуктовой компании — в этой статье вы найдёте много полезной информации.
Читать дальше →

Контур.Эльба под Android. Записки разработчика

Reading time7 min
Views20K
В конце прошлого года я присоединился к команде веб-сервиса Эльба, и мы приступили к разработке «электронного бухгалтера» для Android.

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

Статья будет полезна:
  • андроид-разработчикам;
  • руководителям разработки веб-сервисов, которые подумывают выходить на мобильный рынок;
  • предпринимателям, которые уже давно ищут способ «запихнуть свой бизнес в телефон».

Масса технических и не очень подробностей, а также целый мегабайт скриншотов.

Простой USSD-запрос в Android 4.0+

Reading time3 min
Views39K
В Android до сих пор нет API для USSD-запросов. Баг висит уже 6 лет!
Я находил разные способы создания и получения информации из USSD запросов, но в итоге ни один не устроил.
Затем я нашел упоминания о том, что с помощью обновленных в Android 4.0 служб спец. возможностей можно легко получать содержимое окон и так получить текст из окна и результатом USSD запроса. Попробовал — получается отлично! Без перезагрузок и надежно.
Читать дальше →

Разбор протокола World Of Tanks

Reading time8 min
Views116K
Часть первая: инструментарий мелкосерийного изобретения велосипедов

Почему и зачем: длинная и необязательная преамбула

Хорошо, что опыта игрового модостроительства у меня было немного — так, пару кастомных прицелов для Deer Hunter 2005 и «нелицензионный» недоклиент VATSIM/FSD с сопутствущим «взломом» протокола последнего. Ещё лучше, что ни разу не приходилось с головой погружаться в сколь-нибудь трудоёмкую и длительную отладку и дизассемблирование. То есть, с IDA и OllyDBG я поверхностно знаком, но не как с ежедневными рабочими инструментами.

В WOT играю с начала 2011 года. Не запоем, а, скорее, набегами — по 5-6 боёв вечером. Было время 2 года назад, наш клан состоял в Красном Альянсе, ходил на глобалку по ночам, выполнял какие-то тактические задачи на европейском ТВД, устраивал тренировки и спарринги, вовсю бурлили внутриигровые политические страсти, отпочковывались учебные кланы. Сейчас всего этого уже нет, и наш золотой ёжик превратился в табличку над «Домом Ветеранов».

Впадать в ересь сравнения танков с другими MMO не буду, так как хорошо знаком только с танками. Тем более не знаком ни с одним другим проектом, использующим BigWorld, поэтому искренне верю WarGaming'у на слово, что существуют и (не)тривиально (не)преодолеваются различные техномагические ограничения движка — на размер карты, на максимальную скорость юнита, на численность команд и прочее. Оставаясь в рамках внутренней критики, я также понимаю, что, с точки зрения целевой аудитории танков вообще, и их активного игрового коммьюнити в частности, каждое нововведение из очередного патча, безусловно, гораздо более востребовано и обосновано, сколь бы малым оно ни было. И что оптимизировать Motion Blur на несколько процентов это, безусловно, важнее, чем отменить принципиальную неизменяемость привязки действий на кнопки мыши для тех, кто привык на них ставить движение вперёд-назад (DOOM-стайл, да).

Итак, я уверен, что в обозримом будущем никаких планов по введению полноценного режима спектатора в WOT нет и не будет. Под полноценным режимом спектатора я понимаю множественные подключения игроков в сеанс боя изначально как невзаимодействующих на игру «привидений»-наблюдателей, а не на технике. Это тот самый режим, из-за отсутствия которого комментаторы на чемпионатах WOT вынуждены заходить в бой 15-м танком, убиваемым своими на базе. Это тот самый режим, из-за которого появились моды «командирского zoom» и «кинематографической камеры» — по сути, просто костыли. А нужен такой режим затем, чтобы командир роты занимался командованием, а не скакал впереди на лихом танке по-чапаевски, чтобы он видел ситуацию на карте в целом непрерывно, а не отвлекался на неё в пылу нападения из засады. В идеале, командиру даже не нужны красоты трёхмерного мира — достаточно одной большой карты на весь монитор с игровой ситуацией в реальном времени — HP, повреждениями модулей, членов экипажа, направлениями стволов и прицелов союзной техники, засвеченных в каждый момент вражеских юнитов и прочей вспомогательной информации.

WOT предоставляет широкие возможности модостроительства, но такая идея выходит за рамки классического «заменить пару swf-файлов на свои». Потребуется перехват и разбор самого игрового протокола для того, чтобы иметь возможность передать на командирский планшет своё видение игровой ситуации.
Читать дальше →

Data mining: Инструментарий — Theano

Reading time6 min
Views51K

В предыдущих материалах этого цикла мы рассматривали методы предварительной обработки данных при помощи СУБД. Это может быть полезно при очень больших объемах обрабатываемой информации. В этой статье я продолжу описывать инструменты для интеллектуальной обработки больших объёмов данных, остановившись на использовании Python и Theano.
Читать дальше →

Вероятностные модели: LDA, часть 2

Reading time6 min
Views24K
Продолжаем разговор. В прошлый раз мы сделали первый шаг на переходе от наивного байесовского классификатора к LDA: убрали из наивного байеса необходимость в разметке тренировочного набора, сделав из него модель кластеризации, которую можно обучать ЕМ-алгоритмом. Сегодня у меня уже не осталось отговорок – придётся рассказывать про саму модель LDA и показывать, как она работает. Когда-то мы уже говорили об LDA в этом блоге, но тогда рассказ был совсем короткий и без весьма существенных подробностей. Надеюсь, что в этот раз удастся рассказать больше и понятнее.

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

Привязка сессии к серверу в Nginx. Nginx-sticky-module

Reading time3 min
Views55K
Sticky session — метод балансировки нагрузки, при котором запросы клиента передаются на один и тот же сервер группы.

Самый простой способ закрепить сессии пользователя за конкретным сервером в Nginx — использовать метод ip-hash:
Читать дальше →

Джентльменский набор тестировщика по версии ZeptoLab

Reading time4 min
Views55K

Вступление


Как-то раз мы съездили на конференцию SQA days, где мне довелось попасть на доклад «Джентельменский набор тестировщика». Хотелось бы продолжить эту тему и рассказать о своих тулзах, облегчающих жизнь тестировщика.

Справедливости ради стоит отметить, что у нас, в Zeptolab, работает всего несколько QA Lead’ов, а всю основную работу проделывают аутсорсеры. Тем не менее, на нашу долю приходится обширный список обязанностей, требующий глубоких знаний о продукте, работе различных sdk и методов диагностики работы приложений.

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

Веб-дизайн, inkscape и все-все-все, часть 1

Reading time4 min
Views36K
Есть для дизайна специальные программы как Sketch, но они есть только на маках (а у меня их нет) и занимаются только дизайном, хотя судя по обзорам делают это хорошо (unix-way как-никак). А есть фотошопы, гимпы и прочие корелы, которые используют не по назначению, об одном из таких случаев и есть этот топик. Картинка для привлечения внимания (на дизайн не претендую, да и не считаю его лучше того что есть сейчас, просто картинка):


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

Учимся логично делать прототипы

Reading time9 min
Views65K
Зачем вам это?

  • Если вы знаете как делать сайт, этот метод поможет вам убедить заказчика, почему вы предлагаете ему именно этот вариант.
  • Если вы заказываете сайт, то сэкономите от 2 до 10 часов объяснений что вам нужно и зачем.
  • Если вы стартапер, то вся ваша команда сможет участвовать в создании нового сайта или лэндинга. Тот самый случай, когда одна голова хорошо, а команда лучше.
  • Если вы учите стартаперов, то сможете помочь им выглянуть из позиции «я знаю как надо» и без сопротивления подвести их к началам CusDev-a.

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

Делаем backup Google или паранойя по поводу санкций. Owncloud и другие открытые решения

Reading time4 min
Views110K


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

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

Копирование разделов жёсткого диска средствами GNU/Linux: как обойтись загрузочной флешкой там, где раньше нужен был Акронис

Reading time12 min
Views209K
С тех пор как до меня дошла благая весть о существовании операционной системы под названием GNU/Linux, которую используют все настоящие программисты, я несколько раз пытался заменить ей детище Билла Гейтса и несколько раз потерпел неудачу.

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

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

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

В большинстве случаев это было не фатально. Вместо привычного foobar всегда можно послушать музыку на Rhythmbox. Вместо Microsoft Office есть OpenOffice. Да, его совместимость с продуктом корпорации зла порой оставляет желать лучшего, но им вполне можно пользоваться для решения повседневных задач среднестатистического пользователя. Обо всяких Файрфоксах, Операх и Хромах я вообще молчу.

Но в некоторых случаях приходилось перезагружать компьютер, выбирать в меню загрузчика пункт Microsoft Windows и делать всё по старинке. Такой задачей было например снятие образа логического диска в целях переноса на другой физический носитель, потому как текущий уже изрядно поистрепался.
Читать дальше →

Краткое введение в rvalue-ссылки

Reading time9 min
Views173K
Перевод статьи «A Brief Introduction to Rvalue References», Howard E. Hinnant, Bjarne Stroustrup, Bronek Kozicki.

Rvalue ссылки – маленькое техническое расширение языка C++. Они позволяют программистам избегать логически ненужного копирования и обеспечивать возможность идеальной передачи (perfect forwarding). Прежде всего они предназначены для использования в высоко производительных проектах и библиотеках.

Введение


Этот документ даёт первичное представление о новой функции языка C++ – rvalue ссылке. Это краткое учебное руководство, а не полная статья. Для получения дополнительной информации посмотрите список ссылок в конце.

Rvalue ссылка


Rvalue ссылка – это составной тип, очень похожий на традиционную ссылку в C++. Чтобы различать эти два типа, мы будем называть традиционную C++ ссылку lvalue ссылка. Когда будет встречаться термин ссылка, то это относится к обоим видам ссылок, и к lvalue ссылкам, и к rvalue ссылкам.
Читать дальше →

7 основных принципов юзабилити для интернет-магазинов (перевод)

Reading time5 min
Views43K


Какое влияние оказывают веб-страницы продуктов интернет-магазина на уровень конверсии? Ну, это как сказать. Но факт в том, что страница продукта – это ваш последний шанс побудить пользователя совершить покупку.

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

Вот где пригодятся методы юзабилити.
Читать дальше →

mysqlnd — проводник между PHP и MySQL

Reading time16 min
Views67K


Расширение mysqlnd появилось ещё в PHP 5.3, но до сих пор малоизвестно среди разработчиков. Однако оно незаменимо, если ваша система основана на MySQL. Если вы хотите узнать, почему это расширение так важно, что оно собой представляет, как его использовать и какие оно даёт преимущества — читайте статью.
Читать дальше →

Библиотека для совершения покупок внутри приложений (Android In-App Billing v.3)

Reading time3 min
Views34K

Checkout («касса», «кассовый аппарат») — это библиотека для совершения покупок внутри приложений на базе Android In-App Billing v.3. Основная цель — уменьшить время разработчика, затрачиваемое на внедрение платежей в Андроид приложения. Проект был вдохновлён библиотекой Volley, и проектировался для того, чтобы быть максимально простым в использовании, быстрым и гибким.
Читать дальше →

Настройка GUI в линуксе для мониторов с High DPI

Reading time3 min
Views37K
В последнее время появилось достаточно много мониторов с высоким разрешением, 150 dbi и выше, особенно в ноутбуках. И при этом всё выглядит жутко маленьким.
Причина этого — система думает что у Вашего монитора разрешение 96..100 dpi.
Решать это только увеличением размера шрифта неправильно, т.к. размеры всех остальных элеменов интерфейса остаются маленькими. Надо чтобы графическая оболочка сама это делала.

Мне с решением этой проблемы пришлось весьма долго рыться в интернете, собирая мелкие заметки, т.к. не оказалось места где бы это можно было увидеть всё вместе.

Ниже будет идти список где что поправить, все параметры привожу для своего монитора — 13,3" при 2560x1600, это даёт 226 dpi. Более высокое разрешение сейчас я видел только в ноутбуке Fujistu U904 — 262 dpi.
Читать дальше →

Понимание и работа с данными в WordPress. Часть 1. Введение

Reading time5 min
Views101K

Данная статья является переводом первой статьи Rachel McCollin из цикла о данных в WordPress. В ней по полочкам разложена структура данных, типы контента и их взаимосвязь в WordPress. Будет полезна в первую очередь новичкам, но и профессионалы могут найти для себя что-либо новое.
Освежить знания по WP

Ошибки при проверке внутренних платежей Android-iOS и их решение

Reading time6 min
Views18K
Disclaimer. Этот пост написан на основе доклада на SQADays’15. Вы можете также посмотреть видео выступления или полистать презентацию. Обращаю внимание, что доклад был начального уровня, то есть пост будет интересен в основном менеджерам и начинающим тестировщикам. А также на то, что автор — ненастоящий сварщик и местами делает довольно грубые округления.

Меня зовут Алёна, и я релиз-менеджер. Отдел компании i-Free, в котором я работаю, в основном занимается приложениями под iOS и Android. Ещё мы поддерживаем Tizen, Windows Phone, альтернативные сторы, но в данном посте речь пойдёт об Apple iOS Appstore и Google Play.
В обоих маркетах, помимо платных и бесплатных приложений, есть возможность проводить внутренние платежи — ин-аппы (In-App Purchases).

Почему я рассказываю про тестирование ин-аппов? Потому что могу!
Будучи релиз-менеджером, я участвую в проектах обычно в начале разработки и в конце тех итераций, которые заканчиваются выкладкой в сторы. Перед началом проекта выдаю разработчикам ключи и сертификаты, а к концу работы над версией разработчики отдают мне билды для релиза. Но между этими точками есть момент, когда надо завести внутренние платежи — ин-аппы и выдать тестировщикам тестовые аккаунты. И вот на этом этапе иногда случается что-то странное, когда разработчики считают, что у них всё хорошо, а тестировщики — что всё плохо.

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

Information

Rating
6,186-th
Registered
Activity

Specialization

Specialist
Lead