Архив

Архив Декабрь 2010
30 декабря 2010 5 комментариев
var snowmax=35;
var snowcolor=new Array("#aaaacc","#ddddff","#ccccdd","#f3f3f3","#f0ffff");
var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS");
var snowletter="*";
var sinkspeed=0.6; //0.3-2
var snowmaxsize=22;
var snowminsize=8;
var snowingzone=1; //1-4
var snow=new Array();
var marginbottom;
var marginright;
var timer;
var i_snow=0;
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent;
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/);
var ns6=document.getElementById&&!document.all;
var opera=browserinfos.match(/Opera/);
var browserok=ie5||ns6||opera;
function randommaker(range) {
	rand=Math.floor(range*Math.random());
	return rand;
}
function initsnow() {
	if (ie5 || opera) {
		marginbottom=document.body.clientHeight;
		marginright=document.body.clientWidth;
	}
	else if (ns6) {
		marginbottom=window.innerHeight;
		marginright=window.innerWidth;
	}
	var snowsizerange=snowmaxsize-snowminsize;
	for (i=0;i<=snowmax;i++) {
		crds[i]=0;
		lftrght[i]=Math.random()*15;
		x_mv[i]=0.03+Math.random()/10;
		snow[i]=document.getElementById("s"+i);
		snow[i].style.fontFamily=snowtype[randommaker(snowtype/length)];
		snow[i].size=randommaker(snowsizerange)+snowminsize;
		snow[i].style.fontSize=snow[i].size+"px";
		snow[i].style.color=snowcolor[randommaker(snowcolor.length)];
		snow[i].sink=sinkspeed*snow[i].size/5;
		if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
		if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
		if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
		if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
		snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size);
		snow[i].style.left=snow[i].posx+"px";
		snow[i].style.top=snow[i].posy+"px";
	}
	movesnow();
}
function movesnow() {
	for(i=0;i<=snowmax;i++) {
		crds[i]+=x_mv[i];
		snow[i].posy+=snow[i].sink;
		snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+"px";
		snow[i].style.top=snow[i].posy+"px";
		if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])) {
			if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
			if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
			if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
			if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
			snow[i].posy=0;
		}
	}
	var timer=setTimeout("movesnow()",50);
}
for (i=0;i<=snowmax;i++) {
	document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"px;'>"+snowletter+"</span>");
}
if (browserok) {
	window.onload=initsnow;
}

http://forum.ru-board.com/topic.cgi?forum=31&topic=4208
2011-01-05 обновлено, исправлены ошибки, теперь снег падает во всех браузерах :)

Categories: Javascript Tags:
29 декабря 2010 Нет комментариев

Вот нужно например из файла http://static.wipmania.com/static/countries.txt получить 2 массива: массив кодов стран и масиив кодов стран с названиями. Как сделать быстро:
Итак файл в формате:

AC	Ascension Island
AD	Andorra
AE	United Arab Emirates
AF	Afghanistan
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
ZA	South Africa
ZM	Zambia
ZW	Zimbabwe

а нужно:

$arr1=array('AC','AD','AE','AF','AG','AI','AL','AM','AN','AO','AQ','AR','AS','AT','AU','AW','AX','AZ','BA','BB','BD','BE','BF','BG','BH','BI','BJ','BL','BM','BN','BO','BR','BS','BT','BV','BW','BY','BZ','CA','CC','CD','CF','CG','CH','CI','CK','CL','CM','CN','CO','CR','CU','CV','CX','CY','CZ','DE','DJ','DK','DM','DO','DZ','EC','EE','EG','EH','ER','ES','ET','FI','FJ','FK','FM','FO','FR','GA','GB','GD','GE','GF','GG','GH','GI','GL','GM','GN','GP','GQ','GR','GS','GT','GU','GW','GY','HK','HM','HN','HR','HT','HU','ID','IE','IL','IM','IN','IO','IQ','IR','IS','IT','JE','JM','JO','JP','KE','KG','KH','KI','KM','KN','KP','KR','KW','KY','KZ','LA','LB','LC','LI','LK','LR','LS','LT','LU','LV','LY','MA','MC','MD','ME','MF','MG','MH','MK','ML','MM','MN','MO','MP','MQ','MR','MS','MT','MU','MV','MW','MX','MY','MZ','NA','NC','NE','NF','NG','NI','NL','NO','NP','NR','NU','NZ','OM','PA','PE','PF','PG','PH','PK','PL','PM','PN','PR','PS','PT','PW','PY','QA','RE','RO','RS','RU','RW','SA','SB','SC','SD','SE','SG','SH','SI','SJ','SK','SL','SM','SN','SO','SR','ST','SV','SY','SZ','TC','TD','TF','TG','TH','TJ','TK','TL','TM','TN','TO','TR','TT','TV','TW','TZ','UA','UG','UM','US','UY','UZ','VA','VC','VE','VG','VI','VN','VU','WF','WS','YE','YT','ZA','ZM','ZW');

и

$arr2=array('AC'=>'Ascension Island',
	'AD'=>'Andorra',
	'AE'=>'United Arab Emirates',
	'AF'=>'Afghanistan',
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
	'ZA'=>'South Africa',
	'ZM'=>'Zambia',
	'ZW'=>'Zimbabwe');

И так решение:

<?php
$ish = "AC	Ascension Island
AD	Andorra
AE	United Arab Emirates
AF	Afghanistan
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
ZA	South Africa
ZM	Zambia
ZW	Zimbabwe
";
$arr1=preg_replace("/\t.+\n/", "\n",$ish);
$arr1=preg_replace("/\n/","','",$arr1);
echo "<pre>";
	echo '$arr1=array(\'';
	echo substr($arr1,0,-2);
	echo ');';
echo "</pre>";
echo "<br/><br/>";
$arr2=preg_replace("/\t/","'=>'",$ish);
$arr2=preg_replace("/\n/","',\n\t'",$arr2);
echo "<pre>";
	echo '$arr2=array(\'';
	echo substr($arr2,0,-4);
	echo ');';
echo "</pre>";
?>

ну а дальше копи-паст в исходник :)

Categories: PHP Tags:
27 декабря 2010 Нет комментариев

Чтобы при создании нового шаблона не загружались стандартные яваскрипты mootools.js и caption.js при подключении

<jdoc:include type="head" />

в index.php создаваемого шаблона пишем:

$user = & JFactory::getUser();
if ($user->get('guest') == 1) {
	$headerstuff = $this->getHeadData();
	$key1 = JURI::base(true). '/media/system/js/mootools.js';
	$key2 = JURI::base(true). '/media/system/js/caption.js';
	unset($headerstuff['scripts'][$key1], $headerstuff['scripts'][$key2]);
	$this->setHeadData($headerstuff);
}

http://joomlaforum.ru/index.php?topic=101107.0

Categories: CMS Tags:
23 декабря 2010 12 комментариев

При загрузке XP сразу вылетает spoolsv.exe с ошибкой «Инструкция по адресу какому-то обратилась к памяти по адресу какому-то еще».
Как возможный вариант лечения, со здоровой XP (лучше если там нет принтеров) экспортируем ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
Удаляем на больной и импортируем здоровую ветку, перезагружаемся и заново устанавливаем принтер.
Еще можно тоже самое сделать с
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers
но в моем случае хватило первой ветки.

Categories: Windows Tags:
17 декабря 2010 5 комментариев

По умолчанию в 11 опере в адресной строке отображается адрес без GETов, чтобы «вернуть как было раньше»:
Ctrl+F12->Расширенные->Навигация->Показывать полный веб-адрес в поле адреса

Categories: Other Tags:
9 декабря 2010 3 комментария

Часть формы где у нас инпут для логина:

echo "<input type='text' id='login' name='login' onblur='checkName(this.value, \"\")'/>";
	echo "&nbsp;&mdash;&nbsp;<label for='login'>LOGIN</label><br/>";
	echo "<span class='hidden' id='nameCheckFailed'>NOT AVAILABLE</span>";
	echo "<span class='hidden' id='nameCheckOK'>AVAILABLE</span><br/>";

Яваскрипт, подключенный например где-то в head:

function checkName(input,response) {
	if (response != '') {
		failtext=document.getElementById('nameCheckFailed');
		oktext=document.getElementById('nameCheckOK');
		if (response == '1') {
			failtext.className='failtext';
			oktext.className='hidden';
		}
		else {
			failtext.className='hidden';
			oktext.className='oktext';
		}
	}
	else {
		if (input != '') {
			url='http://hostname/xml/checkUserName.php?q='+input;
			loadXMLDoc(url);
		}
		else {
			failtext.className='hidden';
			oktext.className='hidden';
		}
	}
}
var req;
function loadXMLDoc(url) {
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange=processReqChange;
		req.open("GET",url,true);
		req.send(null);
	}
	else if (window.ActiveXObject) {
		req = new ActiveXObject("Micrisoft.XMLHTTP");
		if (req) {
			req.onreadystatechange=processReqchange;
			req.open("GET",url,true);
			req.send();
		}
	}
}
function processReqChange() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			response=req.responseXML.documentElement;
			method=response.getElementsByTagName('method')[0].firstChild.data;
			result=response.getElementsByTagName('result')[0].firstChild.data;
			eval(method + '(\'\', result)');
		}
		else {
			alert("There was a problem retrieving the XML data:\n"+req.statusText);
		}
	}
}

Файл /xml/checkUserName.php (в первой строчке инклуд подключения к БД, если не знаем что там и как — гуглим, еще конечно должна существовать таблица users с полем username, в которое пишутся логины)

<?php
include ($_SERVER['DOCUMENT_ROOT']."/include/dbconfig.php");
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
function nameInUse($q) {
	$query=mysql_query("SELECT COUNT(*) FROM users WHERE username='".$q."'");
	$result=mysql_fetch_array($query);
	switch($result[0]) {
		case '1' :
			return '1';
			break;
		default:
			return '0';
	}
}
echo '<response>
	<method>checkName</method>
	<result>'.nameInUse($_GET['q']).'</result>
</response>';
?>

И CSS:

span.hidden {
	display:none;
}
span.failtext {
	display: inline;
	background: #ffebea;
}
span.oktext {
	display: inline;
	background-color: #efffea;;
}

На основе: http://wmdn.ru/javascript/example-of-check-login-using-ajax/
Вариант от WMDN: http://wmdn.ru/javascript/example-of-check-login-using-ajax/

Categories: Javascript, PHP Tags: , ,
4 декабря 2010 6 комментариев
function YearTextArg($year) {
    $year = abs($year);
    $t1 = $year % 10;
    $t2 = $year % 100;
    return ($t1 == 1 && $t2 != 11 ? "год" : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? "года" : "лет"));
}

Источник: http://www.masterwebs.ru/index.php?showtopic=6723

Categories: PHP Tags: