Re[26]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 17.10.07 19:41
Оценка:
Здравствуйте, adontz, Вы писали:

A>А какая разница? Важно, что функциональность уже есть, а откуда она там взялась не важно.

Спуллер должен спулить задания для принтера.
Знать про несколько принтеров не его работа.

A>А вот и фиг. Ты сейчас мало того что переиспользовал спулеры, так ещё и жёстко забил сценарий использования, гд принтер жёстко задаётся. Я вполне могу захотеть печатать (и это поддерживается в реальной жизни, это не фантазии!) на любом свободном принтере. То есть понятие "свободный принтер" перестаёт быть внутренним для спулера и наружу (непонятно зачем) выносятся все детали реализации очереди печати. Я могу захотеть печатать на любом свободном принтере в котором есть непустой лоток для листов А3. Это всё спулер уже умеет, но ты решил эту функциональность продублировать. Вот это и есть дублирование и усложнение.

http://en.wikipedia.org/wiki/Spooling
Те spool это просто очередь к медленному девайсу.
Все остальное придумали мегаархитекторы которые смешали все в одном.

A>Это реалия жизни. Спроси у любого админа, как ему удобнее работать с журналами и их конфигами.

Спрашивал.
Их тут у меня 7 штук сидит...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 17.10.07 20:00
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Спуллер должен спулить задания для принтера.

WH>Знать про несколько принтеров не его работа.

Мы фантазируем или говорим про реальный принт-спулер, скажем, встроенный в Microsoft Windows? Потому что ты не можешь написать все-на-свете-программы и надо учитывать реальные возможности уже существующих систем, а не то как ты бы хотел их видеть.

WH>Все остальное придумали мегаархитекторы которые смешали все в одном.


Не важно, важно что это уже есть, но ты пишешь копию (удорожая создание и поддержку проекта) из эстетических соображений. Это не адекватное поведение. Если система поддерживает некоторую функциональность, даже если лично тебе кажется, что функциональность выходит за видимые тобой идеальные рамки для данной системы, её лучше повторно использовать, а не бороться с некими мифическими мегаархитекторами расплачиваясь человеко-часами за "красивую" архитектуру. Спулер уже поддерживает работу с множеством принтеров. Не важно нравится тебе это или нет. Предлагаемый тобой подход похож на поведение начинающих, которые не разобравшись с большой и сложной библиотекой начинают писать нелепые обёртки и велосипеды. В итоге получаем код вида
DateTime dt = DateTime.Now;
string date = dt.Year.ToString() + "/" + dt.Month.ToString().PadRight(2, '0') + "/" + dt.Day.ToString().PadRight(2, '0');

потому что у идеологически правильного DateTime не должно быть перегруженных методов ToString. Да кого это волнует? Бери готовый рабочий код из библиотеки и не выпендривайся!

WH>Спрашивал.

WH>Их тут у меня 7 штук сидит...

Плохо спрашивал.
RFC 3164 &mdash; The BSD Syslog Protocol

Внимательно смотреть раздел Definitions and Architecture, вот этот кусочек
         +------+         +---------+
         |Device|---->----|Collector|
         +------+         +---------+

         +------+         +-----+         +---------+
         |Device|---->----|Relay|---->----|Collector|
         +------+         +-----+         +---------+

         +------+     +-----+            +-----+     +---------+
         |Device|-->--|Relay|-->--..-->--|Relay|-->--|Collector|
         +------+     +-----+            +-----+     +---------+

         +------+         +-----+         +---------+
         |Device|---->----|Relay|---->----|Collector|
         |      |-\       +-----+         +---------+
         +------+  \
                    \      +-----+         +---------+
                     \-->--|Relay|---->----|Collector|
                           +-----+         +---------+

         +------+         +---------+
         |Device|---->----|Collector|
         |      |-\       +---------+
         +------+  \
                    \      +-----+         +---------+
                     \-->--|Relay|---->----|Collector|
                           +-----+         +---------+

         +------+         +-----+            +---------+
         |Device|---->----|Relay|---->-------|Collector|
         |      |-\       +-----+         /--|         |
         +------+  \                     /   +---------+
                    \      +-----+      /
                     \-->--|Relay|-->--/
                           +-----+

и много думать о нормальных системах журналирования. SysLog, кстати, считается одной из простейших систем.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[14]: По поводу паттерна singleton и не только
От: Cyberax Марс  
Дата: 18.10.07 05:39
Оценка:
Здравствуйте, adontz, Вы писали:

A>>>Злоупотребление IServiceProvider не лучше. Программист "садится" на этот подход и начинает пихать в IServiceProvider не только опциональные зависимости, но и объязательные. В результате у нас не видно снаружи что реально требуется внутри и внутри появляется куча проверок if (service != null).

C>>А для этого нужно использовать для создания объектов фабрики, которые автоматически разрешают нужные зависимости.
A>В итоге ты опять получишь синглтон, только в крайне извращённой форме. Правой рукой левое ухо...
Не обязательно. Фабрику можно настроить, чтобы она штамповала новые объекты по требованию и т.п.
Sapienti sat!
Re[15]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 18.10.07 14:53
Оценка:
Здравствуйте, Cyberax, Вы писали:

A>>В итоге ты опять получишь синглтон, только в крайне извращённой форме. Правой рукой левое ухо...

C>Не обязательно. Фабрику можно настроить, чтобы она штамповала новые объекты по требованию и т.п.

Да вобщем-то синглтон и так создаётся по требованию
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[28]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 18.10.07 15:21
Оценка:
Здравствуйте, adontz, Вы писали:

A>Мы фантазируем или говорим про реальный принт-спулер,

Мы говорим про правильную архитектуру.

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

Где я сказал что я пишу свой спуллер для принтера?

A>Это не адекватное поведение.

За то ты у нас очень адекватный.

A>Плохо спрашивал.

A>RFC 3164 &mdash; The BSD Syslog Protocol
хъ
A>и много думать о нормальных системах журналирования. SysLog, кстати, считается одной из простейших систем.
Мои логгеры это умеют.
А еще они умеют слать данные в это самый SysLog...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[29]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 18.10.07 19:27
Оценка:
Здравствуйте, WolfHound, Вы писали:

A>>Мы фантазируем или говорим про реальный принт-спулер,

WH>Мы говорим про правильную архитектуру.

Правильная архитектура, на мой взгляд, разрабатывается исходя из текущей обстановки. То есть разбиение на модули далеко не всегда академическое, если часть модулей уже готова (legacy, 3rd party, etc.). В этой обстановке утверждать что некоторый паттерн А всегда лучше паттерна Б абсолютно неправильно. Иногда лучше таскать зависимости через контейнеры, иногда лучше следать синглтон. Хорошо что мы пришли к единому пониманию понятия хорошо (когда изменени затрагивает минимум кода), плохо что ты подход хороший часто рассматриваешь как подход хороший всегда.

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

WH>Где я сказал что я пишу свой спуллер для принтера?

Ты утверждал что их может понадобиться два и это надо объязательно предусмотреть. Я постарался объяснить почему не может. Очень жаль, если ты не понял.

A>>Это не адекватное поведение.

WH>За то ты у нас очень адекватный.

Не переходи грань интересной дискуссии. Пособачиться можно в СВ.

WH>Мои логгеры это умеют.

WH>А еще они умеют слать данные в это самый SysLog...

Если твои логгеры действительно это умеют, непонятно зачем заводит их два... Что-то они, наверное, всё же, не умеют.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[30]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 18.10.07 19:54
Оценка:
Здравствуйте, adontz, Вы писали:

A>Правильная архитектура, на мой взгляд, разрабатывается исходя из текущей обстановки. То есть разбиение на модули далеко не всегда академическое, если часть модулей уже готова (legacy, 3rd party, etc.). В этой обстановке утверждать что некоторый паттерн А всегда лучше паттерна Б абсолютно неправильно.

И превратить систему в макароны?
Нет уж спасибо. Насмотрелся.

A>Иногда лучше таскать зависимости через контейнеры, иногда лучше следать синглтон.

Нет случаев когда синглетон лучше.
Вобще нет.

A>Хорошо что мы пришли к единому пониманию понятия хорошо (когда изменени затрагивает минимум кода), плохо что ты подход хороший часто рассматриваешь как подход хороший всегда.

Я рассматриваю синглетоны как всегда плохой подход.

A>Ты утверждал что их может понадобиться два и это надо объязательно предусмотреть. Я постарался объяснить почему не может. Очень жаль, если ты не понял.

Все твое объеснение свелось к тому что так сделано в венде.

A>Не переходи грань интересной дискуссии. Пособачиться можно в СВ.

Я чтоли про неадекватное певедение начал?

A>Если твои логгеры действительно это умеют, непонятно зачем заводит их два... Что-то они, наверное, всё же, не умеют.

Все они умеют.
Просто они спроектированны по умному.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[31]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 18.10.07 20:07
Оценка:
Здравствуйте, WolfHound, Вы писали:

A>>Правильная архитектура, на мой взгляд, разрабатывается исходя из текущей обстановки. То есть разбиение на модули далеко не всегда академическое, если часть модулей уже готова (legacy, 3rd party, etc.). В этой обстановке утверждать что некоторый паттерн А всегда лучше паттерна Б абсолютно неправильно.

WH>И превратить систему в макароны?
WH>Нет уж спасибо. Насмотрелся.

Ну тогда раз WinAPI спроектирован не лучшим образом откажемся от него и всё напишем сами. А ещё .Net Framework местами кривоват, тоже в топку. MFC/VCL/Qt? Все всякого сомнения не без огрех. Напишем всё сами. Угадал? Ты что, действительно пользуешься только библиотеками внутренней разработки? Это даже не смешно.

A>>Иногда лучше таскать зависимости через контейнеры, иногда лучше следать синглтон.

WH>Нет случаев когда синглетон лучше.
WH>Вобще нет.

Верь в это, ага. Сие есть догма.

A>>Хорошо что мы пришли к единому пониманию понятия хорошо (когда изменени затрагивает минимум кода), плохо что ты подход хороший часто рассматриваешь как подход хороший всегда.

WH>Я рассматриваю синглетоны как всегда плохой подход.

Я с тобой не согласен, хотя бы потому что не может быть нечто плохим или хорошим всегда. Этот спор напомнил мне одно сообщение...
http://www.rsdn.ru/Forum/message/1600906.aspx
Автор: Sinclair
Дата: 19.01.06

  1. Сначала ты не знаешь, что нельзя делать то-то
  2. Потом знаешь, что нельзя делать то-то
  3. Потом ты понимаешь, что иногда таки можно делать то-то
  4. Ну а потом ты понимаешь, что помимо того-то существует еще шестьдесять шесть способов добиться желаемого, и все из них практически равноправны.
  5. Когда тебя спрашивают "как мне добиться желаемого", ты быстро перебираешь в уме эти шестьдесять шесть способов, прикидываешь то общее, что в них есть, вздыхаешь и говоришь: "вообще-то, главное — гармония."
  6. На вопрос обиженных учеников: "а как ее добиться?", ты говоришь: "никогда не делайте то-то".

Только я пока не понял, ты на втором шаге или на шестом.

A>>Ты утверждал что их может понадобиться два и это надо объязательно предусмотреть. Я постарался объяснить почему не может. Очень жаль, если ты не понял.

WH>Все твое объеснение свелось к тому что так сделано в венде.

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

A>>Не переходи грань интересной дискуссии. Пособачиться можно в СВ.

WH>Я чтоли про неадекватное певедение начал?

Даже если не ты, продолжив, ты не стал менее причастен.

A>>Если твои логгеры действительно это умеют, непонятно зачем заводит их два... Что-то они, наверное, всё же, не умеют.

WH>Все они умеют.
WH>Просто они спроектированны по умному.

Для меня, одно только то что их надо два, свидетельствует о плохом дизайне.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[32]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 19.10.07 15:17
Оценка:
Здравствуйте, adontz, Вы писали:

A>Напишем всё сами. Угадал? Ты что, действительно пользуешься только библиотеками внутренней разработки? Это даже не смешно.

Зачем переписать?
Можно просто обернуть в правильный интерфейс.
Времени занимает не много за то потом экономит кучу внемени и нервов.

A>Верь в это, ага. Сие есть догма.

К сожелению практика.

A>Я с тобой не согласен, хотя бы потому что не может быть нечто плохим или хорошим всегда. Этот спор напомнил мне одно сообщение...

Не так.
Есть вещи которые плохие всегда

A>Только я пока не понял, ты на втором шаге или на шестом.

Ты действительно хочешь перейти на личности?

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

Ты это откуда взял?

A>Для меня, одно только то что их надо два, свидетельствует о плохом дизайне.

Смелое заявление особенно учитывая что ты не видил их дизайн...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[33]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.10.07 15:36
Оценка:
Здравствуйте, WolfHound, Вы писали:

A>>Напишем всё сами. Угадал? Ты что, действительно пользуешься только библиотеками внутренней разработки? Это даже не смешно.

WH>Зачем переписать?
WH>Можно просто обернуть в правильный интерфейс.

Если у обёртки функциональность меньше, то этон е правильно вообще говоря.

WH>Времени занимает не много за то потом экономит кучу внемени и нервов.


A>>Для меня, одно только то что их надо два, свидетельствует о плохом дизайне.

WH>Смелое заявление особенно учитывая что ты не видил их дизайн...

Мне достаточно видеть дизайн множества хороших успешных библиотек журналирования чтобы знать как хорошо, а так же написать свою, пройдя множество ошибок дизайна, чтобы понять почему это хорошо.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[34]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 19.10.07 17:36
Оценка:
Здравствуйте, adontz, Вы писали:

A>Если у обёртки функциональность меньше, то этон е правильно вообще говоря.


Например есть такая хрень называется LibJPEG.
Вся ее функциональность в общем случае нафиг не нужна.
Но ее API такое что
Например для работы с этой либой напрямую необходимо использовать setjump/longjump...
И что по твоему для этого безобразия не нужно делать обертки?
Или может быть ты предложешь читать/писать jpeg'и ручками?

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

А может ты просто не видел действительно хороших?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[35]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.10.07 17:52
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Например есть такая хрень называется LibJPEG.

WH>Вся ее функциональность в общем случае нафиг не нужна.
WH>Но ее API такое что
WH>Например для работы с этой либой напрямую необходимо использовать setjump/longjump...
WH>И что по твоему для этого безобразия не нужно делать обертки?
WH>Или может быть ты предложешь читать/писать jpeg'и ручками?

Не делай вид, как будто не понял о чём я говорю. Я говорил о том, что есть, например, имеет место API вида.
HANDLE StartJpeg();
void StopJpeg(HANDLE hLibrary);
void SaveJpeg(HANDLE hLibrary, string path, LPVOID lpData);
void LoadJpeg(HANDLE hLibrary, string path, LPVOID * lplpData);


то делать обёрки вида
class JpegReader
{
   void LoadJpeg(string path, LPVOID * lplpData);
}

class JpegWriter
{
   void SaveJpeg(string path, LPVOID lpData);
}

тем более, предоставлять только одну из них — неправильно.

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

WH>А может ты просто не видел действительно хороших?

Ну так опубликуй её, напиши статью о правильном дизайне библиотек журналирования. А то как-то странно, куча программистов на многих языках многе годы пользуется однотипными библиотеками с неправильной архитектурой, а внезапно достигший нирваны WolfHound жмотится и не хочет делиться знаниями. Нехорошо с твоей стороны.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[30]: По поводу паттерна singleton и не только
От: minorlogic Украина  
Дата: 19.10.07 18:20
Оценка:
Господа , можно я вмешаюсь .

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

И у сингелтона может быть интерфейс который надо тащить и наоборот глобальный getInstance может возвращать различные копии.

Предлагаю сузить круг обсуждения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[36]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 19.10.07 18:40
Оценка:
Здравствуйте, adontz, Вы писали:

A>Не делай вид, как будто не понял о чём я говорю.

Мы вроде говорили о заворачивание плохого API в хороший.
Или как?

A>Я говорил о том, что есть, например, имеет место API вида.

A>
A>class JpegReader
A>{
A>   void LoadJpeg(string path, LPVOID * lplpData);
A>}

A>class JpegWriter
A>{
A>   void SaveJpeg(string path, LPVOID lpData);
A>}
A>

Это по твоему хороший API?
Мда...

Вот как надо
    namespace Img = CensoredNamespace;

    boost::intrusive_ptr<Img::ImageManager> manager = new Img::ImageManager();
    manager->addProvider(new Img::ImageProviderJpeg(), 10);
    manager->addProvider(new Img::ImageProviderPng(), 10);
    manager->addProvider(new Img::ImageProviderGif(), 10);
    manager->addProvider(new Img::ImageProviderUnknown(new Img::ImageProviderPng()), 0);

    Img::ImagePtr image = manager->loadFromFile(fileName);
    
    image = Img::resize(image, 100, 100);

    manager->saveToFile(image, resizedFileName);

В данном случае могут быть загружены, отмасштабированны и сохранены все 3 формата. resize как и все остальные алгоритмы сохранаяет информацию о формате.

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

Кстати провайдеры про файлы ничего не знают. Они работают с абстрактным хранилищем которое имеет произвольный доступ.

A>Ну так опубликуй её, напиши статью о правильном дизайне библиотек журналирования.

Лень.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[37]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.10.07 19:38
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Это по твоему хороший API?

WH>Мда...

Всё ещё не понимаешь о чём я говорил?
Мда

A>>Ну так опубликуй её, напиши статью о правильном дизайне библиотек журналирования.

WH>Лень.

Слив защитан. Скучно с вами сударь.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[38]: По поводу паттерна singleton и не только
От: AndrewJD США  
Дата: 19.10.07 19:55
Оценка: +1
Здравствуйте, adontz, Вы писали:

WH>>Это по твоему хороший API?

WH>>Мда...

A>>>Ну так опубликуй её, напиши статью о правильном дизайне библиотек журналирования.

WH>>Лень.

A>Слив защитан. Скучно с вами сударь.


Я конечно дико извиняюсь, что вмешиваюсь, но, ИМО, сливаешь ты
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[38]: По поводу паттерна singleton и не только
От: WolfHound  
Дата: 19.10.07 20:07
Оценка:
Здравствуйте, adontz, Вы писали:

A>Всё ещё не понимаешь о чём я говорил?

Ну так ты скажи внятно что ты сказать то хотел?

A>Слив защитан. Скучно с вами сударь.

Прав тот кто первым сказал "слив засчитан"? Да Рома ты крут.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[39]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.10.07 20:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

A>>Всё ещё не понимаешь о чём я говорил?

WH>Ну так ты скажи внятно что ты сказать то хотел?

Я хотел сказать что толстые обёртки неотражающие структуру оборачиваемой сущности зачастую (да чего уж там, практически всегда) приводят к перерасходу ресурсов. В примере выше, представь себе что функция StartJpeg очень долго выполняется или инициализирует внутренние структуры потребляющие много ресурсов. Разделили идеологически на Reader и Writer (типа так правильно) или просто сперва написали Reader потому что надо было только читать, а когда захотелось писать не стали везде переименовывать и просто сделали Writer поимев проблемы с производительностью на ровном месте. Отсюда следует, что надо хорошо понимать суть оборачиваемой сущности. А как только это понимание настанет, желание обрачивать кривую архитектуру сразу отпадёт, потому что нельзя вот так бесплатно поменять принципы работы построив новый фасад к старому дому.

A>>Слив защитан. Скучно с вами сударь.

WH>Прав тот кто первым сказал "слив засчитан"? Да Рома ты крут.

log4net общедоступен, Nabu.Logging общедоступна. Все они по твоему мнению бредовые библиотеки, потому что там можно обойтись (не теряя функциональности, удобства, и т.д.) одним Root Logger, хотя конечно технически сделать два и более ничто не мешает. Представить свой правильный вариант ты отказался. Ну и кто сливает? Где же описание этой хвалённой "правильной" архитектуры? Тебе видите ли лень? Извини это не аргумент.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[39]: По поводу паттерна singleton и не только
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.10.07 20:42
Оценка:
Здравствуйте, AndrewJD, Вы писали:

A>>>>Ну так опубликуй её, напиши статью о правильном дизайне библиотек журналирования.

WH>>>Лень.
A>>Слив защитан. Скучно с вами сударь.
AJD>Я конечно дико извиняюсь, что вмешиваюсь, но, ИМО, сливаешь ты

Чего это я сливаю, когда WolfHound утверждает что щасте есть, но показать отказывается?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[40]: По поводу паттерна singleton и не только
От: AndrewJD США  
Дата: 20.10.07 11:16
Оценка:
Здравствуйте, adontz, Вы писали:

A>Чего это я сливаю, когда WolfHound утверждает что щасте есть, но показать отказывается?


WolfHound привел пример, как он видит счастье. Пройди по пунктам и напиши почему он не прав, с аргументами
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.