Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн ноя 28, 2022 23:29

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8
Автор Сообщение
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт июн 23, 2022 17:39 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Цитата:
Маловат все-таки буфер на 1000 графических примитивов.

Можно задать больший. Это черновой вариант,

Цитата:
а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?

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

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт июн 23, 2022 23:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7649
Благодарил (а): 23 раз.
Поблагодарили: 143 раз.
Total Vacuum писал(а):
Кстати, а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?

Кварк-Форт :) А Ирбис таких имеет вообще N штук, плюс одно пространство OpenGL.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пт июн 24, 2022 20:18 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 394
Откуда: Москва
Благодарил (а): 51 раз.
Поблагодарили: 18 раз.
Hishnik писал(а):
А Ирбис ... одно пространство OpenGL.
А какой там формат вызова для OpenGL-слов?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пт июн 24, 2022 23:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7649
Благодарил (а): 23 раз.
Поблагодарили: 143 раз.
Total Vacuum писал(а):
А какой там формат вызова для OpenGL-слов?

Калька с обычного. Только нет автоматической подгрузки всей dll.


Вложения:
irbis_gl.png
irbis_gl.png [ 35.7 Кб | Просмотров: 3012 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 14:50 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Продолжаю работать над проектом.
Успешно реализовывая навигационную часть проекта, к сожалению
допустил какую-то непонятную ошибку в фортовской части, конкретно в графике.
Решил не разбираться с этим, тем более, что осталось реализовать
только загрузку из сети, кэширование и отображение карты.
Затем буду переписывать проект.
В частности форт сделаю намного более полным и читаемым.
И с графикой, прежде чем внедрить ее в навигационный прект, буду разбираться
на более простом проекте, не отягощенным навигационными приблудами.

Сейчас реализованы 1) загрузка и отображение gpx файла. ( путевые точки и трек в
формате xml )
2) Отображение и сохранение точек трека, полученные через gps приемник в формате gpx.

Изображение

https://nakarte.me/#m=15/55.96711/37.80035&l=O&nktl=qZJcKV_rT86ZQCGiPOZiqA

Скошанные углы на повороте объясняются тем, что я забираю данные с gps один
раз в 10 секунд.

Кстати, реализацию фортов, оформлю отдельным проектом.
Думаю, форт сообществу надо было сделать это давно,
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
Во первых, это поможет понять create does компилирущие слова итд.
Во вторых - в хозяйстве пригодицо.
Книга Баранова и Ноздрунова расчитана на очень подготовленного читателя,
и из за мизерного объема ее многие вещи мало раскрыты.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 15:06 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
Тебе мало кладбища с надгробиями с названиями фортов???

А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
Под каким из надгробий есть внятное описание что там лежит?
Единицы живых, которые ещё трепыхаются.

P.S. Это не моё, но точно характеризует что гробит Форт...
Форт - это пустые бутылки.
Его выпивают, написав для решения своей задачи, практической или теоритической, и потом... выкидывают в народ как ненужную пустую бутылку...
Использовали - вот вам, авось ещё кому пригодиться. Ни этикетки толком, ни описания содержимого, ни поддержки в наполнении.
Вот такими пустыми бутылками и завалены ресурсы "по форту".
В них есть остатки, капли, которые создают запахи, чтоб мир понял, что Форт ещё существует.
А более ... хранят в сейфе, подальше от посторонних, и втихаря делают хорошие глотки, громко рассказывая: - Какой у меня отличнейший ФОРТ есть!
Он (Форт у меня) во-о-о-от та-а-а-акой за-а-а-ашибательский.

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

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 15:46 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 394
Откуда: Москва
Благодарил (а): 51 раз.
Поблагодарили: 18 раз.
Sotnik писал(а):
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) Так что появление нормального, хотя и самодельного, Форта под Андроид надо только приветствовать. Наверняка кому-то пригодится...

И, кстати, почему приложения под Андроид такие жирные? Пара кнопочек, а уже 100Мб, а ведь бывают и по 500... По рукам бы надавать тем, кто такие жирные программы пишет. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 15:56 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1849
Благодарил (а): 6 раз.
Поблагодарили: 69 раз.
Total Vacuum писал(а):
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )

Да, вариантов выбора точно мало, если нужен именно нативный Форт.
Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 16:19 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Total Vacuum писал(а):
Sotnik писал(а):
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
А на каком Форте-то, да еще и под Андроид?
Вот это и наша беда, что не все платформы перекрыты поддержкой.
Ресурса нет, денег нет на раскрутку, идей куча, но решать не на чем - только извращённые ЯП...

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 16:21 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
KPG писал(а):
Total Vacuum писал(а):
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )

Да, вариантов выбора точно мало, если нужен именно нативный Форт.
Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид
Кто-то же рыпается писать под ведроид.
Что мешает? Танцы не в счёт. :)

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Чт авг 11, 2022 17:08 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Цитата:
Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб


AIDE
https://play.google.com/store/apps/details?id=com.aide.ui&hl=ru&gl=US

Можно разрабатывать прямо на телефоне, можно копировать исходные тексты
в телефон и там компилировать. При этом полная среда, собирает проекты
в том числе и android studio.
В бесплатной версии может работать с пятью java файлами. Платная стоит
порядка 800 рублей, часто бывают скидки. Из за ограничений в 5 файлов
вынужден был поместить весь код форта в один большой файл.

Есть утилиты коммандной строки, их можно скачать в android developer
К сожалению, надо очень точно настраивать манифесты, версии и прочие траблы.
Проекты хотя и собираются, но только один раз удалось установить его на телефон.
Забросил эту ковыряльню. Когда будет время, напишу скрипты.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вс авг 14, 2022 03:32 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Цитата:
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?


Нельзя. Скорее всего для андроида нет форта, пригодного для написания скриптов,
чтоб переправлять данные между процессами, как это делают в мире Юникс уже
пол столетия. Кстати, на такие возможности, мне кажется мало обращают
внимание. А они радикально облегчают любительское программирование,
оставляя реализацию всякой организационной хрени на "потом", которую
можно доработать скриптами.

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

Изображение

На телефоне карту можно перемещать, написал свою реализацию перемещения
экрана, та, что используется в 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

Никакими сторонними библиотеками не пользовался.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вс окт 09, 2022 07:46 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Все это время выгуливал эту программу в велосипедных поездках.
Программа умеет работать с одним загруженным треком и отображать
текущий, формируемый трек. В принципе, несложно было бы написать
форт-программу, которая давала бы, например, звуковое оповещение в случае
отклонения от заданного трека, но почему-то поленился это сделать.
Вместо этого, используя Intent, реализовал вызов фотографической
программы пользователя Longer
http://fforum.winglion.ru/viewtopic.php?p=44257#p44257

(Кстати, много кода я надергал с его camSnap'a, на тот момент
я был чайником в андроид программировании)
Intent вызывается при нажатии на кнопку wpt, что позволяет
не только зафиксировать координаты путевой точки, но и отфотографировать ее
со всех сторон. Для этого ослабил крепление смартфона на руле так,
что бы можно было переворачивать его вертикально, для фотографирования,
или горизонтально, для навигации.
В целом, две взаимодействующие примитивные программы оказались
гораздо удобнее каких-то иных средств. Когда же в обоих окажется
отлаженный forth, использование таких программ станет еще
на порядок гибче.

Работа над фортом продолжается - введено много улучшений.
Прорабатывается многозадачность, каналы.
Добавилась возможность работать не только с файлами, но и с датаграммами.

_________________
Линукс решает, винда глотает.



За это сообщение автора vikt поблагодарили - 2: Sotnik, Total Vacuum
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср окт 26, 2022 15:06 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
По причине отсутствия опыта работы с сокетами, довольно много кода пришлось переписывать
много раз. Пока идет чистка кода после всех экспериментов.
Но уже есть сетевые разработки, 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

Реализовано конечно аляповато, но ковырятся времени нет.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вс ноя 13, 2022 03:06 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 317
Откуда: Москва
Благодарил (а): 35 раз.
Поблагодарили: 7 раз.
Работа продолжается. Основная трудность - неопределенность предполагаемой системы, для которой
пишешь интерфейс. Когда система наконец создана, становится очевидны дефекты интерфейса,
которые должны поддерживать систему. Работа идет на новый круг, что психологически тяжело и неприятно.
Сейчас прорабатываю функцию 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 пока выкладывать не буду, код еще пока грязный.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB