Сайт Романа ПарпалакаБлог200808

Красота науки

1 августа 2008 года, 23:14

Советую почитать статью «Красота науки», когда-то давно опубликованную в журнале «Наука и жизнь». Она будет полезна тем, кто думает, что в науке не может быть никакой красоты.

    1 комментарий

Странности фотошопа

3 августа 2008 года, 20:22

Я постоянно спотыкаюсь в фотошопе на этом окне из-за нечеловеческого не принятого в Windows порядка кнопок.

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

PHP: навигация

4 августа 2008 года, 23:57

Некоторое время назад Илья Бирман написал про подсветку ключевых слов. В комментариях после моего замечания о возможности использовать функцию preg_replace развязалась небольшая дискуссия о том, как правильно нужно генерировать подобные вещи. Вот что писал Илья:

*_replace — это вообще не наш метод, надо сразу всё правильно генерировать, а не резать по живому потом.

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

Рассмотрим достоинства и недостатки различных подходов к генерации контента на простом примере навигационных ссылок.

Использование preg_replace позволяет сделать код коротким и понятным.

$cur_url = 'item2.htm';

$menu = '<a href="item1.htm">item1</a><br />
<a href="item2.htm">item2</a><br />
<a href="item3.htm">item3</a><br />
<a href="item4.htm">item4</a><br />
<a href="item5.htm">item5</a>';

$menu = preg_replace(
	'#<a href="'.$cur_url.'">([^<]*)</a>#',
	'<span>\\1</span>',
	$menu);

Однако на мой взгляд этот код может быть расценен в соответствии с цитатой как «левак». Я не знаю, какой способ является правильным в этой ситуации с точки зрения Ильи, но могу предположить, что он должен быть примерно таким:

$cur_url = 'item2.htm';

$menu_array = array(
	'item1.htm' => 'item1',
	'item2.htm' => 'item2',
	'item3.htm' => 'item3',
	'item4.htm' => 'item4',
	'item5.htm' => 'item5'
);

$menu = '';
foreach ($menu_array as $url => $link) {
	if ($url != $cur_url)
		$menu .= '<a href="'.$url.'">'.$link.'</a><br />';
	else
		$menu .= '<span>'.$link.'</span><br />';
}

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

Можно применить и третий способ:

$cur_url = 'item2.htm';

if ($url != 'item1.htm')
	$menu = '<a href="item1.htm">item1</a><br />';
else
	$menu = '<span>item1</span><br />';

if ($url != 'item2.htm')
	$menu .= '<a href="item2.htm">item2</a><br />';
else
	$menu .= '<span>item2</span><br />';

if ($url != 'item3.htm')
	$menu .= '<a href="item3.htm">item3</a><br />';
else
	$menu .= '<span>item3</span><br />';

if ($url != 'item4.htm')
	$menu .= '<a href="item4.htm">item4</a><br />';
else
	$menu .= '<span>item4</span><br />';

if ($url != 'item5.htm')
	$menu .= '<a href="item5.htm">item5</a>';
else
	$menu .= '<span>item5</span>';

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

    6 комментариев

IE8 -> ?

6 августа 2008 года, 15:57

Подумал, что если в Microsoft действительно захотели сделать браузер, работающий по стандартам, и они действительно обеспокоены проблемой отображения сайтов с хаками для IE(6), то самое простое решение этой проблемы — назвать новый браузер по-другому. А что, отказались же они от Win9x. Почему бы от IE не отказаться?

PS. IE vs. others.

    8 комментариев

Президентский сайт

11 августа 2008 года, 17:32

А это только мне кажется, что сайт Медведева похож на страницы ошибок в «Опере»?

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

Социальные сети: -1

14 августа 2008 года, 13:43

Илья Бирман написал про напоминания о днях рождения. Еще один аргумент на тему «почему я не люблю вконтакте».

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

Поле чудес

15 августа 2008 года, 23:08

Посмотрел вдруг «Поле чудес» (не помню, сколько лет до этого не смотрел). Вот одно из заданий: этого слова нет в китайском языке, вместо него они говорят «это будет в году осла». Моей первой и единственной версией было слово «никогда». Сначала назвали букву «а» и подтвердили мою догадку. Потом назвали «о», этой буквы не оказалось. Больше ничего я придумать не смог, а тем временем открыли буквы «и», «к», «д». Игрок отгадал букву «г», на табло красовалось «*ик*гда», и он решился назвать слово.

— «Никогда»!
— И это правильный ответ! — восклицает Якубович.

Занавес.

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

Еще про социальные сети

16 августа 2008 года, 19:56

Фокус внимания интернет-общественности™ переместился из блогосферы в социальные сети.

Даже «эволюция» такая прослеживается: авторские проекты -> блоги -> бесплатные блоговые площадки типа ЖЖ -> социальные сети.

Кстати, для социальных сетей предлагаю использовать сокращение СС.

    3 комментария

Про посольство

20 августа 2008 года, 18:13

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

    1 комментарий

Lost in understanding

22 августа 2008 года, 01:10

pulsar (23:55:12 21/08/2008)
Алгебраическая функция от x, экспонент и логарифмов алгебраических функций от x, я так понял.

pulsar (23:55:37 21/08/2008)
А может там рекурсия?

Disa (23:55:42 21/08/2008)
Так. Твое последнее предложение я не понял.

Disa (23:55:58 21/08/2008)
Теперь уже предпоследнее.

pulsar (23:56:10 21/08/2008)
А теперь — предпредпоследнее ;)

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

Про LHC

26 августа 2008 года, 01:00

В своей последней статье я упоминал LHC. Многие знают, что этот ускоритель запустят 10 сентября. Давайте я расскажу что-нибудь еще. Благо нам в ОИЯИ про LHC поведали достаточно.

Как написано в Википедии,

Некоторые специалисты и представители общественности высказывают опасения, что имеется отличная от нуля вероятность выхода проводимых в коллайдере экспериментов из-под контроля и развития цепной реакции, которая при определённых условиях теоретически может уничтожить всю планету. Точка зрения сторонников катастрофических сценариев, связанных с работой LHC, изложена на отдельном сайте.[4] Из-за подобных настроений LHC иногда расшифровывают как Last Hadron Collider (Последний Адронный Коллайдер).

Разумеется, такие опасения, в общем-то, безосновательны. А вот расшифровка «Last Hadron Collider», возможно, смысла не лишена. Дело в том, что если на LHC будет найдена «новая физика» (это такой профессиональный жаргон), то для более подробного исследования этой самой физики ученые думают сооружать ILC, или международный линейный коллайдер, в котором будут разгоняться электроны (напомню, что в LHC будут сталкиваться протоны).

Так вот, во-первых, «новую физику» на LHC могут и не найти; тогда физики не смогут обосновать налогоплательщикам необходимость постройки нового ускорителя. Во-вторых, стоимость, сложность, время постройки и длительность работы ILC будет как минимум такого же порядка, что и у LHC. Следующий после ILC ускоритель (опять адронный коллайдер) должен работать при еще больших энергиях и должен быть на порядок сложнее. В общем, перспективы построения такого коллайдера не совсем ясны.

Вот вам и Last Hadron Collider.

    8 комментариев

Счастье

29 августа 2008 года, 19:30

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

← сюда туда →

Поделиться
Записи