Все игры
Обсуждения
Сортировать: по обновлениям | по дате | по рейтингу Отображать записи: Полный текст | Заголовки

Всем привет - я тут проект статьи набросал - помогите оценить

Знакомство с MONO
или как создать свой собственный firefox за полчаса
Я всегда считал, что программирование в UNIX сложнее и запутанне по сравнению с Wintel средами. Конечно это мое субъективное мнение, но думаю многие согласяться с ним. Особенно хорошо это чувствуется при попытке написать оконное приложение. Не смотря на наличие IDE сред , таких как Kdevelop, создать даже простое окно с парой кнопок было для меня весьма непростой задачей. В силу специфики работы приходиться писать программы как для Windows так и для UNIX. Моим основным дистрибутивом Linux, который я использую в работе, является Gentoo Linux.
Итак после небольшого вступления перейдем к нашей основной теме. Я давно читал в обзорах об открытой версии .NET Framework под названием Mono. Поскольку в Windows я писал программы как раз с использованием .Net, меня естественно заинтересовала возможность использовать один и тот же код в обеих средах. И потом когда работаешь с одним инструментом это вседа проще , чем двумя, не надо перестраивать стиль мышления .... Итак перейдем непосредственно к теме нашей статьи. Во первых убедимся, что в системе установлен пакет mono, для этого достаточно выполнить команду :
#emerge -s dev-lang/mono
если Вы увидите нечто подобное :
dev-lang/mono
Latest version available: 1.2.5.1-r1
Latest version installed: 1.2.5.1-r1
Size of files: 17,082 kB
Homepage: http://www.go-mono.com
Description: Mono runtime and class libraries, a C# compiler/interpreter
License: || ( GPL-2 LGPL-2 X11 )
то можно смело сказать, что система mono у Вас установленна. Желательно добавить еще mono-tools - набор утилит облегчающих жизнь программисту. Для mono существует среда программирования по названием monodevelop и для ускорения процесса работы можно установить и ее. Но давайте пока что ободемся простым блокнотом и командной строкой. Дело в том, что это бета-версия среды программирования и при работе с ней возможны ошибки – программа попросту вылетает и очень обидно, когда теряещь код, который ты создавал в течение последнего часа ...
Для начала создадим простое приложение, можно сказать «сакраментальное», с которого начинается изучением любого языка программирования. Поприветствуем окружающий мир. Откройте любой текстовый редактор и добавьте туда следующие строчки:

using System;
public class Test{

public static void Main(string[] args) {

Console.Writeline(«Hello,World!!!»);

}
}

после чего сохраните файл под именем Test.cs. Обратите внимание на то , что имя файла совпадает с именем класса, это важно!!! Далее в командной строке задаем следующую команду:

uran@dmitry$ mcs Test.cs

Если все сделанно правильно и без ошибок, то в результате появляется файл Test.exe. Теперь достаточно набрать команду

uran@dmitry$ mono Test.exe

и мы увидим на экране наше приветствие. Для решения большинства системных задач, вывода в консоль вполне достаточно, но ведь мы хотим создать оконное приложение. Сейчас убедимся, что сделать это не просто, а очень просто, даже не используя визуальные средства программирования и редакторы ресурсов. Для создания оконных приложений в Gnome для mono существует библиотека Gtk#. Она дает доступ к большой библиотеке различных управляющих элементов, которые программисты называют виджетами. Поскольку мы двигаемся от простого к сложному, то в качестве упражнения создадим оконное приложение в одной кнопкой. Для простоты и наглядности мы не будем привязывать какое либо событие к нашей кнопке. Давайте откроем текстовый редактор и напечатаем следующий код:

using Gtk;
using System;
public class Button_Test{
public static void Main(string[] args){
new Button_Test();
}
//конструктор класса
Button_Test(){
Application.Init();
Window mwin = new Window(«Button test»);
mwin.SetDefaultSize(100,50);
mwin.DeleteEvent += new DeleteEventHandler(
onClosemwin);

Button b = new Button(«PRESS»);
mwin.Add(b);
mwin.ShowAll();
Application.Run();
}

// обработка события «закрытие окна»
void onClosemwin(object o, DeleteEnentsArgs a)
{
Application.Quit();
}

}

после чего сохраним файл под именем Button_Test.cs. Здесь необходимо дать несколько пояснений тому , как работаем программа использующая графическую библиотеку Gtk. Первое отличие от библиотеки Windows.Forms, в конструкторе класса обязательно должны вызываться два метода класса Gtk.Application, это методы Init и Run, а в процедуре обрабатывающей завершение приложения вызывается метод Quit. Эти методы должны обязательно присутствовать в любой программе использующей библиотеку виджетов, они нужны для нормальной работы программы. Второе отличие от программ использующих System.Windows.Forms, в данной программе Вы не найдете явного обращения к параметрам Height и Width. В Gtk используется идеология «контейнеров», то есть все управляющие элементы деляться на две категории – собственно управляющие элементы и контейнеры, специализированные виджеты, которые собержат в себе управляющие элементы, такие как кнопки, полосы прокрутки и т.д. И каждый управляющий элемент стремиться занять все место внутри «контейнера». Таким образом отпадает необходимость в отслеживании места каждой кнопки, каждой полосы прокрутки при изменении размеров окна приложения.
Перейдем к разбору программы. В кострукторе класса, создаем базовое окно, далее вызвав метод SetDefaultSize устанавливаем размер основного окна по умолчанию. Следующим шагом устанавливаем обработчик события «закрыть окно» . В этой функции мы вызовем метод Quit класса Application. И последний штрих – это создание кнопки, как отмечали выше – мы только создаем управляющий элемент Кнопка, не привязывая к нему никаких обработчиков. Теперь если мы скомпилируем и запустим нашу программу то на экране появиться окно с большой кнопкой ... Обратите внимание, кнопка занимает все пространство окна – в случае когда мы не задаем дополнительные «контейнеры» само базовое окно служит контейнером для управляющего элемента. С помощью данной программы я попытался создать общий шаблон для последующих примеров. Сейчас мы можем перейти к созданию основной нашей цели – а именно аналога интернет броузера Mozilla-Firefox. Для этого воспользуемся библиотекой Gecko#.
Структурно окно нашей программы будет разбито на три зоны. Первая зона – управляющие кнопки и адресная строка, вторая зона – закладки с web страничками, и третья зона – статусная строка – в ней мы будем отображать процесс загрузки текущей страницы и ссылки , которые буду отображаться при наведении на них курсора. Текст самой программы приведен ниже. Наберите его в текстовом редакторе
//*************************************************************************
// Пример программирования в Mono
// Создаем окно, добавляем кнопки и записную книжку с закладками
//
// Далее добавляем ядро Gecko и получаем пример интернет браузера
//
// команда компиляции: mcs -pkg:gtk-sharp-2.0 -pkg:gecko-sharp-2.0 notebook_t.cs
//***************************************************************************
using System;
using Gtk;
using GtkSharp;
using Gecko;
using Cairo;
//using GtkGL;

class notebook_t
{
Statusbar sb;
static ProgressBar pb;
Button back, fwrd, stop;
Button Pagen, Test;
Notebook nb;
Label l;
VBox vbg;
Entry url;
const int MAXBRWS=10;
WebControl[] brwsr = new WebControl[MAXBRWS];
Window win;
int cnt,maxnow;

static void Main ()
{
new notebook_t ();
}
//конструктор класса
notebook_t ()
{
Application.Init (); //Инициализируем Gtk библиотеку
win = new Window ("NotebookSample"); //Создаем основнок окно программы
win.DeleteEvent += new DeleteEventHandler (OnWinDelete); //Задаем обработчик закрытия окна
win.SetDefaultSize (800, 400); //Устанавливаем размеры окна по умолчанию
HBox hbmain = new HBox(false,3); //Создаем элементы HBox и VBox для размещения
VBox vmenu = new VBox(false,3) ; //наших управляющих элементов
back = new Button(Gtk.Stock.GoBack);
back.Clicked += new EventHandler(OnBackClick);
hbmain.PackStart(back,false,false,0);
fwrd = new Button(Gtk.Stock.GoForward);
fwrd.Clicked += new EventHandler(OnFwrdClick);
hbmain.PackStart(fwrd,false,false,0);
stop = new Button(Gtk.Stock.Stop);
stop.Clicked += new EventHandler(OnStopClick);
hbmain.PackStart(stop,false,false,0);

Pagen = new Button("Закладка");
Pagen.Clicked += new EventHandler(OnPagenClick);
hbmain.PackStart(Pagen,false,false,0);
Test = new Button("Выход") ;
Test.Clicked += new EventHandler(OnTestClick);
hbmain.PackStart(Test,false,false,0);
Label adrlab = new Label ("Адрес:");
hbmain.PackStart(adrlab,false,false,0);
url = new Entry("http://www.ya.ru");
url.Activated += new EventHandler(OnUrlActivated);
hbmain.PackStart(url,true,true,0);
vmenu.PackStart(hbmain,false,true,1);
cnt=0; maxnow=0;
brwsr[cnt] = new WebControl();
brwsr[cnt].LinkMsg += new EventHandler(OnBrwsrLinkMsg);
brwsr[cnt].Progress += new ProgressHandler(OnBrwsrProgress);
brwsr[cnt].NetStop += new EventHandler(OnBrwsrNetStop);
brwsr[cnt].LoadUrl(url.Text);
nb = new Notebook ();
nb.SwitchPage += new SwitchPageHandler(OnNBSwitchPage);
//for (int i = 0; i < 1; i ++)
//{
string label = String.Format ("Страница: "+ url.Text);
VBox gvbox = new VBox();
gvbox.PackEnd(brwsr[cnt],true,true,1);
nb.AppendPage (gvbox, new Label (label));
// }
vmenu.PackStart(nb,true,true,0);
HBox bbox = new HBox(false,2);

pb = new ProgressBar();
pb.Orientation = ProgressBarOrientation.LeftToRight;
//pb.Adjustment.Lower = 0 ;
//pb.Adjustment.Upper = 1000 ;
bbox.PackStart(pb,false,false,0);


sb = new Statusbar();
sb.Push(1,"Поехали");
//sb.Push(2,"Второе сообщение");
bbox.PackStart(sb,true,true,0);

vmenu.PackStart(bbox,false,true,1);
win.Add(vmenu);
//win.Add (nb);
win.ShowAll ();
Application.Run ();
}
//обработчик собития нажатия кнопки
void OnPagenClick(object obj, EventArgs e)
{
if (maxnow < MAXBRWS) {
maxnow = maxnow + 1 ;
cnt = maxnow ;
brwsr[cnt] = new WebControl();
brwsr[cnt].LinkMsg += new EventHandler(OnBrwsrLinkMsg);
brwsr[cnt].Progress += new ProgressHandler(OnBrwsrProgress);
brwsr[cnt].NetStop += new EventHandler(OnBrwsrNetStop);
brwsr[cnt].LoadUrl("http://www.yandex.ru");

string lab = String.Format ("Стр под ");
l = new Label(lab);
vbg = new VBox();
vbg.PackEnd(brwsr[cnt],true,true,1);
nb.AppendPage (vbg, l);
nb.ShowAll();
}
}
void OnTestClick(object obj, EventArgs e)
{
Application.Quit();
}

//обработчик события закрытия окна приложения
void OnWinDelete (object obj, DeleteEventArgs args)
{
Application.Quit ();
}

void OnUrlActivated(object obj, EventArgs e)
{
pb.Adjustment.Value = 0;
brwsr[cnt].LoadUrl(url.Text.Trim());
}

void OnBackClick(object obj, EventArgs e)
{
brwsr[cnt].GoBack();
}

void OnFwrdClick(object obj, EventArgs e)
{
brwsr[cnt].GoForward();
}

void OnStopClick(object obj, EventArgs e)
{
brwsr[cnt].StopLoad();
OnBrwsrNetStop(obj, e);
}

void OnBrwsrLinkMsg(object obj, EventArgs e)
{
sb.Pop(1);
sb.Push(1, brwsr[cnt].LinkMessage);
}

void OnBrwsrProgress(object obj, ProgressArgs e)
{
//if (e.Curprogress < pb.Adjustment.Upper) {
pb.Adjustment.Value = e.Curprogress ;
pb.ShowAll();
//}
}

void OnBrwsrNetStop(object obj, EventArgs e)
{
pb.Adjustment.Value = 0 ;
pb.ShowAll();
}

void OnNBSwitchPage(object obj, SwitchPageArgs es)
{
if (sb != null) {
//sb.Pop(1);
//string s = String.Format("switching page {0}",nb.CurrentPage) ;
//sb.Push(1,s);
}
cnt = nb.CurrentPage ;
}


}

David Blbulyan, 04-10-2007 23:41 (ссылка)

Новая программа

Сегодня закончил новую прогу Crendell Real Buddy.
Скачать можно отсюда: www.crendellek.narod.ru/oth...

Смысл программы в том, что она создает иллюзию безобидной, полезной работы на компьютере, тогда как вы можете заниматься чем угодно. Например, вместо того чтобы писать реферат - играть в любимую игру, или вместо составления годового отчета - переписываться по "Аське"... но, в момент, когда кто-либо захочет проверить чем вы занимаетесь,
программа моментально скроет следы вашей истинной деятельности ;)

Основные возможности Crendell Real Buddy:

1. Замена экрана заранее заданным скриншотом
2. Скрытие заранее заданого списка окон.
3. Отключение звука, во время активации (Чтобы из под реферата не просачивались вопли из Doom 3 или "О-о" из Аськи =))
4. Случайный отбор скриншота для замены (Каждый раз один и тот же экран - подозрительно!)
5. Автономное создание скриншотов
6. Моментальная активация и деактивация - перемещением указателя мыши в определенный угол экрана.



 
 

Новая прога

написал прогу, заранее извиняюсь что закачал на depositfiles
http://depositfiles.com/ru/...
в архиве весит 552 кб
впечатления от проги плз кидать в комментарии 

настроение: Веселое
слушаю: Cradle of filth - Temptation

Метки: Video to Desctop Placer

Без заголовка

Помогите, пожалуйста! Я пытаюсь создать текстовый редактор на с++, но не знаю алгоритм Печати страници и алгоритм сохранения файла с расширением(Пока файлы у меня сохраняются без расширения). Заранее благодарю!

Метки: С++

Сергей ***, 02-02-2008 17:40 (ссылка)

С++

Помогу при проблемах с программами написанными на С++.
Да и вообще обсужу вопросы программирования на этом языке.
Пишите tors_kirill@mail.ru

настроение: Занятое

Нужен perl программист

Уважаемые программисты!!
В компанию 1001 Тур срочно требуется perl программист (г. Москва). Кто заинтересован - пишите. Отвечу на все вопросы

настроение: Бодрое
хочется: Нового Года

Метки: perl программист

Без заголовка

Есть вопрос:

Работа сделана на Delphi, хотя не без помощи ТОПИС (если кто слышал). Смысл следующий - простенькая БД и часть данных в нее читается с COM-порта - а именно вес автомобиля - значит смысл это чтения следующий:
- открывается порт
- читается пакет данных, который содержит данные тип "0 # h 12.300 m g # ....", насколько я помню (год назад было) - в varchar читается - слабо мне тогда было со структурой разбираться.
- я ловлю точку и читаю, что справа, что слева. Работает в 99,99% случаев.
- порт закрывается.
Но редко, при весе более 10 (два знака перед точкой) первый теряется и, например, вместо 22.320 на "табло" 2,320. Это на 2500 1 раз.
Заниматься проектом просто некогда. На повестке другая тема.
Это был мой первый серьезный проект.
Поможет ли найти структуру данных, которую генерирует индикатор веса, и сделать такую же у себя? Или com-порт - это диагноз?

Профи, посоветуйте, буду благодарна.

настроение: Озадаченное

Без заголовка

Кто программирует на C# и кто пытается программировать??? Может Создадим Свой Мир С#????как мое предложение ????

Программа

Моя бывшая программа: Quick Run Panel 2 - панель бысрого запуска
Рейтинг на софт маиле оценка 4+ , скачали около 2000 человек
Если интересно , смотрите   http://soft.mail.ru/program...
сильно заинтересовавшемся могу дать исходники на Delphi 7

 

Вопрос о стиле.

Добрый день уважаемые программисты!
Хочу у вас спросить. Если сможете, ответте пожалуйста.
Я сделал программку на Visual Basic 6.0. Но дизайн Windows Xp/98/95 мне не нравиться. Как-то все стандартно, охото добавить краски. Допустим рамку окна сделать коричневой, или поменять цвет прокрутки. 
Не могли бы вы мне посоветовать, как это сделать?
Зарание спасибо!

Без заголовка

Есть ли возможность писать/читать CMOS в проге под WinXP/2k, не используя RTX SDK ?
P.S. не критично, но интересно... может кто-нибудь сталкивался с подобной проблемой?

Метки: С++

Автомобильная социальная сеть на своем движке

Всем привет, меня зовут Кузнецов Роман, я
представляю
команду программистов AutoVisio-com-ua. Наш проект задуман как
органичное
сочетание универсального автомобильного портала и социальной сети для
автомобилистов. Он является в некоторой степени инновационным, поэтому
нам
интересно узнать, что думает о функционале сайта ваше сообщество
профессионалов. 




Движок был разработан на основе анализа самых
распространенных CMS, в том числе и такие, как 1С Битрикс. В результате
получился движок, который позволяет в кратчайшие сроки приступить к работе, не
накладывая особых ограничений на стиль написания кода и используемые
технологии, то есть предоставляя полную свободу разработчику.Что же выделяет
нас среди прочих стартапов? Читаем.


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


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


- широко используется технология HTML 5.


- написан свой собственный AJAX/JavaScript/HTML чат, который
позволяет общаться посетителям, не находясь на определенной странице сайта. При
этом собеседники не теряются при перезагрузке/обновлении страницы. Пользователь
может вести общение параллельно с навигацией по сайту, не беспокоясь о том, что
может пропустить личное сообщение.


- создано множество легковесных скриптов для анимационных
эффектов при просмотре страниц сайта, а так же для упрощения и ускорения
навигации как в пределах одной страницы сайта, так и по всему сайту в целом.


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


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




- система включает в себя защиту от кривых рук
программистов, защищающуюю ее от критических сбоев.


Если у вас появилось желание задать вопрос, касающийся
проекта, или если вам будет интересно поучавствовать в будущем бета-тесте, отписывайтесь здесь.


Критика, естественно, тоже приветствуется.



Как подключить сервлет в *.JSP веб-странице? Пожалуйста, помогит

Вроде должны быть теги типа .. , где h: - это описанный тег в одной из внешних библиотек тегов Java. Помогите разробраться. Буду благодарен за ЛЮБУЮ ИНФУ. ССылки не присылайте, плеаз 

Дима Чопей, 20-08-2008 15:05 (ссылка)

Оценка

Оцените наш проект.Только серезно. http://softforfan.narod.ru/ 

В этой группе, возможно, есть записи, доступные только её участникам.
Чтобы их читать, Вам нужно вступить в группу