• Kubernetes в переводе на детский



      CNCF — созданная при фонде The Linux Foundation международная организация, занимающаяся развитием и продвижением Open Source технологий, которые используются для построения и функционирования инфраструктур, предназначенных для запуска облачных приложений. Но это вы, наверное, и так знаете. Зато, возможно, вы не знали, что CNCF «балуется» издательством книг. Более того, книг для детей. Более того, книг для детей про современные IT-технологии! Перед Новым годом нам попалась одна из них — «The Illustrated Children’s Guide to Kubernetes». И она оказалась такой милой, что даже самые суровые из наших коллег светлели взглядом, листая виртуальные странички.

      «Ого, — подумали мы. — Это же так круто!» Конечно, круто: детская иллюстрированная книжка, где на примере историй смешных персонажей простыми словами объясняется, что такое Kubernetes. А ведь K8s — давным-давно уже вездесущее настоящее в мире IT… Вот мы и решили, что нашим детям пора бы знать, чем занимаются их родители. Решили — и перевели книгу на русский язык.
      Читать дальше →
    • Проверка б/у макбука перед покупкой — чек-лист

      Статья доработана с учетом ценных комментариев, дополнен список источников.
      Данный чек-лист — компиляция нескольких источников, я его делал для себя, когда в конце 2019 года покупал 13" б/у макбук 2015 года, последний из имевших нормальную клавиатуру и набор портов, перед тем как Apple перешла на клавиатуру-бабочку и usb-с порты.

      Какую модель б/у макбука стоит брать? Вместо введения


      На этот вопрос нет однозначного ответа, поскольку все зависит от ваших задач. Для начала 2020 года и задач «офисной» работы и серфинга я бы сформулировал ответ так — можно брать любой мак от 2014 и более позднего года выпуска, на полноценном процессоре (m5 и m7 брать скорее нежелательно). Macbook pro таким образом предпочтительнее macbook air, поскольку у последних процессор и система охлаждения обычно проигрывает в сравнении.

      Оптимальный выбор, который проработает еще несколько лет без проблем — это модели с четырехядерным процессором (не путать с четырехпоточным!), такие ставили обычно в 15" модели. Оперативки не менее 8 Гб, SSD лучше 256 Гб и больше, хотя на 128 с определенными неудобствами жить тоже можно. Батарея оптимально с менее чем 500 циклами перезарядки.

      Стоимость 13" макбуков 2014-2016 годов колеблется от 40 до 55 тыс. рублей, причем варианты в хорошем состоянии около 40-45 тыс. мне кажутся наиболее выгодными с точки зрения дилеммы «взять б/у или доложить и взять новый».

      Надо иметь ввиду, что все модели 2013-2015 года включительно очень ограничены с точки зрения апгрейда, а апгрейд моделей с 2016 и более поздних вовсе невозможен, поэтому берите сразу конфигурацию, которой вам хватит на ближайшие 2-3 года.

      Моделей с клавиатурой-бабочкой (2016-2019 гг) не то что бы надо избегать, но надо отдавать себе отчет, что они требуют радикально более бережного к себе отношения, чтобы клавиатура проработала дольше. Сейчас полно предложений продажи mac mini — это тоже хороший вариант, особенно если он базируется на нормальном четырехядерном процессоре.
      Читать дальше →
    • Начало работы с методами JavaScript-массивов .map(), .filter() и .reduce()

      • Translation
      Когда я разбирался в том, как пользоваться методами JS-массивов .map(), .filter() и .reduce(), всё, что я читал, смотрел и слушал, казалось мне очень сложным. Эти концепции рассматривались как некие самостоятельные механизмы, ни к чему другому отношения не имеющие. Мне тяжело было ухватить их суть и их понять.



      Я слышал, что это — базовые вещи, понимание которых является чем-то вроде границы между «посвящёнными» и «непосвящёнными». Хотелось бы мне тогда, чтобы мне сказали о них правду. Она заключается в том, что эти три метода символизируют то, что причины, по которым перебирают некие итерируемые объекты, часто вписываются в одну из трёх функциональных категорий.
      Читать дальше →
    • 'Hello World' вам в облако

      • Tutorial

      Мир сходит с ума, заталкивая калькулятор для 2+2 в облака. Чем мы хуже? Давайте Hello World затолкаем в три микросервиса, напишем пару-тройку тестов, обеспечим пользователей документацией, нарисуем красивый пайплайн сборки и обеспечим деплой в условный облачный прод при успешном прохождении тестов. Итак, в данной статье будет показан пример того, как может быть построен процесс разработки продукта от спецификации до деплоя в прод. Инетересно? тогда прошу под кат

      Читать дальше →
    • Автоматизация: как работать с обновлениями

        Привет, Хабр!

        Я довольно давно и много занимаюсь автоматизацией тестирования. И не понаслышке знаю, какую боль иногда доставляют новые версии чего угодно. Обновили XCode, вышла новая Selenium, придумали новый браузер (особое спасибо Microsoft за Edge и его драйвер), зачем-то вот вам еще один язык программирования… Все это автоматизатора приводит исключительно в радость от осознания собственной значимости. Ведь только он теперь способен запустить тесты на всем этом.

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


        Читать дальше →
        • +10
        • 3.2k
        • 6
      • Зачем в JavaScript нужен строгий режим?

        • Translation
        Строгий режим (strict mode) — это важная часть современного JavaScript. Именно этот режим позволяет разработчикам пользоваться более ограниченным, чем стандартный, синтаксисом.

        Семантика строгого режима отличается от традиционного нестрогого режима, который иногда называют «грязным» (sloppy mode). В таком режиме синтаксические правила языка не так строги, а когда происходят некоторые ошибки, система никак не оповещает о них пользователя. То есть — ошибки могут быть проигнорированы, а код, в котором они допущены, сможет выполняться дальше. Это способно привести к неожиданным результатам выполнения кода.



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

        Строгий режим, кроме того, помогает в написании программ, в которых нет недочётов, мешающих JS-движкам оптимизировать код. Далее, в этом режиме запрещено использование элементов синтаксиса, которые могут получить особый смысл в будущих версиях языка.
        Читать дальше →
      • Итак, вы хотите стать аналитиком в области сетевой безопасности…

        • Translation
        Перевод статьи подготовлен специально для студентов курса «Пентест. Практика тестирования на проникновение».




        Вы интересуетесь развитием методов взлома и хотите поделиться своими открытиями с сообществом информационной безопасности? В этой статье я дам некоторые рекомендации тем, кто хочет стать аналитиком в области веб-безопасности, а также расскажу о возможностях и ловушках, которые сам когда-то встретил на своем пути.
        Читать дальше →
      • Что не так с Яндекс.Музыкой? UX/UI разбор



        Про Яндекс.Музыку знает или слышал краем уха каждый, кто читает эту статью. C 2018 года Яндекс не хвалился ростом пользовательской базы Я.Музыки, когда она достигла 1 млн. платных пользователей. При этом я в миллион платных подписчиков не входил, несмотря на серьёзное проникновение сервиса на российский рынок.

        И правда, почему я не пользуюсь Я.Музыкой? Стоит от 100 рублей в месяц, база содержит десятки миллионов треков, сервис создан с пониманием национальных особенностей аудитории слушателей. Задал себе вопрос — ответ возник сразу. Для меня Я.Музыка неудобна. Открываешь сайт Я.Музыки и сразу хочется закрыть. Попробую выяснить почему. Расследование буду проводить на MacBook Pro 13,3’’ с экраном Retina, OS X Mojave v10.14.3. Для нативности сервис будет тестироваться на родном Яндекс.Браузере 19.3.0.2489 (64-bit).
        Читать дальше →
      • Разъяснительная беседа об асинхронном программировании в Javascript

        • Translation
        Привет всем!

        Как вы, возможно, помните, еще в октябре у нас переводилась интересная статья о применении таймеров в Javascript. Она вызвала огромную дискуссию, по результатам которой мы давно хотели вернуться к этой теме и предложить вам подробный разбор асинхронного программирования в этом языке. Рады, что нам удалось найти достойный материал и опубликовать его еще до конца года. Приятного чтения!
        Читать дальше →
      • Повторение для программиста: почему важно решать схожие проблемы



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

          Многие разработчики дают один и тот же совет: решайте столько проблем, сколько возможно, чтобы постоянно получать новый опыт и знания. Это хороший совет, поскольку решение проблем с кодом позволяет учиться новому и совершенствовать уже существующие навыки. Но я считаю важным еще и повторение: одну и ту же проблему можно решать по-разному. И такое повторение тоже позволяет программисту получить профит в виде совершенствования навыков.
          Читать дальше →
        • JavaScript ES6: пишем меньше — делаем больше

          • Translation
          Стандарт ES6 принёс в мир JavaScript-разработки новые синтаксические конструкции и замечательные возможности, которые, кроме прочего, улучшают читаемость текстов программ, позволяют сделать их лаконичнее и выразительнее. Всё это позволяет разработчику решать те же задачи, что и раньше, написав меньше кода. «Пишем меньше — делаем больше», — это идея, которая вдохновила автора материала, перевод которого мы сегодня публикуем, на исследование возможностей ES6. В частности, здесь он сравнивает ES5 и ES6 и рассматривает варианты практического использования новых конструкций.

          image
          Читать дальше →
          • +5
          • 14.3k
          • 9
        • Применение сверточных нейронных сетей для задач NLP

            Когда мы слышим о сверточных нейронных сетях (CNN), мы обычно думаем о компьютерном зрении. CNN лежали в основе прорывов в классификации изображений — знаменитый AlexNet, победитель соревнования ImageNet в 2012 году, с которого начался бум интереса к этой теме. С тех пор сверточные сети достигли большого успеха в распознавании изображений, в силу того факта, что они устроены наподобие зрительной коры головного мозга — то есть умеют концентрироваться на небольшой области и выделять в ней важные особенности. Но, как оказалось, CNN хороши не только для этого, но и для задач обработки естественного языка (Natural Language Processing, NLP). Более того, в недавно вышедшей статье [1] от коллектива авторов из Intel и Carnegie-Mellon University, утверждается, что они подходят для этого даже лучше RNN, которые безраздельно властвовали областью на протяжении последних лет.

            Сверточные нейронные сети


            Для начала немного теории. Что такое свертка? Мы не будем на этом останавливаться подробно, так как про это написана уже тонна материалов, но все-таки кратко пробежаться стоит. Есть красивая визуализация от Стэнфорда, которая позволяет ухватить суть:

            image
            Источник
            Читать дальше →
          • Долбанутые командные игры


              Давайте сегодня поговорим о социопатах. И об их противоположности – командных игроках.

              Появилась у меня игра «Совушки, ау», и я прям остро всё прочувствовал. Она командная, и сделана так, что победить в ней могут только те, кто работает на общее благо. Причём часто делая тактически невыгодные ходы, но стратегически перспективные. Если идею поймёт другой игрок.

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

              Но внятным правилам подчиняются лишь взрослые. Дети же безумны.
              Читать дальше →
            • Планы на JPoint 2018


                Уже скоро в Москве пройдет международная Java-конференция JPoint, поэтому пора определиться с докладами, на которые стоит сходить. Рассказ пойдет о докладах, на которые пойду лично я и почему.


                Я зарабатываю разработкой приложений на Java c 2012 года. В основном решаю проблемы интеграции систем и управления проектами, поучаствовал в нескольких десятках проектов, знаю не понаслышке про разработку веб-сервисов, десктопных и веб-приложений.

                Читать дальше →
              • Объясняем современный JavaScript динозавру

                • Translation


                Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


                Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


                Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


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

                Читать дальше →
              • Фундаментальная уязвимость HTML при встраивании скриптов

                  Чтобы описать суть проблемы, мне нужно рассказать, как вообще устроен HTML. Вы наверняка в общих чертах представляли себе, но я все равно коротко пробегусь по основным моментам, которые понадобятся для понимания. Если кому-то не терпится, сразу переходите к сути.


                  HTML — это язык гипертекстовой разметки. Чтобы говорить на этом языке, нужно соблюдать его формат, иначе тот, кто читает написанное, не сможет вас понять. Например, в HTML у тегов есть атрибуты:


                  <p name="value">

                  Тут [name] — это имя атрибута, а [value] — это его значение. В статье я буду использовать квадратные скобки вокруг кода, чтобы было понятно, где он начинается и заканчивается. После имени стои́т знак равенства, а после него — значение, заключенное в кавычки. Значение атрибута начинается сразу после первого символа кавычки и заканчивается сразу перед следующим символом кавычки, где бы он не находился. Это значит, что если вместо [value] вы запишете [OOO "Рога и копыта".], то значение атрибута name будет [OOO ], а еще у вашего элемента будет три других атрибута с именами: [рога], [и] и [копыта"."], но без значений.


                  <p name="OOO "Рога и копыта"."></p>

                  Если это не то, чего вы ожидали, вам нужно как-то изменить значение атрибута, чтобы в нем не встречалась кавычка. Самое простое, что можно придумать — просто вырезать кавычки.


                  <p name="OOO Рога и копыта."></p>
                  Читать дальше →
                • Git снизу вверх

                  • Translation
                  У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


                  Изображение из твиттера @girlie_mac

                  Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
                  Читать дальше →
                • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)

                    Перевод статьи Christopher Pitt.


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


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


                    Fragmented terrain


                    Последняя проблема и будет рассмотрена в этом уроке.

                    Читать дальше →
                  • Почему компания меня потеряла

                    Когда деревья были только бинарными, а дешевая чашка кофе стоила дороже, чем час программиста, автор делал первые попытки программирования. Не существовало «айтишников», «дизайнеров», «js-ников», и даже «прогеров» — ты либо был на «ты» с железками, всем софтом и программированием, либо нет. Время ушло, пришла специализация, выросли оклады, потом еще раз, а потом помножились на два. И теперь мы охеревшие настолько специализированы, что…

                    Автор — из старой школы. По разным причинам. Мне нравится заниматься «всем», помогать себе и компании, и я рассчитываю на отдачу — не только, и не столько, на финансовую. Я постоянно учусь. Но не только своей «основной», узкой специальности (=программирование), за которую платят, и ниже объясню, почему…

                    Недавно я столкнулся с проблемой, известной как «переученность». Такое бывает, когда ты переростаешь вакансию «вширь», а компания не может никак это использовать. Тогда ты ломишься в стартапы, стараясь самовыразиться, ищешь варианты, разговариваешь с руководством (тут мне повезло), или просто уходишь.

                    Дальше я постараюсь обобщить личный и известный мне опыт по этой проблеме.

                    Тем, кто вдруг узнает меня по этой публикации
                    Пожалуйста, не показывайте, что читали это, ведь опыт может помочь нам всем, а каких-либо обид на вас у меня нет.
                    Читать дальше →
                  • Использование SVG в качестве Placeholder’a

                    • Translation
                    image

                    Генерация SVG из изображений может использоваться для Placeholder’ов.

                    Я занимаюсь оптимизацией изображений и картинок для их быстрой загрузки. Одна из самых интересных областей исследования это Placeholder’ы: что показывать, когда изображение еще не загружено.

                    В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

                    В этом посте мы рассмотрим следующие темы:

                    • Обзор различных типов Placeholder’ов
                    • Placeholder на основе SVG (контуры, фигуры и силуэты)
                    • Автоматизация процесса.

                    Читать дальше →