2008-06-20

Как проставить неразрывный пробел ( ) с использованием document.createTextNode

Долгое время не получалось при работе со структурой документа использовать спец символы типа   - если пишешь что-то типа document.createTextNode('&nbps') то получается не неразрывный пробел а его html представление поэтому приходилось присваивать свойство innerHTML вместо того чтобы оставаться в рамках модели XML DOM что не очень то красиво.

Просто createTextNode не понимает html разметки, ему нужно скармливать символы как они есть без использования html замен, но вот беда, на клавиатуре у нас нет неразрывного пробела - есть только обычный. Оказывается набрать неразрывный пробел можно на клавиатуре - подсказка в виндовой таблице символов - нажимаем alt и не отпуская набираем на дополнительной клавиатуре 0160 (в режиме Num Lock), отпускаем alt - появляется пробел - но это не обычный пробел а самый что не на есть неразрывный, html код которого и есть   его можно вставлять в createTextNode без проблем.

 

Оставить комментарий

 
  2008-06-19

Private методы и свойства в JavaScript

Наткнулся на замечательную статью про то как в JavaScript можно создавать приватные методы и свойства для объектов. Никогда не задумывался над этим под таким углом, но вещь несомненно очень интересная.
 

Оставить комментарий

 
  2008-06-06

Приятный текстовый редактор

Eclipse всем хорош, но иногда нужно что-то, что не требовательно к ресурсам, написанное не на на яве на на чем нибудь более вменяемом. Поэтому я давно ищу такое решение - самый лучший вариант для разработчика (написанный на Си/Си++) это конечно HomeSite - для меня во всяком случае. Однако он стоит денег, хотя и не слишком больших.

Сегодня наткнулся на интересный редактор Scintilla Text Editor - http://www.scintilla.org. Из достоинств мне понравилось наличие поддержки огромного количества языков, опенсорс/GTK+, есть версии под Windows, MacOS, Linux , есть вкладки, вобщем замечательная штука. Не хватает наличия файлового дерева, но это уже моя привередливость, думаю вполне можно обойтись виндовым эксплорером при желании, ведь для чего-то он нужен на компьютере...

 

Оставить комментарий

 
  2008-06-05

onReady

Сегодня клиенты пожаловались что если что нибудь на странице не загрузилось то не работатет часть JavaScript'овского функционала - конкретно у них не сработала загрузка видео с ютуба - чето последнее время у них не быстро там все работает. Просто основная логика на странице подключается с использованием события onLoad - в принципе штука не обязательная в человечьих браузерах, но вот в Эксплорере при попытки поменять что либо до этого события возникает очень плохая ошибка.

Беда в том что onLoad возникает когда все изображения и все связные документы подгружены и если например одно из изображения подгружается с другого сервера, который умер, то ждать этого события придется довольно долго иногда несколько минут, и были случаи что событие так и не наступало...

Оказывается вносить изменения в объектную модель браузера можно и до возникновения события onLoad, т.е. когда не все изображения еще подгружены

ниже привожу функцию для отслеживания момента когда в браузере становится возможным вносить изменения в объектную модель документа. Идея позаимствована из JQuery

/** * faster way to load content in browser idea taken frin JQuery * this allows do not wait until data will be completely loaded * seems only opera can allow load faster using this function - * though in JQuery they say it's supported... */ //alert(document.addEventListener); function bindReady(){ if ( bindReady.readyBound ) return; bindReady.readyBound = true; if (document.addEventListener){ document.addEventListener( "DOMContentLoaded", bindReady.ready, false ); } // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event // If IE is used and is not in a frame // Continually check to see if the document is ready if ( Object.isIE && window == top ) (function(){ if (bindReady.isReady) return; try { // If IE is used, use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ document.documentElement.doScroll("left"); } catch( error ) { setTimeout( arguments.callee, 0 ); return; } // and execute any waiting functions bindReady.ready(); })(); if ( Object.isSafari || Object.isOpera ) { var numStyles; (function(){ if (bindReady.isReady) return; if ( document.readyState != "loaded" && document.readyState != "complete" ) { setTimeout( arguments.callee, 0 ); return; } bindReady.ready(); })(); } } bindReady.readyBound = false; bindReady.isReady = false; bindReady.ready = function(){ bindReady.isReady = true; var i; for (i=0;i

Тестировал в IE6/IE7, Safari, Opera, FF. Не нравится только как работает в Опере - там скрипт срабатывает позже onLoad, в остальных браузерах гораздо раньше

 

Оставить комментарий

 
  2008-06-04

Вредные советы вебмастерам

1. Побольше используйте стилей с именами style1, style2, style3... и не нужно проверять существуют ли такие стили в каскадной таблице - результат может оказаться даже лучше чем вы его представляли - так оно даже интересней. Человеческие имена стилей - удел ламеров и юзеров, нормальные пацаны с компьютером на ты и всегда могут отличить стиль style13 от style12. Побольше стилей с такими именами!

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

3. Побольше вложенных таблиц! Это просто праздник когда много таблиц вложены одна в другую! Не беда что в большинстве случаев можно обойтись вообще без них, давайте таблиц и побольше!

4. Одиночные теги закрывать не нужно, что мы не знаем что они одиночные что ли...

5. Стили Вайтсмита и Кернигана-Ричи - отстой, будем использовать все сразу и отступы делать как придется - тот кто будет после нас переделывать переформатирует так как ему нравится если такой дотошный...

 

Коментариев: 4

 
  2008-05-22

Jabber

Встала задача сделать небольшой такой чат для сайта - обнаружилась аба-а-а-а-лденная штука, называется OpenFire сервер для работы со службами мгновенных сообщений. В отличие от других аналогичных решений на моей машине развернулся в два счета. Написан на джаве, на том же сайте нашел исходники для Flash некоего тулкита для создания своих решения на ActionScript, что-то в структуре файлов мне показалось знакомым. И тут то я пережил культурный шок - оказывается можно создавать флешки на еклипсе без всяких там дополнительных приложиний от Макромедии. Как? здесь подробное описание как скачать и настроить Eclipse и создать Hello World приложение...
 

Оставить комментарий

 
  2008-05-14

Техосмотр

Интересно, в нашей стране все что связано с оформлением всевозможных документов действительно сделано так чтобы сделать процесс максимально долгим, неудобным, геморройным, так чтобы захотелось заплатить кому-нибудь чтобы сразу все стало легко и быстро?

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

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

Чтобы получить права - a я недавно продлял свои старые - которые по истечении десяти лет подлежат замене. Для этого нужно всего лишь прийти к восьми утра в МРЭО ГИБДД и тогда часам к пяти вечера можно получить свои вожделенные новые корочки. При этом, если в конторе совершенно случайно работает твой бывший одногрупник, с которым вместе учились в институте - то процедура запросто умещается в тридцать минут!

А вы когда нибудь видели людей которые чесно проходят технический осмотр автомобиля? Я еще удивлялся почему таких людей исчезающе мало. Нужно будет поместить на сайт мою фотографию, чтобы вы могли увидеть первого такого человека, этот человек - я. Да я сегодня прошел технический осмотр. Что для этого нужно? Да сущие пустяки, перво-наперво нужно съездить в ЕДИНСТВЕННУЮ в городе сберкассу, где принимаю госпошлину за технический осмотр - это рядом с МРЭО на выезде из города - если приехать часам к восьми утра то можно даже быть первым в очереди. Очереди там обычно знатные, так как это единственная в городе сберкасса где принимаются такие платежи. Почему нельзя заплатить в любом отделении любого банка большая загадка, ведь для этого банки у нас вроде и существуют...

Шаг второй: нужно приехать к месту прохождения техосмотра - как правило это место привязывается к району - вот у меня например район Кировский а следовательно техосмотр проходится гдето на ебенях на другом конце города в Ленинском районе, чувстуете какую нибудь корреляцию? вот и я нет, а она явно есть так как проходить нужно именно там... Ну да ладно на машине можно и туда съездить. Не беда если с первого раза вы приедете и увидите что именно сегодня станция не работает по причине отсутствия света... или горячей воды... или ко каким нибудь еще там техническим причинам,... дело то житейское... Не трудно же приехать в другой день, правда ведь... херня вопрос через весь город на ебеня можно ведь и в другой день что же делать...

Приезжаем в другой день, к восьми утра (станция начинает работать с 8.30 но наученные опытом со сберкассой лучше приехать пораньше...). Ровно в 9.40 станция открывается и вы проходите сначала в такое маленькое помещение с двумя окошками, куда вы должны сдать свои документы - техпаспорт, ПТС права, полис ОСАГО, паспорт, права, медицинскую справку по форме 11Ю или как она там еще называется, т.е. ту которая действительна три года и которая нужна для получения прав... Что нет справки? Не взяли? Как зачем для прохождения ТЕХНИЧЕСКОГО осмотра нужна МЕДИЦИНСКАЯ справка? Молодой человек зачем задаете вопросы которые вам совсем не нужно задавать, недовольный капитан в окошке смотрит на вас с неодобрением, нет справки - нет техосмотра...

Херня вопрос - едете вы домой искать справку, находите ее в офисе на работе в столе куда запихнули ее думая что она вам больше никогда не понадобится, едете обратно, приезжаете в к 11.45 однако уже начался обед который здесь начинается в 12.00 кто же вам за пятнадцать минут до обеда что делать будет... Ну чтож, у вас есть честно заработанные полтора часа здорового сна в своей машине, откидываем кресло, устраиваемся поудобнее, спим... Через полтара часа идем, сдаем документы, тов. капитан одобрительно смотрит на справку, молодец мол а говорил что нету справки... теперь все в порядке... Далее заезжаем в специальный такой гараж с дыркой вдоль пола, проезжаем над дыркой, что-то противно скрежещет по днищу вашего новенького Hyundai Getz - фигня машет инспектор, просто у ямы борта высоковаты - не рассчитаны на иномарки... Ну посмотрели аптечку, огнетушитель... поморгали световыми приборами... Делее инспектор просит ключи, заехал на такую фигню с двумя барабанам, поездил по ней сначала передними колесами, потом задними... Говорит езжай ка ты браток на станцию и прокачай тормоза, где-то говорит пузырек воздуха в системе по параметрам не дотягивает... Но заключение все же выдает положительное, и еще минут через сорок мне выдают вожделенный стикер, корый нужно наклеить на лобовое стекло.

Ура! Техосмотр пройден.

Времязатраты на прохождение техосмотра - 3 часа поездка в специальную сберкассу, 3 часа - поиск специальной станции где вы должны проходить техосмотр где-то на ебенях с последующим обнаружением что она сегодня не работает. 8 часов - попытка номер два + плюс поиски медсправки + плюс здоровый обеденный сон. Итого 14 часов. Помножаем на ваш почасовой рейт получаем сколько вам вышло получить техосмотр штатным законным методом в денежном эквиваленте, ну и плюс удовольстие - оно бесценно... Всего этого можно избежать если есть знакомый гаишник - за гораздо более дешевые деньги (сумма зависит от степени близости знакомства и от должности знакомого гаишника) он вам сделает техосмотр без всего этого удовольствия.

Интересно у нас в России всегда всё будет через жопу?...

 

Коментариев: 1

 
  2008-05-07

Как в Safary под Windows активизировать меню Debug?

Добавить в "C:\Documents and Settings\[username]\Application Data\Apple Computer\Safari\Preferences.plist"

<key>IncludeDebugMenu</key> <true/>

Upd: в новых версиях Safari это можно сделать выбрав чекбокс "Показывать меню разработчика в сторое меню" доступную на вкладку "дополнения" панели настроек.

 

Оставить комментарий

 
  2008-05-07

Вопросы проектирования

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

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

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

 

Оставить комментарий

 
  2008-05-01

Как используя GnuPG зашифровать сообщение из программы на PHP?

Встала задача - закодировать мейлы посылаемные с сервера крипростойким образом.

В принципе что сложного - ставим на сервер GnuPG, на рабочую станцию PGP импортируем на сервер открытый ключ с рабочей станции и дело в шляпе. Одна загвосдка - GnuPG - это консольная утилита которой для того чтобы зашифровать файл нужно его передать через stdin, результат будет выдан на stdout. Как вызвать ее из программы на PHP? Можно конечно создать временный файл и уже через переадресацию ввода вывода залить его в программу, но это то как то не секьюрно.

Оказывается в PHP есть отличная функция - proc_open, которая позволяет реализовать переадресацию стандартных потоков через pipes - просто и элегантно.

Вот что получилось:

$s = "string to encrypt"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a file to write to ); $cmd = 'gpg -e --always-trust -r USERID'; $cwd = '/tmp'; $env = array('HOME' => '/tmp'); $process = proc_open($cmd, $descriptorspec, $pipes, $cwd, $env); if (is_resource($process)) { // $pipes now looks like this: // 0 => writeable handle connected to child stdin // 1 => readable handle connected to child stdout // Any error output will be appended to /tmp/error-output.txt fwrite($pipes[0], $s); fclose($pipes[0]); echo stream_get_contents($pipes[1]); fclose($pipes[1]); $error = stream_get_contents($pipes[2]); echo $error; fclose($pipes[2]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); echo "command returned $return_value\n"; }
 

Коментариев: 2