Как стать автором
Обновить

Пряник для пользователей правильных браузеров

Разработка веб-сайтов *
Объясняя однажды преимущества таких браузеров, как firefox и opera перед всеми любимым IE, я осознал насколько не очевидны их преимущества при рассказе о них.

  • Табы большинство пользователей воспринимают как нечто заумное — они привыкли переключаться между окнами, ища нужное внизу на панельке. У многих она для этого специально делается двойной а то и тройной ширины.
  • Обработка полупрозрачных PNG для нормальных людей звучит вообще как страшное шаманское заклинание. И конечным потребителям, в итоге, глубоко плевать, насколько на сайте сделана честная полупрозрачность и на скольких костылях она держится. Это целиком проблемы вебмастеров. Юзерам о них можно даже не упоминать.
  • CSS 3 уровня непонятен пользователям точно так-же как и полупрозрачность в картинках — они с этим не сталкиваются и им все равно.
  • Проверка орфографии понятна уже многим. Несмотря на то, что обычно в качестве аргумента приводят проверку орфографии в ворде, расстановку им заглавных букв и прочие мелочи, простые пользователи даже сами замечают различия между IE и другими браузерами — у меня было несколько вопросов, мол почему дома и на-работе ВКонтакт выглядит по-разному.
  • Быстродействие особенно актуально для пользователей рискнувших перейти на IE7 — разница в скорости ощущается невооруженным взглядом. Обычно такие пользователи быстро откатываются на IE6, но достаточно серьезным аргументов для них будет упоминание о дате выпуска IE6 — многих это подталкивает к переходу на более новые браузеры.

Во всем этом списке нет ни одного железного аргумента для простого пользователя, чтобы уйти с IE6. Для разработчиков, стремящихся использовать новые возможности браузеров, это большая проблема. Но кого она волнует кроме них? Поэтому проводятся всевозможные акции из серии «Заблокируй для IE доступ на свой сайт», которые приносят какой-то эффект, но этого явно недостаточно. Я хочу предложить еще один способ для ослабления позиций «самого любимого» браузера, который кардинально отличается от подобных акций.


Читать дальше на хабре
Всего голосов 83: ↑74 и ↓9 +65
Просмотры 2.1K
Комментарии 176

ХабраБаги

Habr
Уже давно заметил ряд багов, ну думал, что их со временем найдут и исправят, но тошло до точки кипения, вобщем надоело использовать костыли и решил озвучить…

1. Текст внутри тега <code>:
  • надоело менять все < на & lt;
  • пробелы и отступы менять на череду & nbsp;
  • все, что содержит http:// или www заменяется на ссылку — оно тут надо?
неужели нельзя текст внутри этого тега перевести в HTML сущности?

2. На странице профиля нет кнопки написать пост! Для этого нужно выйти на главную или зайти в какой-то блог… Нельзя ли продублировать ссылку на создание поста в разделе «Моё»?

3. Под Linux не работает загрузка аватаров и фоток, приходиться ручками отключать в браузере JavaScript, чтоб загрузить аватарку…

4. Еще странным образом падающая иногда без причин карма с 15 до 2 на сл. день и т.п.

Вобщем вот такие вот костыли, которые частенько бесят и отбивают настроение, что-то постить…
Всего голосов 32: ↑18 и ↓14 +4
Просмотры 351
Комментарии 8

Пара слов о Debian на Asus C90s и наглядное пособие по runlevel'ам для новичков

Чулан
В Debian Lenny на моём ноутбуке практически всё работает «из коробки». Но существует несколько досадных мелочей, об исправлении которых я расскажу.

Начну с того, что существует баг, мешающий нормальной работе с wi-fi на ноутбуках Asus C90s (возможно, что и на некоторых других) с карточкой Intel PRO/Wireless 3945ABG. Суть в том, что через interfaces вафля работает, но если она в этом файле не упомянута, либо не произошло соединения, то wi-fi отваливается напрочь, и поднять его обычными способами не получается. Невозможно использовать network-manager, wicd подключает нестабильно, сильно осложняется работа.
Я с довольно большим трудом нашёл информацию по проблеме, и этот пост — попытка помочь товарищам по несчастью.

Итак, мы имеем отрубающийся при загрузке вайфай, dmesg выводит
iwl3945: Radio disabled by HW RF Kill switch
Alt+F2 не работает, хардварных переключателей на ноутбуке нет.

Решение

Оно оказалось несложным:
$ echo 1 > /sys/devices/platform/asus-laptop/wlan
После этого адаптер сразу включился, о чём сигнализировал загоревшийся светодиод. Но как сделать, чтобы этот костыль работал автоматом?

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 395
Комментарии 2

Костыли при верстке рассылок

Блог компании UniSender CSS *Верстка писем *
Привет, %username%!

Я рад, что мои предыдушие топики о верстке рассылок оказались тебе полезны. Если я прав, то хотел бы рассказать еще и о костылях при верстке, которые были выявлены мною при сотрудничестве с коллегами из Unisender. Так же я позволю себе пару раз повториться, по той простой причине, что этот топик будет являть собой шпаргалку для костыльмейкера верстки рассылок. Велкам под кат.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 13K
Комментарии 12

Свидетельство подлинности вашей Ubuntu, или Linux по-украински

Open source *


Уважаемые Хабравчане, моё внимание привлекла услуга компании UALinux которая является, по заявлению на сайте, единственным сертифицированным партнёром по распространению и поддержке Ubuntu на территории стран СНГ.
Да, официальный партнёр и поддержка — это всё замечательно, но…
Читать дальше →
Всего голосов 116: ↑98 и ↓18 +80
Просмотры 8.6K
Комментарии 239

Разделители (сепараторы) для панели закладок Chrome

Google Chrome
Внезапно осознал, что именно этого так не хватает после перехода с ff на хром, пощелкал менюшкой — не нашел ничего похожего, но не расстроился, а набрал в гугле «chrome favorites bar separator» и по первой же ссылке обнаружил фичреквест, начатый довольно давно… И в нем нашлись достойные люди, которые тут же придумали и реализовали решения самостоятельно!

1. scoobo.com/separator — собственно, сам сепаратор. Костыль, конечно, но работает.



2. separatethis.com — горизонтальный разделитель внутри папки, тоже может оказаться полезным.

Попробуйте, если вы на хроме, вдруг это то, что вам надо.
Всего голосов 41: ↑30 и ↓11 +19
Просмотры 5.2K
Комментарии 9

Watchdog для репликации в PostgreSQL 9

PostgreSQL *
Приветствую. Хочу поделиться одним самописным костылём, авось кому-нибудь будет полезен.

Коротко о главном


Моделируем ситуацию: есть кластер PostgreSQL-серверов — мастер и n-реплик. Наступает черный день и одна(или несколько) реплик падает. Причины неважны — сдохла железка, уборщица перебила шваброй провод или НЛО временно зохавало серверную. Итог один — если реплика долго лежала, то сама она уже никогда не нагонится.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 3.5K
Комментарии 8

Ошибка склеивания нескольких Set-Cookie применительно к urllib2/mechanize и её исправление (для Python)

Google App Engine *
Возможно, кто-то из читателей сталкивался с этой проблемой. В багтрекере GAE она уже давно висит в виде незакрытого Issue 3379. Кажется, изначально проблема касалась только Java, но сейчас она наблюдается и в Python (по крайней мере в 2.7). Описание ошибки и решение для Java можно найти, например, там, а в этом топике речь пойдёт про Python.

Коротко о сути. Часто сайты пытаются установить более одной cookie за раз. Делают они это путём указания нескольких заголовков Set-Cookie в ответе на запрос. По странному ведёт себя в этом случае urlfetch (и базирующиеся на нём urllib/urllib2): все эти заголовки склеиваются в один и разделяются запятыми. Надо ли напоминать, что запятые также присутствуют в полях expiries, а порой и в самих значениях cookie, что очень затрудняет обратный разбор такой строки. А стандартный HTTPCookieProcessor из urllib2 и mechanize просто не справляется с такой ситуацией.

Итак, если ваш проект использует поддержку cookies «из коробки» в urllib2 или mechanize, то вам безусловно подойдёт
следующее простое решение.
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 1.8K
Комментарии 2

SkypeTab неделю спустя + негодования в адрес Unity пост

Мессенджеры *
Если вы не пользуетесь скайпом для линукса, можете сразу ткнуть сюда и посмотреть на батнегодование.
Для тех, кто не в курсе, что это за SkypeTab такой, поясняю: штука, упаковывающая то недоразумение, что нам подсунули вместо нормального интерфейса, в нечто удобоваримое. Подробнее см. видео и предыдущий пост.

За прошедшую неделю были произведены следующие изменения:
  1. Достигнута совместимость с Unity
  2. Достигнута совместимость с kwin и, похоже, со всеми остальными оконными менеджерами (этот ваш awesome почему-то не хочет разворачивать окно во весь экран, но, думаю, его можно донастроить как надо).
  3. Потеряна и вновь возвращена (спасибо тов. Restorer за то, что нашёл корень проблемы и предоставил фикс) совместимость с Gentoo
  4. Решён ряд проблем, связанных с фокусом ввода
  5. Добавлено переключение табов по Ctrl+Tab/PgDown/PgUp
  6. Добавлена возможность выбрать, какие типы окон встраивать во вкладки
  7. Устранено «мерцание» при открытии новой вкладки
  8. Исправлена тянущаяся ещё с прошлогодних версий проблема производительности, связанная с тем, что статус наличия новых сообщений проверялся опросом X-сервера на предмет _WM_NET_NAME и проверкой наличия * в начале (на третий день Зоркий Глаз увидел, что у сарая нет стены QWidget есть isWindowModified)
Скачать бесплатно без регистрации и без СМС
Всего голосов 87: ↑79 и ↓8 +71
Просмотры 4K
Комментарии 64

Сетевое обращение к библиотекам и рантайм-формирование вызовов функций

Ненормальное программирование *
Хочу поделиться историей из профессиональной деятельности, которую можно заслуженно поместить в блог с именем crazydev :) Это рассказ о необычных решениях (тех, что я попытался описать в двух словах в заголовке), к которым меня вынудили прийти еще более необычные ограничения и требования.


И вот как-то так, через хитро закрученную ***у, оно и работает ©
Читать дальше →
Всего голосов 40: ↑35 и ↓5 +30
Просмотры 1.2K
Комментарии 12

Прикручиваем Head Up Display к MonoDevelop или о том, как криво сделано глобальное меню в Ubuntu

Mono и Moonlight *


Проблема с неработоспособностью HUD в MonoDevelop уходит корнями в старый баг, вызванный переходом на глобальное меню и заключавшийся в том, что менюшки у MonoDevelop не показывалось вообще никакой. Его "починили", выключив использование глобального меню как такового. Это же так просто, не фиксить проблему в своей кривой либе, а сделать чёрный список приложений.
Тяга к экономии пикселей и желание таки прикрутить HUD взяли своё. Целых два часа моего драгоценного времени, несколько костылей и всё таки завелось.

Небольшой экскурс в работу глобального меню: оно экспортируется приложением через D-Bus, а чтобы разработчики не писали дополнительный код, в Canonical наклепали хитровывернутых библиотек, берущих нормальное, человеческое меню оконного тулкита и экспортирующие его за разработчика, причём, как выяснилось, весьма криво, но об этом потом. При этом возможности вручную экспортнуть это меню нет. Точнее, есть какая-то мутная библиотечка с названием libdbusmenu и полным отсутствием хоть какой-то документации, не говоря уже о биндингах к чему-либо. Этакая проприетарщина наоборот — код открыт, но использовать его толком нельзя ввиду невозможности быстро понять, как с этим вообще работать. Таким образом реализовать в GnomePlatform.cs метод SetGlobalMenu (предусмотренный специально для систем с глобальным меню и реализованный в MacPlatform.cs) не представляется возможным, что ж, придётся разбираться с тем, почему не работает костыль с экспортилкой и придумывать свои костыли, чтобы оно заработало. Я такими извращениями не занимался со времён, когда нужно было заставить работать Навител на разнокалиберных китайских железках с изувеченной до неузнаваемости WinCE 4.2.

Читать дальше →
Всего голосов 35: ↑31 и ↓4 +27
Просмотры 2K
Комментарии 19

RichFaces 3.0, Формирование и выгрузка файла, jQuery и Костыли

JavaScript *Java *
Из песочницы


Приветствую, дорогой читатель! В данной статье я хотел изложить одну проблему, с которой я столкнулся при разработке, а также способ ее решения. Решение конечно не самое безупречное, но имеет место быть. Если вам что-то не понравиться, или вы знаете решение лучше, прошу большими огурцами меня не бить, так как я еще мал и зелен. Бейте маленькими с комментариями и поучениями.

Задача в следующем: у нас есть система, в которой есть страница на которой отображена некоторая отчетность. Там необходимо реализовать формирование Excel файла и выгрузку его для пользователя.
Читать дальше →
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 1K
Комментарии 2

MODX Revolution — пара костылей для необычных ситуаций

Разработка веб-сайтов *PHP *MODX *
MODX конечно крутая CMF, но порой сталиваешся с такими мелочами, которые напрягают. Я не буду в этом топике плакаться какие все вокруг плохие, а я такой хороший. Возьмем, например, ветку Revolution и препарируем ее. А чтобы вы не потеряли интерес к этой заметке, вот небольшой план статьи:
  1. Разбор бэкенда
  2. Углубление в настройки
  3. Работа с вложенными чанками
  4. Наблюдаем за работой парсера
  5. Мощный кеш

Итак, все, кому стало интересно прошу под кат.
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 21K
Комментарии 14

Как завести драйвера для старых карт Mobility Radeon на Windows 8

Видеокарты
Относительно недавно AMD выпустила специальный пакет драйверов для Windows 8, AMD Catalyst Legacy 12.6 (ссылка на новость на сайте AMD), но на ноутбуке с Mobility Radeon HD 3400 он не заработал (это не значит, что он обязательно не заработает у вас — проверьте его прежде, чем приступать к процедуре, описанной в этом топике).

Побывав на сайте, я обнаружил, что в секции старых мобильных карт Windows 8 не упоминается вообще. Можно завести драйвер для Windows 7. Нужен ли он вам вообще, этот драйвер от производителя, если в восьмерке есть встроенный, который довольно неплохо работает — решать вам. Но сразу скажу, Catalyst Control Center (графическая утилита для настройки) может не заработать, увы и ах. Как завести драйвер для Windows 7 я расскажу под катом.
Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 40K
Комментарии 28

16 сентября Paypal позволит выводить средства на российские счета. И чем это грозит?

Управление e-commerce *
Добрый день.

О том, что Paypal скоро откроется в России, давно не новость.
О том, что Paypal 16 сентября добавит возможность вывода средств в российские банки и остальные изменения, пару дней назад стало возможно прочитать в официальном F.A.Q. у них на сайте.

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

Подробнее о подводных камнях российского Paypal, под катом:
Читать дальше →
Всего голосов 64: ↑58 и ↓6 +52
Просмотры 53K
Комментарии 142

Готовим web-приложение под зоопарк версий Android

Разработка под Android *
Совсем недавно и достаточно неожиданно для самого себя я оказался ответственным за разработку программки для Android. Но ни под Android, ни вообще на Java мне ранее писать не приходилось. Нужно было сделать web-приложение, вроде phonegap и прочих, которое почти полностью работает в компоненте браузера. И все это под версии 2.2 — 4.3 (SDK 8 — 18).

О некоторых выкрутасах Android и костылях под них с точки зрения человека, впервые это все увидевшего, я и хотел бы рассказать. Надеюсь, вышло без HelloWorld, «OMG! Java», и т.п.

Поворот экрана/смена ориентации
Network unreachable
Грузим локальные ресурсы
Мост между Java и JavaScript

Самое интересное с последним пунктом
Всего голосов 33: ↑26 и ↓7 +19
Просмотры 27K
Комментарии 16

Разблокировка экрана Android с помощью NFC

Разработка под Android *
Для защиты от несанкционированного доступа к своему Nexus 4 я использую стандартную блокировку экрана с паролем. Но пароль приходится постоянно вводить вручную, а это немного напрягает. Блокировка с помощью графического ключа меня не впечатлила, так же как и PIN-код (слишком мало возможных комбинаций). Хотелось сильную защиту, с сохранением скорости разблокировки. Именно по этой причине я решил присмотреться к технологии NFC.
Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Просмотры 55K
Комментарии 37

Мой опыт работы с Webrtc

JavaScript *Asterisk *Разработка систем связи *
Привет, хабралюди

В этом топике я хочу рассказать вам о моем опыте работы с SIP телефонией через webrtc. Рассказать о том, с какими проблемами встречался, какой софт я пробовал, какие костыли писал :).

Что было использовано:


  • Asterisk 11.5.1
  • GSM шлюз
  • SipML5

Читать дальше →
Всего голосов 10: ↑6 и ↓4 +2
Просмотры 14K
Комментарии 7

Polyfill для обхода проблемы с браузерным автозаполнением форм

JavaScript *Angular *
Год назад в репозитории AngularJS был создан issue #1460 «Form model doesn't update on autocomplete».

Браузер, при автозаполнении формы ранее сохраненными данными (например, вводим email — браузер заполняет пароль автоматически) никак не извещает javascript о новых данных в поле.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Просмотры 8.8K
Комментарии 11

Knork: простейшая альтернатива ButterKnife в 160 строк кода

Разработка мобильных приложений *Разработка под Android *
Хабрапривет!

Ниже речь пойдет о view injection, костылестроении, аннотациях, рефлексии, о жалкой попытке превзойти Джейка Уортона и о том, что свой велосипед ближе к телу.

Что же такое view injection? Это способ избежать вот такого рутинного кода:

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // ...
  }
});


Если использовать view injection с помощью, скажем, ButterKnife, написанного Джейком Уортоном (Jake Wharton), то код становится прозрачнее:

@InjectView(R.id.button) Button mButton;

@OnClick(R.id.button)
public void onButtonClick() {
  // ...
}


Но при ближайшем рассмотрении оказывается, что и ButterKnife не идеален.
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Просмотры 11K
Комментарии 15
1