51

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

http://narod.ru/disk/61219118001.41fdf0 … w.rar.html


Итак. Кто хочет, кому интересно . Парсер пока написан под gps marker (что есть под рукой.. не работает но мож заработает )))

исходники.

1. Нам понадобится денвер - джентльменский набор. скачать можно бесплатно http://www.denwer.ru/ . Надеюсь с установкой разберетесь там все ок и он устанавливается. (*я просто отмечаю галочку чтобы стартовать вручную, а не при каждом запуске системы)

2. У вас появится дополнительный диск в проводнике. Это на самом деле несуществующий диск. Это всего лишь отображение папки что находится на диске C:\WebServers\

3. находим папочку C:\WebServers\home\ создаем там папочку с названием каким удобно (допустим monitoring) в ней еще одну папку www. Распаковываем туда мой архив.

4. нажимаем Restart Denwer (если уже запущен) или Start Denwer . По умолчанию эти ярлыки создаются на рабочем столе при установки денвера.

5. Запускаем ваш браузер и набираем в командной строке monitoring / Должна отобразится страничка с картой и с одной единственной точкой в киеве.

6. Запускаем файл serverMP.exe

7. В консольном приложении черного экрана напишется что сервер создан и ваш IP и port. Эти данные нужно установить в маркере.

8. Ожидаем появление точек.

Еще в папке содержится два текстовых файла log.txt - пишет все что поступило в порт 11000 . Т. е все что поступило от маркера (пираты надеюсь не будут вам че-то слать в текстовом виде)

А так же заполняется файл coord_lat.txt . Я разпарсил только долготу широту. Этот файл и является основой для отображения точек.



КОнечно прошу прощения если не все получится. Я сам не имею возможности проверить пока (маркер тоже мертвым грузом залег у меня). Ориентировался на старые протоколы. Сечас почемуто ни оранж ни укр не посылают ответ маркеру. Толи что-то изменилось в протоколе, а я не знаю.. Так что может быть не все успешно.

Главное чтобы работала программа serverMP.exe и во время ее работы нельзя открывать текстовые файлы (они просто блокируют запись в них в таком случае).

log.txt Файл содержит время получения посылки и собсно всю посылку, а так же самое главное года было установлено новое соединение. Если установлено новое соединение, значит прошлое по каким-то причинам было разорвано со стороны клиента (маркера)

Нюансов много.. ошибки я пока не фильтровал. По всем вопросам для заинтересовавшихся спрашивайте.

помните - что у большинства домашних пользователей динамический ip. Т.е он может поменяться при перезагрузки компа или при вкл/выкл соединения с инетом. ну и еще нюансов несколько .. я не всех знаю.

52

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

ох сколько я пропустил, зато кухню частично сделал )))
файлы это сердито, лучше пользовать базу smile
Остается только один вопрос - рассчитывать на один девайс или на несколько?

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

53

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

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

Дальше надо развивать. Думаю хоть кнопочки сделать чтобы высвечивало маркеры "за период". А то на сл день уже нельзя разобраться.

Меня больше всего интересует как часто происходят обрывы связи - того чего нет ни на одном сайте мониторинга. Хоть операторов пощупать - как часто они округляют .

54

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

Как-то вопщем удалось на начальном уровне осилить сервер. Рисует. Парсю что надо smile
Поигрался с Киевстар - посмотрел обрывы как часто (на саомом деле очень редко - раз в час или два часа). http://f2.s.qip.ru/y4Fn4PJz.jpg

Теперь хочется покопать клиентскую часть. http://gegelsoft.ru/ По описанию деталюшки стоят 30$. Привлекает даже не то. мне бы готовое железо куда прошивку свою писать можно. Как писать/заливать.. на чем писать - темный лес.

55

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

Шикарно, мои поздравления...  cool  вот что называется "вода камень точит".
Совет - никогда, слышите, никогда не используйте гугловские инструменты для отрисовки треков, когда точек будет 1000 и больше - будет беда.

56

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

Спасибо за поздравления!
постепенно действительно познания прибавляются. Все требует отладки/тестов/экспериментов.

А на счет 1000точек надо посмотреть что происходит )).. .  Любопытство .. знаете ли tongue  hmm  smile

57

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

Поздравляю smile
а происходить - да ничего особенного: тормоза, нервы.. хотя есть несколько вариантов: группировать маркеры в зависимости от масштаба, отображать только маркеры в пределах зоны видимости, использовать свои слои с маркерами, построенные внешними программами

P.S. нашел тему, где ребята описывали последний вариант http://habrahabr.ru/company/m2m/blog/136428/ smile

Отредактировано alexdob (17-10-2012 13:19:51)

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

58

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

Я не знаю кроме гугловских никаких инструментов . По пути меньшего сопротивления - зашел в апи гугля. Там отображение маркеров и полилиний по координатам описано. так и забабахал.

Немного преображается сервер. За сегодня дополнил подсчет километража.  cool
http://f2.s.qip.ru/fCiXEYAH.jpg

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

59

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

Ну все - сервак в Нидерландах и конкурент готов  cool
Ну, а если серьезно - еще раз повторюсь - круть!

60

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

Накопил за пару дней порядка 1600 точек. Никаких тормозов при отрисовке трека hmm .
http://f1.s.qip.ru/A3Ubvt5P.jpg
Точки часто - бо на велике скорость маленькая, и каждые 10.. 20 секунд это слишком часто для скорости в 20.. 30км/ч.

Пока столкнулся с задачей написать сервер-парсер слушающий порт на Java (чтобы сервак был под линуксом). Не получается пока найти толкового примера.. сходу так вклиниться в Java-у никак. Полно примеров многопоточного сервера, однако какие-то проблемы с кодировкой возникли сразу. А потом примеры  как-то не так работают как пример на C#. Для передачи по инету принято каждый раз рвать соединение для каждого сообщения - на чем и основано большинство примеров.  На Ссях удачный пример попался, и его не так уж трудно было модернизировать. А вот с явой проблема.  sad

61

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

Приветствую. Гугл нашел упоминание о моем сайте на вашем форуме. Если есть интерес, отвечу на вопросы.
Что касается архитектуры, то я выбрал весьма оригинальное решение. Сервер - всего лишь демон пересылки и архивирования в бинарный файл. На VDS 500MHz 256 RAM (за 5уе/месяц) я их запустил пару десятков, 254 машины на каждом. Они же отвечают на http-запросы браузерных клиентов, причем без никаких доп. вебсерверов, формируя ответ на уровне С-кода.
Вся остальная обработка - клиентской программой, причем используются только тайловые вебсервера, как в sas-planet, вся векторная графика - в коде вручную.

62

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

Сервер на java (самая основа)

import java.io.*;
import java.net.*;

class SampleServer extends Thread{
    Socket s; // вроде как глобальные переменные
    int num;
    
    public static void main(String args[]){
            try{  
                    int i = 1; // счётчик подключений
                    // привинтить сокет на локалхост, порт 3128
                    ServerSocket server = new ServerSocket(3128);
                        
                    System.out.println("server is started");
                
                    // слушаем порт
                    while(true){
                        // ждём нового подключения, после чего запускаем обработку клиента
                        // в новый вычислительный поток и увеличиваем счётчик на единичку
                        
                        new SampleServer(i, server.accept());
                        
                        i++;
                    }
            }
            catch(Exception e)
            {System.out.println("init error1: "+e);} // вывод исключений
            }
    
    public SampleServer(int num, Socket s)
    {
    
        System.out.println("new connection"+num);
        // копируем данные
        this.num = num;
        this.s = s;
        
        
        setDaemon(true);
        setPriority(NORM_PRIORITY);
        start(); // и запускаем новый вычислительный поток (см. ф-ю run())
    }
    
    public void run(){
        try{
            while(true)    {  // Добавил бесконечный цикл для  установшегося соединения. 
                            // сокет никогда не закрыватется. 
               // s.setSoTimeout(300000); // выход за пределы по цикла на ошибку по истечению 5 мин (не совсем работает это)
                
                // буффер данных в 64 килобайта
                byte [] buf = new byte[64*1024];
                // читаем 64кб от клиента, результат - кол-во реально принятых данных
                // int r = is.read(buf);
                
                // из сокета клиента берём поток входящих данных
                //InputStream is = s.getInputStream();
                int r = s.getInputStream().read(buf); // количество принятых байт в посылке
                System.out.println("Recessive bite"+r);
                
                if (r==(-1)){
                    System.out.println("socet close");  // если клиент дисконект закрываем сокет
                    return;
                    }
                
            
                // и оттуда же - поток данных от сервера к клиенту
                OutputStream os = s.getOutputStream();
                
                String data = new String(buf, 0, r);// создаём строку, содержащую полученную от клиента информацию
                System.out.println(data); //выводим полученные данные на экран
                
                /*
                 * тут делаем все что надо со строкой data (парсим данные)
                 * 
                 * 
                 */
                
                
                
                os.write(data.getBytes()); // отправляем данные клиенту 
                    
                }
            
            }
            
            catch(Exception e){
                System.out.println("init error2: "+e); // вывод исключений 
                //s.close();  //хотелось бы вставить - но тут что такое сокет неопределено
                
            }
        
            
        
    }
    
}


 

Отредактировано Mars (14-12-2012 19:52:24)

63

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

Не мучайте слоника с тем тсп... В даном приложении это мало того, что не нужно, а еще и вредно в плане снижения стабильности системы в целом. Используйте трекерные удп-протоколы. У меня даже с клиентскими программами связь по удп, это дает возможность использовать ОДИН сокет для всего. Что касается жавы - имхо, не лучший выбор (ведь скрипт как-никак...). Вложил кусок с моего сервера аналогично вашему. Компилите gcc и сравните по эффективности smile

Post's attachments

gserver.c 1.81 kb, 6 downloads since 2012-12-17 

You don't have the permssions to download the attachments of this post.

64

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

gegel пишет:

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

нунуну...

gegel пишет:

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

Вы что-то очень сильно путаете.

65

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

хотел написать про тсп и "одного сокета для всего" но опередили))

66

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

Эту дискуссию TCP vs UDP я вел еще лет 5 назад с разработчиками в области шаринга саттв smile
В сфере жпс-монитринга ситуация та же smile
Пример: для совместимости ввел в прошивку своего трекера поддержку протокола FM4200 + DUT, естественно, UDP. Серверописатели-белорусы дают отбой: они UDP FM4200 не поддерживают... Не вопрос, я прикручу и TCP, это не проблема.
Но: практика, как известно, критерий истины. Ведь не на пальцах я это показываю.

Если путаю, то что? Если просто путаю, то как то неубедительно smile  Вы считаете, что код на выходе жавы оптимальнее кода на выходе С?

По поводу одного сокета: тсп проектировалась для немного других целей. Каждое акцептированное тсп-соединение от трекера создает свой сокет со своим окружением и тредом. И если трекеров несколько тысяч, одно переключение ядра между этими тредами потребует огромный ресурс.
В случае одного удп-сокета и достаточного буфера имеем несравненно более эффективную реализацию: пакеты извлекаются и обрабатываются на уровне пользовательской задачи, а не на уровне сокета. Там же реализуем гарантийность доставки, если задача того требует, путем подтверждений и повторов. Т.е. пишем как-бы свое тсп поверх удп, но четко оптимизированное под задачу, ничего лишнего.
Например, вместо счетчиков ACK и SEQ - счетчики пакетов (достаточно и char), для фиксации адреса отправителя - массивы из long+short
Это более низкоуровневая реализация, и она требует понимания фундаментальных процессов и знания соответствующих rfc.
Я всегда умиляюсь, когда тестю очередной "студенческий" сервис трекинга, и он еле ворочается на моем старом Celerone 1200 MHz.

ПС: почитал статью на хабре по ссылке выше: http://habrahabr.ru/company/m2m/blog/136428/  А смысл переносить на сервер формирование слоев, используя его ресурс? Не лучше ли использовать распределенный ресурс всех юзеров, который в сумме несравненно больше?
К примеру, мой визуализатор тянет только с тайлы с Визикома, Гугла, Яндекса и Бинда, аналогично как известная SASPlanet. Ссылка на png формируется для каждой системы отдельно, ничего сложного. Меркатор на Яндексе другой, но это не проблема решаемо. Остальное (иконки машин, инфолейбы, треки и т.д.) накладывается в виде векторной графики в отдельном слое, тоже не проблема (используется компонент ImageEn). В итоге полностью портируемая exe весом 4M, работающая на всех Win32, начиная с Windows98 на PII-300Mhz 128RAM   smile
Написано на старом и самом стабильном Borland C++ Builder,

Отредактировано gegel (18-12-2012 20:32:31)

67

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

Я работаю с тем что имею. А имею я ОКО-авто GPS-marker и теперь приложение под андройд от M2.. и все работает по TCP. И я смотрю, что большинство трекеров в своем описании имеют TCP протокол. Пока не лезу в разработку программного обеспечения самих трекеров. Мож и UDP выгодней - если бы я был директором + инвестором + программистом всей системы.

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

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

Из того что я изучил - мониторинг должен складываться из двух составляющих. 1 - это парсер слушающий порт 2. Оболочку отображающую (визуализацию) на карте.

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

Если вы можете рассказать что-то больше и на доступном языке, как все организовать с "0" - я бы почитал с благодарностью. smile.

Отредактировано Mars (18-12-2012 23:00:11)

68

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

gegel пишет:

Если путаю, то что? Если просто путаю, то как то неубедительно smile  Вы считаете, что код на выходе жавы оптимальнее кода на выходе С?

Вы путаете, что Ява скрипт. Ява совсем не скрипт. (Хотя есть и ЯваСкрипт, но про это есть даже прибаутка: Java and Javascript are similar like Car and Carpet are similar)
А что касается оптимальности, то Вы знаете, да, Ява "оптимальнее" smile Шучу, конечно. Конечно, соглашусь с Вами, что C "оптимальнее" Явы. В смысле быстрее. Но C быстрее Явы только при прочих равных. А где ж вы в природе прочие равные видели? Только в книжке по алгоритмам. По вашему выходит что ЛЮБОЙ вебсервер на C лучше ЛЮБОГО вебсервера на Яве? Так что ли? Это разве не глупо? И коту понятно, что один C-программер может написать на C такую каку, что двадцать других на Яве не напишут. (И наоборот, само собой smile )

Кроме того, давайте определим что такое "быстрее"? Быстрее будет работать на Пентиуме 233? На фик мне ваш Пентиум? Мне важно, чтоб поставленная задача полностью выполнялась моим софтом, а я, как программер, мог быстрее и удобнее написать код, скорее окупить вложения и т.д. Оптимальность выполнения кода совсем не первейшая цель. Не верите мне - спросите у Вашего шефа smile А если такого нет, то у Ваших клиентов. Им важно бабки скорее отбить или чтоб обязательно на ИБМ ХТ 1989 года выпуска работало?

gegel пишет:

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

Вы правы, TCP создавалось немного для других целей. Но совсем не для того, чтоб расходовать ресурсы процессора. Сравнивая ВООБЩЕ UDP и TCP, Вы сравниваете яблоки с пельменями, грузовики с велосипедами, а черное с круглым. Для каждой задачи можно выбрать более подходящий протокол. Прибыть из пункта А в пункт Б всегда можно и пешком и на самолете. Но эти два средства передвижения не ВООБЩЕ (всегда и в любых условиях) лучше или хуже, а лучше или хуже подходят для какой-то задачи.

gegel пишет:

Я всегда умиляюсь, когда тестю очередной "студенческий" сервис трекинга, и он еле ворочается на моем старом Celerone 1200 MHz.
...
В итоге полностью портируемая exe весом 4M, работающая на всех Win32, начиная с Windows98 на PII-300Mhz 128RAM   smile
Написано на старом и самом стабильном Borland C++ Builder,

Чесслово, вы уж извините, за удар ниже пояса, но очень уж напрашивается вопрос. А почему вы сервисы трекинга на арифмометре "Феликс" не тестируете? smile Простите за нечистоплотные средства, но очень уж чесалось smile А Borland... был Borland 20 лет назад. А теперь в сравнении, например, с Eclipse, это скребок пещерного человека по сравнению с экскаватором. Согласен, что скребок для иных задач будет сподручнее, но в данном случае надо вырыть нормальный такой котлован. А вашим скребком Вам придется сперва сочинить лопату, потом экскаватор, и только потом вырыть котлован.

Отредактировано kalaschnikow (18-12-2012 23:35:24)

69

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

To kalaschnikow:

да какой удар, это скорее самому себе, по молодости smile Просто у нас концептуально разные подходы к sofware development. Представляете, у меня тоже Eclipse стоит, и дотнет, и шарп. И в то же время и Visual C 6, и даже TASM 16bit для i386 real mode. И куча компов с разным железо и ОС. Но это все лишь инструменты, не заменяющие креативность разработчика.
И про отбить бабки тоже вас понимаю smile Но в один прекрасный день к вашему шефу или, еще хуже, к конкурентам, может прийти такой    наглый тип, как я smile и предложить тот же функционал, но требующий не вышеупомянутого сервера в Нидерландах, а VDS "Меркурий" на vdsplanet.ru за 5 уе в мес. Да и диллерам не надо будет крутить потенциальных клиентов на суперкомпы в диспетчерскую. И тогда рассуждения о модности или пещерности IDE не помогут: ведь все тестируется и сравнивается.
И по поводу котлована: при ближайшем рассмотрении он не такой и большой, как кажется с перепугу. ЖПС-трекинг вполне тривиальная задача, не требующая особой гениальности и вполне посильна среденестатистическому разработчику, не стоит пугать народ.


To Mars:

В вашем случае сделайте демон с возможность подключения трекеров по одному порту и клиентов по другому. При получении пакета от любого трекера тупо пересылайте его по очереди каждому подключенному клиенту. Опционно можете также его архивировать в БД или в файл. В клиентской программе вместо слушающего интерфейса используйте connect к серверу. Арендуйте VDS на вышеупомянутом хостинге и слейте туда сервер. Дел на полчаса.

И еще: в итоге надо будет отходить от использования GIS API, иначе рано или поздно будет бан по IP, придется покупать ключ. Лучше на шару тянуть тайлы и рисовать поверх самому, опять же, ничего сложного тут нет, просто надо один раз разобраться.

По поводу трекеров: уточните ваше местонахождение, я подскажу представителей Quectel. Возьмете GSM-модуль M12-N32 (опт по 12$, в розницу будет на пару-тройку дороже). Там же можно приобрести демо-борд, а еще лучше я выведу на произодителей моих устройств на M12 (из другой сферы применения) - за 35-40$ возьмете готовый девайс в корпусе с БП, слотом сим-карты, антенной и RS232-интерфейсом для заливки софта). Останется приобрести GPS-модуль (10-15$), например SSH1919P, и подпаять его тремя проводами к M12 - портативный трекер готов.
Я скину Вам IDE для разработки кода, дозаливаемого в модуль. Это типа старых эльфов для e-gold линейки сименсов: внутри модуля в чипсете стоит ARM7, на нем запущена отдельная задача, имеющая доступ к АПИ ядра и получающая от него сигналы. Все там просто, как телега: обычный С, хорошие примеры, за пару дней АПИ освоите.

И фильтруйте модных профессионалов, а то они вам понарассказывают...

Отредактировано gegel (19-12-2012 12:04:02)

70

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

gegel пишет:

Но в один прекрасный день к вашему шефу или, еще хуже, к конкурентам, может прийти такой наглый тип, как я smile и предложить тот же функционал, но требующий не вышеупомянутого сервера в Нидерландах, а VDS "Меркурий" на vdsplanet.ru за 5 уе в мес. Да и диллерам не надо будет крутить потенциальных клиентов на суперкомпы в диспетчерскую. И тогда рассуждения о модности или пещерности IDE не помогут: ведь все тестируется и сравнивается.

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

gegel пишет:

И по поводу котлована: при ближайшем рассмотрении он не такой и большой, как кажется с перепугу. ЖПС-трекинг вполне тривиальная задача, не требующая особой гениальности и вполне посильна среденестатистическому разработчику, не стоит пугать народ.

Есть такая пословица: es wird nur mit Wasser gekocht. Я никого и не пугал. Абсолютно ВСЕ можно сделать. Но не надо сравнивать велосипед с автомобилем. Кому-то хватит и велосипеда - я полностью с Вами в этом согласен. Но если нужен автомобиль, то каким бы наглым Вы ни были...


gegel пишет:

По поводу трекеров: уточните ваше местонахождение, я подскажу представителей Quectel. Возьмете GSM-модуль M12-N32 (опт по 12$, в розницу будет на пару-тройку дороже). Там же можно приобрести демо-борд, а еще лучше я выведу на произодителей моих устройств на M12 (из другой сферы применения) - за 35-40$ возьмете готовый девайс в корпусе с БП, слотом сим-карты, антенной и RS232-интерфейсом для заливки софта). Останется приобрести GPS-модуль (10-15$), например SSH1919P, и подпаять его тремя проводами к M12 - портативный трекер готов.
Я скину Вам IDE для разработки кода, дозаливаемого в модуль. Это типа старых эльфов для e-gold линейки сименсов: внутри модуля в чипсете стоит ARM7, на нем запущена отдельная задача, имеющая доступ к АПИ ядра и получающая от него сигналы. Все там просто, как телега: обычный С, хорошие примеры, за пару дней АПИ освоите.

Хехе. Ну прям по сценарию моего предыдущего поста... Сперва скребок, потом лопату, потом экскаватор... а там глядишь лет через пять и котлован начнем рыть smile

71

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

Беларуский разработчик - это как пример, я лично не знаком.

Не волнуйтесь, я не собираюсь составлять кому-либо конкуренцию, и не собираюсь писать user-frendly визуализатор. Речь вроде как шла о создании собственного дешевого и эффективного решения. Я представил свой весьма оригинальный вариант, использующий нестандартные решения, при этом сохраняя основной функционал стандартного решения, скажем, Вашего или Гуртама. Абсолютно бесплатно и сервер, и визуализатор можно скачать на gegelsoft.ru и развернуть систему за 10 мин., бизнеса тут нет. Все это изначально задумывалось как инструментарий для отладки прошивок, но затем возникла идея сделать малое бюджетное решение для трекинга. Реализовал поддержку различный тайловых серверов, отработку событий, отрисовку треков, работу с архивом, отчеты и графики. Также есть функция эмулятора трекера, позволяющая отлаживать другой сервис.

Еще раз: работа носила академический характер, до этого я никогда не работал с ГИС и векторной графикой, были интересно разобраться на нижнем уровне. Сервер компилится gcc, использует только сисколы и ничего, кроме голого линукс, не требует. Для визуализатора выбран Borland C++ Bulder как наиболее стабильная RAD IDE, позволяющая очень быстро создавать эффективные приложения на сравнительно  нижнем уровне. И это все - лишь дополнение к самому трекеру.

А по поводу последнего замечания: Вы имеете отношение к embeded-разработке??? Если да, то интересно пообщаться на эту тему: в этой сфере людей не так много, это не Java...  Если нет, то немного непонятно, к чему это замечание: если в сфере программирования для РС я никогда не считал себя профи (так, балуюсь), то в данной сфере у нас, скорее всего, несколько разная весовая категория smile

72

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

gegel пишет:

И это все - лишь дополнение к самому трекеру.

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

gegel пишет:

А по поводу последнего замечания: Вы имеете отношение к embeded-разработке??? Если да, то интересно пообщаться на эту тему: в этой сфере людей не так много, это не Java...  Если нет, то немного непонятно, к чему это замечание: если в сфере программирования для РС я никогда не считал себя профи (так, балуюсь), то в данной сфере у нас, скорее всего, несколько разная весовая категория

Да, конечно. Я вообще в embedded делах не разбираюсь. Замечание было к подходу. Мне кажется, что Вы стандартные методы embedded разработки в область пользовательских приложений переносите. Что не есть гут, ИМХО. Разбираться в конструкции до последнего гвоздика - это замечательно! И совсем не каждый разработчик может этим похвалиться. Но производить гвозди самому, если нужно построить дом... это уже чересчур.

73

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

Я из последних сообщений как минимум половины не понимаю о чем вы спорите )).

В принципе, в разработке трекера необходимость есть. Причина такова что под специфику мото ни один как хотелось бы не заточен. 2.. 4 шт на рынке именно трекеров для мото которые можно использовать. Что ОКО-авто что GPS-маркер хотелось бы подправить (производители стремятся к универсальности и под маленький мото-рынок никто не хочет "допиливать"). Но пока не могу объять необъятное. Сервер уже как-то хоть начал, мячта довести до какого-то завершения.

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

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

Отредактировано Mars (19-12-2012 20:53:41)

74

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

Да, есть такой грешок, все ж изначально я embedder. И поэтому все, что писано для PC представлено в статусе free.
По поводу самого трекера: изюминка в простоте и низкой себестоимости. Тот девайс, что описан в доке, не имеет микроконтроллера: используется задача в штатном ARM7 модуля. Т.о. выходим на себестоимость трекера в районе 35 уе по компонентам. Но функционал впечатляет: отправка внеочередных точек по перемещению, повороту, событиям, архивирование в флеш, доотправка при пропадании GPRS, внутренний одометр, работа с цифровыми DUT, возможность подключать таксометры и т.п., смс и жпрс-конфигурирование, поддержка протоколов бинар и стандартных виалон и телтоника FM4200, работа с акселерометром и внешним таймером.
Внутри этого маленького модуля за 12уе 32-битная ОС, флеш-диск, есть возможность подключить SD до 4 Гб, дисплей, клаву, проигрывать mp3-файлы из флеш (голосовое меню). В модулях М12-128 (на 3-4$ дороже) - больше внутренний диск (до 9Мбайт) и возможность обновлять прошивку через жпрс.
Все это НЕ привязано к IP сервера (выбирается при конфигурации). Под заказ могу оперативно прикрутить любую периферию и любой сервер-протокол.

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

Но это уже коммеррческий софт: прошивка требует активацию на железо конкретного модуля, ключ выдается на любой период с дискретностью в 1 мес.
Учитывая мой опыт в криптографии и защите, однозначно дешевле написать аналог, чем ломать: скажу сразу, использованы множественные неявные проверки и хитрые вызовы процедур получения идентификаторов железа. Система защиты является частью защиты Quectel от клонирования самого модуля, использует недокументированные функции, сделанные лично разработчиком софта Stanley из Quectel по моей просьбе.

Если кого заинтересует, пишите, всегда готов к сотрудничеству.

Сами понимаете, на фоне этого функционала трекера простой аналог ТК101 вызывает улыбку, так что мне не жалко научить интересующегося человека писать в данной IDE и даже сделать для примера opensource трекер с парсером NMEA и периодичной отправкой, скажем, по протоколу Wialon.

To Mars:
Если все же заинтересуетесь разработкой собственного трекера, я научу вплоть до создания вами действующего образца, дальше - сами. И 45$ - это далеко не те деньги, которые обычно тратятся на такие вещи. Мы с вами практически земляки, и вобще нет проблем в Киеве получить как модули, так и девайсы на них.

Mars пишет:

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

Если есть желание, могу на пальцах обяснить, как работают тайловые сервера и как тянуть тайлы (кусочки карты в формате png 256*256 нужного масштаба), т.е. как с координат WGS84 получить http-ссылки на эти png-файлы карт/снимков Гугл, Яндекс, Визиком, Бинг. Из кусочков клеете картинку нужного размера и затем поверх рисуете что хотите. Однажды скачанные тайлы можно сохранять на диске и впоследующем грузить с локали. Также можно взять свою карту, скажем, в формате ozfx (или любую растровую и привязать к WGS84 в том же Ozi), нарезать mapcutter-ом и использовать эти подменные тайлы.
Посмотрите мой визуализатор, он именно так и делает. Тут вас никто не забанит.

Отредактировано gegel (19-12-2012 22:46:18)

75

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

У меня складывается впечатление что Вы представитель квиктела))
Вы забыли упомянуть стоимость подготовки производства, разводки плат, заморозки денег на несколько месяцев и пр.
Не давайте лишних надежд, я понимаю что это флудилка, но...
И еще - сколько реальных проектов на 100-1000-5000 абонентов у Вас реализовано, как ПО, так и по железной стороне.