Для одного из своих приложений мне понадобилось достаточно много информации которой полно на различных wiki но всё это собирать вручную достаточно геморно. По этому я решил вооружится C# и распарсить всё что мне надо. Мы будем использовать хорошую библиотеку Html Agility Pack которая берёт на себя большую часть работы и предоставляет для нас удобное DOM дерево с которым мы можем работать. Она поддерживает XPath запросы, LINQ и много всего вкусного.
воскресенье, 3 ноября 2013 г.
воскресенье, 27 октября 2013 г.
Механизм исключений C#.
Не преодолев желания налабать что нибудь в блог, решил написать не
большую статейку об исключениях в C#. Я не буду писать много воды и
перейду сразу к делу. Логически я разделю статью на две части, обработка
и выброс исключений. Собственно больше о них сказать мне не чего.
Отлов исключений
Для отлова исключений в C# предусмотрено три ключевых слова, все они относятся к одной системе и работает на подобии оператора if-else. Это try\catch\finaly. В тело оператора try помещается код, за которым нужно будет так сказать проследить. Catch блок обработки определённого исключения а finaly блок который будет вызван после обработки исключения для того что бы освободить ресурсы. Но по меньше лирики перейдём к коду :
Не много об исключениях
Для начала определимся что такое исключения, и для чего они вообще нам нужны. На сколько мне известно, в достаточно старых языках таких как Си, для контроля за работай программы использовали примитивные способы, на подобие возврата кода ошибки из функции. Удобного в этом мало, да и попросту забыть проконтролировать код ошибки очень просто из-за чего может начаться не контролируемое поведения программы и бессонная ночь отловки бага :) Конечно в Си с помощью макросов и прочего есть не что подобное. Но в более поздних языках это представлено более лаконично. И так, смоделируем ситуацию, допустим у нас есть некий метод который принимает пользовательский объект для последующей работы с ним. А теперь представим что мы в эту функции передали выражение со значением null. Что будет? Если метод попробует начать работу с пустышкой, система выбросит NullReferenceException, но по хорошему метод перед работай проверить правильность всех аргументов и сам выбросить нужные исключения. Выброшенная ошибка будет распространятся вверх по цепочки вызовов пока её не отловят или она не достигнет верхней точки и программа не завершится аварийно. Думаю теперь понятно зачем нужен механизм исключений?Отлов исключений
Для отлова исключений в C# предусмотрено три ключевых слова, все они относятся к одной системе и работает на подобии оператора if-else. Это try\catch\finaly. В тело оператора try помещается код, за которым нужно будет так сказать проследить. Catch блок обработки определённого исключения а finaly блок который будет вызван после обработки исключения для того что бы освободить ресурсы. Но по меньше лирики перейдём к коду :
....try{ SomeObject _so; _so.SomeMethod();}catch(NullReferenceExcepetion e){ //Обработка NullReferenceExeption}catch(Exception e){ //Обработка вообще всех исключений}finaly{ //Блок который вызовется после обработки исключения // (если исчклюения не было блок не вызовется)}.... |
"Выброс" своих исключений
Для инициирования своих исключений в C# предусмотрен оператор throw. Справа от оператора указывается выражения которое имеет тип производный от System.Exception.Проще говоря нужно указать ссылку на класс который пронаследован от System.Exception. Так же в .Net Framework пред усмотрена куча классов для этих дел, но при желание вы можете создать свои. В общем синтаксис примерно такой:
public class ThrowTest2 { static int GetNumber(int index) { int[] nums = { 300, 600, 900 }; if(index > nums.Length) { throw new IndexOutOfRangeException(); } return nums[index]; } static void Main() { int result = GetNumber(3); }} |
Резюмируя
В заключения хочу сказать что можно найти ещё кучу всего интересного об исключениях в C#, я же взялся рассказать базовые возможности. Свои замечания пишите в комментариях, постараюсь поправить статью если что не так :)пятница, 13 сентября 2013 г.
Впечатление от книги "C++ для профессионалов"
Достаточно давно я прочитал "Базовый курс C++" от Шилдта, книга в целом хорошая и я познал базовый синтаксис C++. Но всё не было времени практиковать да и по работе писал на C# так что частично знания C++ пропали а когда я начинал на нём писать и вовсе был некий страх что что-то делаю не так, как будто хожу по охерено тонкому льду а под ним меня ждёт разыменования нулевого указателя. Но вот один мой знакомый предложил мне написать с ним ASCII RPG, от чего я не мог отказаться. И вот я сел за написание движка и опять этот страх. Решил что так жить нельзя и нагуглил "Николас А. Солтер, Скотт Дж. Клепер - C++ для профессионалов". Сказать что книга развеила мои страхи это ни чего не сказать. Она помогла переосмыслить многие вещи в ООП и понять как работает C++ в самых "низах". В общем, всем советую! В начале идёт быстрый прогон по базовому синтаксису C++ так что если вы когда то его знали или не плохо программируете на C подобных языках, то в целом книга поможет вам начать путь к действительно толковому программированию на С++.
Проба пера в создании заставки к видео.
Давича отрубили мне интернет, и я вспомнил что мне не помешала бы заставка для видео туториалов. Ну вот открыл я Adobe After Effects ии.. всё пропало. Точнее из-за кряка всё не захотело нормально работать и я решил склепать что нибудь простенькое в Sony Vegas. В итоге получилось вот что.
Видео
Видео
среда, 11 сентября 2013 г.
RayCast Tutorial
Записал новый туториал, который планировал очень давно но всё не как не было возможности. Но вот я купил новый микрофон, к слову микрофон достаточно не плохой, вокальный все дела, но звуковая карта из мат платы по этому этого почти не заметно :)
Видео
Видео
четверг, 15 августа 2013 г.
Набитие первой тату
Сделал такое вот творчество на своей руке, конечно в мой адрес после такого будет вполне адекватно высказывание "Позёр" от части так и есть, но программирую тоже не плохо. В начале хотел набить "00001010" что в десятичном числе давало 10, число десять мне нравится хотя бы из-за теории 10к часов, которые нужно потратить на обучения что бы добиться успеха. Но первый вариант не понравился из-за того что нулей слишком много, а для меня в татуировки главное красота как никак, в итоге сменил на "01101010" что является десятичным числом 106 которое для меня не имеет ни какого смысла. Всё прошло достаточно быстро и не больно, за работу отдал 1500 что дёшево, вроде как этот салон является топовым для моего не большого города.
понедельник, 29 июля 2013 г.
Регистрация на BrainStorage
Не без известный создатели хабры запустили таки один из своих проектов "BrainStorage" получился эдакий LinkedIn более таргетированый под русско язычную аудиторию. Решил не оставаться в стороне и тоже зависти аккаунт http://brainstorage.me/HolyMonkey
Подписаться на:
Сообщения (Atom)
