Павел Новицкий

Нерегулярные заметки

Реферальные ссылки у Каганова

28 июля 2014, 14:30

Зашёл как-то на дневник Леонида Каганова по ссылке из Фэйбука. Зашёл и немного прифигел:

По ссылке c https://www.facebook.com/ тебе открылся мой дневник . Тут надо понимать, что это мой личный дневник, он не обязан тебя развлекать, а мои взгляды не обязаны соответствовать твоим. И тогда мы будем друзьями. Спасибо.

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

Ан нет. Как оказалось, банальный вывод заголовка HTTP referer. Без заумной фильтрации и логики. Показать откуда пришёл, вывести сообщение и, если надо, показать что статья уже достаточно старая.

По ссылке c http://yandex.by/clck/jsredir?from=yandex.by;yandsearch;web;;&text=&etext=399.oVFiUOjtEVkvTl59cQUrqPRdEVuw-WQrZmSa-W3ySXuRxkfIV3QrqGI5Thq50ZrWrTqnosfCNKsO6bCJd3YmS3ye0-zns2fMu4BkPSxBQ4YPYPs73y_lyecnkdijJYEDEpsgZYQ09×6YVHMoU9OgVj2pE33CDdJgnyyxkk9o_9kcxKJeqyXYq_vg79-MEmnMes7_RocJ23XhtFkJehWB3w.bcc0c48af6f6202de6600996b94d7e7fe75a3159&uuid=&state=AiuY0DBWFJ4ePaEse6rgeAjgs2pI3DW9hm8HEztPxP4HW-vt6WL60clAXBdnzqdNVRLzioUCtL9vEPt1RPqdxM_jq_xNzle23sYWPDQP4NFmuE3VfZL9HE4ex1fIU8LqEi-OgwgLtsTiDzdsPPgCye4oNXwr4EWacaXcNP_uaU4WZofx6atW2xJ0o3lfIZiTd-KSJnE6tGbjw3RPmZWzU0kV_LFj1yU0lWyd3ZRTOhbLN0HpXOtO4Q&data=UlNrNmk5WktYejR0eWJFYk1LdmtxZ2E0VWkwSDlhdWlQUGFPLW00NXBwRWpQR3RzSE9ndHBBWktfallQV1Q0NkxaSWRLU21yM1hWM3hoMEJmb203QndnRF9HUk5wTW1LVlc5MFJPaFk5S3ZpbWtUWDE1dmhJbkRVOU1qNDhRRVY&b64e=2&sign=467f751202b9882ed40042a44d04c89f&keyno=0&l10n=ru тебе открылся мой дневник (причем, очень старая страница). Тут надо понимать, что это мой личный дневник, он не обязан тебя развлекать, а мои взгляды не обязаны соответствовать твоим. И тогда мы будем друзьями. Спасибо.

Всё просто и не до конца доработано, но идея-то великолепна.

Вконтакте
Отправить

Инструменты для работы с XML на PHP

26 июля 2014, 1:54

Основывается на ответе со StackOverflow и многочисленных вопросах «какой регуляркой можно...»

Нативные XML расширения

PHP предоставляет достаточно широкий набор доступных из коробки расширений для создания, редактирования и сохранения XML.

DOM
Расширение DOM работает с XML через DOM API. Это реализация W3C’s Document Object Model Core Level 3 — платформенно независимого интерфейса, позволяющего динамически читать и редактировать содержимое, структуру и стили документа. DOM отлично справляется с парсингом и редактированием невалидного HTML, умеет работать с XPath. Работа основана на libxml.

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

XMLReader
Расширение XMLReader — синтаксический анализатор XML. Класс-читатель выступает в качестве курсора, следует по потоку документа и останавливается на каждом узле на этом пути.

SimpleXML
Расширение SimpleXML предоставляет очень простой и легкий в использовании набор инструментов для преобразования XML в объект, с которым можно затем работать через его свойства и с помощью итераторов.

SimpleXML так же хорошо справляется с валидным XHTML кодом. При работе со всякой мешаниной готовьтесь к сюрпризам.

Сторонние библиотеки на основе libxml

phpQuery
Библиотека, работающая на стороне сервера. Основа синтаксиса и селекторов взята из jQuery. Присутствует cli интерфейс.

Zend_Dom
Компонент Zend_Dom предоставляет инструменты для работы с документами и структурами DOM. В настоящее время мы предлагается инструмент Zend_Dom_Query, который дает унифицированный интерфейс для запросов к документам DOM с использованием селекторов XPath и CSS.

QueryPath
PHP библиотека для работы с XML и HTML. Способна работать не только с локальными файлами, но и с вэб-сервисами и базами данных. Синтаксис основывается на интерфейсе jQuery селекторов, в том числе CSS селекторов. Может быть установлен через Composer.

FluentDom
Расширение DOMDocument в виде jQuery-подобного интерфейса для работы с XML. Работает через XPath, а не CSS (заявлена улучшеная производительность). Может быть установлен через Composer.

fDOMDocument
Расширяет DOMDocument. Введены исключения для обработки ошибок вместо стандартных warning и notice сообщений. Добавлены кастомные методы и сокращения для удобства и упрощения работы с DOM

Сторонние библиотеки не основанные на libxml

Основное преимущество работы с DOM/libxml — производительность и доступность прямо из коробки. Но не все библиотеки пошли этим путём. Вот некоторые из них.

SimpleHtmlDom
HTML DOM парсер, написанный на PHP5. Справляется с невалидным HTML кодом. Использует интерфейс jQuery селекторов.

Очень медленный и прожорливый инструмент. Библтиотеки на основе libxml значительно производительней.

Ganon
Универсальный парсер HTML/XML/RSS. Работа с элементами и атрибутами. Справляется с невалидным HTML. Позволяет использовать jQuery селекторы. Своя реализация аналога HTML Tidy, CSS и JS минифаера.

HTML 5

Парсинг в HTML5 от W3.

html5lib
Реализация на питоне и PHP спецификации WHATWG HTML5.

Веб-сервисы

YQL
Yahoo! Query Language (YQL) — SQL-подобный язык запросов. Работает с удалёнными ресурсами в формате HTML, XML, RSS и Atom.

ScraperWiki
Интерфейс для конвертации данных из одного формата в другой для использования на вэбе или в приложении

Регулярные выражения

Последний и наименее рекомендуемый метод работы с HTML — регулярные выражения. Большинство решений сильно зависят от конкретного случая. Малейшие изменения в разметке — лишний пробел, добавление или изменение атрибутов и регулярка уже не работает. Всегда следует подумать дважды прежде чем использовать регулярные выражения. HTML парсеры пишутся с оглядкой на HTML синтаксис. Регулярки же каждый раз придётся подстраивать под конкретную задачу.

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

На ту же тему: Parsing Html The Cthulhu Way

Вконтакте
Отправить

Избыточность собеседований

23 июля 2014, 23:31

Сейчас любой, претендующий на место в IT компании, проходит профессиональное интервью. По сути, целью подобного собеседования является выяснить реальный уровень кандидата, оценить насколько собеседуемый готов к выполнению задач, решаемых фирмой. Ну, ещё прикинуть сможет ли человек влиться в коллектив. По идее. В реальности же получается, что претендента прогоняют по всем возможным технологиям, задают каверзные вопросы и, иногда, вынуждают проектировать на ходу целые системы. Ничего не имею против заданий, вынуждающих кандидата «включит логику». Но с общим опросом, думаю, в большинстве случем что-то не так.

Что на данный момент спрашивают на интервью? Отличия PHP 5.3, 5.4 и 5.5, работа с объектами, интерфейсы, ссылки, трэйты, замыкания, SPL классы, вопросы безопасности, MySQLi, PDO, фрэймворки.

А теперь подумаем. Компания уже достаточно долго развивает свой продукт, в качестве минимальных требований указан PHP 5.2. И зачем на данном этапе трэйты? Или, например, основное напрвление — это доработка и поддержка имеющихся сайтов. Считаете что будет много проектов на PHP 5.5?

Для работы с CMS или фрэймворком важно знакомство человека с конкретной системой. Кто-то сможет быстрее понять архитектуру, полноценно включиться в процесс, кому-то понадобится больше времени. Бывает, правда, люди вообще не в состоянии принять новую систему. Не факт что знание Yii или Phalcon поможет разобраться с тем же OpenCart (пример притянут за уши, но всё же).

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

Вконтакте
Отправить

Код не важен

18 июля 2014, 0:23

Большая часть написанного ниже относится к вебу, хотя, сомневаюсь что в других сферах ситуация лучше.

Среди программистов бытует мнение, что код надо писать красивый и самодокументируемый. Приложения должны быть хорошо спроектированы и покрыты тестами. Алгоритмы обязательно оптимальные. Технологии — самые передовые. Всё это, конечно, важно. Для программистов.

А теперь вопрос: какое приложение конечные пользователи выбирают за качество кода? Я не про библиотеки, фрэймворки или cms как средство разработки — это опять же программисты для программистов. Есть у нас, допустим, 2 сервиса конкурента. И один написан студентом, вчера прочитавшим Котерова. А второй — маститым профессионалом. Каким сервисом будут пользоваться люди при прочих равных? А вот и нет. Пользоваться будут тем, у которого маркетинговая программа лучше. Что там под капотом — интересует только разработчика, нанятого подчистить куски, которые не справляются с возросшей нагрузкой.

Люди смотрят на бантики-рюшечки и функционал. А upper там camelCase или lower — вещь никому не интересная. Одна моя знакомая как-то сказала: «Программисты — чернорабочие нового времени». Все занют Джони Айва, а как звали того парня, что собирал первый прототип айпода? Как зовут администратора новостного сайта, на который вы ежедневно заходите?

И что-то вроде резюме. Качество кода — это приятное дополнение, некий реверанс в сторону коллег по цеху, аналог вежливого поведения в обществе и средство похвастаться в своей тусовке, но не самоцель. А требование заказчика о соблюдении всех стандартов и методологий — в 90% случаев не более чем просто слова.

Вконтакте
Отправить

Как расширение хрома интернет ломает

16 апреля 2014, 16:52

Готовили мы сегодня новую версию Facebook All in One. При проверке демо-магазина у одного человека не срабатывало подключение скрипта http://connect.facebook.net/ru_RU/all.js. Всё грузится, а этот файл ни в какую. Причём, проблема в хроме. Во всех остальных браузерах работает, а в хроме — «load denied». Попробовали загрузить другие сайты, поддерживающие регистрацию через социалки. Тот же эффект. Твиттер, фэйсбук, гугль плюс, вконтакт — все социальные виджеты отключены, а в консоли появляются сообщения о запрете загрузки скриптов.

И что тут будешь делать? Пришлось проверять все установленные в браузер расширения. Проблема была в том, что расширений этих было порядка 20, из них 8 — это всяческие версии адблоков и сканеров безопасности (зачем их столько?).

В итоге, виновником оказался avast! Online Security. По сути, приложение-то полезное — мониторить подключённые на сайте скрипты и отсекать потенциально опасные, проверять сайты на фишинг, собирать рейтинг доверенных адресов. Вот только почему ко всему этому в нагрузку по умолчанию добавляется блокировка социальных виджетов и скриптов аналитики?

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

Что подумает обычный пользователь про приложение от автора антивируса? «А, это такой дополнительный антивирус для браузера, конечно добавлю!». А если подобный плагин установит заказчик, общение с которым происходит по переписке? Как исправлять баг когда у всех есть, а он не видит?

Запрещать загрузку повсеместно используемых скриптов как-то не комильфо. Вот и получается, что ребята своими благими намерениями немного поломали интернет. И никто, кажется, не виноват, а неприятны осадочек остаётся.

Вконтакте
Отправить

Состояние e-commerce в Беларуси

15 апреля 2014, 17:25

Аналитика for fun. Совсем малая выборка, совсем не те параметры рассматриваются, совсем некомпетентный автор :-)

Вконтакте
Отправить

Вышла первая стабильная версия OroCRM

2 апреля 2014, 13:50

Первого апреля вышла первая стабильная версия OroCRM. Основанная людьми стоявшими у истоков создания Magento (Yoav Kutner, Dmitriy Soroka, Jary Carter) теперь OroCRM стремится занять лидирующее положение на рынке бесплатныых бизнес приложений.

Опираясь на фрэймворк Symfony 2 OroCRM на данный момент вырасла в два самостоятельных продукта: саму CRM и Oro Business Application Platform (OroBAP).

OroBAP представляет из себя надстройку над стандартным symfony framework, позволяющую разработчику польностью изменить CRM под нужды заказчика.

OroBAP is based on the Symfony 2 framework. If you know Symfony, you already know 80% of OroBAP and can start building applications immediately

Alan Storm

Так же ожидается, что платформа превратится в настоящий маркетплэйс дополнений для OroCRM.

Осовываясь на оупенсорсном фрэймворке OroCRM так же является полностью открытой системой.

В ближайшее время разработчики планируют выпустить и Enterprise версию CRM.

Полезные ссылки на сайте OroCRM:

Полезные ссылки на GitHub:

Вконтакте
Отправить
← Раньше Позже →
© 2013-2024