Как стать автором
Обновить
2121.08
Timeweb Cloud
То самое облако
Сначала показывать

Валерий Брюсов — предсказатель «Скайнета»

Время на прочтение9 мин
Количество просмотров5.4K

Автор: Павел Пырин

Hа ковpе — веpтолете
Ветеp бьет в глаза.
Hам хотя бы на излете
Заглянуть за...

Агата Кристи — «Ковер-вертолет»

Хоть одним глазком заглянуть за горизонт времени, увидеть: «Как там, в будущем?». Каждый из нас хоть раз испытывал такое желание. Писатели, поэты, художники, ученые — все, в той или иной степени, старались во все времена предсказать будущее.

Читать далее
Всего голосов 21: ↑18 и ↓3+18
Комментарии9

JavaScript: об очистке данных, хранящихся на стороне клиента, по сигналу сервера и немного о карте импортов

Время на прочтение13 мин
Количество просмотров12K


Введение


Привет, друзья!


Представляю вашему вниманию результаты небольшого исследования, посвященного очистке данных, хранящихся на стороне клиента по сигналу сервера. Речь идет об относительно новом HTTP-заголовке Clear-Site-Data. Также в этой статье мы немного поговорим про карту импортов (imports map).


Статья состоит из двух частей: теоретической и практической.


В теоретической части мы кратко рассмотрим карту импортов и более подробно Clear-Site-Data.


В практической части мы поднимем два сервера — один будет запускаться локально и, помимо прочего, обслуживать статические файлы нашего приложения, другой мы развернем на Heroku. Сначала мы запросим данные (включая куки) от серверов, сохраним эти данные в браузере с помощью трех наиболее популярных механизмов (локальное хранилище, индексированная база данных и интерфейс кеширования), затем попробуем очистить их с помощью заголовков Clear-Site-Data. Для разрешения путей импортируемых в приложении модулей мы будем использовать карту импортов.


Исходный код проекта находится здесь.

Читать дальше →
Всего голосов 2: ↑1 и ↓10
Комментарии0

Динамическая JIT компиляция С/С++ в LLVM с помощью Clang

Время на прочтение10 мин
Количество просмотров9.5K


При создании компилятора для собственного языка программирования я сделал его как транспайлер в исходный код на С++, вот только реализация сильно подкачала. Сначала приходится генерировать динамическую библиотеку с помощью вызова gcc, который и сам по себе не очень быстрый, так еще его может и не быть на целевой машине, особенно на другой платформе (например Windows). Конечно, для первых экспериментов и такой реализации было достаточно, но сейчас, когда я начал готовить код компилятора к публикации, стало понятно, что текущий вариант с фоновым запуском gcc никуда не годится.

Из-за этого, я решил не откладывать перевод компилятора на использование LLVM, который планировался когда нибудь в будущем, а решил сделать это уже сейчас. И для этого нужно было научиться запускать компиляцию C++ кода с помощью библиотек Clang, но тут вылезло сразу несколько проблем.

Оказывается, интерфейс Clang меняется от версии к версии и все найденные мной примеры были старыми и не запускались в актуальной версии (Сlang 12), а стабильный C-style интерфейс предназначен для парсинга и анализа исходников и с помощью которого сгенерировать исполняемые файлы не получится*.

Дополнительная проблемой оказалось, что Clang не может анализировать файл из памяти, даже если для этого есть соответствующие классы. Из объяснений выходило, что в экземпляре компилятора проверяется, является ли ввод файлом**.

А теперь публикую результат своих изысканий в виде рабочего примера динамической компиляции С++ кода с последующей его загрузкой и выполнением скомпилированных функций. Исходники адаптированны под актуальную версию Clang 12. Пояснения к коду я перевел и дополнил перед публикацией, а ссылки на исходные материалы приведены в конце статьи.

  • *) Кажется в 14 версии планируется реализовать C интерфейс для генерации исполняемых файлов.
  • **) На самом деле, Clang может (или теперь может) компилировать файлы из оперативной памяти, поэтому в исходники я добавил и эту возможность.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+14
Комментарии12

Не «Оперой» единой. Выбираем proxy-сервис вместо Opera VPN

Время на прочтение4 мин
Количество просмотров61K


Признаюсь, я никогда не считал себя преданным фанатом Opera. Тем не менее этот браузер был установлен на всех моих компьютерах — из-за простой и удобной функции VPN (который даже не VPN, а, скорее, продвинутый прокси), позволявшей при необходимости быстро менять внешний IP-адрес и локацию, что бывает просто необходимо в целом ряде случаев — скажем, в процессе отладки веб-приложений. Да мало ли по какой причине благородному дону вдруг понадобится предстать в сети канадским фермером или испанским кабальеро? И вот с недавних пор сервис Opera VPN был отключен для российских пользователей разработчиками браузера. Что ж, настало время искать альтернативу!
Читать дальше →
Всего голосов 10: ↑6 и ↓4+4
Комментарии22

Коварные болезни: легионеллёз

Время на прочтение6 мин
Количество просмотров8.1K

Люди смертны, что не новость. Хуже от того, что они бывают смертны внезапно. 27 июля 1976 года в солнечном штате Пенсильвания скончался 61-летний капитан американских воздушных сил Рэймонд Бреннан. Медики не увидели в его смерти ничего странного, диагностировав сердечный приступ и списав его на героическое прошлое славного вояки. На том бы история и закончилась, смерть его бы затерялась в истории, если за ней не последовали другие. 30 числа умирает Фрэнк Авени, тоже бывший военный, которому совсем недавно исполнилось шестьдесят лет. И опять сердечный приступ. Поначалу и это происшествие не вызвало особого внимания, но следом последовало еще несколько смертей с малым временным интервалом.

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

В больницу через некоторое время попадает еще один человек – Майкл Рассел Дуган, почтальон на пенсии, который почувствовал себя плохо по дороге домой. У него крайне высокая температура, лихорадка, и он проваливается в кому. Температуру пытаются сбить, берут анализы каждые пятнадцать минут, но все тщетно – из-за чего его состояние ухудшилось неизвестно. Если первые два случая можно было связать за счет того, что умершие были знакомы, то этот был исключением - Дуган не контактировал с погибшими ранее.

Смерти продолжились, и к августу число умерших достигло двадцати человек. Вот тут врачи подняли тревогу на всю страну, информация просочилась в СМИ и началась паника. Случившееся приписывали коммунистам, так как многие из погибших были членами американского легиона. Данная организация появилась впервые после Первой мировой войны, чтобы сплотить и способствовать устройству в мирной жизни экспедиционных сил, в основном, находящихся во Франции. Впоследствии эта организация стала одной из самых больших организаций ветеранов войн и ее значение, а также влияние на происходящее в стране было довольно сильным – членами являлись даже президенты и госсекретари. Американский легион как раз в 1976 году собирался на очередную ежегодную конвенцию в столице Пенсильвании – Филадельфии.

Читать далее
Всего голосов 15: ↑11 и ↓4+12
Комментарии24

Истории

История проблемы равенства классов P и NP

Время на прочтение9 мин
Количество просмотров16K

В 2000 году Математический институт Клэя определил 7 математических задач, решение которых не могли найти в течение многих лет. За решение каждой из них была назначена награда в размере 1 миллиона долларов. Эти 7 задач известны как «задачи тысячелетия», и на сегодняшний день только одна из них была решена — гипотеза Пуанкаре. В этой статье пойдет речь о вопросе равенства классов P и NP, ответ на который может сильно повлиять на всю IT-сферу.

Читать далее
Всего голосов 18: ↑17 и ↓1+23
Комментарии8

Civilization Сида Мейера: баг «ядерного Ганди» в том, что его не было

Время на прочтение20 мин
Количество просмотров30K
Хочу поделиться с вами несколькими малоизвестными историями про серию игр Civilization, которые рассказал Сид Мейер в автобиографической книге «Жизнь в мире компьютерных игр».

Если бы я попыталась просто привести все самые интересные фрагменты книги, то мне пришлось бы просто процитировать около 85% текста. Так что я поделюсь только фактами, связанными с самой знаменитой игрой Сида Мейера. Под катом несколько фактов из истории создания Civilization, ошибки, фичи, от которых отказались в процессе создания игры, появление читов и объяснение мифа про «ядерного Ганди» от Сида Мейера.


Читать дальше →
Всего голосов 38: ↑35 и ↓3+49
Комментарии51

История портативных консолей

Время на прочтение11 мин
Количество просмотров14K

В середине июля Valve представила портативную консоль Steam Deck: первые покупатели получат свои девайсы уже в конце этого года. Прежде попытки Valve выйти на рынок девайсов, например с геймпадом Steam Controller, особым успехом не отличились. Однако предстоящий гаджет от Valve вызывает закономерный вопрос:  портативная консоль в 2021 году? Казалось бы, пик популярности портативных консолей остался в конце нулевых и начале десятых годов. Возможно, лучше разобраться в вопросе поможет история, а именно история портативных консолей.

Читать далее
Всего голосов 9: ↑8 и ↓1+13
Комментарии8

Redux Vs Vuex. Часть 2

Время на прочтение28 мин
Количество просмотров5K


Привет, друзья!


Предлагаю вашему вниманию результаты небольшого исследования, посвященного сравнению Redux и Vuex. Это вторая часть статьи, вот ссылка на первую.


Введение


Redux и Vuex — это библиотеки для управления состоянием приложений, написанных на React и Vue, соответственно. Каждая из них по-своему реализует архитектуру для создания пользовательских интерфейсов, известную под названием Flux.

Читать дальше →
Всего голосов 6: ↑3 и ↓30
Комментарии12

Его величество Порох

Время на прочтение6 мин
Количество просмотров13K
В предыдущих частях я прошёлся по металлическим составляющим патрона — гильзе и пуле, сегодня же разговор пойдёт о химии, без которой ни один уважающий себя патрон работать не будет. Конечно же это порох. Касаться седой старины с открытием его китайцами и монахом-алхимиком Бертольдом Шварцем не будем, сразу перейдём к концу XIX века. Время это интересно тем, что как раз тогда активно шёл процесс перехода от дымного пороха к бездымному. У такого перехода был вполне очевидный плюс — отсутствие облака дыма, вырывающегося из ствола после выстрела. С одной стороны, самим стрелкам не приходилось чувствовать себя ёжиками в тумане и делать перерывы для восстановления видимости, а с другой — резкое уменьшение демаскирующего фактора выстрела. Но всё это меркло на фоне плюса неочевидного — бездымные пороха давали гораздо большее давление газов при сгорании, позволяя поднять скорость пули, а значит, и увеличить её энергию. А там уже и дальность полёта пули больше, и настильность лучше, и калибр можно уменьшить, и патрончики сделать поменьше, чтобы носить их побольше, а заодно и стволы винтовкам укоротить. В общем, плюсов множество, и это далеко не полный список. Проблемой было только укротить тот самый бездымный порох, с чем химикам пришлось конкретно так повозиться.


Читать дальше →
Всего голосов 41: ↑40 и ↓1+55
Комментарии19

Советский водяной компьютер

Время на прочтение8 мин
Количество просмотров32K

Во времена, когда трава была зеленее, вода чище, а компьютер казался диковинкой, широкое распространение имели аналоговые вычислительные машины, или просто аналоговые компьютеры. В СССР такие аппараты были в ходу практически до конца 80-х годов, когда спорить с производительностью ЭВМ стало попросту невозможно. Данные в аналоговых компьютерах представлялись не как набор нулей и единиц, а при помощи различных физических параметров: длины, скорости, силы тока, тут уж, как говорится, на что фантазии хватит. Например, некоторые машины работали буквально на воде. В этой статье как раз и пойдет речь о таких образцах аналоговых компьютеров.

Читать далее
Всего голосов 69: ↑65 и ↓4+86
Комментарии134

Эх, полетаем! Электрические аэротакси уже на подходе

Время на прочтение4 мин
Количество просмотров5.6K


Беспилотными автомобилями в наши дни никого не удивишь: опытные образцы, созданные при участии крупных айтишных компаний (включая наших соотечественников из «Яндекса»), успешно проходят ходовые испытания. Настало время сделать следующий логический шаг: приступить к производству полностью беспилотных летательных аппаратов. Впрочем, о чем я говорю? Этот шаг уже давным-давно сделан!
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии57

Пример для подражания у японских школьников, или Первые в мире кооперативы

Время на прочтение8 мин
Количество просмотров11K

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

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

Родился он в 1787 году в Японии, в годы, называемые “периодом Эдо”, или, иначе, “сёгунатом Токугава”, когда на много лет воцарился мир, но рыцари-самураи были главенствующим сословием страны и занимали все более-менее значимые административные должности рангом хотя бы чуть выше деревенских старост.

В Японии сложилась к тому времени довольно жесткая иерархия: даймё (их часто отождествляют с европейскими герцогами), которых в стране было около 300, правили в своих землях самостоятельно, при этом платя налоги со своих земель и участвуя (деньгами и людьми) в общественных работах в пользу сёгуна.

Читать далее
Всего голосов 37: ↑35 и ↓2+43
Комментарии27

JavaScript: как из Fetch сделать Axios?

Время на прочтение20 мин
Количество просмотров15K


Привет, друзья!


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


С чего все началось?


Прочитал статью Kent C. Dodds "Replace axios with a simple custom fetch wrapper", изучил несколько аналогичных утилит других разработчиков и решил, что могу сделать лучше. О том, насколько мне это удалось, судите сами.


Ссылки


Исходный код проекта находится здесь.


Обертка в виде npm-пакета — very-simple-fetch (хотел назвать пакет просто simple-fetch, но это название оказалось занято).


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


Что насчет Axios?


Наша обертка будет сильно похожа на axios. Это объясняется тем, что axios — лучший из известных мне инструментов для отправки HTTP-запросов. Он одинаково хорошо работает как в браузере, так и в Node.js. Безусловно, разработчики axios проделали большую работу. Однако в большинстве случаев нам для решения повседневных задач, связанных с разработкой веб-приложений, не требуется весь функционал, предоставляемый этим инструментом. Если в цифрах, то размер axios составляет 371 Кб, а размер very-simple-fetch — 9.33 Кб.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии24

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

ЦРУ против советских РЛС: как найти иголку в стоге сена с помощью Луны

Время на прочтение11 мин
Количество просмотров32K
Развитие радиотехники и средств перехвата чужих трансляций шли всегда рука об руку. Подслушать, что происходит в эфире у противника, было разумным желанием любой армии. Но появление новых видов радиотехники, не связанных с передачей информации – радиолокаторов – толкнуло разведки мира к новой необычной задаче: перехвату сигналов вражеских локаторов. Задача эта, сколь проста в теории, столь сложна на практике, привела к нескольким неординарным решениям, о которых сегодня и пойдёт речь.

Под катом лайфхаки для гиков в государственном масштабе.


РЛС советского комплекса ПВО С-75 — «рабочая лошадка» на момент описываемых событий
Читать дальше →
Всего голосов 64: ↑63 и ↓1+84
Комментарии358

Всё о работе с cookie в Python — класс http.cookies

Время на прочтение4 мин
Количество просмотров17K


Модуль http.cookies реализует парсер для cookie, по большей части совместимый с RFC 2109 — документом со стандартами работы с cookie и смежными вещами.

Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Гайд по использованию enum в Python

Время на прочтение6 мин
Количество просмотров121K


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

Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии4

Метеостанция на Banana Pi M64 (Linux, C#, Docker, RabbitMQ, AvaloniaUI)

Время на прочтение37 мин
Количество просмотров12K
Weather station Banana Pi BPI-M64 Linux C# Docker RabbitMQ AvaloniaUI

Статей о создании метеостанции на базе Arduino не счесть. Можно сказать, если статья про метеостанцию, то это про микроконтроллеры Arduino, ESP32 или STM32. Но только не в этот раз. Будем запускать метеостанцию на Banana Pi BPI-M64 под Linux, без использования Arduino-подобных оберток в виде WiringPi, на C# .NET5. Пример метеостанции является демонстрацией встраиваемого решения работы с GPIO, датчиками и вывода пользовательского интерфейса напрямую на LCD. В решении используется: Linux (Armbian) — основная ОС, .NET и C# — платформа для создания прикладного ПО, AvaloniaUI — графической интерфейс с интерактивными графиками и анимацией, Docker — инструмент для развертывания, управления, доставки приложений, RabbitMQ — брокер сообщений для передачи сообщений между контейнерами. Благодаря использованию универсального подхода и технологии Docker, приложение можно запустить не только на Banana Pi BPI-M64, но и на других Banana/Orange/Rock/Nano Pi одноплатных компьютерах, включая Raspberry Pi.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+18
Комментарии62

Как фокусировались на работе Кнут, Фейнман, Юнг, Шокли

Время на прочтение17 мин
Количество просмотров19K
На Хабре уже 8 лет просят: «Никогда не отвлекай программиста!» Написание кода — процесс, требующий сосредоточенности. Но большинство менеджеров считают, что вы можете работать с тем уровнем сосредоточенности, с которым сочтете нужным. Если, конечно же, отвечаете на сообщения в рабочем канале без задержки.

Под катом история Дональда Кнута о том, почему он отказался от электронной почты в 1990 году (за 7 до лет моего рождения); объяснения автора романа «Анафем» Нила Стивенсона, почему он не общается с фанатами; фишки из работы Билла Гейтса и Джоан Роулинг, а ещё проект идеального рабочего пространства Дэвида Девэйна.

Простите за такую тяжеленную гифку, не удержалась.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+13
Комментарии55

Сравнительный обзор VPN клиент-серверных приложений

Время на прочтение6 мин
Количество просмотров61K

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

Ну что ты там понаписал...
Всего голосов 14: ↑11 и ↓3+9
Комментарии31

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud