Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

Получение имени метода   Найти похожие ветки 

 
Maaacheba   (2009-02-16 19:52) [0]

Как внутри метода получить имя метода?
Пример:

function TMyClass.Blabla: bool;
begin
 ...
 showmessage(X);
end;

Вот X должен быть равен: "TMyClass.Blabla" в данном примере.

Причем, определяться динамически, чтобы независимо от того, переименуют потом TMyClass или само название метода Blabla или нет.

Ну "TMyClass" можно получить сделав Self.ClassName, а вот имя метода?

P.S. Чтобы в лог писать название метода и код был одинаковый, независимо от метода.


 
Сергей М. ©   (2009-02-16 19:55) [1]

Считай что никак.
Частные случаи, коих по пальцам пересчитать, не расматриваем - при такой постановке они что мертвому припарка.

p.s.
Начал за здравие, а заканчиваешь за упокой, агрессивный ты наш ?)


 
Eraser ©   (2009-02-16 19:55) [2]

> [0] Maaacheba   (16.02.09 19:52)

нужно использовать спец. средства для получения стека вызова + map-файл.


 
@!!ex ©   (2009-02-16 20:22) [3]

FreePascal умеет это делать.
Есть спец средства для Delphi.


 
Maaacheba   (2009-02-16 22:02) [4]

Сергей М. ©   (16.02.09 19:55) [1]
Начал за здравие, а заканчиваешь за упокой, агрессивный ты наш ?)


нет, просто жду, когда ветку по обыкновению перенесут в "Начинающие". Предыдущий вопрос по БД перенесли, хотя никто так и не написал решения, а знакомый многим известный мастер дельфи (тут такое звание) сказал, что не знает как решить задачу в один запрос.


 
Джо ©   (2009-02-16 22:09) [5]


> Maaacheba   (16.02.09 22:02) [4]
> нет, просто жду, когда ветку по обыкновению перенесут в
> "Начинающие"

Перенесут — сразу же закрою.
Ибо ответы не читаем.


 
Cobalt ©   (2009-02-16 22:40) [6]

2 Maaacheba
По тому вопросу с БД - отчего бы не сделать View, где Activity<>0


 
oxffff ©   (2009-02-17 11:30) [7]


> Maaacheba   (16.02.09 19:52)  


Зайди на
http://santonov.blogspot.com
For russian fellow Maaacheba or getting method name dynamically

Это черновой вариант. Но работающий.


 
Maaacheba   (2009-02-17 12:04) [8]


> Ибо ответы не читаем.


процитируй, пожалуйста, ответ на мой вопрос? Я честное слово не замечаю его в данной ветке.


> По тому вопросу с БД - отчего бы не сделать View, где Activity<>0


скулайт не поддерживает view. Ну да и это уже не важно, проблему я решил по-другому.


 
Maaacheba   (2009-02-17 12:35) [9]


> Зайди на
> http://santonov.blogspot.com


идея понятна. Правда, я на D7 работаю...

Наверное, все таки этот код можно отнести к хакерскому, думаю, не оценят такое в проекте. Сделаю тупо:

function TMyClass.BlaBla... ;
const
 cSelfName = ".BlaBla";
begin
 ...
 AddToLog(Self.ClassName + cSelfName);
end;


Даже если метод потом переименуют, а константу переименовать забудут, то фиг с ним, по логам думаю поймут какая функция имелась в виду "старая".


 
Maaacheba   (2009-02-17 12:36) [10]

кстати, на твоем блоге форматирование не работает (по крайней мере у меня на IE 6), читать так, конечно, не ахти удобно )


 
oxffff ©   (2009-02-17 12:47) [11]


> идея понятна. Правда, я на D7 работаю


Фундаментальной  разницы нет.


> думаю, не оценят такое в проекте.


А судьи кто?


 
Maaacheba   (2009-02-17 13:16) [12]


> Фундаментальной  разницы нет.

ну ты там просто хелперы использовал, я про это.


> А судьи кто?

вышестоящее начальство, да и я сам.

Понимаешь, я просто не могу быть уверен, что данный код сработает на всех D, в том числе будущих. А если изменят смещения, поменяют формат там VMT, еще что придумают? Я даже не уверен, совместимо ли это все с начиная D5 и заканчивая D2009. А ведь будет D2010 или что там...

Тот же ClassName я знаю, даже если поменяется концепция, соответствующим образом и поменяют реализацию ClassName. А данный код нативно будет перетащен, и если вдруг начнутся глюки... А начатся они могут очень неприятные.. Хотя по идее даже если указатель будет определен неправильно, то MethodName просто вернет пустую строку... Но тем не менее. Я свое мнение высказал.
Я сожалею, если написание данного примера отняло у тебя время впустую.


 
oxffff ©   (2009-02-17 14:25) [13]


> Понимаешь, я просто не могу быть уверен, что данный код
> сработает на всех D, в том числе будущих. А если изменят
> смещения, поменяют формат там VMT, еще что придумают? Я
> даже не уверен, совместимо ли это все с начиная D5 и заканчивая
> D2009. А ведь будет D2010 или что там...


Я все понимаю, однако остаюсь при мнении, что если ты прекрасно разбираешься во внутреннем устройстве, то проблем не будет.
Тебе никто не мешает использовать например

1. Директивы условной компиляции.
2. Возврат nil, если неизвестный метод вызова не поддерживается.
3. Более глубокий обратный анализ на несколько инструкций выше.
4. Другой способ решения.

Что касаемо VMT, то менять схему вызова не будут, ибо прощай полиморфизм для legacy кода.


> Я даже не уверен, совместимо ли это все с начиная D5 и заканчивая
> D2009. А ведь будет D2010 или что там...



> Я сожалею, если написание данного примера отняло у тебя
> время впустую.


Работа нейронной сети мозга полезна всем.


 
Johnmen ©   (2009-02-17 14:43) [14]


> Maaacheba   (16.02.09 22:02) [4]
> Предыдущий вопрос
> по БД перенесли, хотя никто так и не написал решения, а
> знакомый многим известный мастер дельфи (тут такое звание)
> сказал, что не знает как решить задачу в один запрос.

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


 
Maacaheba   (2009-02-17 16:39) [15]


> А во-вторых, та проблема с дырками абсолютно надуманна.
> Тобой

ладно, поскольку эту ветку мне уже не жалко, тут все понятно, давай пофлудим, уважаемый Johnmen.

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

Но на DM не принято уточнять, это здесь низко. Это означает, что отвечающий чего-то может не знать, это нельзя допускать ни в коем случае. Поэтому ты никогда не спросишь тихо мирно "а зачем нужно искать дырку"? Ты сразу заявишь, что поиск дырки - это дебилизм, видимо, рассмотрев все возможные в этой галактики варианты зачем нужен поиск такой дырки.

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

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

Я не агрессивен, я проявляю агрессию иногда в ответ на агрессию. Ты давно не задавал вопросов, более того мы оба знаем, что если ты решишь задать вопрос по программированию - этот сайт будет, наверное, последним местом, куда ты пойдешь. и ты это знаешь. Мне МОДЕРАТОРЫ и Мастера Дельфи с этого сайта рекомендуют задавать вопросы в другом месте, о чем разговор? Тут принято толпой втирать вопрошающему, что он лох, что он ничего не понимает, что он - говно.

Один раз я запостил вопрос в два форума - здесь и на iXBT. Вопросы дубликаты. И там, и здесь мой ник никому ничего не говорил, условия - одинаковые.
На iXBT я получил пару ответов, все по теме, один ответ полностью разрешал проблему.
Здесь я получил ДЕСЯТЬ ответов, девять были про то, что автор - лох, вопросы задавать не умее и ваше недочеловек таких-надо-расстреливать. И один ответ с верным решением.
Тут соседом моя ветка про привязку к железу. и что? Почти все отвечающие проявили полное незнание в вопросе. Вот реально, это факт - почти никто из отвечающих нихрена не понимает в привязке железа. Точнее, понимает точно также как и я, чисто из логических обобщений, но опыта нет ни у кого. Ни у кого нету опыта написания, а потом эксплуатации программы с привязкой к железу.
Но каждый не применул понтонуться своим гениальными идеями, пальцы веером "я все знаю" при том, что по делу слов НОЛЬ. Два красавца в той теме - Юрий Зотов, который, видимо, тоже особо опытом не обладает или не захотел им делиться, но он и не понтанулся насколько он грамотен в этой области, высказал свое мнение и не стал продолжать флуд. И еще Алекс Коншин, конечно, он написал один маленький абзац, но в этом абзаце пользы для меня больше, чем от всех остальных сотни постов. И видно - человек ИМЕЕТ опыт написания таких программ, да это и понятно если у него на сайте спец. модуль для этого. Ну это - видно, это вот - спец, а это - флудер.

Есть горстка людей, которые никогда не пробовали или пробовали давно задавать здесь вопросы. Они привычно отвечают, привычно стебутся и могут в общем не замечать сложившейся атмосферы (хотя это трудно не заметить). Я так понимаю, что началось все со стеба над студентами, которые реально нагло хотели чтобы другие делали за них работы, готовое приложение. Но потом это перешло на все, на абсолютно все. Любой вопрос воспринимается как попытка схалявить, ведь есть гугол! Может быть, но нафига тогда форум вообще нужен? Тут за последние пару лет я уверен не был задан ни один вопрос, который не обсуждался бы где-нибудь в другом месте в интернете (особенно, на англоязычных форумах).
Есть избранные люди, которые адекватно независимо от пола, рейтинга здесь и других параметров отвечают и помогают. Но таких просто единицы и они !ЗАМЕТЬТЕ! точно также сваливают с форума из-за ужасной атмосферы. Икона здесь - Юрий Зотов. Но и он уже сколько раз говорил, что ему тупо противно читать здешние посты.

Лично я не хватаю звезд с небес, но я знаю, что я достаточно толковый программер по сравнению со среднестатическим большинством. Но и мне в каждой второй ветке выносят вердикт "имбецил, ничего не понимающий в программировании". Тут практически нереально задать вопрос и получить адекватный ответ. Только в одном случае - если человек реально НИ-ЧЕ-ГО не понимает в программировании и абсолютно все ответы съедает как истину. Но не дай бог сказать что-то против отвечающих или подвергнуть критике их ответы. Дальше мгновенно разворачивается бой, причем принято бросаться всей толпой, даже если люди из этой толпы враждуют друг с другом. Единственный вариант - это по уровню быть выше на голову всех отвечающих, только в таком случае есть шанс заткнуть всех и выйти победителем. Но нахрена это кому надо и нафига при таких знаниях вообще задавать вопросы - непонятно. Поэтому их и нету.

Фуф. Надоело писать, высказался.


 
Eraser ©   (2009-02-17 16:45) [16]

> [15] Maacaheba   (17.02.09 16:39)

чудо, я тебе 2 раза подсказал (и не только я) единственное более/менее общее решение. чукча не читатель? чего обижаться тогда.


 
Maaacheba   (2009-02-17 16:50) [17]


> чудо, я тебе 2 раза подсказал (и не только я) единственное
> более/менее общее решение

ты про привязку к железу?

1) у тебя нет НИ ОДНОГО поста в той ветке, обращенные ко мне
2) ты не сказал НИ ЕДИНОГО слова про привязку к железу.

Но ты считаешь, что все мне объяснил, а я тупой не понял. Вот откуда это берется именно на этом форуме - я не понимаю...


 
Petr V. Abramov ©   (2009-02-17 16:52) [18]


> Maacaheba   (17.02.09 16:39) [15]


> Поэтому ты никогда не спросишь тихо мирно "а зачем нужно
> искать дырку"?

в той ветке вопрос "зачем" был задан в посте [9]
задан был потому, что поиск дырок в 99% возникает в результате ошибок проектирования. Попадешь ты в оставшийся 1% - неясно, может, да (скорее всего, экзотическая задача), а может, и нет, из [15] этой ветки все равно неясно, зачем их искать, я б еще понял, если б надо было найти минимальный из удаленных.


 
Eraser ©   (2009-02-17 16:52) [19]

> [17] Maaacheba   (17.02.09 16:50)

я про эту ветку и про её дубликат несколько дней назад.


 
Maaacheba   (2009-02-17 17:02) [20]


> в той ветке вопрос "зачем" был задан в посте [9]

да, MsGuns на удивление нормально спросил, но следующим постом он дал понять, что имеет в виду хранимку, а этого в скулайте нету. Поэтому я и не стал объяснять, чтобы избежать мгновенных ответов "ты дурак и система спроектирована по дурацому".


> задан был потому, что поиск дырок в 99% возникает в результате
> ошибок проектирования. Попадешь ты в оставшийся 1% - неясно

вот именно, что неясно. Нет бы сначала уточнить, если ты думаешь что ищутся дырки в PK. Нет, надо сразу заявить, что проблема дырок - это туфта из под ногтей.

Заметь, Джохмен уже даже после полной ТОЙ ветки и здесь заявляет:

>А во-вторых, та проблема с дырками абсолютно надуманна. Тобой

Посмотри его пост [14] в ЭТОЙ ветке. И ему все равно, главное в мозгу сформировать мнение, что вопрошающий - лох. Здесь такое отношение культивируется, это нормально разговаривать с автором вопроса как с лохом, это берется по-умолчанию.

Логика, видимо, проста - "90% что автор ошибся с поиском дырки, 10% что у него экзотическая задача. Ну поскольку автор лох, то он полюбому в этих 90%". И все, телепаты отдыхают.


 
Petr V. Abramov ©   (2009-02-17 17:07) [21]


> Maaacheba   (17.02.09 17:02) [20]


> Поэтому я и не стал объяснять, чтобы избежать мгновенных
> ответов

таки именно поэтому не избежал

> Нет бы сначала уточнить, если ты думаешь что ищутся дырки
> в PK.

так пытался же уточнить.
не в PK искать дырки тоже неясно зачем


 
Maaacheba   (2009-02-17 17:15) [22]


> не в PK искать дырки тоже неясно зачем


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


 
Petr V. Abramov ©   (2009-02-17 17:18) [23]


> Maaacheba   (17.02.09 17:15) [22]

> дырка нужна для присвоения визуального номера клиента
других способов присвоить визуальный номер нету, я понял


 
Johnmen ©   (2009-02-17 17:23) [24]


> Maacaheba   (17.02.09 16:39) [15]

Мне видится несколько аспектов...
Во-первых, судя по твоему высказыванию, ты испытываешь некое (не буду говорить, что противоестественное :)) удовольствие, когда "девять были про то, что автор - лох, вопросы задавать не умее и ваше недочеловек таких-надо-расстреливать". Иначе зачем было дублировать сюда кроме ИксБэТэ, раз там ответы тебя удовлетворяют? Или это ты проводишь такой конкурс форумов сайтов? :)
Во-вторых, только я знаю, что задать вопрос по программированию - этот сайт будет наверняка первым местом, куда я пойду. Другое дело, что это будет самый крайний случай, когда ни личный опыт, ни консультации с коллегами, ни гугль не помогли. Как ты точно подметил, последние, как минимум, два года такого не было.
В-третьих, дар телепатии и ощущение чего стОит спрашивающий (или отвечающий) вырабатывается с годами. Это факт. Отсюда и отношение...
В-четвертых, на форумах дельфимастера реально получить ответ на реальный вопрос, сколь бы сложным он ни был. Для этого надо, чтобы вопрос был ВОПРОСОМ, а не чем-то другим. И спрашивающий всё же должен быть адекватным...
Ну и в-пятых, по теме дырок. Мой опыт говорит, что проблема "дырок" это проблема кривого проектирования. И единственное применение бывает, когда грамотный программист пытается распрямить накосяченное криворукими. Причем эта работа одноразовая. Судя по твоему беглому описанию ты вообще замешивашь в кучу хранение, обработку и отображение. А за это, в приличном обществе, отрывают руки и делают лоботомию :)
Поэтому, если тебе всё ещё интересна данная тема, приводи ПОДРОБНОЕ и КОНКРЕТНОЕ изложение твоей проблемы, в которой, как тебе кажется, не обойтись без выявления "дырок". Я докажу тебе, что ты неправ изначально.


 
Сергей М. ©   (2009-02-17 17:27) [25]


> я достаточно толковый программер


Что ж тогда ты, толковый, тему и вопрос свои формулируешь как бестолковый ?


> Получение имени метода



> Как внутри метода получить имя метода


Ты даже не поинтересовался, какие идентификаторы и при каких условиях дельфийский компилятор-линкер включает в объектный и результирующий код !

Так ведь нет ! Ты же уверен что оно там безусловно есть, и дело за малым - узнать как его достать..


 
Плохиш ©   (2009-02-17 17:36) [26]

аФФтар - молодец! Раскрутил мастеров на "слабо" :-))


 
Сергей М. ©   (2009-02-17 17:38) [27]


> Maaacheba


И к вопросу о "дырках" ты подошел точно так же - мол, не учите меня жить, я и без вас знаю все про правильное "житие мое", лучше помогите дырку найти)


 
Petr V. Abramov ©   (2009-02-17 17:38) [28]


> Сергей М. ©   (17.02.09 17:27) [25]


> оно там безусловно есть,

причем

> на всех D, в том числе будущих

:)


 
Maaacheba   (2009-02-17 17:45) [29]


> Поэтому, если тебе всё ещё интересна данная тема, приводи
> ПОДРОБНОЕ и КОНКРЕТНОЕ изложение твоей проблемы, в которой,
>  как тебе кажется, не обойтись без выявления "дырок". Я
> докажу тебе, что ты неправ изначально.

давай.

Есть номер клиента, обычное число. Есть граница времени (обычно это ночью), после которой нужно "обнулить" номера клиентов и начать присваивать с наименьшего неиспользуего номера.

Расскажи, пожалуйста, в чем я неправ изначально, если хочу найти наименьший неиспользуемый среди клиентов номер на текущий момент.


 
Petr V. Abramov ©   (2009-02-17 17:51) [30]


> Maaacheba   (17.02.09 17:45) [29]


> хочу найти наименьший неиспользуемый среди клиентов номер
> на текущий момент.

вот, это уже более-менее понятная, хоть и немного экзотичная задача. И, заметь, в ее формулировке ни слова про дырки :)


 
Riply ©   (2009-02-17 17:51) [31]

> [15] Maacaheba   (17.02.09 16:39)
> ладно, поскольку эту ветку мне уже не жалко, тут все понятно, давай пофлудим, уважаемый Johnmen.

Меня пофлудить не пригасили, а так хочется, посему воспользуюсь случаем.
Maacaheba, выводы "о твоем уровене" напрашиваются сами собой исходя из твоих вопросов и постов,
на которые тебе уже неоднократно указывали и даже объясняли почему.
А из обиды, что ветку переместили в "начинающие", так же напрашивается вывод и о возрасте.

Но это ответы на твои вопросы и упреки, а не та тема, на которую я хотела пофлудить :)
А тема вот какая: почему человек, только что пришедший на форум, считает, что он имеет
право сходу навешивать ярлыки на других, обучать как надо задавать вопросы и как надо отвечать на них,
и какой устав пристало использовать в данном монастыре ?
И когда, после таких нравоучений, он не получает то что хотел, начинает кричать о том
что здесь никто не в состоянии решить его задачу и о том как нравственно-низко пали участники данного форума ?
Кроме того, что это просто некрасиво, это еще и нелогично.
Ты ведь даже не попытался попробовать найти другую причину происходящего.


 
Maaacheba   (2009-02-17 18:00) [32]


> И, заметь, в ее формулировке ни слова про дырки :)

заметь, я сформулировал таким образом, что ответ на мою формулировку был бы ответов и на мою задачу.


> А тема вот какая: почему человек, только что пришедший на
> форум, считает, что он имеет

тема в другом - тут каждый мнит себя телепатом


> Ты ведь даже не попытался попробовать найти другую причину
> происходящего.

ну про телепатов уже сказал.
А по сабжу - пытался. И МОДЕРАТОР с этого форума мне сказал - перестань заниматься мазохизмом, задавай вопрос в других местах, здесь уже все давно заметили эту особенность форума.


 
Maaacheba   (2009-02-17 18:01) [33]

с нетерпением жду ответа Johnmen, чтобы он мне доказал, что я был неправ изначально.


 
pasha_golub ©   (2009-02-17 18:22) [34]

А почему не Morcheeba? Прикольный коллектив. Особенно альбом The Antidote.

А для задачи своей попробуй использовать EurekaLog (http://www.eurekalog.com/). Там очень много можно достать, включая стек вызовов да и кучу разной другой инфы. Моя довольна Еврекой.


 
pasha_golub ©   (2009-02-17 18:26) [35]

А атмосфера форума (пусть может в чем-то автор и прав, может даже во многом) стимулирует делать правильную и четкую постановку вопроса, чтобы комар носа не подточил. Это мне нравится. Это приучает к порядку в голове, прежде всего своей.


 
Petr V. Abramov ©   (2009-02-17 18:34) [36]


> Maaacheba   (17.02.09 18:01) [33]

могу поработать за Johnmen
Ошибка у тебя в том, что изначально номера идут от вольного, а не подряд. Если ее исправить, то "дырки" будут возникать только в результате логического удаления, и мин. номер выбирается как
select min(num) from tbl where del_flag = 1 безо всяких извращений.


 
Maaacheba   (2009-02-17 18:46) [37]


> А атмосфера форума (пусть может в чем-то автор и прав, может
> даже во многом) стимулирует

посещать другие форумы.


> Ошибка у тебя в том, что изначально номера идут от вольного,
>  а не подряд

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

Но дело в том, что запись может быть не только ПОМЕЧЕНА как удаленная, а быть и реально удалена, что я и обозначил в своем вопросе.


 
b z   (2009-02-17 19:21) [38]


> Есть номер клиента, обычное число. Есть граница времени
> (обычно это ночью), после которой нужно "обнулить" номера
> клиентов и начать присваивать с наименьшего неиспользуего
> номера.
А почему так категорично - "нужно "обнулить"", может это и не нужно, или тот кто так захотел, не понимает и ему просто, что называется, "на пальцах" пояснить что это не так и нужно, а скорее наоборот?

У нас, в тек. проекте, клиенты тоже захотели иметь такие вот простые идентификаторы, чтоб проще ихх вводить при поиске и т.д. Только мы никакими дырками не занимались, а уяснив задачу (конкретику) сделали проще. А именно, завели 4-хсимвольное поле и крутим там номера по кругу, т.к. знаем, что след. круг пойдет по заведомо "дырявым" :) номерам. 4 символа набрать пользователям набрать несложно, и нам меньше проблем. Все довольны.

PS: Безусловно я незнаю вашей конкретики, просто похожая ситуация...


 
b z   (2009-02-17 19:24) [39]


> просто похожая ситуация
на мой взгляд ... ну чтоб не придирались и не обвиняли в телепатии :)


 
Maaacheba   (2009-02-17 19:36) [40]


> т.к. знаем, что след. круг пойдет по заведомо "дырявым"
> :)

а мы этого не знаем, потому что клиент с номером 30 может существовать гораздо дольше, чем клиент с номером 9587, это невозможно предугадать. Соответственно, когда пойдет новый круг далеко не факт, что все номера будут свободны.


 
zabyl parol'   (2009-02-17 19:39) [41]


> Maacaheba   (17.02.09 16:39) [15]

I ne len" zhe bylo 4152 symvola nabivat", ne schitaja probelov... ;)
Skol"ko energii !!!


 
Johnmen ©   (2009-02-17 19:40) [42]


> Maaacheba   (17.02.09 17:45) [29]
> Есть номер клиента, обычное число. Есть граница времени (обычно это
> ночью), после которой нужно "обнулить" номера клиентов и
> начать присваивать с наименьшего неиспользуего номера.
> Расскажи, пожалуйста, в чем я неправ изначально, если хочу найти
> наименьший неиспользуемый среди клиентов номер на текущий
> момент.

Здесь ты приводишь не изначальную постановку вопроса, а твоё вИдение, как его решать. Мне это не нужно и не интересно.
А интересна, и имеет значение, изначальная ПОСТАНОВКА. ТЗ, если угодно.
Вот про эту изначальность и спич... Но её нет в твоих постах, т.е. совсем.


 
AndreyV ©   (2009-02-17 19:56) [43]

> [40] Maaacheba   (17.02.09 19:36)
> а мы этого не знаем, потому что клиент с номером 30 может
> существовать гораздо дольше, чем клиент с номером 9587,
> это невозможно предугадать. Соответственно, когда пойдет
> новый круг далеко не факт, что все номера будут свободны.

Мне вот не понятно, зачем физически удалять клиента из базы, ну сделали его не активным, а лучше добавить два поля "Время активации", "Время деактивации" вместо "Активен" и простым запросом искать наименьший свободный номер. Заодно история останется, а то что это за база.

Это мои домыслы, не надо меня обвинять в залезании в твои мысли.


 
Сергей М. ©   (2009-02-17 20:00) [44]


> Riply ©   (17.02.09 17:51) [31]



> человек, только что пришедший на форум


Сия персона утверждает, что на DM он не новичок - где-то там в его ближайших постах два года фигурирует.

Даже если это не блеф, то, пожалуй, кто-то из "обиженых", вдохновленный тындынщиной и пр., занялся клоун-буффонадой с переодеваниями)


 
Юрий Зотов ©   (2009-02-17 20:02) [45]

1. Заводим 2-ю таблицу с единственным полем ID.

2. На 1-ю таблицу вешаем триггеры на DELETE и UPDATE, в этих триггерах при любом удалении записи (физическом или логическом) делаем INSERT во 2-ю таблицу с ID удаленной из 1-й таблицы записи.

3. Теперь дырка в 1-й таблице ищется по 2-й: select min(ID) from tbl2

4. На 1-ю таблицу вешаем триггер на INSERT: если ID новой записи есть во 2-й таблице, то из 2-й таблицы эту запись удаляем.

И вся морковь, без извращений.


 
AndreyV ©   (2009-02-17 20:09) [46]

> [45] Юрий Зотов ©   (17.02.09 20:02)

Дык нет у него триггеров в - SQLite.


 
Юрий Зотов ©   (2009-02-17 20:12) [47]

> AndreyV ©   (17.02.09 20:09) [46]

А хранимки есть? Можно их использовать.

В любом случае задача сводится к выполнению группы SQL-инструкций в одной транзакции. Это должно быть везде.


 
Сергей М. ©   (2009-02-17 20:24) [48]


> Юрий Зотов ©   (17.02.09 20:12) [47]


Да нет у него нишиша - ни ХП ни триггеров.
А дырки есть)


 
AndreyV ©   (2009-02-17 20:34) [49]

> [48] Сергей М. ©   (17.02.09 20:24)
> Да нет у него нишиша - ни ХП ни триггеров.
> А дырки есть)

Прочитал, что транзакции имеются с полной блокировкой на запись файла БД модифицирующей транзакцией. Так что подход ЮЗ должен работать.


 
Сергей М. ©   (2009-02-17 20:43) [50]


> AndreyV ©   (17.02.09 20:34) [49]


Транзакционный механизм - есть он или нет его, блокировочный он или версионный, зереный он или кислый - тут совсем ни причем.

Тут о дырках война)


 
AndreyV ©   (2009-02-17 21:05) [51]

> [50] Сергей М. ©   (17.02.09 20:43)
> Тут о дырках война)

Пока автора нет отчего не поразмышлять вслух. Ах да, на телепатию здесь табу.

Ждем-с автора с ТЗ.


 
Maaacheba   (2009-02-17 22:00) [52]

zabyl parol"   (17.02.09 19:39) [41]
Skol"ko energii !!!


питаюсь батарейками энерджайзер )

Johnmen ©   (17.02.09 19:40) [42]
Здесь ты приводишь не изначальную постановку вопроса, а твоё вИдение, как его решать. Мне это не нужно и не интересно.
А интересна, и имеет значение, изначальная ПОСТАНОВКА. ТЗ, если угодно


а что же это такое? Это и есть постановка задачи.

Клиенты есть, от них никуда не деться, это не моя прихоть, они действительно есть. Клиентам нужно выделять номер, этот номер потом будет отображаться на дисплее. Номер должен быть как можно более простой, чтобы клиенту удобно было искать свой номер в списке.
Я даже не знаю как это сформулировать по другому. Приведи пример?
И расскажи в чем я неправ изначально )

AndreyV ©   (17.02.09 19:56) [43]
Мне вот не понятно, зачем физически удалять клиента из базы, ну сделали его не активным, а лучше добавить


а зачем вообще в SQL серверах предусмотрена команда DELETE?! Мне кажется это ответ на твой вопрос. Чтобы через пару лет при сотне клиентов база не весила пару гигабайт.

Сергей М. ©   (17.02.09 20:00) [44]
Сия персона утверждает, что на DM он не новичок - где-то там в его ближайших постах два года фигурирует


не 2 года, а лет 5. Я и Мерлина помню, и общался с ним, кстати. Только какое отношение это имеет к атмосфере и уважении? Типа если новичок - можно втаптывать в грязь, а если нет - отвечать нормально? В принципе, так и есть, только что в этом нормального?

Юрий Зотов ©   (17.02.09 20:02) [45]
И вся морковь, без извращений.

Юрий Зотов ©   (17.02.09 20:12) [47]
А хранимки есть? Можно их использовать


дядь Юра, нету в скулайте ни хранимок, ни тригеров.


 
@!!ex ©   (2009-02-17 22:03) [53]

> Чтобы через пару лет при сотне клиентов база не весила пару
> гигабайт.

ПРи реюзе неактивных аккаунтов база будет размером в максимальное количество акков.


 
Maaacheba   (2009-02-17 22:11) [54]


> ПРи реюзе неактивных аккаунтов база будет

отложилось в памяти почему-то, что PK у записи менять не гуд. И насколько я знаю, некоторые БД просто не позволяют этого делать, не хочется нарваться на проблемы при смене провайдера. Возможно, что-то я путаю. Ну это потому что я тупой )


 
Юрий Зотов ©   (2009-02-17 22:19) [55]

> нету в скулайте ни хранимок, ни тригеров

Уже говорил: нет - и не надо. Задача слежения за дырками в таблице и их обнаружения сводится к тому, что при каждой операции INSERT, DELETE или UPDATE с этой таблицей нужно всего лишь выполнить не одну SQL-инструкцию, а группу, в одной транзакции. Инициатором выполнения этой группы может быть и клиент.


 
Maaacheba   (2009-02-17 22:26) [56]

Юрий Зотов ©   (17.02.09 22:19) [55]
Задача слежения за дырками в таблице и их обнаружения сводится к тому, что при каждой операции INSERT, DELETE или UPDATE с этой таблицей нужно всего лишь выполнить не одну SQL-инструкцию


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

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


 
Юрий Зотов ©   (2009-02-17 22:29) [57]

> Maaacheba   (17.02.09 22:26) [56]

Даже более того: стоит влезть в БД другим клиентом - и тоже хана. Но что ж тут сделаешь, коль скоро выбрана именно такая недобаза?


 
Petr V. Abramov ©   (2009-02-17 22:43) [58]


> Maaacheba   (17.02.09 18:46) [37]
> вот опять мы начали играть в телепатов. Номера идут как
> раз подряд, точнее выделяются в результате операций с дырками
> подряд.


http://delphimaster.net/view/2-1234454755/
Задача: найти первую свободную "дырку" в последовательности Number среди не помеченных на удаление записях.

Пример:

Number | FlagDeleting
================
1         |  0
6         |  0
4         |  0
2         |  0


узнаЕшь?


 
Petr V. Abramov ©   (2009-02-17 22:46) [59]


> Maaacheba   (17.02.09 18:46) [37]


> Но дело в том, что запись может быть не только ПОМЕЧЕНА
> как удаленная, а быть и реально удалена, что я и обозначил
> в своем вопросе.

где?
в вопросе написано:
Задача: найти первую свободную "дырку" в последовательности Number среди не помеченных на удаление записях.


 
Petr V. Abramov ©   (2009-02-17 22:52) [60]


> Maaacheba   (17.02.09 22:00) [52]


> Клиенты есть, от них никуда не деться, это не моя прихоть,
>  они действительно есть. Клиентам нужно выделять номер,
> этот номер потом будет отображаться на дисплее. Номер должен
> быть как можно более простой, чтобы клиенту удобно было
> искать свой номер в списке.
> Я даже не знаю как это сформулировать по другому. Приведи
> пример?

а проще и не надо, надо это было в изначальной ветке сказать, а не считать ниже собственного достоинства.
Ты придумал свой метод решения, который приводит к черезжопщине (что бывает со всяким, увы), а потом всех, кто не хочет или не советует решать задачу ттвоим методом считаешь плохими людьми.
Ну написал бы: <постановка такая-то> очень хочу решить через дырки, никто б не ругался :)


 
Maaacheba   (2009-02-17 22:53) [61]

я акцентировал внимание на слове "изначально". вот именно ИЗНАЧАЛЬНО - они идут последовательно. А вот в результате удаления записей - да, в цепочке могут быть надоевшие всем "дырки".


 
Petr V. Abramov ©   (2009-02-17 23:09) [62]


> Maaacheba   (17.02.09 22:53) [61]

это можно обсуждать долго и конструктивно, вникая в тонкости задачи.
Изначальная суть в том, что ты посчитал ниже собственного достоинства изложить суть задачи, и уперся на своем черезжопном решении, которым заниматься - тратить попусту свое и твое время


 
AndreyV ©   (2009-02-17 23:10) [63]

> [52] Maaacheba   (17.02.09 22:00)
> AndreyV ©   (17.02.09 19:56) [43]
> Мне вот не понятно, зачем физически удалять клиента из базы,
> ну сделали его не активным, а лучше добавить
>
> а зачем вообще в SQL серверах предусмотрена команда DELETE?
> ! Мне кажется это ответ на твой вопрос. Чтобы через пару
> лет при сотне клиентов база не весила пару гигабайт.

Логика проста - есть бум пользоваться, "format c:" тоже есть.
Для 1ГБ/год это ж надо с десяток клиентов в секунду добавлять.

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

Вобщем не нравится мне этот подход, но дело твоё.


 
clickmaker ©   (2009-02-17 23:17) [64]

> Номер должен быть как можно более простой, чтобы клиенту
> удобно было искать свой номер в списке


 
clickmaker ©   (2009-02-17 23:19) [65]

вообще-то номер и ID - разные вещи.
можно завести отдельную таблицу с номерами, можно продавать короткие номера за деньги... ну как в аське, знаете...


 
clickmaker ©   (2009-02-17 23:23) [66]

то есть схема такая
ID - это identity, он возрастает, его не трогаем.
Number - при удалении клиента, номер заносится в таблицу свободных номеров.
При добавлении нового клиента ищем максимальный номер в таблице действующих + 1, потом - в таблице свободных.
Который меньше, тот и даем клиенту.


 
Petr V. Abramov ©   (2009-02-17 23:54) [67]


> clickmaker ©   (17.02.09 23:19) [65]


> вообще-то номер и ID - разные вещи.

справедливости ради, у аффтара так и есть.
но  ответ на вопрос "нафига" я, наверное, в силу ограниченности, все равно придумать никак не могу
P.S. offtop. как-то на sql.ru читал ветку, где один из разработчиков АСКП (это в Маскве такая офигенно электронная система посадки в автобусы) решил проконсультироваться. Ответил за всю АСКП :), всем, кто геморроится при влезании в автобус


 
sniknik ©   (2009-02-18 01:15) [68]

>> вообще-то номер и ID - разные вещи.
> справедливости ради, у аффтара так и есть.
это он только так говорит, тут например
Maaacheba   (17.02.09 17:02) [20]
> если ты думаешь что ищутся дырки в PK.
(т.е. надо понимать что нет, т.к. сарказм)

но, если у него номер и ID разные то почему >
Maaacheba   (17.02.09 22:11) [54]
>> ПРи реюзе неактивных аккаунтов база будет
> отложилось в памяти почему-то, что PK у записи менять не гуд.
собирается менять PK при "реюзе"? и менять нельзя.
(надо понимать что нельзя менять PK, а так как меняется порядковый номер...)

он похоже считает "особым шиком" запутывать тех кто ему помогает... или действительно - "Ну это потому что я тупой )" © тот же пост.

т.к. если бы взял на себя труд подумать, то понял бы, что при  "реюзе" ничего менять не пришлось бы, и неважно где у него номер, в PK или в дополнительном поле. при повторном использовании просто находится и используется уже существующая запись просто с нее снимается признак неактивная... и все. и нескольких гигабайт не будет, т.к. новых не добавляется при найденном неактивном номере, будет всего лишь столько записей сколько было максимум клиентов в самый лучший для бизнеса день...
т.е. схема вполне работоспособная для описанного "ТЗ". правда не удивлюсь если сейчас еще, что то "всплывет" изза чего она "не катит"... ну это уже в порядке вещей.


 
Petr V. Abramov ©   (2009-02-18 01:18) [69]


> что то "всплывет" изза чего она "не катит"... ну это уже
> в порядке вещей.

прям как у юзера, а не програмера
:)


 
Германн ©   (2009-02-18 01:28) [70]

Кстати.
Вспоминая упоминания автора в топике об общении с Мерлином. (Да и с Лелем в купе).
И я с ними общался. Причём довольно много и часто (Не в реале. На форуме). Но вот знаний о Дельфи у меня от этих общений не прибавилось! (Точнее прибавилось, надо отдать справедливость вышеназванным, но очень мало :)


 
oxffff ©   (2009-02-18 07:50) [71]


> Maacaheba   (17.02.09 16:39) [15]


Частично разделяю твое мнение. Была здесь тема по пустой try/except.
Я привел конкретный пример его необходимости.
В ответ получил, что я безграмотный. Я естественно привел контраргумент.
Нужно было просто передо мной извиниться. Правда это был Мастер. Потом их стало три Мастера и они все вместе продолжали петь в свою дудку.
Совершенно не воспринимая мои аргументы(алгоритм генерализован и логирование генерализованное, т.е. внешнее, и что одни задания не зависят от других). Вообщем в итоге некий Мастер просто начал тереть мои посты, вместе с сутью. Потом я получил бан, первый раз в жизни.
И длительное время не появлялся на форуме и не планирую.
Но для тебя сделал исключение.

Обидно за то, что другие люди будут читать ту тему и воспринимать мышление Мастеров, как исключительно правильное. Что неверно.


 
sniknik ©   (2009-02-18 08:15) [72]

> Я привел конкретный пример его необходимости.
также как сейчас? вот твой пост ну просто образец "конкретики" без реальной ссылки чтобы можно было проверить, без сути чтобы можно было видеть что там был действительно прав, просто как и тут "верьте мне люди НАДО!"...
при том, что опыт обычно говорит, что пустой/переопределенный на свое сообщение try/except это признак ламеризма в 99% случаев...

> Нужно было просто передо мной извиниться.
думаешь? ну если бы ты был счас чуть конкретнее в описании, я бы тебе поверил, может быть (зависит собственно от сути), но может это наоборот тебе надо было к ним прислушаться и извинятся?  что скорее... (имхо. только на основании как предоставлено описание. ветки не помню)


 
oxffff ©   (2009-02-18 08:44) [73]


> думаешь? ну если бы ты был счас чуть конкретнее в описании,
>  я бы тебе поверил, может быть (зависит собственно от сути),
>  но может это наоборот тебе надо было к ним прислушаться
> и извинятся?  что скорее... (имхо. только на основании как
> предоставлено описание. ветки не помню)


Ну судя по тому, что Мастера обычно говорят, что так сделать нельзя.
Я стараюсь привести решение. см. oxffff ©   (17.02.09 11:30) [7].
А где ваше решение? :)

P.S. Тема ушла видимо в архив. Если содейстуете ее нахождению буду благодарен.


 
Palladin ©   (2009-02-18 08:48) [74]


> oxffff ©   (18.02.09 08:44) [73]

заголовок помнишь? конференцию?


 
brother ©   (2009-02-18 08:58) [75]

из всего выше написаного вывел: дырки нужны, мастера обленились, автор упертый...)))
зы автор, прочитай правила данного форума http://www.delphimaster.ru/forums.shtml#rule и не забывай, что, никто, никому, ничего не должен...


 
oxffff ©   (2009-02-18 09:15) [76]


> Palladin ©   (18.02.09 08:48) [74]
>
> > oxffff ©   (18.02.09 08:44) [73]
>
> заголовок помнишь? конференцию?


В прочее, в заголовке есть - Пустой, try, except.
Сейчас постараюсь написать пример.


 
Сергей М. ©   (2009-02-18 09:16) [77]


> дырки нужны, мастера обленились, автор упертый


Ну не иначе как Номерная сказка № 14)


 
oxffff ©   (2009-02-18 09:55) [78]


> sniknik ©   (18.02.09 08:15) [72]


ITask=interface
procedure Execute;
function GetLastError:String;
function GetTaskName:string;
end;

ILogger=interface
procedure Log(const Message:string);
end;

TGeneralizedExecution<TTask:ITask;TLogger:ILogger>=class
public
class procedure DoTasksAndLogIt(const Tasks:array of TTask;const Logers:array of TLogger);static;
end;

procedure DoSafeCallOfUnknownProc(const SomeProc:TProc);
begin
try
SomeProc;
except
end;

end;

class procedure TGeneralizedExecution<TTask, TLogger>.DoTasksAndLogIt(
 const Tasks: array of TTask; const Logers: array of TLogger);
var Loger:TLogger;
   Task:TTask;
begin
   for Loger in Logers do
   begin
   DoSafeCallOfUnknownProc(
                procedure
                begin
                Loger.Log("Bunch Execution start of nonbounded tasks");
                end);
   end;
for Task in Tasks do
   begin
     try
     Task.Execute;
     for Loger in Logers do
            begin
            DoSafeCallOfUnknownProc(
                  procedure
                  begin
                  Loger.Log("Task "+Task.GetTaskName+ " is executed ");
                  end);
            end;
      except
       for Loger in Logers do
         begin
         DoSafeCallOfUnknownProc(
                procedure
                begin
                Loger.Log("Error "+Task.GetLastError+ " of task "+Task.GetTaskName);
                end);
         end;
     end;
  end;
for Loger in Logers do
 begin
 DoSafeCallOfUnknownProc(
              procedure
              begin
              Loger.Log("Bunch Execution End of nonbounded tasks");
              end);
 end;

end;


 
oxffff ©   (2009-02-18 10:00) [79]


> oxffff ©   (18.02.09 09:55) [78]


TGeneralizedExecution.DoTasksAndLogIt(
 [
 ...
//   "A bunch of unknown tasts"
 ....
 ],
 [TEmailLoger.create(..),
  TDatabaseLogger.create(..),
  TTxtLogger.create(..),
//   "A bunch of unknown loggers"
 ....................
 ]


 
Игорь Шевченко ©   (2009-02-18 11:00) [80]

oxffff ©   (18.02.09 10:00) [79]

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


 
oxffff ©   (2009-02-18 11:06) [81]


> Игорь Шевченко ©   (18.02.09 11:00) [80]


Может еще раз стоит внимательно ознакомится с [78].
И особое внимание уделить TGeneralizedExecution<TTask:ITask;TLogger:ILogger>


 
Игорь Шевченко ©   (2009-02-18 11:08) [82]

oxffff ©   (18.02.09 11:06) [81]

Может, мои слова тоже стоит прочитать ? Не менее внимательно ? Я не вижу смысла в повторении непродуктивной дискуссии.


 
Palladin ©   (2009-02-18 11:09) [83]


> oxffff ©   (18.02.09 09:55) [78]

Не могу не согласиться с Игорем. Ты лишаешь программиста-пользователя информации о происшедшем. Если ты сам пользуешься этим интерфейсом, то обеспечиваешь себе прекрасное далёко в поисках неисправностей. Если твои религиозные убеждения не позволяют тебе видеть исключение, то сделай DoSafeCallOfUnknownProc функцией (как обычно и делается) и возвращай код ошибки хотя бы что ли, и тут уже дело пользователя игнорировать результат или обращать на него внимание.


 
Palladin ©   (2009-02-18 11:12) [84]


> oxffff ©   (18.02.09 11:06) [81]

Ага, ты принуждаешь пользоваться логом. То есть, программисту что бы поймать исключение и проанализировать его, нужно самому писать в передаваемой процедуре try/except? Кривое решение.


 
oxffff ©   (2009-02-18 11:14) [85]


>Игорь Шевченко ©   (18.02.09 11:00) [80]
> ? Тебе уже в прошлой теме сказали, что пустой try except
> ведет к потере информации об ошибках,


1. В  той ветке я не стал усложнять Task контракт.
  Здесь добавил ITask.GetLastError и ITask.GetTaskName.

2. Что касаемо исключения в неизвестном логере.
Как вы собрались его обрабатывать. Если ни его природа, ни реализация неизвестна? Вы же сами в той ветке признали, что нельзя обработать неизвестное исключение.

Если убрать пустой try/except гарантии выполнения других заданий нет. Поэтому пустой try/except необходим для гарантии логирования другими логерами, и гарантии выполнения других заданий.

Вы понимаете, что это обобщенный алгоритм?


 
oxffff ©   (2009-02-18 11:26) [86]


> Palladin ©   (18.02.09 11:09) [83]


> Palladin ©   (18.02.09 11:12) [84]


Ты не понял алгоритм. Итак давай на пальцах.

Есть контракт задания и логера.

Конкретный пример:

10 не связанных задания и три логера(один txt файл, один субд, один DCOM вызов).

обобщенный алгоритм.

1. Говорит через все логеры, что начал работу по выполнению всех заданий.
Здесь нужен пустой try/except. Пропало соединение. Но задачу выполнить можно. Сбойнул один логер. Сообщение будет получено через другие.
И выполнение задач не будет прервано.

2. Берем первую задачу. Она неизвестна, неизвестны и исключение которые она генерирует. Но у ее есть  ITask.GetLastError и ITask.GetTaskName, по которым мы может, что узнать о ней больше.
Оборачиваем в непустой try.
Возникает исключение привыполнении задачи. Не забываем, что задачи несвязаны. Логируем исключение на все логеры через ITask.GetLastError.
И продолжаем работу дальше. Однако поскольку нет гарантий и нет информации о логерах. Пропало соединение логера. Сбойнул один логер. Сообщение будет получено через другие. И выполнение задач и других логеров не будет прервано.

Теперь жду твои замечания.


 
Игорь Шевченко ©   (2009-02-18 11:31) [87]


> Как вы собрались его обрабатывать. Если ни его природа,
> ни реализация неизвестна? Вы же сами в той ветке признали,
>  что нельзя обработать неизвестное исключение.


Неизвестное исключение обрабатывается так:
on E: Exception do
 ...обработка исключения

Еще раз напоминаю - не надо превращать топик автора в попытку реанимации бесплодной дискусии. Хочется бесплодной дискусии - заведи отдельный топик.


 
oxffff ©   (2009-02-18 11:36) [88]


> Игорь Шевченко ©   (18.02.09 11:08) [82]
> oxffff ©   (18.02.09 11:06) [81]
>
> Может, мои слова тоже стоит прочитать ? Не менее внимательно
> ? Я не вижу смысла в повторении непродуктивной дискуссии.
>


Напоминаю вам ваши слова, нельзя логировать то о чем не знаешь.
В том случае пример был упрощен. Я тогдп убрал ITask.GetLastError и ITask.GetTaskName. И так ошибку мы уже знаем.
Можем ее залогировать в несколько логеров.
Однако сам логер поненциально(он неизвестен) может сгенерировать исключения. У нас есть другие логеры(например избыточные, не суть важно). Почему стоит прерывать выполнения следующих заданий и других логеров из-за сбоя логера? Это вопрос идеалогии. Что и вы признали в той ветке.
На этот вопрос вы рекомендуете с треском (сбой логера ведет к треску).
А я рекомендую как минимум выполнить все что можно выполнить, т.е другие логеры и задания. То есть предумостреть возможность ошибок, а зашититься от них как можно сильнее.
А не просто сложить ручки и сказать все кирдык(это ваша точка зрения).
А поскольку алгоритм обобщен, он и должен быть защищен соответственно.
Поэтому ваша точка зрения, о том, что если поненциально сбой возможен и не защититься от него мне не понятна.


 
Johnmen ©   (2009-02-18 11:39) [89]


> Maaacheba   (17.02.09 22:00) [52]

В общем я понял, что постановки задачи не будет. Ну и ладно, уже не интересно. Уже всё равно, какие колёса у твоего велика...
Вот получение первой "дырки":
SELECT
 CASE WHEN ISNULL(MIN(T2.NUM_GLOBAL-1),1)<>0 THEN 1 ELSE ISNULL(MIN(T1.NUM_GLOBAL+1),1) END
FROM Table T1
FULL JOIN Table T2 ON (T1.NUM_GLOBAL+1=T2.NUM_GLOBAL) AND (T1.Activity<>0) AND (T2.Activity<>0)
WHERE (T2.NUM_GLOBAL IS NULL) OR (T1.NUM_GLOBAL IS NULL)

"дыркой" считается отсутствие любого натурального числа во множестве значений NUM_GLOBAL.


 
test ©   (2009-02-18 11:40) [90]

oxffff ©   (18.02.09 11:36) [88]
Проигнорировав одну ошибку, ты дальше можеш получить следующую которая ну ни как не связана с реальным состоянием дел, дальнейшая работа становитья не предсказуема.


 
oxffff ©   (2009-02-18 11:43) [91]


> Игорь Шевченко ©   (18.02.09 11:31) [87]
>
> > Как вы собрались его обрабатывать. Если ни его природа,
>  
> > ни реализация неизвестна? Вы же сами в той ветке признали,
>
> >  что нельзя обработать неизвестное исключение.
>
>
> Неизвестное исключение обрабатывается так:
> on E: Exception do
>  ...обработка исключения


Ну во первых у вас ошибка в коде.
Что если сделать так raise Tform.create(nil)?

А во вторых вы уходите от темы. Я имею ввиду как обработать неизвестный сбой логера(у нас есть только контракт)

Тогда следующий вопрос как получить сообщение об ошибке для пользователя от неизвестного класса.

Я например могу предложить выводить сообщения от сбойного логера в другие логеры следующие в массиве логеров(у нас нет других логеров).

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


 
Игорь Шевченко ©   (2009-02-18 11:47) [92]

oxffff ©   (18.02.09 11:43) [91]

не надо превращать топик автора в попытку реанимации бесплодной дискусии. Хочется бесплодной дискусии - заведи отдельный топик.


 
oxffff ©   (2009-02-18 11:49) [93]


> test ©   (18.02.09 11:40) [90]
> oxffff ©   (18.02.09 11:36) [88]
> Проигнорировав одну ошибку, ты дальше можеш получить следующую
> которая ну ни как не связана с реальным состоянием дел,
> дальнейшая работа становитья не предсказуема.


у меня нет возможности ее обработать поскольку она неизвестна.
Но и самое главное при сбое логера у нас как минимум есть возможность убрать логер из списка и продолжить с другими. Расширить контракт логера например до ILOGGER.QueueMessage и др.
И в том и другом случае решение с пустым Try except направлено на то, чтобы от сбоя не страдали другие задания. То есть сделать максимально возможную работу. А не при каждом запуске приложения недавать другим исполнится лишь исключительно по простой причине - религиозных убеждений о вреде пустого try except.


 
DiamondShark ©   (2009-02-18 11:51) [94]


> Однако сам логер поненциально(он неизвестен) может сгенерировать
> исключения. У нас есть другие логеры(например избыточные,
>  не суть важно). Почему стоит прерывать выполнения следующих
> заданий и других логеров из-за сбоя логера?

Например, для того, чтобы как можно быстрее обнаружить (а потом удалить или починить) сбойный логер.

А так твоя система может крутиться годами скрывая в счастливом неведении ошибки, которые могут быть и серьёзными.

Можно ведь контракт логера детализировать. Например, потребовать, чтобы он не падал с IOException.
Если он всё-таки падает, то значит его надо из системы выковырять, как не соблюдающий контракт. А если он падает не только с IOException, а ещё и с ZerroDivide или AV, то выковырять его надо ещё скорее.


 
oxffff ©   (2009-02-18 11:53) [95]


> Хочется бесплодной дискусии - заведи отдельный топик.


Враги вокруг, враги везде. Что за детский сад?


 
DiamondShark ©   (2009-02-18 11:54) [96]


> у меня нет возможности ее обработать поскольку она неизвестна.

Не так уж она и неизвестна.
Message и ClassName несут достаточно информации. Как минимум для фиксации самого факта произошедшей ошибки.


 
Игорь Шевченко ©   (2009-02-18 11:58) [97]

oxffff ©   (18.02.09 11:53) [95]


> Враги вокруг, враги везде. Что за детский сад?


"Старайтесь избегать «оффтопиков». Добавляя свое сообщение, убедитесь, что оно соответствует обсуждаемой теме. ".

Тема, если ты видишь, о получении имен методов.


 
Юрий Зотов ©   (2009-02-18 11:59) [98]

Сказка про белого бычка...

> oxffff ©

Не нужно строить из себя обиженного страдальца. Удалялись ТОЛЬКО те Ваши посты, где содержался переход на личности (что, кстати, полностью соответствует правилам форума) - это раз. Этого НЕявного предупреждения Вы не поняли (или не захотели понять) и вместо дискуссии продолжали вести склоку, за что получили уже ЯВНОЕ предупреждение открытым текстом - это два. Но и после этого тоже не успокоились, за что и получили бан - причем, тоже в полном соответствии с правилами форума. И, кстати, вовсе НЕдлительный - 3 дня, дабы остыть. Так что то, что Вы не появлялись на форуме "ДЛИТЕЛЬНОЕ время" - это Ваше личное дело.

Что касается Вашей темы, то кто как хочет, а лично я продолжать спор не намерен. По трем причинам:

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

2. Неприятно общаться с человеком, который не умеет вести спор иначе, как постоянно переходя на личности

3. И нет смысла спорить с человеком, который уверен в том, что оппоненты не могут (или не хотят) понять его доводов - но не допускает даже мысли о том, что ЕГО доводы эти самые оппонены уже давно поняли, а вот он САМ как раз ИХ доводы понять не может (или не хочет).

=======================

P.S.
Сразу говорю: если не хотите повторения истории - воздержитесь от перехода на личности. И не только в этой ветке.


 
oxffff ©   (2009-02-18 11:59) [99]


> DiamondShark ©   (18.02.09 11:51) [94]
>
> > Однако сам логер поненциально(он неизвестен) может сгенерировать
>
> > исключения. У нас есть другие логеры(например избыточные,
>
> >  не суть важно). Почему стоит прерывать выполнения следующих
>
> > заданий и других логеров из-за сбоя логера?
>
> Например, для того, чтобы как можно быстрее обнаружить (а
> потом удалить или починить) сбойный логер.
>
> А так твоя система может крутиться годами скрывая в счастливом
> неведении ошибки, которые могут быть и серьёзными.


А куды ты собрался логировать о сбое логера(нет других логеров)?
Здесь только вылет с треском и все.

В любом коде есть ошибки. И нигде нет гарантии.
Например защититься от отсутствия соединения нельзя. Но у нас есть например способ сообщить об этом через другие следующие логеры в массиве. И продолжить задание или просто сообщить и выйти. И в том и другом случае без пустого try никуда. Не так ли? ;)


 
oxffff ©   (2009-02-18 12:03) [100]


> 3. И нет смысла спорить с человеком, который уверен в том,
>  что оппоненты не могут (или не хотят) понять его доводов
> - но не допускает даже мысли о том, что ЕГО доводы эти самые
> оппонены уже давно поняли, а вот он САМ как раз ИХ доводы
> понять не может (или не хочет).


Я например не давал до этого определия в глупости других участников.
А Мастера этим грешат.
Тогда на ваше необоснованное определение - я использовал ваш метод.
И пользуются своим положением.
А когда им приводишь аргументы, они не могут не привести контрагрументы, только говорят так нельзя и не хотят думать.


 
Юрий Зотов ©   (2009-02-18 12:13) [101]

> oxffff ©   (18.02.09 12:03) [100]

> Я например не давал до этого определия в глупости других участников.
> А Мастера этим грешат.
> Тогда на ваше необоснованное определение - я использовал ваш метод.
> И пользуются своим положением


А Вам не приходила в голову простая мысль - что если ученики 5Б класса Петя, Вася и Коля - блондины, то это еще не значит, что ВСЕ ученики 5Б класса - блондины?

Подумайте об этом... на досуге... а после этого перечитайте [100]... и еще подумайте.

Не все же кодить, надо и о другом задумываться иногда, не так ли?

> А когда им приводишь аргументы, они не могут не привести
> контрагрументы, только говорят так нельзя и не хотят думать.


Лучшего подтверждения [98], пункты 2 и 3 просто не придумаешь. Спасибо, что Вы сами это подтверждение привели.


 
Maaacheba   (2009-02-18 12:59) [102]


> В общем я понял, что постановки задачи не будет

я тебе два раза привел постановку задачи. Я понял, ты не можешь перебороть себя и признать, что ты ошибался и что дырки тут реально нужны. Ты, вероятно, хочешь постановку задачи, где будет отсутствовать вывод номера клиента на устройства отображения. Да пожалуйста, только система работает именно так, и предыдущая версия системы работала так, и железо сконструировано, что оно работает так. И поэтому это - постановка ТЗ. Есть номер клиента, его нужно выводить, номер должен быть желательно поменьше, но при этом уникальным на текущий момент, плюс они должны идти по порядку, иначе десятки раз наталкивались на возмущения клиентов - "почему у меня номер меньше, а обслуживают клиента с бОльшим номером".

И никому не важно, что ты там думаешь насчет системы и как бы ты видел ее с точки зрения программиста. Система расчитана не на программистов, и поэтому данная постановка - ТЗ.

НО я понимаю, у тебя тупик, в данной постановке тебе придется признать, что дырки нужны, а тебе этого не позволит гордость, ты уже сказал, что "дырки - это тупо". Поэтому тебе остается одно - говорить, что ТЗ фиговое. На здоровье.

oxffff, я прекрасно знаю ту ветку. И фишка там всегда одна и таже - ты говоришь, что в ДАННОМ случае тело try..except можно оставить пустым, но никому это не нужно, потому что спорить с этим сложно. Поэтому твои слова воспринимаются сразу как то, что ты утверждаешь что вообще всегда try..except можно оставлять пустым или переиначивается твой пример - и вуаля, автор - лох )


 
vuk ©   (2009-02-18 13:06) [103]

Хм. Вот у нас тоже система раздает обслуживаемым на выдаче товара клиентам номера. По порядку. Со сбросом в начале суток. Почему-то никаких проблем дырок не возникало сроду.


 
sniknik ©   (2009-02-18 13:14) [104]

> я тебе два раза привел постановку задачи.
от тебя хотели задачу, ты приводил свой путь решения, "борьбу" с которым выдавал за задачу.
разница однако...

> что в ДАННОМ случае тело try..except можно оставить пустым, но никому это не нужно
а как же -
Игорь Шевченко ©   (18.02.09 11:00) [80]
> Если тебе не нужна информация об ошибках - бога ради, пиши как хочешь и что хочешь
вроде он согласен, что ДАННОМ случае, конкретно по желанию автора кода он может оставить его пустым.
???

> Почему-то никаких проблем дырок не возникало сроду.
ну так вы наверное решали задачу, а не упирались в один путь решения.... не всем дано понять как это проблемы на пустом месте находить. вот учись как это делать у автора. %-) .


 
sniknik ©   (2009-02-18 13:20) [105]

> "почему у меня номер меньше, а обслуживают клиента с бОльшим номером".
я пришёл 10-тым, первых 3-х уже обслужили, и удалили(сделали неактивными) - по логике "дырок" я получаю номерок с 1-ей... и иду сразу возмущаться т.к. я первый а вперед меня пролез 4й... и еще до 9-го говорят что они первее меня...

???

а ведь это именно то что ты делаешь. та логика что описываешь, .... или опять изменения в постановке задачи будут?


 
Игорь Шевченко ©   (2009-02-18 13:25) [106]

вам, уважаемые, пора community организовывать


 
Юрий Зотов ©   (2009-02-18 13:27) [107]

> Maacaheba   (17.02.09 16:39) [15]

> но опыта нет ни у кого. Ни у кого нету опыта написания, а потом
> эксплуатации программы с привязкой к железу.


Ну, это Вы, батенька, преувеличиваете. Я точно знаю, что минимум два человека здесь таких есть. Даже лично с ними знаком, в реале...
:о)

> Два красавца в той теме...

(скромно потупясь) Алекс, привет!
:о)

> ...Юрий Зотов, который, видимо, тоже особо опытом не обладает...

Не знаю, какой уж там мой опыт - особый, или не особый, но несколько лет назад такую защиту я реально делал. Конечно, она была устроена сложнее, чем просто привязка к железу, но суть та же. Могу сказать одно - это работает. Естественно, до тех пор, пока за взлом не взялся серьезный хакер, но защита от серьезного хакера задачей и не ставилась. Ставилась задача защиты от недобросовестного юзера, и эта задача была успешно выполнена. Причем полагаю, что взлом той защиты окажется не по зубам не только юзерам, но и всякого рода юным [Xaker]ам - даже несмотря на то, что они с гордостью читают известный журнал и известную книгу о взгляде на Delphi.
:o)

> ... или не захотел им делиться

Вот это - в точку. Дело в том, что любая защита живет только до тех пор, пока конкретные детали ее реализации не стали достоянием публики. Сделанная мною - не исключение, так зачем же ЗДЕСЬ о ней рассказывать? Тем более, что этим самым я подвел бы не только себя, а еще и собственника программы, которая была ею защищена.


 
Maaacheba   (2009-02-18 13:46) [108]


> Хм. Вот у нас тоже система раздает обслуживаемым на выдаче
> товара клиентам номера. По порядку. Со сбросом в начале
> суток

я понимаю, ты не читал все. Я специально для тебя повторю - в такой системе подразумевается, что никаких клиентов со вчерашнего дня не осталось. У нас же обслуживание клиента может быть растянуто на несколько дней, в теории - на безграничное. Поэтому на следующий день вполне еще могут существовать клиенты со вчерашнего дня. Теперь понятно, откуда дырки?


>  ведь это именно то что ты делаешь. та логика что описываешь,
>  .... или опять изменения в постановке задачи будут?

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


> Ну, это Вы, батенька, преувеличиваете. Я точно знаю, что
> минимум два человека здесь таких есть. Даже лично с ними
> знаком, в реале...

ты про Розыча и вообще гранд? У них там привязка не совсем к железу, а к ключу и все построено на этом. У Розыча я давно проконсультировался уже.


> Могу сказать одно - это работает

так к чему вы тогда посоветуете привязаться? К HDD проблема озвучена - что делать с RAID-массивами?


> так зачем же ЗДЕСЬ о ней рассказывать?

ну это ваше право.
Меня больше бесят люди (90% в той ветке), которые ни разу в жизни не занимались этой проблемой, но строят знатоков.


 
Petr V. Abramov ©   (2009-02-18 13:49) [109]


> Так вот я несколько раз писал, что обнуление происходит
> в выбранный клиентом промежуток времени.

крепчает...


 
Maaacheba   (2009-02-18 13:51) [110]

И дядь Юр, не надо фразы из контекста вырывать:


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


Там до этого вообще-то четко написано:

>это факт - почти никто из отвечающих нихрена не

Я ничего не говорил про форум, планету и вселенную в целом.


 
test ©   (2009-02-18 13:55) [111]

Maaacheba   (18.02.09 13:51) [110]
Оппа так ты племянник оказывается?


 
Johnmen ©   (2009-02-18 13:58) [112]


> Maaacheba   (18.02.09 12:59) [102]

Я понял. Тебя бросили выпрямлять созданное криворукими некомпетентными программистами. При этом сказали, что кривизну НЕ ВЫПРЯМЛЯТЬ, а ЗАРЕТУШИРОВАТЬ!
Ретушируй. Мне похрену.
А твои сентенции по поводу моей гордости и всего остального попросту какие-то детские сопли...:)

PS
Ещё раз - ""дырки" это тупо"! Система, в которой надо решать проблему "дырок" - тупая система от тупых разработчиков!


 
Maaacheba   (2009-02-18 14:03) [113]

но, если у него номер и ID разные то почему
...
собирается менять PK при "реюзе"?


ага. То есть, ты считаешь, что нового клиента нужно записывать под старым ID, так? По-моему, ты уже договорился, sniknik. В своей погоне очернить автора (то есть, меня) ты уже плюешь на все. Где это принято, разные сущности в разное время существования базы писать под одним PK?! Это - ламерство, вот именно это - самое настоящее ламерство. PK - уникальный на всей протяженности жизни базы.

Любой, кто потом захочет.... ммм... например, прикрутить статистику к нашей системе, поняв что в разное время под одним ID подразумевались разные клиенты - скажет, что автор - дебил. И ты сам так сказал бы, если была другая ветка - первым бы кричал, что заюзывание одного ID для разных сущностей, которых разделяет только время жизни - полное ламерство. Но сейчас ты даже об этом забыл. У тебя уже давно нет рассуждений, ты видишь лишь врага, видимо, в лице меня, и надо доказать что враг - лох, и не важно уже правильно он говорит или нет, пофигу.
Я даже разговаривать не хочу после такого.


 
Johnmen ©   (2009-02-18 14:06) [114]


> Maaacheba   (18.02.09 14:03) [113]

Да ты успокойся, решение тебе дали в [89]. Иди с миром...


 
AndreyV ©   (2009-02-18 14:07) [115]

Maaacheba, ты не ответил, что с необходимостью физического удаления кроме фантастического объема базы? Удаление нужно не часто - при неверном вооде, например, а не в системе, иначе это не база, а генерилка номерков, ни к чему не привязанная, без всякой аналитики - а ну как завтра попросят за год выбрать среднее время обслуживания клиента. И проблема дырок решается. Что скажешь?


 
Maaacheba   (2009-02-18 14:10) [116]


> Я понял. Тебя бросили выпрямлять созданное криворукими некомпетентными
> программистами. При этом сказали, что кривизну НЕ ВЫПРЯМЛЯТЬ,
>  а ЗАРЕТУШИРОВАТЬ!

ты ничего не понял. Я тебе описал задачу два раза. Ну сейчас в третий раз можно я не буду описывать более?

Так вот. Расскажи мне, пожалуйста, хотя бы более менее ЛОГИЧНЫЙ вариант работы, из головы, какой тебе угодно. У нас в фирме нет ни одного человека, который придумал бы хотя бы ИНОЙ вариант работы. Не просто другой и правильный, а хотя бы хоть какой-нибудь вариант.

Поэтому, Johnmen, напиши какое МОГЛО бы быть ТЗ, хоть приблизительно, может я вообще пойму о чем ты, коли ты так настойчиво повторяешь что то, что я сказал - не ТЗ. Ты ведь задача приблизительно понял? Приведи хоть ОДИН вариант ТЗ какое оно могло бы быть?


 
AndreyV ©   (2009-02-18 14:11) [117]

> [113] Maaacheba   (18.02.09 14:03)
> Любой, кто потом захочет.... ммм... например, прикрутить
> статистику к нашей системе, поняв что в разное время под

Как в воду глядел. Как же ты статистику-то получишь - ты же всё поудалял?


 
test ©   (2009-02-18 14:15) [118]

Maaacheba   (18.02.09 14:03) [113]
Целью вот всего этого является:
 - Почетное право захоронения после смерти в кремлевской стене
 - Получить почетное звание Гранд-Мастер
 - Получение компенсации потому что дитятку в рунете обидели
 - Получение 50 девственниц и дворца в свое распоряжение
 - Получение налоговых льгот от государства навсегда
нужное подчеркнуть.


 
oxffff ©   (2009-02-18 14:16) [119]


> Юрий Зотов ©   (18.02.09 12:13) [101]
> > oxffff ©   (18.02.09 12:03) [100]
>
> > Я например не давал до этого определия в глупости других
> участников.
> > А Мастера этим грешат.
> > Тогда на ваше необоснованное определение - я использовал
> ваш метод.
> > И пользуются своим положением
>
> А Вам не приходила в голову простая мысль - что если ученики
> 5Б класса Петя, Вася и Коля - блондины, то это еще не значит,
>  что ВСЕ ученики 5Б класса - блондины?
>
> Подумайте об этом... на досуге... а после этого перечитайте
> [100]... и еще подумайте.
>
> Не все же кодить, надо и о другом задумываться иногда, не
> так ли?
>
> > А когда им приводишь аргументы, они не могут не привести
> > контрагрументы, только говорят так нельзя и не хотят думать.
>
>
> Лучшего подтверждения [98], пункты 2 и 3 просто не придумаешь.
>  Спасибо, что Вы сами это подтверждение привели.


НА улице хорошая погода. Вы не находите?
Подумайте над этим потом перечитайте свой пост.
Что вы ходите вокруг да около. Вы по делу что-нибудь скажите?


 
Maaacheba   (2009-02-18 14:17) [120]


> Maaacheba, ты не ответил, что с необходимостью физического
> удаления кроме фантастического объема базы?

я считаю, что этот единственный аргумент уже достаточен.


> иначе это не база, а генерилка номерков, ни к чему не привязанная,
>  без всякой аналитики

ну тут ты частично прав. Предыдущая версия программы хранила клиентов в текстовом файле. Хранить надо, чтобы разруливать варианты сбоя программы и ее перезапуска (а клиенты должны быть сохранены).

Я посчитал, что в текстовом файле как-то не гуманно, уж лучше в базе. И поэтому выбрал маленькую, компактную, локальную БД как аналог обычному текстовому файлу, SQLite здесь оказался идеален.


 
Maaacheba   (2009-02-18 14:20) [121]


> Как же ты статистику-то получишь - ты же всё поудалял?

а зачем мне статистика? Мне такой задачи поставлено не было, но есть интерфейс вывода данных. Если кому нужно - может сообразить свою статистику как ему угодно, будет и наша статистика, скорее всего на связке Apache + PHP + Web-интерфейс, получать данные она будет от моей программы, а как уже хранить, какую БД использовать (наверное уже будет выбрано что-то помощнее, типа мускула) и как обрабатывать - мне параллельно.


 
Ega23 ©   (2009-02-18 14:30) [122]


> Maaacheba   (18.02.09 14:17) [120]


Твоя задача решается элементарно введением в таблицу поля NumberInUse.
При присвоении номера - ставим 1. При отвязке - 0.
Выборка - Select min(Number) from Table where NumberInUse=0.


 
Ega23 ©   (2009-02-18 14:30) [123]


> Maaacheba   (18.02.09 14:17) [120]


Твоя задача решается элементарно введением в таблицу поля NumberInUse.
При присвоении номера - ставим 1. При отвязке - 0.
Выборка - Select min(Number) from Table where NumberInUse=0.


 
Petr V. Abramov ©   (2009-02-18 14:35) [124]


> Ega23 ©   (18.02.09 14:30) [123]

да там физическое и логическое удаление аццким образом перемешаны.


 
Petr V. Abramov ©   (2009-02-18 14:36) [125]


> > Ega23 ©   (18.02.09 14:30) [123]

разобраться что к чему и нафига оставь надежду всяк сюда входящий.


 
oxffff ©   (2009-02-18 14:36) [126]


> sniknik ©   (18.02.09 13:14) [104]
> > я тебе два раза привел постановку задачи.
> от тебя хотели задачу, ты приводил свой путь решения, "борьбу"
> с которым выдавал за задачу.
> разница однако...
>
> > что в ДАННОМ случае тело try..except можно оставить пустым,
>  но никому это не нужно
> а как же -
> Игорь Шевченко ©   (18.02.09 11:00) [80]
> > Если тебе не нужна информация об ошибках - бога ради,
> пиши как хочешь и что хочешь
> вроде он согласен, что ДАННОМ случае, конкретно по желанию
> автора кода он может оставить его пустым.
> ???


Уважаемый, sniknik.
Давайте я постараюсь для Вас пояснить ответ [80] не туда.
Смотрите есть задания, есть логирование. И есть обобщенный алгоритм который их связывает, он не делает никаких предположений о реализации и исключительно следуют их контракту.

Исключение при выполнение задания, обрабатывается массивом логеров. А исключение логера не обрабатывается(проглатывается если хотите).

В [80] предлагают исключения логера перехватывать и обрабатывать.
Но не предлагают как. Более того в той ветки автор [80] признал что это невозможно поскольку как обработать то не зная, что. Контракт в данном случае ничего не предоставляет.

Таким образом в моем примере потеря информации о сбое задачи обрабатывается, поскольку предусмотрено контрактов задачи.
А потеря информации об ошибках самого логера вынуждена поскольку залогировать сбой самого логера некуда. Нет параноидального логера(логера второго уровня, который пишет сбой логера первого уровня). Однако если бы он был тоже генерализирован, то и его сбой был проглочен при условии гарантированного выполнения оставшихся задач. Автор [80] признал это в той ветке. И предлагал с треском валить приложения, поскольку логера ошибок логера нет.
Я предлагаю не валить приложение, а максимально продолжить его выполнение используя пустой try except, поскольку что и как обрабатывать неизвествно и записывать результат некуда. В чем я не прав?


 
AndreyV ©   (2009-02-18 14:37) [127]

> [120] Maaacheba   (18.02.09 14:17)
> > Maaacheba, ты не ответил, что с необходимостью физического
> > удаления кроме фантастического объема базы?
>
> я считаю, что этот единственный аргумент уже достаточен.

В моём посте есть слово "фантастического", т.е. 1ГБ/год по твоему утверждению.

> [121] Maaacheba   (18.02.09 14:20)
> > Как же ты статистику-то получишь - ты же всё поудалял?
>
> а зачем мне статистика? Мне такой задачи поставлено не было,

Ты сам привёл этот аргумент.

> но есть интерфейс вывода данных. Если кому нужно - может
> сообразить свою статистику как ему угодно, будет и наша

Две базы, в которые надо вносить пересекающиеся данные с неизбежными ошибками. Может лучше одну?


 
Maaacheba   (2009-02-18 14:37) [128]

Гы гы, а мне уже начинает нравиться.

Олег, а почему бы не написать:

Select min(Number) from Table where Activity=0

Так сказать домашнее задание )))))))))


 
Ega23 ©   (2009-02-18 14:37) [129]


> да там физическое и логическое удаление аццким образом перемешаны.


Сдаётся мне там сама база через анус спроектирована...


 
Petr V. Abramov ©   (2009-02-18 14:40) [130]


> Ega23 ©   (18.02.09 14:37) [129]

счас тебя тоже бить будут, готовься :)


 
oxffff ©   (2009-02-18 14:43) [131]


> Юрий Зотов ©   (18.02.09 11:59) [98]
> Сказка про белого бычка...
>
> > oxffff ©
>
> Не нужно строить из себя обиженного страдальца. Удалялись
> ТОЛЬКО те Ваши посты, где содержался переход на личности
> (что, кстати, полностью соответствует правилам форума) -
>  это раз. Этого НЕявного предупреждения Вы не поняли (или
> не захотели понять) и вместо дискуссии продолжали вести
> склоку, за что получили уже ЯВНОЕ предупреждение открытым
> текстом - это два. Но и после этого тоже не успокоились,
>  за что и получили бан - причем, тоже в полном соответствии
> с правилами форума. И, кстати, вовсе НЕдлительный - 3 дня,
>  дабы остыть. Так что то, что Вы не появлялись на форуме
> "ДЛИТЕЛЬНОЕ время" - это Ваше личное дело.


Первое предложение опять неявное оскорбление со стороны Мастера. Вы не находите?

Теперь по поводу бана. Были вычищены все неугодные мои посты.
Причем как посты с грубостью от меня(согласно правилам форума я не прав. признаю), но главное были вычищены 2 поста с содержательной частью. Почему?


 
AndreyV ©   (2009-02-18 14:43) [132]

> [122] Ega23 ©   (18.02.09 14:30)
> > Maaacheba   (18.02.09 14:17) [120]
>
> Твоя задача решается элементарно введением в таблицу поля
> NumberInUse.

Естьу него такое поле Active, вроде. Там в самом подходе "дырки".


 
Maaacheba   (2009-02-18 14:47) [133]


> Сдаётся мне там сама база через анус спроектирована...

это еще что, Олег. Подавляющему большинству сдаётся что автор лох и проект его говно еще до захода в ветку.


> В моём посте есть слово "фантастического", т.е. 1ГБ/год
> по твоему утверждению

ну, даже если будет сотня мегабайт - зачем? Лишнее место + более медленная работа.


> Две базы, в которые надо вносить пересекающиеся данные с
> неизбежными ошибками. Может лучше одну?

не лучше. Базу статистику лучше делать сетевую, а вот базу самой программы лучше делать локальную. Это мое мнение и я даже спорить не хочу, просто уж времени нету.


 
Ega23 ©   (2009-02-18 14:48) [134]


> счас тебя тоже бить будут, готовься :)


Прочитал более подробно. Да, мой вариант не годится.
Только я чё-то я не понял: а нафига такое кривое решение - что-то удаляется, что-то маскируется? Либо всё маскировать, либо всё удалять...
Да и задача какая-то идиотская... Дырки какие-то зачем-то искать... Зачем?


 
Игорь Шевченко ©   (2009-02-18 14:52) [135]

А давайте все посты по всем темам в одно место писать ? И про глобальный кризис и про с днем рождения и про имена методов.
Есть предложение по каждой интересной теме завести отдельный топик.


 
AndreyV ©   (2009-02-18 14:53) [136]

> [134] Ega23 ©   (18.02.09 14:48)
> Да и задача какая-то идиотская... Дырки какие-то зачем-то
> искать... Зачем?

Это автору и пытаются донести, а он видит в помощи оскорбления.


 
Maaacheba   (2009-02-18 14:58) [137]


> а нафига такое кривое решение - что-то удаляется, что-то
> маскируется?

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

Можешь считать. что все удаляются, проблему дырок это не отменяет.


 
oxffff ©   (2009-02-18 15:00) [138]


> Maaacheba   (18.02.09 14:58) [137]


Что у тебя за задача?


 
Skyle ©   (2009-02-18 15:01) [139]


> oxffff ©   (18.02.09 15:00) [138]
>
> > Maaacheba   (18.02.09 14:58) [137]
>
>
> Что у тебя за задача?

:)))))))))))))))))))))))))))))))))))

Силён, бродяга :)


 
AndreyV ©   (2009-02-18 15:01) [140]

> [133] Maaacheba   (18.02.09 14:47)
> ну, даже если будет сотня мегабайт - зачем? Лишнее место
> + более медленная работа.

Да откуда сотня? Возмём калькулятор 1000000000 / 10(байт) / 365 / 24 / 3600 = 3 чел/с. И что такое даже 1ГБ для базы в плане скорости. Н знаю как на SQLite.

> > Две базы, в которые надо вносить пересекающиеся данные
> с
> > неизбежными ошибками. Может лучше одну?
>
> не лучше. Базу статистику лучше делать сетевую, а вот базу
> самой программы лучше делать локальную. Это мое мнение и
> я даже спорить не хочу, просто уж времени нету.

А где аргуметы, кроме мнения?


 
Maaacheba   (2009-02-18 15:03) [141]


> Да и задача какая-то идиотская... Дырки какие-то зачем-то
> искать... Зачем?

Олег, ради тебя я готов и в 8-ой раз это написать.

================================================

- Клиентам нужно выделять номер, этот номер потом будет отображаться на дисплее.

-Номер должен быть как можно более простой, чтобы клиенту удобно было искать свой номер в списке и чтобы его вывод занимал меньше места на устройстве отображения

- клиенты могут обрабатываться в течении нескольких дней (хотя в 99% случаев обрабатываются за один)

- есть настройка в виде границы времени, при пересечении которой номера должны "обнуляться" - это из ТЗ. Обычно эта граница ночью, допустим 2 часа ночи.


 
Johnmen ©   (2009-02-18 15:05) [142]

> Maaacheba   (18.02.09 14:10) [116]

Если честно, я уже подустал. Такое ощущение, что стена, монолитная, непробиваемая...
Вяло, без надежды, пробую:
" только система работает именно так, и предыдущая версия системы работала так, и железо сконструировано, что оно работает так. И поэтому это - постановка ТЗ."
Здесь ты говоришь про работающую систему. Я говорю, что эта система кривая. По кр.мере в части, касающейся спроектированного хранилища данных. Моё ТЗ будет предусматривать разработку этой части системы, а не латания её, на котором ты зациклился... Если твоё ТЗ - это залатать, подбавить функционала, то оно никакого отношения к моему ТЗ на разработку системы не имеет!
В моём ТЗ нет и быть не может проблемы "дырок". В твоём - как мы видим, запросто!
Резюме - латание системы не устраняет её кривизны, а лишь ретуширует.


 
oxffff ©   (2009-02-18 15:05) [143]


> Maaacheba   (18.02.09 15:03) [141]


Дырки это я так понимаю
все множество номеров (например 10000) - множество используемых номеров?


 
test ©   (2009-02-18 15:06) [144]

Maaacheba   (18.02.09 15:03) [141]
А ничего что
- есть настройка в виде границы времени, при пересечении которой номера должны "обнуляться" - это из ТЗ. Обычно эта граница ночью, допустим 2 часа ночи

противоречит

- клиенты могут обрабатываться в течении нескольких дней (хотя в 99% случаев обрабатываются за один)

?


 
vuk ©   (2009-02-18 15:06) [145]

to Maaacheba:
Проблема с дырками происходит от того, что смешаны понятия идентификатора клиента и его "удобного номера". Если их разделить и хранить текущую связь клиента и назначенного ему номера в отдельной табличке, то поиск свободного номарв становится задачей тривиальнейшей.


 
Юрий Зотов ©   (2009-02-18 15:07) [146]

> oxffff ©   (18.02.09 14:43) [131]

> Первое предложение опять неявное оскорбление со стороны Мастера.
> Вы не находите?


Не нахожу. Воспринять фразу "Сказка про белого бычка", как оскорбление может либо человек, не знающий смысла этой фразы, либо человек с остро воспаленным ЧСВ. Надеюсь, Вы ни к тем, ни к другим не относитесь.

> Теперь по поводу бана. Были вычищены все неугодные мои посты.

Вы неверно трактуете. Были вычищены те (и ТОЛЬКО те) посты, в которых Вы переходили на личности (кстати, и не Вы один, в перепалку вступили и другие люди - и их посты тоже были порезаны). Угодность или неугодность здесь совершенно ни при чем.

Если Вам удобнее считать именно так (что посты были удалены лишь по причине их неугодности), то, конечно, запретить Вам этого никто не может - но, пожалуйста, примите во внимание, что так было всегда и впредь будет так же: посты, содержащие личные выпады будут резаться, нравится это их авторам, или нет.

> Причем как посты с грубостью от меня(согласно правилам форума я не
> прав. признаю), но главное были вычищены 2 поста с содержательной
> частью. Почему?


Очевидно, потому, что кроме содержательной части они содержали еще и грубость. Ведь нельзя же удалять ЧАСТЬ поста, согласитесь? Это уже было бы нарушением авторских прав, а потому не предусмотрено даже и чисто технически.

Если Вы хотите избежать подобного, то есть простой способ - не смешивать в одном посте грубость с содержательной частью. Тогда будет порезано именно то, что хочется.

Есть, правда, еще один способ, при котором вообще ничего резаться не будет. Надеюсь, Вы догадываетесь, что это за способ?
:o)


 
Maaacheba   (2009-02-18 15:08) [147]


> 10(байт)

во-первых, не 10 байт. Любая БД начнет данные выравнивать как минимум, а там много полей. Плюс там есть вообще blob, куда теоретически могут записысать что угодно. Например, фотографию клиента в 3000x3000 разрешении.


 
oxffff ©   (2009-02-18 15:10) [148]


> Юрий Зотов ©   (18.02.09 15:07) [146]


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


 
test ©   (2009-02-18 15:10) [149]

vuk ©   (18.02.09 15:06) [145]
Вот как то так? /*псевдо SQL*/
create table client(
id integer auto_increment,
fio varchar(200)
primary key id
)

create table dirka(
numDirka integer not null,
client_id integer
foreign key client_id
)


 
AndreyV ©   (2009-02-18 15:12) [150]

> [145] vuk ©   (18.02.09 15:06)
> to Maaacheba:
> Проблема с дырками происходит от того, что смешаны понятия
> идентификатора клиента и его "удобного номера". Если их
> разделить и хранить текущую связь клиента и назначенного
> ему номера в отдельной табличке, то поиск свободного номарв
> становится задачей тривиальнейшей.

Да удаляет он всё - пары мегабайт на винте жалко.


 
sniknik ©   (2009-02-18 15:19) [151]

> Вот как то так? /*псевдо SQL*/
> ....
примерно. только во вторую табличку еще ввести поле активности, и никогда из неё, т.е. таблички с номерами не удалять записи, только убирать активность.
тогда "физическое удаление" клиента не тронет номер, а "логическое" (в таблице номеров) будет одновременно говорить что номер свободен.
внешний ключ в принципе не нужен, ну или чтобы он был без проверок, т.к. будут варианты когда его ссылка будет пустой.


 
AndreyV ©   (2009-02-18 15:19) [152]

> [147] Maaacheba   (18.02.09 15:08)
>
> > 10(байт)
>
> во-первых, не 10 байт. Любая БД начнет данные выравнивать
> как минимум, а там много полей. Плюс там есть вообще blob,
> куда теоретически могут записысать что угодно. Например,
> фотографию клиента в 3000x3000 разрешении.

Это поля что ли выравнивать, как поля записи в Делфи? Блоки на диске скорее всего будет. БЛОБы, если пустые вообще ничего не займут, да и зачем в них что-то заносить, если в 99% потрутся в 2 часа ночи, а оставшийся 1% через пару дней?


 
Andy BitOff ©   (2009-02-18 15:22) [153]

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


 
Maaacheba   (2009-02-18 15:22) [154]


> Моё ТЗ будет предусматривать разработку этой части системы,
>  а не латания её


пожалуйста, пожалуйста. Я тебя просил привести в пример ТЗ, хотя бы КАКОЙ-НИБУДЬ пример, чтобы я понял что для тебя есть ТЗ.
Ты ведь знаешь как ты говоришь мое решение? Значит, можешь домыслить какое в принципе  могло быть ТЗ. Вот и озвучь КАКОЕ ОНО ВООБЩЕ МОГЛО БЫТЬ, хотя бы один из его вариантов.


> А ничего что
> - есть настройка в виде границы времени, при пересечении
> которой номера должны "обнуляться" - это из ТЗ. Обычно эта
> граница ночью, допустим 2 часа ночи
>
> противоречит
>
> - клиенты могут обрабатываться в течении нескольких дней
> (хотя в 99% случаев обрабатываются за один)


ничего не противоречит. Номера действительно обнуляются, но уже используемые не берутся. Например, дошел сегодня счетчик до 1000 клиентов, обработали всех кроме десятка. Так вот на следующий день клиенты пойдут с первого и по порядку, окромя тех, которые еще с прошлого дня остались. Повторюсь - я не вижу другого решения задачи, а она именно такова.

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

Придумаешь другой вариант работы - я буду очень благодарен. Если этот вариант будет посчитан лучшим и внедрен - то я тебе гарантирую вознаграждение. Правда, не могу сейчас сказать какое )


> Дырки это я так понимаю
> все множество номеров (например 10000) - множество используемых
> номеров?

я ничего не понял.


 
Eraser ©   (2009-02-18 15:23) [155]

> [145] vuk ©   (18.02.09 15:06)

именно! это единственное полностью верное решение. автору тут об этом несколько раз писали. но он с завидным упорством игнорирует любые дельные коментарии. так что бесполезно.


 
Юрий Зотов ©   (2009-02-18 15:24) [156]

> oxffff ©   (18.02.09 15:10) [148]

> Предлагаю сразу перейти к делу. Без оскорблений. Но с аргументами.

К какому делу? Если Вы все о том же try-except, то, во-первых, в данной ветке это оффтопик, а, во-вторых, продолжать спор я не намерен и уже сказал об этом в [98], мотивировав свою позицию.

Скажите: вот Вы обиделись на то, что Ваши посты порезали, на бан и т.п. (хотя инициировали это Вы сами, согласитесь). А Вам не кажется, что я тоже человек и в силу тех самых грубостей, которые Вы себе позволили имею все основания для личной обиды уже на Вас? Тем более, что и Ваши выпады я никаким образом не провоцировал, и никаких извинений за них не услышал (да и не нужны они мне).

Мы, конечно, не в песочнице и обиды переживем - но почему я должен продолжать разговор с неприятным мне человеком?

Не должен и не буду. И имею на это полное право. Поэтому до свидания.


 
Maaacheba   (2009-02-18 15:28) [157]


> да и зачем в них что-то заносить, если в 99% потрутся в
> 2 часа ночи, а оставшийся 1% через пару дней?

ты уж определись. Как идет речь про дырку - ты советуешь ничего не удалять и все. Как идет речь о занимаемом месте - ты пишешь, что один фиг все будет удалено. С тобой я тоже думаю диалог прекращу, спасибо участние )


 
Плохиш ©   (2009-02-18 15:29) [158]

Читал, читал это "многа букав" и так и не понял связь между дырками и занимаемым базой местом на накопителе. Кто-нибуть объясни?


 
@!!ex ©   (2009-02-18 15:33) [159]

Удалено модератором


 
oxffff ©   (2009-02-18 15:33) [160]


> Maaacheba   (18.02.09 15:28) [157]


Тебе запрос такого рода нужен?

select A.A+1,(select min(B.A) from TA B where B.A>A.A)-1   from TA A
  where
    (select min(B.A) from TA B where B.A>A.A)>A.A+1

Здесь нет концевых условий. если например предел номеров от 1 до 10000.


 
oxffff ©   (2009-02-18 15:34) [161]

Удалено модератором


 
oxffff ©   (2009-02-18 15:35) [162]


> Здесь нет концевых условий. если например предел номеров
> от 1 до 10000.


но их легко добавить. Думаю догадаешься как.


 
test ©   (2009-02-18 15:37) [163]

Maaacheba   (18.02.09 15:22) [154]
Дарю
vuk ©   (18.02.09 15:06) [145]
потом
test ©   (18.02.09 15:10) [149]
потом
sniknik ©   (18.02.09 15:19) [151]

Словами, есть таблица пользователей и таблица дырок, (*sqlLite это умеет он у меня как то 20 таблиц держал в одной базе*) поле id = client_id то есть дырки имеют id пользователя, когда пользователю не нужна его дырка он ее осовбождает поле activity = 0, и оно может быть присвоено кому угодно при такой системе, освобождение всех дырок update dirka set activity = 0,
освобождение конкретной update dirka set activity = 0 where numdirka = 3

Вот как то так? /*псевдо SQL*/
create table client(
id integer auto_increment,
fio varchar(200)
primary key id
)

create table dirka(
numDirka integer not null,
client_id integer,
activity integer not null
foreign key client_id
)


 
Anatoly Podgoretsky ©   (2009-02-18 15:38) [164]

> Плохиш  (18.02.2009 15:29:38)  [158]

Я бы объяснил, но время тратить не хочется, поэтому только резюме - не какой связи.


 
oxffff ©   (2009-02-18 15:42) [165]

Удалено модератором


 
Плохиш ©   (2009-02-18 15:43) [166]


> Anatoly Podgoretsky ©   (18.02.09 15:38) [164]

Фу, а то я было чуть не бросился перечитывать способы хранения данных, во времени бы потерял :-))


 
Ega23 ©   (2009-02-18 15:43) [167]


> - Клиентам нужно выделять номер, этот номер потом будет
> отображаться на дисплее.
>
> -Номер должен быть как можно более простой, чтобы клиенту
> удобно было искать свой номер в списке и чтобы его вывод
> занимал меньше места на устройстве отображения
>
> - клиенты могут обрабатываться в течении нескольких дней
> (хотя в 99% случаев обрабатываются за один)
>
> - есть настройка в виде границы времени, при пересечении
> которой номера должны "обнуляться" - это из ТЗ. Обычно эта
> граница ночью, допустим 2 часа ночи.
>


Есть таблица клиентов. PK - ClntID
Есть таблица номеров
create Table Numbers (Nr int PK, InUse tinyint default 0)

есть функция / процедура  GetMinNumber
Делает Select min(Nr) from Numbers where InUse=0
Если вернула NULL то делает вставку очередного :
Select @nr=IsNull(Max(Nr) + 1, 1) from Numbers;
Inset into Numbers (Nr, InUse) values (@nr, 0);


Есть третья таблица. Один к одному (или многие-ко-многим, это уже от логики зависит. Но судя по "приведённой в ТЗ" - один-к-одному)

create table ClientNumbers (UID int identity(1,1), ClntID, Nr)

Всё. "Маскировка" клиента - удалил его к лешему из ClientNumbers у всё. А инфа по нему осталась в Clients
Полное удаление - и из ClientNumbers, и из Clients

Также на ClientNumbers вешаем триггер на удаление, где по удаляемому Nr делаем update Numbers.InUse


 
AndreyV ©   (2009-02-18 15:49) [168]

> [157] Maaacheba   (18.02.09 15:28)
> ты уж определись. Как идет речь про дырку - ты советуешь
> ничего не удалять и все. Как идет речь о занимаемом месте
> - ты пишешь, что один фиг все будет удалено. С тобой я тоже
> думаю диалог прекращу, спасибо участние )

Про БЛОБы я прочёл только в последнем твоём сообщении, вот и удивлён зачем они, если записи удаляются, значит нужны коли есть. Если не удаляются так пусть и занимают сколько надо, на производительность они слабо влияют.

Впрочем, тебе и с удалением дают решения, но ты даже спасибо не сказал. Тоже обижают?


 
Maaacheba   (2009-02-18 15:52) [169]


> select A.A+1,(select min(B.A) from TA B where B.A>A.A)-1
>   from TA A
>   where
>     (select min(B.A) from TA B where B.A>A.A)>A.A+1


блин, извина, сейчас даже думать не хочется. Я уже все сделал, тут перетирают чисто ради спорта уже

Ega23, во-первых, то что ты предложил уже в нормальном виде для скулайта давно описал Юрий Зотов.
Во-вторых, в скулайте нету триггеров.

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


 
AndreyV ©   (2009-02-18 15:57) [170]

> [167] Ega23 ©   (18.02.09 15:43)

Что-то у меня складывается впечатление: ни тот ли это случай, когда база=таблица?


 
Ega23 ©   (2009-02-18 16:03) [171]

Удалено модератором


 
-SeM-   (2009-02-18 16:04) [172]


> Maaacheba   (18.02.09 15:03) [141]

т.е. система "дырок" была придумана лишь для того,

> чтобы клиенту удобно было искать свой номер в списке и
> чтобы его вывод занимал меньше места на устройстве отображения

?
а что, проще никак? ну не знаю, хеш-функцией (ID + дата) какой-то. и на непонятные "дырки" пофиг, и пользователям не обидно что у кого-то короче


 
Maaacheba   (2009-02-18 16:04) [173]

Удалено модератором


 
-SeM-   (2009-02-18 16:08) [174]

Удалено модератором


 
@!!ex ©   (2009-02-18 16:20) [175]

> [173] Maaacheba   (18.02.09 16:04)

НЕ. не катит. я отвечать не лез, только однажды вставил коротенькое замечание.
За время чтении ветки я много чего нового узнал о базах.
Но не надо разбираться в базах, чтобы оценить вашу неадекватность.
Психологи составляют псих. портреты пациентов читая переписку пациента не зависимо от темы письма.


 
Anatoly Podgoretsky ©   (2009-02-18 16:38) [176]

> -SeM-  (18.02.2009 16:04:52)  [172]

У всех девяти значные, а у меня короче - шестизначный.


 
Maaacheba   (2009-02-18 17:32) [177]

- Земля имеет форму чайника носиком внутрь!

- Очумели, что ли?
- Вы просто не понимаете, что есть форма Земли.
- Почему не понимаю? Форма земли – сплюснутый сфероид.
- И что же, по-вашему, есть сфероид?
- Эллипсоид, у которого две из трёх полуосей равны друг другу.
- А что есть эллипсоид?
- Поверхность в трёхмерном пространстве, полученная деформацией сферы вдоль трёх взаимно перпендикулярных осей. Уравнение привести?
- А что есть поверхность, пространство, деформация, сфера, уравнение?
- Слушайте, возьмите наконец толковый словарь и посмотрите!
- Толковый словарь - это наивно-обыденное представление о системе знаков.
- Хорошо, тогда возьмите учебник геометрии.
- Для познания формы Земли нужно нечто большее, чем геометрия!
- Ну да, нужны наблюдения, физика...
- Да нет, это всё ерунда.
- А что тогда не ерунда?
- Философия.
- И что же считает философия на этот счёт?
- Мир творит здравый смысл, открывая новые горизонты. Предмет деятельности осмысляет структурализм, ломая рамки привычных представлений. Согласно мнению известных философов, смысл жизни оспособляет из ряда вон выходящий знак. Сомнение создает сенсибельный бабувизм, при этом буквы А, В, I, О символизируют соответственно общеутвердительное, общеотрицательное, частноутвердительное и частноотрицательное суждения. Сомнение порождает и обеспечивает трагический конфликт, изменяя привычную реальность. Что Олигофрениус Кызыл-ордынский и обозначил как форму Земли.
- Я ничего не понимаю! Объяснитесь же понятным языком!
- Что есть понятный язык? Процесс декодирования знака невозможен без корреляции сознаний посредством метафизической смены реальности смыслов на реальность сущего.
- Это какой-то бред! Что такое корреляция сознаний? Что за величины и с каким коэффициентом должны коррелировать?
- Какие к чёрту коэффициенты? Да будет вам известно, что корреляция – это синхронистическое надмирное отображение пространства сознательного на бессознательное экзистенциальных смыслов адресата.
- Вы ошибаетесь. Корреляция — это статистическая взаимосвязь двух или нескольких случайных величин.
- Где вы набрались этих вульгарных толкований? Единственно верное определение корреляции находится в философско-экзистенциально-трансцедентальном словаре Пупкиндшухера. Стыдно не знать таких вещей!
- Постойте, мы как-то сильно удалились от темы. Так почему же Земля имеет форму чайника носиком внутрь? Ведь все исследования, даже наблюдения Земли из космоса указывают на форму сфероида!
- Наблюдения являются лишь проекцией смыслов сознательного процесса на реальность объектно-субъектного взаимодействия.
- Подождите! Может быть, вы считаете, что чайник носиком внутрь имеет форму сплюснутого сфероида?
- Да какая разница, какую форму имеет чайник носиком внутрь?!
- Огромная! Если эти формы, по-вашему, одинаковы, то и спорить не о чем.
- А что есть одинаковость?
- Нет, это невозможно! Давайте зайдём с другой стороны. У знания о форме Земли есть конкретное применение. Исходя из этой формы моряки рассчитывают курс, конструкторы – орбиты спутников и т.д. Приведите мне пример практического применения вашего знания о форме земли. Может, тогда мне станет понятнее.
- Философия не применяется в приземлённой практике. Это вам, низменным технарям, нужна грубая реализация. Философия же оперирует высшими знаниями.
- Так зачем же она тогда вообще нужна народному хозяйству?!
- Для познания истины.
- А истина заключается в том, что Земля имеет форму чайника носиком внутрь?
- Истина в том, что всё имеет форму чайника носиком внутрь, форму носика чайником внутрь, носик формы чайником внутрь и внутрь носика формой чайник. Третьего не дано.


 
Maaacheba   (2009-02-18 17:33) [178]

на мастаках диалог был бы короче )))

- Земля имеет форму чайника носиком внутрь!

- ты дурак и программа у тебя такая же


))))))))


 
Ega23 ©   (2009-02-18 17:35) [179]


> Maaacheba   (18.02.09 17:33) [178]


А разве нет?  :)


 
AndreyV ©   (2009-02-18 17:42) [180]

> [178] Maaacheba   (18.02.09 17:33)

Дырка от носика внутри чайника.:)


 
Юрий Зотов ©   (2009-02-18 17:47) [181]

НЕТ!!!!!!!!!!!!!!!! У носика 2 (ДВЕ!!!!!!!!!!) дырки.
Всем смотреть в зеркало!!!!!! До полного просветления!!!!!!!!!!!!
;о)


 
AndreyV ©   (2009-02-18 17:52) [182]

> [181] Юрий Зотов ©   (18.02.09 17:47)

Если снять крышку - дырок нет, надеть - одна.:)


 
Petr V. Abramov ©   (2009-02-18 17:52) [183]


> Юрий Зотов ©   (18.02.09 17:47) [181]

и у чайника тоже ;)


 
Ega23 ©   (2009-02-18 17:53) [184]


> и у чайника тоже ;)


Чайнег чайнегу - lupus est


 
Maaacheba   (2009-02-18 17:55) [185]


> Чайнег чайнегу - lupus


Чайнег чайнегу - волчанка?!



Страницы: 1 2 3 4 5 вся ветка

Форум: "Прочее";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 1.13 MB
Время: 0.062 c
2-1235825209
Карим Ли
2009-02-28 15:46
2009.04.19
Записать картинку в БД


11-1199738391
=BuckLr=
2008-01-07 23:39
2009.04.19
BidiMode


3-1219535721
aaaaa
2008-08-24 03:55
2009.04.19
вывести записи строкой


15-1235108630
RDen
2009-02-20 08:43
2009.04.19
Вопрос к АП (и не только) - insufficient memory


15-1234964100
@!!ex
2009-02-18 16:35
2009.04.19
ICQ опять уронили?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский