Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Хранение файлов в MySQL и их быстрая раздача

Reading time3 min
Views98K
Думаю у многих возникала необходимость хранить файлы, связанные с записью в таблице. Это может быть картинка к новости, аватар, загруженный пользователем файл — да все, что угодно. Обычно в этому случае поступают просто — файл ложится в файловую систему, а ссылка на него — в запись БД.
Но у такого классического похода множество недостатков:
  • файлы не удаляются при удалении соответствующей записи БД
  • проблемы при одновременной попытке обновления файла
  • нарушение синхронизации между БД и файловой системой при откате транзакции
  • при резервном копировании и восстановлении информации в БД может возникнуть рассинхронизация с файловой системой
  • файлы не подчиняются ограничениям доступа, наложенным с помощью БД

Больше о проблемах, возникающих при хранении файлов отдельно от БД можно почитать в презентации SQL Antipatterns, раздел Phantom Files, страница 60. Кстати, автор презентации предлагает решение — хранить файлы прямо в БД, в поле типа BLOB. Правда следует замечание, что это должно быть взвешенное решение в каждом конкретном случае. Ведь при таком способе хранения файлов вебсервер должен при каждом запросе вызывать некий скрипт, который будет извлекать файл из БД и отдавать пользователю, что неминуемо отрицательно скажется на производительности.
Для поиска решения данной проблемы был проведен мозговой штурм и придумано несколько вариантов решения проблемы:
Читать дальше →

Разметка. Transitional vs Strict

Reading time4 min
Views7.3K
Речь в статье пойдет о такой, казалось бы изжеваной и изъезженой теме, как валидация веб-документа по одной из DTD-схем, которые в свою очередь определяются с помощью DOCTYPE.

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

В последнее время, многие редакторы и CMS'ки автоматически проставляют DOCTYPE для документа, что само по себе является прорывом, но к сожалению этого недостаточно, так как зачастую это именно Transitional схема. Начинающие разработчики не уделяют этому должного внимания, а зачастую вобще не подозревают что у них есть выбор.
Читать дальше →

Основы портлетов

Reading time24 min
Views31K
Привет хабралюди! Сегодня я хочу рассказать об одной интересной технологии, с которой познакомился совсем недавно — это технология портлетов. Хотя на хабре уже есть пара упоминаний о портлетах, но там ничего внятного я не нашел. Поэтому решил написать свою статью, где хочу показать на практике как программировать портлеты. При этом попутно вставляя какие-то теоретические сведения. А принимая во внимание, то, что документации на русском крайне мало, то рассказать об этом хочется вдвойне :)
Читать дальше →

PHP, PREG и UTF-8

Reading time6 min
Views16K
В этом посте речь пойдет о работе РНР5 с multibyte строками посредством preg_*() функций.

Заметил интересное положение дел, вобщем-то давным давно описанное в интернете, но актуальное и по сей день (вопрос всплыл всвязи с недавним постом про trim()).
Читать дальше →

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 2

Reading time4 min
Views7.3K
Мы продолжаем исследовать тему такого класса ПО как очереди сообщений применительно к РНР веб-системам. В прошлой статье мы рассмотрели некоторое ПО, в частности представителей как самой верхней области (Apache Active MQ, возможности которого находятся на уровне уже корпоративного ПО), так и достаточно простые варианты, например, MQS. Но не рассмотренными остались еще несколько достаточно интересных проектов, так что наше исследование продолжается.
Читать дальше →

Контрол-навигация

Reading time2 min
Views1.8K
Нельзя не заметить, что в рунете всё бóльшую популярность набирает т. н. контрол-навигация: перемещение по страницам одного уровня с помощью сочетаний Ctrl + ← и Ctrl + →. Некоторые товарищи даже неуютно себя чувствуют, когда попадают на сайт, не поддерживающий листание страниц с клавиатуры.

Почему эта функциональность до сих пор не реализована в самих браузерах?
Читать дальше →

Javascript: Visual Event

Reading time1 min
Views9K
Отменнейшая JS библиотека, базированная на jQuery. Позволяет простым наведением мыши на объект увидеть все event'ы, которые на него повешены. Запускается через букмарклет.

Подробности на странице автора.

http://www.sprymedia.co.uk/article/Visual+Event

P.S. Я хотел разместить пост-ссылку, но хабру, видимо, не нравится плюс в URL…

Задача решена. Но хорош ли код?

Reading time1 min
Views1.1K
Я преподаю веб-технологии в ВолгГТУ.
См ранее: (Структура курса, Дизайн, HTML, Все лекции).

Изучаем html+css+пишем лабораторные с применением LAMP.
Я не настаиваю на использовании PHP, хотя и считаю его одним из наиболее распространенных и востребованных средств разработки.

Мой студент, Кирилл Киндюк, выразил желание 3 ЛР написать на Python. Поскольку ни одного выраженного недостатка у этого языка нет (ну разве что кроме сложностей с бесплатными хостингами), я разрешил.
Читать дальше →

SimpleModal — простые модальные окна

Reading time3 min
Views41K
Обзор плагина SimpleModal, его глюков, избавление от глючности, позиционирование по центру экрана и прочие удобства. Вообще я публиковал статью в своем блоге:«SimpleModal — простые модальные окна», но подумал что и хабраюзерам может быть интересно про это узнать. А так же советую взглянуть на более новую статью «Модальные окна на jQuery blockUI». Не все же с лайтбоксами играться.
Читать дальше →

Новая хеш-функция MD6

Reading time2 min
Views13K
MD6 — алгоритм хеширования переменной разрядности, разработанный профессором Рональдом Ривестом из Массачусетского Технологического Института в сентябре 2008 года. Предназначен для создания «отпечатков» или дайджестов сообщений произвольной длины. Предлагается на смену менее совершенному MD5. По заявлению авторов, алгоритм устойчив к дифференциальному криптоанализу. MD6 не обладает достаточной стойкостью к коллизиям первого рода. Используется для проверки подлинности опубликованных сообщений, путем сравнения дайджеста сообщения с опубликованным. Эту операцию называют «проверка хеша» (hashcheck).
Читать дальше →

nginx: другой аллокатор

Reading time1 min
Views2K
Хочу представить публике небольшой патч, который подменяет аллокатор.

Кратко: после его применения потребления памяти сократилось почти в два раза, а idle вырос на 15%.

Update: учел исправления, добавил jemalloc и опции для выбора с чем собирать. Краткое описание и патч.

Update: провел микро тестирование

Контроль потерянного времени: учимся блюсти баланс

Reading time2 min
Views7.3K
Шахматные часы
Сколько времени, проведеного «за компьютером» или «за работой» вы используете действительно с пользой? А сколько тратите откровенно зря? Я прочитал заметку об интересном программном инструменте и решил поделиться с вами непрограммным методом учета потраченного времени. Этот метод — лучшая находка для фрилансера (я — самозанятый бизнес-консультант).

В основе метода — шахматные часы. Да-да, обычные шахматные часы с двумя таймерами. Суть их работы: когда время бежит на одном таймере, на другом оно стоит. Когда отведенное время истекает, часы издают сигнал. Чтобы использовать шахматные часы в целях самомотивации вам придется…
Читать дальше →

TeamCity 4.0 released

Reading time2 min
Views11K
Что такое TeamCity? TeamCity — это, говоря научно-занудным языком, интегрированная среда, которая повышает эффективность групповой разработки, беря на себя такие рутинные действия как сборка билдов, запуск и анализ тестов, а так же анализ исходного кода (инспекции, поиск дубликатов и т.д.) Посмотрев на картинку многое станет понятным:
image
Читать дальше →

ExtJS и хостинг базовых файлов в CDN

Reading time2 min
Views1.9K
Если вы разрабатываете проекты на ExtJS, то наверняка в вашем дереве исходных кодов есть сам дистрибутив библиотеки и вы его подключаете на всех страницах, где используются ее возможности. И храните саму библиотеку также у себя на хостинге. Это, конечно, правильный и простой подход, но имеет свои ограничения. Во-первых, в большинстве случаев именно ExtJS будет самым большим компонентом страницы, ведь его общий объем около 1 Мб, а значит и будет тормозить страницу, пока браузер не загрузит всю библиотеку. Как выход, все рекомендуют настраивать сжатие (например, mod_deflate, хорошо, что браузеров, которые не понимают сжатый контент, теперь почти нет, а у кого есть, тот, как говорится, сам себе злобный буратино), теги кеширования и т.п. Ну и на крайний случай — собирать под свой проект, или даже под каждую страницу, свою версию библиотеки, включая туда необходимые компоненты. Я уже писал о структуре фреймворка и расположенном на сайте конструкторе, который сможет автоматически сформировать вам ваш личный дистрибутив.
Читать дальше →

Паттерны форм подписки, часть вторая

Reading time7 min
Views2.4K
Это вторая часть перевода интересного исследования, которое проводили авторы популярного интернет сайта Smashing Magazine. Первую часть вы пожете прочитать здесь. В этот раз авторы затрагивают вопросы капчи, сообщения «Спасибо за регистрацию», кнопки «Отмена» на формах и некоторые другие интересные вопросы.


3. Функциональность форм


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

Споры о шаблонизаторах: троллинг или умные мысли?

Reading time3 min
Views1.7K
причины родились в том, что в топах посвященных обзорам конкретных шаблонизаторов спорят на обобщенную тему:
Обзор шаблонизатора Quicky: Производительность и Гибкость.
MACRO — гибкий PHP шаблонизатор, с человеческим «лицом»
раследование проведено на основе данных, полученных в топе:
HolyWar: Шаблонизаторы. Нужны ли они? состоятельны ли они? Форум.
результаты расследования под катом
Читать дальше →

Юзабилити при проектировании сайта — кто в ответе?

Reading time2 min
Views2.3K
Вопрос, который я хотел бы обсудить с сообществом: кто в интернет-студии должен заботиться о юзабилити сайта заказчика при его проектировании? Проект-менеджер или все же дизайнер? Кто должен решать – вот этот блок у нас в левом углу, а вот этот – в правом? Кто должен обладать знанием о том, что пользовательское внимание концентрируется в этой области страницы, а вот в тот угол никто и не посмотрит?

Ответ – этим должен заниматься специалист по юзабилити не принимается. Реально такой должности не существует даже в крупных студиях, не говоря уже о маленьких компаниях.
Реально такой работой занимается либо дизайнер, либо проект-менеджер. У каждого варианта есть свои преимущества и недостатки.
Если отдается все на откуп дизайнеру: тогда должно быть качественное описание всех сервисов и функции, что-куда-откуда, для того, чтобы дизайнер на 100% понял, что за модули будут работать. Во-вторых, дизайнер не общается обычно напрямую с клиентом, он не знает особенностей его бизнеса, особенности компании. Перед ним ставит задачи проект-менеджер. В-третьих, вопрос юзабилити шире, нежели возможности дизайна. Например, красивая правильная адресация, это уже вне полномочий дизайнера.

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

Запуск проекта на разных хостах

Reading time4 min
Views3.7K
Наверное, каждый разработчик встречался с задачей запуска одного проекта на разных компьютерах. В простом случае это машина разработчика и «боевой» сервер. Ещё сложнее ситуация, если в разработке участвуют несколько человек, и у каждого свои настройки.

Сложность здесь в том, что разное окружение (доступ к БД, расположение файлов и проч.), будучи «жестко» прописанным в файле конфигурации, заставляет нас постоянно этот файл править. Кроме того, файлы настроек часто заливаются в репозиторий, и после очередного обновления кода у вас всё перестаёт работать.

Для решения проблемы я использовал два метода.
Читать дальше →

Разработка макетов: а давайте в этот раз не будем спрашивать уборщицу?

Reading time4 min
Views4.4K
Мало кому приходит в голову указывать программистам, как писать код (хотя некоторые умудряются указывать даже проектировщикам баз данных), но уж показать дизайнеру как нужно рисовать — прямо очередь выстраивается.

Это происходит потому, что все «специалисты» знают: дизайн — это красивая картинка.

Дизайн лишь на 20% искусство, на 80% — это точная наука. И вы будете удивлены, когда узнаете, из чего на самом деле состоит каждая картинка.

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

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity