Pull to refresh
39
0
Рытов Алексей @anr

User

Send message

Пишем PHP extension

Reading time8 min
Views34K
А давайте сегодня взглянем на PHP немного с другой точки зрения, и напишем к нему расширение. Так как на эту тему уже были публикации на Хабре (здесь и здесь), то не будем углубляться в причины того, для чего это может оказаться полезным и для чего может быть использовано на практике. Эта статья расскажет, как собирать простые расширения под Windows с использованием Visual C++ и под Debian с использованием GCC. Также я постараюсь немного осветить работу с PHP-массивами внутри расширений и провести сравнение производительности алгоритма, написанного на native PHP и использующего код, написанный на C.

Писать будем расширение под PHP версии 5.3.

Pretty Painter – мое первое приложение под Android

Reading time5 min
Views17K
Pretty Painter


Всем привет! Хотелось бы поделиться с вами своим опытом создания первого приложения под Android. И если вы уже давно присматриваетесь к этой платформе, но все еще почему-то не решаетесь начать разрабатывать свои приложения, то, я надеюсь, мой топик подтолкнет вас к этому. Под катом пять причин почему не нужно сомневаться и пора действовать и еще несколько интересных моментов.
Читать дальше →

Пишем первое приложение для Android

Reading time8 min
Views560K
В любом деле самое сложное — это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

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

Главная, Каталог и Списки в интернет-магазине

Reading time1 min
Views13K


Какими должны быть главная страница, каталог и списки товаров в интернет-магазине?
Требования к пользовательским интерфейсам интернет-магазинов от UsabilityLab.

Phing — сборка PHP проектов

Reading time4 min
Views47K
У многих из нас, бывают ситуации когда проект требует подготовки к выводу в продакшн, и зачастую эта подготовка состоит из множества действий, которые приходится выполнять много раз(например при сборке релизной версии). Зачастую задачи сводятся к выполнению простых консольных команд, очистке кеша, минификации JS и CSS или сборки их в один файл, но вся эта рутина может занять довольно продолжительное время, а так как выполняется, чаще всего, в конце рабочего дня, довольно легко опечататься и отправить несколько дней\часов\минут работы над проектом в небытие. В такой ситуации программисты стараются, как то автоматизировать сборку и подготовку проекта к рабочему состоянию, в чём им помогают различные системы сборки, об одной из которых и пойдёт речь в статье.
Читать дальше →

Некоторые тонкости ИТ-аутсорсинга

Reading time11 min
Views7.1K
С огромным интересом посмотрел статьи, посвященные ИТ-аутсорсингу, которые размещены на хабре.
Как владелец не большой аутсорсинговой компании, позволю себе выразить свое мнение по поводу плюсов и минусов данного явления. Рассказать с какими трудностями приходится сталкиваться при работе в этой сфере, и как их можно избежать.

Сразу хочется сказать, что я не хочу останавливаться на теоретических аспектах построения ИТ-систем (ITIL, ITSM). В них описываются стандарты и подходы, к которым необходимо стремиться (что я стараюсь делать изо всех сил), но которые на практике не совсем все удается реализовать

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

Аутсорсинг — это ОТВЕТСТВЕННОСТЬ ЗА ПРОЦЕСС, которую берет на себя сторонний подрядчик.

Именно процесс целиком. ИТ-аутсорсинг — соответственно ответственность за ИТ-процессы компании-клиента. Процесс — упорядоченный и регламентированный набор действий для достижения поставленных целей. Если ИТ-процессов нет, или они не четкие — задача аутсорсера создать или нормализовать их. Как мне всегда казалось, и в чем я убеждаюсь сейчас — только такой подход «полной ответственности за процесс» даст возможности аутсорсеру получить максимальную прибыль и верных клиентов.
На практике мы наблюдаем ряд услуг, которые предлагают решить только часть проблем в поддержании работоспособности ИТ-систем. Я осмелюсь их классифицировать и дать свою оценку.
Читать дальше →

N+1 полезных книг о бизнесе

Reading time9 min
Views231K
В топике блиц-обзор книг, которые будут полезны IT-специалистам, бизнесменам и тем, кто собирается открыть своё дело. Рядом с каждой — короткие пояснения, почему и зачем стоит прочесть.

Отобраны лучшие 10% из примерно 200 прочитанных книг о маркетинге, продажах и всем связанном — самые «пробивные» вещи, которые помогут вам не тратить время на всякий шлак, а сразу начать с главного.

В конце — суммация книг, которые хабровчане рекомендуют в комментариях помимо основного списка.

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

5 основных ошибок интернет-магазинов

Reading time7 min
Views20K
Приятно удивившись ажиотажу вокруг предыдущего материала, я решил пойти дальше. На этот раз, под прицелом – интернет-магазины. Их ошибки, глупости и т.п.

image

Итак…

1. Отсутствие фирменной концепции (логотипа, слогана, и т.п.).


Первое, во что упирается мой взгляд при заходе на страницу – логотип сайта и слоган под ним. И благо, если на сайтах магазинов есть хотя бы логотип. Из 50 магазинов, выданных гуглом по разным конкурентным запросам, логотипа не было у 6. Не так уж и много, но и не так уж мало.

Многие владельцы интернет-магазинов банально не понимают (лично спрашивал) – огромная часть продаж строится на бренде. У человека в голове есть ряд ячеек, заполненных брендами известных фирм. К примеру, «наушники – Koss», «операционная система – MacOS X», «газировка – Coca-Cola», и т.д. и т.п. Первоочерёдная задача фирменой концепции – заполнить ячейку «интернет-магазин — ?» вашим названием. Тогда пользователь будет возвращаться снова и снова.
Читать дальше →

Работа с Postgresql: настройка, масштабирование. Дополненное издание

Reading time1 min
Views4K
image
Привет всему хабросообществу.

Время не стоит на месте. После публикации моего справочника по Postgresql очень многое успело поменяться, а точнее добавиться в эту отличную СУБД. После выхода PostgreSQL 9 версии я понял, что потребуется добавить информацию о нововведениях для этой версии. Тем более, что 9 версия знаменуется выходом репликации из коробки.
Читать дальше →

MySQL шпаргалки

Reading time3 min
Views827K
Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

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

Непрерывная интеграция и TeamCity

Reading time4 min
Views102K
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

imageВ этом топике мы в общих чертах рассмотрим процесс реализации непрерывной интеграции на примере TeamCity Enterprise 6.0 EAP (build 15400) и обратим внимание на применении инструментов рассмотренных в прошлой теме: Обеспечение качества программного продукта.
Читать дальше →

Новый Redis 2.0 и Rediska 0.5.0!

Reading time5 min
Views7.4K
RediskaДорогие друзья! На прошлой неделе вышел стабильный релиз чудесной key-value базы Redis версии 2.0 с внушающим количеством нововведений. Эта новость особенно нас обрадовала, так как мы уже год используем Redis в наших нагруженных проектах и впечатления только положительные. Мы обновили PHP клиент Rediska, добавив поддержку новых возможностей.

Обзор нововведений и примеры их практического применения...

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Reading time6 min
Views206K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?

Ускорение сайта «в 1 клик» — реальность

Reading time5 min
Views1.9K
С выходом новой версии WEBO Site SpeedUp (приложения для автоматического ускорения сайтов) — 1.3.0 — мы смогли, наконец, с уверенностью сказать: оно здесь. В смысле: идея автоматического ускорения сайтов реализована.

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

6 способов убить Ваши сервера — познаем масштабируемость трудным путем

Reading time5 min
Views18K
Узнать, как отмасштабировать Ваше приложение, не имея при этом никакого опыта, — это очень нелегко. Сейчас есть много сайтов, посвященных этим вопросам, но, к сожалению, не существует решения, которое подходит для всех случаев. Вам по-прежнему необходимо самому находить решения, которые подойдут под Ваши требования. Так же, как и мне.

Несколько лет назад ко мне пришел мой босс и сказал: «У нас есть новый проект для тебя. Это перенос сайта, который уже имеет 1 миллион посетителей в месяц. Тебенеобходимо его перенести и убедиться, что посещаемость может вырасти в будущем без всяких проблем.» Я уже был опытным программистом, но не имел никакого опыта в области масштабируемости. И мне пришлось познавать масштабируемость трудным путем.
Читать дальше →

CouchDB сегодня

Reading time8 min
Views28K


Что такое CouchDB для вас? Вероятно любой, кто хоть немного интересуется популярной нынче темой NoSQL, прекрасно знает общие детали: это такая симпатичная игрушка с map/reduce-запросами, которые пишутся на JavaScript, с которой можно работать, гоняя JSON по HTTP-протоколу, а также не исключено, что слышали, что она fault-tolerant, тобишь не ломается вообще. Дальше этого обычно дело не идёт, в результате CouchDB отправляется в delicious в общую кучу со всякими MongoDB, Cassandra, Hadoop и т.п.

Примерно такого мнения придерживался и я вплоть до недавнего времени, пока не возникла острая необходимость переосмыслить архитектуру текущего проекта (упёршегося лбом в свою реляционную БД) и пересесть на документную базу данных, которая бы умела map/reduce. После того, как более пристально взгялнул на CouchDB, я понял, что он уникален в своём классе, его не следует ставить в один ряд с упомянутыми продуктами. Идеи, которые заложены в CouchDB настолько концептуальны, что способны в корне перевернуть представление о разработке веб-приложений.

О том, что же меня так впечатлило, постараюсь рассказать под катом.
Читать дальше →

Уязвимость связки PHP+nginx с кривым конфигом

Reading time1 min
Views61K

Summary


Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




Background


Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}

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

ChartBeat — Слушай пульс своего сайта

Reading time2 min
Views1.4K
Многие из вебмастеров, наверняка, пользуются сервисами Google Analytics и Яндекс.Метрика. Хотелось бы рассказать про сервис, который никак не отменяет гигантов статистики, но может быть неплохим и увлекательным дополнением.

image

Сервис имеет trial период (для активации нужна кредитная карта), воспользовавшись которым, мы втянулись и решили остаться на платном сервисе.

Итак, что же дает этот сервис?


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

Подводные камни при использовании кэширования в nginx

Reading time10 min
Views58K
В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

Кэширование всей страницы целиком


Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
Читать дальше →

7 бесплатных сервисов для проверки сайтов (о которых вы могли и не знать)

Reading time2 min
Views257K
Картинка для привлечения внимания
Мне достаточно часто приходится использовать различные онлайн-сервисы для проверки доступности сайтов и их поверхностных тестов и проверок.
Как показал краткий опрос коллег — почти у всех эти наборы сервисов отличаются. Я хочу показать вам свой, прошу в
подробности

Information

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