Показаны сообщения с ярлыком Статьи. Показать все сообщения
Показаны сообщения с ярлыком Статьи. Показать все сообщения

Подсказки в полях ввода - реализация placeholder на JQuery

Понадобилось сделать небольшую обёртку для полей ввода в HTML, чтобы по умолчанию в пустом поле стоял текст подсказки (ну например, "введите номер телефона"), при входе в поле строка очищалась, при выходе и пустом значении подсказка возвращалась, а если что-то введено,- значение оставалось.
Написал коротенькую функцию на javascript с использованием библиотеки JQuery. На вход подаётся объект JQuery и строка для подсказки, текст подсказки устанавливается в поле и применяется CSS класс "hint" для оформления подсказки.


Yealink vp-2009

Тестирую новую железку SIP видеотелефон Yealink-2009 в связке с Мультифоном. Мегафон показал железку сначала на экспокоме, а потом девайс засветился в новостном ролике на канале "Россия 24" про Мультифон, и дальше мелькал ещё несколько раз в разных новостях:

XLWT - создание Excel в Python

Очередной квест про программирование на Python,- помимо потребности прочитать Excel из Python появилась необходимость создать файл Microsoft Excel. Оказалось, что для xlrd (чтение Excel) существует парный пакет xlwt,- для создания файлов. Пакет позволяет создавать файлы с несколькими вкладками (sheet), применять форматирование в ячейках, вставлять формулы и кучу других полезных вещей. Поддержка кодировок на уровне, для русского языка достаточно при инициализации файла (книги, workbook) указать требуемую кодировку:

book = xlwt.Workbook(encoding='cp1251')

Все строки будут прозрачно перекодированы при записи в ячейки, если, конечно, вы пишете на python в UTF-8.

Qt4: декомпиляция файла ресурсов rcc

Некоторое время ковырял файл ресурсов, получаемого с помощью компилятора ресурсов rcc (Qt4). При помощи исходников компилятора удалось восстановил для себя структуру файла, может быть кому-то понадобится.

Анимированный GIF для Ajax

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


  • AjaxLoad.info. Простенький, но шустрый сервис, для выбора есть пара десятковразличных индикаторов и возможность настройки цвета


  • loadInfo.net. Ещё одна вариация на тему, красивый, хотя и мрачноватый сайт, выбор тоже небольшой, есть возможность настройки цветов и выбор размеров (16x16, 24x24, 48x48).


  • preLoaders.net. Самый функциональный сайт, несколько типов картинок (горизонтальные, круговые, трёхмерные), есть возможность настройки цвета, настройки скорости анимации. Размеры рисунка можно выбирать произвольные. Сделано в России.


Пользуйтесь на здоровье!

ef bb bf - ползёт разметка в Django

Столкнулся с необъяснимым на первый взгляд явлением,- на одной из страниц Django'вского приложения необъяснимо разваливалась разметка страницы. Только на одной. Смотрю исходник страницы,- на первый взгляд всё в порядке, только какая-то чёрточка странная и посторонняя в самом начале HTML кода. Причём эта самая необъяснимая чёрточка видна далеко не во всех редакторах. В попытке вяснить причину добрался аж до просмотра в HEX,- оказалось, что там целые 3 байта EF BB BF, а не чёрточка. Остальное дело техники: эти байты,- признак ByteOrderMark. Осталось просмотреть все шаблоны, из которых генерируется страница, поскольку BOM может быть в любом из файлов, даже вложенном. У меня оказалось, что BOM присутствует в файле шаблона аж на третьем уровне вложенности шаблонов. Не забывайте проверять, в каком формате сохраняете файлы

RSS устарел?

Всё чаще и чаще в последнее время вижу и слышу предложения "следить за новостями в твиттере". RSS, толком не успев набрать сок, умирает. От него просто все отвернулись,- устарел и перестал быть нужным.

Как Skype зарабатывает деньги

Проверив импорт контактов из Outlook в Skype, обнаружил одну маленькую, но неприятную особенность,- импортированные из Outlook контакты невозможно удалить. То есть, все эти контакты с мобильными и городскими номерами будут болтаться у меня в списке вечно. Будут деньги на счету,- можно будет позвонить. Не будет,- будут мешаться. А удалить не могу. Вот так,- заработок денег в ущерб юзабилити.

Внешние скрипты для проекта Django

Несколько раз сталкивался с ситуацией, когда удобнее использовать скрипт вне методов проекта models-views. При этом хочется использовать объявленные в models классы. При написании такого скрипта "в лоб", пытливый программисткий ум обычно лицезреет ошибку:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

Простой и не всегда удобный вариант,- добавить DJANGO_SETTINGS_MODULE в переменные окружения командной строки (умолчания для cmd.exe,- если в Windows или export в Linux\Unix). Ещё более короткий и переносимый способ,- сделать всё необходимое непосредственно в скрипте:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'

Имя myapp.settings,- это если скрипт лежит в папке на уровень выше, чем myapp/settings. Если в той-же папке,- то будет просто settings

Отголоски чужой рекламы

На прошлой неделе началась реклама Мультифона по телевизору,- на сайте резко скакнула вверх посещаемость.
Большинство посетителей пришли из поисковиков по запросу "мультифон скачать". Надо сказать, что ролик у Мегафона получился вполне достойный:


А скачать Мультифон можно на официальном сайте www.multifon.ru на странице "Скачать"

Метод как свойство объекта в Python


Всё-таки Python красивый язык. Свойство объекта может быть определено как специальный метод экземпляра объекта. Практически это позволяет обращаться к свойству как по имени, так и с помощью метода (getter или setter, или и то и другое в зависимости от операции). Кроме того, такие обращения к методу позволяют при получении и установке свойств выполнять дополнительные операции, например изменять счётчик обращений к свойству объекта.

API к Я.ру

 Сначала вКонтакте открывает XMPP, теперь вот Яндекс запустил бету API к Я.ру. Гораздо интереснее не сама новость, а рассказ Ивана Сагалаева о том, как всё это делалось и устроено внутри. API сделано в соответствии с идеологией REST. Помимо собственно API сделан также сервис OAuth-авторизации для этого и других API Яндекса. В блоге яндекса есть даже пример кода на Python, реализующий смену настроения пользователя.

Возникает такое ощущение, что рунет начинает потихонечку обрастать такими сервисами, позволяющими интегрироваться друг-в-друга с применением общедоступных API, и это есть хорошо.

Отладка в GAE (Python)

При разработке приложения GAE (Google Application Engine) на Python часто возникает потребность в выводе отладочной информации. Вдумчивое изучение документации показало, что надо использовать стандартный модуль logging, как описано в документации GAE. Вывод отладочных сообщений осуществляется с помощью функций info(), debug() и т.д. Отладочные сообщения выводятся в консоль запущенного dev_appserver. Отладка в опубликованном приложении может быть просмотрена в консоли администрирования.

Yeaphone - USB-трубки Yealink (SkypeMate) под Linux

По наводке с хабра наткнулся на сайт Thomas Reitmayr со страницами Yeaphone. По словам автора, основная цель проекта,- создать интерфейс взаимодействия с USB-трубками Yealink (USB-P1K / P1KH / P4K) для Linphone, чтобы монитор и клавиатура были больше не нужны. Это позволит использовать трубки во встроенных системах (Embedded Device). В качестве основного устройства автор использует Linksys NSLU2 с альтернативной прошивкой, делающей железку полноценным линуксом. В добавок ко всему, автор предлагает использовать трубку совместно с Asterisk со всеми его расширениями, автоответчиками, планами нумерации и прочими полезняшками.

Потенциально на такой связке можно построить собственную небольшую АТС-ку размером с базу для DECT-овской трубки.

На танке по бритве Оккама

Лезвие бритвыМногие знают про бритву Оккама,- принцип "Не умножайте сущности без крайней необходимости". Компьютерщикам и программистам этот принцип может быть знаком по другой аббревиатуре,- KISS (Keep It Simple, Stupid) - "Сделай это проще, дурачок". На языке теории информации этот принцип может быть сформулирован как "самым точным сообщением является сообщение минимальной длины".

А в теории человеческой глупости есть ещё один режущий инструмент,- Бритва Хэнлона. Это тоже методология, суть которой можно кратко описать словами «Не приписывайте умысла тому, что может быть объяснено глупостью»". Применительно к программированию,- это индусский быдлокод, или поделия начинающих программистов на PHP, словом всё то, что заставляет иногда вырваться восклицанию WTF?.

История IT, да и вообще история человечества,- это история борьбы с человеческой глупостью

Интерпретатор C++

Иногда, когда пишешь на C (С++), бывают такие ситуации, что скорость разработки гораздо важнее скорости выполнения программы. В таком случае вместо постоянной компиляции и линковки выгоднее использовать интерпретатор С (С++). Язык С традиционно считается компилируемым, но, тем не менее, интерпретатор для него существует. И даже не один, встречайте:

Поисковик Cuil

UP: 2014 год на дворе, домен не существует больше. Умерла поисковая система. В мае 2010 года я про неё писал:

В логах апача обнаружился бот незнакомой доселе поисковой системы Cuil. Сами про себя говорят примерно следующее:
Обычно в ответ на запрос пользователя поисковые системы возвращают список ссылок. Cpedia предлагает другой путь:
Для людей естественный способ получения информации,- это отчёт, краткая выдержка по теме. Текущий вариант посиковой выдачи (в других поисковиках) больше похож на получение списка литературы, чем на получение ответа.
Cpedia для каждого запроса суммирует и разбивает по категориям идеи в сети и использует полученные данные для создания выборки. Мы делаем тщательную фильтрацию повторений для того, чтобы предоставить только уникальный контент. Также, как Wikipedia использует навыки множества людей для редактирования одной статьи, мы объёдиняем все документы, описывающие одну тему в сети, в один ответ.
Очень напоминает некогда инновационную, а теперь совсем умершую поисковую систему C4 TOTAL SEARCH (по старому адресу www.c4.com теперь вообще паркинг) или 37.com, превратившуюся из некогда интересного стартапа, в примитивную помойку-дорвей.

Ищет даже по русски, хотя с русскими шрифтами на сайте беда.


Мультифон: настройка входящих вызовов

Тем, кто пользуется альтернативными клиентами для Мультифона, узнать режим приёма входящих звонков или изменить входящую маршрутизацию можно с помощью обычного браузера (или HTTPs запроса, например с помощью wget)
Предположим, что ваш номер телефона — 79261234567, а пароль — aaaBBB

Серии рекомендаций ITU-T

Правильному IT-шнику надо учить матчасть. Помимо IETF, известной специалистам по множеству документов RFC существует Международный Институт Электросвязи (International Telecommunication Union). ITU является ведущим учреждением Организации Объединенных Наций в области информационно-коммуникационных технологий. Роль МСЭ, как всемирного координационного центра для органов государственного управления и частного сектора, состоит в том, чтобы помогать миру общаться, и осуществляется в виде деятельности трех основных секторов: радиосвязи, стандартизации и развития. Деятельность МСЭ по разработке стандартов (Сектор стандартизации электросвязи ITU-T) является самым известным и самым давним видом его деятельности.

Мониторинг запросов к DNS-серверу

Для быстрого мониторинга запросов к DNS_серверу можно воспользоваться простым скриптом
tcpdump -n -i fxp0 -c 20 dst port 53
где fxp0 - интерфейс, на котором снимается трафик, 20,- количество пакетов для перехвата.
Необходимые опции можно узнать в man tcpdump. Там-же можно узнать о формате вывода запросов DNS:

If a query contains an answer, nameserver, or authorative section, ancount,
nscount, or arcount are printed as [na], [nn], or [nau], where 'n' is the
appropriate count.


Это позволяет показать только нужные записи, например запросы клиентов в два столбца: "IP-адрес клиента" и "запрошенный адрес", исключая запросы PTR:

tcpdump -n -i fxp0 -c 20 dst port 53 | grep -v '1au' | grep -v ".in-addr.arpa." | awk '{ print $3,$8};'