Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт дек 12, 2024 07:50

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 126 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9
Автор Сообщение
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вт авг 27, 2024 03:15 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 334
Откуда: Москва
Благодарил (а): 37 раз.
Поблагодарили: 9 раз.
После перерыва, решил возобновить разработку.

Перерыв был вызван причинами в основном технического порядка, когда проект, над которым я упорно работал, написанный
на java 17, отказавлся компилироваться на java, который использовался в android Ide.

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

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

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

Но недавно благорастворение закончилось, навигационная программа начала бешено выжирать
заряд батареи. Просто кэщирование было организованно самым примитивным способом -
тайл карты загружался из интернета и сохранялся на sd карте. Имя тайла - типа (z6x45y2345),
присоединялось к строке, в которой таким же образом были записанны имена предыдущих,
загруженных из интернета тайлов. Прежде, чем загрузить из интернета картинку, осуществлялся
поиск по строке. Если находил, загружался с SD, если нет - с интернету. В конце концов размер строки
стал килобайт 300 наверное!
В общем поправить не трудно, да за два года образовалась полная разруха.
Я забыл, из каких проектов скомпилировал нынешние, находящиеся в эксплуатации apk - файлы.
Реально, их там куча. Это сохраненные промежуточные проекты, и развитие существующих, и оставленные на будущее.

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

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

В общем, если кому нужен aide, можно сюда
https://4pda.to/forum/index.php?showtopic=319369

там лежит крякнутая версия, в отличии от бесплатной, которая может собрать проект не больше чем из 5 файлов,
в этой можно собрать проект из любого кол-ва файлов. Можно взять у меня apk-файл, скачанный из google play давно.

Вчера удалось собрать android проект из командной строки, думаю развивать это направление

Утилиты командной строки можно скачать с официального
https://developer.android.com/studio?hl=ru
Далее буду описывать, как всем этим пользоваться.

ps. Тяжеленную android studio ставил, проблевался.
Вдобавок отказалась компилировать мои aide-проекты, никаких дел с ней больше иметь не буду, даже по приговору суда.

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


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

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 334
Откуда: Москва
Благодарил (а): 37 раз.
Поблагодарили: 9 раз.
Вообще, разруха не только у меня. Altlinux, которым без проблем пользовался больше 20 лет,
начал выдавать странности. Из проекта исчезла опера,( уже давно), не запускается avidemux,
нечем редактировать видеофайлы. Исчез gfort, что крайне неприятно. Не с чем стало сравнивать
свой форт. Сходу собрать gfort из исходников не удалось, ковырятся не хотелось.

к счастью в http://forth.org.ru/ Russian FORTH Interest Group

сохранилась ссылка на spf, там оказался бинарник spf4orig который запустился.
В принципе пойдет, только команды надо обязательно
набирать большими буквами, что не очень хорошо.

В общем, можно приступать.
Еще, кажется окончательно разобрался с компилятором командной строки для android проектов.

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


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

Зарегистрирован: Пт июн 06, 2008 14:21
Сообщения: 134
Откуда: Карелия
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
В Help написано как убрать заглавные буквы

Особенности SPF
Краткое вступление для тех, кто уже знаком с какой-либо Форт-системой и стандартом ANS'94.

Последнее обновление: $Date: 2008/11/14 20:13:12 $

[Русский] [Английский]

Содержание
Установил SPF4. И где здесь что-куда?
Как запускать и подключать файлы?
REQUIRE
Пути поиска файлов для INCLUDED
Модули
Регистро-зависимость
Ввод чисел
Вещественные числа (числа с плавающей точкой)
Структуры
Где FORGET?
Где NOT?
Где DEFER?
Как одним словом очистить стек?
Комментарии
Строки
Многозадачность
Словари
Локальные и временные переменные
Генерация исполняемых модулей (exe-файлов)
Подключение dll-библиотек
Средства отладки
Оптимизатор
Поддержка ANS
Callback'и
Слово NOTFOUND
Scattered colons
Область видимости
Обработка исключений

Установил SPF4. И где здесь что-куда?
Первое и самое важное - расположение ваших рабочих файлов. В дистрибутиве SPF есть каталог DEVEL, предназначенный для разработчиков (в том числе и вас). Создайте в ней ваш подкаталог, например, ~vasya. И теперь вы можете подключать ваши файлы написав сокращённый путь в виде ~vasya/prog/myprog.f. Это упрощает взаимный доступ к библиотекам и программам. Общепринято библиотеки класть в подкаталог lib, а примеры программ в prog.

В каталоге DEVEL собраны наработки других SP-Forth'еров, с кратким (очень кратким) их обзором вы можете ознакомиться в SPF_DEVEL, либо пройтись по файлам самому.

В каталоге samples/win/spfwc вы найдёте GUI фронтенд для SPF. Просто запустите compile.bat и скопируйте полученный бинарный файл spf4wc.exe в корневой каталог установки (рядом с spf4.exe).


Как запускать и подключать файлы?
В командной строке скормить файл SPF'у можно просто указав путь к нему в параметрах запуска,

spf.exe ~vasya/prog/myprog.f
Заметьте, что путь для включения могут быть как абсолютным, так и относительно каталога devel.

В консоли SPF (в режиме интерпретации) достаточно набрать имя файла:

~vasya/prog/myprog.f
В целях совместимости лучше подключать явно:

S" ~vasya/prog/myprog.f" INCLUDED
Но правильнее всего использовать REQUIRE.


REQUIRE
В SPF есть нестандартное слово REQUIRE ("word" "file" -- ), где word - некоторое слово определённое в библиотеке file. Если слово word присутствует в контекстном словаре, REQUIRE считает, что библиотека уже была подключена и не загружает её. Так избегается двойная загрузка библиотек. Если же найти word не удаётся - библиотека подключается обычным образом (через INCLUDED). Например:

REQUIRE CreateSocket ~ac/lib/win/winsock/sockets.f
REQUIRE ForEach-Word ~pinka/lib/words.f
REQUIRE ENUM ~nn/lib/enum.f
NB: В качестве word выбирайте всегда наиболее уникальное слово из подключаемой библиотеки.


Пути поиска файлов для INCLUDED
S" file.f" INCLUDED будет искать в перечисленных ниже местах в именно таком порядке

короткое имя файла file.f (т.е. в текущем каталоге)
PATH_TO_SPF.EXE/devel/file.f (т.о. удобно использовать чужие наработки),
PATH_TO_SPF.EXE/file.f (так подключаются стандартные либы и другие файлы из поставки SPF).
Если требуется указать больше путей поиска (например использовать форт код разделяемый между системами, или неважно - любой код вне дерева каталогов SPF который не может быть адресован относительно текущего файла), то можно либо переопределить FIND-FULLNAME (который VECT) либо использовать внешнюю либу - ~ygrek/spf/included.f.

TODO: Вынести отдельно

Тогда потребуется только прописать в spf4.ini

~ygrek/spf/included.f
with: my_path\
S" my path with spaces/" with
и все файлы будут искаться в my_path в дополнение к описанному выше алгоритму (my_path может быть как абсолютным так и относительно spf.exe).


Модули
В SPF есть модули, которые позволяют скрывать некоторые внутренние слова библиотек выводя наружу только слова для взаимодействия.

MODULE: vasya-lib
\ внутренние слова
EXPORT
\ слова взаимодействия, видные снаружи, компилируются во внешний словарь.
DEFINITIONS
\ опять внутренние слова
EXPORT
\ ну вы поняли :)
;MODULE
Код MODULE: vasya-lib можно писать много раз - последующие вызовы будут докомпилировать слова в тот же модуль. На самом деле слово определённое через MODULE: это обычный словарь.


Регистро-зависимость
SPF регистрозависим, то есть для него слова CHAR , Char и char - три разных слова. Сделать SPF независимым от регистра слова можно подключив файл lib/ext/caseins.f. По умолчанию, регистро-независимость включается сразу после подключения lib/ext/caseins.f.

Чтобы регистро-независимость временно выключать/включать, используйте переменную CASE-INS:

REQUIRE CASE-INS lib/ext/caseins.f
2 dup * .
CASE-INS OFF \ вернуть обратно режим зависимости от регистра
2 DUP * .
CASE-INS ON \ включить регистро-независимость
2 dup * .



За это сообщение автора F-MAP поблагодарил: vikt
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Ср сен 25, 2024 03:08 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 334
Откуда: Москва
Благодарил (а): 37 раз.
Поблагодарили: 9 раз.
Спасибо большое!

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


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

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 334
Откуда: Москва
Благодарил (а): 37 раз.
Поблагодарили: 9 раз.
Основные средства разработки программ для android.
Android studio - официальное
https://developer.android.com/sdk/index.html
Есть архивы старых sdk
https://developer.android.com/studio/archive?hl=ru
Насколько я помню, в старых версиях была собственная java,
что в принципе может пригодиться.

Следущее, aide - разработка или компиляция програм прямо на android устройствах.
Ныне заброшен, поддерживается энтузиастами.
https://4pda.to/forum/index.php?showtop ... 69&st=4960
Сам я до последнего его использовал.

Разработка android программ из командной строки.
Скачивается там же, где android studio, чуть ниже.
Преимущества:
Эти утилиты входят в состав самой android studio и aide.
Утилиты командной строки, это java программы, соответственно,
можно организовать средство разработки android программ на любом
устройстве, где есть полноценная java. Такие проекты есть.

Android SDK
https://github.com/AndroidIDEOfficial/a ... es/tag/sdk
https://github.com/AndroidIDEOfficial/a ... /tree/main

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

https://www.hanshq.net/command-line-android.html

Замечу, что основные вопросы по Aide на 4pda это как раз про NDK.

Далее подробнее.

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


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

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 334
Откуда: Москва
Благодарил (а): 37 раз.
Поблагодарили: 9 раз.
Для начала c
https://developer.android.com/sdk/index.html
скачиваем утилиту коммандной строки для своей системы
(linux mac или windows)
Ищем файл вида
commandlinetools-linux-7302050_latest.zip

Дальше разархивируйте согласно инструкции
https://developer.android.com/tools/sdkmanager?hl=ru

Можно не создавать каталог latest
тогда в при вызове утилиты надо указывать параметр
--sdk_root=path_to_SDK

Наберем ( или обернем скриптом )

path_to_sdkmanager/sdkmanager --list [--sdk_root=path_to_SDK] > lists
в файле lists будут пакеты, доступные sdkmanager.

На этом этапе какие либо трудности маловероятны. У меня были какие-то странности, связанные с
java_run time

[spoiler]

работает
java --version
openjdk 17.0.11 2024-04-16 OpenJDK Runtime Environment (Red_Hat-17.0.11.0.9-alt1) (build 17.0.11+9) OpenJDK 64-Bit Server VM (Red_Hat-17.0.11.0.9-alt1) (build 17.0.11+9, mixed mode, sharing)

не работает
java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (Red_Hat-17.0.12.0.7-alt1) (build 17.0.12+7)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.12.0.7-alt1) (build 17.0.12+7, mixed mode, sharing)

Почему то работает с более старой версией java.

то, что не работает, выдает ошибку

./sdkmanager
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)

В общем столкнуться с этой проблемой маловероятно, скорее всего у меня криво встал linux

[/spoiler]

Дальше надо скачать "build-tools" и "platforms;android" используя sdkmanager.
При необходимости также скачивается ndk
На этом этапе трудности маловероятны.
В указаной ранее статье
https://www.hanshq.net/command-line-android.html
показывался способ скачивания пакетов напрямую с сервера, но делать этого не стоит,
скорее всего, статья старая, многое может измениться.
Поэтому лучше использовать sdkmanager.

Пусть android платформа = 28, что соответствует android 9
Соответствия версий api и android

[spoiler]
Имя. Версия Уровень API Выпущено Код версии сборки
К 10.0 29 Авг 2020 BuildVersionCodes.Q
Круговая 9.0 28 Авг-2018 BuildVersionCodes.P
Oreo 8.1 27 Дек 2017 BuildVersionCodes.OMr1
Oreo 8.0 26 Авг 2017 BuildVersionCodes.O
Nougat 7.1 25 Декабрь 2016 г. BuildVersionCodes.NMr1
Nougat 7.0 24 Август 2016 г. BuildVersionCodes.N
Marshmallow 6,0 23 Август 2015 г. BuildVersionCodes.M
Lollipop 5.1 22 Мар 2015 г. BuildVersionCodes.LollipopMr1
Lollipop 5,0 21 Ноя 2014 BuildVersionCodes.Lollipop
Kitkat Watch 4.4W 20 Июн 2014 BuildVersionCodes.KitKatWatch
Kitkat 4.4. 19 Октябрь 2013 г. BuildVersionCodes.KitKat
Желе-боб 4.3 18 Июл 2013 BuildVersionCodes.JellyBeanMr2
Желе-боб 4.2-4.2.2 17 Ноябрь 2012 г. BuildVersionCodes.JellyBeanMr1
Желе-боб 4.1-4.1.1 16 Июнь 2012 г. BuildVersionCodes.JellyBean
Ice Cream Sandwich 4.0.3-4.0.4 15 Декабрь 2011 г. BuildVersionCodes.IceCreamSandwichMr1
Ice Cream Sandwich 4.0-4.0.2 14 Окт 2011 BuildVersionCodes.IceCreamSandwich
Соты 3.2 13 Июнь 2011 г. BuildVersionCodes.HoneyCombMr2
Соты 3.1.x 12 Май 2011 г. BuildVersionCodes.HoneyCombMr1
Соты 3.0.x 11 Февраль 2011 г. BuildVersionCodes.HoneyComb
Пряник 2.3.3-2.3.4 10 Февраль 2011 г. BuildVersionCodes.GingerBreadMr1
Пряник 2.3-2.3.2 9 Ноя 2010 BuildVersionCodes.GingerBread
Froyo 2.2.x 8 Июнь 2010 г. BuildVersionCodes.Froyo
Eclair 2.1.x 7 янв 2010 BuildVersionCodes.EclairMr1
Eclair 2.0.1 6 Декабрь 2009 г. BuildVersionCodes.Eclair01
Eclair 2.0 5 Ноябрь 2009 г. BuildVersionCodes.Eclair
Кольцо 1,6 4 Сентябрь 2009 г. BuildVersionCodes.Donut
Кекс 1.5 3 Май 2009 г. BuildVersionCodes.Cupcake
База 1,1 2 Февраль 2009 г. BuildVersionCodes.Base11
База 1.0 1 Октябрь 2008 г. BuildVersionCodes.Base

https://learn.microsoft.com/ru-ru/previ ... api-levels
[/spoiler]



path_to_sdkmanager/sdkmanager --sdk_root=path_to_SDK "platform-tools" "platforms;android-28" "build-tools;30.0.2"

если нужно ndk, то добавляем, например "ndk;26.2.11394342"
подробнее про ndk тут
https://developer.android.com/tools/sdkmanager?hl=ru

Если все прошло успешно, то пора скомпилировать первую программу.

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



За это сообщение автора vikt поблагодарили - 2: Sotnik, zma
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 126 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

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


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

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


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

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