Search
Write a publication
Pull to refresh
0
@Igor_Brylinread⁠-⁠only

User

Send message

8 фактов, которые вы, возможно, не знали о C#

Reading time7 min
Views195K
Вот несколько необычных фактов о языке C#, о которых знают лишь немногие разработчики.

1. Индексаторы могут использовать params параметры


Мы все знаем, как обычно выглядят индексаторы x = something["a"], а так же код необходимый для его реализации:

public string this[string key]
 {
   get { return internalDictionary[key]; }
 }

Но знали ли вы, что для доступа к элементам вы можете использовать params параметры x = something["a", "b", "c", "d"]?
Просто напишите ваш индексатор следующим образом:
Читать дальше →

Некриптографические хеш-функции и DoS атака на них

Reading time10 min
Views35K
Некриптографические хеш-функции применяются там, где важна скорость и не так важна возможность атаки на характеристики функции. Последнее время активно обсуждается атака на алгоритмическую сложность хеш-таблиц путём создания множественных коллизий хеш-функции, которая может привести к DoS. Мы рассмотрим современные некриптографические хеш-функции, условия для их применения, возможные методы защиты от атаки на хеш-таблицы и почему оказалось, что это не так просто исправить.

Некриптографические хеш-функции


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

Критерии, которые важны для некриптографических хеш-функций:
Читать дальше →

Лёгкий сайт или как посадить браузер на диету

Reading time14 min
Views145K

А что если объединить профессионалов, работавших над крупными web проектами, чтобы создать исчерпывающее руководство по оптимизации front-end разработки?
И получить в результате не скучную инструкцию, а что то поинтереснее? А если позвать Briza Bueno (Americanas.com), Davidson Fellipe (Globo.com), Giovanni Keppelen (ex-Peixe Urbano), Jaydson Gomes (Terra), Marcel Duran (Twitter), Mike Taylor (Opera), Renato Mangini (Google), и Sérgio Lopes (Caelum) чтобы собрать лучшие практики?

Именно это мы и сделали! Мы научим вас создавать быстрые сайты.

Zeno Rocha, руководитель проекта.


Читать дальше →

Benchmark: AutoMapper vs BLToolkit vs EmitMapper

Reading time3 min
Views12K

О чем речь?


Речь в этой заметке пойдет о библиотеках для автоматического копирования полей одного объекта в поля другого (мэппинг объектов). О том, для чего это надо можно почитать, например, тут.

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

1) AutoMapper
2) BLToolkit
3) EmitMapper

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

Конкурс уязвимостей, или Ломай меня полностью!

Reading time9 min
Views40K
19 марта мы объявили о начале месяца поиска уязвимостей «Проверь Badoo на прочность». Сегодня нам хочется подвести первые итоги и поделиться с вами промежуточными результатами, рассказать, как мы готовились к проверке на прочность, рассмотреть самые интересные уязвимости и сделать «фейспалм».

И для начала немного статистики:
  • за первые две недели участники прислали нам почти 500 заявок с потенциальными уязвимостями;
  • около 50 заявок оказались дубликатами;
  • каждая десятая заявка содержала в себе реальную уязвимость (самые опасные были исправлены в течение нескольких часов);
  • Более 150 заявок составили ошибки, не связанные с безопасностью сайта, и около 10% из них относятся к платформам, не участвующим в конкурсе.
  • большинство уязвимостей пришлось на самый главный компонент системы ― профиль (как только участники конкурса не издевались над аккаунтами пользователей: удаляли и загружали фотографии, манипулировали комментариями, интересами, личными данными и адресами электронной почты).
  • Более половины присланных уязвимостей ― различные CSRF, в основном затрагивающие загруженный или написанный пользователями контент (удаление и загрузка фото и комментариев, работа с чёрным списком, избранным и т.д.).
Читать далее

Google выложила руководства для начинающих SEO-оптимизаторов

Reading time1 min
Views73K
В блоге для веб-мастеров инженеры Google подготовили и выложили два руководства разной степени сложности для тех, кто еще не знаком с базовыми методами оптимизации под поисковую машину Google.

Надо сразу сказать, что первое руководство действительно для новичков — профессионалы вряд ли обнаружат там нечто секретное и таинственное. Любопытно только то, что в Google не поленились и подготовили соответствующий одностраничный PDF-документ сразу в 13 языковых редакциях, включая и русский (английская версия). При этом документ (А4) выглядит визуально привлекательно и информативно, так что его можно распечатать и повесить в офисе, если вдруг возникнет необходимость в напоминании банальностей.

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

Несколько вопросов по .NET и C# (ответы с разбором)

Reading time4 min
Views133K
На минувших выходных я запустил пост «Несколько вопросов по .NET и C#»

Я думаю многим интересно не только найти правильные ответы, но и узнать какая часть пользователей знает эти правильные ответы. Именно с этой целью и создавался этот пост.

Я не настаиваю на истинности объяснений в последней инстанции, поэтому конструктивная критика, дополнения и уточнения приветствуются.



Обещанные ответы с разбором под катом.

Читать дальше →

Загадка выпадающего списка «Амазона»

Reading time2 min
Views192K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



Запаздывание необходимо не только для того, чтобы сберечь ресурсы машины пользователя, но и по соображениям юзабилити: если не добавить задержку, то переводить курсор мыши на выпавшее подменю будет неудобно, придётся вести его сначала горизонтально в меню, не задевая другие пункты, и лишь после выбирать нужный подпункт.
Читать дальше →

Как подключить сторонний браузер в приложении на C#

Reading time3 min
Views100K
image

В определенный момент мне стало некомфортно использовать стандартный контрол WebBrowser, предлагаемый Visual Studio.
Причин было несколько:
1. Использовался IE-движок, что само по себе уже сильный аргумент.
2. Кривая работа с JS.
3. Отсутствие масштабирования.
4. Если запустить на машине, где стоит IE6, то все его «достоинства» переносятся на приложение.

В итоге был начат поиск альтернативных решений.
Было рассмотрено 2 SDK. xulrunner(Mozilla) и Awesomium(Chrome)

Подключение обоих происходит примерно одинаково, но на всякий случай опишу оба.
Читать дальше →

Разработка приложений для Android с C#

Reading time4 min
Views285K
Monodroid и Monotouch это фреймворки от xamarin, которые дают возможность разрабатывать приложение на языке C# для Android и iOS соответственно. Так как это относительно новая технология информации в интернете не слишком много (за исключением офф сайта и большого количества тем на stackoverflow.com), на русском языке же я не нашел никаких туториалов и информации вообще.

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

image
Читать дальше →

dot42 — компилятор C# для Dalvik Runtime

Reading time3 min
Views30K
Главным недостатком Mono для Android является то, что для работы приложений требуется отдельная среда выполнения, отличная от Dalvik. И хотя полный доступ к CLR выглядит весьма привлекательно, проксирование и маршаллинг вызовов от одной среды выполнения к другой могут сильно повлиять на производительность. Так почему бы не убрать промежуточную компиляцию в IL-код и получать сразу рабочий Dex-код? Этим и занимается проект dot42.



В январе, после 1 года разработки, авторы проекта dot42 наконец-то перешли от обещаний к пряникам. И, хотя проект еще не дотягивает до состояния боевого продукта-конкурента Mono, стоит, как минимум, его рассмотреть и попробовать.
Так что это?

Облачный хостинг, каким он должен быть

Reading time5 min
Views34K
Весной прошлого года мы, команда performix.ru, раздумывали над тем, как лучше распорядиться свободными ресурсами компании. Наш большой интерес, среди прочего, вызывала сфера услуг облачного хостинга. Рисерч рынка лишь подогрел этот интерес: ни одно из протестированных решений не сорвало джекпот наших предпочтений по факторам стоимости, удобства, надежности и функциональности. Мы пожали плечами, и, прикинув финансовую сторону вопроса, принялись делать свое решение.


Читать дальше →

Диалоговое окно подключения к базе данных

Reading time2 min
Views28K

Введение


Довольно часто у программиста, работающим с реляционной базой данных, возникает проблема как сделать настройку подключения удобной для конечного пользователя. Кто-то хранит строку подключения непосредственно в NameApp.exe.config, это конечно неудобно, так как для того, чтобы изменить подключение, придется руками править файл. Большинство разработчиков пишут собственные классы и создают формы для редактирования строки подключения непосредственно в приложении. Это неплохой путь, если ты уже потратил на это свое время, но если ты начинаешь с нуля, то навряд ли захочется тратить несколько часов на создание диалогового окна подключения.
Читать дальше →

Поиск часто встречающихся элементов в массиве

Reading time5 min
Views121K
Задача: в массиве длиной N найти элемент, который повторяется больше N/2 раз.

Казалось бы, чего тут думать? Возьмём Dictionary<значение элемента, число появлений>, за один проход по массиву сосчитаем появления каждого элемента, потом выберем из словаря искомый элемент. Решение за O(N), куда может быть ещё быстрее?

Есть один нюанс: для словаря нам потребуется O(N) дополнительной памяти — в несколько раз больше размера исходного массива, и это при реализации словаря хоть хэш-таблицей, хоть деревом. Что будем делать, если наша цель — обработка сигнала неким устройством с маленькой памятью? Массив — замеры уровня сигнала, из которых один — «настоящий» передаваемый уровень, а остальные — шум и помехи. Неужели придётся для определения «настоящего» уровня возиться с хэш-таблицами и деревьями?

К счастью, нет: достаточно O(1) дополнительной памяти, и по-прежнему одного прохода по массиву.
Читать дальше →

Notification Hubs — облачный сервис уведомлений миллионам пользователей iOS и Windows

Reading time3 min
Views7.9K
Ранее в январе Скотт Гатри анонсировал новый функционал подсистемы обмена сообщениями Windows Azure Service Bus под названием Notification Hubs. Узлы уведомлений (Notification Hubs) – это новый функционал предлагающий экстремально масштабируемую, кроссплатформенную инфраструктуру пуш-уведомлений для миллионов пользователей и устройств.

Отличительные особенности нового сервиса Notification Hubs:

  • кроссплатформенная поддержка пуш-уведомлений. Сервис узлов уведомлений предлагает API для отправки уведомлений различным устройствам и платформам. Вы можете отправлять сообщения специфичные для каждой платформы и в независимом формате. Сегодня поддерживаются платформы Windows 8 и Apple iOS. Поддержка Android и Windows Phone ожидается вскоре;
  • эффективная маршрутизация публикаций/подписок и мултикаст основанный на тегах. Сервис узлов уведомлений оптимизирован специально для отправки с низкими задержками уведомлений тысячам и миллионам устройств. Ваш серверный бэкенд может отправить одно сообщение в узел уведомлений и миллионы пуш-уведомлений будут автоматически отправлены пользователям. Устройства и приложения могут быть определить теги для каждого пользователя при регистрации в узле, которые могут использоваться для фильтрации пользователей при отправке сообщений. Эти теги могут быть любыми строками, что значительно облегчает задачу отправки сообщений определенным группам пользователей;
  • экстремальное масштабирование. Узлы уведомлений и Windows Azure позволяют вам работать с миллионами устройств и пользователей без необходимости в построении или переделке собственной инфраструктуры. Механизм маршрутизации публикаций/подписок позволяет эффективно и просто маршрутизировать и доставлять уведомления миллионам пользователей без вложений в собственную инфраструктуру;
  • использование из приложения с любым бэкендом. Узлы уведомлений могут быть интегрированы и использованы из любого приложения с серверным бэкендом. Узлы эффективно работают в связке с Windows Azure Mobile Services. Они также могут быть использованы серверными приложениями размещенными в виртуальным машинах (IaaS) Windows или Linux. Решения на базе Cloud Services и Windows Azure Web Sites так же могут использовать узлы уведомлений.

Новый функционал интегрирован в панель администрирования Windows Azure. Создание узла уведомлений осуществляется в несколько кликов мышью и требует меньше минуты.
Читать дальше →

SignalR в помощь, или как оживить web

Reading time7 min
Views107K

Введение


Во многих web проектах присутствуют элементы, значение которых необходимо часто менять. Это могут быть счётчики, индикаторы, уведомления и подобные элементы. Показывать ли актуальные значения после обновления страницы или же можно реализовать автообновление всех этих данных? Для нас ответ очевиден: если есть возможность динамически менять элементы, то для обновления страниц не остается места.
Читать дальше →

Видео. Введение в MonoTouch/Mono под Android

Reading time1 min
Views14K
Видео выступления AndreyBaskov с ADD-2012.



MonoTouch и MonoDroid это фреймворки, которые позволяют писать приложения для iPhone и Android на C#. После появления Windows Phone 7 на C# можно писать сразу под три платформы. При этом интерфейс остается нативным и не страдает скорость работы.

Из видео вы узнаете:
— про эти фреймворки в целом;
— что MonoTouch компилирует проекты в нативный код;
— а в Mono for Android CLR работает параллельно с Java VM.

Технология вполне жизнеспособная, мы за год создали на ней больше 6 проектов, два из них побывали в топе AppStore, суммарно более 200 тысяч установок. Если вы пишете на C# и живете в Санкт-Петербурге можете убедиться в этом лично :)

В поисках идеальной системы комментирования

Reading time5 min
Views71K
Каждый день в рунете создается порядка 3 тысяч новых сайтов. Владельцы стремятся как можно быстрее раскрутить свой сайт и пробиться в топы. Для этого существуют разные способы и один из них — комментарии. Комментарии позволяют создавать сообщества, постоянную аудиторию, которая со временем начинает привлекать новых клиентов. На сегодняшний день существует множество систем комментирования, но как выбрать самую подходящую для вашего сайта?

Я выбрал несколько самых популярных систем комментирования, сравнил по множеству параметров и сделал обзор каждой.
Читать дальше →

Предельная производительность: C#

Reading time56 min
Views266K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity