Архив месяца: Январь 2021

Нажатие на кнопку в JavaScript (событие и функции)

Клик по кнопке JS

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

<button type="submit" id="submit">Нажми меня</button>

Она пока никак не реагирует потому, что мы не повесили на нее никакого события. И давайте рассмотрим первый вариант.

1
2
3
document.querySelector("#submit").onclick = function(){
  alert("Вы нажали на кнопку");
}

Демо

Функция по нажатию кнопки в JavaScript

Событие по клику на кнопку мы создали, но можно сделать то же самое, только напишем функцию, с именем.

1
2
3
function alerted(){
  alert("Вы нажали на кнопку");
}

А к кнопке добавим эту функцию:

<button type="submit" id="submit" onclick="alerted();">Нажми меня</button>

Демо

Вывод на страницу по клику на кнопку в JS

Соответственно по нажатию на кнопку в JavaScript можно делать не только всплывающий alert, но и все, что угодно, передавать данные на сервер, изменять элементы на странице, удалять, копировать и много чего еще. Давайте рассмотрим еще один пример. напишем небольшую функцию, которая будет срабатывать по клику и выводить на страницу случайное число. Для этого под кнопкой добавим элемент DIV с классом sum, в котором будем выводить результат работы JavaScript функции.

<div class="sum"></div>

И сама функция:

1
2
3
function randomSum(min, max) {
  document.querySelector('.sum').innerHTML = (Math.floor(Math.random() * (max - min + 1) ) + min);
}

Для кнопки добавим эту функцию по нажатию:

<button type="submit" id="submit" onclick="randomSum(1000, 9999);">Нажми меня</button>

По нажатию на кнопку под ней будет выведено четырехзначное число от 1000 до 9999 в случайном порядке. Это мы указали в специальных параметрах min и max.

Демо

Нажатие правой кнопкой мыши в JS

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

Запрещаем вывод контекстного меню при клике правой кнопкой мыши:

1
<button type="submit" id="submit" oncontextmenu="return false">Нажми меня</button>

Выводим Alert:

1
2
3
4
document.querySelector("#submit").oncontextmenu = function(){
  alert("Вы нажали на кнопку");
  return false
}

Демо

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

Отправляем Email через терминал Windows Powershell (командная строка)

Windows Powershell

Следует начать с того, что Windows Powershell — это не стандартная командная строка с черным фоном. Это другая оболочка и фон у нее темно-синий. Она поставляется в системы Windows начиная в 7 версии. И с ее помощью можно отравлять письма на почту через SMPT сервер. В некоторых случаях такой способ отправки Email может выручить, когда все другие по каким-то причинам вам недоступны. Ну и для общей практики и знакомства с терминалом Windows Powershell и некоторыми его командами, которые в нем называются — командлеты. Вызвать окно Powershell очень просто. Достаточно нажать Win + R и вписать туда Powershell.

Для отправки вам потребуется доступ к почте (логин и пароль). С этого адреса будет отправлен Email.

А вот и сам скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$EmailTo = "po4ta@mail.ru"
$EmailFrom = "PowerShell mymail@yandex.ru"
$Subject = "Отправка из PowerShell"
$Body = "Тестовое сообщение, <b>отправленное</b> из командной строки PowerShell"
$SMTPServer = "smtp.yandex.ru" 
$filenameAndPath = "C:\Users\777\Downloads\003435.pdf"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.IsBodyHTML=$true
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("mymail@ya.ru", "mymail123");
$SMTPClient.Send($SMTPMessage)

Теперь разберем более подробно.

1 Куда отправляем Email
2 Имя и адрес отправителя
3 Тема письма
4 Текст письма
5 Имя SMTP сервера
6 Путь к файлу-вложению (если нужен)
7, 8 Формирование объекта сообщения
9 Включение возможности отправлять HTML письма
10 Добавление вложения к письму
11 Указание порта SMTP сервера
12 Включение защищенного соединения SSl
13 Адрес и пароль почты. с которого будет отправка
14 Отправка сообщения

Особенное внимание прошу обратить на 9 строчку. Это полноценная возможность отправлять HTML письма через Windows Powershell по тому же принципу, как это делается в PHP. Необходимо ввести Email, кому вы хотите отправить сообщение, ввести свой адрес почты и пароль, написать текст, потом вставить все это в окно Powershell и нажать Enter. Можете потренироваться на своем ящике. У меня это выглядит вот так:

Отправка email через Windows Powershell
А само письмо вот так:
Email send from PowerShell

В основном эти терминалом пользуются системные администраторы и с его помощью можно решать различные задачи, но рядовому пользователю достаточно знать, что он есть (кстати многие не знают) и умеnь от править через него письмо. На этом знакомство с Windows Powershell подошло к концу. Напишите, знали вы о таком приложении в Виндовс или узнали впервые?

Длина строки и массива в PHP

Узнать длину строки и массива в PHP

Привет. В PHP довольно часто приходится работать со строками и массивами и почти во всех случаях требуется узнать их длину (length). Вполне типичная ситуация и для нее есть встроенные функции в PHP. Но есть некоторые нюансы, к примеру то, что одна из функций, которая показывает длину строки — srtlen считает не количество символов в тексте, а количество байт, который занимает каждый символ. Если латинский символ занимает 1 байт, то на кириллице он займет 2 байта. Об этом я же упоминал в статье по теме: как обрезать текст по количеству слов и символов. Но сейчас постараемся рассмотреть некоторые примеры более детально.

Узнать длину строки в PHP

Первая функция, которая будет вычислять длину строки в PHP, будет strlen.

1
2
3
$str = "Hello World";
echo strlen($str);
// 11 символов вместе с пробелом

А если мы напишем примерно то же самое, но на русском, то получим такой вариант:

1
2
3
$str = "Привет Мир";
echo strlen($str);
// 19 символов вместе с пробелом

В этом случае, как я уже говорил ранее, каждый символ займет 2 байта + 1 байт — это пробел. В итоге мы получим не совсем то, что ожидали. Поэтому в случае с кириллицей, чтобы определить длину строки, следует использовать другие функции. Первая — mb_strlen

1
2
3
$str = "Привет Мир";
echo mb_strlen($str);
// 10 символов вместе с пробелом

В этом случае подсчет символов в строки будет одинаковым как на английском, так и на русском языках. Даже если символ занимает несколько байт, то будет посчитан, как один. Так же есть еще одна функция, чтобы узнать длину строки в символах — iconv_strlen

1
2
3
$str = "Привет Мир";
echo iconv_strlen($str);
// 10 символов вместе с пробелом

iconv_strlen учитывает кодировку строки, ее можно указать вторым параметром. Если она не указана, то кодировка будет внутренней. То есть самого файла.

echo iconv_strlen($str, "UTF-8");

Если возникла необходимость проверить длину строки без пробелов, то потребуется дополнительная функция str_replace

1
2
3
4
$str = "Привет Мир";
echo iconv_strlen(str_replace(' ', '', $str));
// 9 символов без пробелов
//iconv_strlen или mb_strlen

Узнать длину массива в PHP

функция, которая позволяет узнать длину массива в PHP — count.

1
2
3
$arr = ["Иван", "Марина", "Сергей", "Алина"];
echo 'Длина массива ' . count($arr) . ' элемента';
// Длина массива: 4 элемента

То же самое будет с массивом, где есть ключи и значения.

1
2
3
$arr = ['name' => "Иван", "city" => "NY", "age" => 34];
echo 'Длина массива ' . count($arr) . ' элемента';
// Длина массива: 3 элемента

Можно резюмировать:

strlen() Подсчет количества байт в строке
mb_stren() Подсчет символов в строке
iconv_strlen() Подсчет символов строки с учетом кодировки
count() Подсчет элементов массива

На этом можно завершить. Теперь вы можете самостоятельно узнать длину строки в PHP и определить длину массива. А если возникнут вопросы, задавайте их в комментариях.

Если в фотошопе пропала кисть (не видно размер)

Вернуть размер кисти в фотошопе

Привет. Если у вас в фотошопе пропала кисть, то есть сам кружок (радиус) кисти и не видно какого она размера, а вместо этого появился крестик. Не видя четкие границы кисти очень сложно что-то нарисовать. Причем с инструментом Ластик происходит то же самое. Если вы хотите узнать как вернуть все обратно, чтобы снова был виден контур кисти, то это даже проще, чем вы думаете. Дело в том, что на многие инструменты в фотошопе назначены горячие клавиши и на размер кисти назначена клавиша Caps Lock и по всей видимости вы случайно ее нажали.

Клавиша Caps Lock на клавиатуре

Чтобы вернуть размер кисти в исходное состояние вам нужно всего лишь еще раз нажать на клавишу Caps Lock И как вы уже поняли, это занимает 1 секунду. Зато теперь вы знаете почему пропадает кисть в фотошопе и сможете легко и , что самое главное, — быстро это исправить и вернуть кисть как она должна быть изначально. Это, наверное, самый короткий урок на моем сайте.

Проверка на массив, на наличие элементов и на пустоту в PHP

Проверка массива на пустоту

В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.

1
2
3
4
5
6
$arr = ['id', 'name', 'email']; // Массив элементов
if(is_array($arr)){
  echo 'Это массив';
}else{
  echo 'Это не массив';
}

Функция вернет true, если это массив и false — если не массив. Это простой пример и сложностей возникнуть не должно. Перейдем к следующему примеру.

Проверка массива на пустоту и пустые элементы в PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$arr = [];
if(empty($arr)){
  echo 'Массив пустой';  
}else{
  echo 'Есть элементы';
}
// Выведет сообщение, что массив пустой
 
$arr = ['']; 
if(empty($arr)){
  echo 'Массив пустой';  
}else{
  echo 'Есть элементы';
}
// Массив будет не пустым даже если в нем только кавычки.

Функция empty сработает только в том случае, когда в массиве нет вообще никаких элементов. Поэтому ее лучше не использовать при проверке массивов. В этом случае нам поможет еще одна функция — array_diff. С ее помощью мы сравним исходный массив с другим массивом и в случае расхождения выведем элементы массива, которые не совпадают. Может быть немного сумбурно и не понятно, но давайте разберем на примере.

1
2
3
4
$arr = ['name', '', 'num', NULL, '', false, 'Alex', ''];
var_dump($arr);
$new_arr = array_diff($arr, array('', NULL, false));
var_dump($new_arr);

Получим следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
array(8) {
  [0]=>
  string(4) "name"
  [1]=>
  string(0) ""
  [2]=>
  string(3) "num"
  [3]=>
  [4]=>
  string(0) ""
  [5]=>
  [6]=>
  string(4) "Alex"
  [7]=>
  string(0) ""
}
 
array(3) {
  [0]=>
  string(4) "name"
  [2]=>
  string(3) "num"
  [6]=>
  string(4) "Alex"
}

Функция пропустит все пустые элемент массива, в том числе NULL и false и выведет только те, в которых что-то есть. Мы так же можем проверить какой именно элемент массива был пустой с помощью цикла for.

1
2
3
4
5
6
7
8
$arr = ['name', '', 'num', NULL, '', false, 'Alex', ''];
for($i=0; $i < count($arr); $i++) {
 if (empty($arr[$i])){
echo "Элемент $i пустой"."<br>";
}else{
echo "Элемент $i не пустой"."<br />";
}
 }

В итоге получим это:

1
2
3
4
5
6
7
8
Элемент 0 не пустой
Элемент 1 пустой
Элемент 2 не пустой
Элемент 3 пустой
Элемент 4 пустой
Элемент 5 пустой
Элемент 6 не пустой
Элемент 7 пустой

Но массивы бывают разные, в том числе с ключами и значениями. И цикл for в этом случае тоже справится точно так же.

1
2
3
4
5
6
7
8
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>''];
for($i=0; $i < count($arr); $i++) {
 if (empty($arr[$i])){
echo "Элемент $i пустой"."<br>";
}else{
echo "Элемент $i не пустой"."<br />";
}
 }

При желании можно принудительно удалить ключи массива, в которых пустые значения. Для этого задействуем цикл foreach и функцию unset.

1
2
3
4
5
6
7
8
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>''];
var_dump($arr);
foreach ($arr as $key => $value) {
  if (empty($value)) { //проверrf на пустоту
    unset($arr[$key]); // Удаляем ключ массива
}
  }
var_dump($arr);

Получаем следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
array(4) {
  ["age"]=>
  int(34)
  ["name"]=>
  string(4) "Ivan"
  ["city"]=>
  string(0) ""
  ["number"]=>
  string(0) ""
}
array(2) {
  ["age"]=>
  int(34)
  ["name"]=>
  string(4) "Ivan"
}

Проверить наличие элемента в массиве

Для этих целей подойдет функция in_array. Она проверяет на присутствие в массиве значения.

1
2
3
4
5
6
7
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>''];
 
if (in_array('Ivan', $arr)) {
  echo 'YES';
}else{
  echo 'NO';
}

Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.