• Эволюция самого популярного инструмента любого разработчика

    В любой среде разработки есть инструмент с названием «Output». Нет нужды описывать что он делает, поскольку абсолютно все разработчики его используют в своей работе ежедневно. Он прост и консервативен.

    По сути не менялся десятилетиями и до этих пор выглядит как то так:


    Текст, текст и еще раз текст. Много текста...

    Даже в этом крошечном примере не сразу видно где строка с ошибкой. Для того чтобы это понять, нужно приложить усилия и потратить время. Просто потому что нужно читать текст и искать в нем слова “error”, “exception” или “warning”. Программисту искать, а заказчику платить за потраченное на это время.
    Читать дальше →
  • Вся история Linux. Часть I: с чего все началось

      В этом году ядру Linux исполняется 27 лет. ОС на его базе используют многие корпорации, государственные, исследовательские учреждения и дата-центры по всему миру.

      За более чем четверть века вышло немало статей (в том числе и на Хабре), рассказывающих о разных отрезках истории Linux. В этой серии материалов мы решили выделить наиболее значимые и интересные факты, связанные с этой операционной системой.

      Начнем с разработок, которые предшествовали Linux, и истории появления первой версии ядра.

      Читать дальше →
    • Имплементация OpenId Connect в ASP.NET Core при помощи IdentityServer4 и oidc-client


      Недавно мне потребовалось разобраться, как делается аутентификация на OpenId Connect на ASP.NET Core. Начал с примеров, быстро стало понятно, что чтения спецификации не избежать, затем пришлось уже перейти к чтению исходников и статей разработчиков. В результате возникло желание собрать в одном месте всё, что необходимо для того, чтобы понять, как сделать рабочую реализацию OpenId Connect Implicit Flow на платформе ASP.NET Core, при этом понимая, что Вы делаете.

      Читать дальше →
    • Создание Web API приложения с использованием .NET Core + MongoDB .NET Driver

      • Tutorial
      Как вы уже знаете, MongoDB — это одно из наиболее развитых, open-source NoSQL решений, которое представляет собой документо-ориентированную базу данных, является кросс-платформенным, а также обеспечивает высокую производительность, доступность и простоту масштабирования.

      В современных open-source веб-приложениях использование NoSQL решений получило свою популярность в связи с их нереляционным поведением. В данной статье шаг за шагом мы реализуем простое ASP.NET Core Web API приложение «записной книжки», которое будет поддерживать операции CRUD применимо к коллекции в MongoDB.
      Читать дальше →
    • Стандарты и шаблоны для ТЗ на разработку ПО

        Введение


        Недавно ко мне обратились, чтобы я посоветовал стандарты для написания технического задания (ТЗ) на разработку автоматизированных систем (АС) и программного обеспечения (ПО). Вот думаю, сейчас зайду в Яндекс, найду подходящую статейку и отправлю её. Но не тут-то было! Одной статьи, где перечисляются стандарты для ТЗ, включая шаблоны и примеры готовых документов, я не нашел. Придется сделать такую статейку самому…

        И так, основные стандарты, методологии и своды знаний, где упоминается ТЗ или SRS (Software (or System) Requirements Specification):

        • ГОСТ 34
        • ГОСТ 19
        • IEEE STD 830-1998
        • ISO/IEC/ IEEE 29148-2011
        • RUP
        • SWEBOK, BABOK и пр.
        Читать дальше →
      • Удобный REST для Xamarin-приложений

          Разработчикам на Xamarin доступен богатый выбор компонентов для работы с сетью, и в сегодняшней нашей статье мы рассмотрим набор модулей, которые также могут быть использованы в PCL-проектах на Xamarin.Forms.

          Все статьи из колонки можно найти и прочитать по ссылке #xamarincolumn, или в конце материала под катом.


          Читать дальше →
          • +29
          • 15,5k
          • 7
        • Методика поиска причин низкой производительности сервера 1с

            Недавно столкнулся с необычным случаем, у заказчика отвратительно работал сервер 1с, чтобы было понятно о чем идет речь, приведу такой пример — запуск толстого клиента мог занимать десяток минут. Когда измерили тестом Гилева, то результат был ниже худшего. Посмотрев ближайшие результаты замеров других пользователей, я понял, что это не единственный случай.
            Речь не идет об оптимизации, когда надо поднять на 10-20% производительность, речь идет о поиске причин низкой производительности, и её устранению. Согласитесь это несколько разные вещи. На просторах интернета множество статей как раз о повышении производительности, которые ограничиваются только настройкой сервера 1с и (или) настройкой сервера баз данных. А вот статей, рассматривающих случаи низкой производительности, особенно если причин несколько, и эти причины находятся на разных уровнях, я не встречал.
            Обычно администраторы бросаются смотреть результаты мониторинга. Тот случай, с которым я столкнулся, показывал практически нулевую загрузку процессора, наличие свободной ОЗУ, отсутствие очереди у сетевого интерфейса, и только очередь к диску показывала, что не все в порядке. Пришлось устроить проверку по полной программе, это, конечно, занимает много времени, требует исключения сервера из рабочего процесса, но зато дает результат. Возможно для кого-то подобный подход недопустим, более того, некоторые считают это непрофессиональным подходом, но им я ничем помочь не смогу.
            Читать дальше →
          • Правила работы с Tasks API. Часть 1

              С момента появления тасков в .NET прошло почти 6 лет. Однако я до сих пор вижу некоторую путаницу при использовании Task.Run() и Task.Factory.StartNew() в коде проектов. Если это можно списать на их схожесть, то некоторые проблемы могут возникнуть из-за dynamic в C#.

              В этом посте я попытаюсь показать проблему, решение и истоки.

              Проблема


              Пусть у нас есть код, который выглядит так:

              static async Task<dynamic> Compute(Task<dynamic> inner)
              {
                  return await Task.Factory.StartNew(async () => await inner);
              }
              

              Вопрос знатокам: есть ли в данном примере проблема? Если да, то какая? Код компилируется, возвращаемый тип Task на месте, модификатор async при использовании await — тоже.

              Думаете, речь идет о пропущенном ConfigureAwait? Хаха!
              Если интересно, тогда прошу под кат
            • Осмысленное использование консольных приложений в C#

              Когда что-то уже написано, оттестировано и достойно справляется со своей работой, то лучше использовать это средство, нежели изобретать велосипед. Например, есть консольная утилита cpctest.exe, которая позволяет выполнять все те-же действия что и графическая оболочка, и масса других утилит из стандартного набора Windows. На разработку, отладку и покрытие тестами аналогичной функциональности уйдет драгоценное время. Так зачем его прожигать? Приступим.
              Читать дальше →
            • Лучшие бесплатные коллекции векторных иконок

                Привет, Хабр! Сегодня я хочу представить вам огромную коллекцию из 51 набора бесплатных векторных иконок. Да, есть потрясающие ресурсы Flaticon или Iconfinder, но бывают случаи, когда необходима именно группа иконок в едином стилистическом оформлении. Определиться с выбором, вам поможет эта подборка. Я старался собрать не как можно больше, а действительно самое лучшее.

                Среди веб-разработчиков существует много споров о том, что лучше: иконочный шрифт или SVG спрайты? Четкого ответа на этот вопрос нет. Каждый выбирает свое. Данные наборы иконок вас неограничиывают в выборе, поскольку представлены в различных форматах: @font-face, SVG, EPS, AI, PSD, Sketch.

                В целом данная подборка содержит более 10 000 иконок, охватывающих множество категорий: интерфейсы, технологии, наука, спорт, маркетинг, среда, транспорт и тд. Полые, заполненные, цветные, во Flat, Material, Elegant, Cartoon, Hand drawing стилях.

                Responsive Icons (100 иконок, PSD, AI, EPS, SVG)


                Responsive Icons

                Читать дальше →
              • Подробная инструкция по OpenVPN v2.3.8 на Windows server 2008R2

                Представляю подробную инструкцию по OpenVPN v2.3.8 на Windows server 2008R2 c уровнем шифрования TLS. Так же будут подробно описаны все параметры.

                Настройка сервера


                Для начала качаем дистрибутив с официально сайта. Запускаем установщик openvpn-install-2.3.8-I001-x86_64. В компонентах включаем следующее:

                image
                Читать дальше →
              • Разработка web API

                • Перевод

                Интро


                Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

                В тексте попадаются комментарии переводчика, они выделены курсивом.

                Собираем API-интерфейсы, которые понравятся другим разработчикам


                Понятные URL для вызовов API

                Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

                Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
                /dogs для работы со списком собак
                /dogs/12345 для работы с отдельной собакой
                Дальше
              • TOP (10) бесплатных плагинов для SSMS



                  До того, как начать работать с SQL Server я толком то и баз данных в лицо не видел… Помню, что мне установили SQL Server Management Studio 2005 и дали задание активно «крутить педали». По прошествии пары недель, как бы так сказать, моя производительность по написанию запросов была явно в районе плинтуса…

                  Более опытный коллега с недоумением на меня посмотрел и посоветовал поставить пару плагинов для SSMS… после этого работать стало явно веселее.

                  В данном посте я хочу поделиться моим топ списком бесплатных плагинов для SSMS, которыми чаще всего пользовался.
                  Подробнее
                • Скриптование под .NET на JScript

                  Хочу показать простой пример, как просто с помощью стандартных средств подгружать яваскриптовские скрипты и работать с ними. Для простоты эксперимента пусть в скриптах будут опеределяться две функции:
                  Name() — возвращает имя скрипта, которое могло бы в реальной игре быть именем бота.
                  Do(x, y) — некая функция, которая принимает два числовых аргумента, что-то делает и возвращает результат. В реальной игре она могла бы отвечать за поведение бота.
                  Читать дальше →
                • TemplateEngine.Docx — OpenSource .NET шаблонизатор docx документов



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

                    Хочу поделиться нашим opensource-решением для генерации docx документов, которое позволяет заполнять документы по шаблону, оформление которого можно менять в Word без переписывания кода.

                    Для начала — немного вводных.

                    Что нам было нужно от шаблонизатора


                    • Шаблон создается в Word и сразу видно, на что будет похож результирующий документ, шаблон без лишнего мусора.
                    • Результирующий документ после скачивания содержит все необходимые данные, не подтягивая их с внешних источников.
                    • Возможность заполнять списки, таблицы, и иногда еще и таблицы с вложенными в них списками.
                    • Шаблон можно доверить секретарю клиента, чтобы он мог сменить логотип, реквизиты компании, или как-либо еще подкорректировать оформление. И все это уже после сдачи проекта, не модифицируя наш код.
                    Читать дальше →
                  • 15 тривиальных фактов о правильной работе с протоколом HTTP

                      Внимание! Реклама! Пост оплачен Капитаном Очевидность!

                      Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



                      Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

                      Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
                      Читать дальше →
                    • Автоматизация настройки резервного копирования MS SQL с помощью .NET приложения

                      Я долго созревал, чтобы написать данную статью и выложить свое приложение. Надеюсь вам будет интересно.

                      О чем данная статья


                      В ней описан тот способ, как с помощью разработанного мною .NET приложения можно распространять план резервного копирования и проводить все необходимые настройки над БД средствами СУБД с уведомлением администратора о выполнении задач.

                      По максимум постараюсь описать те нюансы, с которыми мне пришлось столкнуться в ходе разработки приложения и настройки БД.
                      Для описанных ниже задач можно использовать мастер планов обслуживания, но мне больше понравился такой подход. Основное преимущество описанного мною метода, что данный способ можно применять ко всем версиям MS SQL (кроме Express, там немного другой подход). План обслуживания можно переносить, но у вас должна быть соответствующая в версия MS SQL и все равно будет создан Job для запуска плана обслуживания.

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

                      Кому подойдет данная статья:
                      • Тем, у кого MS SQL Express и нет возможности запускать с помощью Job задачи
                      • Тем, кто в ближайшем будущем планирует перейти с MS SQL 2008 на более новую версию и не хочет настраивать зеркалирование БД, а сразу на новой версии настроить AlwaysOn
                      • Тем, у кого нет средств для поднятия еще резервных серверов и приходится обходиться тем, что есть.
                      • У кого нет сжатых сроков на время восстановления БД. Главное – это результат
                      • Кому лень что-то делать
                      • Просто любопытным людям.


                      Оглавление:

                      Теория о резервном копирование
                      1. Журнал транзакций
                      2. Разностная копия БД
                      3. Системные базы данных
                      4. План бекапирования
                      5. Общие рекомендации по резервному копированию

                      Используем приложение
                      1. Настройка уведомления администратора
                      2. Дополнительные уведомления для администратора
                      3. Решение проблем при настройке DatabaseMail
                      4. Настраиваем резервное копирование с помощью приложения для SQL Standart
                      5. Настраиваем резервное копирование с помощью приложения для SQL Express
                      6. Удаление задач из БД
                      7. Удаление копий БД

                      Как восстанавливать резервные копии

                      Если вас заинтересовало, добро пожаловать под кат.
                    • Интенс, индикатор прокрутки (или жизнь после скроллбара)

                        Месяц назад кто-то нашёл у меня на гитхабе незаконченный проект и выложил ссылку на него на Designer News. Внезапно я увидел, что на сайте проекта постоянно сидит по 50 человек, и мне даже пришлось срочно сбежать с работы чтоб экстренно выпилить хотя бы самые адовые баги. Этим проектом был интенс, UX-компонент заменяющий полосу прокрутки (скроллбар) на специальный индикатор, который подсвечивает прокручиваемую область текстурой. Выглядит это примерно так:


                        на сайте проекта можно поскроллить самостоятельно

                        Сообщества UX-экспертов и программистов отреагировали очень возбуждённо:
                        Не могу понять, почему мне это не нравится… — GrumpyUX Man @ layervault
                        Святые какашки, эта штука бесит — Thecoss @ reddit
                        Да я себе скорее установлю ПЕРДЯЩИЙ СКРОЛЛ http://theonion.github.io/fartscroll.js/ в качестве дефолтного, чем КОГДА-ЛИБО заменю мою полосу прокрутки на это. — Kyle Donmoyer @ layervault
                        Спасибо, не надо. Никогда не мог понять это желание поменять стандартные элементы интерфейса. Полоса прокрутки — это одна из тех вещей, которая просто работает. Она не мешается и легко даёт понять, насколько много контента. — madk @ reddit
                        Шта? — magenta_placenta @ reddit

                        Я не очень понял, что за проблему оно решает
                        — jineshshah36 @ reddit
                        (кто-то даже создал сабреддит Real Bad UX чтоб разместить там ссылку на этот проект)

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

                        Здесь я хочу рассказать, какие области применения у интенса, и попробую объяснить, как я себе представляю «жизнь после скроллбара». А также предлагаю читателям покритиковать этот проект, обсудить скроллинг вообще, UX вцелом, и целесообразность замены традиционных элементов в частности.
                        Читать дальше →
                      • Топ10 ошибок, совершаемых при разработке на AngularJS

                        • Перевод
                        На настоящий момент AngularJS — один из самых популярных javascript фреймворков. Его использование упрощает процесс разработки, делая AngularJS великолепным инструментом для создания небольших веб-приложений, но возможности фреймворка не ограничиваются этим и позволяют разрабатывать большие, наполненные разнообразным функционалом приложения. Комбинация легкости в разработке и большое количество возможностей привели к широкому распространению, а вместе с распространением появились типичные, часто встречающиеся ошибки. В этом топике описаны наиболее распространенные ошибки, встречающиеся при разработке на AngularJS больших проектов.
                        Читать дальше →