Search
Write a publication
Pull to refresh
36
0

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

Send message

Первый глиняный дом, напечатанный на 3D принтере

Reading time2 min
Views21K


Этот дом несколько принтеров напечатали из местной почвы за 200 часов. В итоге никаких отходов и необходимости доставки строительных материалов.

Библиотека next-persist: преодоление разрыва между серверным рендерингом и постоянным хранением данных на клиенте

Reading time9 min
Views5.8K
Статья, перевод которой мы публикуем сегодня, посвящена next-persist — компактному и нетребовательному к ресурсам NPM-пакету. Цель его создания — упрощение обработки и реконсиляции данных, на постоянной основе хранящихся на клиенте и не имеющих критического значения. При этом данный пакет задуман так, чтобы его применение не ухудшило бы полезных возможностей Next.js по серверному рендерингу и генерированию статических сайтов.

Прежде чем мы поговорим о месте next-persist в экосистеме современной веб-разработки, нам нужно коснуться Next.js — передового фреймворка, созданного Vercel, позволяющего без особых сложностей создавать и развёртывать приложения, которые, при этом, отличаются высокой скоростью загрузки.



Next.js произвёл революцию в осмыслении того, как именно веб-содержимое доставляется пользователям. Произошло это за счёт объединения всего лучшего из сфер серверного и клиентского рендеринга с технологиями генерирования статических сайтов. Кроме того, применение Next.js до крайности упрощает доведение веб-проектов до рабочего состояния. Это происходит за счёт автоматизации конфигурирования вспомогательного ПО, вроде webpack и babel, и благодаря использованию CI/CD Vercel.

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

Начинаем писать под stm8, выбираем среды разработки и стартуем

Reading time6 min
Views36K
image

На пути в программировании stm8 есть развилка, о ней сегодня и поговорим.

Определимся что речь будет идти о средах которые могут писать под си. Для начала поговорим о подходах, я выделю 2 основных.

Первый установка ST Visual Develop и выбор в качестве компилятора COSMIC Бывший платный, а ныне бесплатный, но со своими заморочками; регистрация, получение ключа, и прочие танцы с бубном.

Второй же вариант, более простой VS Code + PlatformIO и компилятор SDCC полностью свободный. И опять же не все так просто. Sdcc не умеет исключать не используемые функции. Я решил этот вопрос хоть и успешно, но не без дополнительных действий при написании кода.
Читать далее

Полезные JavaScript-библиотеки

Reading time6 min
Views37K
Не стоит недооценивать силу простоты. Пожалуй, сложно представить себе, что на чистом JavaScript реализовано что-то вроде системы push-уведомлений, работающей в реальном времени, или инструмент для работы с базами данных, или полноценный текстовой редактор. Но подобные проекты существуют и позволяют решать множество актуальных задач. В этом материале речь пойдёт о нескольких весьма полезных библиотеках, которые подключаются к страницам в виде обычных JavaScript-файлов. При рассказе о каждой из них я постараюсь выделять их особенности и приводить примеры их использования.


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

Автоматический дымоуловитель для пайки, основанный на Arduino

Reading time4 min
Views9.1K
Автор статьи, перевод которой мы представляем вашему вниманию, хочет рассказать о том, как сделать датчик, основанный на Arduino, который автоматически включает дымоуловитель при извлечении паяльника из держателя.



Для этого проекта вам понадобится Arduino UNO Wifi Rev.2, инфракрасный датчик препятствий KY-032 и одноканальное реле на 5В. Некоторые элементы надо будет напечатать на 3D-принтере. Для сборки готового устройства нужно будет воспользоваться паяльником.

О дивный новый «Мир»! Восстановление советской радиолы. Часть 1

Reading time5 min
Views32K
Не мне вам рассказывать, насколько увлекательно возиться с компьютерами. Но иногда всё-таки тянет к более простой технике, где даже самую мелкую деталь можно подержать в руках, а если она вдруг сломается — заменить на аналогичную или починить. Поэтому ещё с юности я начал собирать разнообразную аппаратуру ушедшей эпохи — от пишущих машинок и арифмометров до измерительных приборов и проигрывателей пластинок. Примерно тогда же выработался принцип: я не покупаю старые вещи целенаправленно, а жду, пока они попадутся мне сами. Сегодня будет рассказ об одной из самых удивительных моих находок. Точнее, первая часть рассказа, потому что материал получился очень большим.



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

«Автостопом по галактике» — история невероятного текстового приключения 1984 года

Reading time18 min
Views19K


Жанр интерактивных текстовых игр промелькнул ярким болидом в истории цифровых развлечений. «Автостопом по галактике» стала одним из самых успешных бестселлеров Infocom, который прославился чутким юмором, странной, местами абсурдной, логикой, и, конечно же, безумными головоломками (помните Babel Fish?). Многие игроки бесились от дикой сложности загадок игры, для других же проведенное за ними время легло в память исключительно приятными воспоминаниями.
Читать дальше →

Белогривые лошадки. Как облачные технологии меняют мир

Reading time8 min
Views5.8K

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

Заметки о Unix: небольшая странность семейства вызовов exec*()

Reading time2 min
Views5.3K
Я недавно писал об опции -exec команды find и ненароком упомянул о «семействе системных вызовов exec()». Это — странное выражение, обычно о Unix-вызовах так не говорят, так как они, как правило, не объединяются в некие «семейства». Но в данном случае речь идёт о целом наборе схожих механизмов. Перечислим их:

execv() execve() execvp() execvpe()
execl() execlp() execle()

(Этот список выглядит именно так в Linux и в OpenBSD; подобный список, составленный для FreeBSD, включал бы в себя execvP(), а не execvpe(). В POSIX-версии подобного списка нет вызова execvpe(), но есть вызов fexecve(), который я не вполне готов включить в семейство вызовов exec().)


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

Разговор с майнером Chia, имеющим 1ПБ ёмкости

Reading time15 min
Views314K

Возможно, вы уже в курсе, что сейчас в России цены на жёсткие диски большого объёма и SSD стремительно растут, а по компьютерным магазинам мечутся люди, в спешке покупающие комплектующие для новых компьютеров. Причиной этого ажиотажа стала новая криптовалюта Chia, для добычи которой нужны большие HDD и износостойкие SSD.


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


Для лучшего понимания всего что связано с этой криптовалютой, вашему вниманию предлагается расшифровка моего разговора с майнером Chia, который состоялся вечером 21 апреля 2021 года. Я выступаю в роли продавца SSD, а майнер в роли повторного покупателя, который в ходе разговора делает coming-out. В ходе этого разговора я узнал много нового о Chia.



 

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

PiDP-11 — свежий взгляд во времена «Большого железа»

Reading time5 min
Views8.3K


PiDP-11 – это современная реплика выдающегося микрокомпьютера PDP-11, разработанного Digital Equipment Corporation. В самом начале своей истории, когда они еще не стояли в каждом доме и уж тем более не умещались в карман, компьютеры были огромными, можно даже сказать пугающими устройствами, которые порой занимали целые комнаты и использовались только в университетах и корпорациях. Серия PDP в этом плане стала неким переходным звеном, сделавшим компьютеры более доступными для рядовых пользователей.
Читать дальше →

Новая концепция диабета 2 типа: опасный, но обратимый

Reading time12 min
Views38K

Исторически сахарный диабет считался страшным заболеванием — в тяжёлых стадиях ему сопутствуют такие побочные эффекты, как слепота и гангрена конечностей. Большую часть истории диабета, известного ещё врачам Древней Греции как минимум 2500 лет назад, он считался неизлечимым. Терапия диабета уколами инсулина появилась только в XX веке: в следующем году исполнится 100 лет первому уколу инсулина, которым в 1922 году канадский доктор спас умиравшего от диабета 14-летнего мальчика. Однако инсулинотерапия — это лечение только для диабета 1 типа, при котором в организме человека нарушена выработка собственного инсулина. При более распространённом диабете 2 типа уколы инсулина — это не лечение, а симптоматическая терапия, которая только замедляет развитие болезни. Причины этого были открыты позже.

В XXI веке, благодаря развитию эндокринологии (науки о гормонах) представления о диабете 2 типа поменялись радикально. С одной стороны, список сопутствующих развитию диабета проблем только вырос и теперь включает сердечно-сосудистые заболевания, многие случаи рака и болезнь Альцгеймера. С другой — появившееся представление о пропущенном звене, их общем метаболическом корне — гормональном сбое, известном как инсулинорезистентность, привело к пониманию не только как диабет развивается, но и как это развитие остановить и обратить вспять, не доводя до инсулиновой иглы.
Симптоматику предиабета следует знать всем, кому за 30

Теория цвета как основа для дизайна и иллюстрации

Reading time9 min
Views149K

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

Зелёная энергетика — космическая гонка XXI века

Reading time13 min
Views12K
Многие знают, особенно в IT, что своими корнями технологическая революция последних 40 лет уходит в космическую гонку. Противостояние между СССР и США в том, кто кого переплюнет в масштабности и экстравагантности символических жестов — одновременно самый бессмысленный и самый плодотворный эпизод в истории прогресса. Даже триумфальный пик космической гонки — одновременно вершина её абсурдности, когда США только чтобы воткнуть свой флаг, залетели так далеко, что часть самих же американцев до сих пор в это не верит.

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


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

Первое знакомство с SQL-инъекциями

Reading time5 min
Views30K
SQL-инъекции (SQL injection, SQLi, внедрение SQL-кода) часто называют самым распространённым методом атак на веб-сайты. Их широко используют хакеры и пентестеры в применении к веб-приложениям. В списке уязвимостей OWASP Топ-10 присутствуют SQL-инъекции, которые, наряду с другими подобными атаками, находятся на первом месте среди угроз, с которыми сталкиваются веб-проекты.

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



Этот материал рассчитан на абсолютных новичков, на тех, кто ничего не знает о SQL-инъекциях. Начнём мы с разбора основ, в которых необходимо ориентироваться перед разговором о SQLi. А именно, сначала мы поговорим о реляционных базах данных. Потом — о SQL, и о формировании SQL-запросов. И наконец — о том, как работают SQL-инъекции, и о том, почему они так опасны для веб-приложений.
Читать дальше →

Разбираемся с развёртыванием CodeReady Containers на Linux

Reading time13 min
Views5.3K
Подумываете ли вы о том, чтобы использовать Red Hat CodeReady Containers (CRC) для решения задач локальной OpenShift-разработки? Собираетесь ли устанавливать CRC на Linux? В этом материале я хочу рассказать именно об этом. Мы обсудим некоторые особенности работы CRC и поговорим о настройке контейнеров.



Тут используется система CRC версии 1.21.0, в основе которой лежит OpenShift Container Platform (OCP) версии 4.6.9. Я устанавливаю CRC на Debian 10 GNU/Linux, но нам подойдёт любой современный дистрибутив Linux — вроде Fedora или Ubuntu. CRC 1.21.0 можно установить на Linux-хосте, который удовлетворяет следующим требованиям:

  • На нём установлены KVM и libvirt.
  • Его сетевые настройки выполняются с использованием NetworkManager.
  • Пользователь, устанавливающий CRC, имеет sudo-доступ к этому хосту.

Перед установкой CRC нужно будет загрузить tarball-дистрибутив CRC и так называемый «pull secret». «Pull secret» — это JSON-файл, который содержит аутентификационную информацию, необходимую для доступа к защищённым реестрам образов, поддерживаемым Red Hat. Если вы не являетесь клиентом Red Hat — вы можете присоединиться к Red Hat Developer Program, к программе Red Hat для разработчиков, и бесплатно загрузить этот файл. Участие в этой программе позволяет, кроме того, загрузить tarball-дистрибутив CRC. А отсюда дистрибутив можно скачать без лишних формальностей.

CRC отличается замечательной документацией, которая дополняется по мере выхода новых релизов системы.
Читать дальше →

Открытая платформа для своих: как и зачем использовать Yunohost

Reading time7 min
Views15K

Знакомимся с дистрибутивом: рассматриваем возможности, оцениваем простоту настройки и приложения, которых на платформе более 200. А также устанавливаем Yunohost на VPS или свою ВМ. 

Дорогие друзья, я обратил внимание, что на Хабре обошли стороной хороший продукт, достаточно мощный и с отличным потенциалом — это Yunohost. Проект появился на свет в 2012 году. Продукт позиционируется как операционная система, основанная на Debian и предназначенная для хостинга в первую очередь своих личных проектов, проектов друзей, семьи или связанных с ними небольших компаний. Я использую его ежедневно в своем ИТ-быту с 2018 года, и у меня накопился опыт, которым хочу поделиться. 
Читать дальше →

Лайфхак: как спарсить гигабайт double-ов в секунду

Reading time6 min
Views24K


Как в коде на C++ прочитать значение double из строки?

std::stringstream in(mystring);
while(in >> x) {
   sum += x;
}

На Intel Skylake с компилятором GCC 8.3, такой код парсит 50 МБ/с. Жёсткие диски запросто обеспечивают последовательное чтение со скоростью в несколько ГБ/с, так что вне всякого сомнения, нас ограничивает не скорость чтения с диска, а именно скорость парсинга. Как его ускорить?

Первое, что напрашивается – отказаться от удобств, предоставляемых потоками в C++, и вызывать strtod(3) напрямую:

do {
    number = strtod(s, &end);
    if(end == s) break;
    sum += number;
    s = end; 
} while (s < theend);

Скорость вырастает до 90 МБ/с; профайлинг показывает, что при чтении из потока выполняется ~1600 инструкций на каждое читаемое число, при использовании strtod – ~1100 инструкций на число. Стандартные библиотеки Си и C++ можно оправдать требованиями универсальности и переносимости; но если ограничиться парсингом только double и только на x64, то можно написать намного более эффективный код: хватит 280 инструкций на число.
Читать дальше →

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

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



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

Подключение геймпада к Raspberry Pi

Reading time6 min
Views8.9K
Автор статьи, перевод которой мы сегодня публикуем, Эрик Гебельбекер, недавно собрал робота, основанного на одноплатном компьютере Raspberry Pi. Он хочет сделать так, чтобы роботом можно было бы управлять, пользуясь геймпадом. А для этого геймпад нужно подключить к Raspberry Pi. Эрик несколько лет назад публиковал статью, посвящённую решению этой задачи. Данный материал представляет собой обновлённый вариант той статьи.


Робот, основанный на Raspberry Pi, и геймпад
Читать дальше →

Information

Rating
Does not participate
Works in
Registered
Activity