Было предложено открыть параллельный проект создания оффлайнового клиента для чтения форумов RSDN. Проект будет писаться на VC++ 7.0. БД и интернет сервис остаются от первого проекта. Набирается команда...
Кто хочет посостязаться — WELCOME!!!
Здравствуйте, godwizard, Вы писали:
G>Было предложено открыть параллельный проект создания оффлайнового клиента для чтения форумов RSDN. Проект будет писаться на VC++ 7.0. БД и интернет сервис остаются от первого проекта. Набирается команда... G>Кто хочет посостязаться — WELCOME!!!
Здравствуйте, SuperEm, Вы писали:
SE>Здравствуйте, godwizard, Вы писали:
G>>Было предложено открыть параллельный проект создания оффлайнового клиента для чтения форумов RSDN. Проект будет писаться на VC++ 7.0. БД и интернет сервис остаются от первого проекта. Набирается команда... G>>Кто хочет посостязаться — WELCOME!!!
SE>А смысл? SE>Зачем делать одну и ту же работу дважды?
В том то и дело, что не одну и туже. Есть мнение, что можно написать маленького, быстрого и не занимающего много памяти клиента. Так же Open API и PlugIns SDK реализовать можно будет проще...
Здравствуйте, godwizard, Вы писали:
G>В том то и дело, что не одну и туже. Есть мнение, что можно написать маленького, быстрого и не занимающего много памяти клиента.
Получится только сильным урезанием функциональности.
G> Так же Open API и PlugIns SDK реализовать можно будет проще...
Plugins SDK на С++ проще? Ну ты сказал однако. Куда уж проще то? Ну все что можно автоматическое сделал, вобще ни о чем кроме самого плагина у плагинописателей голова болеть не будет.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, godwizard, Вы писали:
G>>В том то и дело, что не одну и туже. Есть мнение, что можно написать маленького, быстрого и не занимающего много памяти клиента.
AVK>Получится только сильным урезанием функциональности.
Ну не скажи... Если как у вас делать, т.е. на dll, то вся функциональность сохраниться.
G>> Так же Open API и PlugIns SDK реализовать можно будет проще...
AVK>Plugins SDK на С++ проще? Ну ты сказал однако. Куда уж проще то? Ну все что можно автоматическое сделал, вобще ни о чем кроме самого плагина у плагинописателей голова болеть не будет.
Здравствуйте, godwizard, Вы писали:
G>Ну не скажи...
Скажу.
G>Если как у вас делать, т.е. на dll, то вся функциональность сохраниться.
Какие у нас dll? Нет у нас никакх таких dll, у нас сборки одни.
G>ну насчет этого погорячился наверно
Это точно. вот тебе для примера плагин, который цитаты вставляет. Это он весь целиком, с настройками и прочей чепухой
using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using RSDN.Janus;
using RSDN.Janus.Plugins;
namespace RSDN.Janus.StdPlugs
{
/// <summary>
/// Summary description for CitationPlugin.
/// </summary>
//Этот атрибут - все что нужно для того чтобы янус нашел его и загрузил в свои коллекции
[JanusPlugin("Цитирование",
Description = "Вставляет случайную цитату из набора заданных")]
//Реализация интерфейса ITaglinePlugin - признак того, что это плагин таглайна
//Реализация IConfigurablePlugin - признак того что плагин имеет настройкиpublic class CitationPlugin : ITaglinePlugin, IConfigurablePlugin
{
public CitationPlugin()
{
}
public string TagId
{
get
{
return"citation";
}
}
public string GetTagString()
{
if((config.Citations == null) || (config.Citations.Length < 1))
return"<no any citation>";
Random rnd = new Random();
string s;
if(config.QueryType == CitationQueryType.Случайно)
{
int cp = rnd.Next(config.Citations.Length);
s = config.Citations[cp];
}
else
{
if(config.lastPosition >= config.Citations.Length)
config.lastPosition = 0;
s = config.Citations[config.lastPosition];
}
return s;
}
private CitationPluginConfig config = new CitationPluginConfig();
public object Config
{
get {return config;}
set {config = (CitationPluginConfig)value;}
}
}
public enum CitationQueryType
{
Случайно,
Поочереди
}
//Произвольный класс с настройками. Все публичные поля и свойства будут сериализованы в файл конфигурации,
//а при старте автоматически десериализованыpublic class CitationPluginConfig
{
[DisplayName("Имя макроса"),
Description("Имя макроса, которое нужно указывать в строке таглайна"),
Category("Общие")]
public string TagId
{
get {return"@@citation";}
}
[DisplayName("Версия плагина"),
Description("Версия плагина"),
Category("Общие")]
public string Version
{
get {return"1.0 alpha 1";}
}
private string[] citations;
[DisplayName("Цитаты"),
Description("Список цитат"),
Category("Цитаты")]
public string[] Citations
{
get {return citations;}
set {citations = value;}
}
public int lastPosition = 0;
private CitationQueryType queryType;
[DisplayName("Тип выборки"),
Description("Тип выборки цитат"),
Category("Цитаты")]
public CitationQueryType QueryType
{
get {return queryType;}
set {queryType = value;}
}
}
}
Здравствуйте, godwizard, Вы писали:
G>Есть мнение, что можно написать маленького, быстрого и не занимающего много памяти клиента.
Ну маленького из этого списка я даже могу понять. Бистрого? Вряд ли удастя что-то ускорить. Тем более что скорости хватает. Основные тормоза на неоптимальности SQL-я. А память... да кого волнуют сегодня пол сотни мегабайт? Они ведь стоят $5!
G>Так же Open API и PlugIns SDK реализовать можно будет проще...
Ну это уже чистый гон. Проще на голых сях ничерта сделать нельзя. У AVK плагины заняли пол дня работы. Даже на КОМ-е будет медленнее.
... << RSDN@Home 1.0 alpha 15 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.