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

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

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

Область видимости в JavaScript и «поднятие» переменных и объявлений функций

Время на прочтение6 мин
Количество просмотров158K
Вы знаете, какое значение выведет этот код на JavaScript?
var foo = 1; 
function bar() { 
    if (!foo) { 
        var foo = 10; 
    } 
    alert(foo); 
} 
bar();

Читать дальше →
Всего голосов 135: ↑122 и ↓13+109
Комментарии71

Что делать, если вы застряли с Большой и Сложной Программистской Задачей?

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

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

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

Со временем я выработал способ, позволяющий вернуть мне продуктивность в такой ситуации и суметь закончить непростую задачу. Этим опытом я и хочу поделиться.
Читать дальше →
Всего голосов 158: ↑145 и ↓13+132
Комментарии38

Поработаем с MongoDb

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


В текущее время появляется всё больше high-load проектов оперирующие колоссальным объемом данных. И уже нельзя обойтись классической реляционной моделью хранения этой информации. Всё более популярными становятся NoSQL базы данных (NoSQL — обозначает Not only SQL). Одной из таких баз данных является MongoDB, которая уже заслужила внимание к себе таких компаний как Disney, craiglist, foursquare. К тому же тут неоднократно писали о ней:
NoSQL, используя MongoDB, NoRM и ASP.NET MVC
Шардинг MongoDB на пальцах
Репликация MongoDB на пальцах

Это еще одна статья о работе с MongoDb в среде .net.

Что потребуется:
1. Скачайте (http://www.mongodb.org/downloads), распакуйте и запустите mongod (это сервер)
2. Драйвер (https://github.com/mongodb/mongo-csharp-driver/downloads)
3. Поехали

Читать дальше →
Всего голосов 47: ↑37 и ↓10+27
Комментарии22

Keymaster.js: простая микро-библиотека для «горячих клавиш»

Время на прочтение1 мин
Количество просмотров7.1K
На guthub'е появилась библиотека keymaster.js, с помощью которой можно добавить клавиатурные сокращения (shortkuts) на любую страничку. Конечно, для тех же целей предназначен модуль jQuery Hotkeys, но у keymaster.js есть свои преимущества: эта библиотека не имеет никаких зависимостей, она очень легковесная (всего 60 строчек кода) и лишена известных багов jQuery Hotkeys. В общем, определённо полезная вещь.

В ближайшее время для keymaster.js добавят ещё селектор INPUT / SELECT / TEXTAREA, это тоже будет полезное дополнение.
Пример скрипта
Всего голосов 44: ↑39 и ↓5+34
Комментарии13

Неявно типизированные поля в C#

Время на прочтение4 мин
Количество просмотров11K
Сегодня на кывте был задан очередной весьма интересный вопрос о том, почему в языке C# существуют неявно типизированные локальные переменные (implicitely-typed local variables) a.k.a. var, но нет неявно типизированных полей?

На самом деле, такое положение дел вовсе не случайно; так что давайте рассмотрим несколько причин, почему компилятор ведет себя именно так, а не иначе.
Читать дальше →
Всего голосов 38: ↑29 и ↓9+20
Комментарии55

Яндекс.Пробки помогают настраивать городские светофоры

Время на прочтение1 мин
Количество просмотров21K
Любой автомобилист знает, что перед некоторыми светофорами постоянно образуются пробки. А Яндекс.Пробки знают точно, какие и во сколько.
В Зеленограде был проведён эксперимент – один из проблемных светофоров перенастроили с учетом данных Яндекс.Пробок.   

Это светофор на перекрёстке Панфиловского и Центрального проспектов (http://maps.yandex.ru/-/CBagu6oR).



На графике показаны средние скорости, с которыми машины обычно проезжали перекрёсток с каждой из четырёх сторон в течение дня:



Здесь видно, что основная проблема возникает на Центральном проспекте по вечерам: с 17:00 до 19:00 наблюдается огромный провал по скорости до 10 км/ч. А движение по Панфиловскому проспекту в обе стороны идёт практически без затруднений.

Чтобы устранить провал и не ухудшить ситуацию на других направлениях, меняли только вечерний график работы светофора — зеленый свет для автомобилей, движущихся по Центральному проспекту, стал гореть дольше. После этого в течение месяца мы наблюдали за движением на этом светофоре, и график средних скоростей получился уже таким:



Как видно, провал скорости на Центральном проспекте полностью устранён и остальные направления не пострадали.

Теперь на очереди и другие перекрёстки Зеленограда.

P.S. Отдельно хотим поблагодарить Константина Антоновича, который помог наладить сотрудничество с ГИБДД Зеленограда.

Команда Яндекс.Пробок,
За свободные дороги

.
Всего голосов 165: ↑162 и ↓3+159
Комментарии79

Гарантии безопасности исключений

Время на прочтение11 мин
Количество просмотров18K
Ошибки в обработке ошибок являются наиболее распространенным источником ошибок

Бредня, пришедшая в голову при написании этой статьи

Основные баталии по поводу того, что лучше использовать при программировании на C# – исключения или коды возврата для обработки, ушли в далекое прошлое (*), но до сих пор не утихают баталии другого рода: да, хорошо, мы остановились на обработке исключений, но как же нам их обрабатывать «правильно»?

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

Существует множество «за» и «против» такого способа перехвата и обработки исключений, но сегодня я хочу рассмотреть несколько другую тему. А именно тему обеспечения согласованного состояния приложения в свете возникновения исключения – три уровня безопасности исключений.
Читать дальше →
Всего голосов 50: ↑45 и ↓5+40
Комментарии41

О синглтонах и статических конструкторах

Время на прочтение8 мин
Количество просмотров29K
Изначально автор хотел назвать эту статью следующим образом: «О синглтонах, статических конструкторах и инициализаторах статических полей, о флаге beforeFieldInit и о его влиянии на deadlock-и статических конструкторов при старте сервисов релизных билдов в .Net Framework 3.5», однако в связи с тем, что многострочные названия по неведомой автору причине так и не прижились в современном компьютерном сообществе, он (автор) решил сократить это название, чудовищным образом исказив его исходный смысл.

-------------------------

Любая реализация паттерна Синглтон в общем случае преследует две цели: во-первых, реализация должна быть потокобезопасной, чтобы предотвратить создание более одного экземпляра в многопоточном мире .Net; а во-вторых, эта реализация должна быть «отложенной» (lazy), чтобы не создавать экземпляр (потенциально) дорого объекта раньше времени или в тех случаях, когда он вообще может не понадобиться. Но поскольку основное внимание при прочтении любой статьи про реализацию Синглтона отводится многопоточности, то на «ленивость» зачастую не хватает ни времени не желания.

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

OpenCL под C# это просто

Время на прочтение8 мин
Количество просмотров43K
Хотя технология OpenCL появилась ещё в 2008 году, большого распространения она не получила до сих пор. Плюсы технологии несомненны: ускорение вычислений, кроссплатформенность, способность исполнять код как под GPU, так и под CPU, поддержка стандарта целым рядом компаний: Apple, AMD, Intel, nVidia и некоторыми другими. Минусов не так много, но и они есть: более медленная работа на nVidia, чем через CUDA, сложность использования. Первый из минусов влияет только при серьёзной разработке, где скорость программы важнее кроссплатформенности. Второй и является основным препятствием на пути разработчиков, делающих выбор в пользу того или иного метода разработки. Чтобы разобраться в куче хэдэров, драйверов и стандартов требуется куча времени. Но не всё так плохо. Темой этой статьи будет короткий guide по тому, как наиболее простым способом можно запустить OpenCL под C# и получить удовольствие от параллельного программирования.

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

PostSharp. Решение задач логгирования и аудита

Время на прочтение12 мин
Количество просмотров6.3K
И снова здравствуйте! В прошлый раз при обсуждении АОП, мы с вами говорили о решении задач кэширования. Сегодня мы поговорим о не менее часто встречающейся задаче – задаче логгирования и аудита. Нам часто приходится сталкиваться с такими ситуациями, как, например, анализ чужого кода. Представьте себе, что вам дали задачу интеграции с библиотекой стороннего производителя. Основной инструментарий чуть ли не каждого разработчика — .net reflector, ILSpy, dotPeek дают отличное представление о коде программы. О ее алгоритмах, структуре, возможных местах ошибок. И покрывают большой процент вопросов к программному продукту. Однако так происходит до тех пор, пока вы не начинаете ее активно использовать. Тут могут возникнуть как проблемы с производительностью, так и с непонятными «багами» внутри стороннего продукта, которые, если не иметь дизассемблера с функцией отладчика, не так-то просто найти. Или, например, вам необходимо просто следить за значениями переменных, не останавливая продукт в точках останова, real-time. Такие места часто необходимо срочно и быстро исправлять. А как при исправлении этого кода не написать программу, которая потом будет в топе сайта govnokod.ru? О таких ситуациях мы сейчас и поговорим.
Читать дальше →
Всего голосов 23: ↑16 и ↓7+9
Комментарии9

Как повысить безопасность своего аккаунта. О двухэтапной аутентификации и не только

Время на прочтение3 мин
Количество просмотров9.5K
Джулс ван де Вен (Jules van de Ven), отдел по взаимодействию с клиентами, Google Accounts.

В современном Интернете мошеннические схемы подстерегают пользователей на каждом шагу. Мнимые выигрыши в лотерею, просьбы о помощи от друзей, которые якобы попали в беду — подобные уловки рассчитаны на то, что пользователь сообщит злоумышленникам свои личные данные. Таким образом мошенники незаконно получают доступ к вашей электронной почте. Если вы стали жертвой подобного обмана или используете один и тот же пароль на нескольких сайтах, один из которых взламывается хакерами, злоумышленники могут использовать его для доступа к вашей приватной информации.

Google стремится максимально повысить уровень защиты и безопасности вашего аккаунта. Для этого мы недавно разработали для вас новую возможность — двухэтапную аутентификацию. Теперь она доступна и на русском языке.

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

На вашей странице Настроек аккаунта скоро появится ссылка “Настройка двухэтапного подтверждения”.

Активируйте на своем аккаунте двухэтапную аутентификацию. Теперь после ввода пароля вы увидите дополнительную страницу, на которой нужно будет ввести специальный код. Его вам сообщит Google – по телефону или SMS. Если вы используете Blackberry, iPhone или устройства на базе ОС Android, то сможете сами сгенерировать этот код, используя специальное мобильное приложение. При правильно введенном пароле и коде мы будем практически полностью уверены в том, что в ваш аккаунт зашли действительно вы. При желании вы всегда можете выбрать «Запомнить верификацию на этом компьютере на 30 дней», тогда вам не придется вводить код каждый раз при входе в аккаунт.


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

Еще несколько советов по усилению безопасности при использовании продуктов Google:
Потратьте 10 минут для того, чтобы повысить уровень безопасности при работе в Сети. Теперь вы сможете не только испытать на себе все богатство возможностей Интернета, но и надежно защитить свои данные.
Всего голосов 32: ↑22 и ↓10+12
Комментарии24

Быстрое создание сайтов с .NET Forge CMS и Web Platform Installer, часть 1

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

Совсем недавно компания 1C-Bitrix объявила о выпуске новой системы управления контентом под названием .NET Forge CMS, которая представлена в двух редакциях, в том числе в виде бесплатной community-версии. Эта система обладает мощными средствами для создания современных быстрых, функциональных сайтов для коммерческой и иной деятельности в интернете.

Среди прочих преимуществ новой CMS можно отметить следующие: платформа ASP.NET, шаблоны интернет-магазина, корпоративного сайта, блога, сайта сообщества, визуальный редактор, интерфейс “Эрмитаж”, система управления рекламой на сайтах, рейтинги, голосования, галлереи, форумы, блоги, проактивная защита от угроз и попыток взлома, морфологический поиск и встроенная система обновлений.

Я рад сообщить, что .NET Forge CMS стала доступна для быстрой автоматической установки через средство Web Platform Installer, в ряду многих других систем управления контентом. А это значит, что установка и настройка собственного сайта стала значительно проще и теперь доступна любому пользователю.

Далее рассказывается о том как с помощью Web Platform Installer в самые короткие сроки развернуть и настроить полностью готовый собственный корпоративный сайт.

Читать дальше →
Всего голосов 52: ↑33 и ↓19+14
Комментарии13

Создание динамического прокси-объекта с помощью dynamic типа

Время на прочтение9 мин
Количество просмотров6.3K
Как и многие люди, перед которыми стоит задача написания очередного UI для своего приложения, я периодически сталкиваюсь с необходимостью создания для UI своей собственной модели, которая в какой-то мере повторяет модель предметной области, однако при этом расширяем и/или изменяет ее. И вот что из этого вышло.
Читать дальше →
Всего голосов 25: ↑18 и ↓7+11
Комментарии21

Написание своего Session Store Provider ASP.NET использующего Redis

Время на прочтение8 мин
Количество просмотров5.3K
Приветствую,

В этой статье я бы хотел поделиться опытом написания собственного Session Store Provider'a с использованием Redis в качестве хранилища.

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

Так же, для тех кто хочет попробовать результат в деле, я дам ссылку на исходники.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии28

Плагин для «живых» форм

Время на прочтение4 мин
Количество просмотров15K
Статья посвящена плагину, который упрощающает жизнь client-side программиста.

При заполнении формы случается так, что учитывая введенные данные, форму нужно менять (прятать и показывать поля). Простейший пример: при заказе доставки товара пользователь выбрал «самовывоз», значит поля про адрес доставки можно спрятать, зато было бы здорово показать карту проезда для самовывоза.

И что дальше

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

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

Второй подход это писать «портянки» javascript'а который всю эту логику реализует на стороне клиента. Особенно грустно писать «каскадную» логику типа «если ввели a в поле A, показать B, если ввели c в поле B, то показать D. Если в A ввели что-то другое, спрятать B, а потом D».

Оба варианта нельзя назвать удобными. Прежде всего потому что логика реализуется императивным стилем вместо уместного для таких случаев декларативного. Но выход есть!
Читать дальше →
Всего голосов 114: ↑112 и ↓2+110
Комментарии67

Portable Areas как вариант модульности в MVC

Время на прочтение3 мин
Количество просмотров3.6K
Один из первых вопросов, которым я задался после знакомства с азами технологии MVC3, это способ выделения и повторного использования функционала в нескольких веб-проектах.
В WPF или WinForms все просто и понятно — обособленный функционал изолируется в модуль, модуль компилируется в библиотеку, библиотека — подключается к проекту и повторно используется. Нужно лишь грамотно изолировать модули и всё будет хорошо.

В MVC, если «обособленный функционал» — это набор контроллеров и вьюшек, реализующих, допустим, гостевую книгу, их можно обособить в виде «области» — area. Однако просто так вынести эту область в отдельный модуль нельзя — MVC просто не найдет ваши контроллеры/вьюшки в соседних библиотеках.

Однако решение, конечно, есть, и его нам предлагает небезызвестная библиотека MvcContrib — open-source проект, неаффилированный Майкрософтом.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии36

Флаги 254 стран одним спрайтом

Время на прочтение1 мин
Количество просмотров16K
Однажды, nickivanov нарисовал миниатюры для кучи разных флагов и выложил их в свободный доступ. А недавно, artpolikarpov собрал их в один спрайт и написал к нему удобный css, который позволяет легко отобразить любой флаг просто указанием нужного класса.

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

И был бы этот топик топиком-ссылкой, да по необъяснимым причинам не разрешает Хабр в топиках-ссылках указывать авторов, заслуживающих похвал. Так что вот они ссылки:
Описание: artpolikarpov.ru/projects/flags
Архив с флагами: artpolikarpov.ru/projects/flags/flags.zip
Всего голосов 215: ↑200 и ↓15+185
Комментарии39
12 ...
9

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность