2009-12-18

getElementsByTagName

программирование, JavaScript

Забавно, getElementsByTagName не только возвращает коллекцию элементов по имени тега, но и поддерживает эту коллекцию в актуальном состоянии.

Так, если я добавлю в документ еще один элемент с таким же именем, то количество элементов в коллекции созданной ранее изменится:

  window.onload = function(){
    var inputs = document.getElementsByTagName('input');
    alert(inputs.length);
    var item = document.createElement('input');
    document.body.appendChild(item);
    alert(inputs.length);
  }

Upd: действительно: The list is live, so changes to it internally or externally will cause the items they reference to be updated as well.

 

 

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

 
  2009-12-04

Маска, маска я тебя знаю

программирование, PHP

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

Почемуто в GD нет функций для работы с масками. Пришлось изобретать самим, и вот что получилось:

Так выглядит код маскирования:

$image = imagecreatefromgif('image.gif');
$mask = imagecreatefromgif('mask.gif');

$dest = imagecreatetruecolor(imagesx($image),imagesy($image));

imagemask($dest,$image,$mask);

header('Content-type: image/jpeg');
imagepng($dest);

Код самой функции маскирования:

function imagemask($dest,$image,$mask){
	$width =  imagesx($image);
	$height = imagesy($image);
	
	$tc = imagecolorallocate($dest,0,0,0);
	imagecolortransparent($dest,$tc);
	
	for($i=0;$i<$width;$i++){
		for($j=0;$j<$height;$j++){
			$c = imagecolorat($image,$i,$j);
			$color = imagecolorsforindex($image,$c);
			
			$c = imagecolorat($mask,$i,$j);
			$mcolor = imagecolorsforindex($mask,$c);
			
			if (!($mcolor['red']==255 && $mcolor['green']==255 && $mcolor['blue']==255)){
				$c = imagecolorallocate($dest,$color['red'],$color['green'],$color['blue']);
				imagesetpixel($dest,$i,$j,$c);
			} 
		}
	}
}

Правда расстраивает, что GD так и не научилась работать нормально с полупрозрачностью - если кто знает способ, расскажите плиз.

 

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

 
  2009-11-18

Занятный фокус с JS

программирование, JavaScript

За что я люблю JS это за то что на нем можно реализовать некоторые вещи совершенно нетривиальным способом. Например такая задача: Есть IFRAME который создается динамически, нужно привесить событие onload на объект window внутри этого IFRAME. Сразу после создания свойство contentWindow равно нулю, поэтому непосредственно после создания доступа к нему нет. Оно станет доступно через некоторое время. Логичным будет проверять на ноль свойство каждые сто миллисекунд пока оно не будет чему нибудь равно:

var onloadfunc = function(){
    alert('loaded!!!');
};
        
(function(){
    if (!iframe.contentWindow){
         setTimeout(arguments.callee,100);
         return;
    }
    iframe.contentWindow.onload = onloadfunc;
})();

В приведенном примере анонимная функция вызывает саму себя через каждые 100 миллисекунд. Интересно что когда это писал - забыл поставить точку с запятой в }; - это привело к интересной штуке - калбак стал вызываться на этапе инициализации - т.е. скобки имеют наивысший приоритет даже если между ними стоит перенос строки.

 

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

 
  2009-10-26

говорят SVN это дырка...

программирование, вебмастеринг

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

http://habrahabr.ru/blogs/infosecurity/70330/

Upd:
чтобы запретить это безобразие просто добавьте в .htaccess или в httpd.conf:

<IfModule mod_rewrite.c>
  RewriteRule ^(.*/)?\.svn/ - [F,L]
  ErrorDocument 403 "Access Forbidden"
</IfModule>
 

Причем как то странно на одном сервере это не сработало, сработало вот это:

<DirectoryMatch "^/.*/(\.svn|CVS)/">
  Order deny,allow
  Deny from all 
</DirectoryMatch>
 

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

 
  2009-08-21

Закачака файлов AJAX

программирование, JavaScript, howto, вебмастеринг

Нашел занимательный пример по закачке файлов посредством AJAX. Решение, оказывается, простое ну просто до безобразия - у формы с файлом ставится target с именем невидимого фрейма, за счет этого форма с файлом не перегружается а перегружается этот самый невидимый фрейм. Гениально!

 

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

 
  2009-08-18

Несколько полезных JS функций

программирование, JavaScript

Обнаружил что в квирк моде все браузеры определяют размер документа не так как в режиме соответствия стандартам, более того делают они это как бог на душу положит, поэтому сделал несколько полезных функций для того чтобы как то получить во всех браузерах в обоих режимах единообразные результаты. Тестировано в IE6, IE7, FF, Chrome, Opera

function getDocumentHeight(){
    var de = document.body.parentNode;
    var db = document.body;
    return ((db.clientHeight>de.clientHeight)?db.clientHeight:de.clientHeight);
}

function getDocumentWidth(){
    var de = document.body.parentNode;
    var db = document.body;
    return ((db.clientWidth>de.clientWidth)?db.clientWidth:de.clientWidth);
}

function getScreenHeight(){
    var de = document.body.parentNode;
    var db = document.body;
    if (window.opera) {
	return db.clientHeight;    	
    }
    if (document.compatMode=='CSS1Compat'){
	return de.clientHeight;    	
    }
    else {
	return db.clientHeight;
    }
}

function getScreenWidth(){
    var de = document.body.parentNode;
    var db = document.body;
    if(window.opera){
	return db.clientWidth;
    }
    if (document.compatMode=='CSS1Compat'){
	return de.clientWidth;
    }
    else {
    	return db.clientWidth;
    }
}

function getScrollTop(){
    return document.documentElement.scrollTop || document.body.scrollTop;
}

function getScrollLeft(){
    return document.documentElement.scrollLeft || document.body.scrollLeft;
}

 

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

 
  2009-06-05

Как получить список координат из Google Maps

howto, программирование, PHP

Здесь можно найти исходники и примеры на эту тему.

 

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

 
  2009-03-20

Прелоадер-Генератор

программирование, PHP

Bomfunk выложил сабж а я его немного отрихтовал - так стало гораздо симпатичнее :)

 

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

 
  2009-03-16

Знак $ в именах переменных JavaScript

программирование, JavaScript

вот интересно MSDN пишет:

  • The first character must be an ASCII letter (either uppercase or lowercase), or an underscore (_) character. Note that a number cannot be used as the first character.

  • Subsequent characters must be letters, numbers, or underscores.

  • The variable name must not be a reserved word.

Чем в таком случае является переменная $ активно используемая в Prototype или в JQuery - буквой, цифрой или знаком подчекивания? Здравый смысл подсказывает что это скорее буква...

Бывают ли еще такие "странные" буквы которые можно бы было использовать в именах переменных. Например, @ или # использовать не получается.

 

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

 
  2009-03-05

Демон на Питоне

howto, программирование, Python

Встала задача: есть некий сервер написанный на Питоне который слушает некий порт, выполняет запросы, в общем работает - теперь нужно запустить этот сервер как демон. В шеле такая задача решается просто добавлением амперсенда после вызова команды запуска:

server.py > logfile &

Однако хочется чтобы наш сервер запускался автоматически после того как сервер был рестартован, для этого нужно создать скрипт запуска в директории /etc/init.d

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

 

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

разное (184)
howto (124)
программирование (108)
гад-же-ты (75)
мысли (42)
PHP (41)
JavaScript (39)
вебмастеринг (37)
linux (28)
гондураша (28)
юмор (25)
полезное (21)
движок (17)
Android (17)
софт (15)
деньги (14)
видео (13)
кино (13)
музыка (10)
беспредел (10)
путешествия (10)
интернет (9)
diy (9)
ztools (8)
книги (8)
умный дом (8)
занимательная физика (8)
языки (7)
хостинг (7)
Nokia 5800 (7)
lifehack (6)
css (6)
вебдизайн (6)
apple (5)
arduino (5)
связной (5)
прелоадер (5)
козлы (5)
oDesk (5)
занимательная юриспруденция (4)
кухня (4)
Python (4)
аниме (4)
svn (4)
software (3)
synphony (3)
рестораны (3)
энергия (3)
движек (3)
webmastering (2)
Java (2)
фото на документы (2)
Ruby on Rails (2)
спорт (2)
bash (2)
гитара (2)
дурдом (1)
C++ (1)
годнурас (1)
микросервисы (1)
SEO (1)
programming (1)
технологии (1)
наука (1)
сайты (1)
авторское право (1)
восстановить (1)
Поиск по блогу:

Valid XHTML 1.0 Strict