LINUX.ORG.RU

Избранные сообщения Bass

Emacs, VS Code, NeoVim, IntelliJ IDEA... and Emacs

 , , , ,

В названии, конечно, отсылка к фильму Spring, Summer, Fall, Winter… and Spring.

Обещал накатить вброс по Emacs, ибо как писали постом выше, народ заскучал. Речь идет о продолжении топика Жизнь после Emacs.

Вообще, суть моего мессенжа, пожалуй, точнее всего передает это короткое видео :).

Но если все же попытаться раскрыть суть чуть подробнее. Да, лучше Emacs пока никто ничего не придумал, хотя есть интересные попытки. Никакие элементы архаики, сохранившиеся в Emacs не могут преуменьшить те уникальные преимущества, которых больше нигде нет. Тут дело не в том, что в других редакторах/IDE они хуже или, скажем, они пока недоработанные. Их просто нет.

Итак, в продолжении темы предыдущей серии, я перешел на 1,5 года на VS Code.

Плюсы:

  1. Производительность UI, который рендерится на GPU.
  2. Производительность JavaScript (спасибо Electron/NodeJS/V8).
  3. Вменяемый API.

Минусы:

  1. Не keyboard-centric. Некоторые вещи вообще без мыши не сделать, что раздражает.
  2. Хотите переименовать текущий файл? Вам нужен плагин для этого! В Emacs это была бы просто небольшая функция - кинул в конфиг и всего делов. Тут же 8 плагинов, половина из них заброшена в 2015-м, другая половина помимо необходимой функции добавляет еще 100500 других. Доков нет, докстрингов нет, что кто-то другой будет открывать код плагина и в мыслях не было. Спасибо, если есть ридми, пусть и не обновляемая много лет, и уже не релевантная коду.
  3. Культура разработки. Вне официального кода от Microsoft ее нет (см. выше). Писать плагины на ClojureScript возможно, но не вполне натурально (как проба пера, например advanced-navigation-cljs). Да, есть еще joyride. API неплох, да, но многие вещи гвоздями прибиты и всего не настроишь.

Наверное, основной вопрос в плане конфигурации VS Code по сравнению с Emacs в том, что для Emacs можно было не особо переключаясь из контекста текущей деятельности быстренько перейти в .emacs, что-то там подправить и вернуться к основной задаче. В VS Code флоу совсем иной. Если ты вдруг понял, что тебе нужно что-то доконфигурировать, ты понимаешь, что либо на это нужно просто забить, либо мысленно сказать что-то вроде, «ну что ж, а теперь девочки и мальчики мы все бросаем и осваиваем/вспоминаем специальность «конфигуратор/плагинописатель» для VS Code», ибо быстренько что-то подхачить там не выйдет. Например, тебе дополнительно нужен инстанс среды для тестирования изменений плагина. Плагин дописывается, отлаживается и потом устанавливается в рабочую среду. Если же, ко всему прочему, это не твой плагин (что почти всегда), то нужно понимать, что вникать придется долго, ибо комментариев и докстрингов нет примерно никогда (за исключением собственно описания API от Microsoft).

При этом, всегда надеяться на то, что все будет «просто работать» нельзя. У меня например, после очередного обновления как-то отваливалась Calva (Clojure IDE) и edamagit (Magit for VSCode). Опять же, в Emacs у меня тоже были случаи, когда достаточно мейнстримовые плагины приходили с ошибками после очередного обновления. И в этой ситуации всегда можно быстренько это на лету починить, зарепортить багу или сразу прислать пулрек мейнтейнеру.

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

Плюсы:

  1. Производительность UI, для чего делаются отдельно UI клиенты. Я по итогу выбрал neovim-qt
  2. Производительность Lua. Чуть хуже, чем JavaScript, но сильно лучше EmacsLisp. Впрочем, про производительность UI на относительно больших файлах будет ниже оговорка.
  3. Fennel - Lisp, работающий на Lua прекрасен. Это дает в чем-то схожий флоу конфигурации, что и в Emacs, когда поведение меняется на лету (см. подробнее: conjure)
  4. Сопоставимая с Emacs экосистема. Например, Magit (для Emacs), Edamagit (для VSCode) и NeoGit (для NeoVim) работают почти одинаково.

Минусы:

  1. Модальность. Для кого-то это плюс, я ее не люблю. Я настраивал конфигурацию без модальности. Но тут периодически натыкаешься на ограничение возможностей Vim по тонкой настройке.
  2. Менее удобная работа с Fennel, чем то, что предоставляет Emacs для EmacsLisp. На самом деле, они, конечно, не сопоставимы. Т.е. NeoVim не может быть такой же удобной IDE для Fennel как Emacs для EmacsLisp, уже по причине невозможности такой же интроспекции.
  3. Довольно причудливый API, многие вещи прибиты гвоздями еще со времен царя-гороха. Например, для некоторой функциональности нет полноценных функций, которые можно было бы вызвать через API, есть только хоткеи, т.е. приходится эмулировать их нажатие для вызова этих функций. Ситуация прежде всего в NeoVim постепенно меняется к лучшему, но до API Emacs пропасть неизмеримых размеров.

Но вот то, что реально заставило меня отказаться от пути использовать NeoVim и планомерно конфигурировать его в соответствии со своими предпочтениями, это то, что на больших файлах он стал повисать прям конкретно на десятки секунд. В Neovim Qt это очень сильно сказывалось. В Neovide лучше, но там нет антиалиасинга. А хотелось бы. В консольной версии аналогично. Отключил все плагины - ситуация не сильно поменялась. И максимальным шоком стало то, что Emacs с этим файлом спокойно работал. Подвисал, да, но на доли секунд.

Про Lapce и Helix, наверное, пока говорить рано, они довольно экспериментальные еще.

В общем, лучше Emacs пока никто ничего не придумал, хотя есть интересные попытки.

Kostafey
()

Blackdown Java 1.0b - возможно самая ранняя версия Java под Linux

 blackdown java-linux, , ,

Не знаю, как вы, но мне нравится ранняя история ядра Linux и программ, которые его окружают. Я лично мечтаю когда-нибудь найти потерянные версии ядра linux-0.02 и linux-0.03. И одно из мест, на котором оно может случайно оказаться – это archive.org. Среди каких-нибудь архивов/бэкапов, которые люди записали и выложили на сайте.

И вот, когда я рассматривал один из образов компакт-диска, мне попадается на глаза папка JAVA, а в ней… ну собственно, заголовок вы уже прочитали. На диске было 2 архива и HowTo в различных форматах из которого следует, что в архивах сама Java и браузер ее апплетов HotJava. Документ датирован 10.12.1995 и имеет версию 1.0.

Этот порт Java под Linux делала не сама Sun Microsystems (они это сделают только в релизе 1.2), а по большей части, волонтер Randy Chapman, подписавший с Sun соглашение, по которому ему были предоставлены исходные коды. Позже к нему присоединятся другие волонтеры, которые будут портировать все последующие новые версии Java.

Начиная с версии 1.2 Sun сама сделает поддержку Linux (x86), но команда blackdown.org продолжит выпускать версии JDK даже под те платформы, которые сама Sun, на тот момент, не поддерживала (PowerPC, SPARC). И по некоторым источникам эти порты работали быстрее, чем аналогичные от Sun. Последнии версии, которые успела выпустить Blackdown Linux, это 1.4.2 для i386/AMD64 и 1.3.1 для PowerPC. Работа над Java 5 (1.5.x) были анонсирована, но так и не были завершена…

Но вернемся к нашему скриншоту. Запустить Java я решил в Caldera Network Desktop (CND). Во-первых, раз Java имеет проприетарную лицензию, то пусть и дистрибутив тоже будет проприетарный. А во-вторых, Caldera у меня осталась со предыдущего скриншота. Разумеется данный порт Java может работать не только CND, но также и в RedHat/Slackware, хотя Caldera тоже поддерживается (что неудивительно, ввиду её родства с RedHat).

Во времена первых версий Java, компания Sun делала ставку на развитие и распространение технологии Java Applet и всячески продвигала эту технологию. В комплекте с JDK, помимо компилятора, был ещё и браузер апплетов HotJava и множество примеров показывающие их многогранную функциональность. Анимация, поддержка различных шрифтов и цветов, есть даже поддержка подобие 3D (скорее 2.5D), но, как мы знаем технология апплетов не получила широкого распространения, возможно из-за того, что сама Sun с версии 1.2 ударилась в enterprise-сегмент, где до сих пор занимает внушительную часть рынка, а возможно не выдержала конкуренцию с другими технологиями, такими как Flash. Кстати, в CND, в комплекте с дистрибутивом идёт проприетарный редактор CRISP. И в нем есть поддержка подсветки синтаксиса, но конкретно java он не поддерживает.

Кроме поддержки в инструментах от самой Sun, поддержку апплетов добавили в веб-браузер Netscape 2.0b3, о чём сообщается на титульной странице при старте браузера (нижний левый угол). Апплеты в Netscape работают примерно также, как в HotJava, но периодически падают, то ли из-за багов в самом браузере, то ли из того, что работают в виртуальной машине…

И завершить мне хочется скриншотом другой проприетарной программы – Adobe Reader 3.0, в которой открыта одна из полезных (на тот момент разумеется) книг – книга Laura Lemay от издательства Sams.net “Teach Yourself. JAVA in 21 Days”, в которой предлагалось выделять по одному дню на каждую из 21 главу книги. Оставим за скобками оптимистические сроки авторов (ведь всё же видели мем по 21 день С++…), тем не менее книга полезная и на момент написания HowTo была лишь пара-тройка книг, в которых в лучшем случае описывался API языка. Adobe Reader 3.0, тоже одна из первых версий под Linux, но появился он немного позже, чем сегодняшний герой, осенью 1996 года.

P.S. Ссылка на blackdown java 1.0beta

OlegSL
()

Попробовал я Elder Scrolls в Fedora

 ,

OpenTESArena – проект по OpenSource реализации движка от The Elder Scrolls: Arena. Цель проекта: полная совместимость с Arena и нативная кроссплатформенность. Исходный код под лицензией MIT.

Игра-сабж доступна бесплатно в стиме. Именно Steam-версию я попробовал вместе с OpenTESArena.

Инструкция по установке на Linux:

  1. Обязательно установите библиотеки libbsd и sdl2 – без них OpenTESArena не запускается.

  2. Разархивируйте скачанную Linux-версию OpenTESArena в любую директорию.

  3. Переместите в папку Data (папка в OpenTESArena) папку Arena из стим-версии TES: Arena.

  4. Откройте в терминале директорию OpenTESArena.

  5. В терминале запустите команду ./run.sh.

Сайт Open Source Game Clones пишет, что данный проект неиграбелен. А коммиты в данный проект к сожалению выходят редко. Версия 0.14.0 вышла в ноябре 2021 года, а версия 0.15.0 не выходит. Я багов не встречал, потому что я поиграл настолько немного, что я не прошёл и 0,001% игры.

Кстати OpenTESArena нативно доступен не только на Windows, Mac, Linux, но и на Raspberry Pi и хромбуках.

ConLenov
()

XScreensaver может быть удалён из Debian

 ,

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819703

Для Ъ:

Автора (JWZ (wikipedia.org), один из изначальных авторов Netscape Navigator и Mozilla) запарили жалобы юзеров на баги в старых версиях xscreensaver, после чего он добавил код, который выводит сообщение с требованием обновления через некоторое время после релиза.

В свою очередь, мейнтейнеры Debian не хотят запиливать новую версию xscreensaver потому что ШТОБИЛЬНОСТЬ ШТОБИЛЬНОСТЬ ШТОБИЛЬНОСТЬ.

Феерическая цитата:

So the upstream author has shown that he enjoys being a dick and that he can't be bothered to deal with users' bug reports against versions of his software that he no longer wants to support.

hateyoufeel
()

Линукс, ассемблер и X11

 , ,

Линукс, ассемблер и X11

Это текстовая версия моей статьи про разработку графического приложения на чистом ассемблере под линукс.

( читать дальше... )

alex0x08
()

Протестировал Daggerfall Unity

 , , ,

The Elder Scrolls II: Daggerfall — компьютерная игра в жанре action RPG для MS-DOS, разработанная Bethesda Softworks и выпущенная в 1996 году. Она является продолжением игры The Elder Scrolls: Arena и второй частью серии The Elder Scrolls

Daggerfall Unity — это открытая реализация движка Daggerfall с нативной версией под GNU/Linux на движке Unity3d. Исходный код распространяется по лицензии MIT.

Поиграл немного. Насколько я вижу, основные баги починили. В предыдущих версиях был например такой баг, когда игрок проваливался под текстуры.

С 2009 года игра переведена в разряд freeware. Таким образом чтобы поиграть в Daggerfall через Даггерфолл юнити достаточно:

  • скачать игру, например, со стима;
  • скачать Daggerfall Unity с гитхаба;
  • распаковать архив(dfu_linux_64bit-v0.16.2-rc.zip);
  • запустить в директории(dfu_linux_rc) собственно сам DaggerfallUnity (./DaggerfallUnity.x86_64).

Затем необходимо надо будет выбрать директорию где лежат ресурсы игры, после этого можно играть.

P.S. Собранный бинарник под линукс есть только под 64 бита.

vbcnthfkmnth123
()

программа из одной строчки ни Perl

помогите, пожалуйста исправить такую программу:

cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

- не печатает

anonymous
()

Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

 , ,

Приветствую!

Пишу фреймворк для разработки софта или игр. Идею взял из библиотеки SDL, но пишу на С++.

Главная идея это кроссплатформенность, производительность и поддержка старых и новых систем. Windows 95 - Windows 11, Linux-дистрибьютивы, начиная с 2000-ых годов.

Сам проект. Лицензия Boost Software.

Идея зародилась после написания статьи «В софте все всрато и становится еще всратее».

Как говорится, если критикуешь, предлагай, а предлагая делай. Запилил обзорную статью на Habr’е. На данный момент фреймворк активно портирую на Linux.

Что реализовано:

  1. Поддержка 2D графики
  2. Абстракции над примитивами ОС. Окна, события, каталоги и т.д
  3. Поддержка Soft, OpenGL 1.2 и OpenGL 3 рендера.
  4. Аудио подсистема в реализации, пилю поддержку потокового воспроизведения музыки.

Особенности проекта.

  1. Поддержка старых систем 25+ лет.
  2. Модульный дизайн.
  3. Динамическая загрузка рендера при запуске приложения.
  4. Весь код написан на С++ 98, для поддержки большего числа компиляторов и систем. Но разработчик, может использоать любой стандарт языка, хоть С++ 23. Ограничение есть лишь у меня как у разработчика фреймворка.
  5. Высокоуровневый ООП API. Есть возможнось заюзать свои кастомные аллокаторы.
  6. Поддержка старого железа 25+ лет.
  7. Производительность.
  8. Минимальная внешняя зависимость.

Первый релиз планирую выпустить в течении месяца. Осталось реализовать следующие пункты.

  1. Протестировать и исправить порт под Linux.
  2. Реализовать воспроизведение потокового звука.
  3. Создать минимальную документацию.
  4. Добавить больше примеров.

Недавно выступил с докладом на конференции С++ Russia 2023. Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году

Презентация

Тема на Gamedev.ru

Тема на Old-Games.ru

Буду рад обсудить данный проект. Критика и предложения, очень приветствуется.

Перемещено hobbit из web-development

JordanCpp
()

Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем

 , ,

Группа Open Source

Представляю Вашему вниманию разработанную мной первую версию мультимедийной библиотеки Little DirectMedia Layer, сокращённо LDL.

Библиотека написана на С++ 98 стандарта, что позволяет компилировать ее начиная с Visual C++ 6.0. Код распространяется на условиях Boost Software License 1.0. Но библиотека не ограничивает программистов в выборе стандарта языка C++, программист может использовать любой современный стандарт языка. Я придерживаюсь философии downgrade — это использование старых устройств и софта в повседневной жизни, когда компании не поддерживают свои же «устаревшие» операционные системы или устройства, увеличивая с каждой новой версией своего продукта системные требования, или прекращают поддержку девайса. Миллиарды устройств по всему миру ежесекундно перемалывают миллиарды инструкций неоптимизированного кода.

В этом году я выступил на конференции С++ 2023 с докладом «Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году».

Своим проектом я хочу доказать, что старое железо еще может приносить пользу и его рано списывать в утиль. Есть что-то чарующее в старых технологиях, подходах и железках, а еще это вызов новым библиотекам и программам.

В самом начале процесса разработки я и не предполагал, что данная библиотека вообще возможна. Но при практической реализации прототипа, добавляя строчку за строчкой в фундамент будущей библиотеки, убеждался в возможности ее создания и практическом применении.

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

Возможности библиотеки:

  • поддержка Linux Debian 3 и выше (обеспечена нативная сборка);
  • поддержка Windows 95 — Windows 11;
  • простое API для работы с 2D графикой;
  • загрузка множества графических форматов (bmp, png, tga, jpg);
  • кроссплатформенное API над окнами и событиями ОС;
  • для аппаратного ускорения графики используется OpenGL 1.2 и
  • OpenGL 3.3, присутствует поддержка обработки графики только на ЦПУ, если отсутствует аппаратное ускорение;
  • рендер может быть выбран динамически при загрузке приложения;
  • единое API для всех систем — напиши один раз и компилируй везде!
  • воспроизведение звука;
  • динамическая и статическая линковка.

Планы на будущее:

  • поточное воспроизведение звука;
  • вывод текста с поддержкой библиотеки freetype;
  • дополнительные рендеры Direct3D 9, 10, 11;
  • API для работы с потоками;
  • встроенная поддержка API для работы с сетью;
  • портирование фреймворка на другие платформы: Android, IOS, MacOs.

Ссылки:

>>> Подробности (github.com)

JordanCpp
()

Solaris 9 EA

Вот собственно обещанный мной субж.
Система только что инсталлирована.
На экране: Solaris Management Console, Шкаф и терминал.
Locale UTF-8. Попробовал в терминале писать по русский, арабский, Thai и Hebrew - все OK. На язке Hindi квадраты :(
Арабский как и положено писался справа на лево. Но если в одной строке комбинировать арабский и Thai, то глюки с перерисовкой :(

Вот первые впечатления первой минуты работы с девяткой.
Как купим финальную версию и начнем под ней писать софт, тогда подробнее напишу про отличия от 8, глюки и т.п.

IvanVaganov
()

swing

Вот такие вот пироги. Пользовать это кнечно пока еще неззя, но говорить об этом можно. Скорость соизмерима с мозиллой . может быть чуточку медленнее. Эт кнечно не бровсер, а так html veiwer но тем не мение.
Жаба уже уверено окупировала server side, и я думаю что ее выпады на userdesktop не такие уж и безосновательные.
Thinkfree, columba, и т.д..

так что кто знат, поживем увидим....
ifconfig
()

Lotus Notes forever!

Well...
Administrators cut off pop3, imap, http on Domino.
Don't mention mutt, Mozilla Mail, Evolution, etc to me any more.
Lotus Notes forever! :-)
Tasmanian
()

J2SDK 1.4.0. Battle: С vs. Java 2

Идея сравнения C и Java 2 1.4 возникла у меня после наблюдения за дискуссией по поводу выхода новой версии Java 2. Скорость работы HotSpot компилятора, на мой субъективный взгляд, увеличилась и для несложных интерфейсных программ время реакции не намного хуже, чем для C программ с библиотеками WINGs. Кроме приведенной на скриншоте программы провел тест нейронных сетей - есть выигрыш по сравнению с J2SDK 1.3.1. Обратите внимание на строку кода JFrame.setDefaultLookAndFeelDecoration(true); и форму джаванского окна.

NikS
()

Desktop Java разработчика...

... с точностью до именования открытых файлов/проектов/директорий/писем и взаимного расположения окон. Это Enlightenment 0.16.5 и GTK с Aqua темами.

Для интересующихся -- небольшая экскурсия. В правом нижнем углу болтается gkrellm. В мирной жизни он часто скрыт другими окнами и пингвинчика, который удачно получился изображенным ногами вперед :) не видно. Поэтому о радостном событии прихода почты gkrellm оповещает сообщением (xmessage), которое видно в центре экрана. Сообщение висит несколько секунд, после чего умирает.

Под xmessage видна консоль с links'ом, показывающим Java API. Консоль живет в табе multi-gnome-terminal'а. Очень удобная вещь, кстати. Помимо всего прочего, mgt подсвечивает табы, в которых что-то новое появилось в output'е, всякими цветами. Таб, обозванный "ICQ" сейчас синий, что говорит о том, что в болтающемся там консольном ICQ клиенте (vicq), возможно, есть новое сообщение.

За mgt спрятался emacs, который умеет использовать ANT для компиляции java классов. Виден кусок .emacs, обеспечивающего этот союз.

Позади всех -- основное средство разработки, Together Control Center. Написан на Java, внешне под линуксом выглядит прекрасно, работает сносно (хоть есть и linux specific глюки). В отведенных java машине 256M памяти чувствует себя превосходно. Два запущенных тугезера -- вполне обычное явление.

В правом верхнем углу -- список того, что еще запущено, но живет на других виртуальных экранах (всего экранов 6 штук). Mozilla (окна навигатора и почтового клиента), VMWare с w2k (ну приходится таки использовать windoze специфичный софт. Кстати, практически не тормозит), еще один emacs.

Обои стянуты с windoze, равно как и true type шрифты, использованные в Together. Внизу болтается dock, который, на самом деле, я практически не использую. Выставил для большего понту :). Показывается/убирается кликом в маленькое яблочко вверху экрана.

Дистрибутив -- честно купленный ALT Linux Spring 2001. X 4.1.0, JDK 1.3.0 от Blackdown. Железо -- PIII 666, 512M.

Прошу прощения за не самое высокое качество jpeg'а, но размер исходной картинки был 550K, на этот сайт она просто не влезла.

BarD
()

Basilisk II, MAC OS 8

вот такие дела :)
anonymous
()

Opera 6.0 TP1

После выбора правильных фонтов заработала с русскими кодировками. Можно менять кодировки на лету. И вообще быстро работает...
McGray
()

Eclipse Java IDE for Linux

К сожалению менее функционален, чем полный IBM WSAD 4, доступный пока только для Windows. В Eclipse (WSAD) можно использовать не только AWT и Swing компоненты, но и SWT компоненты, хотя Motif SWT работает намного медленнее Windows SWT. Обещена поддержка GTK SWT. Моей обязанностью является создание EJB SOAP для IBM WAS 4 for Linux/390, а данный скриншот сделан на домашнем компьютере - вообще-то я больше люблю C + WINGs.
NikS
()

Forte for Java v. 3.0

Скриншот свежей Forte. Как и говорил работает шустрее, чем раньше.
Lucifer
()

И насчёт неказистости тоже... :)

Это второй скрин, сделанный в одном сеансе работы - так, ничего особенного, здесь доки и маны читаются/пишутся. IMHO, всё это не так уж и трудно и неказисто - особенно для 200 MHz пенька, которому место на свалке давно приготовлено...
anonymous
()

Вот такой вот он - бывший SCO Merge.

Вот такой он - Win4Lin 3.0 в момент устаковки.

Очень мне эта штука понравилась, особенно то решение, когда fullscreen режим решен с помощью запуска второго X Window сервера на соседнем виртуальном терминале.

Нажимаешь Ctrl-Alt-F3 - на экране *полноценный* виндовоз, а не ублюдочная wine-эмуляция или тормознутая VmWare.

Нажимаешь Ctrl-Alt-F2 - оп-ля, снова привычный KDE.

Вот такие вот дела.

anonymous
()