Тотальная неудачница и убийца жёстких дисков.
#post-id: 2579-23-47
#original-date: 18.08.2007 Sat
#original-time: 11:47 PM
#original-day: 2579
Только что подумала и опечалилась... У меня уже наверное месяц темы глючат, а от Уважаемых Администраторов! ни каких вестей. Только некий Глюкер со мной лениво общается и похоже не верит, что проблема still exist... Ну так... Назывался глюкером...
Есть три варианта решения проблемы.
1. Простой. Сделать вид, что с темами ни каких проблем нет и продолжать заставлять народ наблюдать темы вроде "SailorMoon\\\\\,\\\\Byaka". Ну и петь песни "Ура, Админам!" в Спирите.
2. Сложный. Сохранить все файлы настроек тем, создать у себя локальную страницу, разобраться в Javasсript спагетти, которую в скриптах понаварили, понять как там устроена отправка обновлённого списка тем, поправить всё что нужно. Отправить и долго надеяться на чудо.
/* Нет, я это могу, если захочу. Но один вопрос... То что Я это могу - не повод надеяться, что это сможет любой юзер, и уж точно не повод ждать пока юзер сам это сделает. */
3. Непростой. Поудалять (если вообще получится) все темы и просить L.P.M. добавить пересоздание личных тем в клиент. Что бесперспективно и нежелатьльно, потому как по моей вине в клиент и так уже добавилось несколько бесполезных новшеств ^^'
#music: Initial D\Initial D Second Stage D Selection\Mega NRG Man / Burning Desire (New Generation mix)
#original-date: 18.08.2007 Sat
#original-time: 11:47 PM
#original-day: 2579
Только что подумала и опечалилась... У меня уже наверное месяц темы глючат, а от Уважаемых Администраторов! ни каких вестей. Только некий Глюкер со мной лениво общается и похоже не верит, что проблема still exist... Ну так... Назывался глюкером...
Есть три варианта решения проблемы.
1. Простой. Сделать вид, что с темами ни каких проблем нет и продолжать заставлять народ наблюдать темы вроде "SailorMoon\\\\\,\\\\Byaka". Ну и петь песни "Ура, Админам!" в Спирите.
2. Сложный. Сохранить все файлы настроек тем, создать у себя локальную страницу, разобраться в Javasсript спагетти, которую в скриптах понаварили, понять как там устроена отправка обновлённого списка тем, поправить всё что нужно. Отправить и долго надеяться на чудо.
/* Нет, я это могу, если захочу. Но один вопрос... То что Я это могу - не повод надеяться, что это сможет любой юзер, и уж точно не повод ждать пока юзер сам это сделает. */
3. Непростой. Поудалять (если вообще получится) все темы и просить L.P.M. добавить пересоздание личных тем в клиент. Что бесперспективно и нежелатьльно, потому как по моей вине в клиент и так уже добавилось несколько бесполезных новшеств ^^'
#music: Initial D\Initial D Second Stage D Selection\Mega NRG Man / Burning Desire (New Generation mix)
Кстати, яваскрипт-спагетти там не такое уж сложное)
Кстати, яваскрипт-спагетти там не такое уж сложное)
Лень. Тоесть влом. Влом разбираться почему не работает вэб интерфейс когда есть специальный мужик, который в саппорте сидит.
Поправила. Оказалось что тем на две больше чем в клиенте. Тоесть за соответстве ID тем назначенным на посты в клиенте и соответствие тех же ID тем же постам на сайте я не ручаюсь...
А вот почему "temp tag"'и не переименовываются - это хороший вопрос... тем более странно, что последние (э... да что там, все личные темы, но последние - за несколько прошедших дней, ну, пусть за неделю) личные темы у меня создавались из клиента и встали нормально...
Наверное это как-то связано с тем что код, отвечающий за добавление тем в список содержал ошибку. Наверное поэтому парсинг завершался ошибкой.
P.S. А как эти способы "просто, сложный и непростой" идут в порядке возрастания сложности?)
Скорее по возрастания затрат совести ^^'
значит, все равно придется на сайте править.
если импорт не идет - можно очистить tags.bin (тогда удалятся вообще все темы, и общие - ну, в постах они, конечно же, останутся и после перезагрузки встанут на место) - или удалить его, тогда при перезапуске будет скопирован файлик с общими темами... на "пустое" место должно встать нормально.
Наверное это как-то связано с тем что код, отвечающий за добавление тем в список содержал ошибку. Наверное поэтому парсинг завершался ошибкой.
посмотреть бы на этот код с ошибкой ^_^
а возможно, дело в слешах в одной из тем - может, из-за них в итоге получается некорректный JS-код и ничего не работает. (угу, в клиенте парсер пытается действовать как можно ближе к JS-скрипту, и на него этот глюк тоже распространяется...)
если импорт не идет - можно очистить tags.bin (тогда удалятся вообще все темы, и общие - ну, в постах они, конечно же, останутся и после перезагрузки встанут на место) - или удалить его, тогда при перезапуске будет скопирован файлик с общими темами... на "пустое" место должно встать нормально.
Ни чего не поняла, но буду стараться ^^
Кстати, мне показалось, что клиент ссылается в разных темах на один идентификатор. Например, я поставила тему Platform, сохранила, опять захожу, а там - Программизм... Может быть сюда и ушли темы ^^
посмотреть бы на этот код с ошибкой ^_^
Ну... Там должно быть вроде 'Byaka','Test', а получилось 'Byaka\\\\\'\\\\Test'. Уж не знаю от куда оно взялось, но так оно и есть...
Вообще, хорошо бы в клиенте маленькую табличку соответствия тем идентификаторам, в отладочных целях. /* Ага, и просмотр идентификатора поста, как это было в одной из версий ^^ */
можно открыть в Блокноте, получается достаточно очевидная картинка.=)
редактировать, правда, лучше в HEX-редакторе.)
Ага, и просмотр идентификатора поста, как это было в одной из версий ^^
где-то оно было, но исчезло, дабы никого не пугать.
я вот все размышляю над тем, чтобы дать пользователю выбор - хранить данные в бинарном формате (как сейчас) или XML =) или, может, просто импорт/экспорт XML... последнее уже давно в планах стоит, я даже хотел в 0.4.4 это сделать, но что-то совсем закрутился с этими интернет-магазинами и новым программером на работе...
Кстати, мне показалось, что клиент ссылается в разных темах на один идентификатор. Например, я поставила тему Platform, сохранила, опять захожу, а там - Программизм... Может быть сюда и ушли темы ^^
а! слушай, а ведь действительно, склеиваются, наверно. Просто там списки общих/избранных/личных идут отдельно, поэтому они и парсятся по отдельности, а потом темы с одним идентификатором "склеиваются" с объединением флагов. И в конце чистятся темы с одинаковым названием (т.к. ввод тем при создании поста, в общем-то, идет текстом, а не по идентификаторам).
Это я хотел пообещать сделать обработку такой ситуации, но подумал и понял, что не знаю, что тут можно было бы сделать ^_^"
слушай, а пришли мне код твоей страницы с темами?)
а я пока с кавычками поэкспериментирую ^_^
но на сервере тоже определенно что-то не то с темами происходит... может, это все-таки не очень хорошая идея - создавать тему, а потом сразу переименовывать - синхронизация серверов глючит?
Я открыла, было очевидно пока не добралась до какой-то каши в самом конце файла ^^
я вот все размышляю над тем, чтобы дать пользователю выбор - хранить данные в бинарном формате (как сейчас) или XML =) или, может, просто импорт/экспорт XML... последнее уже давно в планах стоит, я даже хотел в 0.4.4 это сделать, но что-то совсем закрутился с этими интернет-магазинами и новым программером на работе...
Думаю, можно не давать пользователю выбора ^^ Главное посты хранить в блоках <![CDATA[ ]]> а то тэги будут считаться частью дерева XML ^_^ Вообще, я давным давно предлагала что-то подобное, но не думала что когда-нибудь мысли об этом зародятся снова ^_^
Это я хотел пообещать сделать обработку такой ситуации, но подумал и понял, что не знаю, что тут можно было бы сделать ^_^"
Допустим, глобальный объект тем, который содержит коллекцию (это я терминами VB) пар ID - Имя. В постах ссылаться на ID тем. А при выводе в редакторе записи использовать этот объект для того чтобы заполнить список с галочками, установить нужные, а потом при сохранении ориентироваться не на список через запятую (это вообще крайне опасно), а именно на состояние галочек. Тоесть избежать манипулирования темами по именам.
может, это все-таки не очень хорошая идея - создавать тему, а потом сразу переименовывать - синхронизация серверов глючит?
А зачем вообще их переименовывать? Нельзя ли как-нибудь делать это в один приём?
а у меня нет каши =/ ну, может быть, она и появится, там первый байт - число значащих символов, потом эти символы, а потом просто "что угодно" - буфер фиксированной длины. При создании новой записи оно заливается нулями, а при копировании может быть что-то такое (если более которая строка пишется поверх более длинной, остается кусок длинной ^_^)
Вообще, я давным давно предлагала что-то подобное, но не думала что когда-нибудь мысли об этом зародятся снова ^_^
так это все оттуда! из твоего предложения.)) ну и из идеи, что "продвинутому" пользователю неплохо было бы дать возможность подправить данные, не копаясь в бинарнике...
Главное посты хранить в блоках <![CDATA[ ]]> а то тэги будут считаться частью дерева XML ^_^
когда я из PHP генерирую XML, я обычно делаю htmlspecialchars(), не люблю CDATA почему-то)
кстати, в клиенте эта функция тоже реализована...
Думаю, можно не давать пользователю выбора ^^
XML - штука оччень тормозная. Можно попробовать парсить его "ручками", исходя из идеи заранее известного формата, а если там окажется "что-то не то" - "пользователь сам виноват", но вдруг все-таки глюки будут, да и хотелось бы настоящий XML поддерживать, а не какой-нибудь псевдо-XML.)
Допустим, глобальный объект тем, который содержит коллекцию (это я терминами VB) пар ID - Имя.
В постах ссылаться на ID тем.
все верно, так и есть
А при выводе в редакторе записи использовать этот объект для того чтобы заполнить список с галочками, установить нужные, а потом при сохранении ориентироваться не на список через запятую (это вообще крайне опасно), а именно на состояние галочек.
но при этом пользователь лишается возможности вводить тэги вручную.
надо будет прикрутить-таки автозавершение названия темы и подтверждение создания новых тем, наверно...
А зачем вообще их переименовывать? Нельзя ли как-нибудь делать это в один приём?
ну... если я отправлю темы сразу с родными именами, то я не узнаю, какой теме какой ID соответствует. Парсить страницу с темами и искать новые ID по названию тем не хочу, ибо непонятно как скрипт на сервере их закодирует (были всякие глюки с кавычками, апострофами и т.д.). Можно отправлять по одной теме и смотреть, какой ID "лишний" - т.е. появился после добавления - но после аналогичных экспериментов с БИ я боюсь повторять этот прием =)) тем более, пачкой темы отправляются гораздо быстрее... А так я просто отправляю "что-то", заранее зная, что написано в начале у этого "что-то", и будучи почти уверен, что с этого же ни одна "нормальная" тема начинаться не будет)
и еще, я, кажется, нашел глюк в парсере... но подробности позже, на выходых, наверно)
Нет, точно пора переходить на XML ^^ А файлы с произвольным доступом (как раз с фиксированными записями) я сколько раз сама пыталась использовать, но они какждый раз не устраивали ^^
так это все оттуда! из твоего предложения.))
*^^*
когда я из PHP генерирую XML, я обычно делаю htmlspecialchars(), не люблю CDATA почему-то)
Мне CDATA нравится тем, что позволяет оставить текст без изменения. А то если что-то заменить, это всегда может выйти боком позже ^^
XML - штука оччень тормозная. Можно попробовать парсить его "ручками", исходя из идеи заранее известного формата, а если там окажется "что-то не то" - "пользователь сам виноват", но вдруг все-таки глюки будут, да и хотелось бы настоящий XML поддерживать, а не какой-нибудь псевдо-XML.)
Насчёт тормознутости не совсем согласна. Кроме того, именно его строгость и полезна. Например, в той же налоговой всё со скрипом переводится на XML со своего формата именно потому что XML удобнее парсить по XSD схеме ^^ Думаю, что если ты будешь использовать MSXML постоянно (логин пользователя в клиент, создался общект, загрузилось и используется по самого завершения с постоянными сохранениями), то тормозов бть не должно.
но при этом пользователь лишается возможности вводить тэги вручную.
Зато получает кнопик "Добавить тему" ^_^ Темы создаются раз в пятилетку, а ошибки встречаются гораздо чаще.
Кстати, вопрос на засыпку. Тут DDD сказал что юзает GZip с дайриками. Я на днях поставила себе NetLimiter и обнаружила (статистику не могла посмотреть ^^') сколько кушает клиент. Может быть TODO List стоит добавит что-нибудь вроде GZip? ^^
а меня они всегда устраивали и устраивают до сих пор)))
гораздо удобнее и быстрее)
Нет, точно пора переходить на XML ^^
да ладно, что тебя смущает?)
Думаю, что если ты будешь использовать MSXML постоянно (логин пользователя в клиент, создался общект, загрузилось и используется по самого завершения с постоянными сохранениями), то тормозов бть не должно.
ну... я пробовал MSXML на другом проекте (тоже клиент, но простенький, для редактирования статей и новостей на сайте) - там данные тоже получались в формате XML... но с MSXML я терял пару лишних десятков Мб памяти и парсинг шел в несколько раз медленнее (по сравнению с RegExpr). Я потом решил, что формат будет фиксированным, и парсил все это рег. выражениями...
Зато получает кнопик "Добавить тему" ^_^
но вручную вводятся не только новые темы. я сам нередко ввожу темы вручную, а не галочками...
Может быть TODO List стоит добавит что-нибудь вроде GZip? ^^
хм... стоп, @Diary.Client позаимствовал первую версию сетевого модуля от @Diary.Redesigner, а последний вполне исправно работал с gzip. То есть оно, как бы, реализовано... но я посмотрю, может, там какой-нибудь заголовок потерялся и gzip не принимается...
Не знаю ^^'
ну... я пробовал MSXML на другом проекте (тоже клиент, но простенький, для редактирования статей и новостей на сайте) - там данные тоже получались в формате XML... но с MSXML я терял пару лишних десятков Мб памяти и парсинг шел в несколько раз медленнее (по сравнению с RegExpr). Я потом решил, что формат будет фиксированным, и парсил все это рег. выражениями...
Странно. Я делаю каталог диска в XML, всё дерево строится в памяти, а потом файл сбраывается на диск, но у меня тормоза в основном связаны с чтением с диска и уничтожением тысяч объектов моего ajpFoundedFiles ^^ А про MSXML я вообще не вспоминала ^^
но вручную вводятся не только новые темы. я сам нередко ввожу темы вручную, а не галочками...
Честно говоря, такая мысль не приходила мне в голову ^^ Ибо можно ошибиться ^^
хм... стоп, @Diary.Client позаимствовал первую версию сетевого модуля от @Diary.Redesigner, а последний вполне исправно работал с gzip. То есть оно, как бы, реализовано... но я посмотрю, может, там какой-нибудь заголовок потерялся и gzip не принимается...
Вот это уж не знаю... Но мне показалось что в последнее время апетит клиента сильно вырос...
у меня как-то вообще парсинг XML - частая головная боль >.<
а вот, кстати, Flash как будто кушает XML очень быстро. Но у него такие требования к ресурсам, что, возможно, из-за этого я просто не замечаю затрат на XML... тем более, что сам в нем ничего не делаю)
Я делаю каталог диска в XML, всё дерево строится в памяти, а потом файл сбраывается на диск
Вот модификация дерева - это быстро, да. Если по одному элементу) не знаю, как там будет с перебором, когда нужно все элементы обработать, но, наверно, сравнимо. А вот сохранение... >.< А про загрузку я вообще молчу - вообще, клиент и так грузится неприлично долго сейчас...
Честно говоря, такая мысль не приходила мне в голову ^^ Ибо можно ошибиться ^^
вроде в ЖЖ так и делается )
во всяком случае, идея - оттуда)
просто иногда легче ввести, чем искать нужный пункт в огромном списке)
Вот это уж не знаю... Но мне показалось что в последнее время апетит клиента сильно вырос...
слушай, ты права, там вообще нет заголовка Accept-Encoding. Видимо, когда-то с сжатием возникли проблемы и я его отключил. Ладно, я постараюсь его включить в следующей версии (видимо, 0.4.5 будет большей частью "исправлением", а не нововведением ^_^)
Написала вчера программу для сбора ссылок из настроек ImageShack Toolbar. Храню всё в XML. Сохранение с построением дерева, конечно, умопомрачительно. А вот чтение с использованием XPath - пара пустяков ^^ Поэтому даже не знаю что и сказать ^^'
А вот сохранение... >.< А про загрузку я вообще молчу - вообще, клиент и так грузится неприлично долго сейчас...
Можно минимизировать это, если работать постоянно с объектом XML документа. Тоесть не переписывать всё в переменные настроек, коллекции постов и тому подобное, а постоянно работать через XPath и ссылки на объекты ^^
видимо, 0.4.5 будет большей частью "исправлением", а не нововведением ^_^
0.4.5 Service Release ^_^ Хорошо, будем ждать ^_^
но идея отказаться от текущей структуры мне все равно пока не нравится)
Написала вчера программу для сбора ссылок из настроек ImageShack Toolbar. Храню всё в XML. Сохранение с построением дерева, конечно, умопомрачительно. А вот чтение с использованием XPath - пара пустяков ^^ Поэтому даже не знаю что и сказать ^^'
в общем, надо пробовать и смотреть на практике, скорее всего...
0.4.5 Service Release ^_^ Хорошо, будем ждать ^_^
угу)
кстати, извини, я только сегодня смог прочитать твои комментарии в сообщ-ве разработки >.< то есть о факте трех невидимых комментов я знал, но ничего больше...
Вот с этого-то и надо было начинать ^_^
в общем, надо пробовать и смотреть на практике, скорее всего...
Кстати, когда я поборю в себе лень и сделаю сохранение постов в клиенте для Блогов (а также обработку ошибок, обработку ошибок на сервере), всё буду хранить в XML. Просто лень придумывать своё.
кстати, извини, я только сегодня смог прочитать твои комментарии в сообщ-ве разработки >.< то есть о факте трех невидимых комментов я знал, но ничего больше...
Ни чего страшного ^^
я думал, это из разряда очевидного)
Просто лень придумывать своё.
а чего там придумывать - скидывай в файл то, что в памяти находится.)
Ни чего страшного ^^
мрр)
а "ничего" все-таки слитно пишется) не то чтобы меня это задевало, но создается впечатление, что прорисовка в браузере глючит >.<
Ну... Это если есть структура и массив. А я же люблю всё в классы с кучей сервиса упаковывать ^^ Поэтому проблема сериализации для меня очень актуальна ^^
а "ничего" все-таки слитно пишется) не то чтобы меня это задевало, но создается впечатление, что прорисовка в браузере глючит >.<
Попробуй написать русский текст шрифтом MS Mincho ^_^ Думаю, после этого пробелы будут восприниматься намного лучше ^_^
хех =) не раз замечал, что более серьезные программеры любят классы =)
а у тебя по экземпляру класса прямо на каждый пост, что ли? просто непонятно, зачем оно нужно, разве что этот класс умеет сам и в окошки в форме редактирования вставляться, и HTTP-запрос генерировать...) а если один класс - ну так там, как раз, какая-то структура должна быть...
Попробуй написать русский текст шрифтом MS Mincho ^_^
попробовал)
жуть)
можно было бы, конечно, заменишь шрифт на мою любимую Verdana, но глюки в голове все равно останутся из-за разного расстояния между буквами)
Один класс, который воплощает в себе запись. А потом можно набирать коллекции объектов. Ну и можно методы вроде .InitForm(ByVal Form As frmPost) и .GetFromForm(ByVal Form As frmPost)... Просто мне так проще работать, зная что объект всё от меня скрывает и мне можно не задумываться о выделении памяти, размещении, управлении тем что внутри ^^
это действительно удобнее, но я как-то со временем пришел к мысли, что чтобы писать программы, работающие быстро, и не слишком мучаться в процессе написания, нужно иметь прямой доступ к данным и оперировать с ними непосредственно)
Да и вообще, для меня важнее понятность кода и то, что я смогу вспомнить как это всё работает где-то через годик после последнего открытия проекта. Поэтому мои программы работают не так быстро как хотелось бы. Но за всё надо платить ^^
ну... это уже дело привычки. если я сейчас стану писать классами, то, открыв этот проект через год, мне, скорее всего, захочется просто поматериться на себя прошлого) а вот открыв в августе 2007 код @Diary.Redesigner'а, который последний раз трогался в июле 2006, достаточно было просто пробежаться глазами по коду (хотя там, слава богу, всего 3000 строк функционала - все остальное суть интерфейс, всякие окошки настроек и т.д.), чтобы снова в нем ориентироваться)
В честь того, что я пишу на VB, мышление у меня до сих пор однопоточное ^^
хе... VB... в Delphi на удивление просто создавать потоки) просто пишешь наследника TThread и переопределяешь ему Execute() =) Но с сетевыми программами без доп. потоков тяжело обходиться. Мучиться с таймерами и non-blocking mode - сложнее)
WinSock Control и WinInet Control, кстати, создают для себя нить. Особенно это чувствуется со вторым. Там наверное очень хитрый маршалинг вызовов идут, поэтому всё работает, но мне от этого как-то не по себе было ^^
это уже дело привычки
Навеное ^^
Wininet - даже не знаю)
угу, я даже как-то в процессе подобных экспериментов несколько лет назад убил Винду =))
но... не знаю, как-то я писал прокси-сервер из одного потока, жутко не понравилось, даже почти поклялся больше таких вещей не писать =))
Мощно... Мне максимум удавалось убить VB из обычного кода не использующего API. Просто запускаешь EXE, он вылетает, а потом VB5.EXE не запускается. Я так и не поняла в чём там было дело, но я пыталась показать сплэш ^^
Wininet - даже не знаю)
У меня журнал ведётся из события StateChanged ^^
и что, для этого события создается отдеьный поток?
Мощно...
ну... я там с сетью упражнялся, пытаясь отправить максимум запросов в секунду... в результате - синий экран, после перезагрузки не работает сеть (вообще - локальные соединения не открываются, попытка дозвониться провайдеру оканчивается таймаутом)... потом я попытался порыться в настройках и оно вообще перестало загружаться. Решилось дело переустановкой) Самое удивительное, что это не какая-нибудь win95 была, а win2000, которую специально обрушить мне не удалось )