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

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

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

gyra (10-07-2017 22:07): AkelPad (часть 2)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

abz



Хулиган
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AkelPad  4.9.8 (от 18 июля 2016)
 
Страница программы | Скачать | Описание | FAQ | Плагины | Форум | Скриншот (без плагинов)
 


AkelPad - текстовый редактор с открытым исходным кодом, созданный, чтобы быть маленьким и быстрым.



Скачать инсталлятор (многоязычный): x86 | x64  

Скачать архив (русская версия): x86 | x64  
Скачать архив (английская версия): x86 | x64  

Скачать сборник плагинов: x86 | x64  

AkelUpdater v6.5 - обновление программы, плагинов и скриптов

Авторы:
AkelPad 4 - Шенгальц А.А.
AkelPad 3 - Шенгальц А.А.
AkelPad Classic (2.x) - Кузнецов А.И.
AkelPad - Кузнецов А.И.
 


Различные старые версии
Сборки AkelPad
Установка AkelPad 4 на Windоws 7 "С заменой Блокнота Windows"
Готовый батник (запустить перед установкой AkelPad)  для установки AkelPad 4 на Windоws 7 x86 "С заменой Блокнота Windows"
Dev-версия :: Руководство пользователя (может отличаться от финального релиза)
 
Коллекция скриптов
Дополнительные синтаксические файлы

Всего записей: 14974 | Зарегистр. 04-11-2002 | Отправлено: 19:09 25-05-2006 | Исправлено: Maz, 08:54 11-03-2017
Boltorez

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gyra
Вот, от души спасибо за помощь! После толкового разжовывания, легко разобрался.
Все работает.
 

Всего записей: 13 | Зарегистр. 06-05-2016 | Отправлено: 01:10 08-05-2016
ILYA_HAMSTER



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такой вопрос (может он уже обсуждался, тогда можно ссылку)
Почему редактор (v4.9.2) может не видеть папку, например, папку etc ?
Если вставлять путь к неё C:\Windows\System32\drivers\etc прекрасно работает с файлами в ней. Она не скрытая, блокнот её видит без проблем.
Что и где нужно подкрутить в системе или AkelPad ?

Всего записей: 272 | Зарегистр. 03-08-2009 | Отправлено: 21:21 12-05-2016
XenoZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
All
v4.9.0-4.9.7
При активном использовании поиска/замены в больших файлах наблюдается серьезная утечка памяти.
(файл 10-15MB, кодировка UTF8, на 10-15 циклов поиска/замены отжирается по 400-500MB, вплоть до сообщения о нехватке памяти)

----------
А оно мне надо?..

Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 23:13 12-05-2016
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Совета мудрого прошу. Добавляю в контекстное меню пункт, который будет вставлять вот такой код спойлера:
Код:
<div style="width: 100%;">
<div align="center" style="margin: 0 auto;" ><input style="font-size: 28px; padding: 0px;" class="btn-danger" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = '&#9650; Свернуть &#9650;'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = '&#9660; Развернуть  &#9660;'; }" type="button" value="&#9660; Развернуть &#9660;" /></div>
<br>
<div style="width: 100%;">
<div style="display: none;">
Текст
</div></div></div>
 
Выполняю это через Insert:
Код:
"Вставить код спойлера" Insert( Insert("<div style="width: 100%;">
<div align="center" style="margin: 0 auto;" ><input style="font-size: 28px; padding: 0px;" class="btn-danger" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = '&#9650; Свернуть &#9650;'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = '&#9660; Развернуть  &#9660;'; }" type="button" value="&#9660; Развернуть &#9660;" /></div>
<br>
<div style="width: 100%;">
<div style="display: none;">
Текст
</div></div></div>
", 0)
Ну и Akelpad ругается "Метод уже назначен."
Понятное дело, что причина в куче кавычек и скобок, Akelpad просто путается в том, что я хочу вставить. Помогите как-то переоформить команду, чтобы вставлялся именно такой код.  
 

Всего записей: 359 | Зарегистр. 20-01-2007 | Отправлено: 23:25 12-05-2016 | Исправлено: 526549, 23:53 12-05-2016
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
526549
А двойной Insert( это точно правильно?

Цитата:
"Вставить код спойлера" Insert( Insert("<div style="width: 100%;">  

по крайней мере закрывающая скобка у него внизу одна.


----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:50 13-05-2016
YuS_two



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

Цитата:
Почему редактор (v4.9.2) может не видеть папку, например, папку etc ?

Актуальная, текущая версия 4.9.7.
И что значит не видит папку? У меня, например, он вполне видит эту папку и файлы в ней тоже отображает... подробности требуются.
 
XenoZ

Цитата:
При активном использовании поиска/замены в больших файлах наблюдается серьезная утечка памяти.

1. поиск используется стандартный или скриптовый?
2. как именно используется? например, включены ли в строку поиска регэкспы?
3. пример файла и строки поиска/замены (с указанием какие опции включены) не помешал бы для воспроизведения.
 
526549

Цитата:
Понятное дело, что причина в куче кавычек и скобок, Akelpad просто путается в том, что я хочу вставить.

В данном случае, не AP путается, а Вы запутались. Как выше, правильно, заметили, нарушена структура пункта меню...
Формат должен быть таким:

Код:
[-]"[текст пункта меню]" [Insert()]

где:
    Insert("текст"[, Esc-последовательности])
      "текст"
        Вставляемый текст.
      Esc-последовательности:
        0  "текст" не содержит Esc-последовательностей (по умолчанию).
        1  "текст" содержит Esc-последовательности. Набор последовательностей аналогичен
           диалогу поиска/замены в программе, а также:
           "\s" - заменяется на выделенный в окне редактирования текст;
           "\|" - указывает на положение каретки после вставки текста.
Примеры:
      Insert("Некая строка")
        метод заменяет выделение на указанный текст.
      Insert("<B>\s</B>", 1)
        метод добавляет к выделению текст по краям.
      Insert("\[0031 0032 0033]", 1)
        метод заменяет выделение на "123".

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 05:32 13-05-2016
gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
526549
Код:
"Вставить код спойлера" Insert(`<div style="width: 100%%;">
<div align="center" style="margin: 0 auto;" ><input style="font-size: 28px; padding: 0px;" class="btn-danger" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = '&#9650; Свернуть &#9650;'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = '&#9660; Развернуть  &#9660;'; }" type="button" value="&#9660; Развернуть &#9660;" /></div>
<br>
<div style="width: 100%%;">
<div style="display: none;">
Текст
</div></div></div>
`, 0)

З..Ы.
Я бы вот сделал:
Код:
"Вставить код спойлера" Insert(`<div style="width: 100%%;">
<div align="center" style="margin: 0 auto;" ><input style="font-size: 28px; padding: 0px;" class="btn-danger" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = '&#9650; Свернуть &#9650;'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = '&#9660; Развернуть  &#9660;'; }" type="button" value="&#9660; Развернуть &#9660;" /></div>
<br>
<div style="width: 100%%;">
<div style="display: none;">
\s  
</div></div></div>
`, 1)
Вместо "Текст" будет вставляться выделенный текст.

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 07:13 13-05-2016 | Исправлено: gyra, 09:54 13-05-2016
XenoZ



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

Цитата:
1. поиск используется стандартный или скриптовый?
2. как именно используется? например, включены ли в строку поиска регэкспы?
3. пример файла и строки поиска/замены (с указанием какие опции включены) не помешал бы для воспроизведения.

1. стандартный;
2. используемые опции:
[v] Учитывать регистр
[v] Слово целиком
Направление - С начала;
(регэкспы не используются)
3. обычный текст, можно хоть пару глав из "Войны и мира" взять. Строки поиска/замены - одно-два слова.

----------
А оно мне надо?..

Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 15:30 13-05-2016
YuS_two



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

Цитата:
1. стандартный;  
2. используемые опции:  
[v] Учитывать регистр  
[v] Слово целиком  
Направление - С начала;  
(регэкспы не используются)  
3. обычный текст, можно хоть пару глав из "Войны и мира" взять. Строки поиска/замены - одно-два слова.

Не воспроизводится:

- файл 22 Мб

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 16:58 13-05-2016 | Исправлено: YuS_two, 17:10 13-05-2016
XenoZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_two
167MB против начальных 74, по твоему - нормально? Проделай пару десятков циклов замены и посмотри на растущее потребление памяти.

----------
А оно мне надо?..

Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 18:32 13-05-2016
YuS_two



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

Цитата:
167MB против начальных 74, по твоему - нормально?

Там был поиск, после 15+ циклов - объем занятой памяти не изменялся. Только после замены объем занятой памяти стал изменяться.

Цитата:
Проделай пару десятков циклов замены и посмотри на растущее потребление памяти.

Да, есть такое дело. Причем десятки циклов не нужны, после каждого нового цикла замены объем занятой памяти увеличивается и не освобождается. Память освобождается только после закрытия документа.
Отпишите на офф. форуме, т.к. возможно, Инструктор здесь бывает редко. Если нет там аккаунта, отпишу сам.

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 18:54 13-05-2016 | Исправлено: YuS_two, 18:58 13-05-2016
XenoZ



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

Цитата:
Если нет там аккаунта, отпишу сам.

Отпиши, если не сложно.

----------
А оно мне надо?..

Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 19:34 13-05-2016
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
YuS_two
Это я уже сюда когда копипастил напутал. Изначально в проблемном коде был 1 Insert
gyra
Спасибо!
Я вижу, что была использована какая-то хитра кавычка для открытия и закрытия Insert
1)'
2)` ---эта
3)"
Я вот как то и не подумал, пользовал только кавычки 1го и 3го вида, что и вызывало ошибку.

Всего записей: 359 | Зарегистр. 20-01-2007 | Отправлено: 22:13 13-05-2016
gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
526549
Цитата:
Я вижу, что была использована какая-то хитра кавычка для открытия и закрытия Insert
Куда деваться, если другие заняты. Еще проценты (%) в коде пришлось удвоить, один теряется при вставке.
 

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 23:57 13-05-2016
ILYA_HAMSTER



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_two
Хорошо попробую обновится в воскресенье\понедельник.
http://rgho.st/7ydCGdl2q/image.png

Всего записей: 272 | Зарегистр. 03-08-2009 | Отправлено: 03:35 14-05-2016
YuS_two



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

Цитата:
Отпиши, если не сложно.

Отписал и там подсказали дельную мысль. По сути, это ведь не баг и не утечка памяти:
Количество занятой памяти увеличивается в соответствии с количеством произведенных замен, т.е. там есть прямая зависимость. AP имеет настройку лимита отмен и если он достаточно большой или не ограничен, то занятая память будет стремится к максимуму... память ведь освобождается при закрытии документа, поэтому утечкой это назвать нельзя.
 
Настройка->Параметры->Редактор 1

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 07:45 14-05-2016 | Исправлено: YuS_two, 07:47 14-05-2016
VSHY

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
526549
Ваша задача со вставкой огромного текста не для меню. Лучше её решить с помощью включения автодополнения в плагине Coder и добавлением вышеуказанного текста в раздел Blocks файла html.coder. Далее надо будет обновить кэш.
После этих действий сохраните где-нибудь свой html.coder, чтобы при обновлении он не затёрся.

Всего записей: 1090 | Зарегистр. 19-05-2008 | Отправлено: 12:22 14-05-2016
gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VSHY
Через Insert есть свои плюсы вставки, можно сразу вставить выделенный текст в нужное место кода.

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 13:30 14-05-2016
XenoZ



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

Цитата:
Отписал и там подсказали дельную мысль. По сути, это ведь не баг и не утечка памяти

Простой пример: файл на 12 MB, меняется только одно слово, само на себя.
Увеличение потребления памяти при каждом цикле замены: 37320-69560-101968-134376-166784 (kB).
Налицо или утечка или баг в алгоритме отката. При единичном изменении пожирать памяти в три раза больше, чем объем самого файла - это как-то нелогично.
И та же самая ситуация при кол-ве замен в одном цикле 100...120тыс. Создается впечатление, что при каждом цикле изменения делается полная двойная копия всего файла.

----------
А оно мне надо?..

Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 21:01 14-05-2016
YuS_two



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

Цитата:
Увеличение потребления памяти при каждом цикле замены: 37320-69560-101968-134376-166784 (kB).  
Налицо или утечка или баг в алгоритме отката. При единичном изменении пожирать памяти в три раза больше, чем объем самого файла - это как-то нелогично.

Почему нелогично? Делается снимок не только самих изменений, а всей занятой под обработку файла памяти. Закройте все файлы, посмотрите количество занимаемой памяти, откройте файл и опять посмотрите количество занятой памяти... т.е. под снимок памяти на каждую отмену будет выделяться столько же... логика присутствует.
А то, что количество выделяемой памяти больше самого файла - так ведь, кроме самого текста, необходимо сохранять и служебную информацию (работают плагины скриптов, оформления, маркёров и т.п.), это тоже логично... в общем, на баг это не похоже, но тем не менее, конечно, может быть всякое. Подождем, что скажет автор, если найдет время на проверку.

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 03:15 15-05-2016
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Программы » AkelPad (часть 1)
gyra (10-07-2017 22:07): AkelPad (часть 2)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru