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

Объектно-ориентированное мышление

Категория: Книги
 12 октября 2016 г. 23:22

Автор:Мэтт Вайсфельд

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

В самом названии книги поставлена цель научить читателя объектно-ориентированному мышлению. На мой взгляд книга своей цели не достигает. Да, в книге раскрыты все понятия ООП, но как-то сложно, что-ли. Примеры выбраны неудачные, да и сам способ объяснения оставляет желать лучшего. Также встречаются неточности перевода, что может ввести в заблуждение начинающих программистов.

Очень много внимания в книге уделено около-ООПшным темам: диаграммы uml, шаблоны проектирования, фреймворки, форматы передачи данных xml и json, веб-сервисы и т.д. Данные темы в книге даются в ознакомительных целях. Получилась книга обо всем, но не о главном - мышлении объектами. В общем, уж лучше прочитать какую-либо другую книгу по ООП, нежели тратить время на эту. По теме ООП можно выделить книгу Брюса Эккеля "Философия Java" - описание ООП в ней ведется более последовательно и наглядно.

Теги:  книга ООП 

Шаблон Observer на PHP

 26 сентября 2016 г. 18:28

Observer(Наблюдатель) - является поведенческим шаблоном проектирования. Является достаточно популярным шаблоном проектирования, но, при этом, очень прост в реализации. Данный шаблон предполагает зависимость между объектами "один ко многим" так, что при изменении состояния одного объекта все зависящие от него объекты уведомляются и обновляются автоматически. Таким образом, в шаблоне наблюдаются две роли: субъект и слушатель. Шаблон "Наблюдатель"определяется следующими свойствами:

  • существует, как минимум, один субъект, рассылающий сообщения;
  • имеется не менее одного получателя сообщений, причём их количество и состав могут изменяться во время работы приложения;
  • нет надобности очень сильно связывать взаимодействующие объекты, что полезно для повторного использования.

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


Аналогия

Самая банальная аналогия - подписка на рассылки какого-либо сайта. Когда на сайте появляется новый материал, то всем подписчикам рассылается e-mail-уведомление о появлении нового материала, а подписчики уже принимают решение просматривать новый материал или нет.

Читать далее  

Простая jQuery галерея изображений

Категория: Javascript
 11 августа 2016 г. 17:30

Библиотека jQuery появилась в 2007 году. С тех пор с ее использованием было разработано огромное количество плагинов, в том числе и галерей изображений. Они изобилуют красивыми рамками, годными анимационными переходами и замечательным дизайном. Однако, что интересно, мне еще не попадалась на глаза какая-нибудь jQuery-галерея с возможностью поворота изображения. А ведь довольно часто приходится просматривать изображения, перевернутые на 90 градусов, а то и вовсе загруженные вверх-ногами. Именно такая функциональность требовалась для моего проекта.

На самом деле, переворачивать изображения с использованием javascript очень легко. Зная это, я решил написать свою простую галерею изображений с возможностью поворота, которая базируется на плагине jquery. Сказано – сделано, спустя несколько часов появились вполне себе годные результаты:

Читать далее  

Теги:  jQuery javascript 

Обрезка изображений в PHP стандартными средствами

Категория: PHP
 8 июля 2016 г. 11:41

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

Конечно, такой способ обрезки не тянет на звание "серебряной пули", но за неимением более продвинутой логики обрезки изображений вполне может успешно использоваться. Код, решающий таким образом задачу, приведен ниже:

Читать далее  

Теги:  php 

PHP. Рецепты программирования

Категория: Книги
 3 июля 2016 г. 16:26

Авторы: Дэвид Скляр, Адам Трахтенберг

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

В книге, в частности, описаны решения следующих наболевших задач:

  • валидация форм;
  • решение проблем безопасности;
  • работа с графиков;
  • обработка XML и JSON файлов;
  • работа с REST-сервисами;
  • рассмотрены вопросы интернационализации и локализации;
  • работа с регулярными выражениями;
  • работа с файловой системой;
  • отладка сценариев и написание юнит-тестов;
  • оптимизация веб-приложений.

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

Теги:  PHP книга 

Реализация 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 ООП 

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

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

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

Видим ошибки

Читать далее  

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

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

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

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


__autoload()

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

Читать далее  

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

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

 22 мая 2016 г. 23:28

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

Читать далее  

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

Шаблон Модуль в 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 - все нормально

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


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

Читать далее