Вот недавно тут был неплохой обзор эмуляторов мобильных девайсов habrahabr.ru/blogs/webdev/96453. Но в этом посте упоминался всего навсего один эмулятор для тестирования web приложений под Iphone на Windows. Я хотел бы добавить еще один — MobiOne, который я для себя отметил, как очень хороший. Одна из основных проблем эмулятора который был предложен в выше упомянутом посте — это то что в нем не работают touch events. Допустим в моем случае мне нужно было тестировать Drag and drop функционал, но так как для реализации данного функционала в Iphone используются touch events, то тестирование с помощью предложенного эмулятора невозможно, так как mouse events работают по другому на Iphone/Ipad, а вот MobiOne позволяет такие вещи тестировать.
Серега @thecoder
Бекенд на микросервисах
Microsoft WebMatrix — Reloaded
5 min
35KВсе новое — это хорошо забытое старое. Видимо, руководствуясь этим принципом, спустя 7 лет Microsoft решила вернуть к жизни одну из своих старых идей — но в новом облачении. Речь идет о WebMatrix — платформе для web-разработки, бета которой стала доступна недавно. Бета включает в себя много всего вкусного — обещанный IIS Express, SQL Server CE 4 и движок представлений для MVC — Razor. А так же — галерею приложений (интегрировано с WebPI), инструменты мониторинга и анализа сайта, средства публикации. Но хватит вступлений, давайте посмотрим что же есть собственно внутри WebMatrix.
+25
Не строим с нуля. Теперь у Вас есть шаблон для верстки HTML5
2 min
17KTranslation
Любовь к HTML5 продолжает вдохновлять Поля Айриша. Во-первых, он подарил нам Modernizr, а сейчас он объединился с Divya Manian для создания шаблона HTML5, который использует передовые техники, чтобы Вы могли начать использовать его в своей практике.
Он, в сущности, является хорошей отправной точкой, состоящей из HTML и CSS, предлагающим также и структуру папок, которая работает. Но созданным с учётом многих лет передового опыта профессионалов в разработке клиентской части. Загляните в исходные тексты, чтобы почувствовать, что находится внутри. А если вы думаете, что этого слишком много, просто удалите лишнее.
+135
Динамические поддомены с использованием nginx+apache
3 min
29KTutorial
Этот топик — очередной топик про реализацию динамических поддоменов на сайте, коих много в интернете и даже есть пара топиков на хабре.
Проблема в том, что этот вопрос везде освещается только с точки зрения перенаправления с поддомена в папку и вся динамичность поддомена заключается в том, что ты создал папку — поддомен у тебя заработал.
Иногда же требуется решение другой проблемы — например вынос на поддомен профиля пользователя и всего функционала, который с ним связан.
Например, у нас есть готовый сайт, на котором работают профили по такому url: www.example.com/users/username, и есть всякие дополнительные возможности (например www.example.com/users/username/contact и другие страницы, связанные с этим юзером).
И мы теперь хотим вынести все, что связано с юзером, на поддомен, например username.example.com, username.example.com/contact и т.д.)
Решения, которые были найдены в интернете, меня не удовлетворили по 2 причинам:
На нашем сайте стоит nginx над апачем (как и на многих других), поэтому пришлось изобретать велосипед самому, используя эту связку (nginx+ apache, благо сейчас почти на всех крупных сайтах стоит проксирующий nginx над апачем)
Проблема в том, что этот вопрос везде освещается только с точки зрения перенаправления с поддомена в папку и вся динамичность поддомена заключается в том, что ты создал папку — поддомен у тебя заработал.
Иногда же требуется решение другой проблемы — например вынос на поддомен профиля пользователя и всего функционала, который с ним связан.
Например, у нас есть готовый сайт, на котором работают профили по такому url: www.example.com/users/username, и есть всякие дополнительные возможности (например www.example.com/users/username/contact и другие страницы, связанные с этим юзером).
И мы теперь хотим вынести все, что связано с юзером, на поддомен, например username.example.com, username.example.com/contact и т.д.)
Решения, которые были найдены в интернете, меня не удовлетворили по 2 причинам:
- Не нашел решения как заставить ее работать, сохранив работоспособность домена www.example.com
- Все найденные решения подходят только для перенаправления в папку и не работают если дальше должны работать какие то правила
На нашем сайте стоит nginx над апачем (как и на многих других), поэтому пришлось изобретать велосипед самому, используя эту связку (nginx+ apache, благо сейчас почти на всех крупных сайтах стоит проксирующий nginx над апачем)
+48
Pirobox — хорошая альтернатива jQuery Lightbox
1 min
20KPirobox — легкий и быстрый скрипт галереи на jQuery.
Автор скрипта итальянец Diego Valobra (http://www.diegovalobra.com), талантливый человек.
В сжатом виде скрипт весит всего 10Кб, есть несколько тем внешнего вида, слайдшоу, корректная работа с PNG, клавиатурная навигация, проверка состояния ссылок (битая/не битая), возможность открыть картинку в новом окне.
На данный момент последняя версия — 1.2.2.
Официальный сайт
Скачать
Demo
Автор скрипта итальянец Diego Valobra (http://www.diegovalobra.com), талантливый человек.
В сжатом виде скрипт весит всего 10Кб, есть несколько тем внешнего вида, слайдшоу, корректная работа с PNG, клавиатурная навигация, проверка состояния ссылок (битая/не битая), возможность открыть картинку в новом окне.
На данный момент последняя версия — 1.2.2.
Официальный сайт
Скачать
Demo
+27
Библиотека dklab_rowlog для версионирования строк в таблицах PostgreSQL
4 min
3K
Dklab_rowlog — это библиотека из нескольких хранимых процедур PostgreSQL, позволяющая добавить версионирование записей к любой таблице в БД. Иными словами, что бы ни происходило с таблицей, как бы данные там ни менялись (добавлялись/удалялись), это будет отражено в специальной табличке-логе.
Преимущества:
- Версионирование добавляется к любой таблице за 1 минуту с использованием 1 SQL-команды.
- Можно указать, какие колонки надо сохранять, а какие — нет (что экономит место). При этом запись в лог добавится только в случае, если хотя бы одна из указанных колонок изменилась.
- Можно указать колонку, которая будет трактоваться как «ID автора изменения».
- Можно задать колонки, которые будут логироваться в любом случае, независимо от того, менялись они или нет.
Примеры использования
Предположим, нам нужно логировать изменения вот в такой табличке:
+49
Как не переносить весь код на 64 бита
4 min
22KДо чего бывает неприятно: есть 32-битная библиотека на C++, которую вы уже много лет лицензируете клиентам, а теперь все больше и больше клиентов хочет использовать ее из 64-битных программ. Вы развиваете библиотеку, исправляете ошибки, дорабатываете, холите и лелеете ее, она прекрасно работает, а клиентам это не так и важно – они просто хотят 64 бита. Им даже не важно, будет ли она вся 64-битной, они просто хотят ее использовать.
Что делать? Очевидно – переписать код так, чтобы он компилировался и на 32 бита, и на 64:
— читаем много статей – например, вот эту и те, что появятся в «похожих публикациях» при ее прочтении;
— быстренько правим код (за неделю должны управиться, правда?);
— ???
— PROFIT
А теперь добро пожаловать в реальный мир.
Что делать? Очевидно – переписать код так, чтобы он компилировался и на 32 бита, и на 64:
— читаем много статей – например, вот эту и те, что появятся в «похожих публикациях» при ее прочтении;
— быстренько правим код (за неделю должны управиться, правда?);
— ???
— PROFIT
А теперь добро пожаловать в реальный мир.
+53
Apache Lenya — необычная opensource CMS на Java
7 min
19KВ комментариях к топику Spring в действии — пробуем opensource CMS на Java я обмолвился об Apache Lenya, одной из opensource CMS на Java, и меня попросили написать о ней подробнее.

«Почему CMS на Java?» — первый вопрос, который у меня возник, когда поступили требования от заказчика. Ответ оказался простым: заказчик, крупная корпорация, имел опыт разработки проектов на Java, поэтому доверял ей больше всего. «Java EE» звучит для уха бизнесмена серьёзнее и надёжнее, чем, скажем, PHP. Как обстоят дела с надёжностью и серьёзностью на самом деле не суть важно, но всё же стоит учитывать, что крупные корпорации доверяют продуктам других крупных корпораций.

Почему Apache Lenya
«Почему CMS на Java?» — первый вопрос, который у меня возник, когда поступили требования от заказчика. Ответ оказался простым: заказчик, крупная корпорация, имел опыт разработки проектов на Java, поэтому доверял ей больше всего. «Java EE» звучит для уха бизнесмена серьёзнее и надёжнее, чем, скажем, PHP. Как обстоят дела с надёжностью и серьёзностью на самом деле не суть важно, но всё же стоит учитывать, что крупные корпорации доверяют продуктам других крупных корпораций.
+27
Пишем свой плагин для jQuery
3 min
7KСегодня утром я зашёл на Google Maps и с радостью увидел там слой «Пробки». Сразу же глаз зацепился за интересное интерфейсное решение для выбора времени, на которое будет показана ситуация с пробками.
Сразу же захотелось использовать подобный орган управления в своих проектах.
Самое время вспомнить, как пишутся плагины под jQuery.

Сразу же захотелось использовать подобный орган управления в своих проектах.
Самое время вспомнить, как пишутся плагины под jQuery.

+46
Популярные продукты для электронной коммерции с открытым исходным кодом
4 min
31KTranslation

Примечание: русскоязычных пользователей, прежде всего, интересует наличие локализованных версий, поддержка отечественных платёжных систем и русское сообщество. В комментариях по тексту, выделенных курсивом, по-возможности указана эта информация.
+38
Уязвимость связки PHP+nginx с кривым конфигом
1 min
61KSummary
Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass

Background
Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
+129
Целебное зелье для IE5+ или IE7.js
2 min
7.1KРазбирая код очередного проекта внутри тега
Только одно слово «IE9» меня пустило в замешательство. Первое что пришло мне в голову — это то, что при помощи этого .js кода браузеры под печальным клеймом Internet Explorer можно заставить работать используя свойства многообещающего IE9. Больше всего я ожидал что будут доступны свойства CSS3.0, но не тут-то было!
head
наткнулся на интересный код:<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta3)/IE9.js"></script>
<![endif]-->
Только одно слово «IE9» меня пустило в замешательство. Первое что пришло мне в голову — это то, что при помощи этого .js кода браузеры под печальным клеймом Internet Explorer можно заставить работать используя свойства многообещающего IE9. Больше всего я ожидал что будут доступны свойства CSS3.0, но не тут-то было!
+92
Масштабируемость реляционных БД
2 min
9.9KTranslation
Q:
В Facebook используют MySQL зная, что он плохо масштабируется (или здесь какая-то особая магия?). Я хотел спросить, из каких соображений они выбрали MySQL? Используют ли JOIN'ы? И не планируют ли перейти на другую БД?
A:
Отвечает Adam D'Angelo, бывший CTO Facebook, сейчас он развивает свой стартап Quora:
- Если разбивать данные по разным серверам на уровне приложения, то масштабируемость MySQL не такая уж и большая проблема. На 2008 год, в Facebook [1] у нас было 1800 MySQL серверов для которых требовалось всего два администратора. Конечно, вы не сможете сделать JOIN с данными с разных серверов, но NoSQL-базы вам тоже этого не позволят. Нет никаких данных о том, что в Facebook используют Cassandr'у как основное хранилище, и, кажется, что единственное, для чего она там нужна — это поиск по входящим сообщениям. [2]
+70
Syn — библиотека синтетических событий, которая делает тестирование проще
2 min
1.3KTranslation
Команда Jupiter IT выпустила Syn, библиотеку, которая позволяет вам создавать синтетические события для использования при тестировании. Эта отдельная библиотека предназначена для оказания помощи в тестировании сложного поведения пользовательского интерфейса, имитируя действия пользователя, такие как печать с помощью клавиатуры, нажатие кнопок мыши и перетаскивание с её помощью.
+18
GZip и nginx: влияние на производительность
2 min
36K
+77
Дополненный jQuery FormNavigate или «не дай юзеру потерять данные»
3 min
2.6KОднажды на просторах Хабра встретил плагин FormNavigate (требующий у пользователя подтверждения на закрытие вкладки или переход по ссылке, когда данные в форме заполнены, а-ля gmail), а однажды потребовалось его даже применить.
Но тот вид в котором плагин был меня не устроил и я позволил себе немного его переписать.
Так, например, мне неудобно было выбирать те ссылки, на которых следует отлавливать подтверждения, а наоборот требовалось указывать ссылки на которые действие плагина не будет распространяться. Тут продвинутые разработчики начнут меня закидывать помидорами, что я не знаю правильную работу селекторов в jQuery. Но это не так, сами можете проверить как работает прошлая версия плагина, например, для:
Но тот вид в котором плагин был меня не устроил и я позволил себе немного его переписать.
Так, например, мне неудобно было выбирать те ссылки, на которых следует отлавливать подтверждения, а наоборот требовалось указывать ссылки на которые действие плагина не будет распространяться. Тут продвинутые разработчики начнут меня закидывать помидорами, что я не знаю правильную работу селекторов в jQuery. Но это не так, сами можете проверить как работает прошлая версия плагина, например, для:
$('a:not([class~="ajax"])')
(предложенный автором прошлого топика $('a:[class!="ajax"]')
вообще вытворяла чудеса).+21
Подключение поворотного энкодера к компьютеру через USB
6 min
53KДавно хотел приспособить к ноуту регулятор громкости, сделанный из энкодера. Подключать этот регулятор нужно будет к USB, чтобы все было «по-взрослому» (да и по-другому никак внешнее устройство к ноуту не подключишь). Крутим энкодер влево — громкость должна уменьшаться, вправо — должна увеличиваться. Жмем вниз ручку энкодера — запускаем какую-нибудь полезную программу, или переключаемся на регулирование тембра.
+68
Почему посетители не становятся покупателями или 17 шагов на пути к идеальному интернет-магазину
7 min
16K
+87
Как фрилансеру распознать нежелательного заказчика?
3 min
5.3KЯ более 4 лет работаю фрилансером и имею опыт общения с различными заказчиками, опыт разработки различных проектов. Свой опыт я постарался обобщить, создав небольшую памятку, а вернее «стоп-лист», которым теперь пользуюсь для раннего отсева заказчиков, работа с которыми не приносит ни радости, ни выгоды. Мне он помогает экономить время и нервы. Надеюсь, он будет полезен и вам, если вы фрилансер. Он также может быть полезен начинающим заказчикам. Публикую его здесь с небольшими комментариями к каждому пункту.
«Стоп-лист» содержит негативные признаки заказчика. Пожалуйста, обратите внимание, что совпадение 1-2 пунктов может оказаться случайностью. При совпадении 3 и более пунктов я отказываюсь работать с заказчиком.
«Стоп-лист» содержит негативные признаки заказчика. Пожалуйста, обратите внимание, что совпадение 1-2 пунктов может оказаться случайностью. При совпадении 3 и более пунктов я отказываюсь работать с заказчиком.
+112
SDK: создание приложения в 3 шага
5 min
4.8K
Добрый день.
На прошлой неделе мы объявили об открытии SDK и пришла очередь описать процесс создания приложения.
Приложения для Finobox могут быть самыми разнообразными, например подготовка договоров и документов, смет и отчетов, анализ финансовых данных и построение графиков и так далее.
Любой php-разработчик с помощью SDK может создать свое приложение и разместить его в Finobox, получая прибыль от продаж этого приложения пользователям.
В этом посте мы опишем создание приложения для импорта финансовых данных из CSV файла.
+5
Information
- Rating
- Does not participate
- Location
- Россия
- Date of birth
- Registered
- Activity