В моей работе нужно анализировать качество проектов и иметь полное понимание о том, как мы учимся не наступать на одни и теже грабли. Для этой цели есть много инструментария, но я хочу поделиться опытом с теми, кто как и наша студия использует в роли багтрекинга Mantis 1.1.1 (написан на PHP, БД- MySQL)
Pirate @Pirate
Пользователь
Советы для разработчиков CMS и фреймворков на PHP
2 мин
2.2KУже не раз сталкиваюсь с подобной проблемой, когда люди приходят и просят помочь в решении проблем распределения нагрузки при внезапном возрастании аудитории их сайтов. Ну и самое трудоемкое в данной проблеме — это самописные CMS-подобные системы, которые иногда приходиться переписывать полностью.
Я не буду вдаваться в подробности распределения нагрузки, а отпишу лишь основные правила при соблюдении которых Ваша CMS будет легко масштабироваться.
Я не буду вдаваться в подробности распределения нагрузки, а отпишу лишь основные правила при соблюдении которых Ваша CMS будет легко масштабироваться.
+45
Особенности хранения сессий PHP в memcached
6 мин
33KДанная статья рассматривает одну из проблем хранения PHP-сессий в memcached: отсутствие их блокировки.
Введение
Ни для кого не секрет, что одним из самых популярных способов повышения производительности сайта является использование memcached. Об этом неоднократно говорили и приводили многочисленные примеры. Самый простой способ сделать это — использовать memcached для хранения сессий PHP. Для этого нет необходимости переписывать весь код, достаточно нескольких простых действий. Я не буду рассказывать, почему надо хранить сессии в memcached. Я расскажу о том, почему хранение сессий в memcached опасно.+57
Красота спасёт штрих-код
1 мин
6.1KНа Хабре уже обсуждали полезные свойства двухмерных штрих-кодов и фантазировали о том, как прекрасен станет мир, если лепить их на футболки, кепки, а также накалывать на теле. С одной стороны это верно, если бы не одно «но» — современные штрих-коды ужасно выглядят. Они некрасивы. При том, что они являются дверью в четвертое информационное измерение, они выглядят, как информационный мусор.
Изначально, штрих-коды предназначались для операционной обработки. С ними работали складские служащие, кассиры и прочие автоматы. Но когда эту технологию стали продвигать на потребительский рынок, эстетические свойства баркодов стали выходить на первый план.
Стали возникать интересные решения с графическими вставками в баркод, в том числе анимированными (если размещается на дисплее):
Изначально, штрих-коды предназначались для операционной обработки. С ними работали складские служащие, кассиры и прочие автоматы. Но когда эту технологию стали продвигать на потребительский рынок, эстетические свойства баркодов стали выходить на первый план.
Стали возникать интересные решения с графическими вставками в баркод, в том числе анимированными (если размещается на дисплее):
+42
Скрытые фичи суперхабра
2 мин
531Сегодня чего-то залез в код хабра и обнаружил там закомментированный блок, который по сути представляет из себя панельку с кнопочками для навигации по сообщениям. Выглядит закомментированный код так:
Как видно, этот блок предоставляет следующий функционал:
Интересно, что скажут хабраразработчики? ;)
UPD: Подоспел greasemonkey-скрипт от rozboris
UPD2: Ещё один скрипт, пока что работает только в Опере. Автор —GMM
<ul class="comments_bar">
<li class="cb_reload"><span class="corner"></span><a href="#" onclick="return commentForm.reloadComments('38271', 'post', '1219860285');" title="Обновить комментарии без перезагрузки страницы"></a></li>
<li class="cb_prev"><a href="#" onclick="return commentForm.goPrevNewComment(event);" title="Следующий новый"></a></li>
<li class="cb_next"><a href="#" onclick="return commentForm.goNextNewComment(event);" title="Предыдущий новый"></a></li>
<li class="cb_my"><span class="corner"></span><a href="#" onclick="return commentForm.goMyComment(event);" title="Перейти к своему комментарию"></a></li>
</ul>
Как видно, этот блок предоставляет следующий функционал:
- Перезагрузку дерева сообщений, без перезагрузки страницы
- Переход к следующему или предыдущему непрочитанному сообщению (при этом снимается отметка о том, что сообщение не прочитанно)
- Переход к своим сообщениям
javascript:mc=document.getElementById('main-content'); mc.innerHTML+=mc.childNodes[5].data;void 0;
Интересно, что скажут хабраразработчики? ;)
UPD: Подоспел greasemonkey-скрипт от rozboris
UPD2: Ещё один скрипт, пока что работает только в Опере. Автор —GMM
+99
QIP 2008 concept
2 мин
3.2KХочу сразу предупредить, что я не программер и не знаю насколько возможно реализовать нижележащие фишки, но тем не менее таковые есть.
Изначально я захотел попробовать сделать новый скин для квипа, но в итоге получился новый концепт, которым хочется поделиться с разработчиками и внести свой вклад в развитие популярного меседжера.
Изначально я захотел попробовать сделать новый скин для квипа, но в итоге получился новый концепт, которым хочется поделиться с разработчиками и внести свой вклад в развитие популярного меседжера.
+302
Как найти нужный шрифт, не зная его названия?
3 мин
408KЯ уверен, что у любого дизайнера был такой момент, когда он видел где-то какой-то шрифт, который так мог бы пригодится в проекте, но… что за шрифт?.. Ответ на этот вопрос затаился в глубине Вашего сознания, либо в глубине Вашего «незнания» (что разумеется простительно).
В этой статье мы рассмотрим несколько ресурсов, которые могут помочь вам в идентификации понравившегося шрифта.
Конечно, нельзя рассчитывать, что эти источники дадут вам 100 процентную уверенность в том что вы найдете нужный шрифт, но что помогут, так это точно.
В этой статье мы рассмотрим несколько ресурсов, которые могут помочь вам в идентификации понравившегося шрифта.
Конечно, нельзя рассчитывать, что эти источники дадут вам 100 процентную уверенность в том что вы найдете нужный шрифт, но что помогут, так это точно.
+123
Хранение набора чекбоксов в одном поле БД. Битовая маска.
2 мин
19KЧасто при составлении сайтов с каталогами нам приходится оперировать с однотипными карточками каталога. Рассмотрим пример:
У нас имеется каталог СТО которые оказывают различные услуги клиентам. Есть предопределенный список услуг, среди которых производится выбор. Список услуг представляет собой набор чекбоксов, если услуга оказывается то чекбокс помечается, в противоположном случае отметка не ставится. Предположим количество услуг в каталоге равняется десяти(просто для определенности).
Самым простым способом было бы хранение состояния каждого чекбокса в отдельном поле, однако при этом мы для каждой новой услуги(которая будет указываться на сайте и учавствовать в поиске) будем вынуждены расширять таблицу, и изменять поиск.
Но мы пойдем другим путем.
У нас имеется каталог СТО которые оказывают различные услуги клиентам. Есть предопределенный список услуг, среди которых производится выбор. Список услуг представляет собой набор чекбоксов, если услуга оказывается то чекбокс помечается, в противоположном случае отметка не ставится. Предположим количество услуг в каталоге равняется десяти(просто для определенности).
Самым простым способом было бы хранение состояния каждого чекбокса в отдельном поле, однако при этом мы для каждой новой услуги(которая будет указываться на сайте и учавствовать в поиске) будем вынуждены расширять таблицу, и изменять поиск.
Но мы пойдем другим путем.
+30
Ошибки начинающих PHP разработчиков
3 мин
10KПодборочка ошибок начинающих PHP разработчиков…
+69
"Петя летом отдыхает, Саша и Маша делают стартап!" — 10 последних проектов от Y Combinator
6 мин
796Мой самый любимый и уважаемый фонд Y Combinator презентовал четырнадцать стартапов, которые он выращивал на прошедшей летней сессии. Хотя по разным источникам я встречал упоминание о 10 или даже 20 стартапах, на самом деле их 21, хотя не все были показаны публично или о них есть какая-либо информация. Потому мы расскажем только о тех, что публично раскрыли себя.
+20
Идеи для Mozilla Labs
1 мин
738Благодаря сайд-блогу смешинг-магазина нашел заметку у Mozilla Labs, в которой они призывают выкладывать свои идеи о том как должен выглядеть серфинг по интернету в будущем. Есть даже специальный раздел.
Не обязательно быть програмистом или дизайнером. Любой может предложить свою идею. Также еще там пишут, о том что они хотят расширить
+12
Проект за 7 дней
1 мин
1.5KМы работаем над одним проектом вот уже больше 2-х лет. Он занимает все рабочее и свободное время. И вот мы на финишной прямой и у нас все готово, но… подвел нас один поставщик (очень большая и медленная компания) последнего аппаратного модуля, без которого никуда. Ожидается готовность только в сентябре, октябре. В связи с этим появилось немного свободного времени. Где-то неделя.
И мы решили вытащить с дальней пыльной полки хорошую идею, на которую раньше просто не было времени.
И мы решили вытащить с дальней пыльной полки хорошую идею, на которую раньше просто не было времени.
+81
Облако тегов: линейная зависимость vs логарифмическая
2 мин
3.5KЭтот пост меня сподвигли написать две вещи. Автокадабра и некто под ником napisal, кто активно не соглашался с моим постом…
Дело было так: я зашёл в карту клубов Автокадабры и понял что она мне ни о чём не говорит. Создавалось впечатление, что пишут всего в трёх клубах. После изучения облака я пришёл к выводу что линейная зависимость размера тега (в данном случае блога) от количества публикаций совершенно не информативна. Клубы с одной публикацией выглядят так же как и с15-ю .
Дело было так: я зашёл в карту клубов Автокадабры и понял что она мне ни о чём не говорит. Создавалось впечатление, что пишут всего в трёх клубах. После изучения облака я пришёл к выводу что линейная зависимость размера тега (в данном случае блога) от количества публикаций совершенно не информативна. Клубы с одной публикацией выглядят так же как и с
+2
Ссылки при наведении курсора: нужна ли реакция?
3 мин
9.1KПриветствую, уважаемые хабралюди.
На ночь глядя у меня возник некоторый жаркий спор сtheonlyboy, по поводу того, стоит ли при наведении на ссылку — как-то это ссылку изменять: убирать\добавлять подчеркивание ссылки, изменять цвет?
Данный топик был создан исключительно для того, чтобы почерпнуть новые знания и всё таки разобраться — как с точки зрения юзабилити и дизайна UI правильно, и наконец прекратить бессмысленный, но жаркий спор.
На ночь глядя у меня возник некоторый жаркий спор сtheonlyboy, по поводу того, стоит ли при наведении на ссылку — как-то это ссылку изменять: убирать\добавлять подчеркивание ссылки, изменять цвет?
Данный топик был создан исключительно для того, чтобы почерпнуть новые знания и всё таки разобраться — как с точки зрения юзабилити и дизайна UI правильно, и наконец прекратить бессмысленный, но жаркий спор.
+48
Оптимизация работы с MySQL
3 мин
78KНи для кого не секрет, что работа с базой данных занимает большую часть работы практически любого сайта. И именно работа с БД чаще всего является узким местом веб-приложений.
В этой статье хотелось бы дать практические советы использования MySQL.
Сразу оговорюсь:
Проблемы при использовании MySQL можно разделить на следующие три группы(в порядке значимости):
Остановимся на каждой из этих групп подробнее.
В этой статье хотелось бы дать практические советы использования MySQL.
Сразу оговорюсь:
- данная статья написана про MySQL, хотя общие вещи скорее всего справедливы для любой СУБД.
- все написанное в статье является моей личной точкой зрения, и не является истиной в последней инстанции.
- советы не претендуют на новизну и являются результатом обобщения прочтенной литературы и личного опыта.
- в рамках данной статьи я не буду касаться вопросов конфигурирования MySQL.
Проблемы при использовании MySQL можно разделить на следующие три группы(в порядке значимости):
- Неиспользование или неправильное использование индексов.
- Неправильная структура БД.
- Неправильные \ неоптимальные SQL запросы.
Остановимся на каждой из этих групп подробнее.
+50
Проектирование баз данных. Паттерн Компоновщик (Composite)
4 мин
17KWeb 2.0 победоносно шагает по виртуальному миру. Социальные сети растут как грибы после дождя. Теперь в одном месте вы можете хранить свои фото, видеозаписи, писать блоги и слушать музыку. Все это можно комментировать, класть в избранное, копировать… Возможностей много, контент социальных сетей разнородный и разнообразный, и в этом их преимущество.
А теперь представьте себе структуру БД какого нибудь «Вконтакте». Представили? И что вы видите? Множество таблиц с данными? А что еще? Множество таблиц для связей много-ко-многим! Необходимых, с точки зрения реляционной БД, но лишних с точки зрения логики. Но это еще не все. Среди полей таблиц мы видим огромное количество «лишних» полей, являющихся всего лишь внешними ключами, служащими для связей один-ко-много, так же необходимых с точки зрения реляционной теории, но абсолютно бесполезных с точки зрения логики.
А теперь представьте себе структуру БД какого нибудь «Вконтакте». Представили? И что вы видите? Множество таблиц с данными? А что еще? Множество таблиц для связей много-ко-многим! Необходимых, с точки зрения реляционной БД, но лишних с точки зрения логики. Но это еще не все. Среди полей таблиц мы видим огромное количество «лишних» полей, являющихся всего лишь внешними ключами, служащими для связей один-ко-много, так же необходимых с точки зрения реляционной теории, но абсолютно бесполезных с точки зрения логики.
+43
Идеальная голосовалка
3 мин
7.5KЧасто на разнообразных сайтах пользователям предлагают оценить (проголосовать за) тот или иной объект — анекдот, цитату, пост, автора, человека и т. д. При этом, к сожалению, почти всегда совершается одна или несколько ошибок.
Я буду говорить только о тех случаях, когда пользователям предлагают оценить объект положительно или отрицательно. Голосования с выбором одного из нескольких вариантов ответа здесь не рассматриваются.
Я буду говорить только о тех случаях, когда пользователям предлагают оценить объект положительно или отрицательно. Голосования с выбором одного из нескольких вариантов ответа здесь не рассматриваются.
+14
Пишем свой XML-парсер
9 мин
71KПредыстория
Решив запустить небольшой сервис на подаренном мне хостинге, оказалось, что там нету ни одного xml-парсера: ни SimpleXML, ни DOMXML, а только libxml и xml-rpc. Недолго думая, я решил написать свой. Мне требовался разбор не сложных rss-лент, поэтому хватило достаточно просто класса xml => array.[1]
Но для интересной статьи этого было явно не достаточно, поэтому сейчас мы напишем свою замену для SimpleXML. А заодно пробежимся по многим интересным возможностям PHP 5.
Постановка задачи
Доступ к элементам у нас будет осуществляться как доступ к свойствам класса, например $xml->element, а доступ к атрибутам элемента, как к массиву, те $xml->element['attr'], также реализуем проверку на существование атрибута при помощи isset() и итерацию по элементам при помощи foreach. И так, начнем.
+1
Взаимодействие с GMail на PHP
1 мин
2.2KЕще в 2005 году командой энтузиастов была написана библиотека libgmailer для взаимодействия с почтой компании Google. К сожалению проект был заброшен, но даже несмотря на это, классы позволяют на сегодняшний день получать информацию о письмах, ярлыках и вложениях. Причем последние можно даже скачать.
+26
Успешный проект – проект, ориентированный на пользователя
12 мин
2.7KОриентируя проект на цели пользователя, можно создать новые, удобные и востребованные сервисы. Более того, можно создавать социальные коммуникации вокруг товаров, и это успешно монетизируется! Вот только… Что поможет учесть цели ваших пользователей? Маркетинг? К сожалению, «лобовой» перенос в интернет практики обычного маркетинга не даёт результата.
Текст доклада Павла Коноплицкого на конференции SocialExperience 2008
Успех лидеров рынка и недостаток информации о пользователях, попытки использовать в вебе оффлайновый опыт создания нового продукта или услуги часто превращается в порочное убеждение, что для успешности проекта он должен удовлетворять интересам максимального количества человек.
Текст доклада Павла Коноплицкого на конференции SocialExperience 2008
Разные пользователи — разные потребности
Успех лидеров рынка и недостаток информации о пользователях, попытки использовать в вебе оффлайновый опыт создания нового продукта или услуги часто превращается в порочное убеждение, что для успешности проекта он должен удовлетворять интересам максимального количества человек.
-1
Информация
- В рейтинге
- Не участвует
- Откуда
- Украина
- Дата рождения
- Зарегистрирован
- Активность