Как стать автором
Обновить
989.98

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Учиться программированию… в Roblox

Я обычно рекомендовал Python как первый язык программирования, плюсы очевидны — простота, популярность, гайды, широкий инструментарий.

Но недавно начал изучать платформу Roblox, и был приятно удивлён её простотой и мощностью. Код в нём пишется на языке Lua (если быть точнее, то на специальном подмножестве «Roblox Lua», но для начинающих это не имеет значения).

На мой взгляд, в обучении программированию очень важен короткий цикл обратной связи — «написал две строчки, запустил, увидел, как они что‑то поменяли, продолжаешь».

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

После прохождения туториала Coding Fundamentals (около 4 часов в неспешном режиме), я потратил несколько вечеров на создание демонстрации работы «пузырьковой» сортировки.

Код вышел в ~300 строчек с учетом работы с 3D примитивами, которые изображают сортируемый массив:

https://github.com/itlgrim/roblox‑demos/blob/main/sorting‑algorithms/bubble‑sort/BubbleSort.module.lua

Кому интересно, там же лежит файл с уровнем, который можно открыть в Roblox Studio:

https://github.com/itlgrim/roblox‑demos/blob/main/sorting‑algorithms/bubble‑sort/Bubble Sort Demo v1.rbxl

Саму трёхминутную демку залил на YouTube (как оказалось, я не первый, кто пишет сортировки в Roblox, но могу заверить, что эта идея родилась у меня независимо):

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Что если использовать гамма-спектрометры и бета-спектрометры Atom Spectra как поисковые приборы?

В этом видеоролике поговорим о применении гамма-спектрометров Atom Spectra Nano, Atom Spectra Nano PRO и Atom Spectra Beta PRO в качестве поисковых приборов. И покажем на примере перемещающегося источника излучения модель пятнистости распределения загрязнения на грунте.

Да. Над программным обеспечением в части графика cps/МЭД ещё можно поработать. Эта часть приложения для гамма-спектрометра уступает приложению Atom Swift для счётных сцинтилляторов и гейгеров Проекта Атом. Тем не менее вполне информативно.

На территориях радиоактивно загрязненных и обозначенных на картах по цезию-137 как 4-40 кБк/кв.м никакие приборы, называемые в народе дозиметры не покажут никаких интересных средних значений. На правой части этого диапазона у спектрометра ещё есть шансы показать загрязнение по цезию-137 (линия/пик на 662кэВ) довольно быстро. А вот в левой части этого диапазона загрязнений можно попасть в ситуацию, когда время на набор статистики в качестве спектрометра окажется больше, чем возможность просто перемещая спектрометр Atom Spectra на дистанциях 10-30 метров легко обнаружить пятнистость распределения загрязнения. Пятнистость есть всегда. Это не идеальное лакокрасочное покрытие. Именно пятнистость даст бОльший разброс значений cps или мощности дозы по сравнению с зоной 2кБк/кв.м. В зоне 2кБк/кв.м никакими приборами и никакими методами загрязнение не обнаружить. Дальше только радиохимия.

Теги:
Рейтинг0
Комментарии0

Что если детектор радиации должен обнаружить радиоактивный груз, двигающийся на большой скорости?

КБ Радар демонтировало свой стенд на ВДНХ 25 февраля вечером, но перед этим к нам в гости приехал соавтор приложения для спектрометров Atom Spectra - Сергей и привез с собой кучу интересных датчиков радиации  для тестирования скорости реакции датчиков на движущийся источник излучения.

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

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Состоялся выпуск Tcl/Tk 8.6.14, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса. Основное распространение Tcl получил как платформа для создания интерфейсов пользователя и как встраиваемый язык, при этом Tcl также подходит для быстрого прототипирования, веб-разработки, создания сетевых приложений, администрирования систем и тестирования.

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

Основные изменения в Tcl/Tk:

  • приведена к кроссплатформенному виду нормализация файловых путей и обработка символа "~" в путях;

  • имя пути, начинающееся с '//' не замещается через '/' в том числе в Cygwin и в QNX;

  • разрешён пустой режим в [chan create] ("[chan create {} $cmd]") для разрешения refchan версии [socket -server];

  • повышена производительность fork при использовании многопоточности с помощью vfork/spawn;

  • обеспечен вызов getsockname(2) в Tcl_MakeFileChannel(3) только тогда, когда это необходимо;

  • защита Tcl/tclsh усилена с помощью функции pledge(2) в OpenBSD или похожих механизмов;

  • tcltest адаптирован для поддержки Tcl 9 (>= tcltest 2.5.7);

  • обеспечено применение замещающего символа при декодировании неполных последовательностей Unicode;

  • из win/makefile.vc убрана опция utf16;

  • zlib обновлён до версии 1.3.1;

  • libtommath обновлён до версии 1.2.1;

  • install-sh обновлён до версии 2020-11-14.01;

  • добавлена поддержка Unicode 15.1;

  • в "[interp limit time -seconds]" решена проблема 2038 года.

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Копал в поисках хорошего материала — и откопал вот это чудо:

HOMS — Hardware-Oriented Microprocessor Simulator, или аппаратно-ориентированный симулятор микропроцессора. Автор этого образовательного проекта — профессор, написавший две книги в области электроники и программирования:

Github автора.

В первоисточнике о проекте утверждается, что:

  • комплектующие доступны на любом рынке электроники;

  • возможно создавать инструкции ассемблера под свои задачи;

  • HOMS не требует ПК.

Лицензия — CC BY-NC-SA 4.0 DEED.

Полное техническое описание HOMS в PDF.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Проклятие дженериков 💀

Дженерики могут показаться очень простой темой.
Например, вот так в Java выглядят классные и простые методы интерфейса List:

interface List<E> extends Collection<E> {
	boolean add(E e);
	E set(int index, E element);
}

Но у обобщений много нюансов: вложенность, вариантность, границы и т.д. Это сильно усложняет их использование.
Вот не менее классный, но совсем непростой flatMap интерфейса Stream🙈:

interface Stream<T> extends BaseStream<T, Stream<T>> {
	<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
}

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

Из-за таких сложностей, в языке Go (философия которого - простота и минимализм) дженерики появились аж через 12 лет после релиза языка. А первый коммент про то что нужны дженерики появился меньше чем через 24 часа🙃

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

  • С++ вышел в 1979, дженерики - 1986

  • Java - 1996, дженерики - 2004

  • C# - 2001, дженерики - 2005

  • Go - 2009, дженерики - 2021

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии8

16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта. Часть 2

← Читать первую часть

  1. resumeworded — Бесплатная мгновенная обратная связь о вашем резюме и профиле LinkedIn.

  2. jasper — ИИ копирайтер Jasper поможет генерировать интересные статьи в LinkedIn.

  3. resumaker ai — Конструктор резюме.

  4. rezi ai — Платформа для составления резюме.

  5. designs ai — Разработает основу резюме, подберет подходящие цвета и шрифты. Сэкономит вам время на дизайне, а вы сосредоточитесь на демонстрации своего опыта и навыков.

  6. mosaic ai — Помогает подобрать подходящие ключевые слова для резюме.

  7. CVJury — Конструктор резюме, сопроводительного письма и профиля LinkedIn.

Канал по программированию на Python (материалы, обзор библиотек и тд.)

Теги:
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта.

  1. kickresume — На сайте лежат настоящие резюме людей, которых взяли, например, в Amazon. Используйте их в качестве шаблона.

  2. copy ai — Поможет создать резюме на нейросетях. Выберите шаблон «Resume», вбейте желаемую должность, напишите о себе в свободной форме, стиль текста профессиональный и вы получите четкое описание ваших навыков разбитых по пунктам.

  3. enhancv — Более 1000 примеров резюме.

  4. HyreSnap — Бесплатный конструктор резюме на основе искусственного интеллекта. ИИ сделает ваше резюме максимально совместимым с описаниями вакансий.

  5. resumestar io — онлайн-редактор создает современные одностраничные резюме.

  6. skillroads — Конструктор резюме на базе искусственного интеллекта. ИИ знает, какие навыки необходимо добавить и какой опыт выделить.

  7. hiration — Сервис оценит текущее резюме и сопроводительное письмо и предложит изменения.

  8. resumA.I. — Напишет и отредактирует пункты резюме с помощью ChatGPT.

  9. thisresumedoesnotexist — 1000 примеров AI резюме (на базе enhancv).

    Часть 2. Продолжение

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

У меня есть студент колледжа, которому я иногда помогаю. Вчера он попросил пройти с ним задание колледжа. Язык - C, тема - работа с памятью, массивы, структуры. В задании дан task.h файл с описанием используемых структур и функций с именами, говорящими сами за себя, которые и надо реализовать в соответствующем task.c файле.

Открыл он task.c в VS Code, после объявления первой функции набрал открывающую скобочку и нажал enter. Codeium написал первую строку, - раньше мы занимались JavaScript, и я ему посоветовал его поставить. Правильно. Он нажимает tab, снова enter, - опять правильно. Короче, 95% кода он протаббил, причем, самый сложный код (работа с памятью). Немного сам поменял логику где надо только.

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

Минуты две мы это переваривали на уровне: "Он нас слышит". Потом я вспомнил, что этот же тест давался в колледже и год назад, а может и ранее, и, скорей всего, информация о нем есть в интернете, хотя прямых упоминаний я ненагуглил. Так что, и слышит, и видит, и знает.

Короче, чувства от всего этого очень противоречивые. Как бы не оказалось от Codeium вреда больше, чем пользы в этом случае.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

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

Playground screenshot
Playground screenshot

Кроме плейграунда работает локальная демка для Windows и Linux/x84-64 и сборка из исходников (ARM64).

Контекст: Экспериментальный язык Аргентум:

  • безопасный: memory safe, type safe, null-safe, array-index-safe..., не имеет небезопасных кастов, unsafe режима или взлома через рефлексию,

  • быстрый и компактный (не требует виртуальных машин и фреймворков, исполняемые файлы измеряются килобайтами),

  • автоматически удаляет объекты в предсказуемые моменты времени (что позволяет котролировать не только память, но и другие ресурсы),

  • в отличие от Раста и Свифта - гарантирует отсутствие утечек памяти,

  • в отличие от Go, Java, Kotlin, JS, Python - не использует сборщик мусора, поэтому приложения не имеют спорадических пауз и не страдают перерасходом памяти и процессорного времени,

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

  • во время компиляции детектит нарушения инвариантов композиции и агрегации в иерархиях объектов,

  • может напрямую вызывать Си-код и грабить корованы.

Детали: https://aglang.org/

Теги:
Всего голосов 12: ↑12 и ↓0+12
Комментарии28

Опубликован релиз языка программирования общего назначения Rust 1.76, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation.

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

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

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

Релиз Rust 1.75 состоялся в конце декабря 2023 года.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Полезные библиотеки Python список из более 100 мини - проектов⁠⁠

Всем привет! Хочу поделиться интересным сборником проектов от уровня "Hello World" до создания ботов WhatsApp.

Python-Mini-Projects — большой сборник(более 100) мини проектов на Python, подойдет как новичкам так и программистам с опытом.

На основе мини проектов можно делать свои более серьезные проекты или дорабатывать код))

Список всех мини программ сборника - клик

Сcылка на GitHub - клик

(Кстати если вы интересуетесь Python и хотите узнать больше об этом языке программирования, то приглашаю вас подписаться на мой канал! https://t.me/python_scrypt полезные материалы, уроки и новости из мира программирования)

Теги:
Всего голосов 10: ↑5 и ↓50
Комментарии0

Как внедрить телеметрию в on-premise-инфраструктуре

На предстоящий DevOpsConf 2024 выступлю с докладом по телеметрии и расскажу:
— Какие инструменты вам помогут в деле формирования, сбора, хранения и отображения данных телеметрии.
— Как выбрать тот или иной продукт и не наткнуться на несовместимость решений.
— Какой набор инструментов использовать, если вы работаете исключительно с on-premise инфраструктурой.
Материалы доклада помогут собрать решение для вашего случая.

Кому будет полезен доклад:
DevOps-инженерам и архитекторам.

Обо мне:
Ведущий DevOps-инженер Hilbert Team. Более 15 лет в IТ. Cоавтор курсов Yandex Cloud: «DevSecOps в облачном CI/CD», «Аутентификация и управление доступами», «Managed Service for ClickHouse», «Масштабирование нагрузки в K8s».

Если планируете посетить DevOpsConf, приходите 4 марта в 10:00 в Зал «Кейптаун».

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

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

Как улучшить читаемость и информативность трассировки кода?

Используйте осмысленные имена переменных и функций: Понятные имена облегчают понимание назначения вашего кода. Это поможет определить причину исключения при чтении трассировки.

Разбивайте сложные функции: Если функция слишком большая и выполняет по факту несколько действий, то отследить ход её выполнения будет сложнее. Разделение функции на несколько даст возможность более точно обрабатывать и анализировать исключения.

Добавляйте комментарии, используйте docstring: Документируйте свой код с помощью комментариев и описания функции, чтобы обеспечить дополнительный контекст.

Обрабатывайте исключения на соответствующих уровнях: Отлавливайте исключения ближе к источнику ошибки — это сделает вывод более информативным с точным указанием места вызова исключения.

Пишите содержательные сообщения об ошибках: При вызове исключений старайтесь писать более информативные описания ошибки.

Используйте логирование: Модуль logging позволяет дополнять и форматировать информацию об исключениях в более структурированном и настраиваемом виде:

try:
    unknown_method()
except Exception as e:
    logging.error("Error occurred", exc_info=True)

Используйте модуль traceback: Этот модуль также содержит методы, позволяющие обрабатывать возникшие исключения и дополнительно форматировать вывод информации об ошибке. Примеры использования traceback.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

В чём преимущество хэшируемых структур данных?

  • Быстрый поиск: хешированные структуры данных обеспечивают быстрое время поиска, обычно со средней временной сложностью O(1). Это происходит потому, что хэш-функция обеспечивает прямой доступ к местоположению нужного элемента в структуре данных, устраняя необходимость в последовательном поиске.

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

  • Работа с большими наборами данных: Хешированные структуры данных особенно полезны при работе с большими наборами данных. Постоянная временная сложность операций поиска, вставки и удаления обеспечивает постоянную производительность независимо от размера набора данных.

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

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Что такое «программирующая программа»?

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

Переход от машинных кодов к языкам высокого уровня стал возможен благодаря разработке методов структурного представления алгоритмов и автоматизации самого процесса написания программ.

Одним из основоположников отечественной кибернетики и теоретического программирования был математик Алексей Андреевич Ляпунов. Ещё в начале пятидесятых годов прошлого века он предложил операторный метод описания программ и разработал теорию синтаксических программных структур.

Под руководством Алексея Ляпунова в 1954 году в Институте математики АН СССР был написан первый советский транслятор — ПП-1, или «программирующая программа номер 1». Она вызвала большой интерес со стороны высшего руководства страны и получила статус приоритетной разработки.

Уже в 1956 году на её базе создали «ПП-2» первый в мире транслятор с загрузчиком, отладчиком и библиотекой основных процедур. Он использовался на засекреченной ЭВМ «Стрела», установленной в Вычислительном центре Минобороны СССР.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Поделитесь с командой создателей Go своими отзывами о разработке с помощью этого языка программирования.

Опрос для разработчиков Go 2024 открыт, и мы хотим услышать ваше мнение!

С 2016 года данные опросов разработчиков Go помогают нам определять ключевые модели использования, понимать проблемы разработчиков, узнавать предпочтения в отношении инструментов и отслеживать новые тенденции в сообществе. Ваши отзывы очень важны для формирования будущего Go, поэтому, пожалуйста, уделите 10–15 минут, чтобы заполнить опрос до 11 февраля 2024 года. Примите участие в опросе прямо сейчас!

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

Теги:
Рейтинг0
Комментарии0

Лучшие бесплатные курсы по Python за прохождение которых вам дадут сертификат⁠⁠. Часть:2

Продолжение первого поста

Инди‑курс программирования на Python — курс представляет собой серию последовательных видеоуроков, где подробно и простым языком объясняется информация. После каждого урока Вас ждут практические задания, чтобы закрепить материал. Оценка: 4.9/5

Добрый, добрый Python — этот курс позволит вам изучить основы программирования на языке Python, начиная с самых азов и заканчивая довольно серьезными конструкциями. После каждого теоретического видеоурока вы найдете практические задания на закрепление пройденного материала. Курс рассчитан и на самых начинающих и для тех, кто уже знаком с Python, но хотел бы повысить, а заодно и проверить, свой уровень. Оценка: 4.9/5

Python в примерах и задачах — в курсе реализуется проблемно‑ориентированное обучение, когда минимальные теоретические аспекты программирования на Python предлагаются слушателю, только если этого потребует решаемая задача. Кроме того, в научно‑популярной форме объясняется физическая, математическая или экономическая суть каждой задачи. Оценка: 4.8/5

Python: основы и применение — курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках. Оценка: 4.7/5

Программирование на Python — курс посвящен базовым понятиям и элементам языка программирования Python

Всем удачи в разработке!

Теги:
Рейтинг0
Комментарии1

Лучшие бесплатные курсы по Python за прохождение которых вам дадут сертификат⁠⁠. Часть:1

Привет, друзья! Сегодня рассмотрим подборку курсов для любителей потешить свое эго сертификатами) ну или если представится возможность то показать вашему HRу прося повышение З.П.?

Постарался собрать бесплатные курсы с наибольшими положительными отзывами для начинающих и junior разработчиков, для первых это будет возможность попробовать себя в новой профессии для вторых - возможность освежить знания. (кстати Python community developers - авторский канал со всеми полезностями, советую подписаться)

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

"Поколение Python": курс для начинающих - курс для начинающих знакомит школьников и всех, кому это интересно, с программированием. От себя добавлю что курс действительно очень подробный. Оценка: 5/5

"Поколение Python": курс для продвинутых - курс продолжает курс "Поколение Python: курс для начинающих" и рассказывает о дополнительных возможностях языка Python, а тренировочные задачи помогают закрепить каждую тему. Оценка: 5/5

Основы программирования на языке Python - курс знакомит с синтаксисом языка Python и базовыми алгоритмами, изучаемыми в средней и старшей школе. Оценка: 4.9/5

Продолжение в следующем посте

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Критические расширения - классная и простая идея проектирования, которую я нашел в X.509

Расширение (не имени файла) - хороший способ сделать формат файла или протокола достаточно универсальным. Мы до сих пор пользуемся древними протоколами TCP, HTTP - потому что они расширяемы и поэтому пригодны и сейчас. В HTTP можно напихать любые хидеры, которые его создателям в страшном сне не приснились бы - и все будет работать! В идеальном мире, вы могли бы купить древнюю машинку с Win95 / Office 7.0 и открыть на нем современный документ. Да, лишившись всех новых плюшечек, но хотя бы смогли бы прочитать текст. (Жаль, разработчики Office 7.0 не читали этот пост).

Так вот, в X.509 (RFC 5280) (та самая PKI инфраструктура, на которой все держится, все вот эти вот SSL/TLS/сертификаты) тоже есть расширения. У каждого расширения - идентификатор (естественно, старые реализации не могут знать новые расширения), а еще, внимание - булевый флажок - critical. Всего 1 флаг, 1 бит, но дает огромные возможности! Мы из будущего можем сказать старой программе - либо "ты не знаешь это расширение, но не парься, просто проигнорь и обрабатывай остальное содержимое файла (или запроса) как раньше" либо же "если ты не знаешь, как обрабатывать это - даже не пытайся!". Это просто и удобнее чем версия файла-протокола (мол, если не совпадает - отказ, апгрейд, галя, отмена).

Удивительный способ, как одним битом создать канал для общения между прошлым и будущим, а ПО или устройство сделать условно вечно полезным.

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии1