Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Vingrad .NET Framework |
Автор: Exception 6.1.2006, 19:51 |
Появилась у меня одна идея. Правда, мои идеи редко завершались успешно, ну да ладно ![]() Цели:
P.S. Часть идеи взята http://forum.vingrad.ru/index.php?showtopic=77027&st=0&unread=&#entry608000, но немного изменена концепция. Заниматься разработкой буду я и все желающие присоединиться ![]() |
Автор: Exception 6.1.2006, 20:22 |
Кстати, туда можно засунуть наиболее интересные примеры из FAQ'а. |
Автор: AntonioBanderaz 6.1.2006, 20:44 |
определи основные направления |
Автор: mr.DUDA 6.1.2006, 21:30 |
Предлагаю класс TypeName - удобное средство для парсинга, хранения, сравнения и сериализации информации о типах: |
Автор: Exception 6.1.2006, 22:11 |
Хотелось бы для начала систематизировать это дело. Итак... Vingrad.Controls - наши (и не только) юзерконтролы. Сюда будем складывать украшательства типа менюшек и прочее :) Vingrad.Utils - нечто типа того, что предложил mr.DUDA. Что еще? P.S. Если есть интересные классы, постите с кратким описанием возможностей. P.P.S. Библиотеку нужно только для 2.0? Или две версии? |
Автор: dronzo 6.1.2006, 22:19 | ||
Только своё или вообще, что интересное под руку подвернётся на досуге ? ![]() |
Автор: Exception 6.1.2006, 22:38 |
Неважно, главное, чтобы с сорсами :) mr.DUDA, сам писал :) ? Как будет комп, начну складывать классы в прожект. Правда, только для 2.0. Для 1.1 пусть делает кто-нибудь другой (если это вообще нужно), ибо 2003-й студии у меня нет. |
Автор: mr.DUDA 6.1.2006, 23:26 | ||
неа, исходник не я писал, но использую часто ![]() З.Ы. а не дублируем ли мы FAQ ? ![]() |
Автор: sergejzr 6.1.2006, 23:35 | ||
FAQ - Frequently Asked Questions. Библиотеки к вопросам как то не относятся ![]()
Я думаю всё таки надо делить контент и уж конечно брать можно исключительно то, что в public domain. Самое мелое ограничение - фтоппку. И над своей лицензией возможно стоит подумать. Короче обмозгуйте всё хорошо, прежде чем начинать собирать материалы. |
Автор: Exception 6.1.2006, 23:50 |
Думаю, GPL вполне подойдет. Добавлено @ 23:50 Ну и материалы из OpenSource-проектов, соответственно. |
Автор: Void 6.1.2006, 23:52 | ||
Сильно сомневаюсь. GPL означает полный и безоговорочный запрет на использование в закрытом коммерческом коде. Оно нам надо? Что-то вроде BSD или MIT еще куда ни шло. А вообще: лучше, как сказал sergej.z, public domain. |
Автор: Exception 7.1.2006, 00:33 |
А, ну да. Забыл про эту "особенность" ЖПЛ. А вообще, все, что нам нужно - запрет на продажу самой библиотеки. А больше запретов вроде и нет. |
Автор: mr.DUDA 7.1.2006, 13:26 |
LGPL - вот то что подойдёт. Особенность этой лицензии: разрешено использование в любых проектах без каких-либо ограничений. Единственное условие лицензии: при внесении любых изменений в исходный код библиотеки, разработчику необходимо в обязательном порядке сообщить об этих изменениях нам, причём не просто сообщить - а предоставить полный изменённых исходный код, с описанием сути произведённых изменений. По такой лицензии, к примеру, распространяется 3D-движок http://www.ogre3d.org. Плюсы: большое комьюнити. Минусы: нет. |
Автор: Exception 7.1.2006, 13:38 |
ОК Добавлено @ 13:38 ОК. Дай линк почитать |
Автор: Lord Dagger 7.1.2006, 15:00 | ||
Хм, а как быть с проблемой использования unsafe code? В оригинальном framework CLR предоставляет полностью безопасные интерфейсы. У нас в этом плане намечается что-то вроде http://pinvoke.net/? Не думаю, что стоит создавать библиотеку контролов - уже много аналогов, да и не сложно это - контрол создать. Гораздо лучше сосредоточится на системной функциональности. Стоит обсудить идею сотрудничества с Microsoft. P.S. Поправил орфографию и стилистику |
Автор: Exception 7.1.2006, 15:40 |
Насчет контролов - имхо, самые лучшие и надо сунуть в библиотеку. А насчет функциональности - придумаем. Добавлено @ 15:40 Какие классы вы хотели бы видеть в библиотеке? |
Автор: Lord Dagger 7.1.2006, 16:52 |
Exception Можно сделать класс для работы с файлами архивов (zip, gzip). Также сделать быструю SOAP-сериализацию, помню, на RSDN была статья посвященная тормознутости этой функциональности в Framewok 1.1, не знаю, как там дело в 2.0 |
Автор: Exception 7.1.2006, 17:04 |
Про архивы - дельно. Поищу. Насчет быстрой SOAP - не думаю, что это необходимо. |
Автор: Lord Dagger 7.1.2006, 19:36 |
Exception Есть C# реализация zlib. Стоит встроить. |
Автор: Lord Dagger 7.1.2006, 20:37 |
Уверен в необходимости использования библиотеки LZMA. Могу заняться ее имплементацией в среде .Net. Добавлено @ 20:37 Кстати, а как назовем библиотеку ![]() ![]() |
Автор: Void 7.1.2006, 20:46 | ||
Так вроде бы http://www.7-zip.org/sdk.html? |
Автор: Lord Dagger 7.1.2006, 21:03 |
Void Имелось в виду - включить эту реализацию в состав нашего framework. |
Автор: Exception 7.1.2006, 21:08 |
Void, там есть ограничение на изменение. Нам такая не пойдет. Дело в том, что хочется сделать архиватор так: есть пр-во имен Vingrad.Files.Archive, в нем есть абстрактный класс Archiver (с абстрактными методами по архивации/деархивации). А потом для наиболее распространенных типов архивов наследовать от него (ZipArchiver, RarArchiver, etc). |
Автор: Lord Dagger 7.1.2006, 21:18 | ||
Да, именно так ![]() |
Автор: mr.DUDA 7.1.2006, 21:24 | ||
Vingrad.Framework - вроде, название неплохое
http://www.gnu.org/copyleft/lgpl.html P.S. Насчёт архиваторов, могу предложить http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx |
Автор: Lord Dagger 7.1.2006, 21:34 | ||||
mr.DUDA Хм. Это то, о чем я говорил, но есть один момент - у нее рецензия GPL, это нам не подходит. И одной этой либой явно не обойтись - мало форматов знает ![]() Добавлено @ 21:32
Может быть, Вы имели ввиду http://www.gnu.org/copyleft/lesser.html ![]() Добавлено @ 21:34
Если не ошибаюсь;) |
Автор: Void 7.1.2006, 21:37 | ||
Исходники распаковщика открыты с единственным ограничением: запрет на восстановление оригинального алгоритма сжатия. |
Автор: mr.DUDA 7.1.2006, 21:41 | ||
Угу, именно это имел ввиду. |
Автор: Exception 7.1.2006, 22:07 |
Просмотрел, вроде подходит. Кто может заняться (де)архиватором? Для начала нужен абстр. класс Vingrad.Framework.FileIO.Archiving.Archivator с override-пропертями типа FileExtension и override-методами для паковки/распаковки. Сейчас я не за компом, посему заняться не могу.. |
Автор: Lord Dagger 7.1.2006, 22:36 | ||
Exception Могу попробовать, только надо определить функциональность требуемую.
А почему бы не Vingrad.Framework.IO.File.Archiving.Archiver? Добавлено @ 22:27 Думаю, вначале надо выстроить базовую иерархию пространства имен и его классов. Желательно, оформить графически ![]() Давайте обсудим детали. А то начинать красить доски, когда еще столбы для забора не поставили... ![]() Добавлено @ 22:36 Организовал SVN репозиторий: svn://svn.subversion.ru/usr/local/svn/vingrad_framework Рекомендую использовать клиент http://tortoisesvn.tigris.org/. Для создания аккаунта обращайтесь ко мне ![]() |
Автор: Exception 7.1.2006, 22:59 |
Гы. У меня компа нет под рукой (. Других вариантов нет? Типа irc и т.п.? А вообще, нам бы чатик простенький... По сабжу: Archiver, естессно ). Хотя, наверное проще будет разделить его на 2 кл. - Archiver и Dearchiver. Archiuer имеет private-конструктор и три конструктора с параметрами: один принимает массив файлов, другой - массив строк-имен файлов, третий - каталог для архивации. Ну и развивай идею дальше :) |
Автор: Lord Dagger 7.1.2006, 23:28 | ||||
Exception
Брр. Не пойму, как irc может служить алтернативой SVN? ![]() Чат - есть тот же Skype, irc (хотя его люблю меньше)
Ну это дело вкуса ![]() Надо бы понять, из каких частей будет состоять весь namespace... Пока я представляю себе это так: Framework->IO->File->Archiving // Файловый ввод\вывод Framework->IO->Network->FTP // Это я для примера, сюда будем помещать сетевой ввод\вывод Framework->System // Системные функции. К примеру, функциональность для работы с Event Log Продолжаем список ![]() |
Автор: Lord Dagger 7.1.2006, 23:50 |
Поступили мне предложения реализовать формат для хранения информации, более компактный и быстрее парсимый, чем XML. Народ предлагает текстовый и бинарный формат реализовать. Можно будет подумать, тем более, что многие все равно разрабатывают свои форматы ![]() |
Автор: Exception 8.1.2006, 00:29 |
Более удобного, честно говоря, не представляю. Зачем изобретать велосипед? По сабжу: (using Vingrad.Framework;) Media - тут будут различные проигрыватели и т.п. Text - функции String'а "в удобной упаковке" - поиск по regexp, поиск по wildcards, замена и т.п. |
Автор: Medved 8.1.2006, 01:13 |
В целом, на мой взгляд это хорошая идея. Только прежде чем вдаваться в конкретные детали реализации, необходимо четко очертить предметную область. Т.е. необходимо выявить и установить все те требования, которым эта библиотека должна отвечать. Прежде чем приступать к реализации этой библиотеки, ее необходмо сначала тщательно продумать. Начать имхо лучше с того, что надо разработать ее варианты использования (Use Case). Если кто-нибудь не значет что это такое, рекомендую в первую очередь изучить UML, и только затем браться за проектирование этой либы. Если кто-то считает, что ему как программисту, не нужен UML, то я могу только посочувствовать этому человеку. |
Автор: Exception 8.1.2006, 01:45 |
Хм.. Use Case для библиотеки? Зачем? |
Автор: Lord Dagger 8.1.2006, 02:30 | ||||
Я согласен, мы уже к этому приступили.
Знаем, батенька, знаем ![]() Без UML в проектах никуда, как и без четкой документации. Только пока не очерчены примерные контуры затеи, за UML рано браться. Думаю, за два-три дня соберутся основные идеи, затем - Microsoft Project нам поможет. Составим шаблон, будем детализировать "сверху вниз". Отдельно - спецификации кодирования и проекта. В качестве средства документирования осмелюсь предложить doxygen. |
Автор: Medved 8.1.2006, 03:14 | ||
Диаграмы вариантов использования (Use Case) как раз-то и помогают в четком определение границ предметной области и уточнении требований к разрабатываемой системе. Кроме того, использование этих диаграм закладывает основу для создания словаря терминов, для конкретной предметной области, с помощью которого в дальнейшем и будут общаться и понимать друг-друга как разработчики, так и другие члены команды (системные аналитики, системные архитекторы, тестеры, и т.д.) |
Автор: Exception 8.1.2006, 03:31 |
Эээ.. Насколько я знаю, use case применяются для описания конкретных операций взаимодействия юзера (а так как мы пишем библиотеку, программиста) с каким-либо из наших классов или их системой. Дык как можно их строить, если мы еще не до конца сформулировали состав этой библиотеки и ее задаци? |
Автор: Medved 8.1.2006, 21:28 | ||
Рекомендую почитать какой-нибудь учебник по UML. К примеру того же Леоненкова. Очень хорошо пишет. |
Автор: Exception 8.1.2006, 23:39 |
Pegas, линка нету почитать? Просто библиотека задумывалась как "свалка" классов, а не как цельный продукт. Посему не знаю, что тут можно моделировать.. Объясни подробнее, плз |
Автор: Medved 9.1.2006, 11:53 |
Есть, в разделе нашего форума, посвященному UML и системному анализу. Там прикрепленная тема, в которой собирают сслыки на интересные рессурсы. Или воспользуйся поиском по форуму. |
Автор: arilou 9.1.2006, 22:22 | ||||
В итоге может реально получиться свалка классов, а не целый продукт ![]()
В это то и вся соль. Строятся use-cases как будтно бы биб-ка уже написана, так, чтобы все было как можно удобнее для юзера (или программера, в зависимости от target audience проекта). И на основе оных потом проектируются классы. Это может показакться странным, но какая-то сермяжная правда в этом есть. А идея хороша. Я думаю, что надо определить общую "кучу фич", разбить ее на большие группы неймспейсов. Потом выделить группы по майлстоунам (типа версия 1, версия 2, и т.д.) и распределять между программерами на реализацию. От себя могу предложить реализацию паттерна registry с поддержкой отложенного поиска объектов 8-) (.NET 2.0). Она подходит для создания списков и иерархических структур, где необходимо дать возможность третьей стороне добавить элемент в реестр по запросу (lazy-load поведение). Я сам на ее основе делал иерархическую систему плагинов. |
Автор: Exception 11.1.2006, 13:27 |
Млин... А не мог бы кто-нибудь подумать над use-cases? Ну не знаю я UML нормально ) не хочется, чтобы проект умер. На данный момент нужен тот, кто знает uml и мог бы помочь с этим. Я готов заниматься конкретными классами/кодингом. |
Автор: Medved 11.1.2006, 13:37 |
Очень разумное решение Exception. На мой взгляд, ты очень правильно смог оценить свои силы, и не стал взваливать на себя больше, чем можешь понести на данный момент. Такая объективность достойна плюса. Держи... Для увиличения своей "грузоподъемности" я бы порекомендовал начать с прочтения книги http://www.helloworld.ru/texts/comp/other/oop/index.htm. ИМХО это первый шаг, к изучению UML. |
Автор: dronzo 11.1.2006, 13:46 |
Пробежавшись по форумам (всем), наткнулся на обилие тем, где спрашивается о том, как работать с COM-портом. Ради интереса загнал "COM-порт" в поиск и получил 24 страницы ссылок на информацию для размышления ![]() |
Автор: Poison80 11.1.2006, 16:14 | ||
а смысл?! класс для работы с ком портом идет в Net framework 2.0 |
Автор: dronzo 11.1.2006, 17:17 |
Poison80 Нигде до этого в теме не было сказано, что проект будет ориентирован исключительно на .NET Frawework 2.0. |
Автор: Medved 11.1.2006, 19:00 | ||
ИМХО это подразумевается само собой. |
Автор: Exception 25.1.2006, 17:56 | ||||
DatasetSerializer.vb
Расставил. Использование:
Полезен, например, если движок БД возвращает массив бизнес-объектов, а необходимо выполнить databounding. |
Автор: Medved 25.1.2006, 18:04 |
Если можно, то отформатируй пожалуйста код. Так сложно его читать. |
Автор: Exception 25.1.2006, 20:23 |
Добавлено @ 20:26 |
Автор: Exception 30.1.2006, 16:45 |
fixed ![]() Плюс разъяснение, зачем этот код |
Автор: Exception 20.3.2006, 22:42 |
Так-с... ![]() Похоже, энтузиастов, готовых сюда складировать решения, не наблюдается ![]() |
Автор: Xenon 11.1.2007, 18:06 |
И умерло ![]() |
Автор: Gregorian 11.1.2007, 18:54 |
Капец. ![]() |
Автор: mr.DUDA 11.1.2007, 19:21 |
Нет, ну примеров-то полно. Правда все они по темам раскиданы, самому иногда искать приходилось. |
Автор: Real 2.1.2008, 23:10 |
Я хачу добавить методы до .NET Framework? |
Автор: Kefir 3.1.2008, 10:34 |
Оп. Привет. Ну, в общем, задумка интересная. Только со своей стороны не могу чего-то особенного предложить. Из интересного есть два контрола для WPF, а они, как я понял, не очень подходят для этого дела. Делают очень простые вещи. Первый - для просмотра FlowDocument с возможностью забайндить документ (по дефолту контролы от мс могут читать только с диска). Второй же контрол - логический UniformGrid. То биш поддерживает логический скроллинг (из МС-овских контролов логический скроллинг поддерживают только StackPanel и VirtualizingStackPanel). Ещё можно замутить WebBrowser для WPF (опять же Frame не поддерживает эвентов отслеживания загрузки), но это будет на интеропе с обычным винформовым браузером. А вообще WebBrowser-а очень не зватает нативного для ВПФ. И ещё вам на рассуждения - хэш функции с простым использованием (Hash.SHA1(String s) или Hash.MD5(File f)). Будет очень полезно. Добавлено через 35 секунд Ух, не заметил, что тема настолько старая В)))) |
Автор: kurzon 3.1.2008, 17:43 |
Как добавить методы до .NET Framework? 2Модеры Закрепите ету тему!!! |
Автор: ivashkanet 3.1.2008, 17:51 |
Ну вот Реал и запалился ![]() Так безграмотно написать мог только один человек |
Автор: mr.DUDA 3.1.2008, 17:59 | ||
|