Как стать автором
Обновить
33
0
Алексей Скурыдин @Anakonda

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

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

Авторизация в ASP.NET Core MVC

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

Logo designed by Pablo Iglesias.


В статье описаны паттерны и приемы авторизации в ASP.NET Core MVC. Подчеркну, что рассматривается только авторизация (проверка прав пользователя) а не аутентификация, поэтому в статье не будет использования ASP.NET Identity, протоколов аутентификации и т.п. Будет много примеров серверного кода, небольшой экскурс вглубь исходников Core MVC, и тестовый проект (ссылка в конце статьи). Приглашаю интересующихся под кат.


Содержание:



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

Генные сети, управляющие строением тела животных

Время на прочтение9 мин
Количество просмотров26K
image
Как при помощи генных сетей превратить яйцо сначала в личинку, а затем во взрослую муху? Муха, как и другие насекомые, состоит из сегментов. Сегменты объединяются в три группы — голова, грудь и брюшко. На сегменте может быть пара конечностей. В груди три сегмента, на каждом по паре ножек. Второй грудной сегмент имеет еще крылья, а третий — жужжальца (маленькие рулевые крылышки, практически незаметные без лупы). Брюшко состоит из восьми сегментов, конечностей на них нет. В голове исходно было шесть сегментов, но в ходе эволюции насекомых границы между ними совершенно стерлись. Их конечности — это усики, которыми муха нюхает и щупает, и три пары ротовых конечностей. У жука или таракана это были бы жвалы, максиллы и нижняя губа, а у мухи они все сливаются в хоботок.

Чтобы все органы были на своем месте, каждая клетка должна знать, в каком месте зародыша она находится. Поэтому на ранних стадиях развития зародыша, когда в нем еще нет никаких органов и все клетки выглядят одинаково, в нем появляется биохимическая «координатная сетка» с передне-задней, спинно-брюшной и лево-правой осями. Мутации генов, образующих координатную сетку, могут легко и быстро изменить облик животного — передвинуть органы на другое место, изменить их количество и так далее. Поэтому такие гены важны для эволюции животных и очень активно изучается. Генная сеть разметки зародыша у мухи дрозофилы — любимой игрушки генетиков — пожалуй, самая изученная среди генных сетей животных.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии110

Юнит-тестирование для чайников

Время на прочтение15 мин
Количество просмотров1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

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

We need to go deeper
Всего голосов 70: ↑63 и ↓7+56
Комментарии65

Документирование в разработке ПО

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

INTRO


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

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

Итак, для начала отвечу на главный вопрос: для чего всё это нужно.
Есть несколько причин.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии42

Система управления Ansible

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


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

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

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

Со всеми сложностями, о которых идет речь выше, мы хорошо знакомы на собственном опыте: у нас имеется 10 точек присутствия с NS-серверами, расположенные в разных точках планеты. На них необходимо регулярно вносить различные изменения: обновлять операционную систему, устанавливать и обновлять различное ПО, изменять конфигурцию и т.п. Мы решили все эти операции автоматизировать и внедрить систему удаленного управления конфигурациями. Изучив имеющиеся решения, мы остановили свой выбор на Ansible.

В этой статье мы бы хотели подробно рассказать о его возможностях этого инструмента управления конфигурациями и поделиться собственным опытом его использования.
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии49

Обзор сервисов отсылки мобильных push-уведомлений

Время на прочтение4 мин
Количество просмотров45K
Недавно заметил за собой, что получать уведомления из разных программ на email для меня стало неудобным. Уже давно устоялся термин “email overload” и компании вроде Google с этим стараются работать (вводят папки, фильтры, а теперь и вкладки в Gmail).

Мне понравилась концепция центра уведомлений, которая успешно показала себя на ОС Android, появилась в iOS6 и запланирована к выпуску в Windows Phone. Это одна лента уведомлений для всех сервисов, удобный просмотр, работа с уведомлениями, простая очистка списка. На своем опыте убедился, что это в разы удобнее, чем привычные email уведомления, которые превращают inbox в кашу.

Поскольку наша команда работает одновременно над несколькими проектами (где-то летят “билды”, где-то пушатся изменения и так далее), мне показалась интересной идея подключить свои проекты к такому варианту уведомлений о событиях, происходящих в системе. В идеале я хотел иметь возможность рассылать уведомления разным членам команды, а при необходимости и на всю команду целиком. Только мне хотелось получать их именно от ПО, с которым я работаю — начиная от инструментов Continuous Integration и автоматического тестирования, и заканчивая непосредственно логами ошибок, статистикой и критикалами из проектов.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии7

COOLRF: новейшая история. Часть первая

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


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

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

После каждого такого фейла я начинал искать в интернете варианты замены. Что-то простое, не дорогое и доступное к покупке. И каждый поиск обязательно оканчивался неудачей. Нельзя сказать, что именно те неудачи привели к старту COOLRF. Тогда я совершенно не помышлял о разработке электроники. Начаться проекту помогла череда случайностей.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Комментарии5

Управление мультимедиа центрами с помощью HTTP GET запросов

Время на прочтение4 мин
Количество просмотров11K
В этой статье хотелось бы рассказать о том, как можно управлять на данный момент наиболее популярными мультимедиа центрами — KODI (XBMC) и Dune HD, с помощью HTTP GET запросов.

Здесь будут описаны только самые наиболее востребованные запросы, которыми можно управлять удаленно (например: в пределах домашней WiFi сети или при соответствующих настройках роутера из сети INTERNET), не только с помощью заранее написанных скриптов, но и простым вводом их в адресную строку браузера. Все запросы описывать здесь я не буду, так как: во — первых, многие из них используются крайне редко, а во — вторых, для этого есть полная документация. Данные запросы можно использовать так же, для управления мультимедиа центрами, при построении систем «Умный Дом», чем я собственно говоря и воспользовался при разработке своей.

Вот собственно те самые запросы:

1. Запуск файла на воспроизведение.

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

  • 1.1 KODI (XBMC) — http://LOGIN:PASSWORD@ip-address:8080/jsonrpc?request={«jsonrpc»:«2.0»,«id»:«1»,«method»:«Player.Open»,«params»:{«item»:{«file»:"URL"}}}
  • 1.2 Dune HD — http://ip-address/cgi-bin/do?cmd=launch_media_url&media_url=URL

Здесь и далее по тексту:

LOGIN — логин установленный в настройках KODI (Веб-сервер -> Разрешить управление Kodi по HTTP).
PASSWORD — пароль установленный в настройках KODI (Веб-сервер -> Разрешить управление Kodi по HTTP).
URL — сетевой или интернет адрес воспроизводимого ресурса.
ip-address — IP адрес устройства в домашней или INTERNET сети.

Если настроить Dune HD так, что при нажатии кнопки POWER на пульте он уходит в режим Standby, то при запросе на воспроизведение файла он включится автоматически.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии7

Домашний робот: от идеи к продукту

Время на прочтение3 мин
Количество просмотров21K
С древних времен человек хотел разговаривать с окружающим миром. Говорящие вещи окружали его в сказках и легендах. Злая королева общается с говорящим зеркалом, Горлум жалуется на тяготы и невзгоды бытия Кольцу Всевластья, Тамерлан разговаривал с камнями и давал им имена.

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

В Cubic Robotics мы верим, что скорейший путь к “говорящему миру” лежит через создание универсальной голосовой операционной системы, которую с одной стороны можно было бы установить на любое устройство. С другой стороны такую систему могли бы развивать независимые разработчики по всему миру. Именно такой является разработанная и запатентованная нами голосовая операционная система V.O.I.S. (Voice Operation Intellectual System).

image

V.O.I.S. — универсальная голосовая операционная система, при помощи которой можно сделать говорящим почти любой предмет. Разговаривать значит, не просто принимать голосовые приказы, но действительно понимать человека, поддерживать и даже инициировать разговор. Это тот самый искусственный интеллект, находящийся внутри нашей разработки — роботе-ассистенте Cubic (о нем мы рассказывали подробно в прошлой статье).

Также на базе V.O.I.S. уже создаются и проектируются разговаривающие автомобили, интеллектуальные помощники для смартфонов и носимых гаджетов.

Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии70

Pocketsphinx. Распознавание речи и голосовое управление в Linux

Время на прочтение11 мин
Количество просмотров124K
— Всё в порядке, Лёня?
Динамики отрегулированы на максимум, я морщусь, отвечаю:
— Да. Тише звук.
— Звук — тише, — соглашается «Виндоус-Хоум», — тише, тише…
— Хватит, Вика
С.Лукьяненко, «Лабиринт отражений»

Введение


В 1997-ом году Лукьяненко пророчил для десктопа сочетание CLI и голосового управления. Однако сейчас голосовое управление — достаточно узкая ниша.
Голосовое управление — взаимодействие с устройством при помощи звуковых команд. Не путайте это понятие с распознаванием речи. Для голосового управления достаточно, чтобы устройство реагировало на единственную нужную команду (ведь ваша собака не может работать машинисткой?). Распознавание речи — гораздо более глобальная проблема: в этом случае устройство должно преобразовывать в текстовый формат все слова, произнесенные вами. Как легко догадаться, распознавание речи на данный момент реализовано поверхностно относительно человеческих возможностей.
Функционал, рассмотренный в статье, может быть применен, к примеру, для организации модного сейчас «умного дома» или просто управления компьютером. Честно говоря, для описания управления компьютером хватило бы пары абзацев, но я попытаюсь показать вам основы работы с CMU Sphinx.
Кстати, процентов 70 описанного здесь подойдет и пользователям Windows.
Научим Linux слушаться?
Всего голосов 72: ↑63 и ↓9+54
Комментарии37

Specification By Example – BDD для прагматиков

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

На Хабре довольно много упоминаний о BDD. К сожалению, статьи, которые я читал, так и не дали мне ответа на вопрос «а зачем мне все это нужно?» Ответ пришел с неожиданной стороны. Когда я всерьез занялся вопросом автоматизации приемочного тестирования, мне под руку попалась книга Gojko Adzic (не уверен в транскрипции, поэтому не стал переводить имя автора) Specification By Example.
Читая ее, я не уставал удивляться: каждая новая глава описывала шишки, которые я набивал на своем личном опыте, и предлагала решения аналогичные или лучшие, чем те, к которым я приходил сам методом проб и ошибок.

Эта статья – первая в цикле «BDD для прагматиков». В ней описаны ключевые элементы наиболее эффективного, на мой взгляд, процесса разработки коммерческого ПО в современных условиях. Два продолжения будут посвящены работе со SpecFlow и автоматизации приемочного тестирования.
Часть первая - живая документация
Всего голосов 34: ↑31 и ↓3+28
Комментарии32

Разработка через страдание

Время на прочтение6 мин
Количество просмотров55K
От переводчика:
Немало копий сломано в спорах о том, когда уместнее KISS, а когда DRY, когда лучше как можно быстрее и проще решить задачу любыми средствами, а когда стоит создавать красивые и универсальные абстракции. Натан Марц, автор популярного фреймворка Storm, используемого в Твиттере, предлагает свой вариант. Чтобы не создавать тонны бесполезного кода ради абстрактной универсальности и в то же время не позволять системе превращаться в кашу из костылей, он использует «разработку через страдание» (suffering oriented programming).



Однажды меня спросили: «Как ты решился пойти на такой страшный риск — писать Storm одновременно с запуском стартапа?» (Storm — фреймворк для распределённых вычислений в реальном времени). Да, пожалуй, со стороны создание такого крупного проекта для стартапа кажется крайне рискованным. Тем не менее, с моей точки зрения это вообще не было рискованным делом. Трудным, но не рискованным.

Я использую стиль разработки, который сильно уменьшает степень риска таких больших проектов, как Storm. Я называю этот стиль «разработкой через страдание». В двух словах: не занимайтесь реализацией технологий, от отсутствия которых вы не испытываете страданий. Этот совет применим как к большим, архитектурным решениям, так и к маленьким повседневным задачам. Разработка через страдание существенно уменьшает риск, гарантируя, что вы всегда работаете над чем-то важным, и что вы хорошо разобрались в предметной области, прежде чем вложить в решение много сил.

Я придумал такую мантру разработки: «Сначала сделай, чтобы было. Затем — чтобы было красиво. Затем — чтобы было быстро».
Читать дальше →
Всего голосов 101: ↑93 и ↓8+85
Комментарии64

Dropbox ввёл единый тарифный план: 1TB — $9.99/месяц, $99/год

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


Компания Dropbox обновила линейку тарифных планов. С сегодняшнего дня доступен только 1 тарифный план PRO: 1TB за $9.99/месяц или $99 в год.

А также были добавлены новые функции для PRO-юзеров: установка пароля на общую ссылку, установка срока действия общей ссылки, настройки доступа для общих папок и удалённое стирание файлов с потерянного устройства.
Читать дальше →
Всего голосов 50: ↑44 и ↓6+38
Комментарии64

Работа с ESP8266: Пишем прошивку для управления системой nooLite

Время на прочтение20 мин
Количество просмотров60K
В прошлых статьях мы рассмотрели работу с SoC Espressif ESP8266 на примере работы с базовой AT-прошивкой, сборкой компилятора и написания собственной прошивки с реализацией TCP-сервера (клиента). В этой статье мы рассмотрим пример написания прошивки для работы с модулем передатчика nooLite MT1132 и попробуем управлять освещением в реальной квартире. Всем кому это интересно, прошу под хабракат.
Подробности
Всего голосов 12: ↑12 и ↓0+12
Комментарии12

Перевод и озвучка фильма дома: Хокинг. Моя краткая история

Время на прочтение4 мин
Количество просмотров76K
Год назад я перевёл и озвучил фильм Роберта Зубрина Марс: подполье. На Хабре публикация была тепло встречена, а сам фильм за прошедшее время был просмотрен более 200000 раз и до сих пор собирает научные дискуссии в комментариях.

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


Welcome to my world
Всего голосов 114: ↑108 и ↓6+102
Комментарии26

Как работать с валютными счетами?

Время на прочтение4 мин
Количество просмотров117K
Скачущий курс рубля никого не оставил равнодушным. Бум валютных операций подвигнул нас пристально рассмотреть все особенности валютного законодательства.

С зарубежными партнерами расчет чаще всего происходит в иностранной валюте. Чтобы оплатить заказ или получить доход от покупателя в валюте необходимо иметь валютный счет.
Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии41

Центробанк опровергает «немедленный запрет криптовалют» в России

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

Похоже, СМИ опять поспешили раздуть скандал. После того, как в январе просочилась новость о «запрете криптовалют», страсти так и пылали.
Однако только граждане с проекта bitnovosti.com решили отправить в Центробанк прямой запрос с целью разъяснения ситуации.
И вот недавно был получен ответ.
Читать дальше →
Всего голосов 72: ↑64 и ↓8+56
Комментарии56

Как достучаться до службы поддержки Google

Время на прочтение1 мин
Количество просмотров65K
imageОтсутствие поддержки Google — давно известная проблема, вся поддержка осуществляется через форум, где, в лучшем случае, вы получите ответ недели через 3, а большинство вопросов и вовсе остаются без ответа.

Но если у вас есть Google Apps, то можно получить персонального индуса enterprise поддержку бесплатно.
Читать дальше →
Всего голосов 71: ↑62 и ↓9+53
Комментарии23

Обращение команды Google Code Search

Время на прочтение1 мин
Количество просмотров1.9K
Предисловие переводчика: собственно, как было сказано мной в этом топике, писать в Google Groups оказалось эффективнее. Команда все-таки ответила. Предоставляю свой наколеночный перевод, прошу тапками не бросать.

Привет, ребята.

Мы очень сожалеем о предстоящем закрытии проекта, но дело, к несчастью, уже сделано. Возможно, вы заметили, что мы были достаточно пассивными последнее время — это потому, что мы были заняты оправданием привлечения инвестиций в проект. Внутри компании люди тоже не рады, но решение принято на самом высоком уровне.
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии33

Информация

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