• Минпросвещения хочет TikTok, только свой и со школьниками
    +4

    В других источниках писали, что чиновники хотят, чтобы в отечественном тиктоке был только образовательный, интересный и полезный контент. Один вопрос — как это получится, если в подобных соцсетях контент производят сами школьники?

  • Ответ на статью «Покорение “Москвичом” Сибири», или Двадцать лет спустя
    +1

    Всего лишь 7 лет назад, 4 студента задумали писать коллективный дипломный проект. С темой "автономная система управления автомобилем", в простонародье — автопилот. Уже были наработки (по крайне мере, в части радара и анализа окружающей среды, модели поведения и прочего), нужно было разработать компьютерное зрение и прототип. Но увы. Завкафедрой отклонил на утверждении тему проекта с мотивацией "беспилотный автомобиль никому не нужен ещё лет 20". Буквально через 2 месяца Гугл представил свою первую версию автопилота, потом понеслась Тесла и даже КамАЗ. В итоге на диплом делалась унылая САПР для проектирования сборочных линий (которую так и не доделали, но диплом сдали), а обида на руководство кафедрой осталась примерно такая же, как у автора. До сих пор обидно. Так что не только 20 лет назад, но и до сих пор откаты важнее прогресса, а у инженеров нет права голоса.

  • Как устроена защита детей от информации — и феерическая история про то, откуда она сначала взялась (18+)
    +10
    Я абсолютно соглашусь про безответственность родителей.

    Когда вышел отличный мульт «Полный расколбас», мы с супругой пошли на него в кино, вполне осознанно. Хотя даже с осознанием, у супруги случился культурный шок. Мне фильм понравился. Но самое страшное то, что примерно половина зала была забита детьми 6-12 лет вместе с родителями. А когда родители в ужасе выбегали со своими травмированными чадами из зала и неслись к кассам, дабы излить благородный гнев, им тыкали носом в надпись на пол-афиши «18+». Я очень надеюсь, что многим это послужило отличным уроком, чтобы фильтровать контент (хотя детей мне жаль).

    Мораль проста: родителям массово наплевать как на органичения, так и на то, какой контент потребляют их дети — лишь бы не отвлекали.
  • Категории вместо директорий, или Семантическая файловая система для Linux
    +1
    Извините, был не очень внимателен значит. Удачи вашему проекту!
  • Категории вместо директорий, или Семантическая файловая система для Linux
    0
    Вы пишете в заголовке статьи «Семантическая файловая система», это действительно так? Или же вы оперируете директориями стандартной ФС (ext4?), создавая дополнительные файлы и оперируя ссылками? Если последнее, то не рассматривали упаковать в действительно файловую систему, манипулировать разметкой диска? Тогда и поддержка стандартных команд sh будет, таких как cd/cp/ls и прочее. Идея отличная, отложу себе в закладки. Однажды доберусь в своей ОС до файловой системы и попытаюсь в категории :)
  • OS1: примитивное ядро на Rust для x86
    +1
    Наплыв комментариев вынудил меня пойти копаться в ГОСТах и поправках, и вот что обнаружилось. КБ — 1024 байт, кБ — 1000 байт, и так далее. С другой стороны, в западных стандартах склоняются к KiB, MiB, etc… Сложный, в общем, вопрос. Убрал со всех статей КиБ, Миб, ГиБ, дабы никому глаз не резало и не мешало сути.
  • OS1: примитивное ядро на Rust для x86. Часть 3. Карта памяти, Page fault exception, куча и аллокации
    0
    По поводу страничной организации для x86 очень много информации, есть несколько отличных статей и на Хабре, поэтому на этом я и не стал заострять внимание и у меня используется простейшая организация страниц с одной директорией.

    Автор описывает некоторые конкретные нужные ему аспекты

    Верно, потому что я делюсь своим опытом, в тех вопросах, в которых были проблемы у меня. А если почитать форум OSDev, то видно, что не у меня одного.

    когда-то я писал свою ОС, работающую в защищенном режиме и было это в 7 классе школы

    Расскажите, как вы организовали кучу и выделение памяти, мультизадачность? Было бы полезно узнать ваш опыт.
  • OS1: примитивное ядро на Rust для x86. Часть 3. Карта памяти, Page fault exception, куча и аллокации
    0
    Я тоже додумался с пятого прочтения, а закодить смог с третьей попытки. Зато теперь гораздо проще стало разбираться, и чем дальше, тем интереснее
  • OS1: примитивное ядро на Rust для x86. Часть 3. Карта памяти, Page fault exception, куча и аллокации
    0
    Миллион целых — потому что у меня в цикле действительно миллион, и это размер листа, никакого отношения к байтам. А по поводу мебибайта/мегабайта вы правы, смешиваю. Привычку писать в сокращении выработал, а в тексте пока нет.
  • Пишем операционную систему на Rust. Реализация страничной памяти (новый вариант)
    +2
    Спасибо за перевод! Филипп как обычно великолепен. Теперь иерархические таблицы выглядят не так страшно, надо бы забрать в проект.
  • OS1: примитивное ядро на Rust для x86. Часть 3. Карта памяти, Page fault exception, куча и аллокации
    0
    Сударь, я вам ответил
  • OS1: примитивное ядро на Rust для x86
    +5
    Вам сюда. Я использую двоичные приставки, идеологически.
  • OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT
    0

    Да, все через GRUB. Начальная загрузка пока для меня выглядит сложной, так как я ещё не разобрался на приличном уровне с носителями и файловыми системами, чтобы корректно прочитать и загрузить образ. Думаю, что когда доберусь до реализации работы с HDD, можно будет и в сторону своего загрузчика посмотреть

  • OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT
    +2
    Похоже, я пропустил. Писал код когда еще не были стабильны. Надо освежить голову и пересмотреть код. Спасибо.
  • OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT
    0
    В текущем состоянии моего кода материала на 4-5 статей должно хватить, так что будут еще :) Пока перерыв от разработки и переваривание информации.
  • OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT
    0
    Интересно, а транслятор сможет это оптимизировать

    Думаю, что не сможет — я же не встраиваю ассемблер в rs-файлы и не пишу интринсики. Более того, у меня опасные ассемблерные методы обернуты в безопасные методы Rust, поэтому там на два вызова больше. А линкер скорее всего такой оптимизацией не занимается. Хотя как знать.

    Или в локальной LDT.
    Если мы собираемся использовать не плоские глобальные сегменты, а выдавать каждой задаче свои, то места в GDT всем не хватит. Разместив дескрипторы в LDT (скажем, код-данные-стек-служебное что-то), мы займем в GDT только одну ячейку и 4 — в LDT данной задачи.

    Где-то я встречал утверждение, что современные компиляторы не могут в сегментную модель, только в плоскую. Я не берусь утверждать, что оно верное, но около 100% программ собираются под плоскую модель. Так что да, можно. Но я не увидел смысла. И даже можно было бы запускать плоские программы в сегментированной памяти — как вы описываете, выделяя по одному сегменту каждой задаче, но опять же — зачем, если никто так не делает, и пишут, что это устаревшая система.
  • OS1: примитивное ядро на Rust для x86. Часть 2. VGA, GDT, IDT
    0
    Благодарю, поправил. Я использую структуру для символа, их как раз у меня 80*25, поэтому отложилось так :)
    #[derive(Debug, Clone, Copy, PartialEq, Eq)]
    pub struct ColorCode(u8);
    
    #[derive(Debug, Clone, Copy, PartialEq, Eq)]
    #[repr(C)]
    struct ScreenChar {
        ascii_character: u8,
        color_code: ColorCode,
    }
    
  • OS1: примитивное ядро на Rust для x86
    0
    Вот этот кусок понять не смог.
    Линкер собирает программу с опорой на BaseAddress, который в общем случае, может быть любым. Нам ведь никто не запрещает разместить ядро по адресу, скажем, 1000h (нулевая страница — guard), а все прикладные программы компоновать с адресом загрузки 80000000h.

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

    Совершенно верно. Однако, это специфические случаи, требующие скармливания дополнительных инструкций линкеру. В самом общем случае под большинство ОС программы предпочитают начинаться с начала адресного пространства. В том же Windows дела обстоят так: 0x00000000 — 0x0000FFFF: нулевые указатели, 0x00010000 — 0x7FFEFFFF: память программы, 0x80000000 — 0xFFFFFFFF: память ядра.

    А как же потери при небольших размещениях? Не велика гранулярность для 32 бит?

    Велика, конечно. Надо брать 4 КиБ. Когда-нибудь у меня дойдут руки и до 4 КиБ. На этом этапе я захотел сделать жизнь чуть проще, оставив один уровень таблиц, благо PSE это позволяет.
  • OS1: примитивное ядро на Rust для x86
    0

    Вообще "правильный" ассемблер в данном случае не очень хорош, так как под другие платформы в основном используется синтаксис at&t, и портировать будет сложнее — придется изменять не только код под платформу, но и систему сборки. Но мне приятнее писать в Интел синтаксисе, так что пусть будет.

  • OS1: примитивное ядро на Rust для x86
    +2
    Конечно же! Как я мог забыть… Я постоянно поглядывал в репозиторий. Сейчас добавлю в статью, спасибо вам.
  • Потерявшая руку женщина получила один из самых совершенных бионических протезов в мире
    0
    Это прекрасно!
    Но все же, ни одна подобная статья не освещает вопрос энергоэффективности. Как часто приходится заряжать девайс? Где находятся элементы питания и сколько они весят?
    Потому как даже самый совершенный протез в мире будет практически бесполезен в повседневной жизни, если тебе нужно будет сидеть возле розетки с кабелем хотя бы 50% времени.
  • Известную спортсменку, в велосипеде которой нашли скрытый электромотор, дисквалифицировали на шесть лет
    0
    В 2012 болгарский шахматист Борислав Иванов явно пользовался тем, что игры транслируются он-лайн. Легко гуглится инфа на эту тему. Судя по всему, не обошлось без ПК да микрогарнитуры.
    Да и вообще таких случаев немало.
  • Утечка документов с личными данными пассажиров РЖД и «Аэрофлота»
    –1
    Чувствуется, кого-то сегодня уволят…