Как стать автором
Обновить
16
0
Сергей Родюшкин @SergeyRodyushkin

Разработчик и архитектор ASP.NET приложений

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

Неявное преобразование типов в JavaScript. Сколько будет !+[]+[]+![]?

Время на прочтение13 мин
Количество просмотров95K
Приведение типов — это процесс преобразования значений из одного типа в другой (например — строки в число, объекта — в логическое значение, и так далее). Любой тип в JavaScript, идёт ли речь о примитивном типе, или об объекте, может быть преобразован в другой тип. Напомним, что примитивными типами данных в JS являются Number, String, Boolean, Null, Undefined. К этому списку в ES6 добавился тип Symbol, который ведёт себя совсем не так, как другие типы. Явное приведение типов — процесс простой и понятный, но всё меняется, когда дело доходит до неявного приведения типов. Тут то, что происходит в JavaScript, некоторые считают странным или нелогичным, хотя, конечно, если заглянуть в стандарты, становится понятно, что все эти «странности» являются особенностями языка. Как бы там ни было, любому JS-разработчику периодически приходится сталкиваться с неявным приведением типов, к тому же, каверзные вопросы о приведении типов вполне могут встретиться на собеседовании.

image

Эта статья посвящена особенностям работы механизмов приведения типов в JavaScript. Начнём мы её со списка выражений, результаты вычисления которых могут выглядеть совершенно неожиданными. Вы можете испытать себя, попытавшись найти значения этих выражений, не подглядывая в конец статьи, где будет приведён их разбор.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии31

ASP.NET 5 Identity 3 и новый инструментарий аутентификации/авторизации

Время на прочтение9 мин
Количество просмотров21K
Жизнь в Лас-Вегасе не ограничивается азартными играми. Несмотря на славу игорной столицы, здесь проходят и мероприятия совсем из других сфер жизни. В частности, ежегодная конференция DEVIntersection, которую в этом году посетила команда наших разработчиков. И здесь мы хотим рассказать обо всём самом важном и интересном, что они узнали на конференции.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Недопонимание про async/await и многопоточность в C#

Время на прочтение4 мин
Количество просмотров80K
Привет, Хабр! Тема async/await в .NET Framework и C# 5.0 не нова и объезженна: все давно знают, что это, как оно работает, все знакомы с тем скромным фактом, что это очень текучая абстракция и поведение зависит от SynchronizationContext. Об этом очень много писали на хабре, ещё чаще этот вопрос размусоливался в блогах различных респектабельных персон .NET-сообщества.

Тем не менее, мне очень часто приходится сталкиваться с тем, что не только новички, но и матёрые тимлиды не совсем понимают, как правильно пользоваться этим инструментом в разработке.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии16

9 анти-паттернов, о которых должен знать каждый программист

Время на прочтение9 мин
Количество просмотров148K
В программировании самокритика – это умение распознать контрпродуктивные решения в дизайне, коде, процессах и поведении. Знание о вредных шаблонах решений полезно для программиста. В этой статье я опишу анти-паттерны, которые я встречал на своём личном опыте время от времени.

Некоторые из них напрямую или косвенно связаны с когнитивными искажениями человеческого сознания – в этих случаях я даю ссылки на соответствующие вики-статьи. Также интересен список известных когнитивных искажений.

1 Преждевременная оптимизация


В 97% случаев надо забыть об эффективности малых частей программы: преждевременная оптимизация – корень всех зол. Но в 3% случаев об оптимизации забывать не нужно.
Дональд Кнут

Хотя никогда зачастую лучше, чем прямо сейчас
Тим Питерс, Зен языка Python


Что это

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

Почему плохо

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

Как избежать

Сначала пишите чистый, читаемый, работающий код, используя известные и проверенные алгоритмы и инструменты. При необходимости используйте инструменты для профилирования для поиска узких мест. Полагайтесь на измерения, а не на догадки и предположения.
Читать дальше →
Всего голосов 117: ↑97 и ↓20+77
Комментарии123

Проектирование Web API в 7 шагов

Время на прочтение14 мин
Количество просмотров74K
7steps Разработка веб API это нечто большее чем просто URL, HTTP статус-коды, заголовки и содержимое запроса. Процесс проектирования – то, как будет выглядеть и восприниматься ваш API – очень важен и является хорошей инвестицией в успех вашего дела. Эта статья кратко описывает методологию для проектирования API с опорой на преимущества веба и протокола HTTP, в частности. Но не стоит думать, что это применимо только для HTTP. Если по какой-то причине вам необходимо реализовать работу ваших сервисов используя WebSockets, XMPP, MQTT и так далее – применяя большую часть всех рекомендаций вы получите практически тот же API, который будет хорошо работать. К тому же полученный API позволит легче разработать и поддерживать работу поверх нескольких протоколов.

Хороший дизайн затрагивает URL, статус-коды, заголовки и содержимое запроса


Обычно руководства по проектированию Web API фокусируются на общих концепциях: как проектировать URL, как правильно использовать HTTP статус-коды, методы, что передавать в заголовках и как спроектировать дизайн содержимого, которое представлено сериализованными данными или графом объектов. Это всё очень важные детали реализации, но не настолько в смысле общего проектирования API. Проектирование API – это то, как сама суть сервиса будет описана и представлена, то что вносит значительный вклад в успех и удобность использования Web API.

Хороший процесс проектирования или методология предоставляют набор согласованных и воспроизводимых шагов для создания компонентов сервисов, которые будут доступны в виде Web API. Это значит, что такая прозрачная методология может быть использована разработчиками, дизайнерами и архитекторами для координации своих действий по реализации ПО. Использованная методология так же может уточнятся со временем по мере того, как улучшается и автоматизируется процесс без ущерба для деталей методологии. На самом деле, детали реализации могут меняться (например, платформа, ОС, фреймворки и стиль UI) независимо от процесса проектировки, когда эти две активности полностью разделены и задокументированы.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии8

10 основных ошибок при разработке на Node.js

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


C момента появления Node.js его и критикуют, и превозносят. Споры о достоинствах и недостатках этого инструмента не утихают и, вероятно, не утихнут в ближайшее время. Однако часто мы упускаем из виду, что критика любого языка или платформы основывается на возникающих проблемах, зависящих от того, как мы эти платформы используем. Вне зависимости от того, насколько Node.js усложняет написание безопасного кода и облегчает его распараллеливание, платформа существует уже довольно давно, и на ней создано огромное количество надёжных и сложных веб-сервисов. Все они хорошо масштабируются и на практике доказали свою устойчивость.

Но, как и любая платформа, Node.js не застрахован от ошибок самих разработчиков. В одних случаях падает производительность, в других — система становится практически непригодной к использованию. И в этом посте я хотел бы рассмотреть 10 наиболее частых ошибок, которые делают разработчики с недостаточным опытом работы с Node.js.
Читать дальше →
Всего голосов 85: ↑74 и ↓11+63
Комментарии45

Релиз elementary OS «Freya»

Время на прочтение1 мин
Количество просмотров147K
Спустя два года с момента выхода elementary OS Luna, мы дождались релиза следующий версии, под названием Freya. Напомню, отличительной особенностью elementary OS является графическая оболочка собственной разработки — Pantheon. Дополнительно стоит отметить, что Freya основана на Ubuntu 14.04.
image
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Комментарии177

IBM PC своими руками — это очень просто

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

После того, как я воплотил свою давнишнюю мечту и все-таки (хотя и с опозданием почти на 30 лет) построил Радио 86РК, некоторое время мне казалось, что на этой части моей истории поставлена вполне достойная точка.

Тем не менее, обнаружилось, что болезнь до конца не вылечена, и она вернулась еще более острым рецидивом. Наверное, сказались как неожиданно успешный опыт постройки 86РК, так и то, что у меня в ходе данного процесса образовалось довольно большое количество весьма притягательно выглядящих инструментов, приборов и деталей, которым очень хотелось найти применение.
В конце концов ломка стала нестерпимой, и мне пришлось снова взяться за паяльник, а также вспомнить некоторые другие навыки из прошлого. Что из этого получилось, можно увидеть вместе с некоторым количеством картинок и очень (повторяю – ОЧЕНЬ) большим количеством букв (и даже не букв, а страниц) дальше…
Читать дальше →
Всего голосов 261: ↑260 и ↓1+259
Комментарии81

Оптимизация методов ToArray и ToList путём предоставления количества элементов

Время на прочтение4 мин
Количество просмотров29K
Методы расширения ToArray и ToList — удобный способ быстро преобразовать перечисляемую последовательность (например, Linq-запрос) в массив или в список. Однако, в них есть кое-что беспокоящее меня: оба эти метода очень неэффективны, если они не знают количество элементов в последовательности (что почти всегда происходит, когда вы используете их в Linq-запросе). Давайте сперва рассмотрим метод ToArray (ToList имеет несколько отличий, но принцип практически такой же).
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии27

Оптимизация ASP.NET — практические советы по работе с IIS

Время на прочтение12 мин
Количество просмотров96K
В данной публикации речь пойдёт о настройке важных параметров пула ASP.NET-приложений при вызове удалённых веб-сервисов и активной работе с сетью на стороне сервера через стандартные классы .NET.



Введение


Приходилось ли вам когда-нибудь самим настраивать производственные веб-сервера (production servers) под управлением ОС Windows Server 2008 R2/IIS 7.5 и выше? Для системных администраторов, имеющих большой опыт работы с IIS, скорее всего, это тривиальная задача, но вот для веб-разработчиков, которым по различным причинам порой приходится самим участвовать в настройке «боевых» серверов, данная информация может оказаться весьма полезной.

Итак, приступаем. Ускоряем сайт на ASP.NET — экономим деньги предприятия и нервы администратора.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии6

DevCon Digest #2. Погружаемся в ASP.NET

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


Приветствую! Мы продолжаем серию тематичных подборок материалов по темам конференции DevCon. Если в прошлый раз мы погружались в материалы, связанные в целом с .NET, то сегодня мы посмотрим глубже в сторону серверных технологий, а точнее – новый ASP.NET.
Читать дальше →
Всего голосов 22: ↑17 и ↓5+12
Комментарии3

300 потрясающих бесплатных сервисов

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


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Всего голосов 341: ↑325 и ↓16+309
Комментарии107

Что Mono 4.0.0 нам готовит

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


В последнее время многие обсуждают недавние открытие CoreCLR и CoreFX от Microsoft. Напомню, что ядро CLR и реализация базовых классов .NET у нас теперь открытые, кроссплатформенные и распространяются под MIT. Таким образом, вы можете собрать свою собственную версию рантайма, которая будет работать под Windows, Linux и Mac. И многих терзал вопрос: а что же теперь будет с Mono? Недавно появились черновики Mono 4.0.0 Release Notes, из которых мы можем узнать о будущих планах компании Xamarin. Итак, сегодня в номере:
  • Adoption of Microsoft’s open source code
  • Floating point optimizations
  • We dropped support for the 2.0, 3.5 and 4.0 assemblies
  • Updated IKVM
Обсудим грядущие изменения чуть подробней.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии49

<base> вреден.

Время на прочтение7 мин
Количество просмотров1.4K
Тэг <base>, с помощью которого браузеру задают базовый путь для разрешения относительных ссылок, вреден и не должен использоваться в хорошей верстке. Вместо него есть достаточно строгий и гибкий метод задания путей к ресурсам.
Вследствие распространившейся моды на ЧПУ веб-технологи стали чаще встречаться со следующей проблемой — файлы (например, CSS или изображения), на сервере расположенные буквально в соседней папке с шаблонами верстки, теперь не получается адресовать относительными путями. При автоматическом создании страниц на очень разветвленных сайтах нет практически никакой возможности автоматически изменять относительные пути к ресурсам в зависимости от адреса просматриваемой старницы, и обычные относительные пути перестают работать.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии23

Хроническая усталость, апатия, сезонная «депрессия» и многое другое: тривиальная причина

Время на прочтение8 мин
Количество просмотров684K
На хабре часто публикуют статьи о самоорганизации — нам всем хочется меньше прокрастинировать, и делать больше полезного. Но что если делать полезное мешает дичайшая усталость? Никакая организация задач усталость не уберет.

Казалось бы, работа у IT-шников несложная — вагоны не разгружаем, землю не роем и уставать физически не должны. Однако о дичайшей усталости людей занятых интеллектуальным трудом приходится слышать чаще, чем хотелось бы. После того как я приехал в Москву 3 года назад — я почему-то начал дичайше уставать на совершенно ровном месте, и ни я, ни врачи не могли найти причину. После 2-х лет поисков тривиальная и легко исправимая причина нашлась, и на мой взгляд — в группе риска находятся практически все люди, занимающиеся интеллектуальным трудом. Ситуация усугубляется двумя народными обычаями.

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

1) Летом все ок, а зимой — апатия, ничего не хочется делать. Это любят называть сезонной «депрессией».
2) Утром все ок, а к вечеру на работе — мозги «не варят», ничего не хочется делать — только хабр и reddit листать. Приходите домой — и с дичайшей усталостью падаете в кресло. Сил хватает только лазить в интернете до ночи. Этот пункт — касается и работодателей, есть шанс, что люди вечером перестают работать не из-за своей лени.
3) Даже если вы просыпаетесь без будильника — вы не высыпаетесь.
4) Кофе и прочие стимуляторы — не дают бодрости, лишь делают вас злее.
5) Даже если вы спите «сколько влезет» — сны короткие и не запоминающиеся, или их нет вообще.
6) Вы замечаете, что даже 1 вещь вам иногда трудно удержать в голове. Мы можете забыть что вы сейчас хотели сделать.
7) Вы просыпаетесь уже с дичайшей усталостью
8) Вам кажется, что в комнате темно и все несколько не резкое.
Читать дальше →
Всего голосов 336: ↑320 и ↓16+304
Комментарии374

Подборка полезных CSS рецептов, или чем мы занимаемся на голых пятницах

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


В нашем отделе веб-разработки есть хорошая традиция. Каждые 2 недели у нас проходят «голые пятницы» — это мини-конференции, на которых мы делимся интересными и полезными знаниями, накопенными в процессе работы. Сегодня таких знаний у нас накопилось довольно много, и мы решили начать постепенно делиться ими с общественностью в лице Хабрасообщества.

Итак, представляем вашему вниманию сборку интересных и (надеемся) малоизвестных HTML и CSS-рецептов. Будем рады, если каждый из вас узнает что-то новое!
Вперед!
Всего голосов 143: ↑122 и ↓21+101
Комментарии75

Кто бы смог мне подсказать, как require подключать

Время на прочтение7 мин
Количество просмотров69K
Одним солнечным весенним утром, мне пришла в голову замечательная идея — заняться изучением популярной библиотеки RequireJS. Я уже давно читал много хорошего и о простоте использования и о преимуществах, которые она оказывает при использовании в проектах. Поэтому и подумать не мог, что подключение RequireJS к модульному проекту на Backbone может вызвать столько проблем. Я потратил два дня на то, что должно занять не более часа. А если у разработчика нет этих двух дней? Вот и решил поделиться с другими своим опытом, чтобы сэкономить время и нервы.
Читать дальше →
Всего голосов 42: ↑32 и ↓10+22
Комментарии23

30 полезных сервисов для веб-разработчика

Время на прочтение2 мин
Количество просмотров163K
Решил собрать сервисы, которые могут быть полезны веб-разработчикам и дизайнерам. Буду рад, если кто-то найдет для себя полезный сервис. Осторожно, под катом куча картинок!
Читать дальше →
Всего голосов 180: ↑156 и ↓24+132
Комментарии48

Быстрое веб-приложение — трепанация сети

Время на прочтение10 мин
Количество просмотров33K
Психология — интересная и иногда полезная наука. Многочисленные исследования показывают, что задержка в отображении веб-страницы дольше 300 мс заставляет пользователя отвлечься от веб-ресурса и задуматься: «что за хрень?». Поэтому УСКОРИВ веб-проект до психологически невоспринимаемых значений, можно ПРОСТО удерживать пользователей дольше. И именно поэтому бизнес готов тратиться на скорость: $80М — чтобы уменьшить latenсy всего на 1 мс.



Однако, чтобы ускорить современный веб-проект, придется кровушки пустить и основательно покопаться в этой теме — поэтому базовое знание сетевых протоколов приветствуется. Зная принципы, можно без особых усилий ускорить свою веб-систему на сотни миллисекунд всего за несколько подходов. Ну что, готовы сэкономить сотни миллионов? Наливайте кофе.
Читать дальше →
Всего голосов 83: ↑66 и ↓17+49
Комментарии42
1

Информация

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