Блог о программировании

Реализация RSS-ленты на PHP с использованием ООП

Категория: PHP
 21 июня 2016 г. 1:09

RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами. Обычно с помощью RSS 2.0 даётся краткое описание новой информации, появившейся на сайте, и ссылка на её полную версию. Интернет-ресурс в формате RSS называется RSS-каналом или RSS-лентой или RSS-фидом. Практически все популярные современные браузеры поддерживают RSS каналы: Safari, Maxthon, Mozilla Firefox, Mozilla Thunderbird, Opera, Microsoft Internet Explorer начиная с 7-й версии. Технически RSS-лента представляет собой веб-страницу, информация на которой отображается в определенном формате.

В данной статье будет рассмотрен самый последний формат на момент написания статьи - RSS 2.0. Полная спецификация данного формата находится здесь. Для того, чтобы RSS-лента корректно работала, одна должна быть пройдена валидатором.


Пример RSS

Читать далее  

Теги:  php  rss  ООП  php7 

Ошибки в PHP. Ликбез

Категория: PHP
 17 июня 2016 г. 0:38

Неотъемлемой частью программирования является выявление ошибок в коде. Будь программист хоть семь пядей во лбу, все равно, он будет совершать ошибки, иногда даже банальные. Этому способствует сама природа человека. Поэтому за отладкой и выявлением ошибок в коде программист проводит достаточно большую часть времени. Соответственно, чем гибче и удобнее существуют инструменты для выявления ошибок в коде, и чем лучше программист ими владеет, - тем выше его продуктивность.
Поскольку PHP является скриптовым языком программирования, то все ошибки, допущенные в коде, выявляются по ходу исполнения кода. Программисту PHP предстоит сталкиваться как со стандартными ошибками, присущими программированию в целом, так и с довольно скрытыми ошибками – такими как опечатки в именовании переменных.
Язык PHP предусматривает два механизма выявления ошибок в скрипте в процессе его выполнения: стандартный механизм ошибок PHP и механизм исключений. В PHP множество функционала использует стандартный механизм ошибок, поэтому не знать о нем нельзя. Поэтому в данной статье речь пойдет именно об этом механизме.
Стандартный механизм ошибок PHP довольно прост – если в процессе выполнения сценария интерпретатор PHP сталкивается с какой-либо ошибкой – он пытается известить об этом программиста. Однако настроек этого механизма предусмотрено довольно много, поэтому разобраться в них программисту, познающему PHP, довольно сложно.

Видим ошибки

Читать далее  

Теги:  php  отладка  php7 

Все об автозагрузке в PHP

Категория: PHP
 5 июня 2016 г. 23:10

PHP-программисту, использующему ООП, довольно часто требуется так организовать классы, чтобы определение каждого из них находилось в отдельном файле. В таком случае программист нередко сталкивается с довольно нудной задачей: подключением используемых классов, которые используются в проекте. Чтобы автоматизировать данный процесс, в PHP 5.0 была предусмотрена возможность автозагрузки классов.


__autoload()

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

Читать далее  

Теги:  php  автозагрузка  php7 

Настройка Netbeans для PHP-программиста

 22 мая 2016 г. 23:28

IDE Netbeans является одой из самых популярных бесплатных сред разработки. И ведь полюбить ее есть за что: тут и универсальная платформа для использования многих языков программирования(java, PHP, javascript, C/C++ и т.д.), и гибкая настройка среды и редактора под свои нужды, и расширение возможностей среды благодаря огромному количеству сторонних плагинов... В общем, есть за что любить Netbeans. Однако, после первоначальной установки IDE довольно неудобна в использовании, поскольку по-умолчанию интерфейс чрезмерно нагроможден, включено слишком многое и, зачастую, не совсем нужное. Уверен, что множеству людей приходится тщательно разбираться со сложным интерфейсом IDE и ее многочисленными настройками после того, как запустили эту программу впервые. Я постараюсь облегчить задачу, как минимум, для разработчиков PHP.

В данной статье пойдет речь о настройке IDE Netbeans под нужды работы с чистым PHP кодом без каких-либо фреймворков.

Читать далее  

Теги:  php  netbeans  xdebug  отладка  php7 

Шаблон Модуль в javascript

Категория: Javascript
 14 мая 2016 г. 12:31

Анонимные функции - замечательная функциональность, доступная js-разработчику, которая упрощает реализацию и улучшает читаемость огромного количества кода. Также анонимные функции лежат в основе замыканий, с помощью которых можно делать весьма занимательные вещи. Одной из крайне полезных свойств замыканий является то, что все, что помещено внутри замыкания - сокрыто от внешнего окружения, другими словами достигается инкапсуляция кода. А это, в свою очередь, самое необходимое для создания собственной модульной системы на js.


Как выглядит?

В общем случае код модуля выглядит так:

;(function () {
	//тут код модуля
})();

Сразу пояснение: символ ; в начале кода необходим для предотвращения возможной ошибки. Если вдруг случится так, что при минификации нескольких js-файлов были объединены в один, и в предыдущем файле программист не поставил точку с запятой в конце своего кода, то получился ошибка. То есть, в ситуации, когда первый файл a.js содержит:

var simple = 2

а второй файл b.js содержит код модуля:

//в начале нет ;
(function () {
	//тут код модуля
})();

и после объединения получится:

var simple = 2
//в начале нет ;
(function () {
	//тут код модуля
})();

То при запуске данного кода получится ошибка из-за отсутствующей точки с запятой. Интерпретатор js-кода будет видеть такой код:

var simple = 2(function () {})(); // вернет TypeError: 2 is not a function

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

var simple = 2;(function () {})(); // undefined - все нормально

Вот такая защита от дурака.


Использование

Читать далее  

Введение в D3js для чайников

Категория: Javascript
 26 апреля 2016 г. 19:35

Перевод статьи

За прошедшие 5 лет в Web’е, фактически, прошла революция в области визуализации данных. Майком Бостоком была создана библиотека D3js, пропагандирующая новый, революционный, подход к построению различных визуализаций. Как ни странно, идея проста: связать визуализируемые данные с конкретными DOM-элементами на HTML-странице. Содержание данной статьи должно помочь читателю понять данный подход до того, чтобы можно было самостоятельно использовать его в построении собственных визуализаций.


От данных к их визуализации

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

Это наш набор данных - просто числа

Это наш набор данных - просто числа


Читать далее  

Теги:  d3js  визуализация 

Определение местоположения по IP на PHP

Категория: PHP
 12 апреля 2016 г. 23:23

Чтобы получить информацию о местоположении по ip на PHP– достаточно совершить несколько простых действий: сформировать и отправить запрос на специальный сервис и обработать его.

Пример кода:

/*О каком ip ищем информацию*/
$ip = '87.224.214.72';

/*получаем информацию о ip в виде xml-файла от сервиса ipgeobase.ru*/
$result = file_get_contents("http://ipgeobase.ru:7020/geo?ip=".$ip);

/*Формируем DOM-структуру из полученного xml*/
$xml = new SimpleXMLElement($result);
/*Выводим полученную информацию*/
echo "Информация об IP ".$xml->ip->attributes[0]."<br>";
echo "Сеть: ".$xml->ip->inetnum."<br>";
echo "Страна: ".$xml->ip->country."<br>";
echo "Город: ".$xml->ip->city."<br>";
echo "Область: ".$xml->ip->region."<br>";
echo "Округ: ".$xml->ip->district."<br>";
echo "Широта: ".$xml->ip->lat."<br>";
echo "Долгота: ".$xml->ip->lng."<br>";

Получается страница с таким результатом:

Информация об IP 87.224.214.72
Сеть: 87.224.191.0 - 87.224.255.255
Страна: RU
Город: Екатеринбург
Область: Свердловская область
Округ: Уральский федеральный округ
Широта: 56.837814
Долгота: 60.596844

Все просто!

Теги:  php  сниппет  php7 

Javascript. Подробное руководство

Категория: Книги
 11 апреля 2016 г. 23:47

Автор: Дэвид Флэнаган

Обложка книги 'Javascript. Подробное руководство'Наверное, для каждого языка программирования уже написана книга, обязательная к прочтению для знакомства с языком. Так вот, для javascript-разработчиков "Javascript. Подробное руководство" является именно такой книгой. Прочитав ее и переработав, вы будете знать все об этом языке: его историю, особенности, где и как он работает, перспективы использования. Конечно же, книга всецело раскрывает для многих наболевшие темы особенностей использования переменных и функций, DOM-элементами; применять технологию Ajax, обрабатывать XML-документы, формировать структуру приложения через использование собственных модулей и многое-многое другое. Вам останется лишь практиковаться и оттачивать свои навыки мастерства в использовании этого замечательного языка.

Поскольку на данный момент основная среда использования javascript - это браузер, то книга полностью раскрывает и этот аспект. Описаны такие моменты, как использование локальных хранилищ данных, работа с cookies, подробно описана событийная модель языка, работа с html-элементами(формы, поля ввода, кнопки и т.д.) и управление css. Этот набор знаний критически важен для frontend-разработчиков.

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

Также в книге есть всеобъемлющий справочник по языку и его конструкциям.

Теги:  книга  javascript 

Что такое ООП на примерах. Для чайников

 10 апреля 2016 г. 14:50

Наверное, в половине вакансий(если не больше), требуется знание и понимание ООП. Да, эта методология, однозначно, покорила многих программистов! Обычно понимание ООП приходит с опытом, поскольку годных и доступно изложенных материалов на данный счет практически нет. А если даже и есть, то далеко не факт, что на них наткнутся читатели. Надеюсь, у меня получится объяснить принципы этой замечательной методологии, как говорится, на пальцах.

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

ООП (или объектно-ориентированное программирование) представляет собой способ организации кода программы, когда основными строительными блоками программы являются объекты и классы, а логика работы программы построена на их взаимодействии.


Об объектах и классах

Класс - это такая структура данных, которую может формировать сам программист. В терминах ООП, класс состоит из полей (по-простому - переменных) и методов (по-простому - функций). И, как выяснилось, сочетание данных и функций работы над ними в одной структуре дает невообразимую мощь. Объект - это конкретный экземпляр класса. Придерживаясь аналогии класса со структурой данных, объект - это конкретная структура данных, у которой полям присвоены какие-то значения. Поясню на примере:

Допустим, нам нужно написать программу, рассчитывающую периметр и площадь треугольника, который задан двумя сторонами и углом между ними. Для написания такой программы используя ООП, нам необходимо будет создать класс (то есть структуру) Треугольник. Класс Треугольник будет хранить три поля (три переменные): сторона А, сторона Б, угол между ними; и два метода (две функции): посчитать периметр, посчитать площадь. Данным классом мы можем описать любой треугольник и вычислить периметр и площадь. Так вот, конкретный треугольник с конкретными сторонами и углом между ними будет называться экземпляром класса Треугольник. Таким образом класс - это шаблон, а экземпляр - конкретная реализация шаблона. А вот уже экземпляры являются объектами, то есть конкретными элементами, хранящими конкретные значения.

Читать далее  

Теги:  ООП  java 

Шпаргалка по командам git

Категория: Шпаргалки
 13 марта 2016 г. 14:35

Инициализация нового git-репозитория:

git init

Отобразить статус git-репозитория и рабочего каталога:

git status

Добавить в индекс изменения:

git add <filename>

Добавить в индекс все измененные файлы:

git add .

Удалить файл с внесением в индекс:

git rm <filename>

Переименование файла/перенос в другую директорию с внесением в индекс:

git mv <filename>

Зафиксировать изменения в репозитории, находящиеся в индексе:

git commit -m "<message>"

Комбо:

git commit -a -m "<message>" = git add . + git commit -m "<message>"

История коммитов:

git log

Переход к старому состоянию проекта:

git checkout <hash>

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

git reset --hard <hash>

Клонирование проекта из удаленного репозитория

git clone <откуда> <куда>

Например:

git clone ssh://dmn@192.168.1.100:22/var/www/superproject/htdocs/.git superproject
git clone /home/username/project myrepo
git clone http://user@somehost:port/~user/repository/project.git
git clone --bare hello hello.git

Последний пример создает т.н. "чистый" репозиторий. "Чистые" репозитории не хранят рабочие каталоги и обычно используются для расшаривания.
Обычный git-репозиторий подразумевает, что вы будете использовать его как рабочую директорию, поэтому вместе с файлами проекта в актуальной версии, git хранит все служебные, "чисто"-репозиториевские файлы в поддиректории .git. В удаленных репозиториях нет смысла хранить рабочие файлы на диске (как это делается в рабочих копиях), а все что им действительно нужно — это дельты изменений и другие бинарные данные репозитория. Вот это и есть «чистый" репозиторий.

Получение изменений из удаленного репозитория и их слияние с локальным:

git pull

Внесение локальных изменений на удаленный:

git push

Просмотр веток:

git branch

Добавление ветки:

git branch <имя_ветки>

Удаление ветки:

git branch <имя_ветки> -d

Переход между ветками:

git checkout <имя_ветки>

Слияние двух веток:

git merge <имя_ветки>

Полезные ресурсы

Интерактивный учебник по использованию git

Большая, всеобъемлющая и в то же время унылая книга по git

Теги:  git