Паттерн Интерактор (Interactor, Operation)

Автор: admin от 2-02-2019, 19:55, посмотрело: 594

Данный текст представляет собой адаптацию части руководства фрэймворка Hanami под фрэймфорк Laravel. Чем вызван интерес именно к этому материалу? В нём даётся пошаговое описание с демонстрацией таких общих для языков программирования и фрэймворков вещей как:




  • Использование паттерна "Интеракторы".

  • Демонстрация TDDBDD.



Сразу стоит отметить, что это не только разные фрэймворки с разной идеологией (в частности, что касается ORM), но и разные языки программирования, каждый из которых имеет свою специфическую культуру и сложившиеся "bests practics" в силу исторических причин. Разные языки программирования и фрэймворки тяготеют к заимствованию друг у друга наиболее удачных решений, поэтому несмотря на различия в деталях, фундаментальные вещи не различаются, если мы конечно не берём ЯП с изначально разной парадигмой. Достаточно интересно сравнить, как одну и туже задачу решают в разных экосистемах.



Итак, исходно мы имеем фрэймворк Hanami (ruby) — достаточно новый фрэймворк, идеологически больше тяготеющий к Symfony, с ORM "на репозиториях". И целевой фрэймворк LaravelLumen (php) с Active Record.

Категория: Программирование

 

Автоматически сгенерированные пароли в iOS 12

Автор: admin от 2-02-2019, 19:55, посмотрело: 61

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

Категория: Веб-разработка, Game Development, iOS

 

Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC

Автор: admin от 2-02-2019, 19:55, посмотрело: 90

Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC

(оригинал статьи на английском языке опубликован на Medium)



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



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




  • Запрос и загрузка данных.

  • Трансформация и подготовка данных для пользователя.

  • Запись и чтение данных из базы данных или файловой системы.



  • Учитывая все это, я создал демонстрационное приложение, которое решает одну и ту же задачу используя различные подходы к архитектуре.

    Категория: Android, iOS

     

    Frontend для backend девелопера

    Автор: admin от 2-02-2019, 19:50, посмотрело: 52

    Сразу хочу оговорится, что данная статья не предназначена для тех, у кого разработка frontend основная деятельность. Целевая аудитория: разработчики backend которым понадобилось срочно прикрутить web UI или просто интересуются новыми областями, ну и возможно fullstack разработчики.



    Итак, перейдем к проблеме. Вспоминается статья, а также, на просторах Хабара было еще несколько подобных. Представлены они все как шуточные, но как говорится «в каждой шутке есть доля правды», а тут даже и не доля… Но вот в чем вопрос, а действительно ли нужно все это?



    Вопрос который я хотел бы поднять, преимущественно о сборке. Именно на этом этапе js-сообщество предлагает неимоверное количество инструментов, необходимость которых совсем не очевидна. Например, сообществом предлагается различные варианты работы с модулями, что имело смысл в свое время, но на данный момент спецификация на import/export поддерживается всеми современными браузерами, и даже недобраузером edge. В силу, оговорённой в начале, задачи, необходимости поддерживать что-либо более старое у нас и нету, так что мы смело останавливаемся на спецификации. А вот то что действительно будет нам необходимо, так это какая либо работа с зависимостями.

    Категория: Информационная безопасность

     

    Как аудиокапчу ИТ-гиганта «обошли» во второй раз

    Автор: admin от 2-02-2019, 19:50, посмотрело: 74

    Инженеры из Мэрилендского университета разработали систему, которая «обходит» reCAPTCHA от Google практически со стопроцентной вероятностью. Она задействует алгоритмы распознавания речи для решения аудиокапчи. Рассказываем, как это работает.



    Как аудиокапчу ИТ-гиганта «обошли» во второй раз

    Категория: Информационная безопасность

     

    Под капотом у чат-бота: что умеет и как работает RocketBot

    Автор: admin от 2-02-2019, 19:35, посмотрело: 80

    RocketBot — это программируемый чат-бот, который интегрируется с VK, Telegram и Bitrix24. Сегодня мы расскажем об инфраструктуре и других технологиях, на которых он построен.



    Под капотом у чат-бота: что умеет и как работает RocketBot

    Категория: Веб-разработка

     

    Когда стоит сохранять длину массива в локальную переменную в C#

    Автор: admin от 2-02-2019, 11:50, посмотрело: 48

    Читая Хабр, я наткнулся на статью "Стоит ли сохранять длину массива в локальную переменную в C#?" (которая была в разделе «лучшее»). Мне кажется глупый вопрос, не совсем корректные измерения (почему нет измерений для вложенных циклов?) и странный вывод.



    Длину массива в С# стоит сохранять в отдельную переменную в случае когда у нас несколько вложенных циклов, ниже пример.



    Вот простой тестовый код без сохранения длины массива в переменную:



    Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
    int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
    for (int i = 0; i < arr1.GetLength(0); i++)
    {
        for (int j = 0; j < arr1.GetLength(1); j++)
        {
            arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
        }
    }

    Вот тот же код c сохранением длины массива в переменную:

    Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
    int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
    int len1 = arr1.GetLength(0), len2 = arr1.GetLength(1);
    for (int i = 0; i < len1; i++)
    {
        for (int j = 0; j < len2; j++)
        {
            arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
        }
    }


    Код с сохранением длины массива в переменную (второй вариант) выполняется примерно на 15% быстрее.



    Подобный ответ можно найти в более-менее толстых книжках по C# или .Net, но при этом умный человек постит это на Хабре и никто в комментариях не указал ему что длину массива в С# сохраняют в переменную обычно для вложенных циклов и там это действительно имеет смысл.

    Категория: Программирование

     

    Регистрируем сделку с недвижимостью онлайн

    Автор: admin от 2-02-2019, 05:20, посмотрело: 49

    Здравствуй, читатель!



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



    3,5 года прошло с момента анонса возможности государственной регистрации прав онлайн, а до сих пор в Рунете нет ни одной хоть сколь-либо подробной инструкции к этому довольно неочевидному процессу.

    Категория: Криптография