Как стать автором
Обновить
106
0
Алексей Мерсон @m_a_d

Developer Advocate в Sage (Т-Банк)

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

Дружим C# и OpenOffice.org

Время на прочтение4 мин
Количество просмотров15K
Не судите строго, это моя первая статья

На работе поставили задачу — написать бюджетный вариант для моей программы (ранее для отчетов использовали MS Office). Сильно озадачился, из — за нехватки материалов по данной теме, так как все материалы разбросаны по разным блогам, и они все в основном на английском. Сегодня я решил поделиться своим, пусть и небольшим опытом в данной проблеме.
Читать дальше →
Всего голосов 64: ↑55 и ↓9+46
Комментарии16

.NET в unmanaged окружении – использование и родовые проблемы

Время на прочтение8 мин
Количество просмотров7.6K
Managed код и .NET Framework – совершенно замечательная вещь с точки зрения программиста, которому надо кровь из носу выдавать максимально стабильно работающие программы. Использование .NET позволяет очень сильно сократить затраты на разработку, тестирование и сопровождение программных продуктов, особенно по сравнению с C++ или Delphi.

Однако, managed код имеет одну очень серьезную родовую травму, которая прямо проистекает из его достоинств – он изначально несовместим с unmanaged средой, в которой вынужден работать. Boxing, поля памяти, отсутствие прямой адресации и прочие ухищрения, призванные облегчить жизнь программисту, приводят к тому, что взаимодействие managed и unmanaged кода становится проблемой.

Однако нет такой проблемы, которую нельзя решить (пусть даже с помощью топора и лома). Сегодня у нас краткий обзор возможностей организации взаимодействия между managed и unmanaged кодом. Многие C# и особенно VB.NET программисты боятся этого, но на самом деле в этом нет ничего страшного. Начнем мы с самых примитивных методов, которые будут интересны разве что новичкам (поэтому матерые волки .NET могут с чистой совестью первую часть статьи пропустить), и закончим описанием того, что делать, если хочется написать программу на .NET, но сделать это невозможно (а такое тоже бывает). Естественно, к каждому случаю будут приведены конкретные примеры, быть может, хабрачеловеки расскажут мне о моей собственной велосипедности. Параллельно я скажу пару слов о подводных камнях при работе с VSTO и Windows Shell.
Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии32

.NET в unmanaged окружении: вызов управляемого кода из неуправляемого

Время на прочтение12 мин
Количество просмотров5.8K
Как вы, наверное, помните из моей предыдущей статьи, взаимодействие unmanaged и managed кода представляет определенную проблему, даже для опытных разработчиков. Причина этого — необходимость понимать, какие процессы происходят при пересечении данными границы CLR.

К сожалению, нередко проблема наладить взаимодействие встает у тех разработчиков, которые слабо знакомы с подноготной технологии COM и возможностями .NET для обеспечения взаимодействия. Это нормально — нельзя знать все на свете. Потому я не буду здесь объяснять всю суть проблемы маршаллинга данных из unmanaged в managed и обратно, а просто дам несколько рабочих рецептов, которые помогут вам тогда, когда нужно срочно и завтра, и вы с тоской смотрите на английское издание книги Inside OLE и понимаете, что разобраться в этом за день нет никакой возможности.

Однако, для тех, кто неплохо в этом разбирается, в конце статьи есть небольшой бонус — способ организации out-process COM на .NET. Честно говоря, я добросовестно считал, что сделать out-process COM с помощью .NET невозможно, однако буквально вчера выяснилось, что все-таки нет, можно. В связи с этим, рассказывать про архитектуру .NET Pipe RPC я скорее всего не буду — она достаточно сложна, однако все предоставляемые ей возможности с легкостью заменяет out-process COM.
Под хабракатом много текста
Всего голосов 35: ↑29 и ↓6+23
Комментарии8

Используем Unmanaged С++ код в .NET программах

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

Сегодня я (как, наверное, и многие другие программисты), все больше использую в своих разработках платформу .NET и язык C#, но все еще остаются уголки где оправдано применение C++. Это создает необходимость их интеграции.

Зачем?

  • В C++ код целесообразно выносить алгоритмы, критичные к производительности
  • В C++ код целесообразно выносить части, связанные с защитой приложения
  • Много старого кода написано на C++, и переписывать его весь — не лучшее решение
Это лишь основные причины, список далеко не полон. Но раз есть необходимость, значит есть решения.

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

Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии7

TDD — это как сноубординг

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

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

«Я не использую эту методологию (TDD) из-за того, что главный для меня вопрос остается без ответа. Я знаю, что использование TDD уменьшает количество багов, но что насчет времени, необходимого при работе по этой методологии?
Я хотел бы знать как изменяется время на разработку корпоративного приложения с использованием TDD — уменьшается, увеличивается или остается неизменным.
Надеюсь, вы сможете ответить, так как TDD и BDD меня очень интересуют.»

Ответ на письмо
Всего голосов 59: ↑45 и ↓14+31
Комментарии58

Hg Init: Часть 1. Переобучение для пользователей Subversion

Время на прочтение9 мин
Количество просмотров123K
Hg Init: Учебное пособие по Mercurial.


Mercurial — это современная распределенная система контроля версий с открытым кодом. Эта система — заманчивая замена для более ранних систем вроде Subversion. В этом простом учебном пособии в шести частях Джоэль Спольски (Joel Spolsky) рассказывает о ключевых принципах Mercurial.

Если вы использовали Subversion, то Mercurial будет непонятным. Эта часть рассказывает о главных отличиях при работе с Mercurial. Если вы никогда не использовали Subversion, то можете просто пропустить эту часть.

Часть 1. Переобучение для пользователей Subversion


В каком же я был смятении, когда программисты в моей компании решили сменить Subversion на Mercurial!

Для начала, я начал приводить всевозможные тупые причины, по которым нам не надо ничего менять. «Мы должны хранить репозиторий на центральном сервере, так безопаснее», — сказал я. Знаете что? Я был неправ. При работе с Mercurial у каждого разработчика на жестком диске хранится полная копия репозитория. Это, на самом деле, безопаснее. В любом случае, почти в каждой команде, использующей Mercurial, центральный репозиторий тоже существует. И вы можете делать резервное копирование этого репозитория со всей необходимой одержимостью. А еще можете устроить трехступенчатую защиту с Сайлонами, Штурмовиками и прелестными лабрадудлами или что там требует ваш IT-отдел.

Читать дальше →
Всего голосов 119: ↑116 и ↓3+113
Комментарии125

Microsoft All-In-One Code Framework (C#, C++, VB.NET)

Время на прочтение1 мин
Количество просмотров2.1K
В связи с недавним выходом новой версии этой «библиотеки знаний», и в связи с отсутствием новостной поддержки на Хабрахабре, заполняю этот пробел. Итак если вы:
  • Долго искали примеры реализации той или иной части API Windows и не могли найти
  • Хотите чтобы у вас на жестком диске было обширное количество работающих примеров
  • Если вы программируете на C#, C++ или VB.NET
  • Хотите чтобы для вас написали примеры работающего кода представители Microsoft MSDN Team

Если хоть один пункт вызвал в вас интерес, милости просим под кат. Могу поспорить, каждый здесь найдет именно то что ему нужно, а если не найдет, пишите отзывы, я попробую реализовать те примеры, которых вам всегда не доставало и включить их в библиотеку.
Читать дальше →
Всего голосов 78: ↑57 и ↓21+36
Комментарии10

ICQ — платить за каждого пользователя альтернативного клиента?

Время на прочтение2 мин
Количество просмотров1.8K
Сегодня в блоге Экслера появилась любопытная запись, откуда можно узнать об аппетитах нового владельца ICQ.

Как вы знаете, недавно компания DST (ныне — «Mail.ru Group») купила один из популярнейших сервисов — ICQ. Также под управлением компании находится ряд других популярных проектов, таких, как «Mail.ru» и «Одноклассники».

Так вот, данная контора продолжает давно начатую борьбу с альтернативными клиентами. Только если ранее AOL путем изменения протокола делала неработоспособными те или иные клиенты, то теперь владельцы службы начинают требовать с владельцев неофициальных клиентов денег за каждого пользователя.
Читать дальше →
Всего голосов 176: ↑154 и ↓22+132
Комментарии382

Мифы и заблуждения насчёт CLR и .NET

Время на прочтение8 мин
Количество просмотров36K
Последнее время на популярно-технических форумах я часто встречаю ожесточённые споры приверженцев и противников .NET. Эти споры, как правило, начинаются из-за недоразумения, и заканчиваются жестким троллингом, беседами “за жизнь” и сравнением радиусов и удельных плотностей материала различных сферических коней. Обе стороны силятся доказать и аргументировать, но ни одна не хочет посмотреть на предмет спора другими глазами. Хабрахабр не исключение, увы.

Накалу страстей такой беседы позавидовали бы религиозные фанатики. Единственное, что спасает противников от крестовых походов друг на друга, вооружившись вилами и LangSpec’ами — то, что они разделены интернетом.

Так жить нельзя, господа. Мне захотелось исправить эту ситуацию, и выступить с одной из сторон. Этим постом я попробую нанести сообществу непоправимую пользу и разобраться с мифами, на обсуждение которых, а не на взаимное членовредительство, к сожалению, и уходят силы спорщиков. А так как я в своё время перелез с C++ на C# и всё вокруг него, то я буду развенчивать негативные мифы, прибавлять позитива и всячески приукрашивать действительность — а как без этого. И — заметьте — это обойдется совершенно бесплатно для M$. Ну а сделать я это хочу в формате Q&A.
Едем!
Всего голосов 226: ↑170 и ↓56+114
Комментарии241

Статический анализ исходного кода на примере WinMerge

Время на прочтение6 мин
Количество просмотров3.1K
Сегодня я хочу посвятить пост тематике, почему инструменты анализа исходного кода полезны вне зависимости от уровня знаний и опыта программиста. А польза такого анализа будет продемонстрирована на примере инструмента, который известен всем программистам — WinMerge.

Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии28

Кризис внимания

Время на прочтение5 мин
Количество просмотров11K
Дисклаймер: данная статья — плод размышлений и наблюдений за собой, коллегами, собеседниками, друзьями… Наверняка, мысли банальны и не я первый их высказываю, но это значит что проблема назрела.
Чтобы не повторять других ораторов и привнести что-то свое, попробую не только завесить проблему, но и прикинуть пути решения проблемы.

Итак, проблема: люди нового поколения (компьютеров, интернета, мобильных телефонов) не могут сосредоточиться. Не новая мысль, правда? Слишком много раздражающих факторов, скажете вы и… будете правы! Но проблема от этого не уменьшится.

Давайте попробуем выделить основные:
1. Мобильник. Мы настолько с ним сжились, что выходя из дома без него чувствуем себя раздетыми, брошенными и беззащитными. Мобильник ловит в метро, в горах, в Карелии и Селигере. Мы «все время на связи» — круто! Тотал контрол.

2. Интернет. Рассадник мелких раздражителей: мессенджеры, почта, твиттер, форумы, блоги :) И вообще, в инете столько всего интересненького! А теперь все это многообразие вообще все время в любимом коммуникаторе с красивым экраном и приятном на ощупь — ну как тут отказаться?
Читать дальше →
Всего голосов 155: ↑134 и ↓21+113
Комментарии102

Защита Win32 и .NET приложений: обзор протектора Themida (X-Protector)

Время на прочтение10 мин
Количество просмотров53K
Этот обзор посвящен Themida (в прошлом X-Protector), одному из самых мощных и надежных протекторов Win32 приложений. Поскольку Themida совсем недавно понадобилась мне для одного из моих приложений, я решил написать по ней небольшой обзор. Заодно попросил автора ответить на некоторые интересующие меня вопросы. Думаю, ответы будут вам тоже интересны. Результаты этого небольшого интервью ищите в конце статьи.

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



Читать дальше →
Всего голосов 56: ↑40 и ↓16+24
Комментарии119

XPath наглядно

Время на прочтение1 мин
Количество просмотров60K
XPath является одним из ключевых моментов на дороге к пониманию XSLT. И на первых порах хочется получить какой-нибудь простой способ поэкспериментировать с ним, чтобы в деталях разобраться, как он работает. Способа такого, впрочем, не наблюдается. Приходится или качать совсем не бесплатные XML/XSLT редакторы, или довольствоваться статичными картинками с zvon.org. Может быть, я плохо искал. Но с моей колокольни все обстоит именно так. И когда передо мной в очередной раз встала задача «Объяснить XSLT», в голове и родилась идея крохотного сервиса. После того, как все заработало, было решено выкатить его для всеобщего пользования: наверняка не я один сталкивался с похожими проблемами.
Читать дальше →
Всего голосов 100: ↑93 и ↓7+86
Комментарии35

По сравнению с тобой большинство людей кажутся тупыми

Время на прочтение3 мин
Количество просмотров13K
В интернет-индустрии большинство людей знают разницу между Firefox и Internet Explorer. Мы также в курсе, что такое FTW и чем отличаются ASP, PHP и RoR. Ну или по крайней мере знаем, что разница есть.

Если ты встретишь стартапщика, который не слышал про Digg, Google Apps или фримиум, ты будешь удивлён. Правильно?

Но это лишь мы, маленькое подмножество дигерати, у которых есть время отслеживать почти всё новое по нашей индустрии. Остальной мир? Абсолютно несведущ в этом плане, и это нормально. Проблема возникает, когда вы пытаетесь предугадать потребности ваших пользователей. Есть вероятность, что они вообще вас не поймут. Несколько примеров.
Читать дальше →
Всего голосов 275: ↑250 и ↓25+225
Комментарии195

Использование Thrift в .NET

Время на прочтение5 мин
Количество просмотров13K
Хочу поделиться с вами примером того как можно использовать такую удобную штуку как Thrift в своих .NET проектах.

Для тех кто не знает, Thrift — это фреймворк для облегчения взаимодействия между кодом написанным на разных языках, а именно C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk и OCaml.

Thrift используется и был изначально создан Facebook. Так же неоднократно упоминался здесь, на Хабре, но примеров для .NET я не нашел, кстати пошаговое руководство для .NET отсутствует и на официальном сайте. В гугле если честно, тоже не смог найти, хотя может плохо искал.

Thrift позволяет один раз описать сервис, структуры данных и даже исключения, а потом сгенерировать код для всех поддерживаемых языков. Таким образом, если вы, например, напишете сервер с использованием Thrift на .NET, то вы
  1. Сэкономите кучу времени для написания клиент серверного приложения, например с использованием сокетов.
  2. Почти автоматически получаете клиентов на всех поддерживаемых языках.
В своем примере я реализую простейший сервис, который просто будет возвращать время. Но имея такой макет достаточно легко расширить его до чего-нибудь полезного.
Читать дальше →
Всего голосов 41: ↑31 и ↓10+21
Комментарии28

Xcover 271: IP67, A-GPS, Google Maps, шагомер, высотомер — $200

Время на прочтение2 мин
Количество просмотров43K
Наверняка многие из нас с вами довольно часто оказываются в ситуациях, когда наша техника должна вытерпеть серьезные нагрузки от окружающей среды, и в результате не подвести в самый ответственный момент. У кого-то такая ситуация может случиться во время активного отдыха на природе, а у кого-то — и во время не менее активной работы, заставляющей системных администраторов спускаться в подземные коммуникации, а инженеров-проектировщиков стоять под проливным дождем на крыше высотного здания.

В такие моменты зачастую понимаешь, что в твоей работе обоснованный минимализм и высокая степень надежности — самые важные характеристики устройств.

Под хабракатом — спецификации нового сотового телефона компании, Samsung Xcover 271, сертифицированного в соответствии с практически самым надежным стандартом в области защиты оболочек устройств — IP67.
Читать дальше →
Всего голосов 56: ↑45 и ↓11+34
Комментарии115

Где наша бизнес-логика, сынок?

Время на прочтение18 мин
Количество просмотров83K
Спасибо небу за то, что в субботу шел дождь, и я это прочитал (а вы скажите спасибо за то, что перевел). В воскресенье, однако, светило солнце и форматирование текста было отложено.

Отдельное спасибо автору, за разрешение отдельной публикации.

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

не поддайся темной стороне силы usernаme
Всего голосов 121: ↑112 и ↓9+103
Комментарии122

Построение интерфейса: описание паттерна «Активные фильтры» (Active Filtering)

Время на прочтение5 мин
Количество просмотров7.2K
image image image image
Фильтры — мы сталкиваемся с ними постоянно, они на сайтах и в приложениях. У кого, при поиске той или иной информации, не возникала мысль: «Здесь бы фильтр не помешал»?

Мы предлагаем поговорить о фильтрации. Зачем она нужна? Ведь кто ищет, тот всегда найдет? И проанализирует? Или все же нет?

Предположим ваш сайт или приложение содержит необходимую для пользователя информацию, причем в большом объеме. Обратиться ли пользователь к Вам? Да, конечно. В худшем случае человек просто запутается в объеме данных, в лучшем сможет самостоятельно отобрать необходимое и отправиться сводить и анализировать все предоставленное ему в отдельных документах и таблицах, которые он будет создавать самостоятельно. Вернется ли он к вам, или пойдет искать более удобное представление необходимым ему данным? Скорее второе.

Мы предлагаем Вам статью, в которой, основываясь на опыте ведущих разработчиков, рассмотрим, зачем и когда имеет смысл использовать фильтры, как их организовать, где расположить, и как сделать понятными для пользователя и сами фильтры, и результаты, полученные с их помощью.
Читать дальше →
Всего голосов 57: ↑50 и ↓7+43
Комментарии28

Построение интерфейса: описание паттерна «Активные ссылки» (Action links)

Время на прочтение4 мин
Количество просмотров2.7K
image image image image
Ссылки — это просто или совсем не просто?

Они встречаются на сайтах, в программах, в интерфейсах к базам данных, и все мы вроде бы прекрасно с ними знакомы. Привыкли разработчики, и даже самые неопытные пользователи вскоре понимают, что там, где курсор стал «пальчиком» – можно нажать, и это называется ссылка. Стоит ли поднимать и изучать казалось бы такой понятный вопрос.

Мы говорим о хорошем интерфейсе. И говорим о нем на профессиональном
языке, глядя в сторону опыта западных специалистов. Стало быть, одной примитивной классификации: ссылка или не ссылка (а например кнопка), нам очень скоро станет недоставать. В статье идет описание одного из вида — ссылок, называемого Активными ссылками.

— При нажатии на ссылку произойдет создание резервной копии? – это Активная ссылка
— Поля форм, заполнятся автоматически-определяемыми значениями? – это Активная сылка
— А может еще что-то…

Читать дальше →
Всего голосов 41: ↑25 и ↓16+9
Комментарии21

Построение интерфейса: описание паттерна Альтернативные режим просмотра (Alternative Views)

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

Это одна из серии статей рассказывающих об использовании паттернов.

Случалось ли Вам оказываться в такой ситуации: заказчик в погоне за красивым дизайном, дает задания, которые являются конкурирующими, а порой и взаимоисключающими?
Мы предлагаем посмотреть, как данную задачу решили ведущие разработчики, и ввести следующий термин: Режим просмотра.
Данное решение позволит совместить, казалось бы несовместимое, при этом сохранить целостность и удобство интерфейса.
С примерами различных Режимов просмотра, каждый пользователь ПК встречается каждый раз, когда открывает очередное окно или документ, они стали для нас привычным инструментом. В статье попробуем разобраться, когда имеет смысл использовать несколько режимов, как их организовать, и как сделать их доступным и удобным инструментом для пользователей.

Читать дальше →
Всего голосов 13: ↑8 и ↓5+3
Комментарии2

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Работает в
Зарегистрирован
Активность