Skip to main content

03. ReadMe

Новый репозиторий

Создайте новую папку для проекта и создайте в ней файл readme.md.

sign in

При изменении расширения Windows может запросить подтвержение. В этом случае жмите Да.

sign in

Дважды кликните по созданному файлу. Система предложит выбрать приложение, с помощью которого следует открыть наш файл.

Если в расширение *.md уже связана какая-то программа, то чтобы открыть его в блокноте, нужно кликнуть по нему правой кнопкой мыши и выбрать в меню пункт Открыть с помощью.

Нажмите Ещё приложения

sign in

В раскрывшемся списке выберите Блокнот и нажмите ОК

sign in

Заполните его текстом

Это - тестовый репозиторий

sign in

Сохраните файл и запустите git-консоль.

Инициализируем репозиторий

git init

Добавим в него все файлы

git add *

Создадим первый комит

git commit -m "init"

Теперь создадим новый репозиторий на github:

sign in

В новом окне нажмите Create repository

sign in

Скопируйте адрес созданного репозитория

sign in

теперь свяжите свой локальный репозиторий с удалённым(на гитхабе)

git remote add origin https://github.com/aoklyunin/test-doc.git

Обратите внимание: адрес репозитория вам нужно указать свой.

Теперь отправьте локальные коммиты на сервер:

git push origin master

Теперь репозиторий будет выглядеть так:

sign in

У вас должен появиться новый блок документации. Он собирается автоматически из файла readme.md.

Пока что у нас в нём просто строка, но язык, на котором пишется документация, позволяет делать и более сложные вещи. Этот язык называется Markdown.

"Read me" переводится как "Прочитай меня". При создании любого проекта считается хорошим тоном основную информацию, необходимую для работы с проектов, помещать именно в него. Не принципиально, в каком именно регистре вы напишете каждую из букв названия файла. Иными словами, неважно, будет она большой или маленькой, главное, чтобы само название было именно readme.md.

Редактирование

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

Нажмите на значок карандаша

sign in

Откроется окно редактирования файла

sign in

Замените текст на этот:

# Мой тестовый репозиторий

Этот репозиторий создан для тренировки и не имеет никакой практической пользы.

## А жаль

Тем не менее, всё ещё впереди.

Теперь укажите название нового коммита readme modified в окне Commit changes

sign in

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

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

Теперь наш репозиторий будет выглядеть примерно так:

sign in

Теперь загрузим теперь изменения в локальный репозиторий

git pull origin master

Текстовый файл должен поменяться

sign in

Если вдруг изменения не загрузились, введите последовательно две команды:

git fetch origin master
git pull origin master

Markdown*

Теоретический блок

Вам нужно просто прочитать этот блок.

Чаще всего языки программирования для удобства делают не универсальными, как си или ассемблер, а прикладные. Такие языки разрабатываются для узкого класса задач. В этом случае язык "затачивается" под них, но из-за этого становится сильно ограниченным.

Например, для математических вычислений часто используют специальный язык Matlab, предназначенный для работы данными, представленными в матричном виде.

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

Такие языки называют языками разметки или языками вёрстки. Самый распространённый - это HTML. У него довольно много команд, особенно у пятой версии HTML5. В принципе, все страницы, которые мы просматриваем, прямо или косвенно задаются при помощи HTML.

Так как инструкций мало, то не нужно компилировать каждый сайт в бинарный код, т.е. собирать все инструкции процессору, как этот сайт рисовать. Достаточно написать интерпретатор, который будет готов обработать любую последовательность команд рисования.

Этот интерпретатор - некоторая замена процессора. Мы скомпилируем его (соберём в бинарный код) всего один раз, а потом каждую страницу сайта будем хранить в текстовом файле (или генерировать, сейчас в основном так сайты и разрабатываются) при помощи соответствующей последовательности команд. Такие языки называют интерпретируемыми. Существуют даже интерпретируемые языки общего назначения, т.е. языки, претендующие на универсальность, сравнимую с С++. Самый известный из них - Python.

Markdown - тоже интерпретируемый прикладной язык разметки. Он создан для оформления программистской документации. У него есть аналог - это Tex, язык, разработанный для вёрстки научных статей.

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

Для примеров использованы отрывки статьи с хабра.

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

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

В конце 80-х, после того, как Silicon Graphics Incorporated (SGI) начала использовать
процессоры MIPS в своём оборудовании, они стали темой активного обсуждения. SGI была
влиятельным инноватором на рынке компьютерной графики, особенно благодаря разработке
конвейеров обработки вершин с аппаратным ускорением, задачу которых изначально выполняло
ПО (внутри CPU).

На момент разработки PlayStation компания MIPS продавала серию процессоров R3000A. Это
были 32-битные машины из недорогого класса продукции компании. То есть R3000A не были частью
флагманской линейки (в отличие от R4000, который позже выберут другие производители), но
являлись привлекательной инвестицией с точки зрения цены.

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

При отображении получим:

В конце 80-х, после того, как Silicon Graphics Incorporated (SGI) начала использовать процессоры MIPS в своём оборудовании, они стали темой активного обсуждения. SGI была влиятельным инноватором на рынке компьютерной графики, особенно благодаря разработке конвейеров обработки вершин с аппаратным ускорением, задачу которых изначально выполняло ПО (внутри CPU).

На момент разработки PlayStation компания MIPS продавала серию процессоров R3000A. Это были 32-битные машины из недорогого класса продукции компании. То есть R3000A не были частью флагманской линейки (в отличие от R4000, который позже выберут другие производители), но являлись привлекательной инвестицией с точки зрения цены.

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

Заголовки

Об уровнях заголовков

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

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

# Заголовок первого уровня

## Заголовок второго уровня

### Заголовок третьего уровня

###### Заголовок шестого уровня

Заголовки первого и второго уровня можно указывать ещё и добавляя подчёркивания на строчке под ними:

Заголовок первого уровня
========================

Заголовок второго уровня
-------------------------

Ниже приведён пример разметки текста при помощи заголовков и абзацев.

# Необычное решение
Чтобы обеспечить достаточные ресурсы, Sony выделила для общего использования 2 МБ ОЗУ. Любопытно, что
компания установила на материнскую плату чипы Extended Data Out (EDO). Они чуть более эффективнее
обычной DRAM и обеспечивают меньшие задержки.

## Перехват управления у CPU

В определённые моменты одной из подсистем (графика, звук или CD) могут с высокой частотой требоваться
большие блоки данных. Однако CPU не всегда способен справиться с такими запросами.

По этой причине контроллер CD-ROM, MDEC, GPU, SPU и параллельный порт при необходимости имеют доступ
к DMA-контроллеру. DMA берёт на себя управление основной шиной и выполняет передачу данных. Получающаяся
частота передачи намного выше, чем при использовании CPU, однако последний всё равно необходим для
подготовки DMA-передачи.

### Не думай о секундах свысока
Также стоит помнить о том, что при срабатывании DMA процессор не может получить доступа к основной шине.
Это значит, что CPU будет простаивать, если только для него нет работы в Scratchpad!

Дополнения к ядру
=================

Как и другие CPU на основе MIPS R3000, CW33000 поддерживает конфигурации с четырьмя сопроцессорами.
Sony решила использовать три:


### System Control Coprocessor




System Control Coprocessor (сопроцессор управления системой), обозначенный как CP0, является стандартным
блоком CPU MIPS. В системах на основе R3000 сопроцессор CP0 управляет реализацией кэша.
То есть он обеспечивает прямой доступ к кэшу данных (имеющему форму «Scratchpad») и к кэшу команд
(при помощи «изоляции кэша»). Управляющий сопроцессор также отвечает за обработку прерываний,
исключений и контрольных точек (последнее полезно при отладке).

Постойте, но разве сопроцессоры не должны только расширять функции CPU? Почему CP0 так тесно связан с CPU?

Замените содержимое файла readme.md и сохраните файл.

Добавьте все изменения в индекс

git add *

Создайте новый репозиторий

git commit -m "readme changed"

и отправьте изменения на сервер

git push origin master

При отображении получим:

Заголовки

Обратите внимание

Markdown не учитывает пробелы в начале строк и пустые строки. Правда, если у каждой строки абзаца стоит ровно 4 пробела, то markdown воспринимает такой абзац или последовательность абзацев, как блок кода. О таких блоках будет рассказано в следующем разделе.

Списки*

Теоретический блок

Вам нужно просто прочитать этот блок.

Списки бывают двух видов: упорядоченные (нумерованные) и неупорядоченные (ненумерованные).

Чтобы обозначить, что подряд идущие строки являются элементами неупорядоченного списка, надо в их начале поставить символы "*" или "-", а упорядоченного - просто пронумеровать.

1.  Проводник
2. Полупроводник
3. Диэлектрик

* Яблоки
* Апельсины
* Груши

- Java
- C++
- Python
  1. Проводник
  2. Полупроводник
  3. Диэлектрик
  • Яблоки
  • Апельсины
  • Груши
  • Java
  • C++
  • Python

Списки могут быть многоуровневыми. Для этого каждый новый вровень вложенности должен начинаться с допполнительных отступов:

Список дел:
- Магазин
* Молоко
* Хлеб
* Колбаса
- Встреча с друзьями
1. Договориться о встрече
2. Попытаться слиться за пару часов до
3. Всё таки прийти

Список дел:

  • Магазин
    • Молоко
    • Хлеб
    • Колбаса
  • Встреча с друзьями
    1. Договориться о встрече
    2. Попытаться слиться за пару часов до
    3. Всё таки прийти

Цитирование*

Теоретический блок

Вам нужно просто прочитать этот блок.

Для обозначения цитат в языке Markdown используется знак «больше» (">"). Его можно вставлять как перед каждой строкой цитаты, так и только перед первой строкой параграфа. Цитаты в языке Markdown выглядят следующим образом:

>Это пример цитаты,
>в которой перед каждой строкой
>ставится угловая скобка.

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

>Второй параграф.

Это пример цитаты, в которой перед каждой строкой ставится угловая скобка.

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

Второй параграф.

Вложение цитаты в цитату выглядит следующим образом:

> Первый уровень цитирования
>> Второй уровень цитирования
>>> Третий уровень цитирования
>
>Первый уровень цитирования

В результате на экран выводится следующее:

Первый уровень цитирования

Второй уровень цитирования

Третий уровень цитирования

Первый уровень цитирования

Уровень цитирования не может превышать пятнадцатый.

Горизонтальные линии*

Теоретический блок

Вам нужно просто прочитать этот блок.

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

Первая часть текста, который необходимо разделить
***
Вторая часть текста, который необходимо разделить

Или

Первая часть текста, который необходимо разделить

--- ------ ----------

Вторая часть текста, который необходимо разделить

Между дефисами добавлены пробелы. Их точно также можно добавить между звёздочками. Главное, чтобы звёздочек или дефисов было больше двух.

В результате на экран выводится следующее:

Первая часть текста, который необходимо разделить


Вторая часть текста, который необходимо разделить

Не забывайте про пустые строки

При использовании дефисов нужно оставлять до них и после по пустой строке. Со звездочками это необязательно.

Задание

Если вы выполнили все блоки теории в этой главе, то вам останется только опубликовать ваш локальный репозиторий на сервере github.

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

  1. init - заполнить файл readme.md текстом

    Это - тестовый репозиторий
  2. readme modified - заполнить файл readme.md текстом

     # Мой тестовый репозиторий

    Этот репозиторий создан для тренировки и не имеет никакой практической пользы.

    ## А жаль

    Тем не менее, всё ещё впереди.
  3. readme changed - заполнить файл readme.md текстом

     # Необычное решение
    Чтобы обеспечить достаточные ресурсы, Sony выделила для общего использования 2 МБ ОЗУ. Любопытно, что
    компания установила на материнскую плату чипы Extended Data Out (EDO). Они чуть более эффективнее
    обычной DRAM и обеспечивают меньшие задержки.

    ## Перехват управления у CPU

    В определённые моменты одной из подсистем (графика, звук или CD) могут с высокой частотой требоваться
    большие блоки данных. Однако CPU не всегда способен справиться с такими запросами.

    По этой причине контроллер CD-ROM, MDEC, GPU, SPU и параллельный порт при необходимости имеют доступ
    к DMA-контроллеру. DMA берёт на себя управление основной шиной и выполняет передачу данных. Получающаяся
    частота передачи намного выше, чем при использовании CPU, однако последний всё равно необходим для
    подготовки DMA-передачи.

    ### Не думай о секундах свысока
    Также стоит помнить о том, что при срабатывании DMA процессор не может получить доступа к основной шине.
    Это значит, что CPU будет простаивать, если только для него нет работы в Scratchpad!

    Дополнения к ядру
    =================

    Как и другие CPU на основе MIPS R3000, CW33000 поддерживает конфигурации с четырьмя сопроцессорами.
    Sony решила использовать три:


    ### System Control Coprocessor




    System Control Coprocessor (сопроцессор управления системой), обозначенный как CP0, является стандартным
    блоком CPU MIPS. В системах на основе R3000 сопроцессор CP0 управляет реализацией кэша.
    То есть он обеспечивает прямой доступ к кэшу данных (имеющему форму «Scratchpad») и к кэшу команд
    (при помощи «изоляции кэша»). Управляющий сопроцессор также отвечает за обработку прерываний,
    исключений и контрольных точек (последнее полезно при отладке).

    Постойте, но разве сопроцессоры не должны только расширять функции CPU? Почему CP0 так тесно связан с CPU?

Ссылку на github-репозиторий необходимо отправить в поле ввода задания на сайте mdl.

Ссылка на контест.