Dropbox и html

Пару недель назад попробовал было зарегистрировать себе Dropbox, и с удивлением узнал, что я там уже зарегистрирован очень давно.
Восттановил старый пароль, начал пользоваться. Порадовало наличие клиентов под разные операционные системы (у меня в работе используются и MacOSX, и Android и Windows7), порадовали функции и вообще всё хорошо... пока я не попробовал расшарить html-файл. То есть я подумал,- если сервис позволяет расшаривать файлы, и вообще есть папка Public, в которой все файлы по умолчанию доступны,- почему бы не положить туда простенький сайт без движка, чиcтый HTML+CSS+JavaScript? Ан нет, не работает. Не знаю по каким причинам, но html-файлы или не отдаются вообще (ошибка 404), или отдаются, но путь к файлу совсем не такой, как хочется предполагать.

Т.е. хостинг сайта из DropBox'а сделать не получится.

Html, table, colspan и неизвестное количество столбцов

Много раз сталкивался с ситуацией, когда надо сделать ячейку таблицы, объединяющую все столбцы (например для подзаголовка группы строк или как footer для всей таблицы). Если наперёд знаешь сколько столбцов,- не проблема, есть стандартный атрибут colspan, указываешь количество объединяемых ячеек, например colspan="2", всё работает.
А если страница выводится скриптом и количество столбцов наперёд неизвестно? И нет возможности посчитать в шаблонизаторе? В последний раз такая задача возникла при использовании Django, там шаблоны очень удобные,но с математикой там туго, а писать собственный template tag или filter казалось излишеством. Выкручивался либо изменением шаблона (чтобы такое объединение ячеек вообще не было нужно) либо городил в коде дополнительный подсчёт количества столбцов, пока не надоело. А когда надоело,- полез гуглить.

Оказалось, что не я один "хочу странного", куча народу уже сталкивалась с такой-же проблемой. Пробовали писать colspan="all" или colspan="0", - не во всех браузерах работает. На stackoverflow даже народ упёрся,- и там нашлось решение,- рекомендуют писать colspan="100%".

Попробовал на доступных браузерах,- работает везде.

,

Linux в браузере

Буквально вчера (16 мая 2011 года) в интернете запустился проект jslinux (эмулятор PC с Linux на javascript в браузере) от уважаемого мужчины по имени Фабрис Беллар. Эмулятор для запуска Linux полностью написан на JavaScript. При входе на страницу отображается консоль, на которой начинается загрузка Linux с нуля до момента отображения рутовой консоли. В консоли работает куча стандартных команд, вплоть до компилятора TCC. И всё это работает прямо в браузере. Крутизна необыкновенная.

, ,

Широковещательная передача через атмосферу

Очередной первоапрельский RFC 6217: Regional Broadcast Using an Atmospheric Link Layer :-)

Предлагают использовать в качестве среды передачи атмосферу. В IPv4/6 слишком много лишних заголовков (Destination, TTL (Time to Live), DSCP (Diffserv Code Point), ECN (Explicit Congestion Notification), Hop Limits и т.д.). От этого всего можно отказаться. Оставим только необходимое:

      +-------------------------------+-----------------------------+
      |            Content            |           Source            |
      +-------------------------------+-----------------------------+

                     Рисунок 1: Формат датаграммы

Content - Поле переменной длины, содержащее инкапсулированные данные протоколов верхнего уровня,
Source - источник данных
В качестве источника могут выступать:

  • IP - адрес
  • номер телефона в формате E.123
  • IPv6 адрес в стандартной нотации (RFC 5952)
  • URI (RFC 3986)
  • географический адрес
  • и так далее...

Типичным примером использования такого вида связи может быть трансляция рекламных сообщений, типа такого:

 Content                          Source
   +------------------------------------------------------------+
   | Lobster Dinner - only $14.99    500 Boardwalk, Pt Pleasant |
   +------------------------------------------------------------+

                 Figure 2: Example ADVERT Datagram

Жгут ребята :-)

, ,

Yealink VP-2009 Keyboard Test && Factory Reset

На забугорных форумах нашёл информацию о том, что в телефоне при наборе *#5702000# включается режим Keyboard Test (ну это проверка клавиатуры по-нашему). Проверил, - действительно запускается. Такой текстово-гравический экранчик с крупными буквами, просит нажимать последовательно F1, F2 и т.д. Каждая кнопка нажимается по 2 раза, после этого переходим к следующей кнопке. Дошёл до кнопки Ok, нажал два раза,- телефон ушёл в ребут. Правильно, ведь на этом забугорном форуме было написано, что для Factory Reset'а надо дважды нажать Ok в режиме тестирования клавиатуры :-) . Вот только как проверить оставшиеся клавиши после Ok? Правильно, второй раз нажимать другую клавишу :-)

Собственно сброс забытого администраторского пароля так и происходит.

,

Подсказки в полях ввода на JQuery

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

 
function jquery_input_focus_unfocus_with_text(jquery_input,text){
	// bind focus event wrapper
	jquery_input.bind('focus', function() {
		if ($(this).val()==text){
			// remove input styles
			$(this).removeClass('hint');
			// set empty
			$(this).val('');
		}});
	// bind unfocus event wrapper
	jquery_input.bind('focusout', function() {
		if ( ! $(this).val().length>0){
			// set default text
			$(this).val(text);
			// set default input styles
			$(this).addClass('hint');
		}
	});
	// set default value
	if (jquery_input.val().length<=0 ){ jquery_input.val(text); }
	if (! jquery_input.hasClass('hint')){ jquery_input.addClass('hint') };
};
 

Остаётся навесить на нужные INPUT'ы обработчики:

 
$(document).ready(function(){
    jquery_input_focus_unfocus_with_text( $('#ajax_user'),'Фамилия, Имя' );
});
 

По-моему неплохо получилось. Начинаю любить JQuery

Softswitch class I

На форумах, где тусуются VoIP-спецы, периодически появляются непрофессионалы (такие-же как и я) и начинают троллить на тему классов софтсвичей,- чем отличается class 4 от class 5. Меня тоже беспокоит этот вопрос, иногда даже хочется об этом поговорить ;-)

Просто для памятки:

Softswitch class V — предоставляют функции работы с оконечными абонентами сети, предоставляя им транспортные услуги и дополнительные виды обслуживания (ДВО).

Softswitch class IV — предназначен для организации транзитного центра в некоторых операторских сетях. Он осуществляет маршрутизацию и распределение вызовов в IP сетях на магистральном уровне, обеспечивая транзит и перераспределение трафика, получаемого от региональных сегментов.

Про классы III, II и I интернеты расходятся во мнениях,- большинство сайтов вообще стыдливо молчат о существовании софтсвичей таких классов, кое-где, например в резюме инженеров, встречаются робкие упоминания об опыте работы с softswitch class III.

На некоторых ресурсах встречается такое объяснение классификации (больше похожее на кальку с традиционной телефонии):
class 5,- локальный узел, непосредственно взаимодействующий с абонентами.
class 4,- транзитный коммутатор
class 3,- межрегиональный коммутатор
и так далее до межконтинентальных и межпланетных и межгалактических :-)

Вообщем, однозначной трактовки нет.

Базовая станция размером с Кубик Рубика

Alcatel-Lucent анонсировал новую технологию базовых станций, кооторая может стать огромным прорывом в построении беспроводных сетей в ближайшие годы. Новая базовая станция lightRadio существенно снижает требования к размерам, стоимости и потреблению энергии. lightRadio состоит из нескольких компонент: Во-первых, вместо разрозненных антен для 2G, 3G и LTE используется одна многополосная Wideband Active Array Antenna, которая (по заявлению Alcatel-Lucent) может быть смонтирована где угодно. Во-вторых, куб lightRadio содержит усилитель и радиоподсистему в крайне маленьком корпусе, который может уместиться в одной руке. В третьих, новая технология использует архитектуру System-on-a-Chip, способную управлять трафиком независимо от того, достаточно ли ресурсов для этого (т.е. трафик может обрабатываться как самой антенной, так и в облаке). Также используется новая технология сжатия и виртуализации ПО для управления контроллерами и шлюзами. Для работы устройства требуется только электричество и широкополосное подключение к сети. Некоторые операторы (например, Verizon Wireless) получат устройство для тестирования во второй половине 2011 года.

Подробнее на сайте Alcatel-Lucent »

,

Yealink vp-2009

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

Характеристики и картинки можно посмотреть на сайте Ip.Matika, там же в разделе "Файлы" есть последняя прошивка, инструкция для пользователя и прочие нужные вещи.

Настройка автообновления VP-2009Текущая версия прошивки в исполнении Мегафона помимо русификации содержит ещё и кнопку для переключения режима приёма входящих для Мультифона. Переключение работает только для одного аккаунта Мультифон, и этот аккаунт должен быть первым в списке настроенных. Прошивку можно получить, настроив автообновление в веб-интерфейсе (вкладка Upgrade -> Advanced)

, , ,

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

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

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

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

, ,