Singular vs. Plural как называть таблички или тупики развития информационных систем.
Как то само собой получилось что традиционно таблицы в реляционных базах данных называются в множественном числе как то users, pages, items. Однако последнее время наметилась тенденция к переходу на имена в единственном числе как то user, page, item возможно такая тенденция связана с объектно ориентированным подходом когда каждая запись рассматривается как объект. На мой взгляд множественное число более предпочтительно так как таблица это все же коллекция объектов а не сам объект однако многие фреймворки предлагают совершенно новый подход взаимодействия с базами данных исключая или минимизируя написание программистом непосредственно SQL запросов при помощи различного рода ОО маппингов.
Не могу сказать что использование ОО маппингов это верх технологической мысли. Наоборот это технологический нонсенс. Задумайтесь, язык SQL изначально был предназначен для общения человека с реляционной базой данных не машины а именно человека. Именно поэтому он основан на простых конструкциях английского языка SELECT INSERT UPDATE. Со временем написание комманд на языке SQL стало уделом программистов и системных администраторов. Пользователи же получили GUI, оконный интерфейс и мышу. Однако SQL все также используется для общения с базой данных однако теперь на нем разговаривают не люди и компьютеры а только компьютеры то есть сами программы. То есть программы разговаривают друг с другом на естественном языке! Язык разработанный как средство для общения человека с машиной де факто стал стандартом общения машин между собой. Но программам очень не удобно общаться между собой на естественном языке а тем более программистам совсем не удобно писать программы которые будут использовать этот язык для работы с данными поэтому придумали ОО маппинг технологию когда реляционная модель заменяется объектной. То есть для облегчения хождения на протезах были изобретены костыли. С костылями на протезах ходить намно-о-о-ого приятней. Но может быть пора попробовать что нибудь новое оригинальное. Например, попробовать встать на собственные ноги тем более что они у нас слава богу вроде бы есть взять к примеру те же объектно-ориентированные базы данных.
К слову сказть, также дела обстоят и с протоколами Интернета SMTP, HTTP, POP3 - все они разрабатывались как текстоввые протоколы для работы через телнет. Со временем telnet заменили на специализированные программы - браузеры и майлклиенты а протоколы остались без изменений. Отсюда и тонны спама и проблемы совместимости браузеров и сложности настройки почтовых клиентов. Возможно когда нибудь кретинизм в высоких технологиях и будет побежден но пока клубок противоречий запутывается все сильнее.
как обработать BMP изображение используя PHP
Как известно библиотека GD не поддерживает возможность прочитать файлы формата BMP а пользователи (особенно малограмотные пользователи) часто так и норовят закачать на сайт фото или картинку в формате BMP. Как быть если закачать нельзя но очень хочется? Оказывается есть способ.
Здесь работающая демка а здесь сходник
Собственно всю грязную работу выполняет класс написанный Джеймсом Хайнрихом (James Heinrich) для своего проекта getID3(). Что интересно, в последних версиях проекта класс уже не умеет преобразовывать BMP в GD а только читает метаинформацию. На старую версию класса наткнулся совершенно случайно - она есть в phpThumb уже в полном варианте. Большое спасибо Джемс :)
Таскание мышью используя JavaScript
Как проставить неразрывный пробел ( ) с использованием document.createTextNode
Долгое время не получалось при работе со структурой документа использовать спец символы типа - если пишешь что-то типа document.createTextNode('&nbps') то получается не неразрывный пробел а его html представление поэтому приходилось присваивать свойство innerHTML вместо того чтобы оставаться в рамках модели XML DOM что не очень то красиво.
Просто createTextNode не понимает html разметки, ему нужно скармливать символы как они есть без использования html замен, но вот беда, на клавиатуре у нас нет неразрывного пробела - есть только обычный. Оказывается набрать неразрывный пробел можно на клавиатуре - подсказка в виндовой таблице символов - нажимаем alt и не отпуская набираем на дополнительной клавиатуре 0160 (в режиме Num Lock), отпускаем alt - появляется пробел - но это не обычный пробел а самый что не на есть неразрывный, html код которого и есть его можно вставлять в createTextNode без проблем.