• Макросы для питониста. Доклад Яндекса

      Как можно расширить синтаксис Python и добавить в него необходимые возможности? Прошлым летом на PyCon я постарался разобрать эту тему. Из доклада можно узнать, как устроены библиотеки pytest, macropy, patterns и как они добиваются таких интересных результатов. В конце есть пример кодогенерации с помощью макросов в HyLang — Lisp-образного языка, бегущего поверх Python.


      — Привет, ребята. Хочу в первую очередь поблагодарить организаторов PyCon. Я разработчик в Яндексе. Доклад будет совсем не про работу, а про экспериментальные вещи. Возможно, кого-то из вас они наведут на мысль, что в Python можно делать клевые штуки, о которых вы раньше даже не догадывались, не мыслили в эту сторону.
      Читать дальше →
      • +20
      • 5.9k
      • 8
    • Возможно, вам не нужен Svelte, чтобы уменьшить ваш JavaScript

        Сейчас популярно мнение, что текущие Javascript-фреймворки непомерно большие, а новый фреймворк Svelte очень компактный. Поэтому всем нужно переходить на него, и проблема размера JavaScript решится сама собой.


        Недавно вышла статья "Хороший ли выбор Svelte для реализации виджета?" с опытом реализации проекта с критичным размером бандла. Это отличный повод проверить обещания пиарщиков Svelte на реальном проекте.


        Давайте его проанализируем!

        Читать дальше →
      • Юлия → Iuliia. Всё о транслитерации

          Транслитерация


          Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.


          Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).


          И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

          Читать дальше →
        • Перевод Google JavaScript Style Guide

          Добрый день, товарищи разработчики!

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

          Читать дальше →
          • +17
          • 12.7k
          • 7
        • Telegraff: Kotlin DSL для Telegram

            Лого


            На Хабре тысячи статей про то, как сделать Телеграм-бота под разные языки программирования и платформы. Тема далеко не новая.


            Но Telegraff – лучший фреймворк для реализации Телеграм ботов и я это под катом докажу.

            А ну-ка
          • Мой любимый Git-коммит

            • Translation
            Прим. перев.: Эта публикация британского программиста, ставшая настоящим хитом в англоязычном интернете, ссылается на Git-коммит 6-летней давности. Он был зафиксирован в одном из открытых репозиториев Government Digital Service — службы, занимающейся развитием цифровых услуг в Великобритании и поддерживающей проект GOV.UK. Сам коммит интересен не столько изменениями в коде, сколько сопровождающим их описанием…


            Картинка из xkcd #1296

            Я обожаю описания коммитов в Git. При правильном применении их можно назвать одним из самых мощных инструментов по документированию эволюции кодовой базы за время ее существования. Свою точку зрения хочу проиллюстрировать на примере моего самого любимого описания.
            Читать дальше →
          • Литература на выходные: легкое чтение для технарей

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

              Читать дальше →
            • Рецепты Nginx: LDAP авторизация с капчей

              • Tutorial
              Для приготовления авторизации с капчей нам понадобится сам nginx и его плагины encrypted-session, form-input, ctpp2, echo, ldap, headers-more, auth_request, set-misc. (Я дал ссылки на свои форки, т.к. делал некоторые изменения, которые пока не удалось пропихнуть в оригинальные репозитории. Можно также воспользоваться готовым образом.)
              Читать дальше →
            • Руководство по реализации авто-возобновляемых подписок в iOS-приложениях

              • Tutorial

              image


              Всем привет! Меня зовут Денис, я разрабатываю Apphud – сервис по аналитике авто-возобновляемых подписок в iOS-приложениях.


              В данной статье я расскажу как настроить, реализовать и валидировать авто-возобновляемые подписки в iOS 12 и iOS 13. Бонусом расскажу о тонких моментах и подводных камнях, которые не все разработчики учитывают.

              Читать дальше →
              • +15
              • 6.6k
              • 9
            • Рисуем мультяшный взрыв за 180 строчек голого C++

              • Tutorial
              Неделю назад я опубликовал очередную главу из моего курса лекций по компьютерной графике; сегодня опять возвращаемся к трассировке лучей, но на сей раз пойдём самую чуточку дальше отрисовки тривиальных сфер. Фотореалистичность мне не нужна, для мультяшных целей подобный взрыв, как мне кажется, сойдёт.

              Как всегда, в нашем распоряжении только голый компилятор, никаких сторонних библитек использовать нельзя. Я не хочу заморачиваться с оконными менеджерами, обработкой мыши/клавиатуры и тому подобным. Результатом работы нашей программы будет простая картинка, сохранённая на диск. Я совершенно не гонюсь за скоростью/оптимизацией, моя цель — показать основные принципы.

              Итого, как в таких условиях нарисовать вот такую картинку за 180 строчек кода?


              Читать дальше →
            • Ошибка, которая научила меня дизайну, ориентированному на бизнес



                Несколько лет назад я работал на агентство, которое входит в состав международного рекламного холдинга. Моей задачей было помогать известной платежной системе продавать свои сервисы крупным российским банкам.
                Читать дальше →
              • OpenVPN c расширенной аутентификацией и авторизацией

                UPD 2020-07-03: Прошло несколько лет, ситуация сильно изменилась, и в первую очередь я бы сейчас смотрел на wireguard + yubikey. Но все это по-прежнему работает.


                В статье рассматривается настройка OpenVPN c дополнительными фичами:

                • сертификаты на токенах для первичной аутентификации (на примере Rutoken)
                • LDAP-бекенд для вторичной аутентификации (на примере ActiveDirectory)
                • фильтрация внутренних ресурсов, доступных для пользователяx (через iptables)

                Так же описана настройка клиентов под Linux, Windows и MacOS.
                Читать дальше →
                • +30
                • 23k
                • 9
              • Apple Wallet. Что это такое и как интегрировать в него свою карту

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


                  Что такое Wallet? Он позволяет держать в телефоне различного вида карты (билеты, скидочные карты и т.п.), облегчая жизнь пользователям продукта. Более того, есть возможность актуализировать информацию о карте посредством push-уведомлений, но это тема для отдельной статьи. Но если у вас есть карта/билет/абонемент, которые можно интегрировать в телефон, то для этого есть решение! Как это сделать – читайте ниже.

                  Читать дальше →
                • Drag & Drop в ваших iOS приложениях

                  • Tutorial


                  Механизм Drag & Drop, работающий в iOS 11 и iOS 12, — это способ графического асинхронного копирования или перемещения данных как внутри одного приложения, так и между разными приложениями. Хотя этой технологии лет 30, она стала в буквальном смысле «прорывной» технологией на iOS благодаря тому, что при перетаскивании чего-либо в iOS, multitouch позволяет свободно взаимодействовать с остальной частью системы и набирать данные для сброса из разных приложений.
                  Читать дальше →
                • Основы Redux (текстовый учебник, 2-е издание)

                  • Tutorial

                  Прошло 2.5 года после публикации первой версии подробного туториала по основам Redux. За это время gitbook насчитал 200 000+ уникальных посетителей.


                  redux cover


                  Под катом подробнее об учебнике и список изменений.

                  Читать дальше →
                  • +20
                  • 14.1k
                  • 8
                • Основы React (текстовый учебник, 2-е издание)

                  • Tutorial

                  Прошло 2.5 года после публикации первой версии подробного туториала по основам React. За это время gitbook насчитал 250 000+ уникальных посетителей.


                  book cover


                  Под катом подробнее об учебнике и список изменений.

                  Читать дальше →
                • Аудиогаджет специального назначения: ценная “вещь” для посольства США

                    Возможно, кто-то понял о чем пойдет речь из заголовка, для прочих поясню — этот пост посвящен эндовибратору Льва Термена, который также именуют “Златоуст” и “The Thing” (“вещь”, “нечто”). С этим устройством связан беспрецедентный случай в истории мировых разведок, когда посольство США в Москве безнаказанно прослушивалось на протяжении семи лет. При этом у американских служб технической безопасности не было возможности обнаружить “жучок”, так как последний не имел источника питания и представлял собой небольшую конструкцию из металла.


                    Читать дальше →
                  • SVG маски и вау-эффекты: о магии простыми словами



                      О существовании SVG знают все, кто занимается фронтендом. Этой технологии уже не один год, про нее уже не раз писали на хабре. Но есть один момент. Частенько на разных ресурсах, в том числе и на тостере, начинающие задают вопросы о создании определенного семейства анимаций на сайте и получают довольно странные ответы от “бывалых” разработчиков. Возникает ощущение, что в такие моменты все думают в контексте HTML+CSS+JS и просто забывают о существовании SVG, предлагая все рисовать на canvas и попутно давая обещания дать тому, кто это придумал, клавиатурой по голове. Но этот путь (рисование на canvas) зачастую слишком сложен относительно решаемой задачи. В предыдущей статье мы обсуждали идеи создания частичных вау-эффектов, а в этой поговорим о масках и посмотрим пару анимаций, которые с их помощью можно сделать.
                      Читать дальше →
                    • Создание модального компонента с помощью Vue.js

                      В этой статье вы узнаете, как с Vue.js создать переиспользуемый компонент модального окна с использованием анимированных переходов и слотов.

                      Определение структуры шаблона


                      Начнем с определения нашего шаблона. Нам понадобится div для заднего плана (тени), div для самого модального окна и некоторые элементы, для определения его структуры:

                      <template>
                        <div class="modal-backdrop">
                          <div class="modal">
                            <slot name="header">
                            </slot>
                      
                            <slot name="body">
                            </slot>
                      
                            <slot name="footer">
                            </slot>
                          </div>
                        </div>
                      </template>
                      

                      Обратите внимание на использование слотов? Мы могли бы использовать входные параметры (props) для создания заголовка (header), тела (body) и футера (footer), но использование слотов даст нам большую гибкость.

                      Слоты позволяют нам легко использовать одно и то же модальное окно с различными типами содержимого тела нашего компонента. Мы можем использовать модальное окно, чтобы показать простой текст, но мы можем захотеть повторно использовать то же модальное окно для вывода формы, чтобы отправить запрос. Хотя входящих параметров (props) обычно достаточно для создания компонента, предоставление HTML через входящий параметр потребует от нас использовать его через директиву v-html для рендеринга — что может привести к XSS-атакам.

                      Здесь мы используем именованные слоты, это дает возможность использовать более одного слота в одном компоненте.
                      Читать дальше →
                    • Emoji.prototype.length — рассказ об эмоциональных символах в Юникоде

                      Хабр довольно враждебно настроен к Эмодзи (здесь они просто не отображаются), считая их чем-то вроде «падонкаффского» языка. Не для серьёзных людей. Ведь и то и другое появилось примерно в одно время. И если «олбанский» йезыг быстро ушёл в небытие, то Эмодзи эволюционировали от простых точек с запятой и скобочек до полноправных символов в кодировке Юникод. Автор данной статьи предлагает посмотреть, что у этих маленьких сущностей «под капотом» (Здесь и далее курсивом — примечания переводчика).

                      EmojiFamilyHeader
                      Оригинальная статья написана для сайта Contentful Стефаном Джудисом (Twitter, GitHub).

                      Эмодзи – это основа текстового общения наших дней. Без этих маленьких символов, много бесед в чатах сегодня занчивались бы неловким молчанием или недопониманием. Я всё ещё помню старые добрые времена, когда СМС-ки были крутой штукой.

                      Предложение пообщаться в чате без смайликов скорее всего приведёт к сообщению «Ты что шутишь?». Все быстро поняли, что юмор и сарказм (кстати, нам бы не помешало быть менее саркастичными) не просто передать, используя лишь письменные знаки. В какой-то момент возник первый Эмодзи, и они быстро стали одним из фундаментальных компонентов любой беседы в текстовом формате.

                      Хоть я и использую Эмодзи каждый день, я никогда не задавался вопросом, как же они работают. Очевидно, что они каким-то образом связаны с Юникодом, но я и понятия не имел, что там творится под капотом. И мне, честно говоря, было всё равно.

                      Всё поменялось, когда я набрёл на твит Веса Боса (Wes Bos), в котором он показал несколько JavaScript-операций над строкой, содержащей семью Эмодзи.

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