Как стать автором
Обновить
0
0
Roman Melnyk @aywengo

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

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

Геометрические фигуры на CSS

Время на прочтение4 мин
Количество просмотров950K
Отличная подборка, как нарисовать различные геометрические фигуры одним элементом HTML.

Квадрат



#square {
	width: 100px;
	height: 100px;
	background: red;
}

Читать дальше →
Всего голосов 352: ↑328 и ↓24+304
Комментарии103

Сборщик мусора в среде .NET

Время на прочтение5 мин
Количество просмотров75K
Здравствуйте, Великие и Ужасные хабражители!
Как я недавно узнал, не так много народу знает о том, как работает сборщик мусора. Хотя я понимаю, что 99% разработчиков это не особо нужно, но я хотел бы, чтобы все, кто разрабатывают приложения на .NET, знали принцип его работы. В этой статье я постараюсь вкратце рассказать, как собственно работает сборщик мусора.

Базовые сведения о времени жизни объекта


Как известно, при инициализации объекта в памяти выделяет нужное под объект место. Использование ключевого слова new приводит к добавление объекта класса в так называемую управляемую кучу, а назад возвращается ссылка на объект.
При создании приложений на C# можно смело полагать, что исполняющая среда .NET будет сама заботиться об управляющей куче без непосредственного вмешательства со стороны программиста. На самом деле "золотое правило" по управлению памятью звучит так:
Размещайте объект в управляющей куче с помощью ключевого слова new и забывайте об этом.

Читать дальше →
Всего голосов 105: ↑79 и ↓26+53
Комментарии77

Как начать работать с GitHub: быстрый старт

Время на прочтение6 мин
Количество просмотров1.2M


Распределенные системы контроля версий (DVCS) постепенно замещают собой централизованные. Если вы еще не используете одну из них — самое время попробовать.

В статье я постараюсь показать, как можно быстро начать экспериментировать с git, используя сайт github.com.

В статье не будут рассмотрены различия между разными DVCS. Также не будет детально рассматриваться работа с git, по этой теме есть множество хороших источников, которые я приведу в конце статьи.
Читать дальше →
Всего голосов 182: ↑165 и ↓17+148
Комментарии51

StructureMap — краткий справочник для работы (3/3)

Время на прочтение7 мин
Количество просмотров2.3K
Теперь наступило время для:
  • Перехватчики (OnCreation, EnrichWith)
  • Дженерик типы
  • Аттрибуты (DefaultConstructor, ValidationMethod, Все остальные)
  • Немного о тестах

Перехватчики


С версии 2.5+ появилась возможность постобработки только что созданного объекта, либо полной его замены. В данном случае не ставится целью создать еще одни AOP фреймворк, так как их уже достаточно в мире, просто это может облегчить жизнь.

Для постобработки существует два+ метода:
  • OnCreation – принимает в качестве параметра Action, позволяет провести свою (custom) инициализацию объекта. Есть доступ к контексту SturctureMap.
  • EnrichWith – принимает в качестве параметра Function. Может возвращать любой тип совместимый с запрашиваемым.
  • Свои перехватчики

Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии0

StructureMap — краткий справочник для работы (2/3)

Время на прочтение10 мин
Количество просмотров3.2K
Продолжение первого поста о StructureMap

В первой части были освещены темы:
  • Установка
  • Регистрация (Основа, Профили, Плагины, Сканирование, Внедрение)

В этой части пойдет речь о:
  • Конструкторы (Простые типы, Конструктор по умолчанию, Составные типы, Приведение типов, Задание аргументов)
  • Свойства (Простое задание свойств, Встроенное задание свойств, Задание свойств фреймворком, Допостроение существующих классов)
  • Время жизни


Конструкторы


Очень важный вопрос в реальном программировании применительно к разрешению зависимостей в IoC контейнерах, как быть с классами, у которых несколько конструкторов. Как их инициализировать, как задавать параметры, как дорабатывать и прочее и прочее. Надеюсь что на большинство вопросов ниже будет дан ответ. StructureMap действительно мощная и гибкая штука.

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

Подробности
Всего голосов 22: ↑18 и ↓4+14
Комментарии2

StructureMap — краткий справочник для работы (1/3)

Время на прочтение10 мин
Количество просмотров12K
Сегодня я хочу рассказать о IoC контейнере StructureMap (и это не перевод устаревшей официальной документации), который мне приглянулся гораздо больше чем Unity. Хотя, честно сказать, мои взаимоотношения с Unity не сложились с самого начала, когда я увидел километровые файлы конфигурации к нему или же двухсот знаковые строки конфигурации в коде. Не будем о грустном.

StructureMap не только мне показался более удобным чем другие реализации DI\IoC, достаточно набрать в гугле StructureMap vs Unity и получить кучу ссылок, где люди обсуждают и показывают наглядно, что в работе самым удобным, гибким и естественным является StructureMap.

Ссылка раз, два и три. Ко всему прочему StructureMap еще и достаточно быстрый.
Вот еще очень интересные подборки материалов по сравнению фреймворков http://www.sturmnet.org/blog/2010/03/04/poll-results-ioc-containers-for-net

Я думаю можно опустить рассуждения о том, стоит ли такие контейнеры использовать в своем проекте или нет, и стоит ли писать свою реализацию. Я могу сказать, что в моей практике сначала случилось так, что были самописные реализации, которые заметно уступали по возможностям и удобству, но они решали свои конкретные задачи и этого на тот момент хватало.  С развитием проекта, как-то было недосуг переводить все на какую-то другую технологию. Потом был Unity, Unity, но в конце концов я пришел к тому, что надо попробовать StructureMap и не пожалел об этом ни разу.

В чем, на мой взгляд, плюсы StructureMap:
  • Настройка с помощью DSL
  • Очень гибкая настройка всего
  • Простота конечного использования
  • Возможности для проверки внутренних связей
  • Поддержка тестирования out-of-the-box

Еще много есть интересных и полезных вещей в StructureMap, но их было бы неправильно отнести к плюсам, лучше назвать их приятным дополнением, которые только облегчают жизнь.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии24

Вместе веселее. Как наладить эффективное сотрудничество творческих людей

Время на прочтение13 мин
Количество просмотров4.9K
Представляю вашему вниманию перевод статьи под названием "Better together; the practice of successful creative collaboration" от Stefan Klocek. Перевели специально для пользователей Хабрахабра с одобрением компании Cooper.


Рок-звезда и гениальный ученый обязательно являются одиночками. Именно так мы привыкли представлять себе работу творческого человека. Однако творческая работа также может процветать благодаря таким вещам, как различия, упорство, обмен идеями и сотрудничество.



Двое (или больше) творческих людей могут использовать эти добродетели, если будут хорошо играть в команде. Практика “парного дизайна”, используемая в Cooper, взрослела больше чем десять лет, и развивается вместе с ростом компании, формируя новые пары, в которых дизайнеры учатся друг у друга каждый день. Хотя не существует никакой магической формулы, но большинство самых успешных совместных работ такого плана на нашей памяти обладали на удивление схожими характеристиками.
Читать дальше →
Всего голосов 57: ↑53 и ↓4+49
Комментарии16

Правила технического задания

Время на прочтение3 мин
Количество просмотров96K
В большинстве крупных организаций внутрифирменные отношения «пользователь-отдел IT» неизбежны, особенно при создании рабочих приложений, необходимых пользователю на постоянной основе. Сложность этих отношений может быть обусловлена многими факторами, но чаще всего это непонимание, возникающее из-за того, что стороны говорят на разных «языках» с различной терминологией. Пользователь понимает, что он хочет, но не может это сформулировать, IT-специалист понимает пользователя, но опасается, что результат выйдет иным, чем видит это первый. Чаще всего проблема начинается с того, что именно пользователь не готов к диалогу: он требует «чтобы работало», «отчет одной кнопкой», «чтобы за минуту выводилось», «чтобы даты в Excel не вылезали» и прочее. При этом его совершенно не интересует, каким образом это делается и какие механизмы работают. На заявления о нагрузке на сервер, просьбы нарисовать схему желаемого результата, обсудить пути решения пользователь не реагирует, полагая, что настоящий профессионал со всем справится. Результаты такого непонимания вредят всему производственному процессу: затягиваются сроки решения задач, возникают ошибки и пробелы в системах, которые нужны пользователю, страдает перегруженный неверными действиями сервер, скорость работы снижается.

Одним из способов разрешения такого конфликта является написание задания на проект – технического задания, которое предполагает полное и точно изложение требований внутрифирменного заказчика и является своеобразной инструкцией для IT -специалиста.
Читать дальше →
Всего голосов 45: ↑37 и ↓8+29
Комментарии42

.NET Частичка правды о размещении объектов на Run-time

Время на прочтение5 мин
Количество просмотров6.5K
Как известно, в .NET память делится на две категории: стек (Stack) и управляемая куча (managed heap, далее просто куча). На стеке располагается ссылка(ObjectRef) на объект (ObjectInstance), который, в свою очередь, располагается в куче.

В данной статье речь пойдет о расположении объекта в куче.

Предполагается, что у читателя имеются знания о:
1. stack
2. managed heap
3. GC
4. Слабые ссылки (weak references)
Читать дальше →
Всего голосов 39: ↑32 и ↓7+25
Комментарии22

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

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

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

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

Использование Protocol Buffers на платформе .Net (Часть 2)

Время на прочтение10 мин
Количество просмотров18K
В первой части мы познакомились с Protocol Buffers и попробовали использовать их в .Net приложении. Сегодня мы продолжим дискутировать и ответим на оставшиеся вопросы. Как и прежде читатель должен немного владеть языком C# и системой контроля версий SVN для лучшего усвоения материала. Также не помешает иметь общее представление о WCF, т.к. будет снова (не)много кода, но уже в контексте этой технологии!

Снова присоединиться к дискуссии.
Всего голосов 31: ↑24 и ↓7+17
Комментарии5

Использование Protocol Buffers на платформе .Net (Часть 1)

Время на прочтение11 мин
Количество просмотров44K
Предлагаю вашему вниманию введение в использование Protocol Buffers на платформе .Net в формате дискуссии. Я расскажу и покажу что это такое и зачем оно нужно .Net разработчику. Топик требует от читателя начального владения языком C# и системой контроля версий SVN. Так как объем материала превышает среднестатистический объем топиков на хабре, которые не вгоняют хаброюзеров в тоску и не заставляют их скроллить до комментариев, было принято решение разбить его на две части. В первой части мы познакомимся с основами и даже напишем (не)много кода!

Присоединиться к дискуссии.
Всего голосов 45: ↑38 и ↓7+31
Комментарии33

Измеряем производительность с помощью DynamicObject

Время на прочтение7 мин
Количество просмотров958
С динамическими типами данных сложилась ситуация, схожая с АОП. А именно – полезных примеров применения этой техники можно пересчитать по пальцам, и они достойны коллекционирования (одна из коллекций по АОП собрана mezastel здесь). Сегодня, я надеюсь, мы добавим ещё пару таких примеров.

Посмотрим, посмотрим...
Всего голосов 28: ↑22 и ↓6+16
Комментарии31

Рекомендации по созданию сайтов с качественным содержанием

Время на прочтение2 мин
Количество просмотров5.9K
Амит Сингхал, почетный сотрудник Google

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

Основное правило и совет веб-мастерам заключается в том, что намного важнее создавать контент, который понравится пользователям, чем пытаться «подогнать» содержание сайта под текущие алгоритмы. В то же время определение качественного содержания — сложная задача для поисковой системы, и решение ее не всегда однозначно. Ведь поиск в Интернете не только наука, но еще и искусство.

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

А что же делать веб-мастерам?

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

Если вы хотите нам что-нибудь сообщить, ждем вас на форуме для веб-мастеров. По мере работы над обновлениями наших алгоритмов мы всегда учитываем ваше мнение.
Всего голосов 25: ↑16 и ↓9+7
Комментарии19

Введение в Continuous Integration

Время на прочтение5 мин
Количество просмотров177K
Недавно я попал на новый проект, с задачей создать небольшое приложение с нуля. Разговариваю с тестером:
— А как тебе новые версии поставлять?
— Можешь как все остальные на проекте, через SVN.
— То-есть ты сама билдить будешь?
— Да нет… Бинарники оттуда беру.


Оказывается, очень много программистов, даже имеющих в подписях слова вроде Senior или Superior никогда в жизни не стыкались с понятием CI, или слабо себе представляют что это такое. Не найдя отдельных публикаций на Хабре на эту тему, решил восполнить пробел, а заодно и по возможности заработать желанный инвайт.
Читать дальше →
Всего голосов 104: ↑91 и ↓13+78
Комментарии65

Многопоточный сервер на C# за 15 минут

Время на прочтение11 мин
Количество просмотров332K
C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже готовый класс HttpListener и управиться еще быстрее, но цель этой статьи — показать, как вообще можно сделать нечто подобное в C#.
Читать дальше →
Всего голосов 94: ↑77 и ↓17+60
Комментарии72

Новые бесплатные видео-курсы по ASP.NET Web Forms и ASP.NET MVC

Время на прочтение2 мин
Количество просмотров28K
На днях мы опубликовали отличные видео-курсы по технологиям ASP.NET на официальном сайте http://asp.net/.

Курсы были созданы компанией Pluralsight (отличная компания с обучающими курсами по .NET-технологиям), доступны полностью бесплатно и предлагают отличную возможность изучить (или освежить в памяти) технологии веб-разработки ASP.NET WebForms и ASP.NET MVC 3. Каждый курс создан отдельным тренером и предлагает законченную программу обучения (от базовых основ, работы с концепцией Code First в Entity Framework до вопросов безопасности, развертывания, тестирования).

Ниже некоторые детали по двум бесплатным видео-курсам, опубликованным на днях (и ссылки на каждое доступное видео):

Тренинг по ASP.NET MVC


На выходных мы опубликовали финальные видео-уроки в совершенно новом обучающем курсе по ASP.NET MVC 3, созданном тренером K Scott Allen. Вы можете изучить эти видео-материалы со страницы http://asp.net/mvc (раздел слева в секции Essential Videos):

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

БД Oracle для программиста

Время на прочтение9 мин
Количество просмотров95K
Нужно ли программисту прикладных приложений понимать как работает БД? Том Кайт, признанный специалист Oracle, автор знаменитой колонки asktom, в своей книге «Oracle для профессионалов. Архитектура и основные особенности.» настаивает, что это просто необходимо. Даже если в вашей команде есть грамотный администратор, знание того, как работает СУБД Oracle поможет вам лучше понимать друг друга и эффективней взаимодействовать, не говоря уже о случае, когда такого специалиста у вас нет. В данном топике я упомяну об основных вещах, понимание которых позволит грамотно работать с БД Oracle и использовать некоторые её особенности с большой отдачей для вашего приложения. Если же вы уже прочитали вышеупомянутую книгу Тома Кайта, то можете просто исползовать эту статью в качестве памятки. Одно замечание — книжку я читал давно, и тогда еще последней версией БД Oracle была 9i, курсы по администрированию я тоже проходил по девятке, так что, если в десятке и выше что-то поменялось и добавилось, то не обессудьте. Хотя я пишу о довольно фундаментальных вещах, которые вряд ли сильно поменяись.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии27

Маркировка кабелей

Время на прочтение6 мин
Количество просмотров118K
В этой статье:
  • подготовка таблицы коммутаций;
  • варианты маркировки (что наносить на кабели);
  • обзор методов нанесения маркировки;
  • пример работы с одним из методов, включая макрос и шаблон для распечатки.
Читать дальше →
Всего голосов 112: ↑109 и ↓3+106
Комментарии41

С корабля на бал

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

По статистике, мы нанимаем одного из 10-20 обратившихся кандидатов на должность веб-разработчика. При таком потоке необходимо быстро распознавать подходящие кандидатуры. Разного рода синтетические тесты при отборе сотрудников я не люблю – бессмысленая трата времени. Лучший способ проверить – сразу кинуть в бой.

— Привет, я крутой веб-разработчик, вот мое реюзме!
— Привет, спасибо, резюме не надо, давай аккаунт на github, бери тикет No.123 и вперед! Слишком крутой для тебя? Ну выбери сам, какой тебе больше нравится, из того что есть. Другой работы нет.

Минимум затрат личного времени, максимум объективности.

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

Мы делаем это так.
Читать дальше →
Всего голосов 113: ↑99 и ↓14+85
Комментарии213

Информация

В рейтинге
Не участвует
Откуда
Винница, Винницкая обл., Украина
Дата рождения
Зарегистрирован
Активность