Как стать автором
Обновить
4
0
Роман @promka

Пользователь

Отправить сообщение

Парсим URL

Время на прочтение25 мин
Количество просмотров67K
Хочу поделиться одной полезной утилиткой, написанной на pure JavaScript, — URL. По сути это небольшой парсер URL'ов, работающий почти как window.location, но не перезагружающий страницу браузера при манипуляциях.

А заодно скажу пару слов про getters & setters в JavaScript.

UPD1: по просьбам трудящихся, вынесу сюда примеры:
// Пусть текущий URL = 'http://my.site.com/somepath/'
var u = new URL('relative/path/index.html')
u.href // my.site.com/somepath/relative/path/index.html
u.href = '/absolute/path.php?a=8#some-hash'
u.href // my.site.com/absolute/path.php?a=8#some-hash
u.hash // #some-hash
u.protocol = 'https:'
u.href // my.site.com/absolute/path.php?a=8#some-hash
u.host = 'another.site.com:8080'
u.href // another.site.com:8080/absolute/path.php?a=8#some-hash
u.port // 8080
// и так далее, и тому подобное

* This source code was highlighted with Source Code Highlighter.

Работает в FF3+ (может и в 2+, не пробовал) и в IE6+ ( и это — моё ноу-хау :-) ).
Разобрана в статье также полностью кросс-браузерная реализация, но в использовании — немного более громоздкая:
// Пусть текущий URL = 'http://my.site.com/somepath/'
var u = new URL('relative/path/index.html')
u.href() // my.site.com/somepath/relative/path/index.html
u.href('/absolute/path.php?a=8#some-hash')
u.href() // my.site.com/absolute/path.php?a=8#some-hash
// и т.д.

* This source code was highlighted with Source Code Highlighter.


Да, и я привожу свой листинг полностью, извиняйте, так надо.

Прошу под кат...
Всего голосов 142: ↑128 и ↓14+114
Комментарии81

Как написать слово в поле для пароля так, что бы его было видно?

Время на прочтение6 мин
Количество просмотров4.4K
Написать эту статью меня натолкнуло общение с администратором сайта одного из футбольных клубов российской Премьер-лиги. Надеюсь, что он ее прочитает и воцарит сие в жизнь.

Сейчас стало очень модно делать формы, в которых заголовок поля для ввода написан в самом поле. Например так:


Но как в таком случае быть с полем для ввода пароля? Ведь он заменяет дефолтное значение на звездочки.
В этом посте я решил рассмотреть несколько вариантов, как сделать поле для пароля со звездочками, но что бы слово «пароль» было видно.
Читать дальше →
Всего голосов 49: ↑25 и ↓24+1
Комментарии29

Реализация паттерна декоратор на JS

Время на прочтение10 мин
Количество просмотров6.5K
Суть паттерна в том, что есть класс с фактической функциональностью (компонент) и опциональными классами-обертками, которые дополняют основной функционал (декораторы). А фишка в том, что декораторов может быть сколько угодно, совмещаться они могут в произвольном порядке и (поскольку требуют от компонента только интерфейса) — могут работать с разными компонентами.

Безусловно, реализовать что-то похожее можно даже за счет только лишь того, что функции в JS являются объектами первого уровня, но мне бы хотелось поделиться реализацией весьма близкой к ГОСТу GoF'у.

UPD: ссылка на рабочий пример, спасибо Barttos.

Перед хабракатом: в скрипте присутствует инкапсуляция, наследование (по сути) осуществляется через call, jQuery отсутствует — если Ваша идеология не позволяет принять такие ограничения, пожалуйста, не пишите об этом в комментах и, еще лучше, не читайте эту статью. Конструктивная критика и вопросы приветствуются.

Читать дальше →
Всего голосов 46: ↑39 и ↓7+32
Комментарии97

Дерево в выпадающем списке средствами XSLT

Время на прочтение6 мин
Количество просмотров4.3K
Допустим, у нас на сайте есть у нас нечто иерархическое. Например, категории товаров. У категорий есть подкатегории и так далее. И пусть нам захотелось вывести эту иерархию в выпадающий список.
Далее
Всего голосов 32: ↑30 и ↓2+28
Комментарии30

Организация среды веб-разработки

Время на прочтение4 мин
Количество просмотров5.9K
Продуктивность коллектива веб-студии напрямую зависит от удобства среды разработки. У нас сложилась стройная система организации работы с проектами, включающая в себя набор таких неотъемлемых компонентов, как IDE, SCM, PM-система, багтрекер и development-сервер. Этим постом я бы хотел начать цикл статей, посвященных настройке и использованию этих компонентов в нашей студии.

В первой части я расскажу о самом основном — среде разработки (о том, как мы организовали совместный доступ к проектам).

Идеи

  1. Среда разработки должна быть единой для всех сайтов.
  2. Девелоперы не должны тратить время на настройку каждый своей серверной части.
  3. Работает ли над проектом один человек или несколько — контроль версий необходим.
  4. Если рабочий каталог (IDE workspace) находится на сервере, то можно поработать и дома, не тратя время на повторную настройку окружения на домашнем десктопе или ноуте.

Концепция и реализация
Всего голосов 53: ↑47 и ↓6+41
Комментарии61

Простой способ провести CSS-debug

Время на прочтение1 мин
Количество просмотров7.1K
Болтаясь сегодня по интернету в поисках чего-нибудь интересненького, наткнулся на вот такой простой (и столь же замечательный в своей простоте) способ отыскать «неполадку» в верстке.

CSS

* { outline: 2px dotted red; }
* * { outline: 2px dotted green; }
* * * { outline: 2px dotted orange; }
* * * * { outline: 2px dotted blue; }
* * * * * { outline: 1px solid red; }
* * * * * * { outline: 1px solid green; }
* * * * * * * { outline: 1px solid orange; }
* * * * * * * * { outline: 1px solid blue; }
Цвет, тип и размер обводки каждый может выбрать по вкусу.

Поддержка браузерами:


Firefox Opera Google Chrome Safari

К сожалению, в браузерах от Microsoft версий 6 и 7 (в 8-й — все окей) свойство outline не поддерживается. Для них, пожалуй, придется использовать border.
Всего голосов 103: ↑96 и ↓7+89
Комментарии56

Канбан в IT (Kanban Development)

Время на прочтение7 мин
Количество просмотров282K
Я собираюсь написать несколько статей про новую методологию гибкой разработки Канбан (Kanban Development) в целях подготовки к Scandinavian Agile Conference 2009, где я буду делать один из докладов (кстати, заодно приглашаю всех на конференцию).
Сегодня публикую первую из статей.
Основная задача первой статьи — это как можно проще описать основы Канбан: что это такое, в чем отличие от других гибких методологий и зачем это нужно.
Также я хотел бы собрать как можно больше вопросов и сомнений в комментариях, чтобы ответить на них в следующих статьях, так что пишите всё, что вам непонятно, или что ещё вы хотели бы узнать про Канбан.
Я не то, чтобы большой специалист по этой новой методологии, но мы внутри команды пришли к Канбану самостоятельно и последовательно прошли все этапы мутации от SCRUM до Канбан, так что практический опыт есть.

Читать дальше →
Всего голосов 61: ↑58 и ↓3+55
Комментарии91

Категории программных тестов

Время на прочтение5 мин
Количество просмотров12K
Перевод был сделан как ответ на некоторые комментарии к переводу Настройка IDE для автоматического запуска тестов. Прочитав статью и посмотрев наглядные примеры, вы сможете прочувствовать разницу между разнообразными видами тестов, что, в свою очередь, поможет вам грамотно составлять тесты и не перемешивать их в одной куче. Каждый тест хорош в нужном месте и в нужное время!
— mazurov


Вы порой слышите о маленьких/средних/больших/модульных/интеграционных/функциональных/сценарных тестах, но сколько из нас знают что это означает? В данной статье мой взгляд на виды тестов.

Читать дальше. Категории тестов ...
Всего голосов 34: ↑32 и ↓2+30
Комментарии36

Javascript от а и до… II

Время на прочтение7 мин
Количество просмотров11K
Вот и продолжение первой части, много времени прошло, и вот… здесь я, как и обещал, расскажу поподробней об основных типах. Для начала пара замечаний, первая часть не прошла естественно без критики, так что вступление будет 'работой над ошибками'. В дальнейшем такие работы над ошибками буду вставлять регулярно, и надеюсь хабралюди этому посодействуют…
Читать дальше →
Всего голосов 28: ↑17 и ↓11+6
Комментарии106

Один шаблон формы для всего проекта

Время на прочтение6 мин
Количество просмотров5.3K
Часто в одном проекте встречаются различные по структуре формы, где-то label элемента и сам элемент формы находятся на одной строке, где-то друг под другом, в одном случае нужна форма занимающая всю предоставленную ей ширину (например написание/редактирование статьи), в другом лишь определенную, заданную ширину (например форма регистрации/авторизации), да и внешнее оформление бывает разным.

Из за этого многие верстальщики начинают верстать каждую форму по отдельности, давая им и их элементам различные стили, тем самым усложняя работу себе и тем людям, кто будет собирать эти макеты.
Читать дальше →
Всего голосов 57: ↑48 и ↓9+39
Комментарии36

Основы IPv6

Время на прочтение11 мин
Количество просмотров128K

Предисловие


Пост является кратким конспектом Wiki, TechNet'а, FreeBSD'шного handbook'a, Serverfault'a, множества RFC и документов IANA, а также курсов от Специалист.Ру для сотрудников Яндекса.

Пост можно рассматривать как копилку ссылок по актуальной на 2012 год спецификации IPv6. Однако он никак не описывает возможные способы установки IPv6 соединения с интернетом и не привязан к какой-либо определённой ОС.
Учтите, что прочтение данной хабрастатьи займёт у вас не более получаса, однако крайне рекомендуется ознакомиться со всеми приведёнными в статье ссылками… Последнее может занять несколько недель.
Читать дальше →
Всего голосов 70: ↑68 и ↓2+66
Комментарии56

Денормализация БД. Зачем? Когда? Как?

Время на прочтение6 мин
Количество просмотров95K

денормализация — это зло, или просто надо уметь её готовить?


Денормализация- это не результат кривых рук. Это не недоделанная нормализация, это намеренное нарушение нормальных форм, для увеличения производительности.
Вопрос о денормализации у меня возникал не раз. Каждый раз, когда приходилось идти на сделку с совестью, нарушая принципы нормальных форм, оставалось ощущение неудовлетворённости, ложное осознание своей некомпетентности. Со временем, при работе в команде, обнаружилось, что это не только моя проблема. Настало время разобраться: денормализация — это зло, или просто надо уметь её готовить?
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии22

Жизненные советы от владельцев веб-студий: как повысить рентабельность и снизить риски. Часть 1

Время на прочтение6 мин
Количество просмотров12K
Каждая веб-студия имеет собственные приемы и «фишки» при работе с заказчиком, которые позволяют ей минимизировать риски при разработке интернет-проекта и снижать издержки на каждом этапе работы. По роду своей деятельности в Юмисофт я часто общаюсь с владельцами веб-студий, и вот сейчас у меня наконец дошли руки, чтобы поделиться некоторыми интересными рецептами, услышанными в неформальных беседах. Надеюсь, они будут вам полезны :)
Читать дальше →
Всего голосов 89: ↑82 и ↓7+75
Комментарии46

Блоки комментариев на css без изображений

Время на прочтение3 мин
Количество просмотров5.1K
Собственно, ничего принципиально нового или фантастического. Просто способ сделать такие вот стильные блоки без использования изображений:


Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии47

Курс молодого бойца: как ужиться с хостером

Время на прочтение5 мин
Количество просмотров1.5K
Вдохновившись очередной историей человека, который был отключен хостером за спам со своего аккаунта пишу этот пост. Основан он на рассказах знакомых клиентов, саппортов и админов, постах на форумах и страшных историях из соседних топиков.

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

Однако этот пост не о том, как засудить своего хостера. А скорее, о технической стороне таких отношений.

Итак, как не потерять свой хостинг, свои деньги и своих клиентов.

Внимание, данный пост может вызвать у вас обострение ненависти к автору, хостерам или их клиентам. Я предупредил.

Внимание #2, букв много. Да-да-да. Если вы «ниасилили», не надо сообщать эту радостную весть в комментарии.

Читать дальше →
Всего голосов 72: ↑57 и ↓15+42
Комментарии140

Пишем апплет для GNOME на Python

Время на прочтение9 мин
Количество просмотров4.8K
Публикую данный пост по просьбе уважаемого VladX, у которого возникло временное недопонимание с кармой.

Апплет — это маленькое приложение, встраиваемое непосредственно в панель GNOME. Обычно апплет выполняет какой-то опеределенный узкий функционал (изменение громкости, монтирование устройств), что выгодно отличает его от громоздкого оконного приложения. На самом деле знающему Python кодеру не составит труда написать собственный апплет, но и для незнающих есть выход: большое количество полезных (и не очень) апплетов лежит на сайте gnomefiles.org, помимо этого, на официальном сайте есть примеры написания апплетов на C.
Поехали!
Всего голосов 37: ↑34 и ↓3+31
Комментарии24

Задача о назначениях

Время на прочтение12 мин
Количество просмотров82K

Задача о наилучшем распределении некоторого числа работ между таким же числом исполнителей. При ее решении ищут оптимальное назначение из условия максимума общей производительности, которая равна сумме производительности исполнителей. Наиболее эффективным методом ее решения является венгерский метод. Задача о назначениях имеет много интерпретаций: распределение работ между механизмами, распределение целей между огневыми средствами для максимизации математического ожидания числа пораженных целей или среднего ущерба и т.д.

Give us the tools, and we will finish the job
Всего голосов 60: ↑57 и ↓3+54
Комментарии34

Типограф в FCKEditor

Время на прочтение1 мин
Количество просмотров2.7K
Пользуетесь FCKEditor и хотите чтоб ваш сайт выглядел хорошо с точки зрения типографики, но не хочется каждый раз куда-то лезть? тогда это для вас, Plugin для FCKEditor который позволяет оттипографить прямо в редакторе.

За основу моего был взят плагин http://click1.ru/book/tipograf-plagin-k-redaktoru-fck, после того как он у меня сразу не захотел работать пришлось допилить его немного ручками, в результате чего получился мой вариант этого плагина.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии25

Сервис SMS-верификации для параноиков :)

Время на прочтение2 мин
Количество просмотров40K

Введение


SMS-верификация аккаунтов становится всё популярнее. Даже либеральный Гугл требует при регистрации номер мобильника, на который будет прислан код активации. Судя по комментариям, далеко не все согласны оставлять свой номер кому попало.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии11

Финальный релиз Ext 2.0

Время на прочтение1 мин
Количество просмотров800
В прошлом многочисленные беты и кандидаты. Теперь встречаем финальный релиз одного из самых мощных JS фрейворков для разработки web-приложений – Ext 2.0. Что имеем с обновлением:
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии26

Информация

В рейтинге
Не участвует
Откуда
Владимир, Владимирская обл., Россия
Дата рождения
Зарегистрирован
Активность