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

Вниз

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

 
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.



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

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

Наверх




Память: 0.84 MB
Время: 0.133 c
11-1198729260
earl Grey
2007-12-27 07:21
2009.04.19
VGA и размеры формы.


2-1235823045
huge
2009-02-28 15:10
2009.04.19
Сохранение в файл объекта


2-1236148634
И. Павел
2009-03-04 09:37
2009.04.19
Приостановка программы с освобождением ресурсов


2-1235994425
Neket
2009-03-02 14:47
2009.04.19
Проблема с задание Range в Диаграмах Excel


15-1234863241
Headlong
2009-02-17 12:34
2009.04.19
Установка Delphi 6





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский