К основному контенту

Сообщения

Почему нельзя наследовать структуры в C# ?

Введение - зачем используются структуры? Все мы сильно любим структуры (идея, чуждая Java, не считая примитивных типов). Структуры, когда они не упакованы, зачастую, предоставляют прекрасную возможность обрабатывать динамические данные относительно небольшого размера. Размещение и освобождение типов данных в целом проще, чем размещение и освобождение ссылочных типов. Это связано тем, что структуры размещаются в стеке, либо встроены в содержащиеся типы и освобождаются, при очищении стека либо когда встроенные типы перераспределяются, в то время, как ссылочные типы размещаются в куче и очищаются сборщиком мусора (garbage-collected) Хм... Структуры не хотят наследоваться. Объектно-Ориентированное Программирование дает нам возможность делать много полезных вещей. И основной коцепт - это, конечно же, наследование. Многие из нас, когда либо, пытались наследовать структуру только для того, что бы понять, что C# не позволит нам этого сделать. Для примера рассмотрим код: /...

Парсинг HTML с помощью C#

Для парсинга HTML я решил использовать библиотеку htmlagilitypack . Скачать ее можно здесь( http://htmlagilitypack.codeplex.com/ ) После скачивания не забываем подключить dll к нашему проекту. Ниже приведен пример кода использования данной утилиты: htmlCode = WebUtility. HtmlDecode ( htmlCode ) ; HtmlAgilityPack. HtmlDocument result = new HtmlAgilityPack. HtmlDocument ( ) ; result. LoadHtml ( htmlCode ) ;   List < HtmlAgilityPack. HtmlNode > list = result. DocumentNode . Descendants ( ) . Where ( x => ( x. Name == "div" && x. Attributes [ "class" ] ! = null && x. Attributes [ "class" ] . Value . Contains ( "main" ) ) ) . ToList ( ) ;   foreach ( HtmlAgilityPack. HtmlNode node in list ) { rtbTest. Text + = node. InnerText + " \n " ; }  

Использование curl в C#

Для того что бы скачать страницу какого-либо сайта в основном используют код следующего вида: string page ; using ( var client = new WebClient ( ) ) { page = client . DownloadString ( "http://www.example.com/" ) ; } Конечно, это простейший код, но в большинстве случаев он работает. Но бывают случаи, когда при "парсинге" возникает ошибка:   500 Internal Server Error .  В основном, она возникает в случае, если сервер не может получить от нас h t tp-заголовок при запросе данных. (Конечно, это может быть и ошибка на сервере, но мы будет обсуждать случай, когда сайт защищен подобным способом) В данном случае нам необходимо отправлять http-заголовок на сервер, таким образом мы маскируемся под браузер. Для этого и служит библиотека curl. Программа cURL может автоматизировать передачу файлов или последовательность таких операций. Например, это хорошее средство для моделирования действий пользователя в веб-обозревателе. ( wikipedia ) Для исп...

OpenOffice не синхронизируется с Google Docs

Работаю с одними документами с разных компов. Решил их синхронизировать. Остановил свой выбор на Google Docs. Так как дома у меня стоит OpenSUSE, работаю я с OpenOffice. Благо там уже есть встроенная фича по экспорту. Файл → GoogleDocs & Zoho → Export to Google Docs. Выбрал, ввел логин и пароль и тут мне выдало ошибку: Server returned HTTP response code: 400 for URL: https://docs.google.com/feeds/upload/create-session/default/private/full?convert=false Оказалось, что этот сервис тупо не поддерживает форматы .docx, .xlsx и иже с ними. Пришлось сохраняться как .doc и работать дальше. Благо большого дискомфорта мне это не принесло.

Проблема тормозов ATI видеокарт в OpenSUSE Linux

После установки драйверов на видеокарту ATI Radeon HD 5570 столкнулся с проблемой заторможенности графики. Перерыл множество гайдов и форумов, не нашел ничего путного, проблема решилась случайно и до банальности просто. Настраивая новую звуковуху я неожиданно обнаружил, что у этой видеокарты есть еще и звуковое устройство. Параметры системы - Мультимедиа - Phonon. Под названием Redwood HDMI Audio [Radeon HD 5000 Series]. После отключения этого устройства тормоза самоустранились.

Настройка WiFi на ноутбуке HP Pavilion dv-2 на OpenSUSE

При установке OpenSUSE 11.3 на бук  HP Pavilion dv-2 не была автоматом определена и установлена WiFi карточка. Пришлось подгонять ее вручную. Во-первых необходимо узнать что за оборудование вообще стоит у нас. Решается с помощью команды /sbin/lspci У меня вывел карточку Broadcom BCM4312. Далее необходимо под нее взять rpm-пакет, который был быстро найден в интернете:  http://packman.links2linux.org/package/b43-firmware Установка пакета: rpm -i b43-firmware-4.174.64.19-3.11.noarch.rpm Дальше проверяем карточку: iwconfig И если она у нас появилась, то с помощью NetworkManager ловим сети и подключаемся к интернету. Все просто, но может начинающим пользователем эта статья поможет.

Сворачивание полноэкранных wine приложений в opensuse

Многие приложения, запущенные из-под wine перехватывают сочетания клавиш, и по этой причине возникают трудности при переключении между окнами или сворачивании. Из такой ситуации можно выйти путем запуска приложения на новом x-сервере. Первое, что необходимо - это создать файл для запуска приложения. У меня был Warcraft 3, поэтому назовем файл war3.sh и запишем в него следующее: #! /bin/bash cd /home/delegate/.wine/drive_c/distr/War\ 3\ Icuupe\ and\ Garena/Warcraft\ III/ wine war3.exe Далее запускаем это файл в новых иксах: startx ./war3.sh -- :1 Где 1 - порядковый номер сервера (мы сейчас запущены на нулевом) Я столкнулся с двумя проблемами:  1. Не запускались иксы. Fatal server error: Cannot move old log file "/var/log/Xorg.1.log" to "/var/log/Xorg.1.log.old" Проблема решилась добавлением на них необходимых прав: chmod +s /usr/bin/Xorg 2. Не было звука в игре. Проблема опять таки в правах и решилась так: gpasswd -a userna...