В Javascript имеются три встроенных элемента для взаимодействия с пользователем страницы:

1
alert
,
1
prompt
,
1
confirm
. Начнем с самого простого и двинемся по нарастающей.

Модальное окно alert

Строка кода:

  alert("Message");

… вводит на странице модальное окно. Модальными окнами называются окна, которые блокируют работу всей страницы в целом (и скриптов - в частности) до тех пор, пока пользователь не выполнит требуемое окном действие. Пока модальное окно запущено, пользователь не сможет прокручивать страницу, нажимать на ней какие-либо кнопки или переходить по ссылкам.

Конкретное место, где выводится модальное окно с вопросом — обычно это центр viewport браузера и внешний вид окна выбирает браузер. Разработчик не может на это влиять. С одной стороны — это недостаток, так как нельзя вывести окно в своем, особо красивом, дизайне.

В случае с alert требуемое от пользователя действие одно - нажать кнопку “ОК”.

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

Модальное окно prompt

Функция prompt также, как и alert, создает модальное окно. Но, в отличие от модального окна alert, окно prompt немного сложнее. Синтаксис функции prompt выглядит таким образом:

  var result = prompt (title, default);

То есть, функция prompt принимает два аргумента. Первый аргумент

1
title
- это заголовок модального окна. Второй аргумент
1
default
- это строка по умолчанию как образец ввода в поле.

Создаваемое функцией prompt окно имеет поле для ввода и две кнопки OK и Cancel. Вызов prompt возвращает то, что ввел посетитель — строку или специальное значение

1
null
, если ввод отменен.

  var ageUser = prompt ('How old are you?', 30);
  alert('Your are ' + ageUser + ' old!');

Рекомендуется всегда указывать второй аргумент:

  var test = prompt('Тест', '');

Окно prompt предназначено для получения у пользователя какой-либо информации в виде данных любого типа.

Модальное окно confirm

Это модальное окно служит для получения от пользователя подтверждения на заданный вопрос - ДА или НЕТ. Функция confirm выводит окно с вопросом question с двумя кнопками: OK и CANCEL. Результатом будет

1
true
при нажатии OK и
1
false
– при CANCEL(ESC):

  var sex = confirm('Are you male?');
  console.log(sex);

Заключение

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

Итог

  • 1
    
    alert
    выводит сообщение;
  • 1
    
    prompt
    выводит сообщение и ждет, пока пользователь введет текст, а затем возвращает введенное значение или
    1
    
    null
    , если ввод отменен (CANCEL/ESC);
  • 1
    
    confirm
    выводит сообщение и ждет, пока пользователь нажмет «OK» или «CANCEL» и возвращает
    1
    
    true/false
    ;

Данная статья является пересказом соответствующего материала с ресурса learn.javascript.ru и не претендует на оригинальность.

В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают.

Операторы сравнения:

  • больше
    1
    
    >
  • меньше
    1
    
    <
  • больше или равно
    1
    
    >=
  • меньше или равно
    1
    
    <=
  • равно
    1
    
    ==
  • неравно
    1
    
    !=

Операторы сравнения возвращают логическое значение. Таких значений может быть только два:

  • 1
    
    true
    - да, верно, истина
  • 1
    
    false
    - нет, неверно, ложь

Логические значения можно присваивать переменным явно:

  var a = true; // true

Можно присвоить переменной логическое значение как результат операции (сравнения):

  var m = 6 >= 8 // false

Сравнение строк

Строки сравниваются побуквенно, слева-направо. Берутся две строки и начинается сравнение. Берется первый символ первой строки и сравнивается с первым символом второй строки. Если они равны, то берутся второй символ первой строки и сравнивается со вторым символом второй строки.

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

На этом дальнейшее сравнение строк прекращается и делается вывод, какая строка больше или меньше другой на основании того, больше или меньше соответствующие символы этой строки.

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

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

1
А
имеет меньшее численное значение, нежели буква
1
Б
. Отсутствие символа всегда считается меньше, чем присутствие символа.

Ниже приведены примеры (как же без них?), иллюстрирующие сравнение строк.

Первый символ первой строки больше первого символа второй строки, дальнейшее сравнение прекращается и делается вывод, что первая строка больше второй строки:

  console.log("Банан" > "Аят"); // true

В этом примере сравнение идет последовательно (символ в символ) вплоть до третьего по порядку символа, на котором сравнение прерывается, так как символ “c” по числовому значению больше символа “н”. На основании этого делается вывод, что первая строка “Вася” больше второй строки “Ваня”:

  console.log( "Вася" > "Ваня" ); // true

Любая буква (символ) больше отсутствия буквы. Например, первая строка больше второй, так как буква “е” в первой строке больше отсутствия таковой во второй строке:

  console.log( "Привет" > "Прив" ); // true

Интересный пример сравнения связан обработкой введенных пользователем данных. Все данные, вводимые пользователем на странице, являются строковым типом. Поэтому сравнивать их, не выполнив предварительное преобразование типов, нельзя. Например:

  console.log( "4" > "15" ); // true

… с точки зрения JavaScript будет верным

1
true
, так как строка “4” больше строки “15” (первый символ “4” больше первого символа “1”). Однако, в данном случае пользователем введены два числа 4 и 15, а не строки. Поэтому их необходимо привести к числовому типу и уже тогда сравнивать:

  console.log( +"4" > +"15" ); // false

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

Если производится сравнение данных различного типа, то JavaScript производит автоматическое (правильно такое преобразование называется неявным преобразованием) преобразование всех данных к числовому типу. И тогда производится сравнение чисел.

Строковый тип “34” приводится к числовому типу (числу) 34 и производится сравнение между числом 34 и числом 33:

  console.log( "34" > 33 ); // true

Булев тип

1
false
приводится к числовому типу 0 (
1
true == 1
,
1
false == 0
) и производится сравнение двух (одинаковых в данном случае) чисел 0:

  console.log( false == 0 ); // true
  console.log( true == 0 ); // false

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

Для этой цели используется оператор строгого равенства (

1
===
) и строгого неравенства (
1
!==
). То есть, к обычным операторам равенства (
1
==
) и неравентсва (
1
!=
) добавляется еще один символ (
1
=
).

Если тип разный, то операция сравнения всегда возвращает значение

1
false
:

  console.log( "example" === 34 ); // false

Строгое сравнение предпочтительно, если мы хотим быть уверены, что «сюрпризов» не будет.

Вывод: любые сравнения с

1
undefined/null
, кроме точного
1
===
, следует делать с осторожностью. Желательно не использовать сравнения
1
>=
1
>
1
<
1
<=
с ними, во избежание ошибок в коде.

Итог

  • В JavaScript есть логические значения
    1
    
    true
    (истина) и
    1
    
    false
    (ложь). Операторы сравнения возвращают их.
  • Строки сравниваются побуквенно.
  • Значения разных типов приводятся к числу при сравнении, за исключением строгого равенства
    1
    
    ===
    (
    1
    
    !==
    ).
  • Значения
    1
    
    null
    и
    1
    
    undefined
    равны
    1
    
    ==
    друг другу и не равны ничему другому. В других сравнениях (с участием
    1
    
    >
    1
    
    <
    ) их лучше не использовать, так как они ведут себя не как 0.

Данная статья является пересказом соответствующего материала с ресурса learn.javascript.ru и не претендует на оригинальность.

Вот захотелось написать о ZSH и “Oh My ZSH” - в частности.

Что такое ZSH? Это командная оболочка для Unix-подобных систем, к которым относятся как Linux, так и Mac OS X. Стандартной командной оболочкой в Linux и Mac OS X является BASH, которая полностью удовлетворяет все потребности пользователя.

Но если хочется нечто особенное, не такое как у всех и BASH приелась, то можно попробовать ZSH. Эта оболочка может полностью заменить собой BASH и привнести с собой еще пару-тройку дополнительных возможностей. К слову сказать, под Linux имеются гораздо больше командных оболочек, нежели две BASH и ZSH. Но две последние самые популярные и используемые.

К оболочке ZSH имеется дополнительная надстройка Oh My ZSH, которая делает ее еще более красивой и функциональной. Каждый опытный пользователь Linux находит в ZSH что-то свое. Я нашел в ZSH (“Oh My ZSH”) красоту оформления с помощью большого выбора тем “Oh My ZSH Themes” и плагины “Oh My ZSH Plugins”, которые делают работу в командной строке еще более удобной.

Установка ZSH

Установка ZSH проста и не должна вызвать какие-либо затруднения. Практически все сводится к одной команде и зависит от консольного менеджера закачек, уже имеющегося в системе.

Первый случай подойдет для системы Mac OS X (в ней

1
curl
встроен по умолчанию):

$ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

Второй случай подойдет для системы Linux (в ней

1
wget
встроен по умолчанию):

$ sudo wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh

После выполнения команды в системе Mac OS X достаточно закрыть и снова открыть терминал (рекомендуется к использованию “iTerm2”), чтобы ZSH вступил в действие и заменил собой BASH в качестве командной оболочки по умолчанию.

В системе Linux придется выполнить пару дополнительных действий. Первым шагом проверяем, что ZSH установилась нормально и работоспособная. Для этого запускаем ZSH вместо BASH:

$ zsh

Приглашение командной строки изменится со стандартного BASH на более причудливое и красивое приглашение ZSH. Отлично - все работает.

Производим смену командной оболочки по умолчанию с BASH на ZSH:

$ sudo chsh -s /bin/zsh

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

Настройка ZSH

Настройка ZSH сводится к редактированию файла

1
~/.zshrc
, в котором размещены все настройки этой оболочки. Строчек там достаточно много, но две самые интересные и важные из них опишу ниже.

Строка

1
ZSH_THEME="robbyrussell"
отвечает за тему оформления оболочки ZSH. По умолчанию используется тема под названием
1
robbyrussell
. Но ее можно заменить на любую другую из списка тем “Oh My ZSH Themes”, в котором представлены скриншоты, по которым легко выбрать любую тему. Все темы автоматически уже установлены в системе, поэтому достаточно указать нужную по ее имени.

Например, мне понравилась тема

1
pygmalion
:

ZSH_THEME="pygmalion"

Вторая важная строка

1
plugins=
конфигурационного файла
1
~/.zshrc
отвечает за подключение плагинов. Строка первоначально имеет вид:

plugins=(git)

Это означает, что при запуске оболочки ZSH будет автоматически подгружен плагин

1
git
. Плагины, как и темы, автоматическм устанавливаются в систему, поэтому достаточно указать только имя нужного плагина.

Важное замечание - перед использованием каждого конкретного плагина необходимо прочитать его README, чтобы знать, как его использовать. К примеру, плагин

1
sublime
служит для создания и использования псевдонимов (alias) при запуске редактора Sublime Text из командной строки. Плагин
1
bundler
служит для создания и использования псевдонимов (alias) при запуске утилиты
1
bundle
.

Пример строки с плагинами может быть таким (в моем случае):

plugins=(git sublime bundler)

Именно так - разделителями служат символы пробела между именами плагинов.

Ниже представлены два видео об установке и настройке “Oh My Zsh” под операционной системой Mac OS X. Видео на английском языке, но все понятно и так. Видео не мое - автор его Scott Tolinski, ведущий моего любимого канала Level Up Tuts.

Установка “Oh My Zsh”:

Настройка “Oh My Zsh”:

Заключение

В принципе, рассказанного выше минимума уже достаточно для комфортной работы в ZSH. В заключение можно лишь привести снимок терминала, чтобы иметь представление о красоте ZSH (с прикрученным “Oh My Zsh”):

Oh My ZSH

На этом все.


Весьма полезные две опции в системе Git - показать только те ветки, которые уже слиты с веткой

1
master
(к примеру); или же показать только те ветки, которые еще не были слиты с веткой
1
master
(к примеру).

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

А какие ветки удялять нельзя, так как наработки в них еще не слиты в основную ветку и еще не сохранены.

Система Git не допустит удаления таких веток при запуске команды:

$ git branch -d name_of_branch

Только использование специального флага

1
-D
разрешит удаление ветки, которая не слита с основной веткой:

$ git branch -D name_of_branch

Итак, ниже две команды - героя дня.

Опция –merged

$ git branch --merged
  • показать все ветки, слияние для которых было выполнено. Такие ветки можно смело удалять.

Опция –no-merged

$ git branch --no-merged
  • показать все ветки, слияние для которых еще не было выполнено.

Опция -v

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

$ git branch -v

  master        4669186 Header ready
* sectionFooter 9fbcfc4 Footer Social Icons

На этом все.


Не помню, писал уже про создание псевдонимов (alias) в Git, или нет. Но материальчик мне сильно понравился - делюсь с ним.

Итак, в чем суть вопроса? Суть проста - любой компьютерщик с опытом прекрасно знает и всегда старается применять на своей практике сочетания клавиш (так называемые hotkeys) для убыстрения, упрошения процесса своей работы.

Сначала использование hotkeys кажется причудой не менее причудливых компьютерных гиков - это они просто хотят показать, что они крутые пацаны и не такие, как все; затем, когда выучены и применяются на практике пара-тройка hotkeys - ты кажешься себе невероятно крутым компьютерным “перцем”; когда ты знаешь пару-тройку десятков hotkeys - это уже просто нужно для быстрой работы; и последняя (финальная стадия, которая лечению не поддается) - ты уже просто не можешь жить без hotkeys!

И так во всем - в любой программе, в любой утилите.

Не исключение и Git. Если в день хотя бы около десятка раз набивать

1
git status
,
1
git add
,
1
git commit
,
1
git checkout
,
1
git branch
и так далее (список можно еще продолжать и продолжать), то через пару-тройку деньков в голову как-то сама собой вкрадывается мысль - а как бы сделать так, чтобы не набивать пальцами тупо одно и тоже изо дня в день? Как бы сделать это все покороче?

Ситуация выглядела бы крайне нелепой и смешной, если бы создатель системы Git (одновременно - один из создателей Linux) не предусмотрел возможности использования hotkeys в этой системе.

И она есть! Но вопрос данной статейки заключает даже не в том сногшибательном факте, что Git поддерживает работу “горячих клавиш”.

Вопрос в том - как их создавать самому и каким образом это делать.

До недавнего времени я лично знал один такой способ - это редактирование конфигурационного файла Git на предмет создания в нем своего собственного списка alias’ов.

Вот только одна тонкость - вы, уважаемый читатель, помните, какой файл под системой Windows необходимо редактировать для этой цели? А под системой Linux? А под Mac OS X?

Что-то я сильно сомневаюсь, что у вас “от зубов” отскочит ответ применительно ко всем трем системам. Я лично могу прямо сейчас припомнить ответ применительно только в системе Linux. Заминочка, однако!

А ларчик открывался просто! В системе Git есть встроенная возможность создания псевдонимов (alias).

И выглядит такая команда до смешного простой - к примеру:

$ git config --global alias.st status

В результате достаточно ввести в окне терминала:

$ git st

… чтобы получить информацию о текущем состоянии репозитория. И при этом не нужно “ломать” голову в попытках вспомнить, в каком файле (и где он вообще находится) нужно вписывать желаемый hotkey. Система Git сама это сделает - нужно только указать, alias какого вида вы желаете.

Ниже привожу краткий список псевдонимов (alias) из книги “Pro Git” второго издания (впрочем, все описанное здесь почерпнуто оттуда - просто материальчик очень понравился):

$ git config --global alias.st status
$ git config --global alias.ci commit
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD --'
$ git config --global alias.last 'log -1 HEAD'

Оно канешна, приведенный выше списочек не является истиной в последней инстанции - на что фантазии хватает, то и можно\нужно делать. Какой псевдоним кажется более удобным в работе (у кого руки какой кривизны) - тот и стряпать надо. И вопрос совсем не в том - какие псевдонимы должны быть.

Вопрос в том - что Git сам может создавать псевдонимы (alias).

На этом все.