Курсы: C# с нуля

Givi
09.06.2007, 12:07

Привет Все!
После проведения Опроса и выяснения общественного мнения :-) пора приступать к реальным делам, коими как раз славится Великий Givi )))
По примеру многоуважаемого cleg, задавшего тон нашим курсам ;-) стартуем свою тему…
Итак, что же планируется в этой теме?
Здесь мы начнем изучать достаточно современный и новый язык C#, созданный корпорацией Микрософт.
Тема планируется к обновлению не часто: примерно раз в 10-14 дней. При этом под обновлением подразумевается выкладывание мною очередного урока. В перерывах между уроками вы должны читать тему ))), задавать вопросы, тренироваться и разбираться самостоятельно…
Знающие люди пусть выкладывают свои замечания, уточнения, комментарии…
Сразу хочу сказать, что этот язык я буду изучать одновременно вместе с вами(!), так что наша тема будет для нас как раз прекрасным стимулом…
Целью обучения является возможность написания собственных программ: понять суть программироавния на С#, выучить его синтаксис, изучить основные библиотеки и возможности… Сразу предупреждаю, что тема не будет бесконечной и когда-нибудь закончится (
Да, чуть не забыл! Начальный уровень обучающихся – нулевой, то есть сначала программировать вы вообще можете не уметь (хотя было бы неплохо знать синтаксис С++ или хотя бы понимать как работает Делфи )))
Единственное требование к обучающимся – это наличие моска, хотя бы средней степени тяжести ))) На идиотские реплики реагировать не буду, дабы не разводить флуд. Впрочем, активно пообщавшись тут некоторое время, «особо одаренных» кажется не заметил, так что вроде все должно быть нормально )))
Итак, пристегните ремни, стартуем…..
вжжжжжжжжжжжжжжжж…

Итак, для начала супервводный урок №0 )))
Шо жэ такое язык С#?!?
(читатся «си-шарп», хотя я слышал и именование «си с решеткой»)
Разработан он корпорацией Микрософт недавно, примерно в 2002 году для мощной системы программирования Visual Studio. Надо сказать, что среда эта существует достаточно давно и ее 6 версия была достаточно известной и востребованной, большое количество программ было написано именно с применением именно этой среды Visual Studio 6.0.
Так вот в той среде языка С# еще не было. А вот следующая версия – седьмая, которая была названа .NET (читается «дот-нет», то есть по-русски «точка-нет»), как раз уже включала его. Естественно все последующие версии Вижуал Студио также включают Си-шарп.
Язык этот был сделан в современном стиле и объединяет в себе сногие средства из языков С++, Delphi и Java, и является прямым конкурентом последнего.
Чтобы разобраться, почему конкуренция возникает именно между Ява и Си-шарп, надо познакомиться с понятием виртуальных машин.
Знач так: когда мы пишем программу на каком-то языке программирования, то она представляет собой просто обычный текст, соответствующий синтаксису выбранного языка. Этот текст понятен нам с вами – людям, знающим синтаксис и правила языка. Для компьютера – это просто набор буков )))
Компьютер (а точнее его процессор, который и выполняет все программы) понимает так называемые машинные коды, которые представляют собой какие-то элементарные микродействия, типа сложить два числа, переслать число из одной ячейки памяти в другую, и т.д.
Логично, что как-то надо переводить написанный нами текст на языке программирования (исходный текст или исходник) в машинные коды, понятные процессору (файл с машинным кодом называют по-разному: бинарник, экзешник, двоичный файл, исполнимый файл).
Процесс перевода исходника в бинарник называется трансляцией. Трансляцию выполняет сам язык программирования, на котором мы пишем программу. Языки программирования бывают двух типов: компилируемые и интерпретируемые.
Компиляторы преобразовывают исходный текст в исполняемый код всего один раз, это делается на компьютере самого разработчика программы, то есть у вас на компе. Результатом является исполнимый файл с расширением ЕХЕ, который можно распространять (продавать! Гг) усем людям… Получается, что пользователь получает уже откомпилированную программу и не может ее изменить (так как не знает ее исходного текста), он может только запускать ее и использовать.
Трансляторы наоборот работают не так: программист раздает всем направо и налево исходный текст своей программы. Каждый раз, когда нужно запустить программу, язык-интерпретатор, находящийся на компьютере у пользователя, транслирует исходник в машинные коды. В этом случае исходник пользователю доступен, он может его смотреть и даже (о, Господи!) исправлять…
Компилируемые программы: работают быстрее, исходные текст не доступны пользователю, для своего выполнения не требуют дополнительных программ на компьютере у пользователя.
Транслируемые программы: работают медленно (при каждом запуске все время надо транслировать код), требуют наличия у пользователя на компьютере языка-интерпретатора, исходный текст доступен для просмотра и редактирования.
Што ж это получается? На первый взгляд вообще не понятно, нужны ли нам интерпретаторы?!?!? Они ведь по всем параметрам хуже компиляторов )))
Однако же у них есть главное преимущество. Код созданный компилятором подходит только к той системе, для которой он был создан (например, программа, созданная для Windows вообще-то не будет работать под Linux). В то же время код, созданный для интерпретирования подходит для любой системы, где существует язык-интерпретатор.
Возьмем например Python, это язык интерпретируемый, программы распространяются в виде исходных текстов (то есть в виде сочинений, который можно почитать даже Вордом :-) ) Однако же если в любой произвольной системе установлен интерпретатор Пайтона, то и программа будет там исполнена по высшему классу.
Получается, что интерпретируемые программы в общем случае являются независимыми от платформы (типа компьютера, установленной операционной системы и всего-всего остального) – это свойство называется кроссплатформенностью.
На всякий случай скажу, что одна и та же программа, написанная на Пайтон может быть запущена даже на холодильнике оборудованном центральным процессором (если для его операционной системы существует интерпретатор этого языка). Ну что тут сказать, если программа, написанная на Паскале (компилируемый язык) для Windows никогда не будет работать на таком же компьютере, только под Linux…
Итак, интерпретаторы нужны, чтоб одну и ту же единственный раз написанную программу можно было запускать на разных платформах… Однако, самый большой недостаток интерпретаторов – малая скорость выполнения за счет необходимости трансляции во время выполнения (так называемая трансляция во время выполнения – JIT, Just In runtime Translation).
Чтобы соединить оба преимущества и избавиться от недостатков, корпорация SUN выдумала свой язык Java (Ява) и свою одноименную виртуальную машину (JVM – Java Virtual Machine). В этом случае программа не транслируется полностью в машинные коды, а превращается в нечто промежуточное, в случае Ява это называется байт-код. Байт-код не может быть выполнен процессором, потому что это не машинные коды, встроенные в процессор. Чтобы программы на Ява можно было выполнять, их надо дотранслировать, то есть перевести из байт-кода в машинные коды.
Итак, какая-то часть работы по трансляции снимается во время перевода исходного текста в промежуточный байт код, поэтому в общем-то программы на Ява работают быстрее, чем аналогичные на чисто интерпретируемом языке…
Распространяются программы в байт-коде, а окончательную трансляцию JIT выполняет уже сама виртуальная машина Ява (специальная программа), которая должна быть установлена на любом компьютере, где могут использоваться приложения, написанные на Ява.
Преимущество Ява – кроссплатформенность. Программу можно написать для всех устройств, для которых существует виртуальная машина Ява, а это огромное количество техники: мобилки, смарты, КПК, плееры, холодильники, стиралки и т.д….
Микрософт как всегда берет на вооружение все передовые технологии и мира ИТ. Вот и с виртуальной машиной Ява произошла та же самая ситуация. Правда Микрософт пошла еще дальше. Она сделала так, что программы для их «виртуальной машины» можно писать на любом языке, входящем в состав Visual Studio NET (и более поздних версий). В том числе и на С#.
Все программы, написанные по этой новой технологии, транслируются один раз в промежуточный код (IL – Intermediate Language), и в таком виде распространяются. А вот уже на конкретной платформе должна быть установлена среда для выполнения этих полупрограмм ))) на промежуточном языке (надо сказать, что этот промежуточный язык в общем-то похож на язык ассемблера, но все-таки исполняться процессором не может). Итак, для выполнения таких программ на уже конкретной платформе там должна быть установлена так называемая общеязыковая среда выполнения (CLR – Common Language Runtime). Она состоит из двух частей: ядро (реализованное в файле mscoree.dll) и библиотеки классов, на основе которых создаются все программы. Часто все это называется одним словом Framework, хотя вообще-то это только сама библиотека классов.
Итак, чтобы наши программы могли выполняться на любом компьютере, на нем должна быть установлена среда Microsoft Framework, КОТОРАЯ ПО УМОЛЧАНИЮ НЕ ВХОДИТ В ОПЕРАЦИОННУЮ СИСТЕМУ Windows XP!!!! А это означает, что ее надо будет доустанавливать. Кроме того, если ваш товарищ не такой продвинутый, как вы, и никаких фрэймворков он не устанавливал, то ваша программа никогда не заработает на его компе ((( Но такова суть этой технологии промежуточных языков и виртуальных машин…
Итак, мы пишем исходные тексты программ на С#. Затем они транслируются нами в промежуточный язык IL и в таком виде хранятся, распространяются, продаются ))) На компе, где они должны выполняться, их дотранслирует среда CLR с использованием библиотеки классов Framework (если она не установлена, то ваша программа там и не заработает).
Зато, если Фрэймворк будет когда-нибудь создан для других платформ, то и писать программы можно будет только один раз, а запускаться они будут везде… на всех операционных системах.
Итак, кажется все довольно подробно объяснил. Теперь жду ваших вопросов по вводному занятию ))) А заодно готовлю след урок!
ПИШИТЕ
(ах, да забыл сказать: на этом языке можно бренько и удобно создавать программы для Виныд с красивым графическим интерфейсом: окошками, кнопочками и т.д. чем мы в дальнейшем и займемся…)



Кеширование и Squid3

vlas_st
03.06.2008, 12:49

Поставил squid3, настроил, что мне нужно. Теперь вопрос, я хочу иcключить из кеширования следующее:
exe файлы более 700 Кб
tar, tar.bz2, gz, tar.gz, zip, rar, bin, iso – более 1 Мб
pdf более 1 Мб
как это правильно реализовать?


J`JF
03.06.2008, 20:14

Без учета размера – через создание acl по rep_mime_type с последующей блокировкой кэширования через директиву no_cache.
Как сюда присобачить размер – понятия не имею. Очень может быть, что никак, хотя утверждать не берусь… Директива maximum_object_size не привязывается к какому-либо acl, а reply_body_max_size в свою очередь невозможно привязать к no_cache. Возможно, в третьем сквиде ввели какие-нибудь произвольные регекспы – не в курсе. Если найдешь способ – отпишись, интересно.


vlas_st
04.06.2008, 00:56

J`JF,
спасибо. Прикрутил следующее, пока без учета размера:
(вот только на счет директивы no_cache не уверен, там allow или deny, поставил пока allow)
acl archives rep_mime_type ^application/macbinary ^application/octet-stream ^application/x-tar ^application/zip
acl exe rep_mime_type ^application/x-ms-dos-executable ^application/octet-stream
acl docs rep_mime_type ^application/pdf ^image/vnd.djvu
no_cache allow archives
no_cache allow exe
no_cache allow docs
Попробовал поскачивать архивы, исошники, ехешники.. таки да, не кешируется.


J`JF
04.06.2008, 09:06

Не может быть :)
no_cache на самом деле по своему смыслу имеет противоположное значение – cache )) Поэтому директива allow разрешает, а директива deny – запрещает кэширование описываемого acl.
Т.к. по умолчанию squid работает по принципу no_cache allow all, то сама директива allow имеет смысл, например, при такой конструкуции:
no_cache allow archives
no_cache allow exe
no_cache allow docs
no_cache deny all
То есть для того, чтобы выборочно принудительно кэшировать нужные объекты, моментально удаляя из кэша все остальные.
Для твоего случая следует использовать deny. По крайней мере, именно так делается во второй ветке – сильно сомневаюсь, что в третьей разработчики дали реверсное значение этой директиве.
Для твоего же случая они не кэшировались, возможно, по той простой причине, что squid собирается с дефолтовым значением maximum_object_size равным 4096КБ. То есть все, что выше, в кэш не попадает автоматически.


vlas_st
04.06.2008, 09:57

J`JF,
Я чесно говоря начал думать немного по русски, что-то типа «разрешить не кешировать» и «запретить не кешировать», потому и прилепил allow. :)
Сменю на deny.
Параметр maximum_object_size я поставил равным 10240 Кб. Качал файлы по 3-4 Мб, при этом наблюдая за размером кеша, и он таки не увеличивался. Правда после этого я решил проверить, а кешируется ли вообще сейчас что-то, около получаса лазил по более-менее «тяжелым» сайтам, и кеш также не увеличивался %). В общем, ковыряем дальше :)



Visual C++

__Игорёк__
18.10.2006, 19:12

Напишите пожалуйста какой-нибудь програмный код в Visual C++ с использованием классов(с обьяснением, если можно), а то я его начал изучать(сам) и недогнал, как там их использовать.


.DeV!L
18.10.2006, 19:32

книжку читай, всё нормально описывается….если в книжке не поймёшь….то увы :)
отлично описывается в книге С++ за 21 день….я сам на парах не врубался что за классы и нафига оные надо….после книжки прозрел :)))


__Игорёк__
18.10.2006, 19:35

Девил, а ты не можешь её дать?


.DeV!L
18.10.2006, 19:41

в DC++
./deff/c++/
з.Ы. …я читал не электронную версию и давно это было….по памяти кажется она =)….покрайней мере похожие примеры….


Amid
25.11.2006, 20:39

Поищи по авторам:
Страуструпп, Керниган, Риччи – это мэтры-основатели лучше них никто не вьезжает ;)


gosha
25.11.2006, 20:54

В сети тьма документации, еще больше кода. «Ищи и обрящешь» :yes:
Поищи по авторам:
Страуструпп, Керниган, Риччи – это мэтры-основатели лучше них никто не вьезжает ;)
Не стал бы советовать новичку читать такие книги.


Ilya_Okonsky
25.11.2006, 22:30

В сети тьма документации, еще больше кода. «Ищи и обрящешь» :yes:
Не стал бы советовать новичку читать такие книги.
угу, особенно страуступа :))) . В принципе про классы неплохо описано в книгах наподобие С++ за 21 день…
приближенно можно сказать, что классы – это те же структуры, только возможностей у них НАМНОГО больше (это очень приближенно :))))) )


alx
25.11.2006, 23:17

угу, особенно страуступа :))) .
Особенно Кернигана и Ричи ;) У них именно классы лучше всего описаны :)
(Или я жестоко туплю на счет К&Р?)
Хорошо классы были описаны в одной книжке издательства BHV: «Турбо-Паскаль 6.0″, кажется. Ага, про паскаль. Зато про объекты – все понятно было, ОО разжевывалось неплохо. Мой детский неокрепший моск не подавился и хотел еще.


Amid
20.12.2006, 21:52

Лично я в идеологию классов не въезжал до тех пор пока не столкнулся с виртуальными функциями и наследованием – вот на этих возможностях и начинают проявляться преимущества ООП


cleg
20.12.2006, 22:55

ИМХО – не надо читать книжки из серии «для чайников», «за 21 день», «за 24 часа» и т.п.
они дают набор рецептов, но не понимание вопроса.
по С++ много других хороших книг, хотя конечно если возникают вопросы по классам, то лучше для начала попробовать чот-то попроще, типа Пайтона


alx
20.12.2006, 23:04

ИМХО – не надо читать книжки из серии «для чайников», «за 21 день», «за 24 часа» и т.п.
они дают набор рецептов, но не понимание вопроса.
по С++ много других хороших книг, хотя конечно если возникают вопросы по классам, то лучше для начала попробовать чот-то попроще, типа Пайтона
Может лучше ЯваСкрипт? В Питоне все объектные фичи в наличии – он мало чем уступает тому же Си++ по сабжевой фичности. А JS – как раз самое то для прочувствования основ объектного подхода.
А вообще чем Буч не подходит в качестве учебника? Там же есть все. И очень хорошо написано.


TXC
20.12.2006, 23:08

Особенно Кернигана и Ричи ;) У них именно классы лучше всего описаны :)
Вот как раз в С классов еще не хватало. Это ж не объектно-ориентированный, авторами, коего являются вышеупомянутые.
Батько С++ Бьерн Страуструп. Но говорят, что доступнее всех описыват С++ Герберд Шилдт.


alx
20.12.2006, 23:13

Вот как раз в С классов еще не хватало. Это ж не объектно-ориентированный, авторами, коего являются вышеупомянутые.
Там был четкий подмигивающий смайлик – вот такой: ;)
Батько С++ Бьерн Страуструп. Но говорят, что доступнее всех описыват С++ Герберд Шилдт.
А можно препода по программированию потеребить, или друга-знакомого. За пару вечеров можно объяснить многие тонкости, а потом нужна будет только практика, практика, много практики.


cleg
20.12.2006, 23:23

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


TXC
20.12.2006, 23:26

А можно препода по программированию потеребить, или друга-знакомого. За пару вечеров можно объяснить многие тонкости, а потом нужна будет только практика, практика, много практики.
так может тогда так же можно препода или друга потеребить, и за два вечера закончить ВУЗ? :)))


gosha
20.12.2006, 23:29

ну не знаю, может я туп, но даже после многих лет кодинга у меня страуструп «тяжеловато» идет.Не только у тебя :smile: Грешно на мЭтра гнать, конечно, но писать книги имхо не его призвание :smile:
Сам когда-то начинал с этого –
_ttp://masterpc.alfaspace.net/books/downloads/podbelski/
Новичкам рекомендую :yes:



Настройка Линуха

Wild_Anthony
08.01.2006, 01:56

Я вот тока поставил линух, коечто посмотрел, хочу сказать, что винда выглядит дружелюбней, та ладно, решыл осваевать Линух, и сразу появились некоторые вопросы….
1. Как настроить подключение к нету :kz:
2. Как научить линух читать/писать НТФС(или винду тожесамое делать с ФС линуха….)
3. У меня в системе ТВ тюнер, линух его сьел, дрова сам нашол, поставил, но потом говорит что чтото там нетак, мучай модуль V4L2 (это оно споймало ТВ тюнер под таким именем, споймало оно его 2 раза ещё под этим именем V4L, но как ни настраивал, выдаёт это сообщение)
4. но это уже напоследок, у кого можна скачать дополнительный софт, под Мандриву( ДЦ++, Емуль винды(ато чат у нас локальный, в винде…), Медиаплеер «хорошый»….)


RISKcurious
08.01.2006, 03:27

1. Система > Настройка > Настройка компьютера, там Сеть и интернет > Настройка нового сетевого интерфейса > выберешь adsl потом пару раз далее , PPP через ethernet (PPPoE)
2.читает мандрива лёгко твои виндовс разделы находятся в /mnt/ , писать я не знаю как (оно мне впринципе не надо), а с винды смотреть ext2 есть отличная утилитка Ext2IFS_1_10a.exe
3. не настраивал
4. VMware линуховый мож у мя взять


Wild_Anthony
08.01.2006, 17:53

1. Система > Настройка > Настройка компьютера, там Сеть и интернет > Настройка нового сетевого интерфейса > выберешь adsl потом пару раз далее , PPP через ethernet (PPPoE)
Сенк работает, я это пишу с линуха :smile:
2.читает мандрива лёгко твои виндовс разделы находятся в /mnt/ , писать я не знаю как (оно мне впринципе не надо), а с винды смотреть ext2 есть отличная утилитка Ext2IFS_1_10a.exe
Ни то не другое не работает, так как у меня Винда и Линух, на разных винтах, так что надо ещё чтото думать:laught:


ALEXIS
08.01.2006, 20:27

я вот себе тож линукс поставил – для интереса. мандриву 2006. тож с неё сейчас пишу.
сейчас даже дискофм млухаю через амарок =)
вопрос:
у меня в lilo куча строк, первое win_xp и linux понятно, а дальше идут кие-то alt_linux, linux-xxx-uo-1gb ? Это про оперативку, у меня ее 1,5 гига, так что же мне запускать?
как сделать частоту обновления экрана 100 герц? Сейчас максимум 85 ставится =(
и еще у кого есть dc клиент под линукс и оперу 8.5 для оперы, токо я если дадите, я не знаю как его устанавливать :)
не получается настроить самбу , lisa вроде настроил и оно сказало запустить клиент лиса, а де его взять – фиг знает…
и с тюнером у меня напряги – вообще не работает =(
драйвера на видюху (у меня производста nvidia :) )есть? но разбиратся с их установкой буду попозжа, сейчас хотя бы с этим разобраться…
и еще вопрос. есть здесь что-то типа файрвола (желательно типа outpost)? а то зашел токо на форум и проверил статистику – уже куда-то пол метра съело… =(
всё. пойду пока в родную винду – там все настроенно и левого трафика нету =)


Hooligan
07.02.2006, 15:17

А есть у кого-то эмулятор Wine для Linux’a?


RedHat
07.02.2006, 18:23

А есть у кого-то эмулятор Wine для Linux’a?
Ну как тебе сказать? Пиши что за дистрибьютив, тогда точно ктото ответит…:friday:


RISKcurious
08.02.2006, 21:23

А есть у кого-то эмулятор Wine для Linux’a?
если ты тот Хулиган, то у мя на фтп мож взять в дистрибе…


EndorphinE
19.02.2006, 07:02

Насколько я знаю то Линукс в НТФС впринципе не пишет…. А если пишет то нафсегда, тоесть Виндовс говорит вам досведания и вся инфа с ним. Читает Лин НТФС нормально(тоесть НТФС только для чтения ), если надо чтоб с винды читал ЕХТ2 – Ехт3, то есть плагин для Total Commander у меня нет но в инете найти можно.


Wild_Anthony
19.02.2006, 11:42

Насколько я знаю то Линукс в НТФС впринципе не пишет…. А если пишет то нафсегда, тоесть Виндовс говорит вам досведания и вся инфа с ним. Читает Лин НТФС нормально(тоесть НТФС только для чтения ), если надо чтоб с винды читал ЕХТ2 – Ехт3, то есть плагин для Total Commander у меня нет но в инете найти можно.
У меня есть спец дрова, которые дают винде возможность писать/читать ЕХТ2 – Ехт3, если надо, обращайтесь..


MkPBanker
04.03.2006, 19:01

А локальная сеть в Линукс доступна, если остальные машины ещё под ВИндой? ВОйдя в Мой компьютер Линукса виден пункт СЕТЬ. Войдя в него видно СЕТЬ ВИНДОВС. Войдя туда – ПУСТО. И можно как-то на системных панелях видеть значки подключения (счётчики) для локалки и инета отдельно? Ну вообщем как в Винде? Система Linux Mandriva 2006, пока только на 1 машине пробная…
И камеру не видит, досадно, вопрос есть ли дрова ещё под неё на сайте)



Найти информацию?

Используйте форму ниже, чтобы начать поиск по сайту:

Не нашли то что искали? Напишите мне на почту, возможно я помогу найти Вам необходимую информацию!

Сыылки на полезные сайты!

Тут будут публиковаться ссылки на интересные ресурсы по теме...