LibRusLib
Понедельник, 25.11.2024, 20:43
Приветствую Вас Гость | RSS
 
Главная ФорумРегистрацияВход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Архив - только для чтения
Пожелания )
vadim_02Дата: Четверг, 07.06.2012, 18:40 | Сообщение # 271
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Все конечно очень хорошо, но вот у меня есть двольно много разных коллекций, которые иногда имеют самостоятельную структуру. В том числе, например, колхоз и мехмат. Если я начну уродовать имена файлов этих коллекций, добавляя md5 в конце, рухнет их собственный доступ. И может превыситься длинна (путь станет больше 260 и произойдет обрезание). Я предпочел бы просто создать директорий с линками на эти коллекции (на отдельные файлы). Скажем, md5.lnk (или без расширения , или имя файла плюс md5, как у вас рекомендовано - мне пофигу, это делает написанная мною программа. Если я щелкаю по файлу мышкой или, например, запускаю runlnk.bat (%1), который я прописал в настройках с нужным аргументом (т.е путем к файлу md5.lnk) все нормально. Но открытие этого файла из Genlib, если он DJVU, происходит криво. Т.е он вызывается, но пустой. В вашей помощи прописано, что для расширений выбираются те программы, которые предусмотрены Виндоус, т.е, теоретически, и делать ничего не надо. Genlib находит md5.lnk, просит Виндоус запустить и ву а ля. Но, увы.
Однако файлы других типов, в частности pdf, chm открываются нормально, хотя chm зачем то спрашивает, хочу я его грузить или открыть. При прямом клике на его md5.lnk он дурацких вопросов не задает.
Не могли ли бы вы или подсказать, что я делаю неправильно, или что-то сделать, или предоставить мне что -то, чтобы я мог сделать сам?


Сообщение отредактировал vadim_02 - Четверг, 07.06.2012, 19:10
 
drserjДата: Четверг, 07.06.2012, 21:38 | Сообщение # 272
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (vadim_02)
у меня есть двольно много разных коллекций, которые иногда имеют самостоятельную структуру.

Это и плохо sad В любом случае, для нормальной работы прийдется приводить к чему-то единому...

Quote (vadim_02)
для расширений выбираются те программы, которые предусмотрены Виндоус, т.е, теоретически, и делать ничего не надо.

Но можно и прописать ручками в настройках, какой именно программой открывать...

Quote (vadim_02)
путь станет больше 260 и произойдет обрезание

не должно, по идее...

Quote (vadim_02)
Однако файлы других типов, в частности pdf, chm открываются нормально


Я использую стандартную функцию API для запуска. Если грузится одно - значит должно грузиться и другое. Прежде чем что-либо посоветовать, хотелось бы глянуть на содержимое runlnk.bat (Хотя, рекомендовал-бы обозвать его runlnk.cmd).


drSerj
 
Vadim_03Дата: Воскресенье, 10.06.2012, 18:47 | Сообщение # 273
Сержант
Группа: Пользователи
Сообщений: 38
Репутация: 0
Статус: Offline
Большое спасибо за ответ
Quote
Это и плохо В любом случае, для нормальной работы прийдется приводить к чему-то единому...

Так я и привожу.
Quote
Но можно и прописать ручками в настройках, какой именно программой открывать

Это же линк неизвестно на что. Так что мне надо имитировать двойной щелчек. Я и попробовал два варианта.
а. пусть щелкает LibGen Открывает криво, т.е она запускает таки DJVU, сверху видно, что подсунула ему (имя файла), но текст (картинка текста) не видна. А при двойном щелчке по линку - видна.
б. Пусть щелкает макрос runlnk.bat:
%1
(это все его содержимое 2 знака)
Сам по себе он таки открывает, а вот если его прописать в расширениях - также точно открывает все, кроме DJVU, а их открывает так же криво, как если ничего не прописывать.

Quote
путь станет больше 260 и произойдет обрезание

не должно, по идее..

Почти 100%. Я уже посокращал имена директориев колходз до k и т.д до 1-2 букв. Но там же огромные названия и своя структура. Так что все на пределе и многие книги вылазят безо всяких добавок. А тут 32 символа контрольной суммы. Навероне, половина файлов вылезет.
Quote
Я использую стандартную функцию API для запуска

Какую именно? А, главное, с какими параметрами. В
DJVU всегда мудрит. Но, если я буду знать функцию и параметры, смогу смоделировать.
Quote
Хотя, рекомендовал-бы обозвать его runlnk.cmd

Попробую.

Попутно к вам вопрос.
Работает ли ваша программа с деревом директориев? Я обнаружил, что когда в одном директории на одном уровне много, скажем 260000 файлов, то все перестает работать. Например, если Total Commander был в момент его выключения в этом директории, то при запуске он может открываться полчаса - час и подвешивает всю работу. Видимо, файловая система Виндоус мирно загибается при таких массивах.
Эксперимент показал, что все становится лучше, если бить на куски, скажем по 10-20 тысяч.
Вариантов 2.
Вариант1
Куски формируются на уровне библиотеки. Если, допустим, она сидит в Genesis, то куски некоего директория с линками будут
B:\Genesis\л1, B:\Genesis\л2, ....B:\Genesis\л1000
Вариант 2
директорий B:\Genesis\л\1 .....B:\Genesis\л\1000
Второй удобней, но я вообще не понимаю, как вы ищите нужный файл. Что, заглядываете в каждый директорий, записанный в настройки, и дефакто просто используете средства Виндоус, или при запуске формируете некий индекс.
В первом варианте все будет работать довольно медленно.
 
drserjДата: Понедельник, 11.06.2012, 00:17 | Сообщение # 274
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Vadim_03)
это все его содержимое 2 знака

попробуй более правильно :

start %1

Quote (Vadim_03)
Видимо, файловая система Виндоус мирно загибается при таких массивах.

Да, скорее это проблема винды, впрочем, под линухой - те же грабли....

Quote (Vadim_03)
просто используете средства Виндоус, или при запуске формируете некий индекс.

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

Quote (Vadim_03)
Работает ли ваша программа с деревом директориев?

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


drSerj
 
Vadim_03Дата: Понедельник, 11.06.2012, 02:54 | Сообщение # 275
Сержант
Группа: Пользователи
Сообщений: 38
Репутация: 0
Статус: Offline
Огромное спасибо!

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


Что то такое?
foreach(string dir in directoriesListBox.Items)
{
foreach(string bookLnk in Directory.EnumerateFiles ( dir, "*", SearchOption.AllDirectories ))
{
something to do
} }
Если это что-то похожее, то, получается, есть смысл не мудрствуя лукаво все сунуть в один директорий, в котором иметь кучу вложеных, это же линки.
Тогда будет так
foreach(string bookLnk in Directory.EnumerateFiles ( dir, "*", SearchOption.AllDirectories ))
{
something to do
}

Quote
Если имеется в виду, найдет ли программа файл в подкаталоге - по идее должна. Сканируется весь каталог с подкаталогами. <br /> Будет ли это быстрее - вопрос интересный. На уровне файловой системы - может и будет, на уровне программы - сомнительно. Только метод тыка может дать результат, ибо, на разных машинах эффект может различаться.
Так не в быстроте дело. С этим каталогом нельзя работать.
runlnk.cmd sl_links_md5\0a3a2752aed9a3c2e95f5b29c543aec1.lnk
Нормально запускает книгу
Из libgen не запускает djvu, но запускает pdf .
Если щелкаешь по линку, в шапке DjVu viewer горит путь к файлу.
А если вызываешь файл из libgen в шапке горит путь к линку, т.е программа как то хитро
подсовывает аргумент, либо чихает на настройку.
В общем ничего не меняется от того, есть что то в строке запуска по расширению или нет


Сообщение отредактировал Vadim_03 - Понедельник, 11.06.2012, 03:06
 
drserjДата: Понедельник, 11.06.2012, 17:45 | Сообщение # 276
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Vadim_03)
есть смысл не мудрствуя лукаво все сунуть в один директорий, в котором иметь кучу вложеных


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

вот строка запуска (стандартный апи) : ShellExecute(Application.Handle,'open',pwidechar('"'+s+'"'), pwidechar(fn), nil, SW_NORMAL)
Может в линке надо рабочую папку указывать? Может просмотрщик не находит пути?


drSerj
 
Vadim_03Дата: Понедельник, 11.06.2012, 22:53 | Сообщение # 277
Сержант
Группа: Пользователи
Сообщений: 38
Репутация: 0
Статус: Offline
Quote (drserj)
вот строка запуска (стандартный апи) : ShellExecute(Application.Handle,'open',pwidechar('"'+s+'"'), pwidechar(fn), nil, SW_NORMAL)

Спасибо.
Хотя большой пользы нет - я ж не знаю, что туда реально попадает.
Сделал эксперимент
Прописал CMD следующего содержания
date /T
start %1
В Command Prompt он, как положено, сообщает дату и открывает DJVU
Будучи прописаным в библиотеке, не производит никаких действий, в том числе, не сообщает дату.
Что он есть, что его нет
Мораль.
Видимо, вы, на самом деле, эту настройкй не используете.
Как, например, вы открываете свои файлы, которые у вас, в норме, не имеют окончаний? Ведь их тип неизвестен, и виндоус тут же начинает протестовать, если по ним щелкнешь (или сунешь его в ShellExecute. open чем? Там же негде прописать, что запускать, чтобы его открыть). А библиотека их открывает, т.е умудряется брать откуда то расширение и запускает нужную читалку. В принципе, расширение есть в базе данных. Так что, похоже, вы берете его оттуда, запускаете то, что оно требует, а настройка существует, но не используется. Что то мне кажется, что вы, когда задаете имя файла ShellExecute, не забываете добавить к нему расширение из базы данных.
Если это так, может быть, это можно исправить, я имею ввиду, сделать так, чтобы при незнкомом расширении ( а они все незнакомые - у вас же вообще их нет в родных файлах) программа действительно читала настройку?
 
drserjДата: Вторник, 12.06.2012, 20:01 | Сообщение # 278
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Так, давай сначала.
1. У меня есть каталог с книгой 12345.djvu, которая в либгене имеет мд5 (оно же имя) 903505ee4ccc862badd530ee279a639a.
2. Я делаю lnk на файл 12345.djvu с именем 903505ee4ccc862badd530ee279a639a.lnk
3. Эту ссылку я кидаю в каталог Lib, который у меня прописан как каталог для скачки.
4. Создаю батник startlnk.cmd, в котором только %1
5. Прописываю в настройках для расширения djvu файл startlnk.cmd.
6. Щелкая по книге в программе, она прекрасно открывается djvureader-ом. (Причем, находит оно, ессесно, файл 903505ee4ccc862badd530ee279a639a.lnk и открывает батником)

Что я делаю не так?


drSerj
 
Vadim_03Дата: Среда, 13.06.2012, 12:44 | Сообщение # 279
Сержант
Группа: Пользователи
Сообщений: 38
Репутация: 0
Статус: Offline
Quote
Так, давай сначала.
1. У меня есть каталог с книгой 12345.djvu, которая в либгене имеет мд5 (оно же имя) 903505ee4ccc862badd530ee279a639a.
2. Я делаю lnk на файл 12345.djvu с именем 903505ee4ccc862badd530ee279a639a.lnk
3. Эту ссылку я кидаю в каталог Lib, который у меня прописан как каталог для скачки.

Пока мне кажется, что у вас эта книга появилась в 2 экземплярах - в первоначальном виде и еще один экземпляр с ссылкой на нее. Т.е нет никакой уверенности в том, что и как вы вызвали.
Заметьте заодно, что вы использовали мою первоначальную версию макроса - без команды start, которую вы же мне и посоветовали( и были на 128 процентов правы).
Я советую провести 4 эксперимента
1. Взять и убрать макрос. Убедитесь, что книга перестала вызываться.
2. Добавьте в макрос что либо, чтобы он что то сообщал, например, сделайте, как сделал я - пусть сообщит дату и убедитесь, что он запускался. Я пришел к выводу, что у меня макрос просто не запускается. Конечно, на 100 процентов я в этом не уверен.
3. Ликвидируйте книгу - источник в нормальном месте, оставьте только 12345.djvu и ссылку на нее. Попробуйте ее вызвать.
4. Я не знаю, что такое у вас каталог Lib. Может быть это какой то очень уважаемый и постоянно опрашиваемый каталог библиотеки? Смущают слова "для скачки". К примеру, у меня то эти книги качать из Интернета не нужно - они все на дисках. Разместите ссылку в совершенно новом каталоге, например 123, саму книгу 12345.djvu в каталоге 1234, укажите в настройках каталог 123. Иными словами книга должна быть где -то за пределами библиотеки, ссылка на нее прописана в настройках, дубля книги в библиотеки не должно быть.

Если сылки должны быть обязательно в каталоге Lib, и никаком другом, то это тоже решение, особенно, если в нем может быть иерархия. Но тогда, может быть, стоило бы это указать в помощи.
Мне это не помогло. Сдвинул все свои каталоги в Lib и получил тот же результат - djvu не открывает.
pdf открывает, rar ругает меня по страшному, ps.gz выдает сам линк ( а вот щелчек по нему выдает нормальный текст), html.g сообщает, что программы для просмотра не найдена, CHM открывает.
Короче, ничего не изменилось.
Интересно другое. Я, следуя за вами, создал книгу lecture notes.djvu в директории C:\t, являющуюся копией книги 00a481b4774a6bdc273a1bdf5bba937d в директории 7000 (B:\Genesis\7000) разместил линк на нее в C:\G\lnk\1. Она вызывается, так как программа лезет сначала на 7000. А вот если линк на нее разместить в директории C:\G\LIB\1, она пересает вызваться. Т.е все выглядит так
книга в директориях:

B:\Genesis\7000\00a481b4774a6bdc273a1bdf5bba937d
C:\G\T\lecture notes.djvu

Ссылки на нее :
C:\G\LNK\1\00a481b4774a6bdc273a1bdf5bba937d.lnk
C:\G\LIB\1\00a481b4774a6bdc273a1bdf5bba937d.lnk

Если ссылка в LIB C:\G\LIB\1\00a481b4774a6bdc273a1bdf5bba937d.lnk есть, книга не вызвается.
Если этой ссылки нет, есть только C:\G\LNK\1\00a481b4774a6bdc273a1bdf5bba937d.lnk, книга вызвается.
Естественно, она вызвается и если нет обеих ссылок.
У меня сложилось впечатление, что ваша программа просматирвает директории в некотором порядке, и, если сначала попадается линк, капут, а, если сначала попадается сам файл (с контрольнй суммой в качестве имени), все отлично. Причем у вас, по каким то причинам сначала вызвался директорий именно с книгой, а потом LIB, а у меня сначала LIB, а потом с книгой. Возможно, потому, что у меня книги на одном диске, а программы и ссылки на другом.

макрос

data
start %1

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


Сообщение отредактировал Vadim_03 - Среда, 13.06.2012, 12:47
 
drserjДата: Среда, 13.06.2012, 21:55 | Сообщение # 280
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Vadim_03)
Пока мне кажется, что у вас эта книга появилась в 2 экземплярах - в первоначальном виде и еще один экземпляр с ссылкой на нее. Т.е нет никакой уверенности в том, что и как вы вызвали.


Нееееееее... книгу я перенес в абсолютно другой каталог и на другом диске.

Quote (Vadim_03)
1. Взять и убрать макрос. Убедитесь, что книга перестала вызываться.


перестала

Quote (Vadim_03)
2. Добавьте в макрос что либо, чтобы он что то сообщал, например, сделайте, как сделал я - пусть сообщит дату и убедитесь, что он запускался. Я пришел к выводу, что у меня макрос просто не запускается. Конечно, на 100 процентов я в этом не уверен.


Code
F:\work\#LIBGEN>date /T
13.06.2012

F:\work\#LIBGEN>"F:\work\#LIBGEN\lib\123000\903505ee4ccc862badd530ee279a639a.lnk

F:\work\#LIBGEN>pause
Для продолжения нажмите любую клавишу . . .


Книга открылась

Quote (Vadim_03)
3. Ликвидируйте книгу - источник в нормальном месте, оставьте только 12345.djvu и ссылку на нее. Попробуйте ее вызвать.


Code
F:\work\#LIBGEN>date /T
13.06.2012

F:\work\#LIBGEN>"F:\work\#LIBGEN\lib\123000\903505ee4ccc862badd530ee279a639a.lnk"

F:\work\#LIBGEN>pause
Для продолжения нажмите любую клавишу . . .


Книга не открылась

Quote (Vadim_03)
4. Я не знаю, что такое у вас каталог Lib.


Обычный каталог в папке программы... "Настройки" - "Папки" - "Размещение скачиваемых файлов библиотеки". По-умолчанию ".\lib\"


drSerj
 
drserjДата: Среда, 13.06.2012, 21:55 | Сообщение # 281
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Так. Давай я опишу что я сейчас проделал:
1. Создал папку e:\LIBGENBOOK\
2. Создал папку h:\LIBGENLNK\ а в ней папку 000
3. В e:\LIBGENBOOK\ поместил файл книги 903505ee4ccc862badd530ee279a639a.djvu
4. В h:\LIBGENLNK\000\ поместил линк 903505ee4ccc862badd530ee279a639a.djvu.lnk
5. В настройках Пути к папкам с книгами (список внизу) добавил путь h:\LIBGENLNK\ (обрати внимание, без 000, т.е. сканирование с подкаталогами)
6. В таблице щелкнул по строке - книга открылась.
7. Переименовал 903505ee4ccc862badd530ee279a639a.djvu - книга не открылась, но и запроса на скачку не было, что правильно, линк-то есть.
8. Переименовал 903505ee4ccc862badd530ee279a639a.lnk - книга не открылась, зато запрос на скачку появился, что правильно, файла-то нетути.

Таким образом выясняется:
1. Расположение каталогов как книг, так и линков в разных местах на работу программы не влияет.
2. Если ты задал каталог выше того, в котором находится книга - поиск и нахождение в подкаталоге происходит успешно.
3. Твоя идея с вызовом скрипта и линками - замечательно работает smile


drSerj
 
drserjДата: Среда, 13.06.2012, 22:01 | Сообщение # 282
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Vadim_03)
B:\Genesis\7000\00a481b4774a6bdc273a1bdf5bba937d


а вот вариант, когда у тебя книга именуется 00a481b4774a6bdc273a1bdf5bba937d, находится в другом каталоге, не известном программе, на нее линк 00a481b4774a6bdc273a1bdf5bba937d.lnk, путь к которому указан в программе - работать не сможет, ибо винда пытается запустить файл 00a481b4774a6bdc273a1bdf5bba937d, у которого расширение отсутствует (батник запустится нормально, но расширения не передаст) и какую программу запустить она не знает.


drSerj
 
Vadim_03Дата: Пятница, 15.06.2012, 16:56 | Сообщение # 283
Сержант
Группа: Пользователи
Сообщений: 38
Репутация: 0
Статус: Offline
Большое спасибо за ответы, хотя для меня ни свелись к выдираню остатков волос, пока я разобрался.
Quote
Нееееееее... книгу я перенес в абсолютно другой каталог и на другом диске.

Перенесли move или copy? Т.е есть ли уверенность, что программа может добраться до книги только через lnk?

Но, как мне кажется, я понял, чем вы меня уели, хотя и не понял, почему вы себя этим не уели. Вохможно, что у вас как то хитро настроена программа, а у меня просто то, что приходит с сайта.
Итак, как вы меня уели.
Оказывается, вы запускаете программу, заданную в настройках, не по окончанию в соответствии с реальным окончанием файла в библиотеке ( в моем случае это lnk), а в соотвествии со своими представлениями о типе файла данной книги, т.е вы выбираете окончание из таблицы библиотеки для данной книги (то, что идет в колонке тип), например, djvu, наплевав со своей высокой колокольни на то, что у меня это lnk, затем обращаетесь к настройкам, находите там что надо запустить для данного окончания (типа), и запускаете это что то. Этому чему то вы передаете реальный файл, т.е, в моем случае с окончанием lnk. Так как у меня все файлы имеют окончание lnk, то, ясное дело, заданный мною макрос вообще не запускался. А вот когда я задал его запуск для тех окончаний, который числятся в библиотечной базе данных, он начал запускаться.
Кроме того, я выяснил, что не надо использовать start в макросе, надро просто писать %1, как я и сделал с самого начала.
Макрос выглядит так
%1
А настройка так

[FileType]
lnk=C:\G\runlnk.cmd
djvu=C:\G\runlnk.cmd
rar=C:\G\runlnk.cmd

И все начало работать.
Так что, огромное вам спасибо.
Между прочим, в макросе мохно иметь все, что угодно - целую программу, и вызвать можно что то интелектуальное. Так что через эту вашу таблицу черта лысого можно запустить.
Просто надо иметь талицу окончаний, но это уже несложно. Хотя она и огромная, но я ее составляю в автомате в процессе созданя линков.
 
drserjДата: Пятница, 15.06.2012, 20:44 | Сообщение # 284
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Vadim_03)
Перенесли move или copy? Т.е есть ли уверенность, что программа может добраться до книги только через lnk?


однозначно перенес. точно move

Quote (Vadim_03)
т.е вы выбираете окончание из таблицы библиотеки для данной книги (то, что идет в колонке тип),


естественно. по-умолчанию у файлов либгена нет расширения.

Quote (Vadim_03)
А вот когда я задал его запуск для тех окончаний, который числятся в библиотечной базе данных, он начал запускаться.


именно так.

Quote (Vadim_03)
И все начало работать.


вот и прекрасно smile

Quote (Vadim_03)
Так что, огромное вам спасибо.


Да всегда пожалуйста smile

Quote (Vadim_03)
Между прочим, в макросе мохно иметь все, что угодно - целую программу, и вызвать можно что то интелектуальное. Так что через эту вашу таблицу черта лысого можно запустить.


а оно на это и рассчитывалось...

Quote (Vadim_03)
Просто надо иметь таблицу окончаний, но это уже несложно. Хотя она и огромная, но я ее составляю в автомате в процессе созданя линков.


Ну, для файлов без lnk оно и не обязательно... хотя и не мешает. Да и не все ж расширения сразу будут использоваться. Постепенно, добавляя по мере надобности...


drSerj
 
ЦерберДата: Вторник, 26.06.2012, 12:01 | Сообщение # 285
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Приветствую читающих!

есть ли планы интегрировать закачку файлов использую торрент технологию?
это позволило бы очень сильно разгрузить сервера

Добавлено (26.06.2012, 11:01)
---------------------------------------------
можно использовать например такое решение:
http://rus-linux.net/MyLDP/internet/torrent-client-aria2.html

 
Поиск:

Copyright LibRusLib © 2024