2024-12 статья | article

This commit is contained in:
2024-12-09 22:29:32 +03:00
parent 41bd62ba49
commit 7e215a04c0
21 changed files with 528 additions and 265 deletions

View File

@@ -0,0 +1,35 @@
Title: Первая рабочая версия Local Host Access
Date: 2024-12-09 00:00
Category: News
Slug: lha-jvm-macos
Lang: ru
![web-test][web-test]
# Local Host Access
Крошечный веб-сервер Local Host Access (**LHA**) готов заменить
Local File System Access (**LFSA**) на JVM и macOS: я сгенерировал
эту статью с помощью LHA на macOS. Таким образом, Kotlin оказался
хорошим языком для кросс-платформенной разработки, правда, с небольшим
ограничением.
Это небольшое ограничение состоит в том, что 99% разработки Kotlin приходится
на JVM. Остальные 99% - на так называемый Kotlin Native для работы с iOS,
Linux, macOS и Windows. Таким образом, если кому-либо понадобится что-либо
столь же простое, как узнать, куда указывает симлинк - на файл или директорию,
то будет тупик, в Интернете просто не будет такой статьи. Для C существует
множество статей с рекомендацией вызвать функцию `stat()`. Для Kotlin Native
совершенно не ясно, как сделать подобный простой вызов.
Такой вопрос о вызове `stat()` [я и задал в ноябре][question], до сих пор жду
ответа. Тем временем, пришлось использовать команду `stat` в командной строке
(он же вызов `system()`).
# Декабрь
Сделаю первую версию транслятора Kotlin -> Python для того,
чтобы покрыть с помощью LHA те же платформы, что покрывает LFSA на Python.
[web-test]: ../../images/2024_web-test.jpg
[question]: https://discuss.kotlinlang.org/t/how-to-call-stat-c-function-to-get-file-type/29541

View File

@@ -24,6 +24,29 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="lha-jvm-macos.html">Первая рабочая версия Local Host Access</a>
</h2>
<p class="news_item_date">
2024-12-09 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2024_web-test.jpg" alt="web-test" /></p>
<h1 id="localhostaccess">Local Host Access</h1>
<p>Крошечный веб-сервер Local Host Access (<strong>LHA</strong>) готов заменить
Local File System Access (<strong>LFSA</strong>) на JVM и macOS: я сгенерировал
эту статью с помощью LHA на macOS. Таким образом, Kotlin оказался
хорошим языком для кросс-платформенной разработки, правда, с небольшим
ограничением.</p>
<p>Это небольшое ограничение состоит в том, что 99% разработки Kotlin приходится
на JVM. Остальные 99% - на так называемый Kotlin Native для работы с iOS,
Linux, macOS и Windows. Таким образом, если кому-либо понадобится что-либо. . .</p>
</div>
<div class="news_item_more">
<a href="lha-jvm-macos.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="pskov-again.html">Возвращение к разработке «ПСКОВа»</a>
@@ -214,28 +237,6 @@ class memory_Context:
<a href="llm-first-py-cxx.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="bus-iOS.html">Шина-iOS</a>
</h2>
<p class="news_item_date">
2024-03-10 00:00
</p>
<div class="news_item_contents">
<h1 id="ios">Первая реализация Шины для iOS</h1>
<p>За январь и февраль довёл реализацию шаблона Шина на Swift до хорошего состояния
для iOS.</p>
<p>Провёл нагрузочное тестирование. Оказалось, что общение элементов
приложения через Шину примерно в 92 раза медленнее обычного вызова функции.
И это говорит не о том, что Шина плоха. Наоборот, это говорит о том, что
Шина должна использоваться в архитектурных склейках кода, что позволяет
сократить такой код примерно на 30%.</p>
<p>Так выглядит пример с использованием нескольких состояний, отображаемых. . .</p>
</div>
<div class="news_item_more">
<a href="bus-iOS.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 1 из 8</p>
<p>

View File

@@ -24,6 +24,28 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="bus-iOS.html">Шина-iOS</a>
</h2>
<p class="news_item_date">
2024-03-10 00:00
</p>
<div class="news_item_contents">
<h1 id="ios">Первая реализация Шины для iOS</h1>
<p>За январь и февраль довёл реализацию шаблона Шина на Swift до хорошего состояния
для iOS.</p>
<p>Провёл нагрузочное тестирование. Оказалось, что общение элементов
приложения через Шину примерно в 92 раза медленнее обычного вызова функции.
И это говорит не о том, что Шина плоха. Наоборот, это говорит о том, что
Шина должна использоваться в архитектурных склейках кода, что позволяет
сократить такой код примерно на 30%.</p>
<p>Так выглядит пример с использованием нескольких состояний, отображаемых. . .</p>
</div>
<div class="news_item_more">
<a href="bus-iOS.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="bus-01.html">Шина-01</a>
@@ -184,32 +206,6 @@ Ubuntu Edge</a>. Особенностью продукта должна была
<a href="defending-availability.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="teaching-kids-to-program.html">Обучение детей программированию</a>
</h2>
<p class="news_item_date">
2019-02-04 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2019-02-04_teaching-kids-to-program-team.png" alt="Ученики и учителя" /></p>
<p>В этой статье Михаил делится своим опытом обучения детей программированию.</p>
<p>Он расскажет о следующем:</p>
<ul>
<li>организация процесса обучения</li>
<li>программа обучения</li>
<li>игра на память</li>
<li>инструмент программирования</li>
<li>уроки</li>
<li>результаты и планы</li>
</ul>
<p><strong>Организация процесса обучения</strong></p>
<p>Обучение проходит в рамках социальной ответственности бизнеса: компания предоставляет помещение с оборудованием, а также объединяет сотрудников, желающих попробовать себя в роли преподавателей, с сотрудниками, желающими обучить своих детей. Всё это исключительно на добровольной основе.. . .</p>
</div>
<div class="news_item_more">
<a href="teaching-kids-to-program.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 2 из 8</p>
<p>

View File

@@ -24,6 +24,32 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="teaching-kids-to-program.html">Обучение детей программированию</a>
</h2>
<p class="news_item_date">
2019-02-04 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2019-02-04_teaching-kids-to-program-team.png" alt="Ученики и учителя" /></p>
<p>В этой статье Михаил делится своим опытом обучения детей программированию.</p>
<p>Он расскажет о следующем:</p>
<ul>
<li>организация процесса обучения</li>
<li>программа обучения</li>
<li>игра на память</li>
<li>инструмент программирования</li>
<li>уроки</li>
<li>результаты и планы</li>
</ul>
<p><strong>Организация процесса обучения</strong></p>
<p>Обучение проходит в рамках социальной ответственности бизнеса: компания предоставляет помещение с оборудованием, а также объединяет сотрудников, желающих попробовать себя в роли преподавателей, с сотрудниками, желающими обучить своих детей. Всё это исключительно на добровольной основе.. . .</p>
</div>
<div class="news_item_more">
<a href="teaching-kids-to-program.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="2019-year-of-rethinking.html">Год переосмысления</a>
@@ -185,23 +211,6 @@
<a href="mahjong-recreation-start.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="the-year-of-lessons.html">Год новых уроков</a>
</h2>
<p class="news_item_date">
2017-12-31 22:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Бенгальский огонь" /></p>
<p>Итак, 2017й год стремительно приближается к финалу, итоги года уже подведены, так что в свободное от расчехления фейерверков и подготовки систем залпового огня шампанским время мы обозначим свою цель в следующем году.</p>
<p>Как, наверное, понятно из других статей на сайте, примерно половине наших планов в 2017 году было суждено осуществиться хотя бы приблизительно так как мы предполагали, остальные поменялись существенно.</p>
<p>В течение года люди приходили в команду, уходили из нее, в итоге конец года мы встречаем с тем же составом что и 365 дней назад. Это заставило нас задуматься, но о выводах как-нибудь в другой раз.. . .</p>
</div>
<div class="news_item_more">
<a href="the-year-of-lessons.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 3 из 8</p>
<p>

View File

@@ -24,6 +24,23 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="the-year-of-lessons.html">Год новых уроков</a>
</h2>
<p class="news_item_date">
2017-12-31 22:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2017-12-31-celebration.jpg" alt="Бенгальский огонь" /></p>
<p>Итак, 2017й год стремительно приближается к финалу, итоги года уже подведены, так что в свободное от расчехления фейерверков и подготовки систем залпового огня шампанским время мы обозначим свою цель в следующем году.</p>
<p>Как, наверное, понятно из других статей на сайте, примерно половине наших планов в 2017 году было суждено осуществиться хотя бы приблизительно так как мы предполагали, остальные поменялись существенно.</p>
<p>В течение года люди приходили в команду, уходили из нее, в итоге конец года мы встречаем с тем же составом что и 365 дней назад. Это заставило нас задуматься, но о выводах как-нибудь в другой раз.. . .</p>
</div>
<div class="news_item_more">
<a href="the-year-of-lessons.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="2017-summary.html">Итоги 2017-го</a>
@@ -165,23 +182,6 @@
<a href="its-all-fine.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="lets-go.html">Поехали</a>
</h2>
<p class="news_item_date">
2017-03-16 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2017-03_lets-go.png" alt="Слова Гагарина" /></p>
<p>В этой статье мы расскажем о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>
<p><strong>Отображение куба на iOS/Web</strong></p>
<p>К нашему удивлению, мы смогли отобразить простой красный куб на <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> и <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Веб</a> довольно быстро: в начале февраля. Тем не менее, это лишь начало поддержки платформ Android, iOS и Веб. Впереди нас ждёт тернистая дорога, т.к. нам предстоит сделать ещё много вещей, прежде чем мы сможем объявить о полноценной поддержке этих платформ: визуальные эффекты, скрипты Python, архивы данных.. . .</p>
</div>
<div class="news_item_more">
<a href="lets-go.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 4 из 8</p>
<p>

View File

@@ -24,6 +24,23 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="lets-go.html">Поехали</a>
</h2>
<p class="news_item_date">
2017-03-16 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2017-03_lets-go.png" alt="Слова Гагарина" /></p>
<p>В этой статье мы расскажем о результатах нашей работы в январе и феврале 2017: отображении куба на iOS/Веб и нашем инструменте для создания самоучителей.</p>
<p><strong>Отображение куба на iOS/Web</strong></p>
<p>К нашему удивлению, мы смогли отобразить простой красный куб на <a href="https://twitter.com/OpenGameStudio/status/826816343433498627">iOS</a> и <a href="https://twitter.com/OpenGameStudio/status/829731986264698881">Веб</a> довольно быстро: в начале февраля. Тем не менее, это лишь начало поддержки платформ Android, iOS и Веб. Впереди нас ждёт тернистая дорога, т.к. нам предстоит сделать ещё много вещей, прежде чем мы сможем объявить о полноценной поддержке этих платформ: визуальные эффекты, скрипты Python, архивы данных.. . .</p>
</div>
<div class="news_item_more">
<a href="lets-go.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="the-year-of-challenges.html">Год испытаний</a>
@@ -177,22 +194,6 @@
<a href="yesterdays-live-session-short-overview.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="september-live-session-announcement-tomorrow.html">Прямой эфир через 24 часа</a>
</h2>
<p class="news_item_date">
2016-09-24 00:00
</p>
<div class="news_item_contents">
<iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Приготовьтесь к <a href="https://www.livecoding.tv/kornerr">прямому эфиру</a>, он начнётся через 24 часа!</p>
<p>. . .</p>
</div>
<div class="news_item_more">
<a href="september-live-session-announcement-tomorrow.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 5 из 8</p>
<p>

View File

@@ -24,6 +24,22 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="september-live-session-announcement-tomorrow.html">Прямой эфир через 24 часа</a>
</h2>
<p class="news_item_date">
2016-09-24 00:00
</p>
<div class="news_item_contents">
<iframe width="560" height="315" src="https://www.youtube.com/embed/Fj4yHG-mV1U" frameborder="0" allowfullscreen></iframe>
<p>Приготовьтесь к <a href="https://www.livecoding.tv/kornerr">прямому эфиру</a>, он начнётся через 24 часа!</p>
<p>. . .</p>
</div>
<div class="news_item_more">
<a href="september-live-session-announcement-tomorrow.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="september-live-session-announcement.html">Прямой эфир: 25 сентября 2016</a>
@@ -163,20 +179,6 @@
<a href="rolling-ball.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="rolling-ball-live-session-pt2.html">Создание игры в прямом эфире (часть 2): 7 февраля 2016</a>
</h2>
<p class="news_item_date">
2016-02-02 00:00
</p>
<div class="news_item_contents">
<p>К сожалению, нам не удалось завершить создание простой игры "Катящийся мяч" за 3 часа. Поэтому вторая часть трансляции <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B%2C+%D1%87%D0%B0%D1%81%D1%82%D1%8C+2&iso=20160207T14&p1=166&ah=3">7 февраля 2016 в 14:00 MSK</a>.. . .</p>
</div>
<div class="news_item_more">
<a href="rolling-ball-live-session-pt2.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 6 из 8</p>
<p>

View File

@@ -24,6 +24,20 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="rolling-ball-live-session-pt2.html">Создание игры в прямом эфире (часть 2): 7 февраля 2016</a>
</h2>
<p class="news_item_date">
2016-02-02 00:00
</p>
<div class="news_item_contents">
<p>К сожалению, нам не удалось завершить создание простой игры "Катящийся мяч" за 3 часа. Поэтому вторая часть трансляции <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Open+Game+Studio%3A+%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B8%D0%B3%D1%80%D1%8B%2C+%D1%87%D0%B0%D1%81%D1%82%D1%8C+2&iso=20160207T14&p1=166&ah=3">7 февраля 2016 в 14:00 MSK</a>.. . .</p>
</div>
<div class="news_item_more">
<a href="rolling-ball-live-session-pt2.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="january-live-session-announcement.html">Создание игры в прямом эфире: 31 января 2016</a>
@@ -161,26 +175,6 @@
<a href="test-chamber-for-everyone.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="2015-roadmap.html">Дорожная карта 2015-2016</a>
</h2>
<p class="news_item_date">
2015-07-19 00:00
</p>
<div class="news_item_contents">
<p>Как и было обещано, мы составили список вех и их примерные даты на ближайший год:</p>
<ol>
<li>Редактор 0.7.0 (Октябрь 2015) - Система действий: мы воссоздаём <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a></li>
<li>Редактор 0.8.0 (Декабрь 2015) - Звуковая система</li>
<li>Редактор 0.9.0 (Февраль 2016) - Система частиц и минимальный интерфейс пользователя (UI)</li>
<li>Редактор 0.10.0, Проигрыватель 0.1.0 (Апрель 2016) - Проигрыватель воспроизводит созданное Редактором: мы создаём прототип Шуана на нашем движке. . .</li>
</ol>
</div>
<div class="news_item_more">
<a href="2015-roadmap.html">Читать далее</a>
</div>
</div>
<p class="pagination_title">Страница 7 из 8</p>
<p>

View File

@@ -24,6 +24,26 @@
<center>
<h1>Новости</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="2015-roadmap.html">Дорожная карта 2015-2016</a>
</h2>
<p class="news_item_date">
2015-07-19 00:00
</p>
<div class="news_item_contents">
<p>Как и было обещано, мы составили список вех и их примерные даты на ближайший год:</p>
<ol>
<li>Редактор 0.7.0 (Октябрь 2015) - Система действий: мы воссоздаём <a title="Тестовый цех" href="https://youtu.be/9_6seUWcPbU" target="_blank">тестовый цех</a></li>
<li>Редактор 0.8.0 (Декабрь 2015) - Звуковая система</li>
<li>Редактор 0.9.0 (Февраль 2016) - Система частиц и минимальный интерфейс пользователя (UI)</li>
<li>Редактор 0.10.0, Проигрыватель 0.1.0 (Апрель 2016) - Проигрыватель воспроизводит созданное Редактором: мы создаём прототип Шуана на нашем движке. . .</li>
</ol>
</div>
<div class="news_item_more">
<a href="2015-roadmap.html">Читать далее</a>
</div>
</div>
<div class="news_item">
<h2 class="news_item_title">
<a href="editor-06.html">Редактор 0.6.0</a>

View File

@@ -0,0 +1,76 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<link rel="stylesheet" href="../../style.css">
</head>
<body>
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
<div id="header">
<div class="header2">
<div class="menu">
<a href="../../ru/news/index.html">Новости</a>
<a href="../../ru/game/index.html">Игры</a>
<a href="../../ru/tool/index.html">Инструменты</a>
<a href="../../ru/page/about.html">О нас</a>
</div>
<div id="lang">
<a href="../../en/news/lha-jvm-macos.html">EN</a>
<a href="../../ru/news/lha-jvm-macos.html">RU</a>
</div>
<div class="clear"></div>
</div>
</div>
<h3 class="left_item_title">В новостях...</h3>
<center>
<div class="news_item">
<h2 class="news_item_title">
<a href="lha-jvm-macos.html">Первая рабочая версия Local Host Access</a>
</h2>
<p class="news_item_date">
2024-12-09 00:00
</p>
<div class="news_item_contents">
<p><img src="../../images/2024_web-test.jpg" alt="web-test" /></p>
<h1 id="localhostaccess">Local Host Access</h1>
<p>Крошечный веб-сервер Local Host Access (<strong>LHA</strong>) готов заменить
Local File System Access (<strong>LFSA</strong>) на JVM и macOS: я сгенерировал
эту статью с помощью LHA на macOS. Таким образом, Kotlin оказался
хорошим языком для кросс-платформенной разработки, правда, с небольшим
ограничением.</p>
<p>Это небольшое ограничение состоит в том, что 99% разработки Kotlin приходится
на JVM. Остальные 99% - на так называемый Kotlin Native для работы с iOS,
Linux, macOS и Windows. Таким образом, если кому-либо понадобится что-либо
столь же простое, как узнать, куда указывает симлинк - на файл или директорию,
то будет тупик, в Интернете просто не будет такой статьи. Для C существует
множество статей с рекомендацией вызвать функцию <code>stat()</code>. Для Kotlin Native
совершенно не ясно, как сделать подобный простой вызов.</p>
<p>Такой вопрос о вызове <code>stat()</code> <a href="https://discuss.kotlinlang.org/t/how-to-call-stat-c-function-to-get-file-type/29541">я и задал в ноябре</a>, до сих пор жду
ответа. Тем временем, пришлось использовать команду <code>stat</code> в командной строке
(он же вызов <code>system()</code>).</p>
<h1 id="">Декабрь</h1>
<p>Сделаю первую версию транслятора Kotlin -&gt; Python для того,
чтобы покрыть с помощью LHA те же платформы, что покрывает LFSA на Python.</p>
</div>
</div>
<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = "https://opengamestudio.org/ru/news/lha-jvm-macos.html";
this.page.identifier = "lha-jvm-macos.html";
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://opengamestudio.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Пожалуйста, включите JavaScript для просмотра <a href="https://disqus.com/?ref_noscript">комментариев на платформе Disqus.</a></noscript>
<div id="footer">
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
</div>
</center>
</body>
</html>