• Чему я научился у ведущего программиста

    • Translation

    Год назад я начал работать на полную ставку в Bloomberg. И тогда же задумал написать эту статью. Я думал, что буду полон идей, которые смогу выплеснуть на бумагу, когда придёт время. Но уже через месяц понял, что всё будет не так просто: я уже начал забывать то, чему научился. Либо знания настолько хорошо усвоились, что мой разум заставил меня поверить, будто я всегда это знал, либо они просто вылетели у меня из головы.1

    Это одна из причин, по которой я начал вести дневник. Каждый день, попадая в интересные ситуации, я описывал их. И всё благодаря тому, что я сидел рядом с ведущим программистом. Я мог вблизи наблюдать за его работой, и видел, насколько она отличается от того, что сделал бы я. Мы много программировали вместе, что ещё больше облегчало мои наблюдения. Более того, в нашей команде не осуждается «подглядывание» за людьми, пишущими код. Когда мне казалось, что происходит что-то интересное, я поворачивался и смотрел. Благодаря постоянным вставаниям я всегда был в курсе происходящего.

    Я год просидел рядом с ведущим программистом. Вот чему я научился.
    Читать дальше →
  • Дайджест интересных материалов для мобильного разработчика #310 (5 — 11 августа)

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

      Читать дальше →
    • PHP-Дайджест № 162 (1 – 12 августа 2019)


        Свежая подборка со ссылками на новости и материалы. В выпуске: О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое.

        Приятного чтения!


        Читать дальше →
      • Дорожная карта Android-разработчика в 2019 году

        • Translation

        Всем привет! У нас отличные новости. В этом месяце в Отус стартует базовый курс "Android-разработчик", а также "Специализация Android-разработчик", которая включает в себя целый пакет курсов. В связи с этим делимся с вами полезной статьей, перевод которой приурочен к данным запускам.



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


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

        Читать дальше →
      • Сила дженериков в Swift. Часть 1

        • Translation
        Всем привет! Делимся с вами переводом, подготовленным специально для студентов курса «iOS Разработчик. Продвинутый курс». Приятного прочтения.



        Generic-функция, generic-тип и ограничения типа

        Что такое дженерики?


        Когда они работают – вы их любите, а когда нет – ненавидите!

        В реальной жизни все знают силу дженериков: просыпаясь утром, решая, что пить, наполняя чашку.

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

        Generic код позволяет создавать многократно используемые функции и типы данных, которые могут работать с любым типом, отвечающем определенным ограничениям, обеспечивая при этом типобезопасность во время компиляции. Этот подход позволяет писать код, который помогает избежать дублирования и выражает свой функционал в понятной абстрактной манере. Например, такие типы как Array, Set и Dictionary используют дженерики для хранения элементов.
        Читать дальше →
      • Дайджест интересных материалов для мобильного разработчика #309 (29 июля — 4 августа)

          В нашем новом дайджесте аналитика в студии, очередное разочарование в Google Play, структуры данных и разоблачение магии, отчет о мошенничестве и (наконец-то!) DOOM II для iOS и Android.

          Читать дальше →
          • +23
          • 5.6k
          • 3
        • Топ-65 вопросов по SQL с собеседований, к которым вы должны подготовиться в 2019 году. Часть I

          • Translation


          Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик»




          Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.

          Читать дальше →
        • Введение в ECMAScript 6 (ES-2015)

          Введение в ES6



          Оглавление
          1. Template literals
          2. let and const
          3. Arrow function expressions
          4. For...of
          5. Computed property names
          6. Object.assign()
          7. Rest parameters
          8. Default parameters
          9. Destructuring assignment
          10. Map
          11. Set
          12. Classes
          13. Promise
          14. Iterators
          15. Generators
          16. Sumbol

          Template literals (Template strings)


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

          Шаблонные литералы заключены в обратные кавычки (` `) вместо двойных или одинарных. Они могут содержать подстановки, обозначаемые знаком доллара и фигурными скобками (${выражение}). Выражения в подстановках и текст между ними передаются в функцию. По умолчанию функция просто объединяет все части в строку. Если перед строкой есть выражение (здесь это tag), то шаблонная строка называется «теговым шаблоном». В этом случае, теговое выражение (обычно функция) вызывается с обработанным шаблонным литералом, который вы можете изменить перед выводом. Для экранирования обратной кавычки в шаблонных литералах указывается обратный слэш \.
          Читать дальше →
        • Три видео для тех, кто пишет под iOS


            Привет, Хабр!
            У нас прошёл iOS-митап и я принёс вам три видео от коллег из Яндекс.Денег, Яндекса и Mail.ru.


            Первое — как работать с асинхронным кодом из разных языков программирования.
            Второе — про баги при работе с системной клавиатурой на iOS и их исправление.
            Третье — о том, как устроена iOS-разработка в Яндексе.

            Читать дальше →
            • +14
            • 2.8k
            • 1
          • BotAuth — вход и регистрация при помощи ботов

            • Tutorial


            BotAuth — пакет, который позволяет реализовать вход при помощи бота Вконтакте, FaceBook, Telegram.

            Основная задача BotAuth, упростить посетителям Веб сайтов/PWA вход через социальные сети.

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

            Используя ботов, можно получить обратную связь (callback) из нативного приложения, тем самым не заставлять вводить логин и пароль соц. сети в браузере.
            Читать дальше →
          • Пакет для работы с СУБД Firebird в Laravel

              firebird-logoПривет Хабр! В прошлой статье я рассказывал о том, как можно добавить поддержку Firebird в Laravel. На тот момент я не знал о существовании пакета jacquestvanzuydam/laravel-firebird и добавлял поддержку Firebird с нуля. Сделано это было через модификацию файлов ядра Laravel, за что я был справедливо раскритикован. Посмотрев пакет jacquestvanzuydam/laravel-firebird, я понял, что его возможности меня не устраивают, и решил расширить его.

              В этой статье я хочу описать основные функциональные отличия моего пакета sim1984/laravel-firebird от пакета jacquestvanzuydam/laravel-firebird.
              Читать дальше →
            • Используем IoC-контейнер Laravel на полную мощность

              • Translation

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


              Примеры в данной статье основаны на Laravel 5.4.26, другие версии могут отличаться.


              Введение в Dependency Injection


              Я не буду объяснять, что такое DI и IoC в этой статье — если вы не знакомы с этими принципами, вы можете прочитать статью "What is Dependency Injection?" от Fabien Potencier (создателя фреймворка Symfony).

              Читать дальше →
            • Как подключить скрипт на сторонний сайт

                Привет, Хабр! Это первый пост в нашем блоге. Многие знают нас как чат для сайта, именно с него мы начинали, а сейчас занимаем лидирующие позиции в сфере бизнес-мессенджеров. Мы постепенно эволюционировали в комплексное бизнес-решение, которое предоставляет множество возможностей для клиентов: callback, общение с клиентами через мессенджеры, соцсети, мобильные приложения, виртуальная АТС, CRM-функции и многое другое.

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

                image

                Jivosite сегодня это:

                • 250К клиентов по всему миру;
                • 150М показов виджета в сутки;
                • 3.5М сообщений в сутки;
                • 10М чатов в месяц;
                • 1М одновременных коннектов;
                • 250+ серверов в production.

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

                Входная точка


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

                <script src="https://site.com/file.js"></script>

                Казалось бы, что может быть проще подключения скрипта на сайт?
                Читать дальше →
              • С чего начать разработку архитектуры?

                  Примечание: Если вы считаете, что на построении архитектуры съели хотя бы полпёсика, то эта статья не для вас.

                  Модель — абстрактное представление реальности в какой-либо форме.

                  Предполагаем, что архитектор уже закончил со сбором требований к будущей системе и их анализом.

                  Разработку архитектуры нужно начинать только с понятия и принятия фундаментальной концепции работы с информацией (данными): передача, хранение и обработка. Притом формы ввода/выводы информации, схемы обработки, абстрактные структуры массивов и элементов данных сами по себе тоже являются информацией (как и всё приложение) и подчиняются той же фундаментальной концепции.
                  Читать дальше →
                  • +6
                  • 10.3k
                  • 8
                • 10 навыков и знаний необходимых начинающему iOS разработчику

                    image

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

                    Ко мне и коллегам на собеседования приходит много кандидатов на открытые у нас вакансии, и я отчетливо вижу у многих новичков отсутствие базовых знаний или просто неуверенное владение ими. Хотя в интернете и много статей, книг и курсов (платных и бесплатных), из которых можно получить необходимые знания, не всегда просто понять, на изучении каких тем стоит сконцентрироваться.

                    В этой заметке я поделюсь информацией про то, какие навыки и знания я считаю важными для начинающего iOS разработчика, попробую объяснить зачем они нужны и дам ссылки на материалы для их изучения. 
                    Читать дальше →
                  • Изучаем Docker, часть 1: основы

                    • Translation
                    • Tutorial
                    Технологии контейнеризации приложений нашли широкое применение в сферах разработки ПО и анализа данных. Эти технологии помогают сделать приложения более безопасными, облегчают их развёртывание и улучшают возможности по их масштабированию. Рост и развитие технологий контейнеризации можно считать одним из важнейших трендов современности.

                    Docker — это платформа, которая предназначена для разработки, развёртывания и запуска приложений в контейнерах. Слово «Docker» в последнее время стало чем-то вроде синонима слова «контейнеризация». И если вы ещё не пользуетесь Docker, но при этом работаете или собираетесь работать в сферах разработки приложений или анализа данных, то Docker — это то, с чем вы непременно встретитесь в будущем.

                    Часть 1: основы
                    Часть 2: термины и концепции
                    Часть 3: файлы Dockerfile
                    Часть 4: уменьшение размеров образов и ускорение их сборки
                    Часть 5: команды
                    Часть 6: работа с данными

                    image

                    Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
                    Читать дальше →
                  • Оптимизация сайта для GooglePage Speed (учтены все особенности после его обновления) Часть 1

                    Эта статья будет интересна, кто столкнулся с разного рода проблемами после обновления Google PageSpeed и претензиям со стороны заказчиков или начальника, почему упал бал или возникло такое количество замечаний. А так же тем, кто производит оптимизацию сайтов.
                    В первую очередь стоит упомянуть, что вот в этой статье, на мой взгляд, всё очень грамотно и доступно расписано.

                    Я же от себя добавлю больше практических советов, а так же будет интересно послушать вашу точку зрения и увидеть ваши наработки.
                    Читать дальше →
                  • CSRF-уязвимости все еще актуальны

                      CSRF (Сross Site Request Forgery) в переводе на русский — это подделка межсайтовых запросов. Михаил Егоров (0ang3el) в своем докладе на Highload++ 2017 рассказал о CSRF-уязвимостях, о том, какие обычно используются механизмы защиты, а также как их все равно можно обойти. А в конце вывел ряд советов о том, как правильно защищаться от CSRF-атак. Под катом расшифровка этого выступления.


                      О спикере: Михаил Егоров работает в компании Ingram Micro Cloud и занимается Application security. В свободное время Михаил занимается поиском уязвимостей и Bug hunting и выступает на security-конференциях

                      Дисклаймер: приведенная информация является сугубо мнением автора, все совпадения случайны.


                      В том, что CSRF-атаки работают виноват этот Cookie-монстр. Дело в том, что многие веб-приложения используют куки (здесь и далее считаем уместным называть cookies по-русски) для управления сессией пользователя. Браузер устроен так, что, если у него есть куки пользователя для данного домена и пути, он их автоматически отправляет вместе с HTTP-запросом.
                      Читать дальше →
                    • Опасный target="_blank"

                        Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

                        Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
                        Читать дальше →
                      • Прокачка TinyMCE 4

                        Здравствуйте, меня зовут Константин, я работаю front-end-разработчиком на информационно-развлекательном портале, основную долю контента которого составляют новости и статьи. И, конечно же, нам было крайне важно организовать удобную работу с порталом для наших редакторов. О том, каких успехов мы добились на данном поприще, и будет эта статья.
                        Читать дальше →
                        • +31
                        • 43.1k
                        • 5