Заработай на задачках

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

Первая нормальная форма (1НФ)

  • Таблица должна быть двумерной, содержать строки (записи, raws) и столбцы (поле, атрибут, columns).
  • Каждая строка содержит информацию, которая описывает только одну сущность или часть одной сущности.
  • Каждый столбец содержит информацию для отдельного атрибута сущности, которая описана.
  • Каждая ячейка (пересечение записи и поля, cell) таблицы должна содержать только одно значение.
  • Все ячейки столбца (атрибута) одного вида.
  • Нет двух идентичных строк.
  • Порядок столбцов и строк не имеет значения.

Вторая нормальная форма (2НФ)

  • Таблица должна соответствовать первой начальной форме (1НФ).
  • Каждый не ключевой атрибут (столбец) зависит от первичного ключа.
  • Третья нормальная форма (3НФ)

  • Таблица соответствует второй начальной форме (2НФ)
  • В таблице нет транзитивных зависимостей (не должно быть ячеек, содержимое которых может относиться к нескольким записям(строкам)).

Частичный перевод https://www.git-tower.com/blog/git-cheat-sheet/

Создание репозитория

Получить копию существующего репозитория

$ git clone ssh://user@example.com/repo.git

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

$ git init

Локальные изменения

Изменённые файлы в рабочем каталоге

$ git status

Изменения в отслеживаемых файлах

$ git diff

Добавить все изменения в индекс git (для последующей фиксации состояния)

$ git add .

Добавить изменения в файлах _file list_ в индекс git (для последующей фиксации состояния)

$ git add -p _file list_

Зафиксировать все изменения в отслеживаемых файлах (проиндексировав перед этим известные файлы)

$ git commit -a

Зафиксировать текущее состояние репозитория (не обновляется индекс)

$ git commit

Изменить последнюю фиксацию состояния репозитория (использовать только на неопубликованной локальной копии)

$ git commit --amend

История фиксации изменений

Показать все точки фиксации, начиная с последней

$ git log

Отобразить все изменения файла _file_

$ git log -p _file_

Получить сведения о том, кто и когда изменял файл _file_

$ git blame _file_

Ветки и метки

Просмотр всех существующих веток репозитория

$ git branch -av

Переключиться на ветку _branch_

$ git checkout _branch_

Создать новую ветку _new-branch_, основанную на текущей

$ git branch _new-branch_

Создать новую отслеживаемую ветку, основанную на удалённой _remote/branch

$ git checkout --track _remote/branch_

Удалить локальную ветку _branch_

$ git branch -d _branch_

Установить метку текущей фиксации изменений

$ git tag _tag-name_

Обновление и публикация

Отобразить список удалённых репозиторий

$ git remote -v

Получить информацию об удалённом репозитории _remote

$ git remote show _remote_

Добавить новый удалённый репозиторий по ссылке _url_ с сокращённым названием _shortname_

$ git remote add _shortname_ _url_

Получить все изменения из удалённого репозитория _remote_ как отдельную ветку (не объединяя с текущей)

$ git fetch _remote_

Получить все изменения из удалённого репозитория _remote_ и объеденить их с веткой _branch_

$ git pull _remote_ _branch_

Опубликовать локальные изменения ветки _branch_ в удалённый репозиторий _remote_

$ git push _remote_ _branch_

Удалить ветку _branch_ на удалённом репозитории _remote_

$ git branch -dr _remote/branch_

Опубликовать метки

$ git push --tags

Слияние (объединения) и перемещение

Объеденить ветку _branch_ и текущую

$ git merge _branch_

Переместить HEAD на _branch_ (использовать только на локальной копии репозитория)

$ git rebase _branch_

Отменить перемещение

$ git rebase --abort

Продолжить перемещение после разрешения конфликтов

$ git rebase --continue

Запустить свою сконфигурированную программу для разрешения конфликтов

$ git mergetool

Использовать текстовый редактор для разрешения конфликтов и пометить их как разрешённые

$ git add _resolved_files_
$ git rm _resolved_files_

Отмена действий

Откатить все изменения в рабочей директории

$ git reset --hard HEAD

Откатить изменения для конкретного файла _file_

$ git checkout HEAD _file_

Вернуться к точке фиксации изменения _commut_ (создаётся новая точка с фиксацией всех изменений)

$ git revert _commit_

Переместить HEAD на предыдущую точку фиксации _commit_
…и отменить все изменения после неё

$ git reset --hard _commit_

…и пометить все изменения как непроиндексированные

$ git reset commit

…и сохранить незафиксированные изменения

$ git reset --keep commit

Существует достаточно простая утилита recode, которую можно установить в Debian следующим образом:
# apt-get install recode

После установки можно легко сменить кодировку любого файла, к примеру с CP866 на utf-8:
$ recode cp866..utf-8 file_name.txt