Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 17.10.2012, 04:59
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
похоже на маршалинг/сериализацию
то есть например есть objectlist, в нём другие objectlist-ы (типа папки) и объекты(файлы), всю гору объектов можно целиком сохранить/загрузить (xml/json), и без индексов
Проблема в том, что полная выгрузка нужна лишь для администрирования, а в рабочей программе-пользователе потребуется выгружать лишь нужный в данный момент фрагмент. Про вопросы экономии ресурсов я уж и не говорю, делать это надо хотя бы потому, что программа будет многопользовательская.

Цитата:
Мне то всё равно как у тебя всё будет организовано, я просто написал как это правильно/общепринято делается.
Я это понимаю. Я обычно не доверяю чужим методам. По возможности стараюсь для всего писать свои функции или тщательно изучаю готовые, ясправляя их местами (если представляю как это сделать без потерь для производительности). Поэтому целостность в состоянии поддерживать отдельная утилита (которая будет медленно но верно мониторить базу на наличие "бездомных" файлов и тд.).


И вообще, я ведь просил помочь написать класс для работы с данной моделью. Если кто либо решит заняться, мне все равно будет, как автор изменит эту модель, лишь бы не нарушил концепцию и была возможность предусмотреть любые дополнения в функционале.
Ответить с цитированием
  #17  
Старый 17.10.2012, 07:03
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от morebeauty
Я обычно не доверяю чужим методам. По возможности стараюсь для всего писать свои функции
Вот это -- да, вот это -- я понимаю! Видимо, каждый дельфист должен заново открыть для себя ООП и попытаться втиснуть его в реляционную модель. Для получения опыта -- почему бы и нет? Опыт -- штука полезная.

Цитата:
Сообщение от morebeauty
Плюсы такой модели:
Гибкость.
Простота использования.
Не требует от программиста умения работать с базами данных.
А вот тут хочу вас разочаровать: все плюсы надуманны от начала и до конца.

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

А простота использования и ориентация на неумение работать с БД -- химера и миф. Простота -- штука вообще субъективная, особенно если ее совместно с гибкостью рассматривать. А неумение программиста работать с базами данных -- недостаток, с которым надо бороться, а не потакать ему. Трактовка баз данных как черного ящика никого еще до добра не доводила.

Хочется сделать самопальный ORM? Делайте. А вот преимущества из пальца высасывать не надо. Мы и так понимаем, что это вам просто интересно.

Хотя для начала я бы посмотрел тот же SQLite. Его теперь и Opera, и Firefox где-то внутри себя применяют. Не знаю только, для чего.
Ответить с цитированием
  #18  
Старый 17.10.2012, 07:46
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Вот это -- да, вот это -- я понимаю! Видимо, каждый дельфист должен заново открыть для себя ООП и попытаться втиснуть его в реляционную модель. Для получения опыта -- почему бы и нет? Опыт -- штука полезная.
Ну а сарказм -- штука смешная. От души!


Цитата:
А вот тут хочу вас разочаровать: все плюсы надуманны от начала и до конца.

Для полноценной гибкости придется проделать огромную работу
Так само собой! Гибкость не для создателя системы, а для ее конечного пользователя! Так всегда, одни годами жопу рвут над написанием чего либо, другие потом покуривая сигару пожинают плоды. Ради этого все и делается.

Поэтому в этом
Цитата:
Хочется сделать самопальный ORM? Делайте. А вот преимущества из пальца высасывать не надо.
вы не правы...

Цитата:
Простота -- штука вообще субъективная, особенно если ее совместно с гибкостью рассматривать. А неумение программиста работать с базами данных -- недостаток, с которым надо бороться, а не потакать ему.
Я во втором своем сообщении привел пример с машинными кодами. Что же вы на них то не програмите?
А С++? Вы знаете, при каких обстоятельствах появилась идея создания этого языка на основе С? Дело в том, что программеры смогли откомпилировать абсолютно нечитабельную строку, после чего схватились за голову...
Ответить с цитированием
  #19  
Старый 17.10.2012, 09:41
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от morebeauty
Я во втором своем сообщении привел пример с машинными кодами. Что же вы на них то не програмите?
Да, я пишу на высокоуровневом ЯП, чтобы не париться. Тем не менее, SQL я пишу руками, потому как банально нравится.

Цитата:
Сообщение от morebeauty
А С++? Вы знаете, при каких обстоятельствах появилась идея создания этого языка на основе С?
Да, я читал книжку Страуструпа. Он -- человек культурный. Он почти что извиняется за нерадивых Кернигана и Ритчи, выпустивших джинна из бутылки. Правда, глядя на последний стандарт C++, можно констатировать, что мы вернулись в исходную позицию.
Ответить с цитированием
  #20  
Старый 17.10.2012, 10:00
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Да, я пишу на высокоуровневом ЯП, чтобы не париться. Тем не менее, SQL я пишу руками, потому как банально нравится.
Я, знаете ли тоже. Но когда столкнулся с необходимостью создать сложный перекрестный запрос на основе одной таблицы (который было проще некуда наваять в случае с MS Access), а вследствие некоторых особенностей вызов процедуры мне не подходил, пришлось выкручиваться. В итоге нашел два решения:
1. По циклу сформировал сложный запрос, который включал в себя еще 0-999 запросов (по циклу и условию), добившись того, что работать можно было через датасурс с ДБкомпонентами.
2. Написал очень, на мой взгляд, удобную функцию, которая по передаваемым данным возвращала двумерный массив со значениями. Для работы с ДБкомпонентами это, конечно, не подходило, но в некоторых случаях мне так было даже удобнее.


Цитата:
Да, я читал книжку Страуструпа. Он -- человек культурный. Он почти что извиняется за нерадивых Кернигана и Ритчи, выпустивших джинна из бутылки. Правда, глядя на последний стандарт C++, можно констатировать, что мы вернулись в исходную позицию.
Это да!
Но ведь идея была хороша! Жаль за реализацию ее взялись, не продумав все как следует!
Ответить с цитированием
  #21  
Старый 17.10.2012, 10:17
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

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

Объясните кратко и доступно какие преимущества даст ваш подход.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 10:20.
Ответить с цитированием
  #22  
Старый 17.10.2012, 10:44
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Объясните кратко и доступно какие преимущества даст ваш подход.
Кратко и доступно я уже объяснил. Попробую подробнее теперь.

Что для тебя было бы удобнее, например, при построении дерева категорий из базы?
1. Следующий код
Код:
procedure TForm1.GetNodeFromDB(Parent: TTreeNode; ID: Integer);
var
  RS:_Recordset;
  SQLStr:string;
  TmpTN:TTreeNode;
  TmpStr:string;
  TmpInt:integer;
begin

  SQLStr:='SELECT ' + CatSystem.CatName + ' FROM ' + CatSystem.Name +
  ' WHERE ' + CatSystem.ID + '=' + IntToStr(ID);
  rs:=ADOCon.Execute(SQLStr);
  if RS.RecordCount=1 then
  begin
    SetLength(CatIDs,Length(CatIDs)+1);
    CatIDs[High(catids)]:=ID;
    TmpStr:=VarToStr(RS.Fields.Item[CatSystem.CatName].Value) + ' (' + IntToStr(ID) + ')';
    tmptn:=tv1.Items.AddChildObject(Parent,TmpStr,Pointer(CatIDs[High(catids)]));
    TmpTN.SelectedIndex:=1;
    SQLStr:='SELECT ' + CatSystem.ID + ' FROM ' + CatSystem.Name +
    ' WHERE ' + CatSystem.CatParent + '=' + IntToStr(ID);
    rs:=ADOCon.Execute(SQLStr);
    if RS.RecordCount>0 then
    begin
      rs.MoveFirst;
      while not RS.EOF do
      begin
        tmpint:=Integer(RS.Fields.Item[CatSystem.ID].Value);
        GetNodeFromDB(TmpTN,TmpInt);
        RS.MoveNext;
      end;
    end;
    //tmptn:=TTreeNode.Create();

  end;
end;
или

2. Вызов такого метода, функции и процедуры для которого уже написаны?
Код:
ObjectSystem.FeelingTree(tv:ttreeview;RootCat:integer);

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

Какой базой проще рулить, в которой у тебя 5-100 небольших таблиц (и их количество может меняться в зависимости от потребностей, а права на создание есть не у всех пользователей, придется разруливать назначением прав и тд) или базой где всего 4-5 таблиц на все случаи жизни и создавать/удалять ничего не требуется, только создавать удалять записи в уже созданных таблицах?
Думаю, ответ очевиден.
Ответить с цитированием
  #23  
Старый 17.10.2012, 10:54
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Думаю, ответ очевиден.
Мне ответ не очевиден. Можно подробнее?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #24  
Старый 17.10.2012, 11:05
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Я бы все на SQL запрос возложил (тем более, что нормальная база может нативно с древовидной структурой работать, да и не только, может еще группировки хитрожопые делать и т.п.).
Писать такое, что в первом примере - это вообще какой-то идиотизм. У меня запрос просто препроцессором обрабатывается (ну там например имя таблички подставить), передается в АДО, туда же параметры передаются, запрос выполнился, вернул датасет, делай с ним что хочешь (можно в коллекцию его передать, дерево наполнять не обязательно по всей иерархии, достаточно лишь первые уровни заполнить, остальное подтягивать из коллекции при раскрытии узла). Всего 3 строчки кода, две из них для транзакций.

Если речь конечно идет не о стремных базах (ну там MS Access, dbfки и прочее).
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 11:11.
Ответить с цитированием
  #25  
Старый 17.10.2012, 11:09
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
У меня запрос просто препроцессором обрабатывается (ну там например имя таблички подставить), передается в АДО, туда же параметры передаются, запрос выполнился, вернул датасет, делай с ним что хочешь.
А что, заполнить treeview ты можешь из датасета одной строчкой?

Борланд сделали множество встроенных функций и процедур для упрощения жизни программисту. Создали ДБкомпоненты для удобства работы с БД. Вот только не сделали DBTreeView и другие... Приходится заполнять их вручную. Предложенная мною система будет в том числе и этим заниматься.

Последний раз редактировалось morebeauty, 17.10.2012 в 11:31.
Ответить с цитированием
  #26  
Старый 17.10.2012, 11:32
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

А чего нет то?

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


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 11:34.
Ответить с цитированием
  #27  
Старый 17.10.2012, 11:36
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от morebeauty
Создали ДБкомпоненты для удобства работы с БД.
Мы в основном датасетами оперируем. Так же есть места где заполняем деревья, но это такая тривиальная задача.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #28  
Старый 17.10.2012, 12:38
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Мы в основном датасетами оперируем. Так же есть места где заполняем деревья, но это такая тривиальная задача.
Мне это анекдот напомнило.

Привезли в военную часть экскаватор.
Командир части построил солдат и говорит:
- Радуйтесь! Теперь копать будете не лопатами а экскаватором!
Солдаты в недоумении.
- Да как же так??? Мы его даже поднять не сможем!
Ответить с цитированием
  #29  
Старый 17.10.2012, 12:54
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Смищьно, ага.

Ну а для каких целей по твоему база? Чтобы в гриды всякие текстики выводить? У ней же дофига назначений и не обязательно её с визуальными компонентами пользовать.

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

Короче все, в эту тему больше не захожу, не интересно. Можешь дальше обсмеивать онекдотами.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 17.10.2012 в 12:59.
Ответить с цитированием
  #30  
Старый 18.10.2012, 04:50
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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

Вроде нормально все объяснил. Если не понял, зачем чушь то писать?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter