Сообщество - Web-технологии

Web-технологии

534 поста 5 789 подписчиков

Популярные теги в сообществе:

5

Научу программировать #1 PHP. Управляющие конструкции

Ранее в сериале:

https://new.pikabu.ru/story/nauchu_programmirovat_1_php_upravlyayushchie_konstruktsii_5763629

https://new.pikabu.ru/story/nauchu_programmirovat_1_php_baza_5758846

https://new.pikabu.ru/story/nauchu_programmirovat_2_sistemyi_kontrolya_versiy_git_5701751

https://new.pikabu.ru/story/nauchu_programmirovat_1_sistemyi_kontrolya_versiy_git_5699027

https://new.pikabu.ru/story/nauchu_programmirovat_01_5696264

https://new.pikabu.ru/story/nauchu_programmirovat_0_5693683


По всем вопросам в телеграмм, я там часто.

ссылка на Телеграмм

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


И так начнем.

Любой сценарий PHP состоит из последовательности инструкций.

Хотелось бы дать Вам понимание, что такое инструкция. Инструкция - это любое действие присваивания, цикла, и т.д., после инструкции ставится ";". Иными словами когда мы поставили в конце нашей строки ; мы создали инструкцию.


$a = 5; - инструкция
foreach ($i = 0; $I < 5; $I++) {} - тоже инструкция

И так, давайте разберем условие: IF () {}

if - одна из самых важных конструкций в любом языке программирования. С помощью этой конструкции можно делать различное выполнение программы при возникновении, когда условие выполняется в "true" или "false"

Сама конструкция блока выполнена в стиле С.


if ($a > $b ) {
  $c = $a;
  print_r ($a);
}

В данном примере мы сравнили две переменных а и b и при условии, что а больше присвоили с значение а, а потом вывели.


Разрешается использовать конструкцию if в более простой форме, если после возникновения условия true у нас один обработчик:


if ($a > $b) print_r($a); //в данном примере мы просто опустили скобки.

При этом конструкция if может быть вложена в другую конструкцию if


if ($a > $b) {
  if ($a < $c) {
  print_r ($a);
  }
}

Такая конструкция называется Условие.


А что если бы нам хотелось вывести $b, если $b меньше $a?


Для этого в блоке if предусмотрена конструкция else. Синтаксис:


if ($a > $b) {
print_r ($a);
} else {
print_r ($b);
}

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


Но  if имеет еще один тип записи,
if ($a > $b) {
print_r($a);
} else if ($a == $с) {
print_r($c);
} else {
print_r($b);
}

Вспомните нашу запись вы примерах Выше. Где мы делали вложенное условие. Наша запись выше и запись со вложенными условиями не равны в данном примере, так как вложенное условие в том случае выполнится при условии, что а больше b. В данном если меньше.


H1. В чем отличие данного
if ($a > $b) {
  if ($a < $c) {
  print_r ($a);
  }
}


if ($a > $b) {

print_r($a);

} else if ($a < $с) {

print_r($c);

} else {

print_r($b);

}

Кроме того, существую еще и краткие формы записи данных конструкций (или альтернативные конструкции). Все отличия в том, что вместо {} фигурных скобок, ставится двоеточие и блок endif;


Например эти две записи эквивалентны:

if ($a > $b) {
  print_r ($a);
}
<?php
  if ($a > $b) :
?>
А больше b
<?php
  endif;
?>

h2. попробуйте самостоятельно реализовать следующее условие:

а больше 5, но меньше b которое равно 7


Дальше рассмотрим циклы, когда и как применяются

Показать полностью
17

Научу программировать #1 PHP. База

В этот раз, на основе комментов, которые прислали подписчики будем использовать уже php для работы с git. Карма больше 150 теперь после всех уроков буду прикреплять еще и видео (ну постараюсь по крайней мере). Начнем с первого урока по PHP. Ибо я как дебил не могу придумать нормальную задачу для git. В данном уроке по тексту есть домашка.

http://sandbox.onlinephpfunctions.com - песочница для заданий

И так начнем. Что такое PHP? Вообще все языки программирования делятся на два типа:

1. Компилируемые

2. Интерпретируемые


В чем между ними разница? Разница конечно огромна и существенна. А именно состоит в следующем.


Давайте посмотрим, что происходит когда вы пишите на языке программирования C++ или любом другом компилируемом языке программирования.


Вы пишите код, добавляете классы, выделяете память для переменных и т.д., далее Вам надо скомпилировать Ваш код в машинный код, который Вы сможете запустить на своей машине. Преимущества данного подхода - скорость выполнения. Но при этом каждый раз, когда Вы сделаете изменения, Вам придется собирать (компилировать) программу заново.

Мы не будем углубляться в то как это работает.


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


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

Теперь мы с Вами знаем, что PHP интерпретируемый язык программирования. У него есть специальный интерпретатор, который переводит наш код (или наши команды) в понятный машине код.


Каждая строка в PHP заканчивается символом ;

Давайте рассмотрим простые примеры, на которых мы будем основываться дальше.

Первое - это переменные.


Переменные в php начинаются символом $, после может стоять _. Переменная не может начинаться с числа.


$a = 'Vasja'; // верное название переменной
$_a = 'Vasja'; // тоже верное название переменной
$23 = 'Vasja'; // тут возникнет ошибка

Переменные в php не имеют типизации, т.е. $a в нашем примере может быть как числом, так и строкой. При этом ошибки не возникнет:


$a = 'Vasja'; // верное название переменной
$A = 3; // тоже верное название переменной

h1 - попробуйте выполнить такой код дома, что произойдет? Почему?


Вообще очень плохая практика называть переменные в PHP а,b,c, так как, когда Вы начнете просматривать код после того, как не работали с ним пару месяцев, то долго будите понимать, что имели ввиду в данной переменной. Называйте их по смыслу:


$name = 'Vasja"; // понятное название переменной

Переменные используются везде и всюду. Без них невозможно написать не одну программу.


Кроме переменных в PHP есть константы, каков их синтаксис:

объявление констант применяется по такому же правилу, что и переменных, а именно правила написания. _, a-z.  Есть правило писать константы большими буквами, а если несколько слов, то через _, между этими словами.


define("CONST_VALUE_DEFINE", "1"); // хорошее объявление констант
define("2_CONST_VALUE_DEFINE", "1"); //ошибка при объявлении
define("__FOO__", "test.txt"); //  если PHP зарегистриует однажды такую константу, то скорее всего получите невеную работу скрипта

Хотелось бы отметить, что есть магические константы, __DIR__ __FILE__ __FUNCTION__

они не совсем являются константами конечно.


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

http://php.net/manual/ru/language.types.php

Мы же пойдем далее, и так у нас есть еще тип дынных как массив.

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


Вообще все структуры данных такие, как:

деревья

список

очередь

вектор

Хэш-таблицу

коллекцию


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


Массив может содержать в себе другой массив, или ключ-значение, или ключ-массив и т.д.


массив объявляется

array();
$myArray = array(); // инициализация пустого массива

Давайте создадим и выведем на экран наш массив:

$myArray = array();
var_dump($myArray); - функция выведет нам какой тип имеет наша переменная $myArray и что находится внутри нее.

h2.

$testArray = array(1,2,3,4,5,6);

добавьте в массив несколько параметров, удалите один из параметров массива, выведите 5-ый элемент массива.

массивы могут быть многомерные:

например:

$testArray = array(1 => array('1' => array( 'Vasja' ) ) );

Есть и короткая форма объявления массива:

$array = []; она введена в php 5.4, на мой взгляд она компактнее и удобней.


h3.

$testArray =[

'user' => ['name' => 'Ivan'],

'card' => ['number' => '1234 5678 9087 6543' ]

];

Выведите имя и номер карты пользователя.

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

Показать полностью

Переезд сайта

Всем привет! У меня вопрос к знающим. После переезда сайта на другой сервер упали визиты из Яндекса. Переезд был осушествлен 22-23 февраля. Сейчас проверяю сайт на вирусы.
Какие еще могу быть варианты?

Делаем корзинку-калькулятор на JavaScript

Привет, сообщество. Решил поделиться своим роликом-размышлением на тему создания разнообразных калькуляторов.

Мне кажется, что основной недостаток тех, что есть - это очень тесная интеграция с вёрсткой. Что тебе прогер отдал -- с тем и работаешь. Отсюда всякие адовы конструкции типа parent().parent().parent().find() в которых ну очень сложно сходу разбираться. Кто там чей папа, какой value мы берём, из какого поля, с каким классом... Плюс при изменении вёрстки ломается просто всё!

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

Для нетерпеливых -- гитхаб.

24

Пути развития в WEB-сфере

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

Предисловие: в веб-сфере уже не новичок, разработкой сайтов занимаюсь лет с 13 (сейчас мне почти 29), за это время были и попытки всё это бросить и перейти в другую сферу, но в нашем городе-почтимиллионнике особо не разбежишься с выбором и "веб" был наиболее оптимальным выбором). Оглядываясь назад можно выделить основную проблему/ошибку с которой я столкнулся - это распыление на всё подряд начиная от работой с разными CMS(Joomla,Wordpress...остановился на MODX) заканчивая SEO, SMM, e-mail-маркетинг, возможно сосредоточившись на одном направлении (том же JS), картинку можно было изменить, но плакать о прошлом не наш путь, будем исправлять ошибки в будущем).

Что имеем сейчас: На данный момент я уже седьмой год работаю в небольшой компании как руководитель веб-направления и по совместительству как комбайн делаю, то что не могут/не хотят делать юные рекруты(дизайнеры, контент-менеджеры и стажеры-разработчики на подхвате), которые уходят через год-два как чуть наберутся опыта. Работа всегда есть, у компании основной сайт и несколько монобрендовых сателлитов. Здесь как раз пригодилось, упомянутое выше, распыление на все сферы от рекламы до разработки. Сделать с нуля сайт-каталог или магазин (при этом хочется сделать всё с душой, через сборщик, с препроцессорами, по БЭМу и тд, а не делать УГ на коленке) придумать новость о новинке, сделать кампанию в директе или рся, найти сотрудника через хх или sj, при этом вакансия должна быть приятна взгляду и цеплять "жертву", ну и наконец научить "дизайнера" предметной съемке или контент-менеджера делать рерайт. Всё это при полусерой зп в ~30к, кому-то покажется вполне нормальной (у нас в г. средняя наверно 15-20к), но тут ипотека, бензин/расходники и не желание есть дошики при этом:) отсюда уже поднадоевшие подработки у сомнительных заказчиков в виде сделать сайт на заказ, поднять в поисковике или сделать рассылку в мэйлчампе, с последним картину портит кидалово со стороны заказчиков, которые могут слиться даже если переведут предоплату.

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

1. Работа с заказчиками на фрилансе (всё то, что как-правило делают небольшие веб-студии): разработка лендингов, каталогов, интернет-магазинов "под ключ", контекстная реклама, SEO-оптимизация/продвижение, рассылки, ну и работа со страницами  в соцсетях. Весь тот багаж разбросанных знаний пригодится тут в наибольшей степени. Из минусов - это желательное последующего оформление юрлица, составление договоров и прочая скучная бюрократия. Также в минусы можно записать процент неадекватных клиентов, которых, я так полагаю, не убедит даже договор. Ну и на перспективу, по своему опыту понял, что будут сложности с поиском заинтересованных сотрудников при создании команды, большой зарплатой вряд ли сможешь заинтересовать на начальном/среднем этапе, да и есть большой процент людей которые сами не знаю чего хотят, научился и ушел в неизвестном направлении).

2. Работа Frontend-разработчиком или JavaScript-программистом: вариант с необходимостью постоянного обучения и заполнения пробелов прошлого:) Держу в голове этот вариант как наиболее перспективный уже наверно год, за последнее время освоил все эти фишки с препроцессорами (Less,Sass,Jade/Pug), сборщиками проектов (GULP, в процессе Webpack), работу с Node.JS и GIT. Сейчас активно вникаю в React. Самое сложное - это настроить свой мозг на постоянное обучение, ну и в голове крутится мысль, которую приходится отгонять "не поздно ли лезть во все эти дебри в почти 30 лет??". (тут ещё свое рода минус можно рассмотреть вычеркивание опыта веб-дизайна, сео, рекламы и тд.) Отсутствие опыта командной разработки или участие в энтерпрайз проектах осложнит поиск позиции в этом направлении. Тут особенно интересно мнение бывалых)

3. Работа менеджером проектов (product owner): интерес вызывает работа по современным методологиям (Agile: Kanban, Scrum), но понятие о них чисто теоретические(видеосеминары, статьи), ознакомительная работа в JIRA и Trello. Наверно плюсом пойдет опыт работы руководителем в целом. Но тут тоже всё начинать сначала, единственное, что в зависимости от проекта может пригодится опыт работы в веб-сфере.

4. - Недовариант (добавил в последний момент) - это разработка своего проекта, где также пригодится весь опыт разработки, продвижения и веб-рекламы. Как-то из благотворительных соображений запустил свой проект (на livestreet) с объявлениями о передачи животных в добрые руки, раскрутил группу, нашлись постоянные посетители, но потом всё загнулось из-за недостатка времени, он так пока и дрейфует в интернете (с дневной посещаемостью около 150) без копирайтера или вложений в рекламу. Может у кого-то возникнут мысли и поэтому поводу).

Ниже схема первых трех вариантов для наглядности. Высказывайте свое мнение:)

Пути развития в WEB-сфере
Показать полностью 1
2914

Смерть фрилансера

Долго искал второго OpenCart программиста с адекватными ценами (лет 5 или 6). Очень много положительных отзывов о человеке было. Пообщались, увы недолго, но были далеко-идущие планы.

Фрилансеры поймут. Сам сижу за компом по 14-18 часов, понял, что тоже за работой когда-нибудь также уйду.

Смерть фрилансера
4

Парсинг сайта Центральной избирательной комиссии

Доброго времени суток!

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


что то типа "Адрес помещения для голосования" - перечисление адресов которые относятся к этому участку

насколько я понял по исходному коду, для каждого дома формируется вот такой адрес

http://www.cikrf.ru/services/lk_address/13845257987962112000...

но как его привязать к конкретному адресу со страницы всех адресов я незнаю
http://www.cikrf.ru/services/lk_address/?do=address

сайт сбрасывает фильтр каждый раз в ноль, найти надо около 200 адресов

моих знаний не хватает, прошу вашей помощи.


для минусов оставлю в комментариях

Показать полностью
Отличная работа, все прочитано!