Search
Write a publication
Pull to refresh
0
0

User

Send message

MySQL Performance real life Tips and Tricks. To be continued.

Reading time6 min
Views8.1K
По заявкам трудящихся решил написать еще одну статью, посвященную оптимизации запросов в MySQL.

В прошлой статье habrahabr.ru/blogs/mysql/38907 рассматривались вопросы оптимизации LIMIT, GROUP BY, COUNT.

В данной статье я немного вернусь к вышеописанному и опишу пару примеров, с которыми столкнулся на проекте недавно, после этого приведу еще пару небольших примеров относительно того что такое хорошо и что такое плохо в MySQL.
Читать дальше →

jQuery pdf tutorial

Reading time1 min
Views2.2K
Для начала поискал на Хабре, но найте не удалось.
Теперь делюсь с вами тем, что нагуглил.

Оба документа на английском.

Полный перечень функций jQuery(v 1.1.4) с описаниями (PDF, 120Kb)

Полный перечень функций jQuery(v 1.1.4) с описаниями + плагины (PDF, 210Kb)

Наслаждайтесь.

MySQL Performance real life Tips and Tricks

Reading time9 min
Views37K
Пообещал вчера написать статью о реальных случаях оптимизации БД MySQL.
Пришлось сегодня вставать утром пораньше чтобы воплотить обещанное в жизнь.
Централизованное управление мыслями поддерживать еще сложно, поэтому не судите строго за казусы и ляпсусы в моей статье.

В последнее время приходится достаточно часто заниматься оптимизацией производительности сайтов. И как правило «бутылочным горлышком» в производительности работы этих сайтов является именно БД, ошибки как в архитектуре так и в выполнении запросов. Начиная от неправильной расстановки индексов, либо совершенным их отсутствием, неправильным (неэкономным) выбором типов данных под определенное поле, заканчивая абсолютно нелогичной архитектурой БД и такими же нелогичными запросами.

В данной статье опишу несколько приемов, которые были использованы для приложения с 4млн+ пользователей и которое имея порядка 100млн+ хитов в сутки, а в конце опишу задачу, которая решалась недавно и может быть многоуважаемое сообщество предложит мне решения этой задачи более эффективное нежели то, к которому пришел я.

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

jQuery in Action. Глава 1. Введение в jQuery.

Reading time3 min
Views21K
Как я уже писал, я начал читать книгу «jQuery in Action» (авторы Bear Bibeault и Yehuda Katz). В данной серии статей (а я планирую довести дело до конца) я буду выкладывать самые интересные моменты из каждой главы этой книги. Это будут основные идеи, примеры или и то и другое вместе :-)

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

GenericObject

Reading time12 min
Views834
<?php

/**
* Пример реализации Generic-класса
*
* Возможности:
* 1. Осуществляет доступ к параметрам класса через методы get* set* (accessors/mutators)
*     Пример: $object->setName('Dima'); $object->getName();
*     При изменении стандартного поведения метода (добавление дополнительной логики)
*     можно просто определить его в классе при этом не изменяя интерфейс класса.
* 2. Поддерживает встроенную валидацию данных с возможностью использовать или заранее
*     определенные типы данных (numeric, string, email, date и др.)
*     или регулярные выражения.
* 3. Имплементирует паттерн Lazy initialization для инициализации объектов.
*     Позволяет загружать параметры объекта из БД (например) не сразу при инициализации,
*     а только при первом запросе.
*
* Видимые недостатки:
* 1. Отсутствует возможность использовать автокомплит в IDE, так как методы явно не определены
*
* Плюсы:
* 1. Позволяет избежать дублирования кода при определении однотипных методов set и get
* 2. Сокращает код классов и централизует управление параметрами
* 3. При необходимости можно расширить функциональность. Например, добавив callback функции
*     или принудительную фильтрацию данных.
* 4. Избавляет от рутинных обязанностей проверки входящих данных, тем самым
*     обеспечивая некоторый уровень безопасности.
*     Это совсем не дает 100% гарантии — не стоит забывать об этом.
* 5. Не вносит коррективы в интерфейс классов. Можно легко сочетать обычные классы и классы
*     наследующие GenericObject без видимых различий для клиентов класса. При необходимости
*     можно легко отказаться от использования просто переопределив все гетеры и сетеры.
* 6. Упрощает работу с классами, предоставляя удобный и естественный способ
*     инициализации объектов:
*     $obj1 = new Class(123);
*     $obj2 = new Class(array(
*         'param1' => 'value1',
*         'param2' => 'value2')
*     ));
*/


Далее код реализации и пример использования

ООП для ООП: GRASP

Reading time4 min
Views66K
GRASP — General Responsibility Assignment Software Patterns (основные шаблоны распределения обязанностей в программном обеспечении)

Когда речь заходит о термине «ООП», все непременно подразумевают Объектно-Ориентированное Программирование, но сегодня речь пойдет не о нем. Почти. Сегодня я бы хотел рассказать о принципах Объектно-Ориентированного Проектирования, а в частности о шаблонах GRAPS и области их применения.
Читать дальше →

jQuery для начинающих

Reading time9 min
Views515K
jQuery Logo

jQuery — это замечательный JavaScript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение — лучше всего начинать с наглядных примеров, и они далее…

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

Города России в именительном, предложном (местном) и родительном падеже.

Reading time1 min
Views8.7K
Приняв во внимание все замечания из предыдущего поста с базой городов, мы обновили ее и добавили еще родительный падеж. Теперь база отвечает на вопрос «Откуда?». Например: Вася из Ярославля.

Скачать:
  1. CSV
  2. MySQL

Автоматическая обработка: Jetfish
Вычитка и ручная корректировка Sofrus

Как и в прошлый раз, при желании, выражайте респект и уважуху им, а не мне. Я просто их прикрываю.

Интеграция в Visual Studio 2008

Reading time1 min
Views799
Для тех, кто пользуется jQuery в проектах написанных в Visual Studio наверняка будет интересно узнать как интегрировать jQuery в Intellisense. Для такой интеграции необходимо скачать следующий файл скрипта www.infobasis.com/sandpit/jQuery-Intellisense/jQuery.intellisense.js и присоединить его на нужной веб-странице. После чего, появится возможность работать с функциями jQuery через intellisense.



Не забудьте убрать ссылку на jQuery.intellisense.js после завершения работы над кодом.

Автоматические сноски

Reading time4 min
Views2.3K
automatic-footnotes

Если вы используете цитаты из разных источников, будь то: сайт, книга или человек — то неплохо было бы указать источник этой информации в сноске.

Если выносить и оформлять сноски вручную, то это надоест даже самому настойчивому «писателю». Так что предлагаю Вам способ реализации сносок при помощи jQuery.
Читать дальше

Готовим из Junior Developer профессионалов по бразильской системе (2-я серия)

Reading time4 min
Views4K

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

Итак, поехали

Готовим из Junior Developer профессионалов по бразильской системе

Reading time3 min
Views6.1K
Готовим из Junior Developer профессионалов по бразильской системе
В IT кадров нет. Программисты дефицит. Те, что есть — ни на что не годны. Знакомые выражения?
Вот и мы прочувствовали это на себе какое-то время назад. Так как поиск не давал нужных результатов, было принято решение — учить самим.
деСразу скажу, контора большая, только департамент разработки около 50 человек. Переманить только деньгами столько людей — задача непосильная. Итак, был определен круг сенсеев, которым была поставлена задача найти 10-15 падаванов и сделать из них достойных программистов. Ну и очерчен обозримый срок. Итак, нам надо было найти людей, обладающих начальной базой и подготовить их.

Читаем, как мы с этим справились, что делали и что получилось

Ты на Суперхабре, %username%!

Reading time1 min
Views1.8K
Кто-то говорил, что его не существует, кто-то верил в то, что его не будет никогда, а кто-то просто смиренно ждал и надеялся. Так или иначе, тот самый Суперхабр, о котором еще древние слагали легенды, наконец-то готов и предстал перед вами во всей своей вебдванольной красе :)

В первую очередь хотим поблагодарить всех, кто ждал, терпел, всерьез беспокоился о состоянии Хабра и писал нам волнительные письма, переживая за судьбу проекта. А во вторую очередь спасибо всем, кто так отчаянно шастал по папкам на habrahabr.ru/super, с благоговением сливал все содержимое и гордо делился впечатлениями в блогах. Это было крайне забавно, право слово. Мы очень старались, чтобы вам там понравилось :)

Итак, что же такое Суперхабр, почему он так похож на Хабр классический и почему еще в шестом веке до нашей эры о нем ничего не знали? Во-первых, это совершенно новый движок, написанный «с нуля». Согласно легендам и повериям, движок этот способен на такие вещи, которые не снились даже его разработчикам. Во-вторых, это масса нововведений: очень заметных, не очень заметных и практически неощутимых, но крайне полезных, а также многих остальных, которые есть в планах. Ну, и в-третьих… это все тот же Хабрахабр, только лучше, быстрее и приятнее. Любите его и он ответит взаимностью.

Ах, да! Если вы вдруг обнаружите какую-нибудь ошибку или вам просто что-то не понравится — там вот наверху есть специальная ссылочка «Сообщить об ошибке». Пишите, не стесняйтесь и обязательно указывайте ваш ник на Хабре :)

С уважением,
Шух и команда ТМ

Видео с PHPConf 2008 — ~20 часов видео

Reading time1 min
Views694

Когда критическая ошибка приносит радость…

Reading time1 min
Views2K
Прочитав недавно на пьяную голову «Обработка ошибок и исключений в PHP», решил применить полученные знания на практике. Честно, ещё 6 часов назад не знал, куда это меня приведёт, но в итоге теперь мои скрипты при ошибка зажигают вот такой симпотный экран:


Хотите узнать, как я этого добился?

nginx как reverse proxy

Reading time1 min
Views41K
Несколько читателей блога webo.in просили меня выложить конфигурацию связки nginx + Apache, на которой работает сервер. Хотя это и не относится напрямую к теме клиентской оптимизации. Однако, большинству специалистов, занимающихся клиентской оптимизацией, будет интересно узнать о настройке нескольких хостов для выдачи статики и пара других трюков, связанных с балансировкой запросов.

Также я подробно комментирую все настройки конкретно Apache, которые так или иначе относятся к самой оптимизации времени загрузки страниц.

читать дальше на webo.in →

Обработка ошибок и исключений в PHP

Reading time6 min
Views39K
Эта «небольшая» статейка является развитием темы затронутой в этой статье.
Как известно, PHP зародился довольно давно и уже тогда возник вопрос, что делать с возникающими ошибками. Perl, который является несомненным прародителем PHP по умолчанию не имел какой-либо системы обработки ошибок. При возникновении любой ошибки сервер выбрасывал 500-ю ошибку и на этом все заканчивалось. Поэтому Warnings, Fatal Errors и Notices были настоящим прорывом в облегчении и без того нелегкого труда программиста. Однако время шло, механизмы PHP не менялись, а технологии, как известно, на месте стоять не любят.
Читать дальше →

smarty перестал дружить с php.net?

Reading time1 min
Views810
Очень странно — захожу на smarty.php.net и созерцаю там вместо веб-сайта популярного шаблонизатора страницу об ошибках в php (http://bugs.php.net).
Интересно, к чему бы это?

(Официальный сайт Smarty так же доступен по адресу www.smarty.net)

Абстракция БД

Reading time4 min
Views5K
Когда я только начинал писать на PHP, ООП я владел, пожалуй, на уровне синтаксиса, не более. В то время мне вполне хватало функций mysql_*. Со временем, опыта становилось больше, я начинал задумываться об оптимизации. Этот топик описывает эволюцию моего кода.
Читать дальше →

Information

Rating
Does not participate
Location
Северодвинск, Архангельская обл., Россия
Date of birth
Registered
Activity