Автор |
Тема: loadbin 4.21 для 2-х пользователей (Прочитано 8782 раз) |
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
Вот хотел упорядочить extrd.dat силами сервера. Обнаружилась неприятная вещь: Тестовая форма: f1=[dir 0]+'extrd.old' f2=[dir 0]+'extrd.new' \>file f2 loadbin f1 LX=[ged 'lb.N'] ^^^^^^^^LX for i=1 to LX ST=[ged 'lb.'+[intsn i]] printstr ST to file f2 endfor перезапись выполнена!!! stop Результат выполнения разный Размер extrd.old 103775232 байта Размер extrd.new после каждого выполнения разный: 1 103773080 2 103773504 3 103772928 Это ошибка сервера или данные глотаются на этапе записи в файл?? После каждого выполнения сервер перезагружался!!! Вечером попробую дома (этот пример выполнялся на удаленном сервере, где windows запущен виртуально под WMWARE).
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #1 В: 20.03.13 в 22:51:12 » |
Цитировать | Править
|
20.03.2013 22:43 156 187 136 extrd.dat 20.03.2013 21:33 2 695 872 extrd.new 20.03.2013 20:51 2 695 872 extrd.NEW1 20.03.2013 21:55 115 332 352 extrd.new110 20.03.2013 22:28 115 332 352 extrd.new110-2 20.03.2013 22:43 115 332 352 extrd.new110-posle_restarta 20.03.2013 19:17 2 695 936 extrd.OLD 11.03.2013 15:38 2 695 680 extrd.ORIDAT 13.02.2013 15:15 115 332 352 extrd.test110 Напугали, скорее всего ваша виртуальность сыграла.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #2 В: 22.03.13 в 11:25:33 » |
Цитировать | Править
|
Вопрос снимается это были проблемы с Виндой под wmware Кому интересно вот форма, преобразующая extrd.dat, в удобоваримый формат для просмотра и редактирования в far: (перед запуском формы скопируйте extrd.dat в extrd.old в рабочем каталоге базы) *Упорядочивание extrd.dat *.on *,off f1=[dir 0]+'extrd.old' f2=[dir 0]+'extrd.new' \>file f2 loadbin f1 LX=[ged 'lb.N']+0.1 sl=0;SS=0 for i=1 to LX ST=[ged 'lb.'+[intsn i]] for k=1 to [length ST]+0.1 sl=sl+1 if sl=256 if SS=0 SS=[ch 10] else SS=SS+[ch 10] endif sl=0 else if SS=0 SS=[cp ST,k,1] else SS=SS+[cp ST,k,1] endif endif if [length SS]=250 printstr SS to file f2 SS=0 endif endfor endfor if SS<>0 printstr SS to file f2 endif перезапись выполнена!!! stop Полученный extrd.new в fare можно редактировать, удаляя мусор построчно (1 строка =1 запись) PS. Прошу прощение за ложное сообщение об ошибке. (сохраняйте оригинальный extrd.dat перед манипуляциями с ним )
|
|
Зарегистрирован |
|
|
|
Vladimir
Я люблю этот Форум!
Просмотреть Профиль | WWW |
Сообщений: 264
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #3 В: 14.05.13 в 05:10:15 » |
Цитировать | Править
|
Денис, спасибо за форму. Я понимаю, что после редактирования файл EXTRD.NEW вручную переименовывается в EXTRD.DAT, который правильно воспринимается программой? А вы не пробовали XDEDIT.EXE? После того, как я воспользоваля вашим алгоритмом, я обнаружил колоссальное количество записей такого вида: 93_153_215_26_052658.a1.120 S=GD 93_153_215_26_052658.a1.121 S=GD 93_153_215_26_052658.a1.122 S=GD 93_153_215_26_052658.a1.123 S=GD 93_153_215_26_052658.a1.124 S=GD 93_153_215_26_052658.a1.125 S=GD похоже что это результат работы NULLCG.CGI. Их очень много и удалять руками затруднительно. Кто-нибудь может посоветовать, как организовать подчистку (обнуление) таких записей?
|
|
Зарегистрирован |
С уважением, Владимир
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #4 В: 14.05.13 в 12:13:12 » |
Цитировать | Править
|
Как это было давно, рекомендую к прочтению архивы ПП, сколько вопросов порешали..., с версии 3.14 есть такое: IV) Пpи стаpте Сеpвеp пpоходит тепеpь так называемую R-фазу. Пpи этом файл extrd.dat пеpеписывается на новое место, и из него удаляются записи с нулевыми значениями. Зачитайте loadtxt полученный файл (конечно если сразу не хотите или не можете), обнулите всё что считаете нужным удалить, не забудьте обнулить свой вызов loadtxt от 1 до [ged 'lt.N'] и конечно перезапустить сервер.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #5 В: 14.05.13 в 13:59:08 » |
Цитировать | Править
|
Правильно extrd.new можно переименовать extrd.dat и подкинуть в рабочую базу Не люблю пользоваться сторонними *.exe, если можно не особо напрягаясь написать самостоятельно и подправить под собственные нужды. Loadtxt использовать необязательно. Сам использовал полученный файл для определения ненужных индексов (у меня много индексов используется как служебные для переноса данных между формами и мне проще отследить их в полученном файле, чем копаться в формах и искать что я там использовал, к тому же за несколько лет там накопились остатки экспериментов , которых по другому не найти) Потом писал простейшую форму типа [sed ID,0] и рестарт сервера для удаления нулевых записей. В Вашем случае форма имеет вид: for i=0 to 999 for j=0 to 9 ID='93_153_215_26_052658.a'+[intsn j]+'.' if i<10 ID=ID+'00'+[intsn i] elseif i<100 ID=ID+'0'+[intsn i] else ID=ID+[intsn i] endif if [ged ID]<>0 [sed ID,0];endif endfor endfor stop Можно вложить еще несколько переборов чтобы проверить все варианты индексов Если индексы единичные, то удалял руками : Ctrl+Y замечательно удаляет строчку в Far Таким образом за несколько часов я уменьшил свой extrd.dat c 3.5 gb до 1.5 gb (2 gb мусора было удалено для запуска новогоднего адаптера ) Удачи в очистке
|
« Изменён в : 14.05.13 в 14:09:28 пользователем: Denis, Dnepropetrovsk » |
Зарегистрирован |
|
|
|
Vladimir
Я люблю этот Форум!
Просмотреть Профиль | WWW |
Сообщений: 264
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #6 В: 14.05.13 в 17:06:30 » |
Цитировать | Править
|
on 14.05.13 в 13:59:08, Denis, Dnepropetrovsk wrote: Можно вложить еще несколько переборов чтобы проверить все варианты индексов |
| Спсибо, Денис, за ответ. Всегда приятно, когда тебе помогают и делом и советом. В общем-то так и мыслилось. Ситуация, правдя, усугубляется тем, что IP много и разные. Хорошо, что мир еще не перешел на IPv6, а то перебирать пришлось бы многовато
|
« Изменён в : 14.05.13 в 17:10:25 пользователем: Vladimir » |
Зарегистрирован |
С уважением, Владимир
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #7 В: 14.05.13 в 19:22:55 » |
Цитировать | Править
|
on 14.05.13 в 13:59:08, Denis, Dnepropetrovsk wrote: for i=0 to 999 for j=0 to 9 ID='93_153_215_26_052658.a'+[intsn j]+'.' if i<10 ID=ID+'00'+[intsn i] elseif i<100 ID=ID+'0'+[intsn i] else ID=ID+[intsn i] endif if [ged ID]<>0 [sed ID,0];endif endfor endfor stop |
| Выделенные строки - очень слабенькие. Удивлен, что с гигами играетесь при этом. Подправьте плз., здесь ведь бывает взыскательная публика, а не только жаждущие любой конкретики. p.s.1. если не затруднит, параметры серверной машины и время R-фазы, очень интересно.
|
« Изменён в : 14.05.13 в 20:01:21 пользователем: Boris, Kiev. » |
Зарегистрирован |
|
|
|
Vladimir
Я люблю этот Форум!
Просмотреть Профиль | WWW |
Сообщений: 264
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #8 В: 15.05.13 в 05:10:31 » |
Цитировать | Править
|
on 14.05.13 в 19:22:55, Boris, Kiev. wrote: Выделенные строки - очень слабенькие. |
| Любая конкретная помощь, даже написанная на скорую руку, лучше отсылки к руководству. "Слабенькие" они или нет, не столь важно. Важно то, что они решают конкретную задачу. Человеку, занятому конкретным делом, надо выдавать результат. "Взыскательной" же "публики", Борис, тут становится все меньше. Я, вообще, "публики" не вижу. Полагаю, что одной из причин снижения активности являются зачастую резкие и не дружелюбные комментари с вашей стороны.
|
« Изменён в : 15.05.13 в 05:19:06 пользователем: Vladimir » |
Зарегистрирован |
С уважением, Владимир
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #9 В: 15.05.13 в 07:19:42 » |
Цитировать | Править
|
Лирическое отступление: ПП не для скорой помощи «человекам, занятым конкретным делом», для скорой помощи есть e-mail. «Конкретные люди» как правило платят нашим настройщикам деньги, а не расписывают свои проблемы в ожидании их решения на нашем ПП. Увы, на ПП предполагается общение коллег . Моя лично задача на ПП, не опустить уровень текстов ниже своего, заставить настройщика-коллегу подумать ещё раз перед тем как выбросить что-либо на публику. Кто-нибудь напишет лучше, нет проблем, с местом, званием, любыми текстами, ведь уясните, мы, которых на ПП с конца 90-ых здесь уже нет, просто физически отходим, а болото оставлять не хочется. Не держите зла, расслабьтесь, никто оценок Вам не ставит, больше думайте о сути ФБП-вопросов. Если Денис заснул, то ничего страшного, проснется, может и удивит чем, а может и просто скажет, «поторопился, сорри» или что-то в этом роде. P.S. Vladimir(у), если отвечать, то плз. по существу вопроса. Хватит лирики. Спасибо.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #10 В: 16.05.13 в 10:44:40 » |
Цитировать | Править
|
Извините за задержку.. Я сюда не каждый день захожу просто... Пример формы писал 3 мин. в момент ответа и не проверял ее даже. Тут просто показан принцип очистки, который сам использовал. Параметры машины для Бориса: core i5-2500K 16 GB RAM OS Windows 2008 Enterprise SP2 Винт 500 гб WD5000AAKX Текущий размер Extrd.dat 2.1 Gb Крутится одновременно 4 сервера (3 вспомогательных значительно скромнее основного) Запуск серверов в автозагрузке. Время R-фазы специально не замерял, но мин. через 15-25 после рестарта все сервера работают. Сам компьютер перезагружается раз в месяц (1-го числа каждого месяца для возможности регистрации операции в новый месяц, ну или при сбое питания.)
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #11 В: 16.05.13 в 12:47:03 » |
Цитировать | Править
|
Спасибо, приятно, что такие громоздкие базы крутятся и даже без примочек по дискам. Будет время, просто засеките R-фазу. Интересно. По поводу писем на ходу и наглядности, понятно, но Вы дали пищу для разбора алгоритма, т.к. уж очень наглядно можно и нужно показать как можно и как надо писать строчки кода, чтобы почти в два раза быстрее чистить Extrd.dat(и не только): Вpеменной пpофиль фоpмы %_0 Количество выполнений: для фоpм не запоминается. На это количество выполнений потpебовалось 84 мс = 100% Распpеделение вpемени по стpокам исходного текста в относительных %, и мс: ~ ~I 0001 * Денис, Днепр. ~ ~I 0002 пример того, как не надо писать циклы и вставлять условия внутрь циклов, если есть возможность этого не делать. ~ ~I 0003 for i=0 to 999 ~ 4I 0004 for j=0 to 9 ##### 26.2% 22I 0005 ID='92_153_215_26_052658.a'+[intsn j]+'.' ~ 3I 0006 if i<10 ~ ~I 0007 ID=ID+'00'+[intsn i] ~ 3I 0008 elseif i<100 ~ ~I 0009 ID=ID+'0'+[intsn i] ~ ~I 0010 else ##### 27.4% 23I 0011 ID=ID+[intsn i] ~ 1I 0012 endif ###### 29.8% 25I 0013 if [ged ID]<>0 [sed ID,0];endif ~ 1I 0014 endfor ~ 2I 0015 endfor Вpеменной пpофиль фоpмы %_1 Количество выполнений: для фоpм не запоминается. На это количество выполнений потpебовалось 51 мс = 100% Распpеделение вpемени по стpокам исходного текста в относительных %, и мс: ~ ~I 0001 * ПРИМЕР ~ ~I 0002 ~ ~I 0003 пример того, как надо писать циклы и обходиться без использования условий. ~ ~I 0004 L1='93_153_215_26_052658.a' ~ ~I 0005 for j=1 to 10 [A j,L1+[intsn (j-1)]+'.'];endfor ~ 1I 0006 for i=0 to 999 ~ 4I 0007 IL=[cp [intsn(1000+i)],2,3] ~ 4I 0008 for j=1 to 10 ###### 33.3% 17I 0009 ID=[A j]+IL ######### 49.0% 25I 010 if [ged ID]<>0 [sed ID,0];endif ~ ~I 0011 endfor ~ ~I 0012 endfor
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: loadbin 4.21 для 2-х пользователей
« Ответить #12 В: 17.05.13 в 11:15:50 » |
Цитировать | Править
|
Борис специально для Вас измерил время R-фазы После w on w off R-фаза длилалсь примерно 2.5 мин. По поводу оптимального написания форм Лично мое мнение, нужно учитывать для чего пишется форма и как ее используют. Из особо нагруженных форм нужно выжимать из алгоритма все, чтобы форма выполнялась быстрее. А для такой одноразовой формы как в примере такой прирост скорости себя не окупает... (к тому же у Вас алгоритм перебора слегка изменен поэтому вы тестируете не только использование условий хотя вариант [cp [intsn 1000+j],2,3] конечно оптимальнее ) А вообще таким образом перебрать все IP в приемлемое время не получится ни моим ни Вашим алгоритмом.. Так что если уж чистилку универсальную делать, тогда вариант без Loadtxt не пройдет. Придется Loadtxt-ом грузить extrd.new выделять индекс и проверять индекс по какому-то условию (например если в индексе встречается 4 раза '_' и в остатке строки после 4-го подчеркивания встречается '.a' , то 99.9% что этот индекс можно обнулять)..
|
|
Зарегистрирован |
|
|
|
|
|