Обновить
23
347

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

Отправить сообщение

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

Время на прочтение8 мин
Охват и читатели20K

Ранее меня всегда интересовало, почему интернет для юридических лиц дороже чем для физических, но проверять как-то не хотелось ввиду высокой цены. С рекламы нам говорят, что это – сервис, поддержка, CIR, то же самое, как правило встречается на различных форумах, но понятное дело без конкретики.
Я хочу исправить этот пробел. Прошло чуть более года, с момента как я в это ввязался и теперь могу поделиться опытом подключения и использования. Должен сказать и в этом случае было не все так гладко, как обещают нам с рекламы…
Читать дальше →

Полное руководство по инкрементной регенерации статических сайтов с помощью Next.js

Время на прочтение10 мин
Охват и читатели22K
Год назад во фреймворке Next.js 9.3 появилась поддержка генерирования статических сайтов (Static Site Generation, SSG), что сделало его первым гибридным фреймворком. Я к тому моменту уже несколько лет с удовольствием пользовался Next.js. Но тот релиз сделал Next.js моим новым стандартным инструментом. После того, как я много и серьёзно поработал с Next.js, я присоединился к Vercel для того чтобы помогать компаниям, вроде Tripadvisor и Washington Post, в деле внедрения Next.js и расширения того, что у них получилось.

В этом материале мне хотелось бы исследовать новый виток эволюции Jamstack — механизм инкрементной регенерации статических сайтов (Incremental Static Regeneration, ISR). Здесь вы найдёте руководство по ISR, а так же — практические примеры использования этой технологии, демонстрационные проекты и рассказ о сопутствующих внедрению ISR компромиссах.



Если в двух словах описать ISR, то окажется, что эта технология позволяет, при внесении каких-то изменений в материалы сайта, мгновенно обновлять статический контент. Полная пересборка проекта при этом не нужна. Гибридный подход Next.js позволяет использовать ISR в сфере электронной коммерции, при подготовке маркетинговых и рекламных страниц, при организации работы блогов и во многих других случаях.
Читать дальше →

B-Money: история первой в мире криптовалюты

Время на прочтение10 мин
Охват и читатели17K


31 октября 2008 года произошло событие, которое кардинально изменило всю привычную нам картину мира и оказало значительное влияние на экономику, развитие технологий и культуру. Именно в этот день никому не известный человек (или группа людей), скрывающийся под псевдонимом Сатоси Накамото, опубликовал статью «Bitcoin: A Peer-to-Peer Electronic Cash System», положив начало истории биткойна. Однако еще за десятилетие до этого, в 1998 году, выпускник Вашингтонского университета Вэй Дай (Wei Dai) создал проект децентрализованной платежной системы, которая должна была использовать в своей работе криптографические алгоритмы. Даже называлась она похоже: B-Money.
Читать дальше →

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

Время на прочтение2 мин
Охват и читатели20K

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

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

Время на прочтение5 мин
Охват и читатели13K

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

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

Читать далее

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

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



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

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

Время на прочтение1 мин
Охват и читатели6.2K

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

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

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


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

Время на прочтение9 мин
Охват и читатели14K
Тому, кто хостит приложение у провайдера наподобие Fly.io (далее — просто Fly), вполне может понадобиться подключиться к серверу, на котором работает это приложение, по SSH.

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



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

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

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

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



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

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

Время на прочтение1 мин
Охват и читатели4.7K

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

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

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

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


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

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

Время на прочтение2 мин
Охват и читатели49K
image

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

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

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

Время на прочтение5 мин
Охват и читатели16K


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

Время на прочтение7 мин
Охват и читатели19K
На Хабре уже немало писали про обучающий микрокомпьютер 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

Время на прочтение1 мин
Охват и читатели4.4K

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

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

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

Время на прочтение2 мин
Охват и читатели6.9K

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

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



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

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

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

Время на прочтение1 мин
Охват и читатели8.5K


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

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

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

Время на прочтение12 мин
Охват и читатели21K


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

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

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



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

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

Время на прочтение7 мин
Охват и читатели8.1K

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность