Локальный web-сервер на платформе Андроид.

28 ноября 2013, 14:00

Локальный web-сервер на платформе Андроид.

Локальный web-сервер на платформе Андроид.

Большая катана -
Не всегда хорошо.
Малая даже удобней.

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

А речь поведём про то, без чего к маржинальным рынкам вообще не подступиться. Ибо действие «купил-продал» подразумевает терпеливое выжидание момента, когда на рынке явно обозначится валуй. Понятно, лично и в ручном режиме валуй никто отлавливать не станет. А заниматься этим суждено какому-нибудь специализированному софту.

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

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

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

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

Денвер под Виндой - это не хорошо.

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

И поделать с этим ничего нельзя. Только предотвратить, перезапуская Денвер дважды в сутки.

При этом можно сколько угодно менять конфигурацию Денвера, отключать от него ненужные модули, играться с версиями того же PHP. Вплоть до одури. Существенного результата это не даст - через часов 12 весь объём оперативки всё едино исчерпается, будучи съеденным непонятно каким местом.

Фатальный случай.

Причём это не причуды самой Винды, как модно считать в кругах линуксятников. Небольшой квест по замене Денвера на nginx, предпринятый местным автором года два назад, показал, что тот же самый бот и та же самая версия PHP крутятся в той же самой Винде без остановки месяцами. Без всяких утечек памяти.

Но нет предела человеческим желаниям...

О минимизации юнитов.

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

Как правило, внутри традиционного ноутбука обязательно есть кулер, пусть не сильно, но шумящий. И жёсткий диск, пусть слегка, но жужжащий. Оно, конечно, бывают конфигурации и без механики, но обычно под юнита выделяют либо полноценный ноут минимальной стоимости (у китайцев прайс на такие начинается от $150), либо вообще б/у. То и другое тишину отнюдь не блюдёт.

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

Раз на третий это надоест. Да и вообще, это изначально не самая умная мысль - выделять под юнита полноценную машину. Но чем тогда её заменить?

Тут есть варианты:

  1. Тупо поставить бот на сервер.

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

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

  2. Впилить бот в роутер :)

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

    Гипотетически возможно слегка доконфигурировать этот вебсервер, дабы поднять там поддержку PHP. Благодаря чему этот вариант сводится к предыдущему, но с одной поправкой - свой софт мы льём не на сервер, стоящий в непонятном месте, с доступом к нему неопределённого круга лиц, а в такое место, где этот софт вообще никому не прийдёт в голову искать.

    Если бы местный автор был чуть умнее, он бы так и сделал.

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

    Попытаемся научиться таким вещам.

PHP и локальный вебсервер на Андроиде.

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

В принципе, любой софт наподобие широко используемого приложения AirDroid, позволяющий управлять смартфоном с компьютера, подключённого к тому же роутеру, через который смартфон кушает Wi-Fi, является ничем иным, как нужным нам вебсервером. С той только разницей, что пользуемся мы им не на смартфоне, а на внешней машине.

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

Местный автор из исследовательских побуждений тупо перебирал все доступные бесплатные приложения такого рода из ГуглПлей, причём для любого из них путём недолгого гугления почти всегда удавалось запустить и PHP, и тестовый скрипт на локалхосте самого устройства (без всяких внешних машин). Другое дело, что не всё богатство функционала PHP оказывалось доступным - где-то не хватало iconv-а, где-то отсутствовал curl, или ещё какая нужная в хозяйстве вещь.

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

Перед Вами две картинки, клик в которые приводит в два полезных места:

Alfan L. Armansyah Palapa Web Server

Само приложение, весьма похожее на широко распиаренный, но платный ksweb, идеально нам подходит без всяких допиливаний. Пока что оно бесплатное по причине проживания его автора в Индонезии, жителям которой по какой-то неведомой местному автору причине от ГуглПлея ничего не обламывается. Так что они с гешефтом и не заморачиваются.

Palapa Web Server

На данный момент приложение включает lighttpd сервер, полноценный (не урезанный) PHP, MySQLи mSMTP практически последних версий, ну и phpMyAdmin с WebAdmin для тех, кому это добро сильно надо. Причём что не нужно, можно при запуске сервера даже и не включать.

На флешке Андроид-девайса появляется папка /sdcard/pws/www/, которая и является корневой для бота (или веб-приложения в виде сайта). Бот (или локальный сайт) открываются в стандартном для вебсерверов адресе и по стандартному же порту - http://127.0.0.1:8080/

Там же, но на порту 9999, будет панель WebAdmin, которая, на взгляд местного автора, избыточна. Файл конфигов позволяет управлять настройками столь же успешно, и, в частности, поставить правильную дефолтную кодировку, без трогания которой руками на экране будут сплошные кракозябы. Больше ничего править не пришлось.

О стабильности работы.

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

Бот крутился в телефоне на протяжении выходных, полные двое суток. При этом телефон параллельно выполнял свои традиционные функции (принимал звонки и SMS-ки, сидел на связи клиентом ZELLO, информировал о поступивших платежах через клиента WebMoney, принимал сообщения с сайтов через Push Bullet, периодически обеспечивал связь по скайпу). При этом кушался Wi-Fi в качестве канала доступа в Интернет, ну и электричество из розетки.

Абсолютно ничто ничему не мешало, утечки памяти тоже не наблюдалось. Следовательно, вебсервер на андроиде, PHP в вебсервере, и бот в PHP - такая матрёшка абсолютно жизнеспособна.

Так что выбираем юнита.

Если остановиться на чём-то юзабилитипригодном, в более-менее привычном форм-факторе с кнопками, достаточно большим дисплеем, с LAN и Wi-Fi, а также USB портами (на всякий случай) и динамиками (чтобы бот громко кричал, если чем-то озадачен, и не может решить самостоятельно, как поступать в резко изменившихся условиях), то где-то в пределах $60 вполне может быть приобретён вот такой шестисотграммовый девайс на довольно свежем (на момент написания статьи) чипсете VIA WM 8880 Dual Core:

VIA WM 8880 Dual Core

Экран тут 9 дюймов, 1024*600 пикселей. Но, если бот не выводит на экран обширную информацию, а работает на манер демона, то столь масштабное по габаритам устройство не нужно, и достаточно даже семидюймового, с заметно меньшей ценой. Нужно только удостовериться, что в девайсе есть поддержка SD карт, имеется хотя бы 4GB памяти, и присутствует не менее 1GB оперативки. А операционка точно Андроид (а не какой-нибудь доисторический Windows CE).

Автор ничего не имеет против планшетов ещё меньших размеров, но сам ортодоксально тяготеет к более привычным на глаз штуковинам, с физическим Ethernet разъёмом стандартной 100 MB сети, и кнопками клавиатуры. Но в принципе не возражал бы против стоечки юнитов :)

Другие статьи категории «Маленькие лайфхаки»

Что делать, если нужный сайт заблокирован Роспотребнадзором.

Что делать, если нужный сайт заблокирован Роспотребнадзором. Местному автору в последнее время постоянно попадаются на глаза статьи в интернетах с воплями про 139-ФЗ, 187-ФЗ и последствия их применения. И хотя местному автору как бы глубоко наплевать на сабж, ибо местный автор по определению никак с этим сабжем не пересекается даже теоретически, но, как оказалось, все под богом ходим.

Бесплатная пластиковая неперсонифицированная карта.

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

О достоинстве гостевом, на ассамблеях быть должном.

О достоинстве гостевом, на ассамблеях быть должном. Писанный со слов царёва советника Алексашки Меньшикова для исполнения мужами государевыми и цивильными рескрипт: Перед появлением в многолюдье гостю надлежит быть: мыту старательно воды не жалеючи, без пропускания иных мест. Опосля цветошной водой обрызгану, дабы дамы морды не воротили от вони конской и пороховой; бриту с тщанием, дабы нежностям дамским щетиною мерзкою урону не нанести; голодному наполовину и пьяному самую малость.
28 ноября 2013, 21:50

№ 1Маржинальные рынки

Отличная статья! Можно не ждать выхода Ubuntu-phone :)

С удовольствием почитаем про маржинальные рынки, пишите на пяти листах, ждём.
Михаил
29 ноября 2013, 06:41

№ 3Девайс

Вадим, а что за девайс на последней картинке - нельзя ли ссылочку? ( а то поиск по картинкам что-то невнятное выдал)
Порядок обретения няшечек такой:

Ищем в Гугл-картинках по запросу "Laptop 8880" или иному (если выбираете другой чипсет), смотрим на внешний вид девайсов, выбираем подходящий, и переходим на сайт того или иного китайшопа.

Там уточняем поисковый запрос (на каждом китайшопе своя система обозначения лотов), и изыскиваем именно то, что нам надо.

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

То, что более адекватное здравому смыслу, испохаблено погаными надписями поверх изображения, и к использованию по назначению непригодно.
Андрей
30 ноября 2013, 17:16

№ 4Маржинальные рынки

Сдается, что основной посыл поста был выражен Мастером в самом первом предложении: прощупать интерес аудитории к некой теме ;)
Ну это так, досужие домыслы...
А вот прочитать парочку письменных од о маржинальных рынках - было бы замечательно. Особенно об авторском взгляде на этот вопрос.
Timur
27 августа 2014, 17:10

№ 6Palapa server

Есть ли возможность сервер настроить что бы он читал кодировку windows-1251... ? По ставил движок dle а там одни ромбики.
В левом верхнем углу лого, тапнуть по нему.
Вылезут настройки.
Далее:
- Web Server Settings
- PHP
- Edit Config
- default_charset= - и вот тут пишите нужную кодировку.

При всех прочих проблемах проявляете любознательность.
Всё настраиваемо.
Sander
15 октября 2014, 04:47

№ 7Вопрос

Здравствуйте!
Спасибо за интересную публикацию!

Уточните, пожалуйста, есть ли возможность доступа к сайту, расположенному на этом веб сервере от других устройств в локальной сети или доступ возможен только из устройства, на котором он запущен? А доступ из Интернета?

Заранее благодарен за ответ.
Сервер работает только внутри телефона/планшета.
Снаружи не виден.
Константин
Все заметки категории «Маленькие лайфхаки»