LINUX.ORG.RU

лабы по javascript :)


1

0

"Сижу, пишу лабы" (с) LOR
Заметьте, что тема, цветовая гамма xfce так и не поменялась с тех пор... И это здорово с одной стороны.

P.S. Ну что, начнём разбор кода?

>>> Просмотр (1024x768, 71 Kb)

★★★★

Проверено: Pi ()

> P.S. Ну что, начнём разбор кода?

Лехко! Аффтар не читает HIG!!! Alert на возврате результата - мастдай. Надо возвращать строчку, которую потому втюхивать в какой-нибудь innerHtml, дабы не вводить пользователя в заблуждение, в коем он может впасть, машинально посчитав выскочившее сообщение с результатом сообщением об ошибке! :-)

no-dashi ★★★★★
()

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

Deleted
()

А чавой случится, если я вместо цифр текст загоню? ;)

PartyZan ★★★
()
Ответ на: комментарий от nightfog

> не годиться - бяка, кроме подсветки скриптовых языков ниумеет ничего Что сгодится?

Deisler
()
Ответ на: комментарий от Stalwart

> Автор, расскажи поподробнее про BlueFish - как оно? Для паскаля годится?

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

AP ★★★★★
()

1. Чем j-- отличается от --j не знаешь.
2. 3 копирования строки на один вызов. За такое руки надо отрывать и вставлять в плечи.
3. Ну про глобальную j уже написали по аське.
4. Поведение у функции reverse при str.length == 0 очень забавное.
5. Проверка диапазона производится без оглядки на тип. То есть если придет строка параметром - будет весело.
6. ...

eXOR ★★★★★
()

Отличный скрин, люблю XFCE, хотя сам КДЕшнег, пиши исчо! А че за аска то у тебя?

anonymous
()
Ответ на: комментарий от AP

>так что лучше смотреть в другую сторону - на KDevelop какой-нибудь, например.

Значит остаюсь на VIMе

Stalwart ★★★
()

Привет землякам (: Нет ли у тебя случайно брата Игоря? (%

xa-polosataja
()

просто к слову:

по теории инженерии ГУИ, alert - бестолковая функция, кою вообще нельзя использовать: при получении информации, юзера обязывают ввести дополнительную инфу - клик по кнопке, что реально не нужно и необходимо обходить.

Pi ★★★★★
()
Ответ на: комментарий от eXOR

>1. Чем j-- отличается от --j не знаешь.

В случе его циклов разницы нет никакой.

> 2. 3 копирования строки на один вызов. За такое руки надо отрывать и вставлять в плечи.
> 3. Ну про глобальную j уже написали по аське.
> 4. Поведение у функции reverse при str.length == 0 очень забавное.

Будет возвращено parseInt(""); 0?

> 5. Проверка диапазона производится без оглядки на тип. То есть если придет строка параметром - будет весело.

Будут 0.

> 6. ...


Полный 0 в javascript, оценил с точки зрения C.

anonymous
()
Ответ на: комментарий от WindowsUser

Мне главное было быстрей сдать js и забыть о нём. Но про оптимизацию почитаю - интересно.

Насчёт --j, j-- "оправдываться" надоело. Разницу я знаю, но в цикле это действительно не имеет значения.

Selecter ★★★★
() автор топика
Ответ на: комментарий от WindowsUser

>почитай МСДН на тему оптимизации яваскрипта. А то так и будешь строки плюсами сцеплять :)

Ткни. Не нашёл

Selecter ★★★★
() автор топика

слово "палиндром" пишется через "а" и никак иначе!

в сад. учить орфографию!

swar0g ★★★★
()
Ответ на: комментарий от Selecter

>Насчёт --j, j-- "оправдываться" надоело. Разницу я знаю, но в цикле это действительно не имеет значения.

++i работает быстрее чем i++, так что нужно использовать префиксную форму если это возможно. Вот небольшой пример почему это так.

class A
{
private:
SomeType Value;

public:
// префиксная форма
A & operator ++ ()
{
this->Value + 1;
return *this;
}

// постфиксная форма
A & operator ++ ( int )
{
A retVal ( * this );
this->Value + 1;
return retVal;
}
}

bbb
()
Ответ на: комментарий от WindowsUser

> почитай МСДН на тему оптимизации яваскрипта

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

no-dashi ★★★★★
()
Ответ на: комментарий от Selecter

если вкратце, то конкатенацию лучше делать через массив:

var x = new Array();
x.push('ff')
f.push('zz')
var o = x.join('')

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

WindowsUser ★★
()
Ответ на: комментарий от no-dashi

> Еще один настоящий мужчина с оптимизацией очень короткого цикла, выполняющегося один раз во время сессии, блин

ага. и потом, использую наработанную "практику", получаем тормозные километровые скрипты

WindowsUser ★★
()

А где это такие продвинутые преподаватели водятся, которые преподают javascript?

AEP ★★★★★
()
Ответ на: комментарий от WindowsUser

От 1 до 10000

В данном случае твой способ проиграл:
reverse: 1.2 сек в среднем (не работает в IE доступ к строке через random access)
reverse2: 1.8 сек в среднем
reverse3: 1.1 сек в среднем (работает в IE)

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

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="Content; charset=windows-1251" >
<script language="javascript" type="text/javascript">
function reverse(str)
{
	str = str.toString();
	var str2 = "";
	for(j=str.length; j>0; j--)
	{
		str2 += str[j-1];
	}
	return parseInt(str2);
}

function reverse3(str)
{
	str = str.toString();
	var str2 = "";
	for(j=str.length; j>0; j--)
	{
		str2 += str.substr(j-1, 1);
	}
	return parseInt(str2);
}

function reverse2(str)
{
	str = str.toString();
	var str2 = new Array();
	for(j=str.length; j>0; j--)
	{
		str2.push(str[j-1]);
	}
	return parseInt(str2.join(''));
}

function doit()
{
	var b = new Date();
	var sec = b.getSeconds();
	var msec = b.getMilliseconds();
	var from = parseInt(document.getElementById("from").value);
	var to = parseInt(document.getElementById("to").value);
	var res = "";
	if(to < from)
	{
		alert("Неправильный диапазон!");
		return;
	}
	
	res += "Полиндромы: \n";
	for(i=from; i<=to; i++)
	{
		if(i==reverse(i))
		{
			res += i + " ";
		}
	}
	var a = new Date();
	var sec2 = a.getSeconds();
	var msec2 = a.getMilliseconds();
	var raznica = (sec2+msec2/1000)-(sec+msec/1000);
	alert(raznica);
	//alert(res);
}
</script>
</head>
<body>
От: <input type="text" id="from"/><br/>
До: <input type="text" id="to"/><br/>
<input type="submit" value="Найти полиндромы" onclick="doit();"/>
</body>
</html>

Selecter ★★★★
() автор топика
Ответ на: комментарий от anonymous

> JavaScript - функциональный язык, а ты на нём, как на Сях пишешь. Позор!

а где посмотреть пример кода на JS в функциональном стиле?

XYAH
()
Ответ на: комментарий от Selecter

я же написал, на мелких массивах смысла нет:

лучше попробуй так

var res = new Array();

for(i=from; i<=to; i++) 
  res.push(i.toString())

res = res.join('');

и вот так

var res = "";
	
for(i=from; i<=to; i++)
 res += i.toString()


Первый вариан - 0.9, второй - 11

WindowsUser ★★
()
Ответ на: комментарий от AEP

> А где это такие продвинутые преподаватели водятся, которые преподают javascript?

cscript и ваши проблемы решены. Причем с доступом ко всяким COM (например, парсинг XML)

WindowsUser ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.