Pull to refresh
13
0

Пользователь

Send message

Спаси котика из-под рояля

Reading time2 min
Views20K

Вашему другу нужна помощь. Точнее, не вашему, а гипотетическому. Или даже не другу, а котику… хотя котик же не настоящий… Чёрт, короче! Наверняка у многих из вас в жизни была такая бывшая, расставание с которой было как закрытие ипотеки: «Господи, ну наконец-то!». И вот всё наконец-то закончилось, осталось только забрать свой ноутбук с очень важным NFT-токеном гифки с танцующим котиком. Этот котик дорог вам как память и как произведение цифрового искусства. Но ипотека теперь уже бывшая устроила в отместку целое шоу: протерла ноутбук от пыли, приготовила всё, чтобы залить его жидким азотом и подвесила над ним… РОЯЛЬ.
Спасти котика

Выше облаков: а не построить ли сервер в космосе?

Reading time5 min
Views13K

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

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

Читать далее

Запуск тестов Selenium в Jenkins

Reading time10 min
Views21K
В наши дни понятие «DevOps» у всех на слуху. Это — организационный подход, широко используемый для ускорения разработки и развёртывания приложений. Организации внедряют у себя практики DevOps, так как они обещают дать тем, кто их использует, всё лучшее, что существует в мире разработки ПО, причём — на всех этапах работы — от планирования и тестирования, до развёртывания и мониторинга проектов. В реализации практик DevOps важную роль играют CI/CD-инструменты вроде Jenkins. А интеграция Jenkins с Selenium значительно облегчает процесс автоматизации Selenium-тестов.



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

Анонс. Как бросить нелюбимую работу и прочно войти в АЙТИ

Reading time1 min
Views6.1K

Завтра, 27 апреля в 15:00 в наших соцсетях выступит Николай Сладкий, один из создателей SamaraITCommunity.

Николай, Senior Serverless JavaScript Developer в Voximplant – обладает восьмилетним опытом работы с бек- и фронтендом, влюблен *nix- подобные системы, vim, чистый код, архитектурные подходы и open source, как лучшее, что случилось с человечеством.

Коля — один из создателей SamaraITCommunity (сильно причастен к появлению GrindConf, VolgaHack, подкастов SITCast” и “SITalk”), также он один из авторов проекта Джуность.


SSH, пользовательский режим, TCP/IP и WireGuard

Reading time9 min
Views12K
Тому, кто хостит приложение у провайдера наподобие Fly.io (далее — просто Fly), вполне может понадобиться подключиться к серверу, на котором работает это приложение, по SSH.

Но Fly — это вроде как белая ворона среди других подобных платформ. Наше железо работает в дата-центрах, разбросанных по всему миру. Наши серверы подключены к интернету через Anycast-сеть, а друг с другом они связаны с помощью WireGuard-сети. Мы берём у пользователей Docker-контейнеры и превращаем их в микровиртуальные машины Firecracker. И, когда мы только начали работать, мы поступали именно так для того чтобы дать нашим клиентам возможность запускать «пограничные приложения». Такие приложения обычно представляют собой сравнительно небольшие, самодостаточные фрагменты кода, которые весьма чувствительны к качеству работы сетей. Эти фрагменты кода, в результате, нужно запускать на серверах, расположенных как можно ближе к пользователям. В такой среде возможность подключения к серверу по SSH не так уж и важна.



Но теперь не все наши клиенты пользуются Fly по такой схеме. В наши дни в среде Fly можно без труда выполнять весь код, имеющий отношение к некоему приложению. Мы упростили процедуру запуска ансамбля сервисов в кластерной среде. Такие сервисы могут, используя защищённые каналы связи, взаимодействовать друг с другом, могут хранить данные на постоянной основе, могут, по WireGuard-сети, связываться со своими операторами. Если я продолжу рассказ о нашей системе в том же духе, то мне придётся дать ссылки на все материалы, которые мы написали за последние пару месяцев.

Но, в любом случае, нормальной поддержки SSH у нас не было.
Читать дальше →

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

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



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

Анонс. Уехать нельзя остаться: ключевые вопросы о карьере за рубежом

Reading time1 min
Views4.6K

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

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

Заметки о Unix: проблема iowait и многопроцессорные системы

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


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

Зеркала в Duke Nukem 3D

Reading time2 min
Views48K
image

Году эдак в 1998, я раздобыл редактор уровней для Duke Nukem 3D, и первым делом я создал собственный уровень, где поставил два зеркала друг напротив друга, зеркальный коридор. Загрузился в эту карту, вошел между зеркалами и игра зависла.

Недавно энтузиаст решил проверить все свойства зеркал в Duke Nukem 3D. Нашел много забавного и интересного.
Читать дальше →

Sourcetrail: инструмент, чтобы разобраться в чужом коде и не выстрелить себе в голову

Reading time5 min
Views14K


I regret to report that I've just recently looked again at my programs for prime factors and tic-tac-toe, and they are entirely free of any sort of comments or documentation.
— Donald E. Knuth

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

Такое случается даже со своими программами и скриптами, написанными на write-only ЯП.

Разработчики, имеющие дар работать с таким кодом высоко ценятся в коллективе.

Такое чудо-лабиринты из кода бывают, когда исходный код имеет:

  • Непоследовательный стиль разработки
  • Чересчур сложную и запутанную структуру программы
  • Очевидные логические ошибки или упущения
  • Запущенность

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

Маленькие Python для маленьких embedded-программистов: CircuitPython и MicroPython для MeowBit

Reading time7 min
Views16K
На Хабре уже немало писали про обучающий микрокомпьютер BBC micro:bit, который в 2016 раздали всем британским школьникам, и сейчас он продаётся по $15. С прошлого года появились в продаже и micro:bit v2, в которых ОЗУ расширена с 16 КБ до 128 КБ. Неизменным остался форм-фактор: две кнопки для ввода, матрица 5х5 светодиодов для вывода, всё что сверх этого – подключайте через 25-контактный edge connector. Очевидно, что создатели задумывали micro:bit не как самостоятельное устройство, а как «мозг» для более сложного проекта со внешними датчиками, индикаторами, релюшками, сервоприводами и т.п. – этакий «детский Arduino».

Энтузиасты из Шэньчжэня, взявшие себе название KittenBot, решили заполнить пустующую нишу «обучающий микрокомпьютер, который как micro:bit, но со всем необходимым для нескучных проектов — уже внутри». Их плата MeowBit, выпущенная в 2018, стоит $40; сохраняет edge connector, совместимый с micro:bit; и добавляет четыре кнопки-«джойстик», полноцветный TFT-экран 160х128, динамик, и силиконовую оболочку с отсеком для аккумулятора – всё, что нужно для создания мини-«геймбоя» размером с кредитную карточку. У MeowBit 96 КБ ОЗУ – до выхода micro:bit v2 это было ещё одним его существенным превосходством – и 2 МБ флеш-памяти, по сравнению с 256 КБ у micro:bit v1 и 512 КБ у micro:bit v2. Игры для MeowBit можно писать на MakeCode Arcade (диалект Scratch от Microsoft), Kittenblock (собственный диалект Scratch от KittenBot), или на MicroPython. На сайте KittenBot есть туториалы по использованию этих трёх языков, но весьма бедные, и увы, только на китайском.



MicroPython создавался для тех, кто привык программировать микроконтроллеры на Си, но хотел быиспользовать при этом синтаксис Python.
Читать дальше →

Возвращение к жизни радиометра FAG FHT 111 Contamat

Reading time1 min
Views4.3K

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

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

Анонс. Как научиться проходить собеседование в Google

Reading time2 min
Views6.8K

Завтра, в 20:00 на нашем ютуб-канале выступает Ава Катушка, ментор в Verbetcetera.

Verbetcetera — буткамп для тех, кто хочет подготовиться к интервью в Большой пятерке — Google, Amazon, Facebook, Apple и Microsoft. Менторы Verbetcetera распределены по 5 странам, уже работают в компаниях-таргетах, знают все про специфику работы и требования к кандидатам на разных рынках.



Ребята уже успели поработать с более, чем 200 специалистами, 80% из которых нашли новую работу, а остальные 20 достигли других целей: повышение, переход в новую специальность или релокация.

Мы договорились с Verbetcetera о том, что менторы с разной специализацией будут отвечать на вопросы хабровчан о собеседованиях и стажировках в прямом эфире. Первой выступит Ава Катушкина и расскажет о Google и ответит на ваши вопросы.

«Баночный» детектор нейтронов (фотоотчет)

Reading time1 min
Views8.2K


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

Это был небольшой занятный вечерний проект, в котором я снабдил замедлителем пропорциональный нейтронный детектор SNM3 ³He. Сам замедлитель я отлил из парафина в банку из-под краски, просверлив в нем отверстие для детектора.
Читать дальше →

Первое знакомство с отладчиком Ghidra и взлом игры Spiderman

Reading time12 min
Views17K


В середине декабря в твиттер-аккаунте NSA было объявлено о релизе новой ветки Ghidra с долгожданной поддержкой отладки. Теперь с помощью GDB-заглушки и прочих механизмов можно будет выполнять ее пошагово внутри самой Ghidra. Желая отпраздновать это событие, которое совпало с моим домашним карантином, я подготовил небольшой обзор сборки этой версии, включая пример использования ее отладчика для интересной цели.
Читать дальше →

Эмуляция компьютера: интерпретатор CHIP-8, таймеры и обработка ввода

Reading time4 min
Views3.8K
Мы уже создали вполне рабочий эмулятор CHIP-8, но он, к сожалению, получился очень медленным. Почему? Если заглянуть в его главный цикл — можно увидеть, что данные на экран выводятся после выполнения каждого шага цикла. При включённом vsync SDL пытается привязать скорость рендеринга к частоте обновления кадров дисплея (возможно это — 60 Гц). Для нас это означает то, что метод SDLViewer::Update, почти при каждом его вызове, долго будет находиться в заблокированном состоянии, ожидая сигнала vsync от монитора.



Насколько быстро должен работать наш эмулятор? Точный ответ на этот вопрос дать не так уж и просто. На реальном компьютере на выполнение операций с разными кодами нужно разное время, но известны ориентировочные временные показатели выполнения различных операций. Можно выполнить инструкцию, выяснить то, сколько времени её выполнение должно занимать на реальном аппаратном обеспечении, а после этого «усыпить» программу до того момента, когда можно будет продолжать работу. Но тут есть одна проблема, которая заключается в том, что у нас, при таком подходе, нет доступа к временным параметрам работы CPU. На выполнение большинства этих инструкций должна уходить пара микросекунд, но на современных системах «усыплять» программы можно, как минимум, на одну миллисекунду.
Читать дальше →

Обзор GameLisp: нового языка для написания игр на Rust

Reading time7 min
Views7.9K

Программист, подписывающийся псевдонимом Fleabit, уже полгода разрабатывает свой язык программирования. Сразу же возникает вопрос: ещё один язык? Зачем?

Вот его аргументы:

  • Разработка движка игры и разработка игры на этом движке — две очень разные задачи, и для них удобно использовать разные языки, при условии, что код на них хорошо стыкуется друг с другом. Например, код на языке с garbage collection и на языке с явным управлением памятью было бы сложно объединить в одном проекте.
  • Rust идеально подходит для разработки движка игры: из языков, ориентированных на производительность скомпилированного кода, в нём максимум выразительных средств — enum-ы с полями; pattern matching с деструктуризацией; макросы, генерирующие произвольный код во время компиляции; и т.п. С другой стороны, для описания игровой механики Rust подходит плохо: задержки на перекомпиляцию усложняет подход «подправить и тут же проверить, что получилось»; строгое управление памятью усложняет использование одних данных одновременно несколькими объектами; а генераторы/сопрограммы, позволяющие удобно реализовать кооперативную многозадачность между внутриигровыми сущностями, ещё не реализованы.
  • Для игровой механики идеально подходил бы скриптовый язык наподобие JavaScript, Lua, Python или Ruby; но интеграция кода на них в проект на Rust — нетривиальная задача, отчасти из-за того, что эти полновесные языки программирования устроены запредельно сложно. Вдобавок, внутри игры напрашивается очень простой garbage collector, отрабатывающий после генерации каждого кадра, чтобы частота кадров оставалась постоянной — без внезапных подвисаний раз в десять минут, когда GC решил пройтись по всем объектам, созданным за эти десять минут. Другое важное преимущество GameLisp перед популярными скриптовыми языками — гомоиконичность, упрощающая обработку и генерацию кода макросами.
Читать дальше →

Личный IM-мессенджер со сквозным шифрованием только для своих

Reading time10 min
Views54K
В этой статье я рассказал, как сделать собственный безопасный мессенджер только для своей тусовки параноиков.

Сейчас есть много IM-мессенджеров с end-to-end шифрованием, но вариантов, которые можно быстро развернуть на своем сервере гораздо меньше.



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

Среди преимуществ этого подхода можно отметить:

  • Вы сами управляете своей информацией, в том числе ключами шифрования.
  • Вы не отдаете свою адресную книгу никому.
  • Нет необходимости использовать телефонный номер для регистрации.
  • Наличие клиентов под все популярные системы: Windows, Linux, Android, MacOS, iPhone.
  • Дополнительное шифрование STARTTLS/SSL при передаче сообщений, обеспечиваемое почтовым сервером.
  • Возможность настроить удаление старых сообщений с устройства (исчезающие сообщения).
  • Возможность настроить удаление сообщений с сервера, при получении.
  • Быстрая доставка, благодаря IMAP push.
  • Групповые защищенные чаты.
  • Поддержка передачи файлов, фото и видео.
  • Сервер и клиент относятся к открытому ПО и совершенно бесплатны.

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

Интересный факт: Роскомнадзор уже требовал от разработчиков Delta Chat предоставить доступ к пользовательским данным, ключам шифрования и зарегистрироваться в государственном реестре провайдеров, на что Delta Chat ответили отказом, т.к. не имеют собственных серверов и не имеют доступа к ключам шифрования.
Читать дальше →

Так ли безопасен ваш iPhone? Обзор уязвимостей и тайных ходов в iOS

Reading time6 min
Views45K


Пользовательские данные не являются разменной монетой. Компания Apple потратила значительные усилия для того, чтобы заслужить себе репутацию, стойко отбиваясь от ФБР и прочих представителей силовых структур, ищущих возможность произвольного сбора данных владельцев iPhone.

В 2016 г. Apple отказалась ослабить защиту iOS для того, чтобы ФБР могла разблокировать iPhone стрелка из Сан-Бернардино. Завладев смартфоном Сайеда Фарука и промахнувшись десять раз с набором четырехзначного PIN кода, правоохранители тем самым заблокировали смартфон. Тогда в ФБР потребовали, чтобы Apple создала специальную ОС, в которой возможно подобрать код безопасности методом перебора…
Читать дальше →

Опенсорс и эксперименты с виртуальным конструктором LEGO

Reading time8 min
Views12K
Моё детство примерно на 20% состояло из Dungeons & Dragons (D&D) и на 80% — из LEGO. Эти два занятия очень сильно пересекались. Мне, по разным причинам, не разрешали всё время играть в D&D. Но я, привлекая на помощь воображение, и достигнув в этом деле успехов, достойных плута 15 уровня, понял, что создание персонажей AD&D игрой не считается. Воссоздание вселенной DragonLance средствами LEGO очень хорошо помогало мне быть ближе к игре, которая мне очень нравилась.

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



Теперь, хоть я и стал старше, моя любовь к LEGO не угасла. И хотя я и не могу сказать, что очень уж горжусь своими моделями (их называют MOC-моделями), я почувствовал, что просто должен разобраться с тем, как мне документировать то, что создаю. Я никогда не умел очень уж хорошо рисовать. Поэтому я решил обратиться к компьютеру.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity