Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

Windows, Linux, Javascript

3 разных ссылки:

Google шарики

На google.ru сегодня демонстрация возможностей JavaScript в современных браузерах.

Работает в Chrome и Firefox, в опере не работает, в IE не должно (у меня ни логотипа, ни шариков).

При отключенном джаваскрипте показывает обычный логотип; при включенном - шарики.

Нет, это не флеш, это html вида:

<div class="particle circle" style="background-color: rgb(79, 122, 242); height: 18.0762px; width: 18.0762px; left: 256.157px; top: 68.7385px;"></div>

.particle{position:absolute;z-index:-1}
.circle{-moz-border-radius:160px;-webkit-border-radius:160px;-khtml-border-radius:160px;border-radius:160px}

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

Но завораживает, собака.

Комментарий от defproject:

все же новый лого google.ru хитрый ход. чтобы все могли увидеть тормознутость firefox

У меня особых тормозов с шариками в FF нет: тормозит как обычно, хром — как обычно летает.

Комментарий от Flash-а:

Если сохранить страницу не в опере, и потом запустить в ней, то шарики работают.

Гугл — гнусный дискриминатор (оперы)!

Save torrent as png

Чуваки написали конвертер .torrent файлов в формат .png (в обратную сторону тоже, даже в виде букмарклета на javascript). Получаются такие вот изображения:

Torrent file converted to png

Сподвиг их на это дело форчан, который позволяет аттачить картинки, но не позволяет аттачить торрент-файлы.

Насколько я понимаю, подобным образом можно кодировать любые бинарные файлы. Возможное узкое место - размеры.

Если вы закодируете этим методом торрент-файл, содержащий ваш секретный passkey, то тот, к кому в руки попадёт png файл, сможет раскодировать его и узнать ваш passkey, т.к. этот метод не шифрует торрент-файл.

Passkey — это способ идентифицировать пользователя на торрент-трекере. По идее, используется на всех рейтинговых трекерах, например на torrents.net.ua или torrents.ru.

Зарегистрироваться на torrents.net.ua можно с помощью инвайта pl8GY3N8pXfl.

Ведванольненькие кроссворды онлайн

04.01.10 @ 22:39 — JavaScript, PHP, Creative

У меня тут бешеный траффик (и гневные комментарии возмущённых пользователей) по запросу “программа для составления кроссвордов скачать бесплатно“, поэтому отрекламирую тут свой новый сайт с онлайн кроссвордами.

Я переписал старенький генератор (с паскаля на пхп) кроссвордов по заданной сетке, написал генератор тематических кроссвордов (сыроват пока), и с нуля сделал javascript.

Кроссвордов на сайте пока мало (да и те старые), но интерфейс меня прёт.

Баги (особенно интересуют макинтоши) можно мне в комменты писать (тут или в жж), добрые люди уже рассказали про Firefox+Search for text when I start typing.

JavaScript: создать массив из одной переменной

06.07.08 @ 10:30 — JavaScript

Задача: создать в JavaScript массив из одного элемента, равного значению переменной x.

Очевидное решение var a = new Array(x); — неправильно.

Если переменная x имеет тип number и является целым числом (например, x=5), то вместо массива с одним элементом, равным 5, мы получим пустой массив из пяти элементов. А если x является дробным числом (например, x = 5.2), то мы вообще получим ошибку invalid array length. Если x — строка, то решение сработает.

Причина такого поведения браузеров в том, что при создании массива через Array(x) интерпретатор ведёт себя по-разному в зависимости от типа переменной x. Если он получает тип number, то он трактует этот параметр как длину создаваемого массива, а не как значение нулевого элемента.

Правильный ответ: var a = [x];

“Каноническое” расположение скрипта (shared javascript)

23.04.08 @ 19:27 — JavaScript, Browsers

Вот один из способов, которым можно реализовать мою идею о загрузке javascript из локальной зоны браузера: добавление тегу script атрибута shared, обозначающего каноническое расположение библиотеки:

<script src=”http://my.edge.cached.startup.com/dojo-1.0.0.js” shared=”http://o.aolcdn.com/dojo/1.0.0/dojo/dojo.xd.js”></script>

Если в кеше браузере уже есть скрипт с uri, указанном в shared, то его можно будет не грузить.

Это — потенциальное дополнение к тегу script, которое может появиться в HTML5. Об этом рассказывает создатель JavaScript Brendan Eich (via Alex Moskalyuk).

PHP — 3 notes

04.03.08 @ 16:21 — JavaScript, PHP

Три коротких заметки про PHP.

1. Kevin van Zonneveld разрабатывает библиотеку php.js — стандартные php функции, портированные на JavaScript. Естественно, не все функции портированы, на данный момент их 114. Не рекомендуется к просмотру людям, не знающим, как передать переменную из JavaScript в PHP — окончательное разжижение мозга (до состояния “каша в голове”) гарантированно.

2. Каким, по вашему, будет результат вызова in_array(”68_105″,array(68,16,123))? Оказывается, у функции in_array() есть третий параметр — [bool strict]. С его помощью можно включить поиск в массиве не только по значению, но и по типу.

3. Только начиная с версий 4.4.0 и 5.0.2 PHP функция sort() умеет использовать установки локали (с помощью флага SORT_LOCALE_STRING). Для более ранних версий (хотя пора уже проапгрейдиться) можно использовать костылик usort($array, “strcoll”)

Стандартный JavaScript FrameWork

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

Банально, на JavaScriptе стали писать больше, чем писали раньше. И выяснили, что на чистом JavaScript много не напишешь: тяжёлое наследие Web 1.0, громоздкая Document Object Model, да и требования кросс-браузерности никто не отменял.

А кодить надо много и быстро, ведь на дворе уже Web 2.0 с его user-generated content, который эти юзеры хотят генерировать не с помощью стандартных кастрированных элементов управления родом из прошлого века, а с помощью нормальных графических интерфейсов, не хуже десктопных.

В результате для убыстрения разработки появились javascript библиотеки, количество которых наверняка перевалило за сотню. Называются они по-вебдванольски модно — “frameworkами”. Их главная цель — снять с кодера всю работу по обеспечению кросс-браузерности, обеспечив удобный доступ к DOM/AJAX и другие приятности, которых не хватает в чистом javascript. Выглядят эти фреймворки именно как библиотеками, подключаемые в документ с помощью тега <script>

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

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

Рассмотрим гипотетическую ситуацию — существование стандартного javascript фреймворка. Стандартность означает поддержку браузерами.

В случае javascript-библиотеки эта поддержка является всего лишь гарантией того, что браузер где-то у себя локально хранит исходный код этой библиотеки. Разработчик может подключить фреймворк точно так же тем же тегом <script>, только грузить код не со своего сайта, а из локальной зоны браузера.

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

Можно, конечно, пойти другим путём, и вместо такого фреймворка расширять сам язык, чтобы ему не требовались эти костыли. Или вместо одного фреймворка обеспечить поддержку нескольких (вроде FireFoxных аддонов).

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

Я уже высказывал идею хранения ресурсов, доступных “сайтам из интернета”, в локальной зоне браузера: прошлый раз я предлагал с её помощью реализовать браузерный клипарт. Вообще, идея богатая: в браузер можно напихать много стандартных вещей, и не грузить ими канал, который не резиновый.

Правда, браузеры относятся скорее к консервативному классу ПО (тяжёлое наследие HTML, ага), так что рассчитывать на внедрение такой революционной идеи больше чем одним браузером не приходится. Ведь даже нормальный индикатор аплоада никто до сих пор так и не сделал.

Кроссворды онлайн

Реанимировал свою старую онлайн-забаву: кроссворды, которые можно разгадывать прямо в браузере.

Программинг (PHP/JavaScript) пришлось переделать полностью, зато теперь кроссворды работают в IE, FF и Opera. Пока что на сайте выложено всего два кроссворда (1, 2), но уже можно подписаться на обновления (или добавить во френды).

Если найдёте ошибку — смело пишите в комментарии. Спасибо!

P.S. Ещё придумал уникальный и оригинальный домен для проекта, ага.

Определение посещённых вами страниц

Было интересно попробовать, можно ли программно определять, какие страницы посетил пользователь. Оказалось — можно.

Понятное дело, что получить всю history нельзя, но проверить конкретные страницы — можно.

Update: это не просто вывод посещённых страниц одним цветом, а непосещенных — другим. Скрипт действительно по URLу может определить посещённая страница или нет; и может отправить эту информацию на сервер (например ajaxом).

Next Page »   
Реклама::

 
Реклама:: Если вам нужно освоить слайдер на jquery, то рекомендую прочесть этот материал.