Pull to refresh
9
0
Андрей Останин @Kaberc

Фрилансер

Send message

Операционная система на Rust. Страничная память: продвинутый уровень

Reading time 21 min
Views 8.7K
В этой статье объясняется, как ядру операционной системы получить доступ к фреймам физической памяти. Изучим функцию для преобразования виртуальных адресов в физические. Также разберёмся, как создавать новые сопоставления в таблицах страниц.

Этот блог выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий тикет. Все исходники для статьи здесь.

Введение


Из прошлой статьи мы узнали о принципах страничной организации памяти и о том, как работают четырёхуровневые страничные таблицы на x86_64. Мы также обнаружили, что загрузчик уже настроил иерархию таблиц страниц для нашего ядра, поэтому ядро работает на виртуальных адресах. Это повышает безопасность, но возникает проблема: как получить доступ к настоящим физическим адресам, которые хранятся в записях таблицы страниц или регистре CR3?
Читать дальше →
Total votes 47: ↑47 and ↓0 +47
Comments 2

Что такое психическое здоровье: взгляд со стороны психологии / психотерапии

Reading time 28 min
Views 51K
Привет, читатель!

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

ПРЕДСТАВЬТЕ, ЧТО ТУТ — КАРТИНКА ДЛЯ ПРИВЛЕЧЕНИЯ ВНИМАНИЯ


tl:dr: В статье рассматривается вопрос психического здоровья на примере модели, предложенной Нэнси Мак-Вильямс (“16 элементов психического здоровья”). По каждому элементу я постараюсь дать примеры — как выглядит “сломанная” в этом аспекте психика, что было сделано, чтобы её “починить” (в данном конкретном случае), какие ошибки были допущены, что ещё можно было бы сделать и т.д.

К сожалению, стремление к упрощению материала с моей стороны значительно снизило точность и объективность формулировок, предупреждаю сразу.
Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Comments 130

Кастомный подход для нормализации и сброса стилей (custom-reset.css)

Reading time 9 min
Views 27K


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

Почему нормалайз, а не ресет. Он заточен именно под кросбраузерность, что очень важно. Но в чистом виде он меня вообще не устраивал, различные отступы, бордеры и т. д. только мешали, потому я немного подогнал его под свои потребности, поудаляв то, что мне было не нужно.
Со временем файл разрастался, лишнее из нормалайза удалялось, недостающее добавлялось.
Основной целью его создания было максимально подготовить основу для любого проэкта, что по-моему получилось, даже очень удачно. Файл получился довольно универсальный, но все же перед подготовкой проэкта в него нужно заглядывать и возможно что-то коректировать.

Надеюсь вы подчеркнете для себя что-то полезное, здесь вы можете ознакомиться с ним.
custom-reset.css
Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Comments 34

Альтернативы продуктам Google

Reading time 3 min
Views 96K


Корпорация Google с каждым годом усиливает своё влияние. Минули времена, когда люди делились ссылкой на новый поисковик с экзотическим названием google.com вообще без рекламы, а потом инвайты на Gmail ценились на вес золота. Сейчас ситуация совершенно иная. Как-то незаметно Google вырос и изменил бизнес-модель.

Активисты движения Restore Privacy считают, что «вся бизнес-модель Google основана на том, что вы становитесь под их корпоративную слежку. Вот и всё. Все, что они делают — это переупаковывают массовую корпоративную слежку в удобные, бесплатные, модные приложения, которые засасывают все ваши данные. Ваши личные данные помогают Google доминировать на рынке интернет-рекламы».

В такой модели вы являетесь продуктом.
Читать дальше →
Total votes 93: ↑62 and ↓31 +31
Comments 178

Swift для дата-сайентиста: быстрое погружение за 2 часа

Reading time 9 min
Views 13K


Google объявил, что TensorFlow переезжает на Swift. Так что отложите все свои дела, выбросьте Python и срочно учите Swift. А язык, надо сказать, местами довольно странный.


Total votes 27: ↑23 and ↓4 +19
Comments 9

Операционные системы с нуля; Уровень 0

Reading time 11 min
Views 132K

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


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

Читать дальше →
Total votes 80: ↑78 and ↓2 +76
Comments 55

Android и кастомные шрифты или «Да здравствует API 26»

Reading time 2 min
Views 25K
С приходом API 26 наконец-то закончилось время, когда мы были вынуждены извращаться и писать кастомные View когда дизайнер хотел использовать что-то помимо Roboto.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 5

Настройка среды разработки Webpack 3 + Angular 4: от сложного к простому

Reading time 13 min
Views 23K
Всем привет!

Современное front-end-приложение на Angular должно включать в себя следующие характеристики:

  • Возможность использования типизированного JS — Typescript
  • Обеспечение удобства и производительности разработки с помощью HMR (hot module replacement);
  • Модульность приложений и возможность отложенной загрузки модулей (Lazy Loading);
  • AoT — режим (ahead-of-time), повышающий производительность приложения.

Существует много вариантов сборки, решающих эти задачи (angular cli, A2 seed и т. д.). Обычно они имеют сложную структуру, плохо настраиваются/расширяются и представляют собой монолит, который невозможно изменить.

В статье я расскажу, как совместить Angular 2+ с webpack и разобраться со всеми этапами сборки/разработки.

Вы удивитесь, как это просто.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 23

Миграция устаревшей информационной системы на платформу CUBA

Reading time 8 min
Views 6.4K


Быстрое развитие технологий и инструментов разработки ПО приводит к тому, что технологии, лежащие в основе информационной системы, теряют свою актуальность и становятся тяжелой ношей. Взять, к примеру, какую-нибудь разработку компании для автоматизации процессов, написанную на Visual Basic 6.0 или Delphi 7, которая, мягко говоря, не сочетается с новыми трендами “все в web, все в облака”, да и не соответствует амбициям разработчиков.


Проблема перевода старой ИС на новые технологии, доходя до руководства, традиционно упирается в деньги: “поживем и так...”. Для разработчиков, в свою очередь, уже перенос модели данных и шаблонное программирование стандартных экранов вызывает негатив. При этом зачастую все усложняется требованием сохранения работоспособности старой ИС на этапе разработки и внедрения новой. Так или иначе, по моему опыту, продукт либо умирает совсем, вызывая мучения как программистов, так и пользователей, либо все же приходит понимание, что обновление ИС — неотложная необходимость.


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


Под катом пошаговая инструкция, как модернизировать устаревшую систему с минимальными усилиями на перенос модели данных и стандартных CRUD экранов.


Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 4

Сложно о простом: ESLint в команде

Reading time 6 min
Views 130K
Маленькое введение. Скорее всего этот пост будет интересен только тем, кто знает, что такое ESLint, но всё же сделаю небольшую вводную — а то сам сильно расстраиваюсь, когда открываю публикацию, и она начинается словами “уже 10 лет мы используем ххх, о котором вы конечно же знаете, а написать мы решили про xxx.yyy, что никто никогда не делал, но наверняка это очень круто”.

Итак, ESLint это крутой инструмент, который позволяет проводить анализ качества вашего кода, написанного на любом выбранном стандарте JavaScript. Он приводит код к более-менее единому стилю, помогает избежать глупых ошибок, умеет автоматически исправлять многие из найденных проблем и отлично интегрируется со многими инструментами разработки (привет, Jetbrains, мы любим вас!). Кстати, он, как и другие линтеры, не обязывает вас к одному какому-то конкретному стилю. Наоборот — вы можете выбрать что-то из лучших практик и доработать по своему усмотрению!

Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Comments 29

ASP.NET Core: ваше первое приложение на Linux c использованием Visual Studio Code

Reading time 5 min
Views 86K
Решил недавно написать небольшое ASP.Net MVC приложение после многолетнего перерыва и знающие люди на Хабре подсказали попробовать новый ASP.Net Core, тем более, что он работает в Линуксе из коробки без необходимости задействовать mono, и, судя по последним тестам, даже показывает неплохую производительность. За основу взял аналогичную статью для Mac, однако здесь в отличии от вдохновившей меня статьи хочу описать процесс пошагово в одном месте, для того, чтобы не пришлось лазить по перекрёстным ссылкам, пытаясь разобраться как установить непонятно для чего предназначенные приложения и пакеты. Такое подробное описание процесса возможно поможет многим избежать граблей, с которыми пришлось столкнуться мне. Несколько фраз и рисунков, в части одинаковой для любой платформы, с правками и корректировками взяты из статьи для Mac.

Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 42

Множественные вселенные могут оказаться одной и той же Вселенной

Reading time 11 min
Views 42K

Если концепция мультивселенной кажется странной, так это потому, что нам нужно поменять наши представления о времени и пространстве


image

Название изображения, «Гравюра Фламмариона», может быть неизвестным для вас, но вы, скорее всего, много раз его видели. На нём изображён пилигрим в плаще и с посохом. За ним – ландшафт из городов и деревьев. Его окружает кристальная оболочка, испещрённая бесчисленными звёздами. Он достиг края мира, проник на другую его сторону и поражённо взирает на новый мир света, радуг и огня.

Впервые изображение было опубликовано в книге 1888 года французского астронома XIX века Камиля Фламмариона «Атмосфера: Популярная Метеорология». Изначально она была чёрно-белой, хотя сейчас можно встретить и раскрашенные версии. Он отмечает, что небеса действительно выглядят, как купол, на котором закреплены небесные тела, но впечатления обманчивы. «Наши предки, – пишет Фламмарион, – представляли себе, что этот голубой свод и есть такой, каким его видят их глаза. Но, как писал Вольтер, это так же осмысленно, как шелкопряд, прядущий свою сеть до пределов вселенной».
Читать дальше →
Total votes 28: ↑24 and ↓4 +20
Comments 34

Как начать и не бросить писать ОС

Reading time 7 min
Views 76K
Очередной велосипедЧитая Хабр в течении последних двух лет, я видел только несколько попыток разработки ОС (если конкретно: от пользователей pehat и iley (отложено на неопределённый срок) и Igor1024 (не заброшено, но пока больше походит на описание работы защищённого режима x86-совместимых процессоров, что бесспорно тоже необходимо знать для написания ОС под x86); и описание готовой системы от alman (правда не с нуля, хотя в этом нет ничего плохого, может даже наоборот)). Мне почему-то думается, что почти все системные (да и часть прикладных) программисты хотя бы раз, но задумывались о написании собственной операционной системы. В связи с чем, 3 ОС от многочисленного сообщества данного ресурса кажется смешным числом. Видимо, большинство задумывающихся о собственной ОС так никуда дальше идеи и не идёт, малая часть останавливается после написания загрузчика, немногие пишут куски ядра, и только безнадёжно упёртые создают что-то отдалённо напоминающее ОС (если сравнивать с чем-то вроде Windows/Linux). Причин для этого можно найти много, но главной на мой взгляд является то, что люди бросают разработку (некоторые даже не успев начать) из-за небольшого количества описаний самого процесса написания и отладки ОС, который довольно сильно отличается от того, что происходит при разработке прикладного ПО.

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

Читать дальше →
Total votes 125: ↑117 and ↓8 +109
Comments 55

Как помочь ребенку выучить таблицу умножения

Reading time 6 min
Views 4K
image

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

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

Описанные приемы довольно просты, и, строго говоря, давно известны. Запоминание в моем рассказе происходит тоже через частые повторения примеров, но все они – лишь разные события одной игры в которой этим перемножения оживают. Я обобщил известные мне приемы и составил для своего ученика такое расписание, чтобы чуть более сложное чередовалось с простым. Ввиду занятности такого обучения, одновременно с запоминанием таблицы ребенок узнает и другие интересные вещи из мира арифметики и вообще математики: о простых числах, признаке деления на 3, степенях двойки и так далее.

Также косвенно в рассказе упоминаются и некоторые способы мотивации. Само наше обучение, как станет ясно из повествования, представляло собой игру. Уверен, в комментариях вы сможете дополнить мою историю своими интересными идеями и методами, о которых я не знал, что поможет сделать рассказ более полным для того, кто натолкнется на него в поисках ответа на вопрос заголовка статьи.
Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Comments 13

Оригинальное резюме

Reading time 5 min
Views 6K
В банк пришло резюме

Иван Абрамович Левый

г. Харьков, квартиру снимаю
дом. нету
моб. все равно не позвоните, резюме потеряете, сам вам позвоню.

Позиция:

Ведущий разработчик, руководитель проекта. Глубокое понимание отрасли разработки ПО в условиях аутсорсинга, раскручивания заказчика на бабки, создание мощной видимости работы команды и развития проекта при реальной нулевой отдаче и отсутствии у программистов каких бы то ни было навыков.
Большой опыт руководства коллективами ничего не знающих студентов (ХИРЭ), напыщенных что-то знающих выпускников (ХАИ) и что-то знающих умников-халявщиков, которые все равно через два месяца свалят на бОльшую зарплату или за границу (ФизТех/МехМат ХГУ).
Глубокое понимание ведения переговоров с заказчиками/инвесторами, знание скидок во всех престижных саунах, клубах и, хм… массажных центрах.
Читать дальше →
Total votes 122: ↑106 and ↓16 +90
Comments 14

Что такое качество в веб-дизайне: примеры и рекомендации. Часть 3

Reading time 6 min
Views 12K
Не забудьте почитать:
Что такое качество в веб-дизайне: примеры и рекомендации. Часть 1. (или здесь)
Что такое качество в веб-дизайне: примеры и рекомендации. Часть 2. (или здесь)

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

05. Сдержанность и деликатность


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

Читать дальше →
Total votes 95: ↑88 and ↓7 +81
Comments 35

Что такое качество в веб-дизайне: примеры и рекомендации. Часть 2

Reading time 5 min
Views 11K
Не забудьте почитать: Что такое качество в веб-дизайне: примеры и рекомендации. Часть 1. (или здесь).

А сегодня поговорим о том, что такое хорошо продуманная типографика и как правильно организовать элементы на странице.

03. Хорошо продуманная типографика


Хотя реальные тексты для сайта будет писать не дизайнер, они играют такую же важную роль, как и общее качество контента. Дизайнер должен потрудиться, чтобы тексты легко читались и удерживали внимание. Существует множество способов сделать текст легко читаемым и приятным глазу. По мере перечисления правил и норм того, что следует и чего не следует делать, я приведу несколько примеров сайтов, где рациональная типографика действительно работает.
Читать дальше →
Total votes 82: ↑74 and ↓8 +66
Comments 24

Что такое качество в веб-дизайне: примеры и рекомендации. Часть 1

Reading time 5 min
Views 39K
Несколько выдающихся примеров и рекомендаций по созданию качественного дизайна веб-страницы или блога

quality

Многие люди склонны описывать предоставляемые ими услуги по веб-дизайну как «качественные». Но что означает здесь слово «качество», как определить, является дизайн качественным или нет? Что ж, я вижу несколько способов определить качество применительно к сфере веб-дизайна. Ведь если однажды определить, что позволяет создавать качественный веб-дизайн, можно использовать эти же приемы для оттачивания собственного стиля.

Чтобы объяснить, как я понимаю качество в дизайне веб-сайтов, я собрал несколько рекомендаций и примеров.
Читать дальше →
Total votes 164: ↑152 and ↓12 +140
Comments 64

VIM: Расширим и углубим себе на пользу

Reading time 2 min
Views 1.1K
Пара функций и команда (command) vim'а в помощь блоггеру.

Что они делают?
Меняют двойной минус и минус с пробелом по краям на неразрывный пробел с длинным тире ( —), кавычки «секунды» на кавычки «елочки».

Как этим пользоваться?
Скопировать код в свой .vimrc, открыть vim, написать:
Привьет, менья зовут "E-Type" −- на здоровье!

Затем в коммандном режиме:
:HTMLLineRU<CR>

где
 -- это нажатие на Enter.
Результатом команды будет окно с таким вот нехитрым содержимым:
Привьет, менья зовут &laquo;E-Type&raquo;&nbsp;&mdash; на здоровье!

Что в свою очередь вашим любимым браузером покажется как:

Привьет, менья зовут «E-Type» — на здоровье!

Сам код:
Total votes 11: ↑8 and ↓3 +5
Comments 2

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity