Месяц: Октябрь 2008

Facebook выложила некоторые исходники.

Источник Очередной дар open source  со стороны популярного проекта. Теперь все могут заглянуть во внутрь Scribe, предназначеной для агрегации данных, расположеных на разных серверах. Вконтакт празднует 😉

Читать далее »

Маленькая месть спамерам.

Вы устали от спамеров, они портят Вам жизнь, они пытаются втюхать ненужные Вам товары. Тогда делайте как я, ответьте им их же методом. —————————————<- *********(18:12:32 21/10/2008) Добрый день! Если Вы разрабатываете дизайн макетов для последующей печати, значит, я по адресу. А если Вы с этим никак не связаны, извините, что потревожила. Наша компания занимается производством полиграфической продукции. Предлагаем специальные условия на цифровую печать: — высокое качество печати от НР 9500 hdn, предоставляем образцы печати бесплатно (на бумаге XEROX Colotech + 100г/м.кв., 140г/м.кв. —————————————<- *********(18:12:32 21/10/2008) gloss, 280г/м.кв., 280г./м.кв. лен, 280г/м.кв. облако) — оперативность: «Сегодня на сегодня» и «Сегодня на завтра» — возможность предоставления CMYK пантона отпечатанного на нашей машине! 100% попадание в цвет. Пантон можно приобрести (100у.е.) или получить бесплатно при размещении заказов на сумму от 500у.е. — возможность дополнительного заработка: 15% скидка при —————————————<- ********* (18:12:32 21/10/2008) заказе дизайнером; 10% скидка при рекоммендации нашей типографии заказчику. Наличные не выплачиваются, дизайнер может на накопленную сумму заказать цифровую печать. С уважением, *********. Тел: (017) ********* (029) ********* ICQ:********* —————————————>- AmdY (18:19:38 21/10/2008) Уважаемая Кристина. Вы немного не по адресу, но возможно я могу Вам что-либо предложить. Я занимаюсь разработкой сайтов и вэб ориентированых бизнес приложений. Заметил, что в вашей контактной информации нет адреса в интернете. Возможно, если Вы решитесь заказать сайт у меня, Вам не понадобится рассылать спам по аське, так как Вас можно будет легко найти. Причём я предлогаю Вам не просто сайт-визитку, а полноценный вэб офис, через который вы можете вести переговоры и получать нужные материалы от заказчиков. Данная система называется CRM, учитывая малораспостранённость сих в нашей стране, подобный вэб офис может стать веским вкладом в процветание Вашего бизнеса. С уважением, Вячеслав. ICQ: 311 071 271 —————————————<- *********(18:22:45 21/10/2008) Спасибо. Буду иметь ввиду) —————————————<- *********(18:22:54 21/10/2008) Всего хорошего и успехов) —————————————>- AmdY (18:23:02 21/10/2008) Вам того же

Читать далее »

Облако тегов.

Заметил, как после последних публикаций в облаке тего разросся один тег. И сразу же впомнилось несколько обсуждений. Меня в этом вопросе наставил на путь истенный Фанат с форума PHP Club. Что нужно от тегов — быстрый поиск материалов по интересующему слоу-тегу. С этимнеплохо спраляются все подобные облока. Вот только разный размер букв популярных тегов и слишком малый размер непопулярных сильно затрудняет поиск нужного тега в облаке. После вопроса Фаната, я осознал, что при поиске нужного тега пользуюсь либо поиском в браузере, либо набираю прямо в адресной строке. Кроме этого часто теги размещают рандомом, а не в алфавитном порядке, в таком случае облако и вовсе неюзабельно, если вам нужны не фото голой курниковой или google. Второй недостаток большинста облок — невозможность искать по нескольким тегам одновременно, но сейчас эта проблема исправляется. Хотя как реализовывать  сию фичу вопрос так же достаточно спорный. Третий — практически нигде нет возможности посмотреть все теги, вот и приходится набирать в адресной строке наугад, а здесь возникает дополнительная проблема с поиском по похожим тегам, но это уже каприз :), как программист я понимаю насколько это геморная и неоднгозначная задача.

Читать далее »

О плохих шаблонизаторах

Для меня стало неприятным открытием что многие до сих пор используют для шаблонизации таких уродцев как XTemplate, либо пишут свой такой же велосипед с квадратными колёсами. И так, давайте рассмотрим принципы их работы. Первоочередной задачей шаблонизации является разделение бизнес логики и логики представления. Говоря человеческим языком, для того чтобы изменить отображение страницы нужно изменить лишь часть, отвечающую за отображение, так называемый шаблон. Что такое шаблон. Обычно это html код со вставкой специальных элементов разметки, которые позволяют добавлять динамические данные. На первом этапе создаётся массив данных, которые нужно передать в шаблон, а затем выводится сам шаблон и делаются замены спец вставок, на данные полученные в первом этапе. Для обнаружения и подмены вставок, обычно используются два способа — функция str_replace и регулярные выражения. Первый вариант довольно шустрый, но имеет рад ограничений, второй из-за использования регулярок довольно ресурсоёмок. И так, что происходит внутри. Берётся файл с шаблоном, загружается в память, затем обрабатывается с помощью строковых функций и делаются замены. Парсинг целого шаблона штука довольно трудоёмкая, а главное бесполезная. У нас для шаблонов уже есть РНР, который позволяет писать этакий код: <h1><?=$title?></h1> <ul> <? foreach $items AS $item { ?> <li><?=$item?></li> <? } ?> </ul> А теперь представьте шаблон пару сотен кода, в котором должны делаться замены, которых можно было легко избежать, подумайте, насколько упадёт производительно? Для чего же тогда написана такая громадная библиотека как smarty и его аналоги, если уже есть готовые средства. И так, рассмотрим второй подвид шаблонизаторов. Смартиподобные шаблонизаторы имеет ещё одну прослойку — компиляция. То есть, как и у первых, берётся шаблон, но не делается замена вставка — значение переменной, а вставка — переменная, после это всё записывается в файловую систему, чтобы при повторном обращении не делать лишних преобразований. В итоге, мы получает php шаблон. Но скорость даже подобных шаблонизаторов хуже чем, ежели бы обошлись без них. И на кой нам это? Первое преимущество — безопасность. Убрав из шаблонов РНР мы делаем шаблоны безвредными. Второе тесно связано с первым. Теперь изменением дизайна могут заниматься не программисты, нужно лишь не нарушать разметку. Третье — автоматизация. Люди ленивы, а жизнь коротка. поятому нужно стараться не делать дважды отдно и тоже. Допустим в смарти есть элемент html_options, который позволяет создать список единого выбора, есть escape, который поваляет обезопасить вывод, избавившись от потенциально опасных тегов. Четвёртое….. А ну его, додумайте сами. Результаты. Шаблонизания на основе компилируемых шаблонов, помогает сэкономить кучу системных ресурсов, по сравнению с дермошаблонизаторами, при этом расширяемость позволяет выходить за рамки логики отображения, но хорошо это или плохо, решать каждому для себя. Пользуйтесь качественным кодом. P.S. Некоторые умеют летать, а другие сё ещё «залетают».© Кто-то умный.

Читать далее »

Шаблонизация: Что, где, как

Вопрос о шаблонах подобен священной войне за веру, он вызывает потоки флейма на форумах, блогах, конфернциях… Что такое шаблон? Это заготока для отображения входных данных. Его основная задача определить где, что и как будет находиться.Вроде всё просто  и понятно, но когда мы начинает отделять логику от представления возникает много вопросов о разделении полномочий. И так человек приходит, либо не приходит к понятию логика предсталения. После этого становится мало и человек начинает использоать актиные шаблоны и постепенно приходит к понятию view. Попытаюсь рассмотреть типичные задачи возлагаемые на шаблоны. Где. С помощью специальных знаков мы указываем где должна происходить встака. Т.к. php изначально был навёрнытым щаблонизатором, то примеры будут на нём, а не специализированых шаблонизаторах. вставить после данного текста <?=$var?>, а не после этого. Что. Вот и первый краеугольный камень. Если вставлять простые переменные, то подходит чисто пример выше. Но в реальных задачах приходится выводить массивы, данные из объектов. Некоторые предпочитают для массивов гонять цикл непосредственно в php, чтобы не использоать for или foreach в шаблонах. Выглядит примерно так. $blockVar = »; foreach($data AS $v) { $blockVar .= temlateFetch(‘list.tpl’, array(‘var’ => $v)); } templateAssign(‘var’, $blockVar); Мало того что это неудобно, так ещё и нарушает концепцию разделения логики. Куда проще делать это в шаблоне, тем более при вёрстке придётся менять только шаблон и не нужно лезть в код, чтобы узнать какой шаблон использоался для блочной переменной <?php foreach($data AS $v) { ?> <div><?=$v?></div> <?php } ?> Как. Считаю глупым чтобы программист указывал верстальщику как нужно обработать переменную чтобы её ставить. Очень часто имеено при вёрстке видно нужно ли обрабатыать html теги, какой должен быть перевод строки, на сколько обрезать длинную строку. Допустим, администратор в textarea ввёл текст, который сохранился в базу данных, затем при выводе, если мы всталяем её в textarea, то делаем <textarea><?=$var?></textarea> , а если в p <p><?=nl2br($var)?></p> %RELATEDPOSTS%

Читать далее »

Формы и Safari

Сегодня с прискорбием узнал, что мои чудо формы не работают в safari. Но причину нашёл довольно быстро, я при создании форм не прописываю action, оставляя его пустым. Но в данной бродилке при сабмите я поподаю на гланую страницу, согласно <base href=»адрес» />. Что ж переделаю генератор форм. Но есть и радосная новость, весь javascript код на prototype работает, включая вертикальные и горизонтальные скролы на которые я убил столько времени. Надеюсь в ближайшее время выложу получившуюся фотогалерею на prototype.

Читать далее »