Как стать автором
Обновить
32
0

Пользователь

Отправить сообщение

Работа со структурами в C#

Время на прочтение13 мин
Количество просмотров142K
По следам недавнего топика «Обработка больших объемов данных в памяти на C#» представляю перевод упоминавшейся там статьи о структурах.

Структуры являются фундаментальными типами данных в C# и большинстве других современных языках программирования. По своей сути структуры просты, но вы можете удивиться, насколько быстро работа с ними может стать сложной. Чаще всего проблемы возникают, если вы должны работать со структурами, созданными в других языках и сохраненными на диске или полученными в результате вызова функций из библиотек или COM-объектов. В этой статье я подразумеваю, что вы знакомы с понятием структуры, умеете определять их и владеете базовыми навыками работы со структурами. Предполагается, что вы имеете представление о том, как вызывать API функции с использованием p/Invoke, а также что такое маршалинг. В случае неуверенности в своих знаниях вы можете обратиться к документации.
Множество техник, описанных в данной статье, могут быть расширены и применены к любым типам данных.
Читать дальше →
Всего голосов 96: ↑82 и ↓14+68
Комментарии11

Файл⇨строка или активность работы над файлом

Время на прочтение19 мин
Количество просмотров2.2K
Большинство разработчиков знакома с таким продуктом, как визуализатор code_swarm (на google code). Как минимум каждый третий наверняка выгружал для него лог и создавал видео, которое визуализирует процесс разработки приложения, в котором видно активность программистов. Ну и конечно каждый второй видел видео подобного рода. Практически все эти видео делались на срезе отношения программист⇨файл.
В этой статье будет описан процесс формирования лога в срезе отношения файл⇨строка, то есть с генерированное видео будет демонстрировать активность работы над файлом.

Кому это интересно под прошу под кат.
В статье будет использованы:
  • Git — VCS
  • code_swarm — визуализатор истории репозиториев.
  • gource — визуализатор истории репозиториев.
  • Эмулятор среды linux в Windows или UNIX OS (с git уже идет для win эмулятор msysgit)
  • MEncoder — свободный кодировщик видео
  • ffmpeg — программа для конвертации видео с использованием различных кодеков.
Далее...
Всего голосов 44: ↑42 и ↓2+40
Комментарии12

Добавляем нужное в Firefox за час

Время на прочтение4 мин
Количество просмотров964
Многие наверняка сталкивались с тем, что любимый браузер не умеет делать что-то очень простое, но насущно необходимое. Я хочу рассказать, как на коленке за час можно обучить FF4 хорошему. Написание расширений — процесс очень простой и даже временами приятный, но, к сожалению, документация не всегда легко находится, how-to разбросаны по разным углам сайта MDN, внятных рекомендаций мне найти тоже не удалось… Все это порождает (по крайней мере, в моей голове — породило) миф о том, что это трудоемкий процесс, доступный только гуру. Вот этот миф и призвана развеять данная статья. Мы напишем расширение, которое будет править типографику в полях ввода, обращаясь за помощью к сервису «Типограф».


Поехали!
Всего голосов 80: ↑72 и ↓8+64
Комментарии26

Рейтрейсер четырёхмерного пространства

Время на прочтение5 мин
Количество просмотров17K
TitlePic

Недавно я делал простой рейтрейсер 3-х мерных сцен. Он был написан на JavaScript и был не очень быстрым. Ради интереса я написал рейтрейсер на C и сделал ему режим 4-х мерного рендеринга — в этом режиме он может проецировать 4-х мерную сцену на плоский экран. Под катом вы найдёте несколько видео, несколько картинок и код рейтрейсера.

Читать дальше →
Всего голосов 107: ↑105 и ↓2+103
Комментарии39

Тренинг нестандартных поступков: как сделать работу продуктивнее

Время на прочтение4 мин
Количество просмотров40K
Тот факт, что нестандартные поступки помогают саморазвитию, думаю, далеко не новость для хабрасообщества и особенно для читателей блога GTD. В топике тема раскрывается несколько полнее, плюс есть примеры того, что стоит делать для того, чтобы хорошо себя чувствовать и легко работать со свежим умом и острым вниманием.

Чтобы хорошо работать, важно быть победоголиком (о чём регулярно упоминается в разных Success Stories и книгах по мотивации). Каждая победа — это доказательство себе своих сил, фиксация на дальнейший успех, улучшение настроения и состояния. А ещё — выстраивание новых нейронных связей и много-много развития.

Грубо говоря, это работает так: когда вы побеждаете, мозг запускает процессы стимуляции, закрепляя на низком уровне тенденцию к успеху.

Читать дальше →
Всего голосов 67: ↑62 и ↓5+57
Комментарии59

Трёхуровневая модель сети и технологии VLAN, DHCP, OSPF, STP, SNMP, ACL, NTP на Cisco и D-link

Время на прочтение10 мин
Количество просмотров98K
Статья поможет новичкам понять как настраивать оборудование Cisco и D-Link в трёхуровневой модели сети. Конфигурация, представленная тут, не является эталонной или базовой — она для примера и понимания сути вещей, т.к. для каждого сетевого решения применяются свои параметры и технологии.
Читать дальше →
Всего голосов 62: ↑60 и ↓2+58
Комментарии24

Обработка больших объемов данных в памяти на C#

Время на прочтение7 мин
Количество просмотров89K
Хочу поделиться недавно приобретенным в C# опытом по загрузке и обработке в памяти больших объемов данных. Все нижеуказанное касается Visual Studio 2008 и .Net Framework 3.5.1, на случай каких-либо отличий в других версиях языка или библиотек.

Итак, у нас возникли следующие задачи:
1. Расположить в памяти до 100 миллионов записей, состоящих из строки, длиной 16 символов (уникальный ключ) и двух целочисленных значений, длиной 4 байта каждый;
2. Быстро находить и редактировать запись по ключу.

Читать дальше →
Всего голосов 110: ↑95 и ↓15+80
Комментарии122

Паттерн проектирования «Цепочка обязанностей» / «Chain of Responsibility»

Время на прочтение5 мин
Количество просмотров44K
Почитать описание других паттернов.


Проблема


Эффективно и компактно реализовать механизм обработки потока событий/запросов/сообщений в системах с потенциально большим количеством обработчиков.

Описание


Модель событие/обработчик широко применяется в программных системах из различных областей. В основном, это — графический интерфейс пользователя, где события, генерируемые от действий пользователя различным образом обрабатываются элементами интерфейса. Нельзя так-же забывать про WinAPI, который сплошь и рядом реализует такую модель. В большинстве источников эта модель имеет название Event Loop.

Читать дальше →
Всего голосов 51: ↑45 и ↓6+39
Комментарии24

MindDecider. Сколько стоит ваше решение?

Время на прочтение3 мин
Количество просмотров1.9K

Ситуация


Принятие решений

Ежедневно каждый из нас принимает решения. Принятие решений — это один из важнейших видов деятельности человеческого мозга и большая проблема на пути создания искусственного интеллекта.
Решение – это процесс и результат выбора цели и способа действий. У решения можно выделить:
  • Стоимость (затраты) решения — негативные факторы, связанные с решением.
  • Выгода (выгодность, прибыль) решения — соответственно, позитивные факторы, связанные с решением.
  • Цена решения — соотношение стоимости и выгоды, при которых решение принимается.
Большинство решений принимаются человеком спонтанно, то есть без анализа ситуации. Причиной этого является сильное преобладание выгодности решения над стоимостью. В этом случае «анализ ситуации» несет в себе дополнительные затраты. Однако, при повышении стоимости или уменьшении выгодности решения внимание человека к ситуации увеличивается.
Читать дальше →
Всего голосов 42: ↑29 и ↓13+16
Комментарии60

Обзор C# библиотек для работы с PDF

Время на прочтение5 мин
Количество просмотров170K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Всего голосов 87: ↑77 и ↓10+67
Комментарии24

Простой web scraping на f#

Время на прочтение6 мин
Количество просмотров7.4K
imageДостаточно законный вопрос почему такая избитая тема как web scraping и почему f#. 1. на f# web scraping намного увлекательней чем на c#  2. хотелось попробовать насколько f# применим для разработки не демо примеров а что то реально делающих программ 3. У f# есть интерактивная консоль, что при ковырянии в недрах HTML становится просто спасением. Сегодня с помощью f# будем покупать VW Touareg.
Если интересно...
Всего голосов 41: ↑28 и ↓13+15
Комментарии10

Генетический алгоритм на примере бота Robocode

Время на прочтение13 мин
Количество просмотров47K


Когда писалась эта статья, хабрапоиск по словосочетанию «Генетический алгоритм» выдавал благородную пустоту. Однако недостаточный уровень *вырезано цензурой* отодвинул дату публикации, и вот только сейчас после позорного нудливого попрошайничества с моей стороны эта статья получила возможность показать себя миру. За этот промежуток времени успели выйти в свет как минимум три (столько мне на глаза попалось) статьи на подобную тему, и, вполне вероятно, что-то из написанного ниже вы прочитаете не впервые. Таким людям я предлагаю не хмурить носики от очередной попытки неопытного юнца научно-популярно объяснить ГА, а проходить к следующему экспонату ко второй части, где описывается создание на основе ГА бота для программистской игры Robocode. Это, по последним сведениям разведки, еще не встречалось на хабре.

Часть первая. Жизнь и творчество генетического алгоритма.


Начнем издалека. Есть некоторый набор задач, которые требуют решения. Наша цель — найти действия, которые смогут преобразовать Дано (начальные условия задач) в Ответ (целевое состояние).

Если ситуация простая, и решение такой задачи можно явно посчитать из условий при помощи этих ваших матанов, то и славно, тут и без наших премудростей все хорошо, нас наебали, все расходимся. Например, при решении квадратного уравнения ответ (значения x1, x2) получаются из начального условия (коэффициентов a, b, c) путем применения формулы, которую мы все учили в школе. А что делать в более печальном случае, когда нужной формулы в учебнике нету? Можно попробовать с помощью мозгового штурма решить одну из задач. Аналитически. Численными методами. Силой отчаянного перебора функций. Через некоторое время послышатся мечтательное студенческое «хоть бы оно само решилось». Ага, тут-то мы и вылезаем из-за занавесок. Итак, цель — написать программу, которая бы находила функцию (программу), получающую на вход исходные данные и возвращающую годные циферки. Сила метапрограммирования, в бой!

пучина невежества
Всего голосов 115: ↑108 и ↓7+101
Комментарии28

Linq To Tasks и монада продолжения

Время на прочтение6 мин
Количество просмотров4.5K
После анонса C# 5.0 с его async и await, у меня появился небольшой интерес к асинхронному программированию, копание в сторону которого и послужило возникновению данного текста.
В процессе чтения статьи вы узнаете/омните.
  • Что есть монада на примере Maybe.
  • Что такое CPS и монада продолжения.
  • Как это связать с классом Task из TPL.

Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии20

Реверс-инжиниринг обфусцированной сборки .NET

Время на прочтение4 мин
Количество просмотров24K

Вступление


В этой статье я хочу поделиться с уважаемым хабраобществом своим опытом анализа и модификации обфусцированной .NET сборки на примере COMET-библиотеки PokeIn.

Reverse Engineering

Несколько дней назад я заинтересовался COMET решениями для ASP.NET и нашел несколько интересных библиотек, среди которых некогда бывшая бесплатной PokeIn. Очевидно она пользовалась некоторой популярностью, так как авторы перевели ее из разряда open source в платную. На сайте бибилиотеки есть возможность скачать бесплатную версию с некоторыми ограничениями, среди которых, пожалуй, самое важное — это ограничение в 10 одновременных соединений. С ним мы и будем бороться.
Читать дальше →
Всего голосов 65: ↑58 и ↓7+51
Комментарии19

Html Agility Pack — удобный .NET парсер HTML

Время на прочтение5 мин
Количество просмотров164K
Всем привет!
Как-то раз мне пришла в голову идея проанализировать вакансии размещенные на Хабре. Конкретно интересовало, есть ли зависимость между размером зарплаты и наличия высшего образования. А еще сейчас у студентов идет сессия (в том числе и у меня), то возможно кому-то уже надоело трепать нервы на экзаменах и этот анализ будет полезен.
Так как я программист на .Net, то и решать эту задачу — парсить объявления на Хабре я решил на C#. Вручную разбирать строки html мне не хотелось, поэтому было придумано найти html-парсер, который помог бы осуществить задачу.
Забегая вперед скажу, что из анализа ничего интересного не вышло и сессию придется сдавать дальше :(
Но зато немножко расскажу про весьма полезную библиотеку Html Agility Pack
Читать дальше →
Всего голосов 58: ↑41 и ↓17+24
Комментарии69

Unity — бесплатный кроссплатформенный 3D движок (и браузерный тоже)

Время на прочтение7 мин
Количество просмотров95K

Преамбула


Итак, сегодня я хотел бы рассказать вам о Unity (тем, кто ещё не знаком с ним, по крайней мере). Безусловно, на Хабре есть люди, которые знают, что это такое, но поиск выдаёт катастрофически малое количество топиков с упоминанием сабжа — два из них просто сообщают о новых версиях, один кратко презентует и ещё один посвящен всё-таки его использованию. «Непростительно, надо это исправить!», — подумал я, и решил написать краткий презентейшн с целью популяризации технологии. Если вы уже в теме — дальше можете не читать.

Честно говоря, когда я читал на википедии о бесплатном (по крайней мере, с вполне нормальной по функционалу фришной лицензией) 3d движке с нормальным IDE, встроенной нормальной физикой, аудио-движком и прямой реализацией сетевого мультиплеера на котором можно делать приложения для всего, кроме, пожалуй, nix'ов (поддерживаются и нормально работают Windows, MacOS, Wii, iPhone, iPod, iPad, Android, PS3, XBox 360), я уже чуял подвох.
Читать дальше →
Всего голосов 92: ↑86 и ↓6+80
Комментарии121

Настольные игры: во что играют в IT-офисах?

Время на прочтение9 мин
Количество просмотров113K
В этом топике — обещанный обзор разных настольных игр.

— Первая часть — это «портированные» версии известных компьютерных (по сюжету Starcraft, Warcraft, Civilization, Age of Empires, Master of Orion, Doom)
— Вторая часть — игры, которые интересны многим хабражителям, судя по комментариям к прошлым топикам.
— В комментариях предлагаю делиться информацией об интересных играх: думаю, многие смогут подсказать нечто необычное в плане поиграть или же предупредить от напрасной покупки.
— Топик будет интересен тем, кто хочет понять, что популярно на рынке, вкратце посмотреть товар для магазина и тем, кому просто интересно, что же там вообще есть из настольных игр для себя, компании или в подарок.
— В конце есть приятный бонус хабрачитателям.

Читать дальше →
Всего голосов 132: ↑120 и ↓12+108
Комментарии171

Компиляция и безопасное выполнения кода «на лету»

Время на прочтение4 мин
Количество просмотров7.7K

Проблема


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

Решение


.NET позволяет компилировать и выполнять код. Более того, исполнять код можно безопасно, сузив круг ресурсов, которые может использовать выполняемый код.

Читать дальше →
Всего голосов 43: ↑31 и ↓12+19
Комментарии7

Информация

В рейтинге
Не участвует
Откуда
Barcelona, Barcelona, Испания
Дата рождения
Зарегистрирован
Активность