LINUX.ORG.RU
ФорумTalks

Вышел Yegyerdye reader 0.1

 , ,


0

2

Состоялся релиз Yegyerdye reader'а версии 0.1, который является форком читалки True hackers' reader, но при этом работает исключительно с юникодом. Название происходит от якутского слова «эҕэрдэ», которое переводится как «привет».

Скриншот: http://saahriktu.org/tmp/yegyerdyereader.png .

Yegyerdye reader имеет следующие особенности:

  • Добавлена прокрутка колесом мыши;
  • Если локаль не UTF-8, то программа завершается с ошибкой «Error: locale UTF-8 not found»;
  • Добавлена реакция на изменение размера терминала;
  • Добавлена поддержка чтения файлов с именами опций;

Слакбилды Yegyerdye reader'а и Brutal Squirrel можно взять здесь:
https://github.com/saahriktu/saahriktu-slackbuilds/tree/master/yegyerdyereader
https://github.com/saahriktu/saahriktu-slackbuilds/tree/master/brtlsqrrl

Скачать (3445 байт)

Перемещено jollheef из opensource

★★★★★

Не знаю якутского, но почему-то глядя на скриншот хочется все это прокомментировать словами оттуда

Хоодьох гынна

praseodim ★★★★ ()

а откуда ты знаешь якутский

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Со словарями якутский все знают. На скриншоте кусок якутского эпоса «Олонхо»,

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Я думал, ты по происхождению якут. Иначе почему якутский

Harald ★★★★★ ()

фчём логика класть слакбилды на гитхаб, но при этом исходники надо скачивать в архиве с твоей уютной странички

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Родился в Якутске, и первые 11 лет жизни прожил в Якутске и пригороде. Потом переехал.

saahriktu ★★★★★ ()
Ответ на: комментарий от Harald

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

saahriktu ★★★★★ ()
gcc -O2 -o yegyerdyereader yegyerdyereader.c -lcursesw
yegyerdyereader.c: В функции «main»:
yegyerdyereader.c:335:37: ошибка: «BUTTON5_PRESSED» undeclared (first use in this function)
                 if (mevent.bstate & BUTTON5_PRESSED) fsym = 'j';
                                     ^
yegyerdyereader.c:335:37: замечание: each undeclared identifier is reported only once for each function it appears in
Makefile:2: ошибка выполнения рецепта для цели «all»
make: *** [all] Ошибка 1
Harald ★★★★★ ()
Ответ на: комментарий от Harald

Поломанная библиотека ncurses детектед.

/usr/include/curses.h:#define   BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
/usr/include/ncurses/ncurses.h:#define  BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
/usr/include/ncurses/curses.h:#define   BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
/usr/include/ncurses.h:#define  BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
/usr/include/ncursesw/ncurses.h:#define BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
/usr/include/ncursesw/curses.h:#define  BUTTON5_PRESSED         NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)

saahriktu ★★★★★ ()

С выздоровлением!

Deleted ()

на другой, более свежей генте:

gcc -O2 -o yegyerdyereader yegyerdyereader.c -lcursesw
yegyerdyereader.c: In function ‘putpuwin’:
yegyerdyereader.c:92:9: warning: implicit declaration of function ‘mvwgetn_wstr’ [-Wimplicit-function-declaration]
         mvwgetn_wstr(mw, 2, 1, &srchbuf, 64);
         ^~~~~~~~~~~~
yegyerdyereader.c:99:9: warning: implicit declaration of function ‘wget_wch’ [-Wimplicit-function-declaration]
         wget_wch(mw, &rslt);
         ^~~~~~~~
yegyerdyereader.c: In function ‘myprefresh’:
yegyerdyereader.c:133:17: warning: implicit declaration of function ‘mvwaddnwstr’ [-Wimplicit-function-declaration]
                 mvwaddnwstr(yyrwin, ia, ib, txtbuf + k + ib + scl, 1);
                 ^~~~~~~~~~~
yegyerdyereader.c: In function ‘main’:
yegyerdyereader.c:192:12: warning: implicit declaration of function ‘access’ [-Wimplicit-function-declaration]
         if(access(argv[1], F_OK) == -1)
            ^~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lcursesw
collect2: error: ld returned 1 exit status
make: *** [Makefile:2: all] Error 1

ncursesw точно существует в природе, почему в portage её нет?

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Вангую что в бинарных дистрибутивах её попилили на части, а в Gentoo - есть флаг.

Deleted ()
Ответ на: комментарий от Deleted
[ebuild   R    ] sys-libs/ncurses-6.1-r2:0/6::gentoo  USE="cxx gpm unicode -ada -debug -doc -minimal -profile -static-libs {-test} -threads -tinfo -trace" ABI_X86="32 (64) (-x32)" 0 KiB
Harald ★★★★★ ()
Ответ на: комментарий от Harald

Там в ебилде есть такие строчки:

	NCURSES_TARGETS=(
		ncurses
		$(usex unicode 'ncursesw' '')
		$(usex threads 'ncursest' '')
		$(use unicode && usex threads 'ncursestw' '')
	)
...
use unicode && preserve_old_lib /$(get_libdir)/libncursesw.so.5
...
use unicode && preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5

saahriktu ★★★★★ ()
Ответ на: комментарий от Harald

А, по ходу, причина не в отсутствии библиотеки, а в том, что на неё нет симлинка libcursesw.so.

saahriktu ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Более минималистичная реализация. Читает в оперативку и разблокирует файлы и носители с ними. Можно жонглировать носителями как угодно. Шустрее на Raspberry Pi.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

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

Это же потенциальное решето!

atsym ★★★★★ ()
Ответ на: комментарий от saahriktu

Чем это?

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

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: комментарий от atsym

Нет, это юзер может жонглировать носителями как угодно.

saahriktu ★★★★★ ()

но при этом работает исключительно с юникодом

юникодом

saahriktu

Что то тут не так....

WindowsXP ★★ ()
Ответ на: комментарий от WindowsXP

Ну так для однобайтных кодировок оригинальный True hackers' reader. А этот форк для юникода. Два разных проекта для двух разных задач.

saahriktu ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Тем, что при чтении здоровых файлов может забить оперативку и полезть в своп.

theNamelessOne ★★★★★ ()

Название происходит от якутского слова «эҕэрдэ», которое переводится как «привет».

Из любопытства глянул в википедии: Ҕ ҕ ҕэ /ɣ/, /ʁ/ «Г с крюком» (звонкое «х», южнорусское «г»; французское «r») ©.
Произносится через южнорусское «г»?

P.S. Звонкое «х» — это «к», или как озвучить?

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

А вот так, по ходу, и озвучивать как нечто среднее между 'г' и 'х'. Дополнительная информация:

ҕ — увулярный проточный согласный. Встречается только в интервокальном положении после широких гласных и дифтонгов и после сонорных р, л, й, напр. баҕа 'желание', оҕо 'дитя', кэҕэ 'кукушка', бөҕө 'сильный', барыаҕа 'пойдёт', олоруоҕа 'сядет', кэлиэҕэ 'придёт', кулүөҕэ 'будет смеяться'. После сонорных в словах с гласными заднего ряда, напр. кыһалҕа 'забота', оҕорҕоо= 'считать кого-л. своим ребёнком'. В словах с гласными переднего ряда ҕ в этих позициях (особенно в аффиксах) встречается непоследовательно, сравни, например, эҕэ 'придирчивость', эгэ 'настоящий', күөрэгэй 'жаворонок', киһиргээ= 'хвастать'.

А ещё в якутском языке, например, отсутствует звук 'в' (несмотря на то, что в Википедии в алфавите такая буква есть в списке). Вместо него якуты произносят звук 'б'.

saahriktu ★★★★★ ()
Ответ на: комментарий от TheAnonymous

Хохляцкое же

И малороссийское тоже. Вот меня и удивило, что в северном якутском языке южная фонема.

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

Так это язык семейства тюркских языков. Местами между этими языками незначительная разница. Например, «чёрный» на татарском «кара», а на якутском «хара». А на японском, кстати, «куро».

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)

Название происходит от якутского слова «эҕэрдэ», которое переводится как «привет».

То есть, читалка с приветом?

Quasar ★★★★★ ()

Писать код и мейкфайлы ты так и не научился …

redgremlin ★★★★★ ()
Ответ на: комментарий от Quasar

Как и всякий хелловорлд. Собственно, от «Hello, world» reader (как выражение минималистичности реализации) название софтины и эволюционировало. Первые форки назывались «Ni hao reader», но потом я решил, что лучше «Ni hao» перевести на якутский.

saahriktu ★★★★★ ()

так ты за всё финское или тюркское топишь?

Bruce_Lee ★★ ()
Ответ на: комментарий от Bruce_Lee

Мне без разницы. Я могу все языки использовать и даже несуществующие ни в одном из языков слова применять.

saahriktu ★★★★★ ()

А что вы думаете насчет еще одного форка, который будет поддерживать все кодировки?

Leupold_cat ★★★ ()

работает исключительно с юникодом

Shaman007, я не знаю, чем вы угрожаете Саакрихту, но прошу, пожалуйста, смилуйтесь над ним. Он хороший.

Leupold_cat ★★★ ()

Версия 0.2 готова!

diff -Naur yegyerdyereader-0.1/Makefile yegyerdyereader-0.2/Makefile
--- yegyerdyereader-0.1/Makefile        2018-08-30 19:02:14.000000000 +0500
+++ yegyerdyereader-0.2/Makefile        2018-08-31 13:09:33.751005375 +0500
@@ -1,7 +1,7 @@
 all:
-       gcc -O2 -o yegyerdyereader yegyerdyereader.c -lcursesw
-       strip -s yegyerdyereader
+       gcc -O2 -o yegyerdyereader yegyerdyereader.c -lncursesw
 clean:
-       rm yegyerdyereader
+       rm -f yegyerdyereader
 install:
-       cp hexyegyerdyereader lzyegyerdyereader yegyerdyereader /usr/bin
+       install -m 0755 hexyegyerdyereader lzyegyerdyereader /usr/bin/
+       install -s -m 0755 yegyerdyereader /usr/bin/
diff -Naur yegyerdyereader-0.1/yegyerdyereader.c yegyerdyereader-0.2/yegyerdyereader.c
--- yegyerdyereader-0.1/yegyerdyereader.c       2018-08-30 22:05:19.000000000 +0500
+++ yegyerdyereader-0.2/yegyerdyereader.c       2018-08-31 13:07:06.057005303 +0500
@@ -3,13 +3,39 @@
  * 2018 (c) Artem Kurashov, under GNU GPLv3
  */
 
-#include <curses.h>
+#define _GNU_SOURCE
+#include <ncursesw/ncurses.h>
 #include <wchar.h>
 #include <string.h>
 #include <stdlib.h>
 #include <fcntl.h>
 #include <signal.h>
 #include <locale.h>
+#include <unistd.h>
+
+const char* msg_usage[] = {
+               "Yegyerdye reader v0.1",
+               "      for unicode texts",
+               "2018 (c) saahriktu",
+               "             under GNU GPLv3",
+               "F1 - help",
+               "j, key down - next line",
+               "k, key up - previous line",
+               "h, key left - scroll to left",
+               "l, key right - scroll to right",
+               "p, Page Up - previous page",
+               "space, Page Down - next page",
+               "Home - begin of text",
+               "End - end of text",
+               "= - show current line number",
+               "g - go to line (by number)",
+               "f - turn full page switch",
+               "/, F7 - search",
+               "F3 - continue search",
+               "c - go to column (by number)",
+               "q - quit"
+               };
+const unsigned int msg_usage_lines = sizeof(msg_usage)/sizeof(char*);
 
 // global vars
 int             askvar,
@@ -19,9 +45,10 @@
                 cline,
                 ccol,
                 mxcol = 0,
-                vltline;
+                vltline,
+                i;
 WINDOW         *yyrwin;
-wchar_t               *txtbuf,
+wint_t        *txtbuf,
                srchbuf[65],
                *rslt;
 
@@ -57,26 +84,8 @@
         mvwaddstr(mw, 1, 1, msgptr);
         break;
     case 1:
-        mvwaddstr(mw, 1, 1, "Yegyerdye reader v0.1");
-        mvwaddstr(mw, 2, 1, "      for unicode texts");
-        mvwaddstr(mw, 3, 1, "2018 (c) saahriktu");
-        mvwaddstr(mw, 4, 1, "             under GNU GPLv3");
-        mvwaddstr(mw, 6, 1, "F1 - help");
-        mvwaddstr(mw, 7, 1, "j, key down - next line");
-        mvwaddstr(mw, 8, 1, "k, key up - previous line");
-        mvwaddstr(mw, 9, 1, "h, key left - scroll to left");
-        mvwaddstr(mw, 10, 1, "l, key right - scroll to right");
-        mvwaddstr(mw, 11, 1, "p, Page Up - previous page");
-        mvwaddstr(mw, 12, 1, "space, Page Down - next page");
-        mvwaddstr(mw, 13, 1, "Home - begin of text");
-        mvwaddstr(mw, 14, 1, "End - end of text");
-        mvwaddstr(mw, 15, 1, "= - show current line number");
-        mvwaddstr(mw, 16, 1, "g - go to line (by number)");
-        mvwaddstr(mw, 17, 1, "f - turn full page switch");
-        mvwaddstr(mw, 18, 1, "/, F7 - search");
-        mvwaddstr(mw, 19, 1, "F3 - continue search");
-        mvwaddstr(mw, 20, 1, "c - go to column (by number)");
-        mvwaddstr(mw, 21, 1, "q - quit");
+        for (i = 0; i < msg_usage_lines; i++)
+          mvwaddstr(mw, i + 1, 1, msg_usage[i]);
         break;
     case 2:
         mvwaddstr(mw, 1, 1, msgptr);
@@ -89,14 +98,14 @@
         mvwaddstr(mw, 1, 30, "Search");
         wrefresh(mw);
         echo();
-        mvwgetn_wstr(mw, 2, 1, &srchbuf, 64);
+        mvwgetn_wstr(mw, 2, 1, srchbuf, 64);
         noecho();
         break;
     }
     wrefresh(mw);
     if (wtype < 2)
     {
-        wget_wch(mw, &rslt);
+        wget_wch(mw, rslt);
     }
     werase(mw);
     wrefresh(mw);
redgremlin ★★★★★ ()
Ответ на: комментарий от Deleted

Это не выздоровление, это просто фансервис. Кроме того, не забывай, что не всем нужен юникод. Вот якутам нужен, им в КОИ8-Р букв не хватает, так что КОИ8-Р им не нужен.

bodqhrohro_promo ()

Кстати, не понимаю, зачем ты так мучился с названием. Мог бы назвать просто egherde.

Thetan ★★★ ()
Ответ на: комментарий от Thetan

Старый добрый стандарт транслитерации. «э» -> «йе» -> «ye».

saahriktu ★★★★★ ()
Ответ на: комментарий от Thetan

Не знаю, это мой собственный стандарт, который я разработал для себя ещё в детстве.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

даже несуществующие ни в одном из языков слова применять.

В каком-то интервью читал что название фирмы Abbyy (которая делает известные переводчики) так и придумали. Правда сейчас в Википедии написано иначе.

Deleted ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)