Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Работа продолжается. Основная трудность - неопределенность предполагаемой системы, для которой пишешь интерфейс. Когда система наконец создана, становится очевидны дефекты интерфейса, которые должны поддерживать систему. Работа идет на новый круг, что психологически тяжело и неприятно. Сейчас прорабатываю функцию assign. Она назначает параметры устройствам ввода-вывода, куда и откуда forth скрипт будет выдавать и забирать данные, не заботясь, куда эти данные попадут на самом деле. Устройством ввода вывода может быть что угодно, его даже можно написать на форте. Остановился на следущем дизайне функции assign Код: \ .s" name" - оставляет на стеке адрес и длину слова name .s" protocol param1 ... paramN" .s" filename" channal assign \ int int int int int assign
сейчас развиты следущие протоколы Код: s" file" s" anyFileName" 5 assign \ тут все понятно файл назначается 5 каналу ( url = IP_or_HOSTNAME:port or user:password@IP_or_HOSTNAME:port/path ) s" udp url" s" filename" 5 assign s" tcp url" s" filename" 5 assign s" ftp url" s" filename" 5 assign
Запись - чтение осуществляется функциями readchan writechan - для текстов writebytes readbytes - массивы байт Это все у меня уже находится в эксплуатации, скрипты буду понемногу выкладывать. Сам forth пока выкладывать не буду, код еще пока грязный.
Работа продолжается. Основная трудность - неопределенность предполагаемой системы, для которой пишешь интерфейс. Когда система наконец создана, становится очевидны дефекты интерфейса, которые должны поддерживать систему. Работа идет на новый круг, что психологически тяжело и неприятно. Сейчас прорабатываю функцию [b]assign[/b]. Она назначает параметры устройствам ввода-вывода, куда и откуда forth скрипт будет выдавать и забирать данные, не заботясь, куда эти данные попадут на самом деле. Устройством ввода вывода может быть что угодно, его даже можно написать на форте.
Остановился на следущем дизайне функции assign [code] \ .s" name" - оставляет на стеке адрес и длину слова name .s" protocol param1 ... paramN" .s" filename" channal assign \ int int int int int assign [/code] сейчас развиты следущие протоколы [code] s" file" s" anyFileName" 5 assign \ тут все понятно файл назначается 5 каналу ( url = IP_or_HOSTNAME:port or user:password@IP_or_HOSTNAME:port/path ) s" udp url" s" filename" 5 assign s" tcp url" s" filename" 5 assign s" ftp url" s" filename" 5 assign [/code] Запись - чтение осуществляется функциями readchan writechan - для текстов writebytes readbytes - массивы байт
Это все у меня уже находится в эксплуатации, скрипты буду понемногу выкладывать. Сам forth пока выкладывать не буду, код еще пока грязный.
|
|
|
|
Добавлено: Вс ноя 13, 2022 03:06 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
По причине отсутствия опыта работы с сокетами, довольно много кода пришлось переписывать много раз. Пока идет чистка кода после всех экспериментов. Но уже есть сетевые разработки, Wake on lan, ftp-клиент. Не сложно также оснастить каждое приложение, содержащее форт, своим ftp-сервером, что бы можно было без геморойно обмениваться с ним данными. Сейчас выложу рабочую версию самодельной wol. ( удаленное включение компьютеров. https://admcomp.ru/wol.html ) К сожалению технология сбойная, иногда не срабатывает. Но вероятность сбоя самодельной wol и "официальной" программы wol примерно равно. Для запуска нужно реализовать ф-ции adrString lenString index getcharи adrByte len send - которая посылает udp-пакет определенному хосту Код: 2variable mk s" 00:1A:4D:2F:89:0C" mk 2! \ адрес и размер строки mac-адреса variable aa variable bb variable er : dps \ int n int a int b a>b диапазон a < n < b ,-1 a n b > 0 0 er ! bb ! aa ! dup aa @ - 0> if DUP bb @ - 0< if -1 er ! then then drop er @ ; \ -1 -- входит в диапазон между a и b : ifdig16 \ char - log ( num | -1 ) 0 - 9 , a - f ; -1 false dup 47 59 dps \ 0-9 if 48 - else dup 96 103 dps \ a-f if 87 - else dup 64 71 dps \ A-F if 55 - else drop -1 then then then ; \ 0 - Н или -1 : sum16 ( dig1 dig2 - byte or -1000 ) swap dup 0< if \ error (-1) drop drop -1000 else swap dup 0< if drop drop -1000 else 4 shl or \ сдвигает и складывает then then ; variable qu 0 qu ! : to_byte \ .. - byte два соседних символа из строки mk превращает в байт mk 2@ qu @ getchar \ char from string 1 qu +! ifdig16 \ dup . mk 2@ qu @ getchar 1 qu +! ifdig16 \ dup . swap sum16 ; \ qu приращается
: mac \ Читает mac-строку и укладывает байты to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte c, 0 qu ! ; variable macm here macm ! mac \ в macm - адрес байтов mac 6 6 16 * + constant dtg.length \ 102 create datagram[] dtg.length allot 0 qu ! : fillFF \ заполнить 6 байтов структуры datagram байтом ff datagram[] dup 5 + swap do 255 i c! loop ; : movMak \ копировать байты mak адреса 6 qu +! \ qu dup 5 + swap \ qu текущий адрес в datagram 5 0 do macm @ i + c@ qu @ i + c! loop ; : 4mv movMak movMak movMak movMak ; : 16mv 4mv 4mv 4mv 4mv ; : pre fillff \ 16mv datagram[] qu ! 16mv ; pre datagram[] dtg.length send Реализовано конечно аляповато, но ковырятся времени нет.
По причине отсутствия опыта работы с сокетами, довольно много кода пришлось переписывать много раз. Пока идет чистка кода после всех экспериментов. Но уже есть сетевые разработки, Wake on lan, ftp-клиент. Не сложно также оснастить каждое приложение, содержащее форт, своим ftp-сервером, что бы можно было без геморойно обмениваться с ним данными. Сейчас выложу рабочую версию самодельной wol. ( удаленное включение компьютеров. [url]https://admcomp.ru/wol.html[/url] ) К сожалению технология сбойная, иногда не срабатывает. Но вероятность сбоя самодельной wol и "официальной" программы wol примерно равно.
Для запуска нужно реализовать ф-ции adrString lenString index [b]getchar[/b] и adrByte len [b]send[/b] - которая посылает udp-пакет определенному хосту [code] 2variable mk s" 00:1A:4D:2F:89:0C" mk 2! \ адрес и размер строки mac-адреса variable aa variable bb variable er : dps \ int n int a int b a>b диапазон a < n < b ,-1 a n b > 0 0 er ! bb ! aa ! dup aa @ - 0> if DUP bb @ - 0< if -1 er ! then then drop er @ ; \ -1 -- входит в диапазон между a и b : ifdig16 \ char - log ( num | -1 ) 0 - 9 , a - f ; -1 false dup 47 59 dps \ 0-9 if 48 - else dup 96 103 dps \ a-f if 87 - else dup 64 71 dps \ A-F if 55 - else drop -1 then then then ; \ 0 - Н или -1 : sum16 ( dig1 dig2 - byte or -1000 ) swap dup 0< if \ error (-1) drop drop -1000 else swap dup 0< if drop drop -1000 else 4 shl or \ сдвигает и складывает then then ; variable qu 0 qu ! : to_byte \ .. - byte два соседних символа из строки mk превращает в байт mk 2@ qu @ getchar \ char from string 1 qu +! ifdig16 \ dup . mk 2@ qu @ getchar 1 qu +! ifdig16 \ dup . swap sum16 ; \ qu приращается
: mac \ Читает mac-строку и укладывает байты to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte 1 qu +! c, to_byte c, 0 qu ! ; variable macm here macm ! mac \ в macm - адрес байтов mac 6 6 16 * + constant dtg.length \ 102 create datagram[] dtg.length allot 0 qu ! : fillFF \ заполнить 6 байтов структуры datagram байтом ff datagram[] dup 5 + swap do 255 i c! loop ; : movMak \ копировать байты mak адреса 6 qu +! \ qu dup 5 + swap \ qu текущий адрес в datagram 5 0 do macm @ i + c@ qu @ i + c! loop ; : 4mv movMak movMak movMak movMak ; : 16mv 4mv 4mv 4mv 4mv ; : pre fillff \ 16mv datagram[] qu ! 16mv ; pre datagram[] dtg.length send [/code] Реализовано конечно аляповато, но ковырятся времени нет.
|
|
|
|
Добавлено: Ср окт 26, 2022 15:06 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Все это время выгуливал эту программу в велосипедных поездках. Программа умеет работать с одним загруженным треком и отображать текущий, формируемый трек. В принципе, несложно было бы написать форт-программу, которая давала бы, например, звуковое оповещение в случае отклонения от заданного трека, но почему-то поленился это сделать. Вместо этого, используя Intent, реализовал вызов фотографической программы пользователя Longer'а http://fforum.winglion.ru/viewtopic.php?p=44257#p44257 (Кстати, много кода я надергал с его camSnap'a, на тот момент я был чайником в андроид программировании) Intent вызывается при нажатии на кнопку wpt, что позволяет не только зафиксировать координаты путевой точки, но и отфотографировать ее со всех сторон. Для этого ослабил крепление смартфона на руле так, что бы можно было переворачивать его вертикально, для фотографирования, или горизонтально, для навигации. В целом, две взаимодействующие примитивные программы оказались гораздо удобнее каких-то иных средств. Когда же в обоих окажется отлаженный forth, использование таких программ станет еще на порядок гибче.
Работа над фортом продолжается - введено много улучшений. Прорабатывается многозадачность, каналы. Добавилась возможность работать не только с файлами, но и с датаграммами.
[pre]Все это время выгуливал эту программу в велосипедных поездках. Программа умеет работать с одним загруженным треком и отображать текущий, формируемый трек. В принципе, несложно было бы написать форт-программу, которая давала бы, например, звуковое оповещение в случае отклонения от заданного трека, но почему-то поленился это сделать. Вместо этого, используя Intent, реализовал вызов фотографической программы пользователя [b]Longer[/b]'а [url]http://fforum.winglion.ru/viewtopic.php?p=44257#p44257[/url] (Кстати, много кода я надергал с его camSnap'a, на тот момент я был чайником в андроид программировании) Intent вызывается при нажатии на кнопку wpt, что позволяет не только зафиксировать координаты путевой точки, но и отфотографировать ее со всех сторон. Для этого ослабил крепление смартфона на руле так, что бы можно было переворачивать его вертикально, для фотографирования, или горизонтально, для навигации. В целом, две взаимодействующие примитивные программы оказались гораздо удобнее каких-то иных средств. Когда же в обоих окажется отлаженный forth, использование таких программ станет еще на порядок гибче.
Работа над фортом продолжается - введено много улучшений. Прорабатывается многозадачность, каналы. Добавилась возможность работать не только с файлами, но и с датаграммами.[/pre]
|
|
|
|
Добавлено: Вс окт 09, 2022 07:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Цитата: А просто писать на ФОРТЕ, использую всю красоту и мощь можно? Нельзя. Скорее всего для андроида нет форта, пригодного для написания скриптов, чтоб переправлять данные между процессами, как это делают в мире Юникс уже пол столетия. Кстати, на такие возможности, мне кажется мало обращают внимание. А они радикально облегчают любительское программирование, оставляя реализацию всякой организационной хрени на "потом", которую можно доработать скриптами. Хорошая новость. Написал отображение карты за один вечер, хотя ожидал закончить работу за месяц другой. Осталось только написать кеширование загруженных из интернета тайлов, и можно считать реализацию черновика сделанной. Запись фрагмента недавней велопрогулки. На телефоне карту можно перемещать, написал свою реализацию перемещения экрана, та, что используется в android api ужастна, экран залипает. Код: float Xdown, Ydown;// координаты касания @Override public boolean onTouch(View v, MotionEvent event ) {
float x,y; x = event.getX(); y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // нажатие Xdown=x; Ydown=y; break; case MotionEvent.ACTION_MOVE: // движение .. на некоторых моделях работает муторно break; case MotionEvent.ACTION_UP: // отпускание !! убрать инт int dxp=(int)(Xdown-x); // смещение в пикселях int dyp=-(int)(Ydown-y); double dxm=dxp*PixelSizeMetres; // смещение в метрах double dym=dyp*PixelSizeMetres; float klat=111111.0f; // метров в градусе по широте float kLon=(float ) (40000*Math.cos( Math.toRadians( centrLat) )/360 ) *1000; // по долготе double dxg = dxm/kLon; double dyg = dym/klat; centrLat=centrLat+dyg; centrLon=centrLon+dxg; PixelSizeMetres = AU.calcMetrsPix(centrLat, zoom); dispCorner = AU.calcDispCorner(centrLat,centrLon,PixelSizeMetres, displaywidth , displayheight); navView.tileArray=macroTileArray( centrLat, centrLon, zoom, displaywidth , displayheight); if (AU.Wpt!=null)updateWP( AU.Wpt, dispCorner , PixelSizeMetres); if (AU.TRK!=null) updateTRK(AU.TRK); if (TRKp!=null) updateGPS(TRKp); navView.invalidate(); break; case MotionEvent.ACTION_CANCEL: break; } return true; }
В работе использовал только сферическую геометрию и информацию отсюда https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames Никакими сторонними библиотеками не пользовался.
[quote]А просто писать на ФОРТЕ, использую всю красоту и мощь можно?[/quote]
Нельзя. Скорее всего для андроида нет форта, пригодного для написания скриптов, чтоб переправлять данные между процессами, как это делают в мире Юникс уже пол столетия. Кстати, на такие возможности, мне кажется мало обращают внимание. А они радикально облегчают любительское программирование, оставляя реализацию всякой организационной хрени на "потом", которую можно доработать скриптами.
Хорошая новость. Написал отображение карты за один вечер, хотя ожидал закончить работу за месяц другой. Осталось только написать кеширование загруженных из интернета тайлов, и можно считать реализацию черновика сделанной. Запись фрагмента недавней велопрогулки.
[img]https://i.ibb.co/rk6whd4/Screenshot-20220814-013411-nav3.jpg[/img]
На телефоне карту можно перемещать, написал свою реализацию перемещения экрана, та, что используется в android api ужастна, экран залипает.
[code] float Xdown, Ydown;// координаты касания @Override public boolean onTouch(View v, MotionEvent event ) {
float x,y; x = event.getX(); y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // нажатие Xdown=x; Ydown=y; break; case MotionEvent.ACTION_MOVE: // движение .. на некоторых моделях работает муторно break; case MotionEvent.ACTION_UP: // отпускание !! убрать инт int dxp=(int)(Xdown-x); // смещение в пикселях int dyp=-(int)(Ydown-y); double dxm=dxp*PixelSizeMetres; // смещение в метрах double dym=dyp*PixelSizeMetres; float klat=111111.0f; // метров в градусе по широте float kLon=(float ) (40000*Math.cos( Math.toRadians( centrLat) )/360 ) *1000; // по долготе double dxg = dxm/kLon; double dyg = dym/klat; centrLat=centrLat+dyg; centrLon=centrLon+dxg; PixelSizeMetres = AU.calcMetrsPix(centrLat, zoom); dispCorner = AU.calcDispCorner(centrLat,centrLon,PixelSizeMetres, displaywidth , displayheight); navView.tileArray=macroTileArray( centrLat, centrLon, zoom, displaywidth , displayheight); if (AU.Wpt!=null)updateWP( AU.Wpt, dispCorner , PixelSizeMetres); if (AU.TRK!=null) updateTRK(AU.TRK); if (TRKp!=null) updateGPS(TRKp); navView.invalidate(); break; case MotionEvent.ACTION_CANCEL: break; } return true; } [/code]
В работе использовал только сферическую геометрию и информацию отсюда [url]https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames[/url]
Никакими сторонними библиотеками не пользовался.
|
|
|
|
Добавлено: Вс авг 14, 2022 03:32 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Цитата: Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб AIDE https://play.google.com/store/apps/details?id=com.aide.ui&hl=ru&gl=US Можно разрабатывать прямо на телефоне, можно копировать исходные тексты в телефон и там компилировать. При этом полная среда, собирает проекты в том числе и android studio. В бесплатной версии может работать с пятью java файлами. Платная стоит порядка 800 рублей, часто бывают скидки. Из за ограничений в 5 файлов вынужден был поместить весь код форта в один большой файл. Есть утилиты коммандной строки, их можно скачать в android developer К сожалению, надо очень точно настраивать манифесты, версии и прочие траблы. Проекты хотя и собираются, но только один раз удалось установить его на телефон. Забросил эту ковыряльню. Когда будет время, напишу скрипты.
[quote] Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб [/quote]
AIDE [url]https://play.google.com/store/apps/details?id=com.aide.ui&hl=ru&gl=US[/url]
Можно разрабатывать прямо на телефоне, можно копировать исходные тексты в телефон и там компилировать. При этом полная среда, собирает проекты в том числе и android studio. В бесплатной версии может работать с пятью java файлами. Платная стоит порядка 800 рублей, часто бывают скидки. Из за ограничений в 5 файлов вынужден был поместить весь код форта в один большой файл.
Есть утилиты коммандной строки, их можно скачать в android developer К сожалению, надо очень точно настраивать манифесты, версии и прочие траблы. Проекты хотя и собираются, но только один раз удалось установить его на телефон. Забросил эту ковыряльню. Когда будет время, напишу скрипты.
|
|
|
|
Добавлено: Чт авг 11, 2022 17:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
KPG писал(а): Total Vacuum писал(а): А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб ) Да, вариантов выбора точно мало, если нужен именно нативный Форт. Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид Кто-то же рыпается писать под ведроид. Что мешает? Танцы не в счёт.
[quote="KPG"][quote="Total Vacuum"]А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )[/quote] Да, вариантов выбора точно мало, если нужен именно нативный Форт. Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид[/quote]Кто-то же рыпается писать под ведроид. Что мешает? Танцы не в счёт. :)
|
|
|
|
Добавлено: Чт авг 11, 2022 16:21 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Total Vacuum писал(а): Sotnik писал(а): vikt писал(а): с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением. А просто писать на ФОРТЕ, использую всю красоту и мощь можно? А на каком Форте-то, да еще и под Андроид? Вот это и наша беда, что не все платформы перекрыты поддержкой. Ресурса нет, денег нет на раскрутку, идей куча, но решать не на чем - только извращённые ЯП...
[quote="Total Vacuum"][quote="Sotnik"][quote="vikt"]с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением.[/quote]А просто писать на ФОРТЕ, использую всю красоту и мощь можно?[/quote]А на каком Форте-то, да еще и под Андроид?[/quote] Вот это и наша беда, что не все платформы перекрыты поддержкой. Ресурса нет, денег нет на раскрутку, идей куча, но решать не на чем - только извращённые ЯП...
|
|
|
|
Добавлено: Чт авг 11, 2022 16:19 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Total Vacuum писал(а): А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб ) Да, вариантов выбора точно мало, если нужен именно нативный Форт. Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид
[quote="Total Vacuum"]А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )[/quote] Да, вариантов выбора точно мало, если нужен именно нативный Форт. Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид
|
|
|
|
Добавлено: Чт авг 11, 2022 15:56 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Sotnik писал(а): vikt писал(а): с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением. А просто писать на ФОРТЕ, использую всю красоту и мощь можно? А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб Так что появление нормального, хотя и самодельного, Форта под Андроид надо только приветствовать. Наверняка кому-то пригодится... И, кстати, почему приложения под Андроид такие жирные? Пара кнопочек, а уже 100Мб, а ведь бывают и по 500... По рукам бы надавать тем, кто такие жирные программы пишет.
[quote="Sotnik"][quote="vikt"]с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением.[/quote]А просто писать на ФОРТЕ, использую всю красоту и мощь можно?[/quote]А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) Так что появление нормального, хотя и самодельного, Форта под Андроид надо только приветствовать. Наверняка кому-то пригодится...
И, кстати, почему приложения под Андроид такие жирные? Пара кнопочек, а уже 100Мб, а ведь бывают и по 500... По рукам бы надавать тем, кто такие жирные программы пишет. :)
|
|
|
|
Добавлено: Чт авг 11, 2022 15:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
vikt писал(а): с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением. Тебе мало кладбища с надгробиями с названиями фортов??? А просто писать на ФОРТЕ, использую всю красоту и мощь можно? Под каким из надгробий есть внятное описание что там лежит? Единицы живых, которые ещё трепыхаются. P.S. Это не моё, но точно характеризует что гробит Форт... Форт - это пустые бутылки. Его выпивают, написав для решения своей задачи, практической или теоритической, и потом... выкидывают в народ как ненужную пустую бутылку... Использовали - вот вам, авось ещё кому пригодиться. Ни этикетки толком, ни описания содержимого, ни поддержки в наполнении. Вот такими пустыми бутылками и завалены ресурсы "по форту". В них есть остатки, капли, которые создают запахи, чтоб мир понял, что Форт ещё существует. А более ... хранят в сейфе, подальше от посторонних, и втихаря делают хорошие глотки, громко рассказывая: - Какой у меня отличнейший ФОРТ есть! Он (Форт у меня) во-о-о-от та-а-а-акой за-а-а-ашибательский. Выдвигаются громадные словесные конструкции (не фортовские), сваливающие любые начинания в болтовню. - Ну вот же, и вот тут, и там, всё же завалено пустыми бутылками - наполняй и используй!!!
[quote="vikt"]с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением.[/quote] Тебе мало кладбища с надгробиями с названиями фортов???
А просто писать на ФОРТЕ, использую всю красоту и мощь можно? Под каким из надгробий есть внятное описание что там лежит? Единицы живых, которые ещё трепыхаются.
[b]P.S. Это не моё, но точно характеризует что гробит Форт... [/b] Форт - это пустые бутылки. Его выпивают, написав для решения своей задачи, практической или теоритической, и потом... выкидывают в народ как ненужную пустую бутылку... Использовали - вот вам, авось ещё кому пригодиться. Ни этикетки толком, ни описания содержимого, ни поддержки в наполнении. Вот такими пустыми бутылками и завалены ресурсы "по форту". В них есть остатки, капли, которые создают запахи, чтоб мир понял, что Форт ещё существует. А более ... хранят в сейфе, подальше от посторонних, и втихаря делают хорошие глотки, громко рассказывая: - Какой у меня отличнейший ФОРТ есть! Он (Форт у меня) во-о-о-от та-а-а-акой за-а-а-ашибательский.
Выдвигаются громадные словесные конструкции (не фортовские), сваливающие любые начинания в болтовню. - Ну вот же, и вот тут, и там, всё же завалено пустыми бутылками - наполняй и используй!!!
|
|
|
|
Добавлено: Чт авг 11, 2022 15:06 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Продолжаю работать над проектом. Успешно реализовывая навигационную часть проекта, к сожалению допустил какую-то непонятную ошибку в фортовской части, конкретно в графике. Решил не разбираться с этим, тем более, что осталось реализовать только загрузку из сети, кэширование и отображение карты. Затем буду переписывать проект. В частности форт сделаю намного более полным и читаемым. И с графикой, прежде чем внедрить ее в навигационный прект, буду разбираться на более простом проекте, не отягощенным навигационными приблудами. Сейчас реализованы 1) загрузка и отображение gpx файла. ( путевые точки и трек в формате xml ) 2) Отображение и сохранение точек трека, полученные через gps приемник в формате gpx. https://nakarte.me/#m=15/55.96711/37.80035&l=O&nktl=qZJcKV_rT86ZQCGiPOZiqAСкошанные углы на повороте объясняются тем, что я забираю данные с gps один раз в 10 секунд. Кстати, реализацию фортов, оформлю отдельным проектом. Думаю, форт сообществу надо было сделать это давно, с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением. Во первых, это поможет понять create does компилирущие слова итд. Во вторых - в хозяйстве пригодицо. Книга Баранова и Ноздрунова расчитана на очень подготовленного читателя, и из за мизерного объема ее многие вещи мало раскрыты.
Продолжаю работать над проектом. Успешно реализовывая навигационную часть проекта, к сожалению допустил какую-то непонятную ошибку в фортовской части, конкретно в графике. Решил не разбираться с этим, тем более, что осталось реализовать только загрузку из сети, кэширование и отображение карты. Затем буду переписывать проект. В частности форт сделаю намного более полным и читаемым. И с графикой, прежде чем внедрить ее в навигационный прект, буду разбираться на более простом проекте, не отягощенным навигационными приблудами.
Сейчас реализованы 1) загрузка и отображение gpx файла. ( путевые точки и трек в формате xml ) 2) Отображение и сохранение точек трека, полученные через gps приемник в формате gpx.
[img]https://i.ibb.co/HhjfShS/Screenshot-20220811-123605-nav3.jpg[/img]
[url]https://nakarte.me/#m=15/55.96711/37.80035&l=O&nktl=qZJcKV_rT86ZQCGiPOZiqA[/url]
Скошанные углы на повороте объясняются тем, что я забираю данные с gps один раз в 10 секунд.
Кстати, реализацию фортов, оформлю отдельным проектом. Думаю, форт сообществу надо было сделать это давно, с тех пор, как возникла идея, "каждый фортер должен написать свой форт". Вполне согласен с этим утверждением. Во первых, это поможет понять create does компилирущие слова итд. Во вторых - в хозяйстве пригодицо. Книга Баранова и Ноздрунова расчитана на очень подготовленного читателя, и из за мизерного объема ее многие вещи мало раскрыты.
|
|
|
|
Добавлено: Чт авг 11, 2022 14:50 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Total Vacuum писал(а): А какой там формат вызова для OpenGL-слов? Калька с обычного. Только нет автоматической подгрузки всей dll.
Вложения: |
irbis_gl.png [ 35.7 Кб | Просмотров: 10508 ]
|
[quote="Total Vacuum"]А какой там формат вызова для OpenGL-слов?[/quote] Калька с обычного. Только нет автоматической подгрузки всей dll.
|
|
|
|
Добавлено: Пт июн 24, 2022 23:10 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Hishnik писал(а): А Ирбис ... одно пространство OpenGL. А какой там формат вызова для OpenGL-слов?
[quote="Hishnik"]А Ирбис ... одно пространство OpenGL.[/quote]А какой там формат вызова для OpenGL-слов?
|
|
|
|
Добавлено: Пт июн 24, 2022 20:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Total Vacuum писал(а): Кстати, а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки? Кварк-Форт А Ирбис таких имеет вообще N штук, плюс одно пространство OpenGL.
[quote="Total Vacuum"]Кстати, а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?[/quote] Кварк-Форт :) А Ирбис таких имеет вообще N штук, плюс одно пространство OpenGL.
|
|
|
|
Добавлено: Чт июн 23, 2022 23:59 |
|
|
|
|
|
Заголовок сообщения: |
Re: Блог программиста любителя |
|
|
Цитата: Маловат все-таки буфер на 1000 графических примитивов. Можно задать больший. Это черновой вариант, Цитата: а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки? Можно, есть тип данных bitmap, он многофункцианальный. Вообще, графику лучше выводить с помощью java, так как этот процесс высокозатратный, а предложенную технику использовать для того, что бы подрисовать чего-нибудь к сформированному изображению. Вообще, в андроид апи очень много графических ф-ций, opengl, матричные преобразования и др. Ковырятся с ними долго, ограничусь только подмножеством, необходимым для реализации навигационной программы. Каждый может без труда добавить необходимые ему функции по шаблону. А иначе я никогда не закончу даже черновой проект.
[quote]Маловат все-таки буфер на 1000 графических примитивов.[/quote] Можно задать больший. Это черновой вариант,
[quote] а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?[/quote] Можно, есть тип данных bitmap, он многофункцианальный. Вообще, графику лучше выводить с помощью java, так как этот процесс высокозатратный, а предложенную технику использовать для того, что бы подрисовать чего-нибудь к сформированному изображению. Вообще, в андроид апи очень много графических ф-ций, opengl, матричные преобразования и др. Ковырятся с ними долго, ограничусь только подмножеством, необходимым для реализации навигационной программы. Каждый может без труда добавить необходимые ему функции по шаблону. А иначе я никогда не закончу даже черновой проект.
|
|
|
|
Добавлено: Чт июн 23, 2022 17:39 |
|
|
|
|