• Python: 18 задач на вывод символов по заданному шаблону

    • Перевод
    Подготовка к техническому собеседованию по Python — нелёгкая задача. На таком собеседовании вам, вполне возможно, встретятся задачи на вывод символов по заданным шаблонам. Если вы хотите научиться решать такие задачи — вам может пригодиться подборка способов их решения, приведённая в этом материале.



    Здесь продемонстрировано 18 примеров кода. Начинающие программисты вполне могут проработать всё по порядку, а опытные могут разобраться именно с тем, что им нужно. Главное — понять, как устроен тот или иной пример. Отсутствие чёткого понимания того, что происходит в программах, способно сыграть злую шутку с тем, кто, например, заучив фрагмент кода и воспроизведя его на собеседовании, попытается объяснить то, как именно этот код работает. А тех, кто проводит собеседование, часто интересуют именно такие вот разъяснения.
    Читать дальше →
  • Уехать нельзя остаться: ключевые вопросы о карьере за рубежом


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

      Алина училась в НГУ, СПбГУ, а также в Hong Kong University of Science and Technology. Работала и жила в 7 странах. Занимается запусками новых продуктов для создателей контента в лондонском офисе YouTube, а также помогает с карьерными вопросами в tech разработчикам, менеджерам продукта, дизайнерам и другим специалистам.

      Делимся с вами расшифровкой эфира и записью.
      Читать дальше →
    • Анонс. Уехать нельзя остаться: ключевые вопросы о карьере за рубежом


        Завтра, в 20:00 в наших соцсетях выступит Алина Вербенчук, основательница Verbetcetera.

        Алина училась в НГУ, СПбГУ, а также в Hong Kong University of Science and Technology. Работала и жила в 7 странах. Занимается запусками новых продуктов для создателей контента в лондонском офисе YouTube, а также помогает с карьерными вопросами в tech разработчикам, менеджерам продукта, дизайнерам и другим специалистам.
        Читать дальше →
      • Поиск секретных данных в исходном коде

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

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



        По мере того, как микросервисные архитектуры и приложения, построенные вокруг неких API, получают всё более и более широкое распространение, разработчики часто нуждаются в программных механизмах обмена идентификационными данными и другими секретными сведениями. А это значит, что программисты, работая с подобными данными, иногда могут совершать ошибки.
        Читать дальше →
        • +29
        • 4,5k
        • 3
      • Чат-бот для электронной коммерции

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



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

        Бот, о котором пойдёт речь в этом материале, создан с использованием Java и Apache OpenNLP. Здесь мы поговорим о том, как боты разбирают сообщения пользователей, удаляя из них всё ненужное.
        Читать дальше →
        • +25
        • 3,3k
        • 5
      • Ограничения window.close()

        • Перевод


        Порой веб-разработчики с удивлением обнаруживают, что команда windows.close() не всегда закрывает окно браузера. А в консоли инструментов разработчика браузера при этом выводится сообщение, указывающее на то, что скрипты могут закрывать только окна, которые ими же и открыты:

        Scripts may close only the windows that were opened by them.
        
        Читать дальше →
        • +32
        • 5,3k
        • 1
      • Заметки о Unix: одновременное редактирование нескольких файлов в Vim

        • Перевод
        Недавно мы завершили перевод последней нашей машины на новый клиент для Let’s Encrypt. В ходе работы нужно было поменять пути к выгружаемым TLS-сертификатам во всех конфигурационных файлах, где они использовались. На многих компьютерах был лишь один конфигурационный файл, но на некоторых из наших Apache-серверов пути к TLS-сертификатам имеются во множестве файлов. Поэтому я и заинтересовался вопросом о том, как, пользуясь Vim, одновременно вносить одни и те же изменения в несколько файлов. Оказалось, что Vim поддерживает такую возможность уже очень давно, причём сделать это можно несколькими способами. Некоторые из этих способов основаны на том, что я назвал бы странностью Vim. Кто-то, возможно, назовёт это архитектурной особенностью данного редактора.


        Читать дальше →
        • +32
        • 4,9k
        • 1
      • Система удалённого мониторинга рабочих мест на базе 360-градусной камеры и Raspberry Pi

        • Перевод
        • Tutorial
        Я создал прототип системы удалённого мониторинга рабочих мест. Эта система позволяет организациям, адаптирующимся к ограничениям, связанным с COVID-19, осуществлять наблюдение за сотрудниками и проводить виртуальные инспекции рабочих мест.

        Система, о которой я хочу рассказать, представляет собой роботизированную панорамную камеру. Проект основан на Raspberry Pi. Здесь, ради простоты, используются панорамные фотографии, а не видеозаписи или потоковая передача сигнала. Опыт, полученный в ходе работы с сотнями компаний, использующих камеры с обзором в 360 градусов (эти компании, в целом, провели миллионы виртуальных проверок сотрудников), и анализ рынка, подсказывают мне, что сейчас, в начале 2021 года, чаще всего встречаются именно решения, основанные на панорамных фотографиях.



        Я, исследуя ситуацию, пользовался материалами форума, посвящённого использованию API Ricoh Theta, и тем, что удалось узнать при личном общении с представителями бизнеса в ходе онлайн-встреч с ними.
        Читать дальше →
      • 7 полезных HTML-атрибутов, о которых вы, возможно, не знаете

        • Перевод
        Веб-разработчик просто обязан хорошо знать HTML и уметь им пользоваться. Тот, кто не ориентируется в HTML, просто не может называться веб-разработчиком. Ведь каждый сайт в интернете создан с применением HTML. Этот язык разметки обладает массой ценных возможностей. В частности, HTML-элементам можно назначать атрибуты, применение которых позволяет расширять возможности элементов.



        Некоторые атрибуты общеизвестны, а вот о некоторых кое-кто, возможно, и не знает. Сегодня мы поговорим о таких вот малоизвестных HTML-атрибутах.
        Читать дальше →
        • +39
        • 12,5k
        • 3
      • Шесть пасхалок GitHub

        • Перевод
        В недрах кода GitHub скрыто немало пасхалок. Здесь мы поговорим о некоторых из них.



        Кстати, вы знали о том, что фразу «Easter egg» («пасхальное яйцо», в просторечии — «пасхалка») придумал в 1979 году Стив Райт — директор по разработке программного обеспечения Atari? Если вы смотрели фильм «Первому игроку приготовиться» — значит вам всё уже должно быть понятно. Вот фрагмент фильма, где игрок находит первую в мире пасхалку, скрытую в классической игре Adventure.
        Читать дальше →
        • +40
        • 11,8k
        • 9
      • С днём бэкапа! Но не бэкапом единым…

          31 марта — это такой Хэллоуин безопасников: по легенде именно в этот день всякая нечисть вылезает из даркнета и бомбит атаками ИТ-инфраструктуру компаний. Кто-то нацеливается на компании покруче и ищет славы, кто-то тихо крысит коммерческую информацию, чтобы продать её подороже… И тут день бы выстоять да ночь продержаться. Но это, конечно, чистой воды сказка и миф: на самом деле угрозы информационной безопасности существуют не в последний день марта, а в режиме 24/7/365. Но многим почему-то пофиг: у них есть подушки безопасности в автомобиле, они пристёгивают ремень, надевают шлем на картинге, страхуют жилище, ставят сигнализацию на квартиру и автомобиль, надевают чехол на дорогой телефон, но на работе упорно пишут пароли на стикерах, жмотятся на средства безопасности и наивно полагают, что уж их компания-то точно никому не сдалась. 

          Ребята, чьё второе имя риск и опасность, этот пост для вас.

          Читать дальше →
          • +32
          • 5,6k
          • 7
        • О завершении работы Node.js-процессов

          • Перевод
          Node.js-процессы завершают работу по разным причинам. При этом в некоторых случаях «смерть» процесса можно предотвратить. Например — в ситуации, когда причиной остановки процесса может стать необработанная ошибка. А вот иногда с остановкой процесса ничего поделать нельзя. Например — если её причина кроется в нехватке памяти. В Node.js существует глобальный объект process, являющийся экземпляром класса EventEmitter. Этот объект, при нормальном завершении процесса, генерирует событие exit. Код приложения может прослушивать это событие и, при его возникновении, выполнять, в синхронном режиме, некие операции по освобождению ресурсов.

          Существует несколько способов намеренного завершения работы процесса. Среди них — следующие:

          Операция Пример
          Ручной выход из процесса
          process.exit(1)
          Неперехваченная ошибка
          throw new Error()
          Необработанное отклонение промиса
          Promise.reject()
          Проигнорированное событие error
          EventEmitter#emit('error')
          Необработанный сигнал
          $ kill <PROCESS_ID>

          Многие из этих операций часто выполняются случайно, например — это касается неперехваченных ошибок и необработанных исключений. Но одна из них, с которой мы начнём разбор причин завершения Node.js-процессов, была создана с целью дать разработчику возможность вручную завершать процессы.
          Читать дальше →
          • +34
          • 4,8k
          • 2
        • Решайтесь на великие поступки — ASCII

          • Перевод
          ASCII — это самый простой из существующих коммуникационных протоколов и единственный формат данных, который может декодировать любая из существующих компьютерных систем.

          Момент посадки на Марс ровера NASA Perseverance (Настойчивость) стал историческим событием. Человечество впервые увидело нечто подобное. Многие люди с замиранием сердца наблюдали за происходящим. «Настойчивость» многие годы будет служить для нас источником вдохновения.

          Каждое изображение, поступающее с Марса после успешной посадки ровера, содержало в себе какой-то сюрприз. Одним из таких сюрпризов стало сообщение, зашифрованное в раскраске парашюта марсохода.

          Интернет-ищейки заявили о том, что им удалось расшифровать скрытое сообщение, нанесённое на купол парашюта, который помог роверу безопасно приземлиться на поверхность Красной планеты. Как оказалось, фраза «Dare Mighty Things» («Решайтесь на великие поступки») — девиз лаборатории реактивного движения NASA (Jet Propulsion Laboratory) — была закодирована на парашюте с использованием красных и белых полос, представляющих двоичный компьютерный код. Этот код, что неудивительно, можно, используя некоторые вычисления, перевести в кодировку ASCII и, в итоге, понять то, что в нём скрыто.


          Ровер сделал этот снимок парашюта в процессе посадки на поверхность Марса

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

          Эта история разлетелась по всему миру, благодаря ей кодировка ASCII, о которой говорят не особенно часто, оказалась у всех на слуху.

          В этом материале мы поговорим об ASCII, немного коснёмся истории этой кодировки, разберём пример её применения в программном коде. Прочитав эту статью, вы поймёте, что очень сложно не полюбить ASCII, кое-что о ней узнав.
          Читать дальше →
          • +27
          • 5,9k
          • 7
        • Заметки о Unix: проблема iowait и многопроцессорные системы

          • Перевод
          В разных Unix-системах уже давно имеется показатель iowait. Я, правда, не могу найти систему, в которой этот показатель появился. Это — не 4.x BSD, поэтому iowait, возможно, добрался до современных систем через System V и sar. Традиционным, стандартным определением iowait является время, которое система проводит в бездействии, когда в ней имеется хотя бы один процесс, ожидающий окончания операции дискового ввода-вывода. Вместо того чтобы относить это время к категории idle (простой процессора) (когда процессорное время делится на три категории — user, system и idle), в некоторых Unix-системах это время стали относить к новой категории — iowait.


          Читать дальше →
          • +15
          • 3,6k
          • 4
        • 14 полезных инструментов, ускоряющих и упрощающих веб-разработку

          • Перевод
          Я занимаюсь разработкой сайтов уже много лет и не верю в то, что если буду держать в секрете используемые мной инструменты, это даст мне серьёзное преимущество на рынке труда.

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



          Здесь я расскажу о 14 инструментах, которые помогают мне в решении моих рабочих задач.
          Читать дальше →
        • YouTube-проигрыватель сверхвысокого разрешения на Raspberry Pi

          • Перевод
          Иногда на стандартном компьютерном экране с разрешением 1920x1080 просто не хватает пикселей для того чтобы разглядеть все детали роликов с YouTube. Эта проблема коснулась и меня. Когда это случилось — я создал устройство, которое позволяет смотреть YouTube со сверхвысоким разрешением.


          Читать дальше →
          • +14
          • 12,4k
          • 5
        • Заметки о Unix: работа с GNU grep и обязательное применение опции -a (--text)

          • Перевод


          Однажды я заметил, что один из моих скриптов, сканирующих почтовые журналы, не выдал сообщение об одной записи, о наличии которой в журнале мне было известно (о ней меня оповестил другой скрипт). Работа скрипта начинается с использования grep для фильтрации записей, которые меня не интересуют:

          grep -hv 'a specific pattern' "$@" | exigrep '...' | [...]
          

          Я, столкнувшись этим, чего только себе не напридумывал.
          Читать дальше →
          • +32
          • 6,2k
          • 3
        • Интеллектуальный термометр

          • Перевод
          Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать об устройстве AI Fever Screening Thermometer, разработкой которого он занимался около двух месяцев. Оно, с использованием термальной (инфракрасной) и обычной (цветной) камер, позволяет решать следующие задачи:

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


          Обнаружение лица и измерение температуры


          Термометр, смонтированный у входа в дом
          Читать дальше →
        • Стройный пластиковый корпус ZX81 за 40 лет ничуть не располнел

          • Перевод
          «Вы удивитесь тому, как много можно сделать с помощью персонального компьютера»


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

          ZX81, выпущенный 5 марта 1981 года, был преемником компьютера 1980-го года Z80 и, как и его предшественник, был основан на процессоре Z80. В обеих машинах, кроме того, было установлено по 1 Кб оперативной памяти, и той и другой для вывода монохромной картинки требовался телевизор с антенным (UHF) входом.


          Дизайнер Рик Дикинсон выложил этот набросок на Flickr, говоря о том, что это было то, «как я представлял себе ZX81 — набор блоков расширения одинаковой ширины, созданных, в общих чертах, с применением модульного подхода»
          Читать дальше →
          • +40
          • 7,7k
          • 8
        • Заметки о Unix: исследование munmap() на нулевой странице и на свободном адресном пространстве

          • Перевод
          Однажды на Fediverse мне попался интересный вопрос о munmap():

          Чем именно занимается munmap() в Linux если адрес установлен в 0? В Linux подобный вызов каким-то образом срабатывает, а вот во FreeBSD — нет. Полагаю, что всё дело — в различной семантике команд, но не могу найти никаких пояснений по поводу такого поведения munmap().

          (Там было ещё это дополнение, а тут находится краткая версия ответа)



          Когда я увидел этот вопрос, то я реально удивился тому, что подобный вызов munmap() в Linux работоспособен, так как я ожидал, что он даст сбой на любом адресном пространстве, которое не входит в состав памяти, выделенной некоему процессу. Нулевая страница в Linux (да и в любой вменяемой системе), определённо, не входит в состав распределённой памяти. Поэтому предлагаю взглянуть на описание munmap() из документации SUS, выдержку из которого я привожу ниже.
          Читать дальше →
          • +22
          • 2,9k
          • 2