Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместное создание оболочки к C# World! А также к World C++, ASM World и другим. 
:(
    Опции темы
Softaz
Дата 18.7.2006, 10:35 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Оболочка пишется на C# под справочники C# .NET WorldWorld C++ и другие.

Сам справочник можно скачать ниже (более 5500 статей):
------------------------------------------------------------------------------------------------------------------------------
1. Можно скачать все сразу по ссылке (285186117 Байт) - пароль: www.rootkits.ru
------------------------------------------------------------------------------------------------------------------------------

Заметьте, что просмоторщик статей - это переделанный DW6, а для обновленной версии Вы можете поменять его на NET World - что вам больше нравится.

Скачать оболочку NET World:
Программа v0.7 (1.2МБ)
Обновление до v0.75 (0.3МБ) -- замените файлы
Исходники v0.6 (3.3МБ) -- исходники.
Исходники + Программа v0.6 (8.7МБ) -- Если затрудняетесь с компиляцией исходников ссылкой выше, качайте этот архив..

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

Кто заинтересовался, скачивайте проект, открывайте в VS2005, добавляйте функциональность. Хотя бы полезную формочку с контролами, которая облегчит жизнь smile Либо способ хранения 30000 разнородных статей. 

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

Заранее всем спасибо!

Если у Вас есть весь скаченный архив Net World со старой оболочкой (DW6), то достаточно распаковать новую оболочку в директорию, где лежит [его можно удалить] файл NET.exe и находится директория со статьями /base/ (в ней должен находиться файл базы данных - вместо файла дерева как это было в DW6 - db.net). Запускать NET World.exe

Пожелания отправлять в PM или в форум или на email (указан в программе)

Скриншот программы смотрите в присоединенном файле

©
Программа и статьи (далее - "Сборник") распространяются на условиях "AS IS" ("как есть"). Это означает, что ни авторы статей, ни редакторы сборников не несут никакой ответственности. Вся информация в сборнике дана для ознакомления и ни в коей мере не побуждает к действию/бездействию.

Авторские права:
Мы старались делать ссылки на сайт автора и/или указывать его e-mail. К сожалению, примерно 30% статей не содержат авторских реквизитов.
Если Вы являетесь автором -- свяжитесь через сервис личных сообщений, указав названия статей, ссылки на сайт, e-mail и т.п. Мы с радостью добавим Ваш копирайт в статью.

Цель создания архива статей -- повышение грамотности программистов, она не несет никакой коммерческой выгоды с нашей стороны.

Это сообщение отредактировал(а) Softaz - 17.2.2010, 21:47

Присоединённый файл ( Кол-во скачиваний: 563 )
Присоединённый файл  nc07.png 107,02 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Softaz
Дата 9.11.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(mr.DUDA @  9.11.2006,  09:53 Найти цитируемый пост)
Только если руками ветки добавлять в дерево...   

Вот этого-то я и боялся... Хотя помню, что для Delphi есть такой компонент. Придется самому писать.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
AlexBar
Дата 13.11.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.7.2006

Репутация: нет
Всего: нет



Цитата(Softaz @  9.11.2006,  09:42 Найти цитируемый пост)
А кто-нибудь видел реализацию такого дерева, которое Exception постом выше дал, только на C#.Не хочется переписывать с VB.Либо tree-компонент, в котором дерево организуется из нескольких таблиц БД со связью "1 ко многим" (связь "сама на себя" не подходит).

держи! сконвертил из VB на C#

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  TreeView.7z 41,65 Kb
PM MAIL   Вверх
Softaz
Дата 13.11.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



AlexBar, спасибо.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Softaz
Дата 27.11.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Проект v0.5 от 27.11.2006: Скачать


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
DarkDragon
Дата 27.11.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



Посмотрел базу данных mdb, ну и решил предложить свою идею:

Все файлы .htm не пакуются в какой-нибудь архив и т. д., а в чистом виде лежат в директориях.
Каждая директория в database, отражает тему (следовательно имя папки должно соответствовать теме).
В каждой папке есть специальный фаил info.inf, содержащий инфу относительно статей, находящихся непосредственно в этой же директории.
Название каждого htm файла отражает его название.

Еще так как htm файлы могут использовать ресурсные файлы (img, css, js, vbs, ...) то можно
скажем сделать специальное имя папки htmres.res, и поместить все ресурсы туда, а программа будет
игнорировать папки с окончаниями .res, ну или еще с каким небудь окончанием smile

К примеру:

    (dir)database:
        (dir)ASP.NET:
            ...
        (dir)CSharp:
            (dir)Примеры:
                (file)info.inf
                (file)Создание кнопки в стиле XP.htm
                (file)Делаем RTF редактор.htm]

содержание файла info.inf:
[Название файла htm]|[описание]|[автор]|[оценка]
Создание кнопки в стиле XP.htm|В этом примере вы научитесь...|Dark Dragon|5.0
Делаем RTF редактор.htm|Вместе с вами мы сделаем кульный RTF редактор...|Dark Dragon|5.0

При добавлении скажем статьи в избранное можно записать окончательный путь:
    CSharp\Примеры\Делаем RTF редактор.htm (программа отделяет название и расширение(htm) и получается название статьи, ну а если узер кликнет по статье, то программа загрузит [Путь к программе]+[database]+[CSharp\Примеры...).
и заносим эту строку в отдельный фаил favorits.dat

Вместо скрипта info.inf, можно использовать XML, и использовать такое имя: info.xml

Теперь, при загрузке программы в TreeView, грузятся папки с database(т. е. CSharp и ASP.NET),
или можно сделать ComboBox и занести его вверх над TreeView, и загрузить категории именно в ComboBox,
далее, при открытии скажем какой-то папки в TreeView (а папка отражает тему, т. е. для пользователя это
будет тема а не папка), первым делом загружаются еще подпапки(подкатегории), следом загружается фаил
info.inf, или info.xml, потом грузятся все файлы htm и добавляются в TreeView, а инфу о статье уже дергаем из файла info.inf|xml.
После чего добавление новой статьи(нужно будет добавить фаил htm) и отредактировать inf|xml. 

Я не говорю что такой способ лучше mdb, просто идея.

PM MAIL   Вверх
Softaz
Дата 27.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(DarkDragon @  27.11.2006,  12:42 Найти цитируемый пост)
Посмотрел базу данных mdb, ну и решил предложить свою идею:


Это идея Николая - так будет выглядеть структура статей в DW7.
Я пытался так сделать первоначально. Главная проблема - найти все файлы, на которые ссылается каждая HTML-страница (исходники, картинки и главное: _другие_страницы_которые_теперь_фиг_знает_в_которой_папке) и скопировать в соответствующие папки. Я пробывал сделать регуляркой, но некоторые ссылки так и не изменились smile .  Не думаю, что кто-то захочет вручную это все перебирать smile
Можно сделать из трех таблиц одну со связью на себя - дерево будет грузиться намного быстрее.
Теперь есть другая идея - нечто подобное Mod_Rewrite у апача, то есть сделать виртуальные директории. Но это пока только задумка.

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


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
DarkDragon
Дата 27.11.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



Цитата(Softaz @  27.11.2006,  17:07 Найти цитируемый пост)
Я пытался так сделать первоначально

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

   Когда то я тоже ленился раскладывать файлы на компе (у меня было около 350 000 картинок, 100 000 - видео(mpg,avi,asf), 45 000 архивов (zip,rar,cab,...), 190 000 exe файлов), каждый фаил нужно было просмотреть, ненужное удалить, картинки и видео распределить по категориям(папкам). Сначало было ох как лень, ну а потом собрался с силами, навел конкретный порядок (за полтора месяца), теперь и место много, и OS грузит нормально, и самому стало легче искать нужные файлы. И я думаю что с html файлами можно разобраться, и не за неделю а хотя бы за месяц. Ну как я сказал выше, когда то я тоже ленился, и я прекрастно понимаю что такое лень!


PM MAIL   Вверх
Softaz
Дата 27.11.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(DarkDragon @  27.11.2006,  19:18 Найти цитируемый пост)
Когда то я тоже ленился раскладывать файлы на компе

Как я тебя понимаю  smile 

Вот измененная загрузка дерева. Все летает (менее 1 секунды)

Код

    #region TreeView

    public class MyTree
    {
        public void BuildTreeView(TreeView tv, ImageList il, ToolStripStatusLabel lb)
        {
            tv.Nodes.Clear();
            tv.BeginUpdate();
            tv.ImageList = il;
            tv.SelectedImageIndex = 3;
            tv.BeforeExpand += new TreeViewCancelEventHandler(tv_BeforeExpand);

            #region Заполнение A
            string command_a = "Select * from kategory ORDER BY kategory";
            System.Data.OleDb.OleDbDataAdapter adapter_a = new System.Data.OleDb.OleDbDataAdapter(command_a, global::Netcode.Properties.Settings.Default.csanConnectionString);
            System.Data.DataSet topics = new System.Data.DataSet();
            adapter_a.Fill(topics, "kategory");
            #endregion

            for (int i = 0; i < topics.Tables["kategory"].Rows.Count; i++)
            {
                tv.Nodes.Add("", topics.Tables["kategory"].Rows[i]["kategory"].ToString(), 0);
                //Application.DoEvents();

                #region Заполнение B
                string command_b = "Select * from sub_kategory WHERE sub_kategory.id_k = " + topics.Tables["kategory"].Rows[i]["id_k"].ToString() + " ORDER BY sub_kategory";
                System.Data.OleDb.OleDbDataAdapter adapter_b = new System.Data.OleDb.OleDbDataAdapter(command_b, global::Netcode.Properties.Settings.Default.csanConnectionString);

                adapter_b.Fill(topics, "sub_kategory");
                #endregion

                for (int j = 0; j < topics.Tables["sub_kategory"].Rows.Count; j++)
                {
                    tv.Nodes[i].Nodes.Add(topics.Tables["sub_kategory"].Rows[j]["id_sk"].ToString(), topics.Tables["sub_kategory"].Rows[j]["sub_kategory"].ToString(), 1);
                    TreeNode tn = new TreeNode("Загрузка...", 2, 3);
                    tn.Name = "empty_" + topics.Tables["sub_kategory"].Rows[j]["id_sk"].ToString();
                    tv.Nodes[i].Nodes[j].Nodes.Add(tn);
                }
                topics.Tables["sub_kategory"].Clear();
                adapter_b.Dispose();
                Application.DoEvents();
            }
            topics.Tables["kategory"].Clear();
            topics.Dispose();
            adapter_a.Dispose();
            lb.Text = "Все статьи загружены";
            try
            {
                tv.EndUpdate();
            }
            catch (ObjectDisposedException)
            {
                //Кто-то может и не дождаться
            }
        }

        void tv_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Name != string.Empty)
            {
                int id_sk = 0;
                try
                {
                    id_sk = int.Parse(e.Node.Name);
                    e.Node.Nodes.Clear();

                    #region Заполнение C
                    string command_c = "Select * from articles WHERE articles.id_sk = @id_sk ORDER BY articles";
                    System.Data.OleDb.OleDbDataAdapter adapter_c = new System.Data.OleDb.OleDbDataAdapter(command_c, global::Netcode.Properties.Settings.Default.csanConnectionString);
                    adapter_c.SelectCommand.Parameters.Add("@id_sk", System.Data.OleDb.OleDbType.Integer).Value = id_sk;
                    System.Data.DataSet topics = new System.Data.DataSet();
                    adapter_c.Fill(topics, "articles");
                    #endregion
                    Application.DoEvents();
                    TreeNode[] arr_tn = new TreeNode[topics.Tables["articles"].Rows.Count];
                    for (int k = 0; k < topics.Tables["articles"].Rows.Count; k++)
                    {
                        TreeNode tn = new TreeNode(topics.Tables["articles"].Rows[k]["articles"].ToString(), 2, 3);
                        tn.Tag = topics.Tables["articles"].Rows[k]["name"].ToString();
                        arr_tn[k] = tn;
                    }
                    Application.DoEvents();
                    e.Node.Nodes.AddRange(arr_tn);
                    topics.Tables["articles"].Clear();
                    adapter_c.Dispose();
                }
                catch (FormatException)
                {
                }
                catch (ArgumentException)
                {
                }
                e.Node.Nodes.RemoveByKey("empty_" + e.Node.Name);
            }
        }
    }

    #endregion


Так что данный вопрос пока снят. Есть куча других, так что кто хочет - присоединяйтесь, советуйте, делайте и т.д. и т.п.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Softaz
Дата 29.11.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



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


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
DarkDragon
Дата 29.11.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: нет
Всего: 8



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

К примеру, скажем горячие клавиши, TreeView, MainMenu, ContextMenu и т. д.
PM MAIL   Вверх
Softaz
Дата 30.11.2006, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Вышла версия 0.6
Поскольку все время что-то меняется, а размер всех исходников уже больше 60 МБ,
куча народа скачивает и почти никто не помогает, выкладывать буду только по запросу
с сылкой в PM за вклад в развитие программы.  smile 

А пока скриншот, что получилось 

Это сообщение отредактировал(а) Softaz - 30.11.2006, 01:54

Присоединённый файл ( Кол-во скачиваний: 46 )
Присоединённый файл  nc06.png 107,02 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
WolfON
Дата 6.12.2006, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



На мой взгляд сейчас проблема проекта в его размерах и в обилии файлов - это очень долго грузится и занимает очень много места - может следует ориентироваться на что-то вроде DRKB?
PM MAIL ICQ   Вверх
Softaz
Дата 7.12.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(WolfON @  6.12.2006,  00:05 Найти цитируемый пост)
может следует ориентироваться на что-то вроде DRKB

Уже думал. Вопрос, как ты сожмешь 400 метров в 10? Если ты скачивал последнюю версию, в БД есть поля "наличие архива" и "наличие иллюстраций". Исключив все статьи, содержащие иллюстрации, на все архивы сделав ссылку на сайт, можно добиться близкого к DRKB размера. Все это просто решается с помощью программы .NET World (которая в стадии разработки). Если брать ту оболочку, которая есть сейчас (DW6), то там такое отсеивание займет недели %).

Вообщем, раз попросили, сделаю ориентировочно в субботу - будет примерно 7,2 МБ статей + 1,1МБ на служебные файлы в сжатом виде.
В распакованном - примерно 40МБ.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Softaz
Дата 9.12.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Проект v0.6 от 09.12.2006: Скачать исходники (~3.4 МБ)
Проект v0.6 от 09.12.2006: Скачать скомпилированную программу (~1.1МБ)

Добавлено @ 12:31 
Кстати, сделал обрезанную базу. Набралось чуть больше 200 статей (которые без рисунков и исходников).
Надо сказать, не самых хороших статей...
Так что... у кого полно времени:
Код

Инструменты --> Редактор БД --> Пакеты обновлений

Создаете новый пакет

Код

Документ --> Новая статья

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


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Xenon
Дата 27.12.2006, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 1
Всего: 50



Softaz, а как старые статьи в новый браузер вставить?


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1785 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.