Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3 4
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
Патч для ansi-плагинов для хранения настроек плагинов в папке профиля, а не в реестре
Как распаковать UUE/XXE файлы патчей и использовать их?
 
ВНИМАНИЕ!
 
Правильное (корректное) завершение Far: всегда завершайте сеанс работы с Far по F10! Подробнее на форуме - Различие выхода из Far по F10 и крестиком
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

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

Всего записей: 38840 | Зарегистр. 26-02-2002 | Отправлено: 18:55 23-11-2017 | Исправлено: Victor_VG, 10:00 09-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Panel.ShiftF[56].moon
 
 
Panel.ShiftF[56].lua
 
v1.0 оптимизация, финальная

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 23:21 06-09-2019 | Исправлено: Alexyz21, 23:24 06-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
v1.0 оптимизация, финальная

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

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 23:47 06-09-2019 | Исправлено: citPiks, 23:48 06-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Применил предложенный DrKnS патч для RESearch: ExitFARW -> ExitFAR_ устраняющий проблему "После вызова RESearh Far b5464+ падает при выходе по F10" - больше не падает.  
 
Подробности на форуме Far - в Глюки и баги и теме плагина. Я просто в хекс редакторе пробежался по ANSI ExitFAR и заменил символ W (0х57) на _ (0x5F). Протестил, но в коммит ещё не попало, будет.
 
По скрипту Editor_MouseSelect.lua (c) SumSU - при просмотре кода скрипта от 14.11.2018 обратил внимание на строку 84:  

Код:
local cd = editor.GetColor(nil,Line,0)

в функции MouseToText() скрипта:

Код:
local function MouseToText()
-- Функция пересчёта экранных координат мышки в координаты текста.
  local cd = editor.GetColor(nil,Line,0)
  local d  = cd.StartPos<0 and 1-cd.StartPos or 0 --!!! Суперкостыль
 
   
  local X0,Y0 = Editor.Pos(0,5)-d,Editor.Pos(0,4)
  local Yc= Mouse.Y==TitleBar-1 and Y0 or Mouse.Y>=Far.Height-1-KeyBar and Y0+Far.Height-1-TitleBar-KeyBar or Y0+Mouse.Y-TitleBar
  local Xc= Mouse.X==0 and X0 or Mouse.X>=Far.Width-1-ScrollBar and X0+Far.Width-1-ScrollBar or X0+Mouse.X
  return Xc,Yc,X0,Y0 -- Координаты курсора и координаты экрана.
end
 

стоит не инициализированная переменная Line на которую ругается и LuaCheck W113, 84:34. Переменная по идее отдаёт в editor.GetColor(EditorId, StringNumber, ColorItem) номер текущей строки, а так как её значение "неопредёлённость", то и все остальные вычисления не действительны, в итоге падаем. Потому я сильно думаю, что в строке 84 подразумевался такой код в строке 84:
 
local cd = editor.GetColor(nil,Editor.CurLine,0)
 
тогда неопределённость испаряется, а в оригинале смысл "суперкостыля" с ходу не понятен ибо если в строке 84 дёргается editor.GetColor(nil,<неопределённость>,0) то зачем "костыль" в строке 85 если мы уже на 84-й упали?
 
Ну а чуть выше уже по мелочи W113 69:14 - local SimSU= SimSU or {} - варнинг опять на неопределённость, но это место падения не порождает, хотя по совести переменные надо инитить как минимум 0х0 - защита от падения при счёте. Например так (PL/1):
 
Dcl A char(30) ""
Dcl B int(16) 0
 
можно и так:
 
Dcl A char(30)
Dcl B int(16)
 
и это допустимо, но в момент старта программы в памяти A и B будет произвольный мусор оставшийся от ранее считавшихся задач, а если задать начальные значения то такая неопределённость исчезает.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33236 | Зарегистр. 31-07-2002 | Отправлено: 00:39 07-09-2019 | Исправлено: Victor_VG, 02:41 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы к знатокам - FAR Team
 
1. Сейчас в диалогах (Shift)?F[56] при пустой строке и нажатии Enter диалог просто закрывается - разве не должно выводится предупреждение: Путь или имя файла не указаны, с возвратом в диалог по Ok?
 
2. Шоркат кнопки действия в диалоге Move/Rename - Rename при том, что диалог называется Move - может лучше кнопку переименовать в Move и изменить шоркат на e? - Тогда название диалога и шоркат будут согласованы. e в диалоге свободно и присутствует и в Move, и в Rename.
 
3. Текст на btnOK должен соответствовать выполняемой операции - разве нет?
 
Panel.ShiftF[56].lua - Extend Panel (Shift)?F[56] Dialog v1.1 с учётом вышесказанного.  
 

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 08:07 07-09-2019 | Исправлено: Alexyz21, 11:27 07-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
разбивка с собой никаких пенальти не несёт?

С утра посмотрел уже код конкретно. "Пенальти" есть - дополнительный вызов функции с параметрами. Скорее всего это практически неощутимо.
 
Но вообще-то механизм priority и condition в отношении событий был введён не для эстетики, а для возможности управления порядком вызова обработчиков (что отражено в мануале).

Всего записей: 1863 | Зарегистр. 09-03-2012 | Отправлено: 09:22 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за ответ.
 
Для Macro используются ещё область, флаги - всё это увязать, имхо непростая задача.
 
Добавлено:
 
Есть ли смысл в возврате condition нескольких значений для последующего их использования в action? Например как-то так:

Код:
condition(Event, Param)
  local a,b = 1,2
  return true, a, b
end;
action(Event, Param, _cond)
  _cond.a==1
  _cond.b==2

или юзать внешние локальные переменные и не дурить голову?

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 09:53 07-09-2019 | Исправлено: Alexyz21, 10:57 07-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Если у вас на определённое событие есть только один обработчик, или больше одного, но порядок их исполнения не имеет значения - не заморачивайтесь с condition. Если порядок имеет значение, то, как правило, расстановка priority достаточна. То есть действительная необходимость в condition для обработчика событий - это весьма редкий случай.
 
Что касается вашего гипотетического кода, то в текущей реализации LuaMacro он работать не будет, а вносить изменения планов нет.

Всего записей: 1863 | Зарегистр. 09-03-2012 | Отправлено: 10:57 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понятно, спасибо.
 
Вопросы к знатокам - FAR Team
 
1. Сейчас в диалогах (Shift)?F[56] при пустой строке и нажатии Enter диалог просто закрывается - разве не должно выводится предупреждение: Путь или имя файла не указаны, с возвратом в диалог и установкой фокуса в поле ввода?
 
2. Шоркат кнопки действия в диалоге Move/Rename - Rename при том, что диалог называется Move - может лучше кнопку переименовать в Move и изменить шоркат на e? - Тогда название диалога и шоркат будут согласованы. e в диалоге свободно и присутствует и в Move, и в Rename.
 
3. Текст на btnOK должен соответствовать выполняемой операции - разве нет?
 
Panel.ShiftF[56].lua - Extend Panel (Shift)?F[56] Dialog v1.1 с учётом вышесказанного.  
 

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 10:58 07-09-2019 | Исправлено: Alexyz21, 11:30 07-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Panel.ShiftF[56].lua - Extend Panel (Shift)?F[56] Dialog v1.1

Не выдержал и одним глазом глянул. И я впечатлён скриптом.  
 
В данную версию добавил:
Код:
condition=function() return APanel.Visible and band(0xFFFF, _G.KbdLayout()) == 0x0409; end; -- исполнять только в англ. раскладке

 
А затем клонировал файл, добавив к его имени метку ru, и в него вместо этого кондишн поместил кондишн для русск. раскладки. А также все английские Copy, Clone, Rename и Move заменил в нём, соответственно, на Копировать, Клонировать, Переименовать и Переместить. Благо в первых двух командах первая буква (К) совпадает, и в следующей паре — последняя (ь) тоже совпадает. И с этими мизерными правочками, внесёнными буквально за пару минут, скрипт работает теперь отлично в обеих раскладках.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 12:07 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Panel.ShiftF[56].lua - 1.2 en,ru
 
 
Dialog_Maximize.moon - добавлен LFSearch Shell/Editor. Лицензия pd - понятия не имею что это такое, знаю только одну лицензию (с)тырено :D  Надеюсь авторы zg и HaRT не обидятся.
 
Shmuel, Editor Multi-Line Replace [ ] Function mode стоило бы выровнять влево. - Выровнял :P

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 14:28 07-09-2019 | Исправлено: Alexyz21, 23:06 07-09-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Editor Multi-Line Replace [ ] Function mode стоило бы выровнять влево.

Что, так как есть, скрипт не берёт?

Всего записей: 1863 | Зарегистр. 09-03-2012 | Отправлено: 17:48 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Он его не трогает, просто он стоит как бык ..., слишком независимо, вот
 
Интересно, как получить состояние FDLG_SMALLDIALOG для диалога, т.е. какой толщины рамка и стало быть, где находится левая граница. Сделал финт хвостом - взял XY рамки с 1-го элемента, поправил диалоги LFSearch
 
Можно добавить выравнивание по вертикали с указанным элементом, но тогда придётся парсер менять...

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 17:52 07-09-2019 | Исправлено: Alexyz21, 19:33 07-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Panel.ShiftF[56].lua - 1.2 en,ru  

А так ещё лучше! И в практическом смысле применения скрипта, и в смысле пользы увидеть как более правильно en,ru в коде организовывать. Спасибо!
 
При этом, предпочтительно бы и предупреждение "Warning! Path or FileName don't s" в русском Фаре по русски бы выводить. Например: "Внимание! Введите путь или имя файла". И м.б. его не стоит красным выдавать? Это ведь как бы скорее недоработка пользователя, а не ошибка как таковая. Но это не принципиально, а так, вроде бы для смягчения восприятия было бы целесообразно, на мой взгляд.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 21:55 07-09-2019 | Исправлено: citPiks, 21:56 07-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
обновил оба

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 22:31 07-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В папке C:\tst имеем только 3 файла: проба1.txt, проба2.txt и проба3.txt с разным содержимым. Помечаем их все и вызываем F6. В диалоге "Переименование/Перенос" в поле "Переименовать или перенести 3 элемента в:" выставляем "проба4.txt" и нажимаем Enter.  
 
Ожидаемо появляется сообщение:
 

 
И если нажать на кнопку { Папка }, то 3 помеченных файла опять же ожидаемо будут перенесены из папки C:\tst в папку C:\tst\проба4.txt  
 
Но если нажать не на кнопку { Папка }, на кнопку [ Файл ], то появится следующее сообщение:
 

 
И если после этого нажать на кнопку [ Отменить ], то файл проба1.txt оказывается переименованным в проба4.txt
 
Win10 Far 3.0.0.5468 x86 без дополнительных плагинов и без макросов.
 
Добавлено:
Alexyz21

Цитата:
обновил оба

Спасибо за обновлённый Panel.ShiftF[56].lua! Вроде бы во всех режимах работает отлично.
 
И за добавление LFSearch в Dialog_Maximize.moon тоже особое спасибо!

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 00:35 08-09-2019 | Исправлено: citPiks, 00:40 08-09-2019
zg

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Лицензия pd - понятия не имею что это такое
public domain.
citPiks

Цитата:
 
И если после этого нажать на кнопку [ Отменить ], то файл проба1.txt оказывается переименованным в проба4.txt  
первый файл переименовался, при переименовании второго в то же имя появилось сообщение, вы его отменили, всё ожидаемо.

Всего записей: 462 | Зарегистр. 09-01-2003 | Отправлено: 00:50 08-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zg
 
Благодарю Вас за разъяснение! А то сам я запутался в предположениях и последовательные переименования выпали из виду. Но теперь всё понятно и логично.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 01:04 08-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dialog_Maximize.moon
 
API
0. сдвиг конца элемента в конец строки
1. сдвиг начала элемента на половину строки
2. сдвиг конца элемента на половину строки
3. сдвиг элемента в конец строки
 
, добавлены:
4. сдвиг элемента в начало строки
5. п.1 + п.3
6. относительный сдвиг по X
7. относительный сдвиг по Y
8. относительный сдвиг по X и Y
9. относительный сдвиг по X начала и конца элемента
10. выравнивание по X координате указанного элемента
11. выравнивание по Y координате указанного элемента
12. ширина элемента согласно количеству колонок, положение согласно номеру колонки
13. произвольное изменение положения и размеров элемента
14. замена текста (надписи) у элемента

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 09:29 08-09-2019 | Исправлено: Alexyz21, 11:06 08-09-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Посмотрел только диалоги LFSearch/Shell и LFSearch/Editor, поскольку остальные позиции эвента, если я правильно понял, сохранились в редакции zg-HaRT`а. И просмотренные мною диалоги, вроде бы, все выглядят отлично, особенно с файлами с длинными именами. Большое спасибо!
 
Кажется, заодно в 'Panel.ShiftF[56].lua - 1.2' выявился нюанс. Когда на пассивной панели выставлена временная панель LFSearch, то при вызове на активной панели команды F5 в поле "Клонировать 'этот.файл' в:" и команды F6 в поле "Переименовать 'этот.файл' в:" макросом выставляется имя файла. Тогда как в нативных диалогах в этих случаях в соответствующих полях выставляется путь "LF Search: временная панель:".

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 10:02 08-09-2019 | Исправлено: citPiks, 11:02 08-09-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Panel.ShiftF[56].lua - 1.3 добавлена поддержка плагиновых панелей.
 
FAR 5469, Shift?Ctrl][ не вставляет путь на плагиновую панель, вставляет BackSlash.

Всего записей: 3486 | Зарегистр. 16-06-2007 | Отправлено: 12:03 08-09-2019 | Исправлено: Alexyz21, 12:51 08-09-2019
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru