Search
Write a publication
Pull to refresh
24
0
Александр @Holden

User

Send message

Взгляд на мужские смартфоны Motorola RAZR, RAZR MAXX и DROID 4

Reading time1 min
Views5.4K
Мы уже рассказывали о двух планшетах, выставленных компание Motorola на конференции CES. Сегодня речь пойдет о трех смартфонах: RAZR, его версии с увеличенной батареей RAZR MAXX и клавиатурнике DROID 4.



Аппаратная начинка у всей троицы практически одинаковая: двухъядерный процессор TI OMAP 4430 с частотой 1.2 ГГц, поддержка сетей LTE, 8 МП основная камера (фронтальная 2 или 1.3 МП), 4.3-дюймовый Super AMOLED дисплей с разрешением 540x960 (но 4-дюймовый TFT у Droid 4), 16 ГБ внутренней памяти, 1 ГБ оперативки и слот для MicroSD. Теперь обо всех отдельно.
Читать дальше →

Codeception — тестирование по-новому

Reading time4 min
Views88K
PHP очень популярный язык программирования, но тестирование в нем, это скорее прерогатива экспертов, а не жизненная необходимость. Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет. Скорее всё от того, что системы тестирования порой излишне усложнены. А тесты, наоборот, должны были предельно просты: легко читаться, писаться, отлаживаться, и конечно же, быстро выполняться. Мое виденье того как это можно воплотить в PHP вылилось в проект под названием Codeception.

С ним тесты для ваших веб-приложений могут выглядеть так:
<?php
$I = new TestGuy($scenario);
$I->wantTo('create new blog post');
$I->amOnPage('/blog/posts');
$I->click('Create new post');
$I->fillField('Title','Codeception, a new way of testing!');
$I->fillField('Text','Codeception is new PHP full-stack testing framework.');
$I->click('Send');
$I->see('Congratulations, your post is successfully created!');


Согласитесь, такой тест понятен без дополнительных комментариев.
А теперь самое интересное: этот код без всяких изменений может быть выполнен как функциональный тест в фреймворках symfony, Symfony2,Zend Framework, а также в браузерном эмуляторе Goutte и даже через Selenium. Таким образом, вам предлагается единый интерфейс для написания функциональных тестов практически для любого сайта.
Читать дальше →

Vox.io — новый взгляд на идею Skype

Reading time2 min
Views1.2K
Итак, Vox.io — это сервис, который позволяет звонить на мобильные номера и аккаунты самого Vox.io прямо из браузера (как с видео, так и без). А ещё делать групповые звонки (читай, телеконференции), звонки на e-mail (ниже) и отправлять sms. Возможно, пока я писал, появилось что-то ещё — проект очень живой.



В среднем, цена на звонки по России составляет 2 рубля при абонементе и 4 рубля при «просто звонках». При регистрации вам сразу же выдают 10 рублей (25 евроцентов), а за каждого приглашённого начисляют ещё по 6 рублей (15 евроцентов).

Ниже я подробнее расскажу о 3-х главных полезностях Vox.io, которые меня «зацепили».
Читать дальше →

Работа с памятью (и всё же она есть)

Reading time13 min
Views108K
Существует распространенное мнение, что «рядовому» PHP разработчику практически не нужно заботиться об управлении памятью, однако «заботиться» и «знать» всё же немного разные понятия. Попытаюсь осветить некоторые аспекты управлению памятью при работе с переменными и массивами, а также интересные «подводные камни» внутренней оптимизации PHP. Как вы сможете убедиться, оптимизация это хорошо, но если не знать как именно она «оптимизирует», то можно столкнуться с «неочевидными граблями», которые могут вас заставить изрядно понервничать.

Читать дальше →

BrowserID: почтовый адрес как ID пользователя

Reading time2 min
Views2.2K
Mozilla закончила разработку BrowserID — единой децентрализованной системы аутентификации, которая использует HTML5, криптографию с открытым ключом и цифровые подписи. Она основана на упрощённой интерпретации Verified Email Protocol.

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


Так будет работать система, если Gmail станет поддерживать BrowserID. В этом случае отпадёт необходимость подтверждать свой email на сайте Browserid.org, который сейчас является пока единственным центром идентификации первого уровня.

Кроме отсутствия паролей, ключевым преимуществом BrowserID является защита приватности — в отличие от OpenID и всех подобных систем, провайдер identity в BrowserID не получает данных о том, на каком сайте залогинился пользователь.
Как поставить форму BrowserID на своём сайте

Учебный курс по разработке для Android от Google

Reading time1 min
Views8.4K
image
Желая привлечь еще больше разработчиков, в Google приняли решение организовать самостоятельно специальную программу для обучения программированию под свою мобильную платформу.

Обучающая программа носит название Android Training и уже доступна желающим. Надо сказать, что диапазон тем программы весьма разный: начиная от азов, таких как работа с Layout — затем рассматриваются такие темы как работа с аудио, фото, оптимизация работы батареи — заканчивая вопросами монетизации приложения. Статьи, конечно, сопровождаются инфографикой и примерами кода, а сам ресурс, как обещает команда Android Team, будет развиваться и дополняться.

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

Пост-анонс можно посмотреть здесь.

[Android Training]

PHP MongoDB ORM

Reading time2 min
Views12K
php+mongo
MongoDB — документо-ориентированная система управления базами данных хранящая данные в виде наборов JSON-подобных документов. Для работы с MondoDB в PHP используется pecl расширение mongo, позволяющее полноценно работать с СУБД используя объекты доступа.
В статье пойдет речь об ORM (Object-relational mapping) standalone библиотеках и фреймворках позволяющих упростить использование Mongo в PHP проектах и предоставляющих интерфейс к работе с данными.
Читать дальше →

Не DropBox единым жив человек – 10 альтернатив популярному сервису

Reading time5 min
Views83K
Dropbox — чрезвычайно популярный облачный сервис. Если вы давно им пользуетесь, то скорее всего, не искали альтернативы. Это не удивительно — Dropbox настолько удобен в пользовании, что стимула для поиска другого сервиса просто нет. Однако, если задуматься, сервис имеет ряд весомых недостатков:
• Нельзя разместить свой собственный сервер;
• Бесплатно доступно всего лишь 2 Гб;
• Нет удаленного доступа к компьютерам;
• Нет открытого исходного кода.

А ведь сервису DropBox существует множество альтернатив — как новых, так и не очень.
Читать дальше →

Channel.me → совместный просмотр сайтов

Reading time2 min
Views5.3K
Внезапно, у меня возникла задача выбрать товары в интернет-магазине вместе с сестрой. Казалось бы всё просто, только вот сестра находится на 800 км вдали от меня.

Кидать ссылки друг другу или шарить один из рабочих столов я посчитал неэффективным. Но нашёлся революционный сервис, который похож на Google Docs, но только для совместного посещения сайтов — Channel.me.



Ближе к делу: демо-канал для хабрапользователей | демо-канал №2
Комментарий от создателей по поводу хабра-эффекта в демо-канале:
The demo-channel is a bit crowded… Looks more like a stress test :-)
Our virtual server is running at 160% and with 20Mb/s traffic… cool!

Далее чуть-чуть текста, скриншот и ссылки на расширения

AzaThread — многопоточность для PHP с блэкджеком

Reading time6 min
Views18K
В сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.

Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
Набор требований у меня был следующий:
  • Использование форков;
  • Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
  • Многократное использование дочерних процессов;
  • Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
  • Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
  • Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
  • Обработка ошибок выполнения;
  • Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
  • Максимум производительности;

В результате получилась библиотека AzaThread (старое название — CThread).
Подробности

Обработка критических ошибок в PHP

Reading time6 min
Views33K
В статье описан функционал, который доступен в PHP (актуально для 5.3.х) для обработки ошибок всех типов, включая ошибки интерпретации кода (E_ERROR, E_PARSE, E_WARNING, etc). Эта обработка поможет вам для управляемого отображения страницы в случае возникновения таких проблем. В статье присутствует множество описаний и рабочих примеров(архитектуры) для того, что бы сразу воспользоваться в своем программном продукте. В конце концов, ну немного сломали сайт, ну надо же, об этом сообщить поисковику с заголовком 4хх или 5хх и повеселить пользователя, вместо возврата белого экрана (или что хуже экрана со священной информацией, для хакеров) с ответом 200 Ok.



Идея написать этот топик возникла, когда я на храбре задал 2 вопроса:

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

Если заинтересовались, то подробности под катом…
Читать дальше →

Посмотри, что ты скачал в торрентах

Reading time2 min
Views48K
«Здравствуй, пират! Твой IP-адрес есть в нашей базе данных. Любишь скачивать торренты, правда? По крайней мере, кто-то в твоём доме точно любит. Судя по нашим записям, ты скачал несколько файлов в последнее время. Внизу ты видишь табличку с некоторыми примерами», — такими словами приветствует посетителей новый веб-сервис YouHaveDownloaded.com, созданный нашими соотечественниками. Ведущие разработчики Руслан К. и Илья Р. (на фото) на всякий случай скрывают свои фамилии, мало ли что.

Сервис позволяет посмотреть список скачанных файлов по заданному IP-адресу. Чтобы избежать наложений из-за динамических IP, якобы учитываются временные метки и уникальные метки компьютеров из DHT, но сидящие за NAT могут чувствовать себя в безопасности.
Читать дальше →

Синглтоны версии 5.3 в 5.2

Reading time2 min
Views2.1K

Задача


В общем, сложилась такая ситуация, что на предоставленном для проекта хостинге, версия PHP была 5.2, а сам проект написан под 5.3. Наверняка все, кто работает с PHP, знают, что в версии 5.3 появилась возможность доступа к имени класса, полученного с помощью позднего статического связывания.
Читать дальше →

ARM выпустила Development Studio 5 Community Edition — среду разработки для Android

Reading time1 min
Views8.7K
Вчера ARM выпустил среду разработки для Android — ARM Development Studio 5 Community Edition, учитывающую особенности микропроцессоров ARM, прелесть которой заключается в том, что эта версия стала бесплатной, в отличие от ранее представленной коммерческой версии. Конечно, выпущенная среда CE содержит ограниченный функционал коммерческой версии, однако же все основные инструменты для написания и отладки кода присутствуют в полной мере — включая стандартный SDK (Software Development kit) и набор NDK (Native development kit).

Среда разработки представляет из себя кастомизированный Eclipse, сама разработка ведется на С++.

Утвердается, что программы, написанные при помощи среды разработки ARM при аналогичных условиях работают в 4 раза быстрее, чем Java-код, запущенный в аналогичных условиях и написанный в Eclipse при помощи ADT от Google.

Доступны версии для Windows и Linux. Страница продукта находится здесь.

Производительный и читабельный XSLT: сборник советов

Reading time7 min
Views11K
В моей практике чаще всего в качестве шаблонизатора используется именно XSLT. Я не буду рассуждать о том, почему так происходит — о преимуществах данной технологии написано вполне достаточно. Но ещё больше написано о её недостатках. Считается, что XSLT является слишком многословным и тяжёлым для чтения, а также не самым производительным. В этой статье я постараюсь собрать несколько советов по улучшению качества XSLT-кода с точки зрения читабельности и выразительности. Некоторые из них также позволят XSLT работать несколько быстрее.

Именованные шаблоны

Многие «проблемы» XSLT связаны с тем, что мы слишком часто пытаемся писать на нём в процедурном стиле. Мы постоянно пытаемся сделать из него Smarty, но упираемся в один простой факт — XSLT является декларативным языком, как бы необычно это для нас не выглядело.
Например, мы пытаемся использовать именованные шаблоны, воспринимая их как процедуры, выводящие данные в определённом формате:

<xsl:template name="CreateItemLink">
    <xsl:param name="item"/>
    <a href="/item/?id={$item/id}">
        <xsl:value-of select="$item/name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Наверное, многие программисты именно так написали свой первый шаблон. И он неплохо решает свою задачу. Декларативный XSLT предлагает немного другой подход:

<xsl:template match="item">
    <a href="/item/?id={id}">
        <xsl:value-of select="name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Разница совсем не велика. Дело вкуса и стиля программирования. Давайте посмотрим, как шаблон будет использоваться в дальнейшем.

Читать дальше →

Еще раз о поиске простых чисел

Reading time7 min
Views230K
Скульптура `Решето Эратосфена` (Стэнфордский университет) В заметке обсуждаются алгоритмы решета для поиска простых чисел. Мы подробно рассмотрим классическое решето Эратосфена, особенности его реализации на популярных языках программирования, параллелизацию и оптимизацию, а затем опишем более современное и быстрое решето Аткина. Если материал о решете Эратосфена предназначен в первую очередь уберечь новичков от регулярного хождения по граблям, то алгоритм решета Аткина ранее на Хабрахабре не описывался.

На снимке — скульптура абстрактного экспрессиониста Марка Ди Суверо «Решето Эратосфена», установленная в кампусе Стэнфорского университета
Читать дальше →

jQuery Mobile 1.0

Reading time2 min
Views4.5K


После более года разработки увидел свет финальный релиз jQuery Mobile 1.0 на базе jQuery 1.6.4 (поддержка jQuery 1.7 появится с версии jQuery Mobile 1.1). Этот фреймворк создан для разработки сайтов с тач-интерфейсом при помощи привычных HTML, CSS и JavaScript. Инструменты вроде PhoneGap позволяют легко трансформировать сайт HTML5 в мобильное приложение и распространять его через магазины приложений.
Читать дальше →

Одновременная межсайтовая аутентификация без велосипеда

Reading time6 min
Views22K
Одновременная межсайтовая аутентификация (SSO), для чего же она нужна? Допустим у нас есть, назовём его анахроничным термином «портал», с блогами, фотками, фейлами (или файлами, кому как), назовём его fail.ru (не путать с одноимённым сервисом почты на букву М), причём всё это усложнено следующими факторами:
— функционал совершенно разный;
— код написан разными людьми, с испольованием разных технологий;
— работает всё это на разных серверах в разных датацентрах и с разными базами данных;
— сервера находятся на разных доменах.

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

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

Далее мы рассмотрим самописные альтернативы, OpenID, OAuth, SAML, и почему всё это в общем случае не слишком хорошее решение, вопросы хранения аутенитификационных данных, а также некоторые вопросы безопасности в которые без хороших знаний самому лезть не стоит, что такое вообще межсайтовая аутентификация, развеем некоторые мифы.
Шок, ужас, потрясение

Асинхронный UI: будущее веб-интерфейсов

Reading time4 min
Views7.5K
В то время как Ajax стал мейнстримом, пользовательские интерфейсы по-прежнему не могут похвастаться мгновенной отзывчивостью к действиям пользователя. Причина в том, что многие разработчики привыкли мыслить в терминологии «запрос/ответ» и думают, что UI должен работать параллельно с фронтэндом, дожидаясь ответа от сервера на каждый запрос. Но почему бы не обновлять интерфейс раньше, чем пришёл ответ?

Проблема довольно острая, потому что быстродействие является критически важной характеристикой UI. Например, по оценке Amazon, задержка загрузки страницы всего лишь в 0,1 секунды приводит к снижению оборота магазина на 1%. По оценке Google, задержка в 0,5 секунды уменьшает количество поисковых запросов на 20%.

Ruby/JavaScript-разработчик Алекс Маккоу (Alex MacCaw) из компании Twitter предлагает логичное решение проблемы: распространить принципы Ajax не только на фронтэнд, но и на пользовательский интерфейс. Он разработал соответствующий фремйворк для того, что называется AUI (асинхронный интерфейс пользователя).
Читать дальше →

PHP Namespace

Reading time6 min
Views112K
Недавно инкапсулировал свой проект в namespace и столкнулся с проблемой отсутствия нормальной документации. Все, что удалось найти датируется примерно 2009 годом, а на дворе почти 2012… В найденном материале куча нерабочих мест, использующих то, что в нынешней версии php нет. В связи с этим хочу немного осветить этот вопрос.
Читать дальше →

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity