• Пришло время бесплатных сайтов

    Привет, %username%!




    Сегодня многие начинающие веб-разработчики делают большую ошибку, и не одну. Они что-нибудь сверстают, а потом покупают хостинг. Далее покупают домен. Регистрируют и подключают SSL-сертификат. Я, спасаясь от минус-кармы, просто расскажу как не тратить деньги на свои тестовые проекты.
    Читать дальше →
  • Разработка веб-сайта на паскале (backend)

      В этой статье я расскажу о том, зачем, почему и как я начал делать сайты на паскале: Delphi / FPC.
      Вероятно, «сайт на паскале» ассоццируется с чем-то вроде:

      writeln('Content-type: text/html');

      Но нет, всё гораздо интереснее! Впрочем, исходный код реального сайта (почти весь) доступен на GitHub.
      Читать дальше →
    • Весь Хабр в одной базе

      Добрый день. Прошло уже 2 года с момента написания последней статьи про парсинг Хабра, и некоторые моменты изменились.


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

      Читать дальше →
    • STM32 Часть 1: Основы

      Нельзя доверять коду, который вы не написали полностью сами. — Кен Томпсон
      Пожалуй, моя самая любимая цитата. Именно она и стала причиной по которой я решил нырнуть в самую глубь кроличьей норы. Свой путь в мир программирования я начал совсем недавно, прошло всего около месяца и я решил писать статьи для закрепления материала. Все началось с простой задачи, синхронизировать лампы в своей фото студии с помощью Ардуины. Задача была решена, но в фото студию я больше не заходил, времени нет. С того момента я решил основательно заняться программированием микроконтроллеров. Ардуина, хоть и привлекательна в своей простоте, как платформа мне не понравилась. Выбор пал на компанию ST и их популярную продукцию. В тот момент я еще не представлял в чем особо разница, но как типичный потребитель я сравнил скорость «процессора» и количество памяти, купил себе внушительную плату с дисплеем STM32F746NG — Discovery. Я пропущу моменты отчаяния и сразу перейду к делу.
      Читать дальше →
    • Загружаем и храним в Google Drive файлы любого размера бесплатно. Баг или Фича?

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

        Конечно, я сразу решил сообщить об этом в Google через программу BugHunter. Но, к моему сожалению, потратив неделю на общение со специалистами Google мне так и не удалось убедить их, что это баг. Сотрудник не смог воспроизвести этот баг и я получил ответ, что «это не баг, а фича» и меня отправили в RTFM. В конце концов Google просто закрыл тикет и перестал отвечать на мои письма.

        Так как переписка с Google зашла в тупик, я решил публично рассказать о этой «фиче» и, возможно, наконец привлечь внимание сотрудников Google к этой проблеме или хотя-бы понять, что я делаю не так. Ниже под катом история переписки с Google и proof of concept.
        Читать дальше →
      • Redux Toolkit как средство эффективной Redux-разработки

          image
          В настоящее время разработка львиной доли веб-приложений, основанных на фреймворке React, ведется с использованием библиотеки Redux. Данная библиотека является самой популярной реализацией FLUX-архитектуры и, несмотря на ряд очевидных преимуществ, имеет весьма существенные недостатки, такие как:


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

          Для устранения этих недостатков разработчики Redux представили библиотеку Redux Toolkit. Этот инструмент представляет собой набор практических решений и методов, предназначенных для упрощения разработки приложений с использованием Redux. Разработчики данной библиотеки преследовали цель упростить типичные случаи использования Redux. Данный инструмент не является универсальным решением в каждом из возможных случаев использования Redux, но позволяет упростить тот код, который требуется написать разработчику.


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

          Читать дальше →
        • Прямой VPN-туннель между компьютерами через NAT'ы провайдеров (без VPS, с помощью STUN-сервера и Яндекс.диска)

            Продолжение статьи о том, как мне удалось организовать прямой VPN-туннель между двумя компьютерами находящимися за NAT'ами провайдеров. В прошлой статье описывался процесс организации соединения с помощью третьей стороны — посредника (арендованный VPS выполняющий роль, что-то типа STUN-сервера и передатчика данных узлов для соединения). В этой статье я расскажу как обошелся без VPS, но посредники остались и ими были STUN-сервер и Яндекс.Диск…

            Читать дальше →
          • Рецепт разработки бота под Telegram



              Добрый день, уважаемые читатели Хабрахабра!

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

              Статья может быть интересна как новичкам в программировании — увидеть, сколько препятствий стоят на пути у готового продукта, так и более продвинутым специалистам — где-то посмеяться, где-то поплакать, где-то написать комментарий «жизненно».

              Преамбула


              И так, что же может сделать один программист за 4 дня?
              Читать дальше →
            • Y-метод — действительно простой способ собрать кубик Рубика

              • Tutorial

              Введение


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

              • Перевод

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



              На момент написания этой статьи запрос «программирование какой язык изучать первым» выдаёт 517 миллионов поисковых результатов. Каждый из этих сайтов будет нахваливать один определённый язык, и 90% из них, в конечном итоге, порекомендуют Python или JavaScript.


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


              Просто знать как кодить ещё не достаточно. Рынок настолько насыщен выпускниками институтов и курсов, что позиция джуниора практически перестала существовать*. Чтобы преуспеть в сегодняшнем мире, вы должны и кодить, и иметь продвинутое фундаментальное логическое мышление.


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


              Мой первый урок информатики


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


              «Сегодня мы будем дегустировать самостоятельно приготовленные пломбиры. Но с одним условием: вы должны составить список конкретных инструкций, как приготовить десерт, а я — буду им следовать»

              Читать дальше →
            • Ломаем простую «крякми» при помощи Ghidra — Часть 1

              О том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Кстати, один из аспектов Гидры (разработку плагинов к ней) уже освещался на Хабре (отличная статья!) Я же дам только основные ссылки:


              Итак, Гидра — это бесплатный кроссплатформенный интерактивный дизассемблер и декомпилятор с модульной структурой, с поддержкой почти всех основных архитектур ЦПУ и гибким графическим интерфейсом для работы с дизассемблированным кодом, памятью, восстановленным (декомпилированным) кодом, отладочными символами и многое-многое другое.

              Давайте попробуем уже что-нибудь сломать этой Гидрой!
              Читать дальше →
            • Принципы построения REST JSON API

              • Tutorial

              Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


              Зачем


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


              • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
              • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
              • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
              • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
              Читать дальше →
            • HL 2018. Конспект доклада «Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем»

                Passwords are like underwear


                Привет, Хабр! Меня зовут Ахмадеев Ринат, я Sr. PHP developer.


                Представляю вашему вниманию конспект доклада Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем от Алексея Ермишкина из Virgil Security с HighLoad++ 2018.


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


                В докладе рассматриваются способы защиты паролей начиная от хешей и заканчивая более современными подходами, такими как Facebook's password Onion, Sphinx и Pythia. В самом конце рассматривается новый Simple Password-Hardened Encryption Services (PHE).


                Мне так понравился доклад, что я подготовил конспект. Всем рекомендую к ознакомлению.

                Читать дальше →
              • Делаем современное веб-приложение с нуля

                • Tutorial
                Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

                В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


                Что мы покроем:

                • настройка dev-окружения в docker-compose.
                • создание бэкенда на Flask.
                • создание фронтенда на Express.
                • сборка JS с помощью Webpack.
                • React, Redux и server side rendering.
                • очереди задач с RQ.
                Читать дальше →
              • Как подступиться к fullstack-разработке сегодня, если ты проспал десять лет



                Привет, Хабр! Несколько месяцев назад у меня остро встал вопрос смены профиля деятельности и я обнаружил, что для претендента на вакансию web-разработчика сейчас недостаточно навыков десятилетней давности (какая неожиданность!). Пришлось срочно актуализировать свои знания. Заодно я решил составить шпаргалку с описанием большинства современных технологий, чтобы в случае чего кидать жаждущим новых знаний линк на эту статью, да и самому не забывать.
                Читать дальше →
              • «Что я узнала, пожив без искусственного света»

                • Перевод

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




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

                Многие из нас не добирают до 7-9 рекомендованных часов сна, необходимых каждую ночь, и с трудом встают по утрам – особенно, в будние дни. Но страдает не только длительность сна. С момента открытия способности света (в особенности, голубого света, испускаемого такими устройствами, как смартфоны) влиять на наши биологические часы, накапливается всё больше свидетельств того, что взаимодействие даже с небольшим количеством света вечером или ночью нарушает качество нашего сна.

                Что случится, если мы выключим свет? Улучшит ли это наш сон, или принесёт ещё какую-то пользу? Насколько это будет сложно сделать в современном городе?
                Читать дальше →
              • Настолько ли стар твой Windows?

                Как показывает бурное обсуждение последних статей на Хабре, посвященных Windows системам, большое количество продвинутых и не очень пользователей отдает свое предпочтение «устаревшей» Windows 7 и не торопится переходить на Windows 10. Причины бывают очень разные — от недовольства политикой конфиденциальности и большим объемом телеметрии до банальной привычки и нежелания идти на поводу у маркетологов Microsoft.

                В данной статье я хочу рассмотреть случай, когда Windows 7, да и более ранние версии, требуются разработчику для качественного решения своих рабочих обязанностей. Не секрет, что в корпоративном секторе доля Windows 7 все еще очень велика, а так как компания Microsoft продлила ее расширенную поддержку до 2023 года, в ближайшее время вряд ли что-то кардинально изменится. И это не говоря о том, что встречаются и совсем древние системы с Server 2003 и 2008, на которых работает какое-то старое, но крайне нужное ПО, портировать которое никто не берется исходя из принципа «работает – не трогай». Однако, обновить Вашу «устаревшую» операционную систему можно гораздо быстрее и проще, чем кажется.
                Читать дальше →
              • Анализ SSL/TLS трафика в Wireshark

                • Tutorial


                Как скрыть от посторонних конфиденциальную информацию?
                Самое простое – зашифровать.
                В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
                Солдат спит, служба идет.
                Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
                Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
                Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

                Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
                Попробуем разобраться.

                Читать дальше →
              • Как защитить своего ребенка от мусора на YouTube и сделать кастомный плеер с белым списком каналов

                  Можно долго спорить на тему, стоит ли давать маленьким детям доступ к планшетам и смартфонам. Кто-то говорит что это вредно для глаз или для психики, кто-то — что родителям надо бы самим играть и читать с детьми, а не пытаться отгородится от них гаджетами. Что характерно, чаще всего такое говорят люди, у которых своих детей нет. И которые не знают, какое это блаженство — когда чадо замолкает хотя бы на полчаса, перестает крушить все вокруг, спокойненько лежит на диване и смотрит мультики. Есть и еще один аргумент — дети чутко все повторяют за родителями, если родители непрерывно сидят уткнувшись в телефон, то очень сложно объяснить детям, почему родителям можно, а им — нет.



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


                  К сожалению, я очень быстро уяснил, что детский ютуб — это просто АДОВЫЙ ТРЕШ. Про это даже на Хабре уже был перевод статьи. Детские каналы — это какие-то бездонные клоаки, наполненные вырвиглазными видео типа "разворачиваем сто киндер-сюрпризов", "дурацкие стишки с убогой 3д графикой под крикливую музыку" и "гоняем машинки в Beam NG под дурацкие комментарии". По какой-то причине все это является очень привлекательным для маленьких детей, которые бросаются кликать на такие видео как только увидят их в рекомендованных. А YouTube не позволяет управлять рекомендациями. Даже дав своему сыну планшет с включенными "нормальными" мультиками, я уже через пару минут наблюдаю, как он за два клика по рекомендациям опять находит эти чертовы шоколадные яйца и снова начинает в них залипать.


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

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