Кодеры за работой. Размышления о ремесле программиста
Питер Сейбел взял интервью у 15 профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Джейми Завински, Саймона Пейтон-Джонса, Питера Норвига, Дугласа Крокфорда, Джошуа Блоха, Брендана Айка, Джо Армстронга, Брэда Фицпатрика, создателя Живого Журнала, и других.
Все они «подсели» на программирование ещё в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу. Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.
Питер Сейбел взял интервью у 15 профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Джейми Завински, Саймона Пейтон-Джонса, Питера Норвига, Дугласа Крокфорда, Джошуа Блоха, Брендана Айка, Джо Армстронга, Брэда Фицпатрика, создателя Живого Журнала, и других.
Все они «подсели» на программирование ещё в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу. Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.
Что такое Git?
Git — абсолютный лидер по популярности среди современных систем управления версиями. Это развитый проект с активной поддержкой и открытым исходным кодом.
Git — система управления версиями с распределенной архитектурой. В отличие от некогда популярных систем вроде CVS и Subversion (SVN), где полная история версий проекта доступна лишь в одном месте, в Git каждая рабочая копия кода сама по себе является репозиторием. Это позволяет всем разработчикам хранить историю изменений в полном объеме.
Разработка в Git ориентирована на обеспечение высокой производительности, безопасности и гибкости распределенной системы.
Git — абсолютный лидер по популярности среди современных систем управления версиями. Это развитый проект с активной поддержкой и открытым исходным кодом.
Git — система управления версиями с распределенной архитектурой. В отличие от некогда популярных систем вроде CVS и Subversion (SVN), где полная история версий проекта доступна лишь в одном месте, в Git каждая рабочая копия кода сама по себе является репозиторием. Это позволяет всем разработчикам хранить историю изменений в полном объеме.
Разработка в Git ориентирована на обеспечение высокой производительности, безопасности и гибкости распределенной системы.
Что представляют из себя 3 области: Working directory, Staging area и Repository в Git?
Одно из ключевых понятий, которое Вы должны усвоить для успешной работы с GIT - это система трёх основных стадий: working directory, staging area и repository.
Working directory переводится как "рабочая папка". По сути это папка на компьютере, за которой GIT "следит".
Staging area - это файл, в котором хранится список того, что Вы хотите отправить на удаленный репозиторий.
В каком-то смысле, наличие Staging Area и такая работа GIT значит, что в Вашей рабочей папке (working directory) может лежать список президентов США, расписание автобусов на октябрь и фотография Вашего кота, но GIT на них не обратит никакого внимания - а значит, не загрузит в Интернеты - пока Вы об этом его не попросите. Конечно, по-хорошему все это там лежать не должно
Итак, мы указали что хотим следить за файлом. Что дальше?
Представим, что у Вас в папке несколько файлов. Вы поменяли один, добавили другой, почистили третий. Все эти файлы были в "перевалочном пункте" staging area, и поэтому они отслеживаются.
Вы поработали, и хотите все эти изменения "один пакетом" закинуть на облако. Вы знаете, что хотите запомнить состояние Ваших файлов именно на этом этапе (если бы GIT запоминал версии файлов staging area при каждом изменении, никакой бы памяти не хватило).
Вы даете команду GIT - "запомни состояние этих файлов". В этот момент GIT делает "снимок" нужных файлов - и они переходят в стадию "repository".
Одно из ключевых понятий, которое Вы должны усвоить для успешной работы с GIT - это система трёх основных стадий: working directory, staging area и repository.
Working directory переводится как "рабочая папка". По сути это папка на компьютере, за которой GIT "следит".
Staging area - это файл, в котором хранится список того, что Вы хотите отправить на удаленный репозиторий.
В каком-то смысле, наличие Staging Area и такая работа GIT значит, что в Вашей рабочей папке (working directory) может лежать список президентов США, расписание автобусов на октябрь и фотография Вашего кота, но GIT на них не обратит никакого внимания - а значит, не загрузит в Интернеты - пока Вы об этом его не попросите. Конечно, по-хорошему все это там лежать не должно
Итак, мы указали что хотим следить за файлом. Что дальше?
Представим, что у Вас в папке несколько файлов. Вы поменяли один, добавили другой, почистили третий. Все эти файлы были в "перевалочном пункте" staging area, и поэтому они отслеживаются.
Вы поработали, и хотите все эти изменения "один пакетом" закинуть на облако. Вы знаете, что хотите запомнить состояние Ваших файлов именно на этом этапе (если бы GIT запоминал версии файлов staging area при каждом изменении, никакой бы памяти не хватило).
Вы даете команду GIT - "запомни состояние этих файлов". В этот момент GIT делает "снимок" нужных файлов - и они переходят в стадию "repository".
Сумма минимумов
Напишите функцию, которая обработает двумерный массив. Она должна вернуть сумму минимальных значений в каждой строке двумерного массива
Пример:
Напишите функцию, которая обработает двумерный массив. Она должна вернуть сумму минимальных значений в каждой строке двумерного массива
Пример:
[
[1, 2, 3, 4, 5], // minimum value of row is 1
[5, 6, 7, 8, 9], // minimum value of row is 5
[20, 21, 34, 56, 100] // minimum value of row is 20
]6 основных пунктов для резюме Javanoscript разработчика
1. Знание принципов работы современных JavaScript фреймворков и библиотек
2. Знание подходов при проектировании, организации, контроле состояния и тестирования серверных и клиентских приложений
3. Умение применять паттерны проектирования: Event Loop, Flux, Immutable, Virtual DOM, Dependency Injection, Observables
4. Умение выбирать подходящие инструменты для проекта
5. Умение создавать web-приложения с использованием современных технологий
JavaScript Developer. Professional - этот курс - самый быстрый способ прокачать знания по JS и обновить резюме
1. Знание принципов работы современных JavaScript фреймворков и библиотек
2. Знание подходов при проектировании, организации, контроле состояния и тестирования серверных и клиентских приложений
3. Умение применять паттерны проектирования: Event Loop, Flux, Immutable, Virtual DOM, Dependency Injection, Observables
4. Умение выбирать подходящие инструменты для проекта
5. Умение создавать web-приложения с использованием современных технологий
JavaScript Developer. Professional - этот курс - самый быстрый способ прокачать знания по JS и обновить резюме
Что такое ветки в Git и зачем они нужны?
Ветка в Git это подвижный указатель на один из коммитов. Обычно ветка указывает на последний коммит в цепочке коммитов. Ветка берет свое начало от какого-то одного коммита.
Сделать новую ветку и переключиться на нее можно выполнив команды
Ветка обычно заканчивается специальным merge коммитом, который говорит, что ветку нужно объединить с какой-то другой веткой. В merge коммите содержатся две ссылки на два коммита которые объединяются в одну ветку.
Ветка в Git это подвижный указатель на один из коммитов. Обычно ветка указывает на последний коммит в цепочке коммитов. Ветка берет свое начало от какого-то одного коммита.
Сделать новую ветку и переключиться на нее можно выполнив команды
git pullПросто сделать ветку, не переключаясь на нее можно командой
git checkout –b <имя новой ветки>
git branch <имя ветки>переключиться на ветку
git checkout <имя ветки>Важно понимать, что ветка берет свое начало не от ветки, а от последнего коммита который находиться в той ветке, в которой вы находились.
Ветка обычно заканчивается специальным merge коммитом, который говорит, что ветку нужно объединить с какой-то другой веткой. В merge коммите содержатся две ссылки на два коммита которые объединяются в одну ветку.
Что позволяет делать git config? Какие три уровня конфигурации есть?
Git config позволяет просматривать и настраивать параметры, контролирующие все аспекты работы Git, а также его внешний вид. Чтобы указать уровень конфигурации, на котором производится работа, к команде git config можно добавить аргументы. Доступны следующие уровни конфигурации:
--local
По умолчанию, если не были переданы опции конфигурации, команда git config будет вести запись на локальном уровне. Конфигурация локального уровня применяется к репозиторию, в котором вызывается команда git config. Значения локальной конфигурации хранятся в файле, который находится в каталоге .git репозитория: .git/config.
--global
Конфигурация глобального уровня зависит от пользователя, то есть применяется к пользователю операционной системы. Значения глобальной конфигурации хранятся в файле, который находится в домашнем каталоге пользователя.
--system
Конфигурация уровня системы применяется ко всей машине. Она охватывает всех пользователей операционной системы и все репозитории. Конфигурация уровня системы указывается в файле gitconfig в корневой папке системы.
Итак, порядок приоритета уровней конфигурации следующий: локальный, глобальный, системный. Это значит, что при поиске значения конфигурации система Git будет начинать с локального уровня и подниматься до уровня системы.
Git config позволяет просматривать и настраивать параметры, контролирующие все аспекты работы Git, а также его внешний вид. Чтобы указать уровень конфигурации, на котором производится работа, к команде git config можно добавить аргументы. Доступны следующие уровни конфигурации:
--local
По умолчанию, если не были переданы опции конфигурации, команда git config будет вести запись на локальном уровне. Конфигурация локального уровня применяется к репозиторию, в котором вызывается команда git config. Значения локальной конфигурации хранятся в файле, который находится в каталоге .git репозитория: .git/config.
--global
Конфигурация глобального уровня зависит от пользователя, то есть применяется к пользователю операционной системы. Значения глобальной конфигурации хранятся в файле, который находится в домашнем каталоге пользователя.
--system
Конфигурация уровня системы применяется ко всей машине. Она охватывает всех пользователей операционной системы и все репозитории. Конфигурация уровня системы указывается в файле gitconfig в корневой папке системы.
Итак, порядок приоритета уровней конфигурации следующий: локальный, глобальный, системный. Это значит, что при поиске значения конфигурации система Git будет начинать с локального уровня и подниматься до уровня системы.
Что делают, как и зачем использовать команды git add и git commit?
Команды add и commit почти всегда неразлучны. Это как захват и сохранение данных. Вы не сможете ничего сохранить, пока не захватите нужные данные. Таким образом, команда add всегда предшествует commit.
С командой add вы указываете определенный файл, который требуется захватить в текущем состоянии, а commit сохраняет его копию.
Для захвата всех файлов (кроме исключений из git ignore) понадобится git add. Захват текущего состояния отдельно взятого файла (к примеру, index.html) делается через
Команды add и commit почти всегда неразлучны. Это как захват и сохранение данных. Вы не сможете ничего сохранить, пока не захватите нужные данные. Таким образом, команда add всегда предшествует commit.
С командой add вы указываете определенный файл, который требуется захватить в текущем состоянии, а commit сохраняет его копию.
Для захвата всех файлов (кроме исключений из git ignore) понадобится git add. Захват текущего состояния отдельно взятого файла (к примеру, index.html) делается через
git add index.html
После создания снимков репозитория их нужно закоммитить и сохранить в локальный репозиторий. Это делается через следующую команду:git commit -m ‘commit message’Сообщение в коммите должно пояснить специфику сохраняемых снимков. Например:
git add index.htmlДве команды можно объединить через оператор &&:
git commit -m ‘создание кнопки формы опции’
git add index.html && git commit -m ‘создание html структуры футера’
👍1