Как стать автором
Обновить
8
0
crazyprog @crazyprog

Пользователь

Отправить сообщение

PHP 5.3: DoS — это не баг, а фича

Время на прочтение1 мин
Количество просмотров1.6K
Именно так думают девелоперы PHP.
Фича заключается в Segmentation Fault/Access Violation под unix/windows при исполнении кода:
<?php
class A {} 
class B extends A { 
    public function __construct() { 
        $args = func_get_args(); 
        call_user_func_array(array($this, "parent::__construct"), $args); 
    } 
} 
class C extends B {} 
$instance = new C(); // Segfault

Разработчики говорят, что это совсем не баг и хотят добавить в документацию сведения об этой фиче.

Естественно падает вебсервер/воркер сервера. Но это нормально, __ведь так и должно быть__.

Vanadium: семантическая валидация на клиенте

Время на прочтение1 мин
Количество просмотров1.4K
Логотип Vanadium

Vanadium — новый валидатор для клиента, который позволяет вам определять логику семантической валидации через атрибут класса (class). На главной странице проекта есть такие примеры, как:
<input class=":required" type="text" />
<input class=":integer" type="text" />
<input class=":length;4" type="text" />
<input class=":min_length;4" type="text" />
<input class=":format;/^(vanadium)+$/i" type="text" />
<input id="pass" class=":ajax;/username_checker/check.json" type="text" />
<input id="pass" class=":email" type="text" />
<input id="pass" class=":required" type="password" /><input class=":same_as;pass" type="password" />


* This source code was highlighted with Source Code Highlighter.


Примечание от переводчика: Также поддерживается декларация правил валидации посредством JSON-определений и проверка на сервере (AJAX). Требуется jQuery.

Три интересные задачи на знание SQL — Решения

Время на прочтение9 мин
Количество просмотров35K
В недавнем своем топике я приводил три на мой взгляд интересные задачи по MySQL с желанием посмотреть на возможные решения хабралюдьми. Как я и обещал, я привожу свои решения этих задач. Для того, чтоб текст был интересным и познавательным я решил детально разжевать что зачем и как. Итак…

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

MySQL Profiler: простой и удобный инструмент профилирования запросов

Время на прочтение2 мин
Количество просмотров47K
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. ;-)

Хочу представить вашему вниманию фичу MySQL — профайлинг.
Появилась она начиная с версии 5.0.37.

Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)
и почему она тормозит.

И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.

Итак, как пользоваться:


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

Виртуальная Карта VISA от QIWI (КИВИ). Первый месяц работы

Время на прочтение1 мин
Количество просмотров29K
Месяц назад состоялся запуск виртуальной карты VISA, которую можно приобрести в платежных терминалах QIWI (КИВИ) или на сайте платежной системы «Личный Кабинет QIWI» mylk.qiwi.ru

За первый месяц с нуля продано более 10.000 карт и судя по счетчику сейчас продается в среднем 1 карта каждые две минуты.

На сайте виртуальной визы visa.1pb.ru есть рейтинг, который показывает самые популярные сервисы, оплачиваемые с помощью карты. На основании данного рейтинга можно сделать интересный, на мой взгляд, вывод.
Читать дальше →

Проверка равенства, неравенства, идентичности узлов в XPath

Время на прочтение2 мин
Количество просмотров13K
С одной стороны, в языке XPath используются знакомые каждому программисту операторы сравнения «равно», «не равно», «меньше», «больше» и другие. С другой стороны, эти операторы умеют работать не только с примитивными типами, но и с целыми наборами узлов. Незнание правил сравнения наборов узлов может привести к некоторым сюрпризам.

Попробуйте быстро ответить на вопрос, чему равно следующее выражение:

foo = 'bar' and foo != 'bar'

Если ваш ответ — false, автор предлагает
Читать дальше →

Voxelart project

Время на прочтение1 мин
Количество просмотров1.1K
Не так давно мы запустили новый сайт своей студии. На главную страницу которого придумали «фичу», которая должна была стать интерактивным промо-элементом пользователя.

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

image

В результате мы решили, что из этого может получиться интересный проект. Назвали мы его VoxelArt Project. Здесь каждый может создать свою воксельную картинку и сохранить ее в галерее. Характерно то, что создание изображения не так просто и больше похоже на головоломку типа пятнашек. Также очень забавно наблюдать, как от перестановки вокселей ломается пространство.

image

Ждем ваших работ в галерее проекта.

Интернет магазин на Google App Engine (UPD: 20.01.2010)

Время на прочтение2 мин
Количество просмотров4K
Магазин работает уже почти пол года — добро пожаловать :)
http://www.digital-mode.ru

Как это все работает.

Фронт-офис — генерирует страницы с группами и товарами, а также позволяет добавить товар в корзину и оформить заказ.
Хранилище картинок — отдает фотографии товаров в нужном размере. Все остальные картинки статические, загружаются с сервера GAE.
Бэк-офис — административная часть, позволяет редактировать товары и группы, просматривать заказы, загружать фотографии для товаров, а также загружать обновления цен, наличия и новые позиции.

Для генерации почти всех страниц используется Django templates.

В целом ничего сложного :)

Проблемы с которыми пришлось столкнутся при разработке.

На текущий момент есть проблемы с загрузкой/выгрузкой большого количества данных. На данный момент использую CSV для загрузки обновлений (цены, товары, наличие). При большом объеме данных превышается тайм-аут 30 сек на выполнение. Кроме этого в GAE ограничение на 30 запросов на запись (put). Соответственно обновлять больше 30 товаров за один проход не получается. Этот момент можно оптимизировать и обновлять данные не поштучно, а сразу пачками т.к. в GAE запись в хранилище может производится целыми массивами.

Выгрузка данных для Яндекс.Маркета занимает почти 10 секунд (200 товаров), 90% времени это генерация HTML.

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

Преимущества GAE

Отсутствие необходимости покупки/настройки/поддержки собственного сервера.
Автоматическое масштабирование.
Одинаковое время доступа к приложению при разных нагрузках.
Удобство разработки.

Итого

Скорость работы магазина не зависит от количества посетителей.
На данный момент при 500-600 хитов в сутки используется 0,3-0,4 часа процессорного времени из 6,5 бесплатного.

После публикации в комментариях к топику: "Стоит ли вам использовать Google AppEngine?" ссылки на магазин было использовано ресурсов:
— 0,44 часов CPU из 6,5
— 28000 запросов из 1,3 млн
— 210 Мб из 1 Гб исходящего траффика
— 5,59 Гб из 116 Гб получено из API
— 0,22 часа из 62,11 использовано хранилищем
Всего за 12 часов — 700 хитов (180 хостов).

Это микрохаброэффект:
image
Читать дальше →

Три интересные задачи на знание SQL

Время на прочтение4 мин
Количество просмотров30K
image

Буквально несколько часов назад, после внимательного изучения комментариев вот к этому топику я был несколько удивлен что многие не очень любят использовать условия HAVING и похоже другие возможности СУБД. Скажу прямо — мне очень понравилась обсуждение простейшего и не работающего запроса, в результате которого многие узнали для себя много нового и познавательного (это мое личное мнение). Поэтому я решил сделать вот что — вывести три моих самых любимых задачи по знанию SQL (MySQL) на суд общественности.

Данные задачи абсолютно реальные, и в отдаленном светлом прошлом действительно имели место, и были благополучно решены жертвой некоторого количества рабочего времени и нервных клеток. Я уверен на 100% что они актуальны и по сей день, и будут актуальны еще долго. Сложными их назвать нельзя, но и очень простыми тоже (в зависимости от уровня подготовки конечно).

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

Стоит ли вам использовать Google AppEngine?

Время на прочтение5 мин
Количество просмотров4.4K
Disclaimer: Эта статья не о том, «какой я умный и какой Гугл тупой». Эта статья о некоторых неочевидных проблемах и особенностях Google AppEngine (GAE), о которых было бы неплохо знать тем, кто хочет начать работать с «империей зла» :-)


Гугл сделал много отличных вещей – поиск, почта без спама… Гугл получает кучу наших приватных данных, но мы продолжаем пользоваться им, потому что оно так классно работает…
Некоторое время в IT-шных кругах поднялось достаточно шума об AppEngine, и я решил попробовать поработать с ним в моём новом проекте.

Я выбрал Python с гугловским framework-ом чтобы получить наилучшую совместимость и скорость. Начал я с тестов производительности, и результаты были…
Читать дальше →

Несостоятельность GPL

Время на прочтение10 мин
Количество просмотров3.6K
David Chisnall бросает критический взгляд на GNU GPL и спрашивает, приносят ли она больше вреда, чем пользы для движения Free Software.

В 1985, была сформирована организация Free Software Foundation (FSF) с целью продвижения программной свободы, как определено этими четырьмя свободами:
0. Свобода выполнить программу, с любой целью.

1. Свобода изучения того, как программа работает, и адаптации к своим нуждам.

2. Свобода распространения копий, чтобы помочь своему соседу.

3. Свобода улучшить программу, и выпустить свои усовершенствования (и модифицированные версии в целом) для всех, так, чтобы принести пользу всему сообществу.

Одним из инструментов, используемых для достижения этой цели, является лицензия GPL. Оглядываясь назад, был ли GPL помощью или помехой? И продолжит ли быть помощью или помехой в будущем?

История успеха GPL


Вебсайт FSF указывает на определенный экземпляр GPL, чтобы вынудить компанию открыть ее исходные коды. Компания в этом примере — NeXT (нынче Apple), и исходный код — фронт-энд Objective-C для GCC. Но что произошло в действительности?
давайте взглянем!

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Время на прочтение16 мин
Количество просмотров40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...

Тестирование Spring приложений. Транзакции в тестировании

Время на прочтение6 мин
Количество просмотров23K
spring-overview

Про полезность подхода TDD (разработка через тестирование, test driven development) не слышал только ленивый или глухой. Но сегодня мы не будем обсуждать всю его полезность и красоту, а также проблемы и недостатки. Сегодня мы попробуем посмотреть, как разрабатывать unit-тесты для spring приложений. Также мы немного тронем ручное управление транзакциями в unit-тестах.
Читать дальше →

Текст любой ценой: RTF

Время на прочтение14 мин
Количество просмотров88K
Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.

Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text'а. Попробуем их обойти…
Читать дальше →

Идея стартапа: подсчет стоимости расходников

Время на прочтение2 мин
Количество просмотров1.3K

Поможем людям с выбором!



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

После некоторого подбора принтеров в Яндекс.Маркете известном каталоге всяческой продукции с подбором, определился круг принтеров, которые меня интересуют и тут я сообразил — я представления не имею, сколько у меня на него будет уходить в месяц…
Читать дальше →

PHPUnit+Netbeans

Время на прочтение4 мин
Количество просмотров10K
Здравствуйте.

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

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

В крупных конторах для этого есть специальные люди, которые занимаются тем, что пишут unit-тесты.

Меньшие конторы, фрилансеры этим грешат, да и на маленьких проектах это не всегда нужно. Согласитесь, если класс на 100 строк, то писать тесты на 200 строк кажется лишней тратой времени.

Тем не менее, не буду вдаваться в подробности кому надо кому нет.

Я хочу показать как можно клево тестировать код на NetBeans с удобным GUI.
Читать дальше →

JetBrains WebIDE — третья публичная сборка

Время на прочтение1 мин
Количество просмотров3.2K
Вышла третья предварительная сборка (номер 445) новой среды разработки для PHP — JetBrains Web IDE PHP developers edition.
В этой версии мы приняли во внимания пожелания пользователей (в том числе и фидбэк с хабра:) и добавили несколько новых функций — YAML, дополнение членов объявленных через теги PHPDOC @property и method, а также усовершенствовали дебаггер. Исправлено множество различных ошибок и серьезно улучшена производительность автодополнения в редакторе.

Загрузка новой версии с официальной страницы «программы ранней доступности» Web IDE.
Детальный список изменений — в блоге Web IDE.

UPD: Напоминаю всем что это даже не бета — мы просто демонстрируем над чем работаем. Вы главное пишите чего ВАМ в вашем любимом IDE не хватает и что вы больше всего цените — а мы позаботимся чтобы появилась достойная альтернатива!

YAML + structure PHPDOC completion

Конкурс «Твое виртуальное будущее» от TrendClub

Время на прочтение1 мин
Количество просмотров3.2K
Виртуальный мир стал реальной средой обитания. Важной частью нашей жизни, часто определяющей нашу карьеру, личную жизнь и наши интересы.

image

Как отразится на вас это исчезновение границ между реальным и виртуальным? Каким будет наш мир онлайн через 50 лет?

За вашу бурную фантазию и оригинальные мысли о будущем онлайна, сетевых технологий и вашем личном в большом мире Интернета мы опять дарим призы от ASUS и Intel:
Читать дальше →

Игры в OLTP

Время на прочтение23 мин
Количество просмотров2.9K
В последнее время на Хабре стала популярной тема реализации высокопроизводительных приложений. Решили тоже немножко поэкспериментировать в этом направлении и поделиться текущими результатами наших изысканий.

Подопытный «Hello, world!» представляет собой простейшую OLTP систему:



Требования к производительности и отказоустойчивости являются ключевыми для подобных систем. Поэтому поиск решения поставленной задачи осуществлялся в направлении: C, C++, fastcgi, nginx, lighttpd, oracle. В первую очередь нам было любопытно попробовать различные варианты построения OLTP на данных технологиях, а так же измерить производительность и пиковые нагрузки.

Подробности под катом...

Календарные типы данных в MySQL: особенности использования

Время на прочтение6 мин
Количество просмотров83K
В MySQL 5 есть несколько типов данных для хранения даты и времени. Это TIMESTAMP, DATE, DATETIME, TIME и YEAR. Все они обладают своими особенностями, и выбор в пользу того или иного календарного типа должен производиться отдельно в каждой конкретной ситуации. Я хотел бы поделиться с вами результатом моего сегодняшнего миниисследования этих типов, в том числе в аспекте работы с временными зонами.


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

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Зарегистрирован
Активность