• Решение нескольких задач от Microsoft на примере JavaScript

    • Tutorial


    Доброго времени суток, друзья!

    Представляю вашему вниманию три задания по JS, предложенные участникам Microsoft’s Online Assessment 2019.

    Microsoft’s Online Assessment — предварительный отбор кандидатов в разработчики. Тех, кто прошел предварительный отбор, приглашают на онлайн собеседование. Нашел в сети информацию, что на решение задач отводился ровно один час, но это не точно.

    Предлагаю вам ознакомиться с вопросами и попробовать решить их самостоятельно. Развернутые комментарии приветствуются.

    За решения огромное спасибо Matt Clark.

    Итак, поехали.
    Читать дальше →
  • Правила компоновки во Flutter, которые должен знать каждый

    • Translation


    Когда новичок во Flutter спрашивает, почему какой-то виджет с width: 100 не ширины 100 пикселей, обычно ему отвечают, что надо обернуть этот виджет в Center, верно?


    Не надо так делать


    Если так отвечать, то к вам будут возвращаться снова и снова, спрашивая, почему какой-то FittedBox не работает, почему этот Column переполнен или как работает IntrinsicWidth.


    Сначала объясните, что Flutter компоновка очень отличается от HTML компоновки (особенно, если говорите с веб-разработчиком), а затем скажите, что необходимо запомнить следующее правило:


    Ограничения для виджетов объявляются в родителях. Размеры (желаемые) задаются в самом виджете. Позиция виджета на экране устанавливается родителем

    На мой взгляд, это правило нужно изучить, как можно раньше, так как без него по-настоящему понять компоновку во Flutter нельзя.

    Читать дальше →
  • Генерируем красивую Google-таблицу из своей программы (используя Google Sheets API v4)

    • Tutorial

    Постановка задачи


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

    image

    Особенности этой таблицы:

    • задана ширина столбцов;
    • верхняя ячейка является объединением A1:E1;
    • в некоторых ячейках настроены: формат отображения, размер шрифта, жирность, выравнивание текста и цвет фона;
    • значения в последнем столбике вычислены формулой (например, в E4 написано =D4-C4);
    • нарисована граница под ячейками A3:E3;
    • присутствует Пикачу (но это останется как домашнее задание для энтузиастов).

    Интересно? Тогда добро пожаловать под кат.
    Читать дальше →
  • Как соблюсти требования 152-ФЗ, защитить персональные данные своих клиентов и не наступить на наши грабли  



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

      Как показывает практика – совершенно правильно не хочет, потому что эта область знаний еще настолько новая и не обкатанная на практике, что сложности и вопросы возникают даже у профессионалов. Сегодня мы расскажем о том, как реализовывали проект под хранение персональных данных для нашего заказчика и с какими неочевидными сложностями столкнулись.
      Читать дальше →
    • Что заморозили на feature freeze 2019. Часть I. JSONPath


        После комитфеста 2019-03 произошла заморозка функциональности (feature freeze). У нас это почти традиционная рубрика: о прошлогодней заморозке мы уже писали. Теперь итоги 2019: что из нового войдет в PostgreSQL 12. В этой части обзора, посвященной JSONPath, используются в том числе примеры и фрагменты из доклада «Postgres 12 в этюдах», который прочитал Олег Бартунов на Saint Highload++ в СПБ 9 апреля сего года.
        Читать дальше →
        • +12
        • 4.5k
        • 7
      • Шпаргалка по структурам данных в Go


          Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
          Читать дальше →
        • Svelte 3: Переосмысление реактивности

          • Translation
          Буквально на днях произошло большое событие для сообщества SvelteJS, да и вообще, как мне кажется, для всего современного фронтенда — долгожданный релиз Svelte 3! Посему, под катом перевод статьи автора Svelte и прекрасное видео с его доклада на YGLF 2019.


          Читать дальше →
        • Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

          • Tutorial


          Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

          Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
          Читать дальше →
        • Как создать палитру, комфортную для всех

          • Translation


          Вот палитра нашего сервиса Envoy. Как и многие цветовые схемы в вебе, она включает фирменный цвет (красный), информационный цвет (синий), цвет успешной операции (зелёный), цвет предупреждений (жёлтый) и разные оттенки серого.

          Хотя эти цвета кажутся прекрасной палитрой, со временем мы поняли, что они недостаточно гибки для всех потребностей нашего пользовательского интерфейса. В отзывах постоянно всплывал один и тот же комментарий: «Текст недостаточного контрастный».
          Читать дальше →
          • +31
          • 12k
          • 9
        • Простыми словами о преобразовании Фурье

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

          image (с) xkcd

          Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
          • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
          • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
          • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
          • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
          • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
          • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
          • Как по цифровой последовательности восстанавливают исходный сигнал


          Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

          Итак, приступим?
        • Курс MIT «Безопасность компьютерных систем». Лекция 1: «Вступление: модели угроз», часть 1

          • Translation

          Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


          Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

          Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
          Читать дальше →
        • Как стать датасайнтистом, если тебе за 40 и ты не программист

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

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

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



            Сейчас я ведущий аналитик в группе больших данных в QIWI, но еще три года назад я был довольно далек от датасайнс и об искусственном интеллекте слышал только из новостей. Но потом все изменилось, во многом благодаря Coursera и Kaggle.

            Итак, обо всем по порядку.
            Читать дальше →
          • Редизайн с большой буквы: изучаем перезапуск Smashing Magazine в 2017-м

              Редизайн популярного сайта — всегда большая и сложная задача, где в миллионе вопросов всё может пойти не так. А когда речь о Smashing Magazine, всё становится ещё интереснее: какие решения приняли создатели сайта, который рассказывает миллионам читателей как раз о возможных веб-решениях?

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

              Получился подробнейший текст с 70 иллюстрациями (осторожно, трафик). А на случай, если вы предпочитаете смотреть англоязычный оригинал или если в нашем переводе какие-то места окажутся неясными, прикладываем и видеозапись:


              Читать дальше →
              • +24
              • 6.5k
              • 3
            • Руководство по SEO JavaScript-сайтов. Часть 2. Проблемы, эксперименты и рекомендации

              • Translation
              В первой части перевода этой статьи мы говорили о том, как веб-мастер может взглянуть на свой ресурс глазами Google, и о том, над чем стоит поработать, если то, что увидит разработчик сайта, окажется не тем, чего он ждёт.

              image

              Сегодня, во второй части перевода, Томаш Рудски расскажет о наиболее распространённых SEO-ошибках, которым подвержены сайты, основанные на JavaScript, обсудит последствия грядущего отказа Google от механизма AJAX-сканирования, поговорит о предварительном рендеринге и об изоморфном JavaScript, поделится результатами экспериментов по индексированию. Здесь, кроме того, он затронет тему особенностей ранжирования сайтов различных видов и предложит вспомнить о том, что помимо Google есть и другие поисковики, которым тоже приходится сталкиваться с веб-страницами, основанными на JS.
              Читать дальше →
              • +27
              • 14.1k
              • 5
            • Руководство по SEO JavaScript-сайтов. Часть 1. Интернет глазами Google

              • Translation
              Представляем вашему вниманию перевод первой части материала, который посвящён поисковой оптимизации сайтов, построенных с использованием JavaScript. Речь пойдёт об особенностях сканирования, анализа и индексирования таких сайтов поисковыми роботами, о проблемах, сопутствующих этим процессам, и о подходах к решению этих проблем.

              В частности, сегодня автор этого материала, Томаш Рудски из компании Elephate, расскажет о том, как сайты, которые используют современные JS-фреймворки, вроде Angular, React, Vue.js и Polymer, выглядят с точки зрения Google. А именно, речь пойдёт о том, как Google обрабатывает сайты, о технологиях, применяемых для анализа страниц, о том, как разработчик может проанализировать сайт для того, чтобы понять, сможет ли Google нормально этот сайт проиндексировать.

              image

              JavaScript-технологии разработки веб-сайтов в наши дни весьма популярны, поэтому может показаться, что они уже достигли достаточно высокого уровня развития во всех мыслимых направлениях. Однако, в реальности всё не так. В частности, разработчики и SEO-специалисты всё ещё находятся в самом начале пути к тому, чтобы сделать сайты, построенные на JS-фреймворках, успешными в плане их взаимодействия с поисковыми системами. До сих пор множество подобных сайтов, несмотря на их популярность, занимают далеко не самые высокие места в поисковой выдаче Google и других поисковых систем.
              Читать дальше →
              • +30
              • 27.1k
              • 6
            • Так ли страшен чёрт или как мы внедряли онлайн-кассу

              • Tutorial

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


              Онлайн-касса


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

              Читать дальше →
            • Обучаемся самостоятельно: подборка видеокурсов по Computer Science

              • Translation
              image

              Содержание


              1. Введение в Computer Science
              2. Структуры данных и Алгоритмы
              3. Системное программирование
              4. Распределенные системы
              5. Базы данных
              6. Объектно-ориентированный дизайн и разработка софта
              7. Искусственный интеллект
              8. Машинное обучение
              9. Веб-разработка и интернет-технологии
              10. Concurrency
              11. Компьютерные сети
              12. Разработка мобильных приложений
              13. Математика для программистов
              14. Теория информатики и языки программирования
              15. Архитектура компьютера
              16. Безопасность
              17. Компьютерная графика
              18. Работа с изображениями и компьютерное зрение
              19. Интерфейс Человек-Компьютер
              20. Вычислительная биология
              21. Прочее

              Читать дальше →
            • Бумажные деньги — когда и почему они появились



                Бумажные деньги появились намного позже металлических. Одна из причин — развитие производства бумаги и печатного дела. Первыми, по всей видимости, создали бумажные деньги китайцы, поскольку и производство бумаги возникло в Китае. Попытки заменить металлические деньги какими-то другими делались китайцами тысячи лет назад. Еще в I веке до н.э. они создали эквивалент денег из кожи оленей. Эти «банкноты» выглядели, как четырехугольные пластинки. На кожу были нанесены печати и специальные знаки.

                Изготовлением настоящих бумажных денег жители Поднебесной занялись в начале IX-го века уже нашей эры. Правда, только в X-XI веках бумажные деньги стали частью официальной экономической политики государства. До этого момента купюры не занимали значительного места в монетарной политике. Первые бумажные деньги называли «летающими» по причине их легкости по отношению к стандартным металлическим монетам. Это были, скорее, сертификаты, платежеспособность которых обеспечивалась дацзянами (подворьями) властей столицы.
                Читать дальше →
              • Простая модель сражения на Modelica

                • Tutorial

                Доброго времени суток! Недавно узнав о таком инструменте моделирования, как язык Modelica и его свободной реализации OpenModelica, был удивлен тому, что на Хабре по этому поводу всего одна статья. Поскольку тема несколько необычна, детали пришлось постигать на собственной шкуре некотором взятом из головы примере. В этой статье пойдет речь о том, как построить простую модель сражения (для примера), попутно разобравшись с некоторыми концепциями языка (основное).

                Читать дальше →
              • Что нужно знать про арифметику с плавающей запятой



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

                Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
                Читать дальше →