motofan logo
181 страниц V « < 141 142 143 144 145 > »         
> 

Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта

EXL
сообщение 26.8.2011, 12:34 Закрепленное сообщение!


Rock The Microphone
********

Группа: Администраторы
Сообщений: 2 969
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4609



Мануал: Компиляция приложений для MotoMAGX OS, создание пакетов

Прикрепленное изображение

Для портирования и сборки приложений для нашей платформы в первую очередь нам нужны:

1. Компьютер с Linux OS. Или Windows OS с установленным Virtual BOX/VMware Player, в крайнем случае под виндой можно воспользоваться AndLinux'ом или Cygwin'ом.
2. SDK & Toolchains для MotoMagX + Исходники программ/приложений.
3. Программист/Разработчик или начинающий программист (1 шт.).

Я рассмотрю наиболее приемлемый многим начинающим разработчикам способ, с использованием популярного дистрибутива Ubuntu 11 (Linux OS) в виртуальной машине VMware Player в Windows OS. Те пользователи, у которых стоит Linux OS на компе, могут скачать SDK & Toolchains | Зеркало | Зеркало | Зеркало и сразу перескочить на пункт #4.

Итак, начнём:

1. Загрузка необходимых для разработки инструментов и файлов:

1.1. Скачиваем ISO-образ диска Ubuntu 11. Я качал себе в городской сетке, пошарьтесь в своих тоже, может найдёте. На всякий случай, ссылка: [Download | Скачать] на скачивание с официального сайта: http://www.ubuntu.com Там вы можете выбрать любую конфигурацию под свой компьютер (amd/i386) и т.д.

1.2. Скачиваем VMware Player - Скачать можно с официального сайта: [Download | Скачать] или тут: [Mirror | Зеркало]

1.3. Скачиваем SDK & Toolchains для MotoMagX. [Download | Скачать] - полная версия, включающая в себя 2 тулчейна SDL (От испанцев) + QT (От Ant-On'a) а также python, bennugd, boost и множество различных библиотек. Инструкция по установке есть внутри или ниже можно прочитать подробно.
Тем, кто хочет разрабатывать приложения на SDL, можно скачать небольшой тулчейн для сборки приложений: [Download | Скачать] [Mirror | Зеркало]

2. Мануалы по установке VMware, Ubuntu и SDK & Toolchains в картинках:*
* - картинки открывать лучше всего в новом окне, нажав колёсико мышки. После открытия воспользуйтесь масштабированием, например, в стандартном просмоторщике картинок.

2.1. Установка программы VMware для самых маленьких.
2.2. Установка Linux OS в программу VMware, на примере Ubuntu 11.
2.3. Установка дополнительных инструментов (VMware-tools) в Ubuntu 11. Необходимо для перемещения файлов между Ubuntu в виртуальной машине и виндой.

2.1.:    2.2.:    2.3.:

Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

3. Мануалы по установке, текстом.

3.1. Установка VMware-tools для Ubuntu 11.
3.1.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Install VMware Tools...
3.1.2. Ждём загрузки инструментов (нужно подключение к интернету!), затем снова вверху нажимаем "Virtual Machine" -> "Install VMware Tools...
3.1.3. С открывшегося диска копируем архив в формате *.tar.gz например в /home/user (user - ваше имя при установке Ubuntu), распаковываем его.
3.1.4. Запускаем терминал и выполняем в нём следующее:
Код

cd /home/user/vmware-tools-distrib
sudo ./vmware-install.pl

После команды sudo надо ввести пароль, который мы указывали при установке Ubuntu.
3.1.5. Умный скрипт сам предложит вам вводить нужные значения (в квадратных скобках), вводите их.
3.1.6. После успешной установки инструментов, перезагрузите компьютер.
3.1.7. Данные инструменты помогут с лёгкостью переносить файлы из Windows в Linux Ubuntu, просто копируя их или перенося из окна в окно, как вы это делали в Windows. Кроме того, появится множество разрешений для экрана системы.

3.2. Общие папки между системами для обмена файлами.
3.2.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Virtual Machine Settings"
3.2.2. Переходим на вкладку "Options", выбираем "Shared Folders"
3.2.3. Переключатель "Folder sharing" ставим в положение "Always enabled", нажимаем кнопку "Add".
3.2.4. На компьютере выбираем любую папку, добавляем её, жмём ОК.
3.2.5. Теперь в Ubunte, в папке /mnt/hgfs видим добавленную нами папку из Windows.

4. Установка SDK & Toolchains.

4.1. Скачиваем архив тулчейна (*.tar.gz), перемещаем его в папку /home/user (user - ник при установке Ubuntu).
4.2. Выполняем команды, новая строка - Enter, вместо user естественно пишем своё имя, после команды sudo потребуется ввести пароль, который мы указывали при установке Ubuntu.
Код

sudo mkdir /mmc
sudo chown user -R /opt
sudo chown user -R /home
sudo chown user -R /mmc
sudo ln -s -d /opt/toolchains/motomagx/arm-eabi -t /
mkdir /opt/toolchains
mkdir /home/z6
mkdir /mmc/mmca1
tar -C /opt/toolchains -xzvf /home/user/motomagx-toolchains_12_08_2011.tar.gz
cp /opt/toolchains/motomagx/setenv-z6.sh /home/z6
cp /opt/toolchains/motomagx/setenv-z6-2.sh /home/z6

4.3. Обратите внимание на имя скаченного вами архива с тулчейном! Именно его нужно вводить в восьмой строке кода, приведённого выше!
4.4. Установленный тулчейн:
Прикрепленное изображение

5. Запуск окружения, компиляция программ и helloworld'a.

5.1. Чтобы запустить окружение для компиляции под MotoMagx, достаточно выполнить в терминале следующее:
Код

cd /home/z6
. setenv-z6.sh

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

5.2. HelloWorld.
5.2.1. Создаём пустой файл с именем hello.c в папке /home/z6 (Правой клавишей по пустому месту, "Create Document" -> "Empty File")
5.2.2. Редактируем его содержимое следующим образом, сохраняем:
Код

// Hello World for Motorola Magx!

#include <stdio.h>

int main(void)
{
    printf ("Hello Moto!!!\n");
    return 0;
}

5.2.3. Компилируем:
Код

cd /home/z6
arm-linux-gnueabi-gcc hello.c -o hello

5.2.4. Полученный исполнительный файл "hello" кидаем на телефон и запускаем через телнет!
Код

Mobilinux(TM) 4.1
Welcome 2 Motorola ZN5!
[root@Symbiosis ~]
#> /mmc/mmca1/hello
Hello Moto!!!


5.3. Работа с утилитой Make* и SDL библиотекой.
* - Утилита Make позволяет компилировать достаточно сложные проекты. Подробнее тут: http://ru.wikipedia.org/wiki/Make
5.3.1. Скачиваем следующие исходники, распаковываем в папку /home/z6:
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21052

5.3.2. Запускаем терминал и окружение для компиляции, переходим в папку с проектом, выполняем команду make:
Код

cd /home/z6/ballgame_src
make

После выполнения команды будет выполнена компиляция проекта и создан mgx пакет. Для очистки проекта от объектного кода и бинарников, следует выполнить make clean. Для создание mgx пакета - команду make mgx.
5.3.3. Теперь можно кинуть пакет на карту памяти и попробовать запустить. (Для SDL приложений вам потребуется установленные SDL-библиотеки!)
5.3.4. Структура простейшего Makefile для компиляции HelloWorld'a:
Код

# MakeFile for HelloWorld
# Motorola MotoMAGX

CC = arm-linux-gnueabi-gcc  
STRIP = arm-linux-gnueabi-strip
  
CFLAGS = # Необходимые флаги
LDFLAGS = # Необходимые флаги
OPTIMIZATION = -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -O2 # Оптимизация под процессор

INCLUDE = $(CFLAGS) $(OPTIMIZATION) -I/dir # Путь к нужным хэдэрам.
LIBS = $(LDFLAGS) -L/dir # Путь к нужным либам

BIN = hello # Бинарник

all:
    $(CC) -c hello.c -o hello.o $(INCLUDE)
    $(CC) -o $(BIN) hello.o $(LIBS)
    $(STRIP) $(BIN)
clean:
    rm -f ./*.o $(BIN)

Если положить данный Makefile рядом с hello.c, и выполнить make, получим исполнительный файл.
5.3.5. Замена строк, для портирования SDL проектов:
Код

CC:=gcc ---> CC:=arm-linux-gnueabi-gcc
cc=gcc ---> CC=arm-linux-gnueabi-gcc
cxx=g++ ---> CXX=arm-linux-gnueabi-g++
ld=ld ---> LD=arm-linux-gnueabi-ld
ar=ar ---> AR=arm-linux-gnueabi-ar
as=as---> AS=arm-linux-gnueabi-as
oc=oc ---> OC=arm-linux-gnueabi-objcopy
ranlib=ranlib ---> RANLIB=arm-linux-gnueabi-ranlib
strip=strip ---> STRIP=arm-linux-gnueabi-strip
В INCLUDE или CFLAGS добавляем `sdl-config --cflags`
В LIBS или LDFLAGS добавляем `sdl-config --libs` -lнеобходимая_библиотека


5.4. Работа с утилитой configure* и SDL библиотекой.
* - Скрипт configure создаёт Makefile и позволяет компилировать сложные проекты, состоящие из множества файлов. Подробнее тут: http://en.wikipedia.org/wiki/Configure_script
5.4.1. Пример работы. Скачиваем исходники, распаковываем в папку /home/z6:
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21114

5.4.2. Выполняем следующее:
Код

cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi
make

После этих команд у нас появятся исполнительные файлы Fire и Tunnel. Копируем их в корень карточки телефона.
5.4.3. Запускаем через телнет следующим образом:
Код

export LD_LIBRARY_PATH=/mmc/mmca1/games/lib:$LD_LIBRARY_PATH
chmod +x /mmc/mmca1/Fire
/mmc/mmca1/Fire

5.4.4. Для установки файлов в нужную директорию используется prefix и команда make install:
Код

mkdir /home/z6/test
cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi --prefix=/home/z6/test
make
make install

После этого нужные нам файлы будут в папке /home/z6/test.
5.4.5. Для чистки объектного кода и бинарников используется команда make clean, для удаления сконфигурированных Makefile'ов используется команда make distclean (полная очистка).

5.5. Деббагер "Segmentation fault"
5.5.1. Качаем gdb и распаковываем архив на карту памяти, в папку /mmc/mmca1/games
Исполнительные файлы должны быть собраны с префиксом '-g' и не должны быть пострипаные
5.5.2. Выполняем (gdb):
Код

ulimit -c unlimited
./<bin_app>
Segmentation fault (core dumped)
файл <core> будет создан
../bin/gdb ./<bin_app> <core>

5.5.3 Выполняем (strace):
Код

../bin/strace ./<bin_app>


5.6. Скрипт запуска для SDL приложений:
Код

#!/bin/sh
mypath=${0%/*}
LIBDIR1=/ezxlocal/download/mystuff/games/lib
LIBDIR2=/mmc/mmca1/games/lib
LIBDIR3=$mypath/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
export HOME=$mypath
export SDL_QT_INVERT_ROTATION=1
cd $mypath
sleep 1

exec $mypath/<bin_app>

5.6.1. Если нужен вывод лога в файл, заменяем последнюю строку в скрипте на
Код
exec $mypath/bin_app >$mypath/stdout.txt 2>$mypath/stderr.txt


5.7. HelloWorld с использованием GUI и функций телефона.
5.7.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21332

5.7.2. Выполняем:
Код

cd /home/z6/папка с нужным проектом
make PLATFORM=EZX-ZN5

или просто make
5.7.3. Кидаем исполнительные файлы на телефон и пробуем запустить, должно получиться что-то типа этого:
Прикрепленное изображение

5.8. Собираем MgxBox.
5.8.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 22600

5.8.2. Выполняем:
Код

cd /home/z6/MgxBox/MgxBox_GUI_ru
make PLATFORM=EZX-ZN5
cd /home/z6/MgxBox/p7zip_9.20.1
make all2
make install
cp -r /mmc/mmca1/p7zip/lib/p7zip /home/z6/MgxBox/Release/app/p7zip

5.8.3. Кидаем папку /home/z6/MgxBox/Release на телефон и пробуем запустить бинарник в папке Release/app, если всё нормально, должно получиться что-то типа этого:
Прикрепленное изображение

6. Создание пакетов вручную.

6.1. Создание MGX пакета:
6.1.1. Создаём папку, помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска, иконку).
6.1.2. Создаём в папке файл "Имя папки".cfg, редактируем его содержимое следующим образом:
Код

Name = Test
Exec = run.sh
Icon = icon.png
Author = Ant-ON
Version = 1.0
Comment = Port for ZN5 by EXL

Где, Name - имя программы, Exec - запускаемый файл, Icon - иконка, Author - Автор программы, Version - Версия программы, Comment - Комментарий.
6.1.3. Запаковываем папку в любой удобный вам архив (RAR, TAR, GZ, 7Z, ZIP), и переименовываем в "имя программы".mgx

6.2. Создание PEP пакета:
6.2.1. Создаём папку с именем "app", помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска).
6.2.2. Создаём рядом с папкой файл "description.ini", редактируем его содержимое следующим образом:
Код

[Actions]
Silent=0
InstallApp = 1  
AddAppToMenu = 1

[InstallApp]
Name = Jump n Blob
Exec = run.sh
InstallPath = ../../mmc/mmca1/.Programs/jump_n_blob/
AppLockable = 1
Author = http://www.2d-retroperspectives.org | Philipp. Port by -=Strelok=-, EXL (c) MotoFan.Ru 08.01.2010
Version = 0.1
Daemon = 1
BigIcon= icon.png
AniIcon= icon.png
Icon= icon.png

[AddAppToMenu]
ParentFolder= root

Где, Name - имя программы, Exec - запускаемый файл, Icon | AniIcon | BigIcon - иконка, Author - Автор программы, Version - Версия программы, InstallPath - Путь установки.
6.2.3. Создаём иконку, рядом с папкой "app" и "description.ini".
6.2.4. Запаковываем иконку, папку "app" и "description.ini" в архив формата TAR, затем сжимаем его в GZ переименовываем в "имя программы".pep

7. Полезные ссылки, документация, наши проекты.

7.1. Исходники, сайты с исходниками. Множество интересных проектов есть на code.google.com и sf.net
7.1.1. Исходники проектов, базирующихся на SDL:
libsdl.org/games
libsdl.org/demos
http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,46
http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,46
7.1.2. Исходники проектов, базирующихся на QT:
http://www.elsix.org/index.php?w=browse - В основном там под Sharp Zaurus, но идеи создания приложений и сорцы найти можно.

7.2. Документация, темы для прочтения:
Пробуем портировать игры и проги сами
Разработка софта под MOTOMAGX, начну небольшой HOWTO
Компиляция нативных приложений под E6/A1200, Создание окружения для компиляции
SDL библиотека
http://plg.lrn.ru/wiki/Заглавная_Страница
http://plg.lrn.ru/doc/sdl/index.html
http://doc.qt.nokia.com

7.3. Проекты:
http://code.google.com/p/open-mgx/ - исходники программ от Ant-On'a
http://code.google.com/p/sdl-magx/ - библиотека SDL HW для MotoMAgx от Ant-On'a
http://code.google.com/p/zmessanger/ - нативная аська, автор Ant-On
http://sourceforge.net/projects/qte2console/ - qte2console от DoomChisel
http://code.google.com/p/motocakerteam/ - исходники программ от испанцев MotoCakerTeam
http://code.google.com/p/zsoft/

8. Мануалы данной темы:

Если кто не может запустить ZN5Encoder в Magic box - пост #290
Нативные заставки на основе портированных мной и Neomoto демок! - пост #291
Мануал по установке Tmake в тулчейн, и правки созданного им MakeFile - пост #484
Изучение разделяемых библиотек (so) - пост #1440
Эмуляция нажатия клавиш на Motorola ZN5 - пост #1684


© EXL for MotoFan.Ru 27.08.2011
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21052
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21114
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21332
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 22600
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 14.12.2018, 19:07


Гуру
******

Группа: Разработчики
Сообщений: 1 226
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Вчера, 17:32)
* Есть в LSymbiosis, значит и в новом есть.

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

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

Сообщение отредактировал fill.sa - 15.12.2018, 6:48
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 16.12.2018, 1:32


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ 14.12.2018, 22:07)
* Ну т.е. ты все таки не смотрел все моды

Все популярные смотрел... кроме твоего последних версий, из за зеркального ответа на твоё наплевательство на всех.
Тем не менее в посте програмы я разместил решение шобы и на SAedition MOD юзеры смогли воспользоваться тем чем пользуются юзеры других модов.
Цитата(fill.sa @ 14.12.2018, 22:07)
* Ну т.е. ты все таки не смотрел все моды, более того посмотрел походу только самые древние моды. Ну-ну.

Походу токо ты решыл выпендриться и сделал велосипед с квадратным задним колесом. wink.gif Вот токо бить сидушкой по 5й точке будет не тебе (точнее тебе тоже, но тебе это в кайф), а пользователям твого мода.
Цитата(EXL @ 12.12.2018, 11:47)
* Да не к sed'у или Shell'у в общем, а к собственноручно написанным парсерам XML. Просто сам их писал и потом приходилось переходить на нормальные библиотеки.

Сегодня-завтра, к примеру, сервис прикрутит к XML-выхлопу форматирование аля xmllint --format или добавит к температуре какой-нибудь дополнительный параметр unit_2="fahrenheit" и нужно будет править самописный парсер, чтобы он отработал как нужно. Нет гарантии, что ничего не развалится.

А вот такой написанный на коленке за 5 минут пример из 25-строк должен будет отработать даже в случае изменения форматирования или добавления каких-либо атрибутов:

Шо ты понимаеш под другим форматированием XML?
Цитата(EXL @ 12.12.2018, 11:47)
* Просто потому, что использует библиотеку для правильного парсинга XML.

Ну вот дописал функцию правильного парсинга по названиям параметров (а не как раньше по положению), чем хуже? grin.gif
Spoiler:
Код
#!/bin/sh
#bu VINRARUS
H='"'
CLEAR(){
read DATA TIME POGODKA OPADN VITER VITERMS TEMPERATURA TNSK VOLOGIST HMARN TODI < /dev/null
}
PAR(){
eval "$1="
NAM="$TAM"
YIM=0
while [ "$NAM" != "$YIM" ]
do
    YIM="${NAM%%$H*}"
    NAM="${NAM#*$H}"
    if [ " $2=" = "$YIM" ]
    then
        YIM="${NAM%%$H*}"
        eval "$1=$H$YIM$H"
        break
    fi
done
}
FILTER(){
STOP="${IN##*<}"
OLD=888
while [ "$STOP" != "$IN" ]
do
    OUT="${IN%%<*}"
    TAM=" ${OUT#* }"
    IN="${IN#*<}"
    case  "${OUT%% *}" in
    time) #датаТчас
        PAR TIM from
        TIM="${TIM#*T0}"
        TIM="${TIM#*T}"
        TIM="${TIM%%:*}"
        TIME="$TIM"
        if [ "$TIME" -le "$OLD" ]
        then
            shift
            echo "----- $1 -----"
        fi
        OLD="$TIME"
        DATA="$1"
;;
    symbol) #погода в принципі
        PAR POGODKA name
;;
    precipitation=) #опади
        PAR OPADN type
        if [ -n "$OPADN" ]
        then
            OPADN=", опади"
        fi
;;
    windDirection) #напрямок вітру
        PAR VITER code
;;
    windSpeed) #швидкість вітру
        PAR VITERMS mps
        VITERMS="${VITERMS%.*} m/s"
;;
    temperature) #температура
        PAR TEMPERATURA value
        TEMPERATURA="${TEMPERATURA%.*}°C"
;;
    pressure) #тиск
        PAR TNSK value
        TNSK="${TNSK%.*} hPa"
;;
    humidity) #вологість
        PAR VOLOGIS value
        VOLOGIS="$VOLOGIS%"
;;
    clouds) #стан хмар
        PAR HMARN all
        HMARN="$HMARN%"
;;
    "/time>")
        TODI=$(($TIME+3))
        if [ "$TODI" -ge "24" ]
        then
            TODI=$(($TODI-24))
        fi
echo "$DATA $TIME: $POGODKA
$TEMPERATURA, $Lhumidity $VOLOGIST
$LwindSpeed $VITERMS ($VITER)
$Lclouds $HMARN$OPADN
"
        CLEAR
;;
    "name>"*)
        echo -n "${OUT#*>}"
;;
    "country>"*)
        echo ", ${OUT#*>}"
;;
    esac
done
}
TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk"  -O - `
echo "$TEXT" | while read IN
do
        FILTER сб нд пн вт ср чт пт сб нд
done
[close]


Сообщение отредактировал VINRARUS - 16.12.2018, 1:34
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 16.12.2018, 8:44


Rock The Microphone
********

Группа: Администраторы
Сообщений: 2 969
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4609



Цитата(VINRARUS @ Сегодня, 8:32)
* Шо ты понимаеш под другим форматированием XML?

То, что очень часто любят менять на этих сервисах погоды. Делаем:
[pre=diff]$ diff -Nuar test3.sh test4.sh
--- test3.sh 2018-12-16 15:42:45.651009103 +0700
+++ test4.sh 2018-12-16 15:42:07.833692795 +0700
@@ -98,7 +98,7 @@
esac
done
}
-TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk" -O - `
+TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk" -qO- - | xmllint --format -`
echo "$TEXT" | while read IN
do
FILTER сб нд пн вт ср чт пт сб нд
[/pre]


И твой парсер выше перестаёт работать.

Цитата(VINRARUS @ Сегодня, 8:32)
* Ну вот дописал функцию правильного парсинга по названиям параметров (а не как раньше по положению), чем хуже?

Как минимум тем, что там имеется серьёзная уязвимость. Злоумышленник может сделать в XML буквально следующее:

Код
<clouds value="broken clouds" all="`echo 'Eval is evil!'`" unit="%"></clouds>

И в итоге так можно сделать очень интересные вещи: удалить PDS в телефоне через специально подготовленный XML и твой парсер, украсть важную информацию (ssh-ключ, например) и т. д. Почитай инфу по запросу google://eval безопасность
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 16.12.2018, 18:54


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Сегодня, 11:44)
* И твой парсер выше перестаёт работать.

Он работает по сути, просто там проблема в 1 проверке условия.
Вот исправлено
Код
#!/bin/sh
#bu VINRARUS
H='"'
OLD=888
CLEAR(){
read DATA TIME POGODKA OPADN VITER VITERMS TEMPERATURA TNSK VOLOGIST HMARN TODI < /dev/null
}
PAR(){
NAM="$TAM"
YIM=0
VAL=
while [ "$NAM" != "$YIM" ]
do
    YIM="${NAM%%$H*}"
    NAM="${NAM#*$H}"
    if [ " $1=" = "$YIM" ]
    then
        YIM="${NAM%%$H*}"
        VAL="$YIM"
        break
    fi
done
}
FILTER(){
STOP="${IN##*<}"
while [ "$OUT" != "$IN" ]
do
    OUT="${IN%%<*}"
    TAM=" ${OUT#* }"
    IN="${IN#*<}"
    case  "${OUT%% *}" in
    time) #датаТчас
        PAR from
        TIM="${VAL#*T0}"
        TIM="${TIM#*T}"
        TIM="${TIM%%:*}"
        TIME="$TIM"
        if [ "$TIME" -le "$OLD" ]
        then
            DEN="${DNI%% *}"
            DNI="${DNI#* }"
            echo "----- $DEN -----"
        fi
        OLD="$TIME"
        DATA="$DEN"
   ;;
    symbol) #погода в принципі
        PAR name
        POGODKA="$VAL"
   ;;
    precipitation=) #опади
        PAR type
        if [ -n "$VAL" ]
        then
            OPADN=", опади"
        fi
   ;;
    windDirection) #напрямок вітру
        PAR code
        VITER="$VAL"
   ;;
    windSpeed) #швидкість вітру
        PAR mps
        VITERMS="${VAL%.*} m/s"
   ;;
    temperature) #температура
        PAR value
        TEMPERATURA="${VAL%.*}°C"
   ;;
    pressure) #тиск
        PAR value
        TNSK="${VAL%.*} hPa"
   ;;
    humidity) #вологість
        PAR value
        VOLOGIS="$VAL%"
   ;;
    clouds) #стан хмар
        PAR all
        HMARN="$VAL%"
   ;;
    "/time>")
        TODI=$(($TIME+3))
        if [ "$TODI" -ge "24" ]
        then
            TODI=$(($TODI-24))
        fi
echo "$DATA $TIME: $POGODKA
$TEMPERATURA, $Lhumidity $VOLOGIST
$LwindSpeed $VITERMS ($VITER)
$Lclouds $HMARN$OPADN
"
        CLEAR
   ;;
    "name>"*)
        echo -n "${OUT#*>}"
   ;;
    "country>"*)
        echo ", ${OUT#*>}"
   ;;
    esac
done
}
TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk"  -O -`
DNI="пн вт ср чт пт сб нд пн"
echo "$TEXT" | while read IN
do
        FILTER
done
[close]

Цитата(EXL @ Сегодня, 11:44)
* Как минимум тем, что там имеется серьёзная уязвимость.

Да, я забыл шо с вебом нада поосторожнее. crazy.gif Выше тоже это исправлено.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 16.12.2018, 21:31


Гуру
******

Группа: Разработчики
Сообщений: 1 226
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Т.к. ссылка на отладчик gdb в шапке умерла, наш гуру ПО EXL собрал нам новую версию, заодно и еще несколько полезных инструментов по отладке.

З.Ы. все проги в архиве уже стрипнутые.

Сообщение отредактировал fill.sa - 16.12.2018, 21:31
Прикрепленный файл motomagx_debug_utils.tar   ( 18.76 мегабайт ) Кол-во скачиваний: 152
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 1.1.2019, 20:04


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Есть возможность для зины скомпилить распознаватель QR кодов по фотке?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 1.1.2019, 20:21


Гуру
******

Группа: Разработчики
Сообщений: 1 226
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Ну если найдеш какие-то готовые проекты, желательно старый кют или что-то консольное. Можно будет попробовать собрать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 2.1.2019, 10:06


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 23:21)
* Ну если найдеш какие-то готовые проекты, желательно старый кют или что-то консольное. Можно будет попробовать собрать.

https://fukuchi.org/works/qrencode/
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 2.1.2019, 15:19


Гуру
******

Группа: Разработчики
Сообщений: 1 226
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Во первых проблема кто будет писать ПО ? там же библиотека.

А второе, по зависимостям СДЛ 2 у нас нету, я начинал его какраз, но пока все стоит на месте.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 3.1.2019, 5:21


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 18:19)
* Во первых проблема кто будет писать ПО ? там же библиотека.

Скормить JPG этой библиотеке правда проблема?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта · Motorola ZINE ZN5, ZN5 T-Mobile · Forum
 

181 страниц V « < 141 142 143 144 145 > » 
Ответ в темуСоздание новой темы
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23.4.2024, 7:50

Форум живёт: