• «Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

      «Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
      — к/ф «Трасса 60»



      Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

      Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

      Содержание


      Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
      Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
      Глава 3 What You Can't SayО чем вы не можете сказать.
      Глава 4 Good Bad AttitudeСлово «хакер».
      Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
      Глава 6 How to Make WealthКак стать богатым.
      Глава 7 Mind the GapОсторожно, разрыв.
      Глава 8 A Plan for SpamПлан для спама.
      Глава 9 Taste for MakersВкус — созидателям.
      Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
      Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
      Глава 12 Beating the AveragesLisp: побеждая посредственность.
      Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
      Глава 14 The Dream LanguageБыть Популярным, часть 2.
      Глава 15 Design and ResearchПроектирование и исследование.

      Под катом хронология переводов и благодарности.
      Читать дальше →
    • ES5 руководство по JavaScript


        JavaScript quality guide


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

        От переводчика


        Всем привет, с вами Максим Иванов, и сегодня мы поговорим о правилах оформления кода на языке JavaScript. Николя Бэвакуа (Nicolás Bevacqua), автор книги «Дизайн JavaScript-приложений» (JavaScript Application Design), разработчик из Аргентины, опубликовал данное руководство достаточно давно, первая запись появилась еще в 2014 году, многое написано по стандарту ES5, однако, в наши дни это все равно актуально, сейчас, когда ES6 еще нигде полноценно не работает без babel и прочих транспайлеров. Хотя мы видим прогресс в топовых десктопных браузерах (Google Crhome, Firefox), где уже реализовано 70-90% задуманного, мы видим, что они стремятся поддерживать новый стандарт, но, к сожалению, ещё нет браузеров, которые полностью могли бы поддерживать ES6. К слову, я буду очень рад вашим комментариям. В общем, удачи и давайте начнем.
        Читать дальше →
      • Полезные трюки PostgreSQL



          В мануале есть всё. Но чтобы его целиком прочитать и осознать, можно потратить годы. Поэтому один из самых эффективных методов обучения новым возможностям Postgres — это посмотреть, как делают коллеги. На конкретных примерах. Эта статья может быть интересна тем, кто хочет глубже использовать возможности postgres или рассматривает переход на эту СУБД.
          Читать дальше →
        • Аутентифицируем запросы в микросервисном приложении с помощью nginx и JWT

          Стараясь оставаться в тренде и следуя веяниям моды веб разработки, последнее веб приложение я решил реализовать как набор микросервисов на ruby плюс “толстый” клиент на ember. Одна из первых проблем, вставших перед мной была связана с аутентификацией запросов. Если в классическом, монолитном, приложении все просто, используем куки, сессии, подключаем какой-нибудь devise, то тут все как в первый раз.

          Архитектура


          За базу я выбрал JWT — Json Web Token. Это открытый стандарт RFC 7519 для представления заявок (claims) между двумя участниками. Он представляет из себя структуру вида: Header.Payload.Signature, где заголовок и payload это запакованые в base64 json хэши. Здесь стоит обратить внимание на payload. Он может содержать в себе все что угодно, в принципе это может быть и просто client_id и какая-то другая информация о пользователе, но это не очень хорошая идея, лучше передавать там только ключ идентификатор, а сами данные хранить где-то в другом месте. В качестве хранилища данных можно использовать что угодно, но мне показалось, что redis будет оптимальным, тем более что он пригодится и для других задач. Еще один важный момент — каким ключем мы будем подписывать наш токен. Самый простой вариант использовать один shared key, но это явно не самый безопасный вариант. Коль скоро мы храним данные сессии в redis, ничто не мешает нам генерировать уникальный ключ для каждого токена и хранить его там же.

          Понятно, что генерировать токены будет сервис отвечающий за авторизацию, но кто и как будет их проверять? В принципе можно проверку затолкать в каждый микросервис, но это противоречит идеи их максимального разделения. Каждый сервис должен будет содержать логику обработки и проверки токенов да еще и иметь доступ к redis. Нет, наш цель получить архитектуру в которой все запросы приходящие в конечные сервисы уже авторизованы и несут в себе данные о пользователе (например в каком-нибудь специальном заголовке).
          Читать дальше →
        • Визуализация concurrency в Go с WebGL

            Одной из самых сильных сторон языка программирования Go является встроенная поддержка concurrency, основанная на труде Тони Хоара «Communicating Sequential Processes». Go создан для удобной работы с многопоточным программированием и позволяет очень легко строить довольно сложные concurrent-программы. Но задумывались ли вы когда-нибудь, как выглядят различные паттерны concurrency визуально?

            Конечно, задумывались. Все мы, так или иначе, мыслим визуальными образами. Если я попрошу вас о чём-то, что включает числа «от 1 до 100», вы мгновенно их «увидите» в своей голове в той или иной форме, вероятно даже не отдавая себе в этом отчёт. Я, к примеру, ряд от 1 до 100 вижу как линия с числами уходящая от меня, поворачивающая на 90 градусов вправо на числе 20 и продолжающая до 1000+. И, покопавшись в памяти, я вспоминаю, что в самом первом детском саду в раздевалке вдоль стены были написаны номерки, и число 20 было как-раз в углу. У вас же, вероятно, какое-то свое представление. Или вот, другой частый пример — представьте круглый год и 4 сезона года — кто-то их видит как квадрат, каждая грань которого принадлежит сезону, кто-то — как круг, кто-то ещё как-то.

            Так или иначе, позвольте мне показать мою попытку визуализировать основные паттерны concurrency с помощью Go и WebGL. Эти интерактивные визуализации более-менее отражают то, как я вижу это в своей голове. Интересно будет услышать, насколько это отличается от визуализаций читателей.

            Читать дальше →
          • Angular 2 против React: И будет кровь

              (перевод, оригинал статьи)

              Angular 2 достиг беты и имеет все шансы сорвать лавры топового фреймворка в 2016 году. Время разборок. Давайте посмотрим, что он может противопоставить React, душечке из 2015 года.

              Disclaimer: Я работал с первым Angular, но переключился на React в 2015 году. Я опубликовал Полный курс React и Flux. Так что да, я предвзят. Но я буду атаковать обе стороны.

              Хорошо, пора начинать. И будет кровь.


              Читать дальше →
            • Ресурсы для дизайнеров и front-end-разработчиков

              • Translation
              Ниже представлена подборка инструментов для дизайнеров и front-end-разработчиков. Мы настоятельно рекомендуем вам просмотреть их все. Надеемся, что вы найдете для себя что-то полезное.

              Читать дальше →
              • +19
              • 60.5k
              • 7
            • 400 потрясающих бесплатных сервисов

              • Translation

              Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

              И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



              A. Бесплатные веб-сайты

              • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
              • Bootswatch: Бесплатные темы для Bootstrap.
              • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
              • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
              • Strikingly: Конструктор веб-сайтов.
              • Layers: Создание сайтов на WordPress (new).
              • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
              • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
              Читать дальше →
            • Защищенные социальные сети — миф или реальность?

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

                image

                Идея этого проекта у меня появилась после ознакомления с современным положением дел в области шифрования. Я столкнулся в двумя проблемами.

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

                С другой стороны всем известно, что чем выше уровень защиты, тем менее приятнее пользоваться таким продуктом. Например, что бы подписать и зашифровать емайлы при помощи PGP, требует специальный софт и умение. Используя Telegram, ты обязан устанавливать их мессенджер и светить свою симку и к тому же режим секретного чата, только с одним пользователем, группового режима нет. Также сменив устройство, вы уже не посмотрите, о чем вы чатились ранее в секретом чате.
                Читать дальше →
              • Памятка евангелиста PostgreSQL: критикуем MySQL грамотно

                image

                Привет, Хабр! Эта публикация — попытка развеять некоторые популярные мифы и легенды о MySQL. Я не ошибся с хабом, так как поводом для написания послужила публикация varanio Возможности PostgreSQL, которых нет в MySQL, и наоборот отсюда же. Сама публикация в части критики MySQL хоть и неидеальна, но вполне корректна, а вот комментарии к ней наводят на грустные размышления.

                Вообще говоря, я собирался написать публикацию о возможностях MySQL, которые не реализованы или реализованы в PostgreSQL хуже. Но для того, чтобы не мешать много тем в одну публикацию, и учитывая довольно нелёгкую работу по сравнению того, что я знаю очень хорошо (MySQL) с тем, что я знаю очень плохо (PostgreSQL), такую публикацию я решил отложить на потом и для начала ответить сразу на многие комментарии из публикации varanio.
                Читать дальше →
              • Развертывание кластера Postgres-xl для чайников

                Здравствуйте. Хочу поделиться с хабровчанами своим опытом развертывания кластера Postgres-xl в виде мини-инструкции для «чайников». Статей и мануалов на тему развертывания кластера postgres-xl не то чтобы много, но достаточно. И в них всех есть пару существенных недостатков на взгляд такого человека как я, который никогда прежде не занимался кластеризацией и тем более никогда прежде не работал в линукс-подобных осях. Все статьи подобного рода написаны для людей уже более-менее знакомых с линуксом и развертыванием postgresql/postgres-xl на таком окружении.

                Поэтому и возникло желание поделится с остальными своими наработками. Далее я пошагово опишу весь процесс развертывания, от скачивания исходников postgres-xl и их компиляции, до конфигурирования кластера.

                Так как много статей «для опытных» уже написано, и на хабре тоже, я опущу описание самого Postgres-xl, его компонентов и их типов (ролей).
                Читать дальше →
              • Очень большой Postgres

                Так уж случилось, что последнее время приходилось заниматься оптимизацией и масштабированием различных систем. Одной из задач было масштабирование PostgreSQL. Как обычно происходит оптимизация БД? Наверное, в первую очередь смотрят на то, как правильно выбрать оптимальные настройки для работы и какие индексы можно создать. Если обойтись малой кровью не вышло, переходят к наращиванию мощностей сервера, выносу файлов журнала на отдельный диск, балансировке нагрузки, разбиению таблиц на партиции и к всякого рода рефакторингу и перепроектированию модели. И вот уже все идеально настроено, но наступает момент, когда всех этих телодвижения оказывается недостаточно. Что делать дальше? Горизонтальное масштабирование и шардинг данных.


                Читать дальше →
              • Опасности использования open-uri

                  OpenURI в руби это стандартная библиотека сильно упрощающая работу с URL так как она объединяет в себе Net:HTTP/HTTPS/FTP и представляет из себя всего лишь метод open. Насколько я знаю это самый популярный способ для скачивания файла, GET запроса или чтения данных.

                  Но на деле require "open-uri" патчит Kernel.open и вызывает разный код для разных аргументов, что может привести к удаленному выполнению кода или чтению любого файла на сервере!

                  open(params[:url]) это выполнение кода для url=|ls Все что начинается с | рассматривается как системный вызов.

                  open(params[:url]) if params[:url] =~ /^http:// не лучше для url=|touch n;\nhttp://url.com (сломанные регулярки могут привести к RCE, используйте \A\z).
                  Читать дальше →
                • Гид по заголовкам кэширования HTTP для начинающих

                  • Translation
                  В статье данные сведения по заголовкам кэширования (ЗК) для HTTP и соответствующее поведение сетей доставки контента (CDN). Если вам хочется разобраться, каким образом заголовки кэширования вписываются в современный веб, или вам просто интересно, о чём говорят ваши коллеги – эта статья для вас.

                  Если вы уже понимаете преимущества ЗК, и хотите расширить свои знания, я рекомендую вам обратиться к документации от W3.

                  Что могут ЗК сделать для вас?


                  Проще говоря, кэширование позволяет хранить веб-ресурсы на удалённых точках по пути от вашего сервера к пользовательскому браузеру. Браузер тоже хранит у себя кэш, чтобы клиенты не запрашивали у вас постоянно одни и те же ресурсы.

                  Настройки кэширования веб-трафика крайне важны для посещаемых сайтов. Если вы платите за трафик, получаете доход от электронной коммерции, или просто хотите поддерживать свою репутацию хорошего веб-разработчика, вам нужно разбираться в том, как работает кэширование.
                  Читать дальше →
                  • +30
                  • 56.9k
                  • 8
                • Как мы готовим React, Require и Backbone

                  Как следует из официальной документации, React.js — V из MVC, и, как правило, вместе с ним применяются другие решения, в данном случае — Backbone.js и Require.js. А еще Jasmine, Karma и Grunt. Сегодня я поделюсь наброском проекта с применением этих инструментов.

                  Ссылка для нетерпеливых.

                  Хотелки


                  • Прозрачная структура проекта;
                  • Автоматизация всей рутинной работы;
                  • Автоматизация тестирования;
                  • Модульность;
                  • Повторное использования кода;
                  • Производительность.

                  Интересно что из этого получилось?
                • Инкрементальный сборщик мусора в Ruby 2.2

                  • Translation
                  В этой статье рассматривается инкрементальный сборщик мусора (incremental GC), который был представлен в Ruby 2.2. Мы называем этот алгоритм RincGC. RincGC позволяет добиться более короткой паузы (GC pause time) по сравнению с Ruby 2.1.

                  Об авторе: Коичи Сасада (Koichi Sasada) работает в Heroku вместе с Nobu и Матц'ем над ядром ruby. Он написал YARV, сборщик мусора по поколениям (RgenGC) для Ruby 2.1, а также incremental GC для ruby 2.2 и данную статью.
                  Читать дальше →
                • Twitter-бот на основе цепей Маркова и фраз из сериалов



                    Просматривал форумы в поисках вопросов, которые задают python-программистам на собеседованиях и наткнулся на один очень замечательный. Вольно его процитирую: ”Попросили написать генератор бреда на основе марковской цепи n-го порядка”. “А ведь у меня ещё нет такого генератора!” — прокричал мой внутренний голос — “Скорей открывай sublime и пиши!” — продолжал он настойчиво. Что же, пришлось подчиниться.

                    А здесь я расскажу, как я его сделал.
                    И как же?
                  • Must-read книги за 2014 год по ИБ и программированию

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

                      Безопасность


                      Тактика хакера: практическое руководство по тестированию на проникновение (The Hacker Playbook: Practical Guide To Penetration Testing)




                      Книга написана в стиле планирования футбольной игры. Здесь подробно и пошагово разобраны проблемы и трудности, с которыми сталкиваются специалисты по безопасности, тестируя системы защиты. В частности, рассматриваются атаки на различные типы сетей, обход антивирусов и взлом систем безопасности. Автор книги — Питер Ким, специалист по IT-безопасности с многолетним опытом, CEO компании Secure Planet.
                      Читать дальше →
                    • Возникли сложности с аналитикой поведения пользователей? Встречайте руководство новичка по созданию эффективной воронки конверсии

                      • Translation
                      intro

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

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

                      Читать дальше →
                      • +9
                      • 13.1k
                      • 8
                    • Как продвигать свой бизнес в 2015 году с максимальной эффективностью? 10 маркетинговых предсказаний, о которых стоит знать! (часть 2)

                      • Translation
                      image

                      В первой части материала мы начали рассказ о том, как Нил Патель видит маркетинг образца 2015 года. Что ж, продолжим. Несмотря на то, что некоторые моменты не совсем соответствуют реалиям нашей страны, стоит быть в курсе мировых трендов и загодя начинать адаптироваться к ним, ведь все равно это придется делать!
                      Читать дальше →