126

Re: Программирование. Как сделать сервер дома?

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

Регистрация очень простая. Просто вводите несуществующее логин (или оставляете поля пустыми), автоматом на регистрацию попадаете (никаких емайлов и личных данных).

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

127

Re: Программирование. Как сделать сервер дома?

Mars пишет:

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

Регистрация очень простая. Просто вводите несуществующее логин (или оставляете поля пустыми), автоматом на регистрацию попадаете (никаких емайлов и личных данных).

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

Спасибо за Ваш упорный труд! А последнюю версию не будете выкладывать в общий доступ или в личку?

128

Re: Программирование. Как сделать сервер дома?

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

..короче там сложно разобраться чтобы запустить. Вообще планировал (и еще планирую) допилить так чтобы можно было выложить. Просто даже нормальную справку по регистрации занимает времени написать.

И кстати, благодаря этому я таки устроился программером JS (сменил профессию с конструктора дизайнера), уже 3 месяца так прокачиваю моск на новой работе (как нормально делать надо было). По новым знаниям переписываю.  cool

129

Re: Программирование. Как сделать сервер дома?

Думаю да, OpenGTS есть, там какие-никакие, а отчеты уже тоже есть.

130

Re: Программирование. Как сделать сервер дома?

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

Больше внимание уделяю адаптации под мобильный. Сейчас новая доработка. Рисуется канвасами (чтобы минимизировать загрузку иконок). Все векорной графикой, линии тупо по координатам в пикселях по формулам веду. Андроид 2.6 не все что хотелось бы поддерживает (rotate, в частности, маркеров не поддерживает). Пришлось все канвасом и в канве уже и ротайт и скале есть.
http://f4.s.qip.ru/s6WVN3Jp.jpg

Отредактировано Mars (13-09-2013 21:36:22)

131

Re: Программирование. Как сделать сервер дома?

первая поломка. Кто-то зашел под демо и удалил меня )). Без защиты поломалась система (я там фигурирую в другой группе)
demo пришлось закрыть временно. Еле восстановил.. хорошо хоть копию бызы сохранил вчера.  tongue

Кто это сделал - можно заново регится.  big_smile

132

Re: Программирование. Как сделать сервер дома?

Mars пишет:

Кто это сделал - можно заново регится. 

поставь РО для демо логина.

133

Re: Программирование. Как сделать сервер дома?

Noname пишет:

поставь РО для демо логина.

это если ACL есть

Все, что нельзя написать на ассемблере, можно доделать паяльником (ц)

134

Re: Программирование. Как сделать сервер дома?

Да надо было условие поставить под демо входом удалить нельзя. А то я подключил фунцию чтобы меня не дергали за удалением, а демо ничем не отличался (там разьве что нельзя ДТП добавлять)

135

Re: Программирование. Как сделать сервер дома?

Я не программист только учусь на начальной стадии так сказать )
как работает система авторизации?
если вместо логина и пароля набрать в адресной строке напрямую к примеру http://mysite.ru/start.php

136

Re: Программирование. Как сделать сервер дома?

edgi - это обширный вопрос. Затрудняюсь создать урок по авторизации (тем более что у меня она тоже колхозным методом создана).
У меня выборка происходит после того как произойдет проверка соответствия введенного пароля и ника в базе - тогда просто в php выходит на условие include(start.php) куда опять выводятся данные соответствующие нику и паролю.


Для интересующихся, я смотрю набирает популярность серверный яваскрипт. Хоть и скрипт, который уступит бинарнику, но все же есть определенные преимущества.
Первое простота. Невероятная простота, многое сделано за вас. Люди самостоятельно добавляют модули (библиотеки) для работы. Создать тут сервер, как просто TCP, так и сразу для HTTP,  в 10 строк буквально - и все многопоточно. Не нужно как в яве заводить потоки.. они уже есть.
поддержка web.socked технология набирающая обороты не требующая разрыва соединения  переподключение для обновления контента. Если конечно не стоит задача использовать устаревшие браузеры до ie10 - самое оно.
установка ноды проста http://nodejs.org/

для примера прослушать порт, если вы хотите получить посылку от трекера.
Устанавливаете ноду, создаете текстовый файл к примеру server.js делаете копи паст кода ниже.

запуск из командной строки в текущей дирректории ..путь к файлу/ node server.js
аля создали многопоточный сервак слушающий порт в данном случае 3128. и можете смотреть что пришло от трекера если заведете его на свой ip  и этот порт 3128.
Невероятные уроки о которых можно только мечтать на русском!
http://learn.javascript.ru/nodejs-screencast

var net = require('net');

var HOST = '127.0.0.1';
var PORT = 3128;

// Create a server instance, and chain the listen function to it
// The function passed to net.createServer() becomes the event handler for the 'connection' event
// The sock object the callback function receives UNIQUE for each connection
net.createServer(function(sock) {

    // We have a connection - a socket object is assigned to the connection automatically
    console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);

    // Add a 'data' event handler to this instance of socket
    sock.on('data', function(data) {

        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        // Write the data back to the socket, the client will receive it as data from the server
        sock.write('You said "' + data + '"');

    });

    // Add a 'close' event handler to this instance of socket
    sock.on('close', function(data) {
        console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort);
    });

}).listen(PORT, HOST);

console.log('Server listening on ' + HOST +':'+ PORT);

137

Re: Программирование. Как сделать сервер дома?

все это я к чему. Текущий сервер у меня конечно отработал пол года и без сбойев на удивление, но принцип "тяжеловат".
Чистая ява просто складирует посылки в БД, а  связка JS апача и PHP потом периодически дергает базу.

Сейчас меня посетила мысль ускорить и оптимизировать процесс. Во первых PHP не очень мне импонирует из-за синтаксиса, да и апач при каждом дергании PHP файла выполняет его от начала и до конца и закрывает (рвет соединение).

В с нодй можно использовать только яваскриптовый язык (что ускоряет процесс - не нужно учить длругой, а просто разширять познания).

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

Вот таково будущее направление ) tongue

138

Re: Программирование. Как сделать сервер дома?

Всех с праздниками!

Выходит первая версия самого быстрого собственного сервера/сервера с открытым исходным кодом.
http://yadi.sk/d/NGTktgcmFJq7Z

На последних (пока сырых технологиях  и знаниях) в области node.js и websocket. Это самый онлайонвый сервис на данный момент и по возможности сделан как можно быстрей даже при отображении самой страницы.
Все действия производятся через requirejs. Попытка модульной разработки, когда любое действие подгружает необходимый модуль. Кто будет пользовать, можно заметить быстрый первый старт, но небольшие задерки при первом нажатии на любую из кнопок на странице. Первый пуск производится с минимальным набором подключенных библиотек.
Все дальнейшие при необходимости подгружаются по нажатию на кнопку.

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

Возможностей пока не много. Базовые всего лишь. Можно следить, можно отображать треки за период (можно несколько треков сравнивать). Несложная индикация (движение, стоит, потеря связи более 10 мин).

Запуск: потребуется сама node.js (и под винду и под линукс есть) + база mysql. В mysql нужно создать базу nodemonitor, далее для упращения можно импортировать началные данные из фйала nodemonitor.sql (в корне архива). Настройки соединения с базой находятся в файле webserver/web-confij.json где надо ввести свой пароль к базе данных и пользователя (часто это root).
После установки node.js на комп надо в черной консоли перейти в текущую дирректорию webserver и набрать node web-server.js  Если пароль к базе подходит то должно запуститься. По умолчанию http сервер работает на порте 5000 (видно в настройках web-config.json)  . Открываете браузер и http://localhost:5000 - стартовая страница. По умолчанию сздан пользователь demo demo под которым можно войти. В настройках удаляете или добавляете устройство.

Для примера был разпарсен лишь один gps-logger for android. Его парсинг можно смотреть в gpslogger.js . Это "колхозный парсинг http протокола (tcp c лишними в данном случае параметрами). Нужно всего лишь выделить необходимое imei  lat lng  итп. Кому нужно парсить другое устройство (типа tk )  при небольших знаниях javascript можно резать посылку регулярными выражениями и все заменить.
Кстати он слушается на порту 10100. Так что при заведении устройства на свой сервер указываете свой ip порт 10100.

Постараюсь написать более подробную инструкцию кого интересует.


Ну и недостатков конечно много. Сервер не опробован нормально. Утечки памяти в скрипте непонятно как бороться. Сколько памяти и будет ли она расти до "вылета" приложения не в курсе. Возможно потом найду тему где рассказывается как происходят утечки.

Отредактировано Mars (01-01-2014 22:03:20)

139

Re: Программирование. Как сделать сервер дома?

минимально рекомендуемое:
- хранить на гитхабе или битбаткет
- не распространять вместе с директорией node_modules (меньший вес и ничего лишнего не будет)
- создать в корне проекта файл package.json описывающий ваш проект (например):

{
  "name": "atlas",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node webserver/web-server.js"
  },
  "engines": {
    "node": ">=0.10.* <0.11.4"
  },
  "engineStrict": true,
  "dependencies": {
    "express": "~3.4.7",
    "colors": "~0.6.2",
    "ejs": "~0.8.5",
    "ejs-locals": "~1.0.2",
    "iconv-lite": "~0.2.11",
    "look": "~0.1.3",
    "mime": "~1.2.11",
    "mysql": "~2.0.0-rc2",
    "path": "~0.4.9",
    "ws": "~0.4.31",
    "urlencode": "0.0.1",
    "socket.io": "~0.9.16"
  }
}

после чего человеку, загрузившему ваш проект достаточно будет сделать две команды: npm install и npm start

- освоить "магию" менеджера пакетов npm
- личная рекомендация: хранить отдельно мух от котлет (это я в плане иерархии в проекте)

В остальном - молодец, так держать.. и с Новым Годом :-)

Все, что нельзя написать на ассемблере, можно доделать паяльником (ц)

140

Re: Программирование. Как сделать сервер дома?

Спасибо!

я думал так сделать ..но чето поленился. Надеюсь не последний релиз. В сл раз так и сделаю. smile

http://f6.s.qip.ru/s6WVN60g.jpg

Отредактировано Mars (01-01-2014 22:27:03)

141

Re: Программирование. Как сделать сервер дома?

Некоторое тестирование прошло.
Что тут сказать. Текущий мой сервак на апаче php и java расходует 70.. 90% памяти (из 250мб). Пришлось тушить апач чтобы денек проверить. Есть конечно баги (скорость оказалась в милях передается). И раз таки вылетел, гдето ошибка при запросе базы в какойто момент.

Расход памяти всего всего 30% от 250мб  по отчету на сервере (это при потушенном апаче). Так что в три раза как минимум нагрузка меньше. Если каждую секунду отправлять посылки то на андроиде смарте работает почтки нак навигатор (задержка не ощущается когда связь есть). При малых масшабах "Нода" оправдывает себя и по нагрузке на сервер и в скорости разработки.

Отредактировано Mars (05-01-2014 19:07:32)

142

Re: Программирование. Как сделать сервер дома?

Наконец-то дошли руки до злосчастного "Фильтра мусорных точек " (всяких звезд и тп..)
Без фильтра
http://f6.s.qip.ru/jjb2Kldr.jpg

Теперь есть возможность применять фильтр (актуально на стоянке)
http://f5.s.qip.ru/jjb2Klds.jpg


А так же в движении только по базовым станциям
Без:
http://f6.s.qip.ru/jjb2Kldt.jpg

С галочкой фильтра
http://f5.s.qip.ru/jjb2Kldu.jpg

Тут не вигурирует радиус, скорость, а просто координаты. Не важно пешеход или авто   cool

Отредактировано Mars (16-01-2014 00:29:25)

143

Re: Программирование. Как сделать сервер дома?

Mars пишет:

Наконец-то дошли руки до злосчастного "Фильтра мусорных точек " (всяких звезд и тп..)

привет! проект забросили или времени нет?

144

Re: Программирование. Как сделать сервер дома?

Собрался с силами написал краткую очень инструкцию по старту.
все находится в архиве http://yadi.sk/d/uLyWrQDkQqmsV  файл readme.doc

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

Стабильная версия на PHP переехала на новый адрес http://motohelp-ua.org/atlas/
Но там  основные задачи не по мониторингу как таковому, а по событиям ДТП.. оповещения уведомления.. много зависимостей что действительно отнимает свободное время и конца не видно.

Для регистрации  GPSLogger for android
OpenGTS настрока
сервер motohelp-ua.org
порт 80
путь на сервере /atlas/logger/

Както выложил на оранж в форуме это. Так меня на следующий день жестко очистили. Удалили все сообщения и стерли логин, так что пришлось заново регистрироваться. На вопрос: "За что ?" -> администрация разгядела в моей деятельности коммерческий интерес (котя я думаю им не нужен бесплатный конкурирующий проект). Такие вот оккупанты.  lol

Отредактировано Mars (20-05-2014 23:06:15)

145

Re: Программирование. Как сделать сервер дома?

Mars пишет:

Собрался с силами написал краткую очень инструкцию по старту.
все находится в архиве http://yadi.sk/d/uLyWrQDkQqmsV  файл readme.doc

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

Стабильная версия на PHP переехала на новый адрес http://motohelp-ua.org/atlas/
Но там  основные задачи не по мониторингу как таковому, а по событиям ДТП.. оповещения уведомления.. много зависимостей что действительно отнимает свободное время и конца не видно.

Для регистрации  GPSLogger for android
OpenGTS настрока
сервер motohelp-ua.org
порт 80
путь на сервере /atlas/logger/

Както выложил на оранж в форуме это. Так меня на следующий день жестко очистили. Удалили все сообщения и стерли логин, так что пришлось заново регистрироваться. На вопрос: "За что ?" -> администрация разгядела в моей деятельности коммерческий интерес (котя я думаю им не нужен бесплатный конкурирующий проект). Такие вот оккупанты.  lol

Спасибо Вам огромное за труды! А под какой лицензией выкладываете исходники? Можно ли их править делится с другими. (Я лично не собираюсь заниматься коммерческой деятельностью.)

146

Re: Программирование. Как сделать сервер дома?

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

147

Re: Программирование. Как сделать сервер дома?

Cпасибо за роботу!)

"Уж лучше голодать, чем что попало есть,
Быть лучше одному, чем с кем попало." Омар Хайям

148

Re: Программирование. Как сделать сервер дома?

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

149

Re: Программирование. Как сделать сервер дома?

rubel пишет:

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

Извините может глупо, но зачем Вам оно? сомотреть историю 1й машины?
И на каком компе Вы хотите ставить? домашний комп или у вас есть комп 24 часа в сутки включен?
какая система стоит?

Отредактировано edgi (04-07-2014 13:58:30)

150

Re: Программирование. Как сделать сервер дома?

я начинаю заниматься таксопарком, комп есть и всегда  включен и не один,  поэтому хотелось бы какуе-то полезную программку