Обновить
455.92

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

Использование deb-пакетов для дистрибъюции кода

Время на прочтение8 мин
Охват и читатели6.9K
В этой статье я хочу рассказать, о том, как можно внедрить систему сборки deb-пакетов для некоторого абстрактного проекта. Плюсов в распространении и развёртывании ПО на основе пакетов несколько:
  • Атомарность пакета (представление продукта в виде одного файла);
  • Наличие скриптов пред/пост установки/удаления ПО;
  • Возможно указания зависимостей для ПО.
Кроме того, при развёртывании ПО на основе пакетов, а не на основе SVN, вы гарантировано защищены от проблем с .svn-папками.
Читать дальше →

Загрузка браузером нескольких файлов

Время на прочтение5 мин
Охват и читатели31K
Если нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели Flash (реже — Java applet или ActiveX). В случае, если соответствующий плагин недоступен, пользователю, как правило, показывают стандартный HTML-элемент для загрузки файла.

Последнюю ситуацию можно улучшить, если использовать встроенную в браузеры возможность множественной загрузки файлов. Из всех браузеров сейчас данную возможность не поддерживает только Internet Explorer (впрочем, мы ещё не видели девятую версию, может там что-то изменится), остальные браузеры — Opera 9 и выше (а так же версии 3.5—6.05), Firefox 3.6+, Chrome 3.0.191.0+ и Safari 4.0.1+ такую возможность предоставляют.

Достаточно написать что-то вроде
Copy Source | Copy HTML
  1. <form enctype="multipart/form-data" method="post">
  2.    <input type="file" min="1" max="9999" name="file[]" multiple="true" />
  3.    <input type="submit" name="submit" />
  4. </form>
PHP оказался готов к такой конструкции (именно для него в параметре «name» стоят квадратные скобки), он просто разложит загружаемые файлы по элементам массива $_FILES, если только мы не используем «Оперу».

К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.

Я попробовал исправить эту ситуацию.
Читать дальше →

Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся. Часть 2: архитектура

Время на прочтение13 мин
Охват и читатели7.3K
Вслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»

Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
Читать дальше →

Простой скрипт деплоя

Время на прочтение5 мин
Охват и читатели9.1K
Хочу сказать сразу, цель этого поста не предоставить универсальное решение задачи развертывания кода на сервере, а показать пример, один из вариантов решения такой задачи. Подойдет ли это решение для вашего случая — решать вам.

Итак, задача выгрузки кода на сервера, одна из самых частых рутинных задач в работе программиста. Очень хорошо эта проблема освящена тут. Но до сих пор, многие решают её с помощью тупого копирования выбранных файлов по FTP, что зачатую приводит к путанице, и ошибкам. Ниже я предлагаю более или менее универсальный скрипт на языке bash, который позволит автоматизировать задачу.
Читать дальше →

Коллективная разработка с использованием git и Trac в проекте Midnight Commander

Время на прочтение6 мин
Охват и читатели5.1K
    Действительно, в интернете сейчас можно найти достаточно много информации о настройке GIT и работе с ним, но недостаточно освещен вопрос коллективной разработки и «рабочего процесса» отдельно взятого проекта от начала и до конца.

    Попробую восполнить этот пробел на примере открытого проекта Midnight Commander, не останавливаясь на вопросах установки необходимого ПО, так как этот момент неплохо описан в интернете, и вы сможете легко найти интересующую вас дополнительную информацию самостоятельно.
Читать дальше →

Divine Project – автоматическое создание сайта из PSD шаблона

Время на прочтение1 мин
Охват и читатели13K
image Привет всем! Очень странно, что я не нашел на Хабре ничего такого, про что расскажу вам далее…
Это мой первый пост, а потому попрошу сильно не ругать =)

Я думаю, кто-то из вас рано или поздно сталкивался с задачей сделать для своего сайта уникальный дизайн, но, увы, это не так просто осуществить, как хотелось бы. Но с помощью DIVINE всё становиться гараздо проще. Дизайнерам теперь не нужно владеть HTML, CSS и понятием о том, как устроены темы для WordPress
Читать дальше →

Rediska — удобный PHP клиент для key-value базы Redis

Время на прочтение1 мин
Охват и читатели13K
RediskaRedis — это очень быстрая key-value база данных. Может использоваться как memcached, но отличие от последней в том, что Redis сохраняет свои данные на диск, то есть может быть использован для хранения данных (что мы успешно и делаем). Основные отличии от других собратьев это возможность хранить более сложные структуры данных — списки и «сеты» и атомарные операции с ними.
Так как на хабре уже есть обзор Redis, не вижу смысла продолжать. Перейду к самой «Редиске».
Оосновные возможности...

Книга Application Architecture Guide, Second Edition

Время на прочтение1 мин
Охват и читатели9.1K
Доступен для бесплатного скачивания финальный вариант книги Application Architecture Guide во второй редакции. Книга содержит 560 страниц разбитых на 28 больших глав. Application Architecture Guide посвящена архитектуре и дизайну ПО, как то: дизайну и разработке различных типов ПО (мобильные, web, клиентские, RIA, сервисы и облачные сервисы), организации и разработке уровней ПО (представления, бизнеслогики, данных, сервисов), созданию компонентов.

Получить книгу можно несколькими путями:
* скачать pdf (7.5 Mb);
* читать online;
* купить на Amazon;
* скачать дополнительную информацию на App Arch Guide 2.0 Knowledge Base.

Официальный анонс одного из авторов в его блоге J.D. Meier's Blog.

Поисковый плагин для htmlbook.ru

Время на прочтение1 мин
Охват и читатели2.4K
Поисковый плагин для htmlbook.ru, который подойдёт как для IE7+, так и для Firefox2+ (ибо OpenSearch). Плагин работает следующим образом:
1. если вы ввели существующий в справочнике html-тег или css-свойство, то вас перенаправит именно на страницу теги или свойства;
2. если вы ввели слово, которое не совпадает ни с каким тегом или свойством из справочника, то вас перекинет на поиск по сайту и по форуму;

Ничего сложного в общем-то тут нет, такой плагин делается просто, но для вашего удобства был написан серверный скрипт, который перенаправляет запросы по страницам, или отправляет на общий поиск.

Поисковый плагин сейчас проходит модерацию на addons.mozilla.org, его можно скачать тут — addon №51434 (не забудьте поставить галочку «Let me install this experimental add-on.»)

Пока потихоньку вылавливаются ошибки на отличных от Windows операционках — предлагаю скачивать тут.

PS. как вы думаете — нужно ли автодополнение?

Пишем Comet-чат

Время на прочтение20 мин
Охват и читатели16K
Хочу поделиться своим опытом создания простого Comet-чата. Периодически читал про эту технологию, и сейчас решил попробовать сделать что-либо сам. Получился небольшой чат, интерфейс которого я старался сделать похожим на интерфейс irc-клиента mIRC. Так как подобную вещь пишу первый раз, просьба прокомментировать возможные ошибки в программе и статье и описать более оптимальные пути решения задач. Посмотреть на работающий чат можно здесь: http://94.127.68.84:6884/
Читать дальше →

Zen coding — пишем HTML/CSS быстрее

Время на прочтение1 мин
Охват и читатели52K
Добрый день смотрим сразу как это работает:



Zen Coding
chikuyonok — Сергей Чикуёнок
pepelsbey — Вадим Макеев

Этот способ ускоренного написания HTML и CSS кода разрабатывается Сергеем Чикуёнком, который «знает толк в извращениях».

HTML код пишется на CSS манеру:
div#content>h1+p

Нажимаем нехитрое комбо на клавиатуре (Ctrl+,) и получаем результат:
<div id="content">
    <h1></h1>
    <p></p>
</div>
Читать дальше →

Сапер на GWT

Время на прочтение8 мин
Охват и читатели7.3K
Недавно прочитал топик пользователя nsinreal, который предложил реализацию сапера на батниках. Так как я совсем недавно начал знакомство с GWT и вообще с явой, решил написать своего сапера с блэкджеком и прочим :) Попутно, расскажу про реализацию и проблемы, с которыми столкнулся.

Итак, yaminesweeper.appspot.com. Сделал на выходных, так что не бейте за простой вид и некоторые баги, о который напишу ниже. Исходники вы можете найти здесь: http://github.com/wargoth/yaminesweeper.

Основные возможности:
  • возможность отмечать флажками мины (правой кнопкой мыши)
  • возможность быстро открывать поля (средняя кнопка мыши)
  • изменять параметры поля (ширина, высота, кол-во мин)
  • сохранять время решения поля и смотреть общий рейтинг пользователей (необходимо залогиниться через аккаунт гугла).

Из багов отмечу:
  • общая кривость в ИЕ (решается)
  • кривость в опере (проблемы с переопределением поведения при нажатии средней и правой клавиш мыши)

Планируется сделать:
  • быстрое открывание полей через одновременное нажатие левой и правой клавиш мыши (сейчас только средней клавишей)
  • оптимизировать алгоритмы (сейчас все-таки не так быстро работает, как хотелось бы)
  • улучшить внешний вид

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

Контроль типов аргументов функций в Lua

Время на прочтение12 мин
Охват и читатели13K

Задача


Lua — язык с динамической типизацией.

Это значит, что тип в языке связан не с переменной, а с её значением:

= "the meaning of life" --> была строка,<br/>
= 42                    --> стало число

Это удобно.

Однако, нередко встречаются случаи, когда хочется жёстко контролировать тип переменной. Самый частый такой случай — проверка аргументов функций.

Рассмотрим наивный пример:

function repeater(n, message)<br/>
  for i = 1, n do<br/>
    print(message)<br/>
  end<br/>
end<br/>
 <br/>
repeater(3"foo") --> foo<br/>
                   --> foo<br/>
                   --> foo

Если перепутать местами аргументы функции repeat, получим ошибку времени выполнения:

> repeater("foo", 3)
stdin:2: 'for' limit must be a number
stack traceback:
	stdin:2: in function 'repeater'
	stdin:1: in main chunk
	[C]: ?

«Какой такой for?!» — скажет пользователь нашей функции, увидев это сообщение об ошибке.
Читать дальше →

Ближайшие события

Верстка повторяющихся блоков

Время на прочтение3 мин
Охват и читатели14K
Довольно часто при верстке сайта возникает необходимость размещать блоки одинаковой ширины, но разной высоты в контейнере с переменной шириной (читай резиновом). Плюс на этот список может применяться фильтр, который JS-ом скрывает или показывает элементы списка, при этом он не должен разрушать «строки», верстку, или образовывать дыры, поэтому решения на таблицах не катят сразу. Простейший пример — каталог товаров:


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

mod_rewrite: Просмотр списка правил только один раз

Время на прочтение1 мин
Охват и читатели6.9K
С mod_rewrite есть одна проблема, об которую набиты уже наверное 15 миллионов шишек: он просматривает список правил снова и снова, пока URL удается хоть как-то изменить.

Очень часто получаеются и бесконечные циклы(например добавление расширения — оно добавляется снова и снова, если специально регэкспом не ограничить), над которыми с непривычки приходится поломать голову. Все надежды на модификатор [L] тщетны — он лишь сразу запускает следующую иттерацию обработки. Да и без бесконечного цикла лишние иттерации скорости работы не добавляют :-)

Хочу поделится достаточно простым и универсальным средством борьбы с такой особенностью, который обнаружил только-что :-)

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

Ample SDK — Javascript GUI библиотека. Обзор

Время на прочтение5 мин
Охват и читатели6.2K
Ample SDK logo Доброго времени суток, %username%.
Представляю твоему вниманию анонс Ample SDK, новой кросс-браузерной библиотеки интерфейса пользователя.

Познакомиться с проектом Ample SDK тебе будет интересно по следующим причинам:
  • упрощает создание клиентских веб-приложений
  • реализует стандартные веб технологии и API кросс-браузерно
  • повторяет архитектуру веб-браузера (ничего нового учить не надо!)
  • позволяет использовать SVG в HTML (также в Internet Explorer, хм!?)
  • позволяет использовать XUL в любом современном браузере
  • позволяет легко определять новые доменно-зависимые UI технологии
  • проект с открытым (MIT/GPL) исходным кодом (на GitHub)

Для затравки, один и тот-же SVG Tiger документ отображенный в Internet Explorer 6 и Google Chrome 3:

SVG Tiger в Internet Explorer SVG Tiger в Google Chrome

Интересно?
Читать дальше →

Доступны доклады с конференции PDC '09

Время на прочтение1 мин
Охват и читатели676


Всем желающим стали доступны доклады с конференции PDC. Докладов масса, 90 штук, все они представлены в видео HD-качества плюс опционально доступно видео менее высокого качества. Для многих докладов доступны слайды презентации.

Темы докладов охватывают огромную массу технологий, как новых так и знакомых разработчикам. Вот некоторые из них:
  • Silverlight 4, WPF 4, Windows Workflow Foundation 4, Smooth Streaming
  • DirectX, DirectX 11
  • UML, DSL
  • Entity Framework, ADO.NET Data Services
  • C#/VB.NET: Futures, Garbage Collector
  • ASP.NET: Futures, MVC, AJAX Library и jQuery
  • C++, Visual C++ 2010
  • Software + Services Identity
  • REST Services Security
  • Windows Identity Foundation
  • Windows 7: Touch, Sensors, Ribbon, Error Reporting
  • Windows Server: 2008 R2 (рекомендую доклад Марка Русиновича), HPC Server, DryadLINQ
  • Windows Server AppFabric
  • SharePoint 2010, SharePoint Server 2010
  • BizTalk Server
  • SQL Server 2008
  • Azure: SQL Azure, Java на Azure, PHP и MySQL на Azure
  • Expression Blend, SketchFlow
  • Fiddler
  • Visual Studio 2010
  • .NET Micro Framework
  • Code Contracts, Pex
  • Rx Reactive Framework
  • Dynamic Languages
  • M Language
  • Unified Communications
  • Dallas
  • PowerShell
  • Application Server Technologies: Present and Future
  • Perspectives on the Future of Programming
  • The State of Parallel Programming
Материала на много-много часов. Думаю, каждый найдет для себя много нового и интересного.

Internet Explorer 9: видео-детали

Время на прочтение1 мин
Охват и читатели774
Channel9 выложил несколько внутренних интервью с разработчиками Microsoft из комманды, работающей над Internet Explorer 9. Среди обсуждаемых тем: новый JavaScript движок, D2D рендерер (с аппаратным ускорением), CSS и стандарты.


UPD: Анонс в блоге IE: An Early Look At IE9 for Developers

От себя: почему-то думается, что в этот раз IE станет браузером, «поддерживающим стандарты» (DOM3, SVG, CSS3, HTML5 и друзья), если только эти стандарты сами действительно станут стандартами (в настоящее время почти все что называется «стандартными современыми технологиями» находятся в стадии рабочих копий). 10 лет назад Microsoft уже обжегся, реализовав несколько неутвержденных спецификаций (SMIL, XSL-T, DOM, SMIL, VML и др.), правда в то время это никому было не нужно в любом случае.

Дао Вебсервиса. (Или да хватит же изобретать велосипеды!)

Время на прочтение12 мин
Охват и читатели60K
image Недавно на Хабре была опубликована статья под провокационным заголовком и призывом к прекращению изобретений велосипедов в API-строении. Поскольку тема мне интересна, то я просто не мог пройти мимо.
Увы, реальность за хабракатом меня сильно разочаровала — я увидел очередной велосипед, да еще и с квадратными колесами. (Коллеги, ничего личного, только техническое обсуждение.) Правда, авторы честно сказали, что увидели на нескольких сайтах модное слово REST и решили сделать по нему. Только вот поняли они этот «РЭСТ» по-своему, примерно как Дед Щукарь читал и понимал толковый словарь.
В этом топике я призываю по-настоящему покончить с велосипедами в API сайтов. Ведь получается какой анекдот: АПИ разрабатывается для упрощения доступа к сайту и легкости подключения внешних систем, а получается такой, что с ним еще сложнее, чем без него :)

Чуть ниже под катом я подпишу смертный приговор всем велосипедам в универсальных API. Чтобы не быть голословным, я все проиллюстрирую примерами.
Но должен предупредить сразу — после прочтения статьи вы не сможете без рвотного рефлекса смотреть на очередной велосипед Васи Пупкина под гордым названием «универсальное API сайта».

В повествовании будут рассмотрены следующие вопросы:
  1. Базовые технологии: XML-RPC, REST, SOAP и краткое сравнение
  2. Дао вебсервиса
  3. Просветленные API
  4. Как отличить сайтовое API от говна
  5. Выводы

Кто не испугался суровых реалий - вперед

Аналог Time Machine для Windows

Время на прочтение3 мин
Охват и читатели25K
Time Machine Каждый из нас иногда теряет информацию. По своей ошибке (дрогнувшая рука, не вовремя нажатые клавиши CTRL+S), либо по неудачному стечению обстоятельств (выбило пробки, завис компьютер). Иногда речь идет о пустяках. Бывает, что приходится заново выполнять работу. В худшем же случае, ценная информация оказывается безвозвратно утеряна.

Все мы знаем, что необходимо периодически делать бэкапы. Знаем, но не делаем. А если и делаем, то, по закону подлости, когда надо, копия месячной давности — это лучшее, что удается найти. А ведь случается и так, что утерянный файл было создан всего лишь пару часов назад.
Когда я не мог определиться с темой диплома, один знакомый рассказал мне про TimeMachine от Apple и предложил сделать аналог для Windows. Непрерывная защита данных – это то, о чем я всегда подсознательно мечтал.
Читать дальше →

Вклад авторов