Программирование

Статьи по программированию

Особенность работы join в JavaScript

При работе с массивом в JavaScript мне пришлось столкнуться с неожиданным поведением работы метода join(). Неожиданным оно является из-за того, что в книгах, которые я читал по JavaScript, не было сказано о том, как JavaScript выводит массивы. Вернее что произойдет, если попытаться вывести в цикле for разряженный массив (индексация массива не является непрерывной). И только после того когда я увидел что произойдет сам, я начал находить примечания в документациях. Все дело в том, что в JavaScript вывод массива идёт от 0 до arr.length. Т.е. нет проверки на его разреженность как например в PHP. И вот сейчас, когда мы знаем об этой особенности вывода массивов, мы можем провести тест с методом join().

В документации по языку программирования JavaScript сказано, что метод join() объединяет все элементы массива (или массивоподобного объекта) в строку: Читать далее

Удаление дублей контактов в AmoCRM

Исходя из моих наблюдений, более половины пользователей AmoCRM заботятся о виде структуры их списка контактов. В основном их беспокоит наличие дублей. У пользователей, которые пользуются AmoCRM уже достаточно продолжительное время и поток их клиентов (как старых, так и новых) достаточно велик, то рано или поздно их список контактов начинает изобиловать дублями. Причем дублей становится так много, что настает пора подумать о том, как бы от этого всего изобилия начать избавляться. Дело в том, что AmoCRM не позволяет произвести удаление карточек клиента через API. А значит, придется разработать модуль, позволяющий производить удаление контактов не используя API AmoCRM. В качестве языка программирования был выбран PHP. Но для того чтобы приступить к удалению, контакты следует получить и разделить их на дубли и уникальные. Читать далее

Работа с API почтового сервиса Mandrill

Mandrill это мощный почтовый сервис от MailChimp. Он является одним из самых удобных в использовании и настройке из семейства однотипных сервисов для отправки почтовых уведомлений. Этот сервис удобно использовать не только для рассылки неких писем коммерческого характера, но и обычных уведомлений с личного сайта. Так как электронные письма, отправляемые с личных сайтов, могут попадать в спам, то это будет еще одним плюсом в пользу решения о выборе услуг данного сервиса.

Для взаимодействия сервиса Mandrill с приложением, существует API с довольно широким спектром возможностей, с основными из них нам и предстоит, познакомиться. К тому же имеется возможность использования базового (бесплатного аккаунта) позволяющего производить рассылку до 12000 писем в месяц. Читать далее

DOMPDF – экспорт данных из PHP в PDF

С помощью библиотеки DOMPDF можно создавать PDF файлы из HTML кода. Нужно только сверстать некий HTML шаблон и передать его DOMPDF и уже на выходе получить сгенерированный PDF файл. Но не надо забывать и то, что эта библиотека не движок для обработки веб-страниц, а значит и шаблоны должны быть сверстаны с использованием самых базовых средств: HTML тегов и CSS стилей. Хотя разработчики заявляют, что их библиотека поддерживает стандарты CSS 2.1 и даже некоторые свойства CSS 3. С полным их перечнем можно ознакомиться здесь. Есть, кстати, один минус – она является довольно “прожорливой” к оперативной памяти. Поэтому возможно придется задуматься об аренде виртуального выделенного сервера. Но это зависит от содержания и объема планируемых PDF документов. С другой стороны она вам может помочь сэкономить много времени на разработку различных отчетов в формате PDF. Читать далее

Компонент календаря на PHP

Существуют ситуации когда нельзя воспользоваться компонентом календаря созданном на JavaScript. Как правило, это те случаи когда требуется возможность не автоматизировать выбор даты в HTML форме, а возможность привязки неких произошедших или планируемых событий к датам в будущем. Это может быть количество новостей на определенную дату, количество заказанных товаров или совершенных покупок в интернет-магазине и т.д. Т.е. в таких случаях становится очевидной необходимость в наличии связи календаря с базой данных, для получения тех или иных сведений за определенную дату. Конечно, можно было бы создать календарь на JavaScript и для получения данных о наличии тех или иных событий использовать Ajax, но как показывает практика такое решение не является оптимальным. Поэтому данный компонент календаря будет разработан на PHP. Читать далее

Подводные камни в API Google Analytics

Попросил меня как-то раз очень давний знакомый написать ему небольшое веб-приложение по обработке отчетов полученных через API Google Analytics. Конечно сервисы Google, вещи то серьезные и соответственно ничто не предвещало никаких проблем.

Разработку предполагалось производить на PHP версии 5.2. После успешной находки пары примеров на PHP по взаимодействию с API Google Analytics и скачиванию уже разработанного клиента для работы с самим API, я начал разбираться, как и что работает. Пришлось для начала активировать сервис API Google Analytics и зарегистрировать приложение, ну а затем привязать его к своему аккаунту. Затем после небольшой модификации найденного мною примера исходного кода выяснилось, что нужна версия PHP 5.3. Хотя в документации было указано, что требуется использовать версию PHP 5.2.x или выше. Но и сотрудники службы поддержки Google заявляют тоже о необходимости использования PHP версии 5.3. Да, эта новость, конечно, не принесла радости, но все же было принято решение PHP обновить. Тем более что раньше уже было подобное желание, а тут еще и стимул появился. Читать далее

Нейронная сеть в PHP на Denwere 3

С переходом на новую версию Denwera, а соответственно вместе с ним и на новую версию PHP, возникла необходимость в обновлении некоторых расширений. В частности это коснулось и библиотеки – FANN (Fast Artificial Neural Network). Что, конечно же, особо не радовало. Поскольку как было описано в этой статье, изначальная установка данной библиотеки на Denwer 2 c версией PHP 5.2 – радости не принесла. Так как не было ясности: где искать расширение, какие нужны библиотеки и т.д. На первом месте был, конечно же, вопрос: а как обстоят дела с библиотекой FANN для PHP 5.3 под Windows? Но очень быстро был найден ресурс, где есть скомпилированные библиотеки для PHP под Windows от версий 5.3 и выше. Причем как было видно, имелся даже выбор разрядности. А также выбор типа PHP NTS(Non thread safe) или TS(Thread safe). Для того чтобы узнать тип PHP и остальную о нем информацию, необходимо воспользоваться функцией phpinfo(). Читать далее

PHP и формат передачи данных JSON

JSON (JavaScript Object Notation) – формат для обмена данными в текстовом виде. Позволяющий передавать сложные структуры данных в сериализованном виде. Этот формат передачи данных стал настолько популярен, что уже в ядро PHP начиная с версии 5.2.0, были добавлены функции по обработке данных в этом формате. А это значит, что нет необходимости в подключении дополнительных расширений. Формат данных JSON хорошо понятен человеку. Кроме того данный тип обмена данными широко используется между различными API сервисами. А при корректной разработке алгоритмов для обмена информацией, можно получить очень высокий прирост скорости чем, к примеру, при работе с данными в формате XML. Читать далее

Работа с zip-архивами в PHP

Уже долгие годы самым распространенным форматом сжатия данных, является формат ZIP. Данный формат широко используется в разработках под web. Поэтому многие языки для web-программирования имеют либо встроенные средства или возможности подключения необходимых библиотек для работы с zip-архивами.

Непосредственно в самом PHP функций для распаковки и создания zip-архивов нету. Хотя это зависит, от вариантов его сборки. Но они присутствуют в PHP расширении “php_zip”. И именно оно позволяет работать с архивными zip-файлами. Читать далее

Плагин для jquery — saveform

В библиотеке jquery ui есть отличный виджет, это ui dialog. Он позволяет создавать красивые и многофункциональные диалоговые окна для вашего интерфейса. Но у него есть одна серьезная проблема, которая, к сожалению практически нигде не освящается. Данная проблема состоит в следующем: если в диалоговом окне будут расположены некоторые поля html формы, то при попытке отправки формы, эти самые поля не будут отправлены обработчику. Это вы, что то сделали не так? Возможно, вы спросите себя. Но на самом деле все гораздо проще.

А дело все в том, что html элемент div (предполагается, что этот тип элемента является областью диалогового окна), выпадает из html тега form. Иными словами, при использовании виджета ui dialog, DOM модель перестраивается. Ну и соответственно ни о какой передаче полей формы не может быть и речи. Поэтому в связи с такой не утешительной ситуацией, было принято решение о создании плагина, который впоследствии получил незамысловатое имя – saveform. Читать далее