Pull to refresh
23
0
Jameson @Jameson

User

Send message

Бизнес-ланч в “Танках Онлайн”, или несколько слов о бандлах

Reading time4 min
Views19K
Наступил обеденный перерыв. Вы идете в ближайший ресторан и заказываете себе бизнес-ланч: салат, суп, горячее и обязательно компот. Возвращаетесь на работу, заканчиваете рабочий день и идёте в спортзал, у вас, разумеется, годовой абонемент, он ведь выгоднее, чем месячный. Оптом всегда дешевле. В данной статье мы хотим рассказать о том, как мы применяем механику комплектов (бандлов) в игре “Танки Онлайн”: на какие KPI ориентируемся, какими принципами руководствуемся и с какими трудностями столкнулись.

Бандлы — очень удачная вещь с любой точки зрения. Помню, на своем первом месте работы я предпочитал обед всегда брать с собой. Так выгоднее, да еще и мамина кухня — самая вкусная и здоровая на свете. Ситуация изменилась, когда коллеги предложили мне сходить на бизнес-ланч. За двести рублей я вволю наедался небольшими порциями разных блюд. Вскоре отказался от маминой кухни и стал питаться только бизнес-ланчами. “Так выгоднее”, — вновь заключил я. Говоря языком геймдева, я конвертнулся в донатора. Первое преимущество бандлов — повышение конвертации в платящего пользователя. Несколько лет спустя моей первой покупкой в Steam тоже стал бандл.



Кстати о Steam. Вы ведь наверняка когда-либо покупали бандлы в Steam?
Читать дальше →
Total votes 51: ↑32 and ↓19+13
Comments39

Автоматическое исключение из рассылки нерабочих email адресов

Reading time2 min
Views14K
image
Представьте, что у Вас есть веб-приложение и одной из его функций является массовая рассылка новостей Вашим пользователям.
По некоторым причинам часть email адресов пользователей нерабочие или неверно заполненные. Хорошо бы таких пользователей автоматически отписать от рассылки?
Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments11

История одного Google Chrome расширения

Reading time18 min
Views68K
В один прекрасный день, за пару часов до конца работы, мне приходит задача: «Нужно написать приложение для браузера, которое должно по клику пользователя отправлять данные со страницы на сайт клиента. Что за приложение и какой браузер — полностью на ваш выбор...».

Немного поразмыслив я пришел к варианту google chrome extension:

  • Crome использует Blink движок (до апреля 2013 года использовался WebKit), Blink является форком WebKit (а это Safari), так же не забываем новую Opera'у (хотя я все еще использую старую с bookmarks'ами). Таким образом, написав расширения для chrome, мы с минимальными переделками (а то и без них) сможем его портировать на еще 2 браузера
  • Нет опыта работы с API Google Chrome
  • Google все-таки компания добра :)


Когда мысли немного улеглись, первое что я сделал — это ввел в поиске харба "расширение Google Chrome". Увидев обширный вариант статей по данной теме, я со спокойной душой ушел домой полностью уверенный в том, что завтра с утра прочитав их, к концу рабочего дня дело будет 'в шляпе' (как же я тогда ошибался). Прочитав парочку их них я имел общее представление о том как это работает, но этого оказалось мало для воплащения моих идей. Что ж, приступим…
Читать дальше →
Total votes 40: ↑22 and ↓18+4
Comments15

Удобства на улице для MySQL драйвера в Node.js

Reading time12 min
Views60K
Кто пишет на Node.js и использует MySQL, тот непременно знает, что наш дорогой товарищ Felix Geisendörfer три года назад совершил героический и самоотверженный подвиг: в одиночку разработал очень качественный драйвер для подключения к MySQL, нативно реализовав двоичный протокол этой СУБД на JavaScript. Потом к проекту подключились другие уважаемые товарищи, была реализована поддержка пулов соединений, кластеров, транзакций, восстановление при временной утере соединения и т.д. Сейчас драйвер является самым развитым, хорошо проработанным и активно поддерживаемым из того, что мы имеем в открытых репозитариях npm и github. Удивительно даже, что при хорошо проработанной низкоуровневой реализации, все удобства, которые предоставляет это драйвер для прикладного разработчика, сводятся к одному методу query. Для меня лично, этого очень мало, ну привык дедушка к удобствам для возврата скалярных значений, строк и столбцов в массивы, интроспекции структур БД. Так что, с удовольствием делюсь этими наработками с вами, мои дорогие Хабравчане, но предупреждаю, что все удобства будут на улице. Есть конечно вариант тесной интеграции с драйвером, но FelixGe желает оставить драйвер исключительно низкоуровневым, поэтому я остановился на варианте внешней библиотеки с добавлением к драйверу через примеси. В виде примесей, удобства попали и в платформу Impress, а так же, опубликованы как патч к драйверу. О функционале и вариантах использования далее.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments26

Делаем свой персональный Skype, пошаговая инструкция создания WebRTC приложения

Reading time4 min
Views139K
WebRTC

WebRTC позволяет реализовать real-time аудио/видео связь через браузер (firefox и chrome).

В этом топике я расскажу как реализовать простейшее WebRTC приложение.
Читать дальше →
Total votes 102: ↑98 and ↓4+94
Comments28

Laravel. Установка, настройка, создание и деплой приложения

Reading time55 min
Views184K
Итак, у вас есть желание попробовать или узнать о фреймворке Laravel.

Если вы хорошо знакомы с другими PHP фреймворками — для вас это не составит особого труда, если же нет — это отличный выбор для первого фреймворка.

Laravel - PHP framework for artisans!

Статья очень большая. Рекомендую читать ее полностью во время выходных.

Для ленивых:
GitHub
Приложение

Начнем!
Total votes 37: ↑33 and ↓4+29
Comments68

PicUntu 4.5 installer: легкий способ установить Ubuntu на устройства с Rockchip RK3188

Reading time1 min
Views44K


Еще в январе на Хабре публиковалась новость о новом дистрибутиве Linux, PicUntu, предназначенном для установки Ubuntu на устройства с Rockchip RK3188 (в основном это мини-ПК, TV boxes и прочее). Теперь появился GUI-установщик, который позволяет без всяких проблем установить данный дистрибутив, с чем могут справиться не особо опытные пользователи.

Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments19

Система управления Ansible

Reading time25 min
Views252K


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

Чтобы упростить процессы настройки и конфигурирования серверов, можно также писать shell-скрипты. Но и этот способ вряд ли можно назвать совершенным. Скрипты нужно постоянно изменять, подстраивая их под каждую новую задачу. При их написании необходимо учитывать различие операционных систем и версий. Не будем забывать и о том, что отладка скриптов отнимает много усилий и забирает немало времени.

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

Со всеми сложностями, о которых идет речь выше, мы хорошо знакомы на собственном опыте: у нас имеется 10 точек присутствия с NS-серверами, расположенные в разных точках планеты. На них необходимо регулярно вносить различные изменения: обновлять операционную систему, устанавливать и обновлять различное ПО, изменять конфигурцию и т.п. Мы решили все эти операции автоматизировать и внедрить систему удаленного управления конфигурациями. Изучив имеющиеся решения, мы остановили свой выбор на Ansible.

В этой статье мы бы хотели подробно рассказать о его возможностях этого инструмента управления конфигурациями и поделиться собственным опытом его использования.
Читать дальше →
Total votes 50: ↑47 and ↓3+44
Comments49

Android: Обработка СМС

Reading time4 min
Views75K

0. Вместо вступления


Периодически (когда у меня выпадает свободный вечер, и наш «клуб» организует игру) я играю в регбол. «Клуб» организован таким образом, что в день игры всем участникам приходит СМС такого вида:

Регбол! Сегодня в 19-30. Двор школы №30: ул. Володарского, 20. Открытая площадка с резиновым покрытием. Тел. 8 (951) ***-**-**.

И вот я подумал — почему бы не написать небольшое приложение, которое будет отлавливать эти сообщения, и забивать их в гугл-календарь. Зачем? Да, в основном, just for fun, ибо я не настолько занятой человек, чтобы мне были жизненно необходимы автоматические секретари.

Итак, приложение будет уметь следующее:
  • Следить за входящими сообщениями. Если пришло сообщение от адресата RM FIGHT, то нужно сверить текст сообщения с шаблоном, и при совпадении создать мероприятие в гугл-календаре. Если же текст сообщения с шаблоном не совпадает (например, просто какие-то новости пришли), то сохраняем сообщение в базе, чтобы потом можно было его прочитать.
  • Показывать сообщения от этого адресата, не попадающие в категорию «Оповещение об игре» (новости, реклама и т.д.).

В рамках статьи я полагаю, что у читателя есть базовые знания — как создать проект, что такое файл Manifest, и с чего вообще начинать разработку под андроид — на этот счет есть куча разных туториалов, и здесь на этом останавливаться не будем. В то же время статья не предназначена для продвинутых андроид-девелоперов, в ней будут рассматриваться достаточно базовые вещи, вроде мониторинга и обработки смс, работы с базой данных, подключения по HTTP.
Читать дальше →
Total votes 22: ↑15 and ↓7+8
Comments12

Быстрые треки на google maps

Reading time11 min
Views32K
Я работаю над визуализацией парапланерных соревнований — пишу плеер просмотра гонки для Airtribune.com. В процессе работы мне попадаются интересные и нестандартные задачи. Одна из них — задача быстрой отрисовки маркеров и треков на карте google maps.

Масштабы такие: есть ~200 трекеров в довольно ограниченной области (50x50км), каждый передает данные о своем положении раз в 10 секунд. Нужно их все отрисовать на карте и плавно перемещать при изменении координат. За каждым маркером должен отрисовываться трек. Картинка примерно следующая:



Скоро обнаружилось, что встроенные объекты — google.maps.Marker и google.maps.Polyline — для данной задачи работают слишком медленно. Была куча идей по оптимизации, и в результате получилось решение на canvas-е, которое работает со скоростью 40fps даже на тысяче маркеров. Впрочем, fps вы можете померить сами — я собрал тестовое приложение для сравнения 4-х движков, в котором на лету можно подключать разные фишки и смотреть на скорость работы.

Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments13

Impress: многоцелевой сервер приложений для Node.js

Reading time7 min
Views17K
Несмотря на заметные успехи, Node.js все еще остается специализированной технологией, которой преимущественно закрывают узкие места в системах, написанных в другом стеке технологий. Причина такого положения кроется в том, что сама по себе нода не имеет многих библиотек, к которым мы привыкли на других языках и которые обеспечивают быструю разработку именно прикладного ПО. Например, для того, чтобы разделить в коде обработчики разных URL, отдавать статические файлы, организовывать сессии, запускать нескольких потоков, иметь доступа к БД, кешировать данные в памяти, разграничивать права пользователей, иметь логи и ротировать их, создавать сетевое API, рендерить шаблоны, настраивать URL-реврайтинг, обеспечивать быструю доставку событий с сервера на клиенты, для всего этого, и многих других задач, используются отдельные библиотеки (модули). Разные модули написаны разными разработчиками, сложно стыкуются, конфликтуют. В общем, мы решили, весь этот набор обязательного функционала, необходимого практически в каждом веб-приложении, объединить в один сервер приложений и повысить, таким образом, связанность кода, сделать ядро сервера приложений монолитным и более согласованным, чем решения, собранные из отдельных библиотек. Проект Impress уже анонсировался как прототип, а сейчас предоставляет весь необходимый арсенал для быстрой разработки приложений, что протестировано на десятке живых проектов. Impress значительно отличается от другой широко распространенной платформы так же, как импрессионизм отличается от экспрессионизма, то есть, производит целостное, хорошо продуманное эстетическое впечатление, в противоположность внезапному выбросу эмоций. Но мы, не вовлекаясь в критику чужого кода, перейдем к демонстрации конструктивных особенностей Impress.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments15

Linux Malware Detect — антивирус для веб-серверов

Reading time4 min
Views65K


Интернет уже не тот, что прежде — кругом враги. Тема обнаружения непосредственного заражения сайта и поиска вредоносных/зараженных скриптов на взломанном сайте рассмотрена слабо, попробуем это исправить.
Итак, представляем вашему вниманию Linux Malware Detect.

Linux Malware Detect (LMD) — это сканер для Linux, предназначенный для поиска веб-шеллов, спам-ботов, троянов, злонамеренных скриптов и прочих типичных угроз характерных для веб-пространств и особенно актуален для виртуальных шаред-хостинг платформ. Главное отличие от прочих Linux-антивирусов — его веб направленность, сканирование файлов веб-сайтов, ведь обычные антивирусы ориентируются на более глобальные угрозы уровня системы.
Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments48

Простой способ защиты от распределённого брутфорса доступов к CMS

Reading time3 min
Views13K
Всем добрый день.
Команда Русоникса решила проблемы с электричеством и написала прекрасный пост с красивыми картинками про «Распределенную брутфорс-атаку на CMS с точки зрения хостера».
Впрочем, там не хватает одного — собственно реализации.

Итак, цели этого поста:
  • Эскизная реализация описанной в статье схемы на Nginx + немного бэкэнда в виде php;
  • Поиск решения «покрасивее»

Если интересно, прошу под хабракат.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments12

Несколько интересностей и полезностей для веб-разработчика (выпуск 3)

Reading time3 min
Views60K
Доброго времени суток, уважаемые хабравчане. С прошедшим вас днем программиста. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Cloudconvert




Великолепный онлайн конвертер файлов, который поддерживает в общей сложности 140 форматов следующих типов: archive, audio, cad, document, ebook, image, presentation, spreadsheet, video. Синхронизируется с Dropbox и Google Drive, благодаря чему возможно использование на всех смартфонах. А самое приятное это то, что для данного сервиса существует функциональное и простое API.

Читать дальше →
Total votes 145: ↑134 and ↓11+123
Comments29

Медиацентр из MacMini и Rapsberry PI

Reading time6 min
Views141K
Или самый простой и удобный медиацентр, понятный всем домочадцам



картнка для привлечения внимания

Привет, Хабр! С каждым днем собрать дома медиацентр становится все проще. Вариантов много – от HTPC из старого железа до безымянных устройств размером с флэшку. На хабре было много обзоров самодельных бесшумных HTPC, android-боксов и нет-топов для реализации домашних медиасерверов. Я испытал много разных вариантов, прежде чем найти самый подходящий для себя и, самое главное, для домочадцев.

Задача-минимум:
1. Собрать и структурировать всю медиатеку воедино
2. Сделать ее максимально доступной к просмотру на двух телевизорах в разных комнатах
3. Иметь возможность просмотра или загрузки (для оффлайн просмотра) фильмов из медиатеки на мобильных устройствах
4. Удаленный запуск торрентов с мобильных устройств
5. Бесшумная работа устройств.

Путем проб и ошибок, я пришел к использованию XBMC на стареньком Mac-mini + Rapsberry Pi.
Пробы, ошибки, и удобная конфигурация под катом.
Читать дальше →
Total votes 70: ↑61 and ↓9+52
Comments75

RESTful API на Node.js + MongoDB

Reading time16 min
Views259K
Я, будучи разработчиком мобильных приложений, часто нуждаюсь в backend-сервисах для хранения пользовательских данных, авторизации и прочего. Конечно, для подобных задач можно использовать BaaS (Parse, Backendless, etc…). Но свое решение — это всегда более удобно и практично.

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

В данной статье будет рассмотрено построение REST API для мобильного приложения на Node.js с использованием фреймворка Express.js и модуля Mongoose.js для работы с MongoDB. Для контроля доступа прибегнем к технологии OAuth 2.0 с помощью модулей OAuth2orize и Passport.js.

Пишу с позиции абсолютного новичка. Рад любым отзывам и поправкам по коду и логике!

Содержание

  1. Node.js + Express.js, простой web-сервер
  2. Error handling
  3. RESTful API endpoints, CRUD
  4. MongoDB & Mongoose.js
  5. Access control — OAuth 2.0, Passport.js

Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments63

Tronsmart MK908 — новое поколение мини-компьютеров на 4-х ядерном чипе Rockchip RK3188

Reading time11 min
Views214K
image
После мини-компьютеров с чипом RK3066 на рынок выходит новое поколение на 4-х ядерном чипе Rockchip RK3188. Чип выполнен по 28нм техпроцессу и состоит из 4-х ядерного процессора архитектуры Cortex-A9 с частотой работы до 1.8 ГГц и видеоускорителем Mali 400MP. Видеоускоритель остался прежним от RK3066, но разогнан до частоты 600МГц. Объём оперативной памяти по сравнению с прошлым поколением увеличился вдвое и составляет 2ГБ DDR3 памяти (хотя надо заметить, что на RK3066 тоже есть одно устройство с 2Гб RAM — это CX-803-II).
Сегодня мы рассмотрим одно из первых устройств на обновлённой платформе — Tronsmart MK908. А также узнаем насколько удобно пользоваться беспроводной мышью-клавиатурой iPazzport для управления системой Android.
Читать дальше →
Total votes 86: ↑79 and ↓7+72
Comments72

MK 809III Android Mini PC: компьютер в кармане

Reading time6 min
Views137K
ОС Android уверенно захватила рынок смартфонов и планшетов, на очереди — банкоматы, чайники и унитазы автомобильные навигаторы, моноблоки, цифровые фотокамеры, телевизоры. Впрочем, если есть желание, заполучить Android в мониторе/телевизоре можно уже прямо сейчас: с недавних пор китайские умельцы наловчились выпускать мини-компьютеры на базе Android, которые по размерам ненамного превосходят USB-флешки и в основном ориентированы на работу вместе с телевизором. На Amazon или Ali Express таких моделей — вагон и маленькая тележка, а цены начинаются от $30. Природное любопытство взяло верх над жабой, живущей в каждом из нас, и я решился заказать такую шутку, чтобы проверить в деле. Сразу отмечу, что у меня в наличии телевизор LG47LM669S с вполне вменяемой прошивкой, обеспечивающей воспроизведение множества форматов, да и телевизор постоянно подключен к мощному компу, с которого смотрим кино, поэтому «USB-stick» был заказан исключительно из любопытства.

Проверять, так проверять, поэтому я выбрал самую продвинутую модель, MK 809III — на базе четырехъядерного процессора и под управлением Android 4.2. Судя по предложениям интернет-магазинов, в основном в таких мини-ПК используются процессоры Rockchip. В моем случае это Rockchip RK3188, более дешевые варианты оснащаются двухъядерным процессором Rockchip RK3066. Кстати, наблюдая такое «разнообразие», сам собой напрашивается вывод о том, что все «USB-sticks» есть клоны референсного мобильного устройства, разработанного самой Rockchip.


Читать дальше →
Total votes 43: ↑36 and ↓7+29
Comments39

Делаем «mindmap» на Javascript с локальным хранением в базе данных браузера

Reading time25 min
Views56K

Это небольшой учебный пример редактора карты памяти. За счёт очень подробных комментариев и простого кода, понять его не составит проблем. Статья предназначена для знающих и изучающих Javascript.

Я опишу особенности создания редактора карты памяти, который использует базу данных браузера. Причём, это будет не LocalStorage, который не может превышать 5 мегабайт. Объём данных сможет превысить 100-200 мегабайт, так как используется IndexedDB или webSQL, смотря что доступно в конкретном браузере.

Исходники выложены в открытый доступ на Github.

Мы уложимся в 520 строк кода, при этом в нашей карте можно будет перетаскивать узлы между собой, удалять, переименовывать и создавать новые. А также можно будет назначать одну из 120 иконок через контекстное меню.

Секрет минимализма в том, что мы будем использовать проверенные в бою плагины:
  1. Ydn.db — хранение информации в базе данных браузера с автоматическим выбором лучшего метода и единым API
  2. jQuery context menu — контекстное меню, которое можно наполнять динамически при помощи Javascript
  3. jsPlumb — расширение позволяющее рисовать линии между HTML элементами
  4. jQuery UI — Drag&drop — перетаскивание элементов между собой


PS: Также мы научимся создавать «синглтон», облегчать себе асинхронное программирование при помощи jQuery и встроенного объекта $.Deferred(), а также при помощи плагина LiveReload, сохраним краску на клавише F5 при изменении свойств CSS и кода в HTML и Javascript.
Читать дальше →
Total votes 116: ↑108 and ↓8+100
Comments45

Много бесплатных книг по программированию

Reading time7 min
Views346K
Читать дальше →
Total votes 202: ↑192 and ↓10+182
Comments42

Information

Rating
Does not participate
Date of birth
Registered
Activity