• Новичкам фондового рынка: честный разговор об акциях

    • Tutorial
    Телеграмму накатал:

    «Шлите денег — отбатрачу,
    Я их все прохохотал».

    /В.Высоцкий/


    Тот, кто впервые выходит на фондовый рынок как частный инвестор, сразу думает о двух активах: акциях и валюте. Эти инструменты кажутся простыми и прозрачными. Но если бы всё было так просто, эту статью писал бы долларовый миллионер для долларовых миллионеров. Акции — инструмент коварный и крайне непростой, он требует профессионального подхода и не прощает ошибок. Это уже далеко не те случаи, которые показывают в захватывающих фильмах про биржевиков XX века — это фондовый рынок 2020. Даже первый шаг должен быть очень серьёзным.


    Источник
    Читать дальше →
  • JsonDiscovery: Меняем опыт просмотра JSON в браузере

    • Translation

    Сегодня я хочу рассказать о JsonDiscovery, браузерном расширении для просмотра JSON. Возможно вы скажете: «у нас и так полно подобных расширений!». Да, полно, но фичи JsonDiscovery отличают его от других и делают его действительно мощным.


    Давайте же взглянем поближе...


    Читать дальше →
  • Make frontend «backend» again

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



      Материал подготовлен на основе доклада Николая Рыжикова на весенней конференции HolyJS 2018 Piter.
      Читать дальше →
    • IPv6 в каждый дом: Cвой собственный IPv6 сервер брокер (6in4)

      • Tutorial


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

      Что важно — трафик мы будем пускать через свой собственный арендованный сервер, а не через непонятно какого брокера.
      Читать дальше →
    • Исследуем «Ревизор» Роскомнадзора

        ФСБшник хороший
        Aqua Mine
        Ревизор — программно±аппаратный комплекс для мониторинга доступа к сайтам из реестра со стороны провайдеров — берет свое начало в октябре 2015 года, когда компания «МФИ Софт», та же компания, что сделала СОРМы, выиграла тендер на разработку ПО за 84 миллиона рублей. Согласно условиям тендера, разработчик должен был предоставить работоспособное ПО под Windows и Linux и 700 аппаратных «Агентов» в срок до 14.12.2015, всего через 2.5 месяца, и, похоже, все было готово даже на пару недель раньше дедлайна. Провайдерам в добровольно-принудительном порядке уже в начале декабря предлагалось установить один из трех вариантов Ревизора: в виде образа виртуальной машины VMWare, основанной на OpenWRT 14.07, в виде программы-сервиса под Windows, либо же в виде железного «Агента», который представлял из себя маршрутизатор TP-Link MR3020 с установленным на него OpenWRT и необходимым ПО. Многие провайдеры отказывались от установки комплекса из-за того, что он не сертифицирован, а использоваться будет только им во вред, а другим устройств просто не досталось, и им пришлось установить софтовую версию.

        Итак, у меня в руках последняя версия VMWare-образа и exe-файла Ревизора. Давайте же посмотрим, что внутри!
        image
        Читать дальше →
      • VPN везде и всюду: IPsec без L2TP со strongSwan

          image
          достаточно сильный лебедь

          Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

          Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

          Небольшое введение в мир IPsec

          Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.
          Читать дальше →
        • Java Logging: история кошмара

            Вступление


            Тернист и извилист путь Java-платформы к правильному способу записи строчек в лог-файлы. История logging в Java довольно познавательна в плане изучения особенностей Open Source, в том числе его взаимодействия с корпорациями и единичными программистами. Я собираюсь рассказать столько, сколько возможно, об истории развития Java logging, а также о том, к чему все пришло и как жить дальше.
            Вперед и с песней!
          • Что нужно уметь, чтобы не бояться потерять работу

            • Translation

            Метод, которым пользуются Джефф Безос, Уоррен Баффет и Илон Маск




            Джеффу Безосу часто задают вопрос, который мы все должны задать сами себе: «Что изменится в ближайшие 10 лет?»

            Это непростой вопрос: мир меняется очень быстро, и принимаемые сегодня решения определяют нашу судьбу.

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

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

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

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

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

            • Translation


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


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


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


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

            Читать дальше →
          • Новый API Яндекс.Кассы: платежное лего для e-commerce всех мастей


              Буквально сегодня свет увидел новый API Яндекс.Кассы, разработанный программистами для программистов. Набор протоколов стал единообразным, логичным и простым в освоении. Но статья не об этом – я хочу рассказать, как и почему в один прекрасный момент API решено было переписать с нуля.


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

              Читать дальше →
            • Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний

              • Translation
              До релиза Firefox Quantum остаётся всё меньше времени. Он принесёт множество улучшений в производительности, в том числе сверхбыстрый движок CSS, который мы позаимствовали у Servo.

              Но есть ещё одна большая часть технологии Servo, которая пока не вошла в состав Firefox Quantum, но скоро войдёт. Это WebRender, часть проекта Quantum Render.



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

              При разработке WebRender мы поставили задачу, чтобы все приложения работали на 60 кадрах в секунду (FPS) или лучше, независимо от размера дисплея или от размера анимации. И это сработало. Страницы, которые пыхтят на 15 FPS в Chrome или нынешнем Firefox, летают на 60 FPS при запуске WebRender.

              Как WebRender делает это? Он фундаментальным образом меняет принцип работы движка рендеринга, делая его более похожим на движок 3D-игры.
              Читать дальше →
            • Реализация вебхуков на примере взаимодействия сторонних сервисов с онлайн-кассами

              • Tutorial

              Я попросил нашу команду маркетинга нарисовать иллюстрацию и долго объяснял, что такое вебхуки

              Не так давно передо мной встала задача реализовать работу вебхуков в Личном кабинете владельца кассы компании Дримкас. Как оказалось, в сети практически нет описания и туториалов, как это сделать. Я расскажу, как мы это реализовали без тяжелых кронов по БД.


              Статья будет полезна для middle node.js-разработчиков.
              Читать дальше →
            • Паттерны проектирования в автоматизации тестирования

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

                Эта мысль красной нитью пойдет сквозь материал под катом, и она, пожалуй, требует пояснения. Статья основана на докладе Николая Алименкова, к которому он подошёл не просто прогретым, а горящим после дискуссии с Алексеем Виноградовым о подходах к написанию тестов: методом прямого кода или при помощи паттернов. Нужны ли какие-то еще паттерны, кроме PageElement, Steps, PageObject?! С чего кто-то решил, что паттерны усложняют код, заставляют нас тратить время на создание ненужных (?) boilerplate-простыней? SOLID вам не угодил? А ведь все они создавались с учётом всего накопленного опыта сообщества разработчиков и они знали, что делают.

                Николай xpinjection Алименков – известный Java-разработчик, Java техлид и delivery-менеджер, основатель XP Injection. В настоящее время является независимым разработчиком и консультантом, Agile/XP коучем, спикером и организатором различных конференций

                Автоматизация тестирования имеет собственный набор задач, так что существует и набор полезных паттернов проектирования для этой области. В докладе Николай рассказывает обо всех известных паттернах и подробно описывает их с практическими примерами.



                В основу этого материала легло выступление Николая Алименкова на конференции Heisenbug 2017 Piter под названием «Паттерны проектирования в автоматизации тестирования». Слайды здесь.
                Читать дальше →
                • +26
                • 65.3k
                • 4
              • Монадные трансформеры для практикующих программистов

                • Translation

                Прикладное введение в монадные трансформеры, от проблемы к решению


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


                Всё как обычно: несколько лаконичных однострочных выражений (да, детка, это Scala!), несколько странных ошибок компилятора (о, нет, Scala, нет!), лёгкое сожаление о том, что вы написали такой запутанный код… И вдруг вы сталкиваетесь со странной проблемой: выражение for не компилируется. «Ничего страшного», — думаете вы: «сейчас гляну на StackOverflow», как вы это делаете ежедневно. Как все мы это делаем ежедневно.


                Но сегодня, похоже, неудачный день.


                Читать дальше →
                • +25
                • 9.7k
                • 8
              • 5 правил работы с суммами

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


                  Читать дальше →
                • «Паттерны» функционального программирования

                  • Translation
                  • Tutorial

                  Многие люди представляют функциональное программирование как нечто очень сложное и «наукоемкое», а представителей ФП-сообщества – эстетствующими философами, живущими в башне из слоновой кости.

                  До недавнего времени такой взгляд на вещи действительно был недалек от истины: говорим ФП, подразумеваем Хаскель и теорию категорий. В последнее время ситуация изменилась и функциональная парадигма набирает обороты в web-разработке, не без помощи F#, Scala и React. Попробуем взглянуть на «паттерны» функционального программирования, полезные для решения повседневных задач с точки зрения ООП – парадигмы.

                  ООП широко распространено в разработке прикладного ПО не одно десятилетие. Все мы знакомы с SOLID и GOF. Что будет их функциональным эквивалентом?.. Функции! Функциональное программирование просто «другое» и предлагает другие решения.


                  Читать дальше →
                • Scala коллекции: секреты и трюки

                  • Translation

                  Представляю вашему вниманию перевод статьи Павла Фатина Scala Collections Tips and Tricks. Павел работает в JetBrains и занимается разработкой Scala плагина для IntelliJ IDEA. Далее, повествование идет от лица автора.


                  В этой статье вы найдете упрощения и оптимизации, характерные для повседневного использования API Scala коллекций.


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


                  Этот список вдохновлен моими попытками разработать практичные инспекции для Scala коллекций, для Scala плагина IntelliJ. Сейчас мы внедряем эти инспекции, так что, используя Scala плагин в IDEA, вы автоматически выигрываете от статического анализа кода.


                  Тем не менее, эти рецепты ценны сами по себе. Они могут помочь вам углубить понимание стандартной библиотеки коллекций Scala и сделать ваш код быстрее и выразительнее.


                  Обновление:
                  Если вы испытываете тягу к приключениям,
                  вы можете узнать, как помочь в развитии IntelliJ плагина для Scala и попробовать свои силы в реализации, подобрав подходящую инспекцию.

                  Читать дальше →
                  • +17
                  • 17.2k
                  • 7
                • Советы начинающему скалисту

                    Часть 1. Функциональная


                    Эта статья (если быть до конца честным — набор заметок) посвящена ошибкам, которые совершают новички, ступая на путь Scala: не только джуниоры, но и умудренные опытом программисты с сединами в бороде. Многие из них до этого всегда работали лишь с императивными языками такими как C, C++ или Java, поэтому идиомы Scala оказываются для них непонятными и, более того, неочевидными. Поэтому я взял на себя смелость предостеречь новообращённых и рассказать им об их типичных ошибках — как совсем невинных, так и тех, что в мире Scala караются смертью.

                    Читать дальше →
                  • Шпаргалка с командами Docker

                    • Translation
                    Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.



                    Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
                    Читать дальше →