1001bilet.ua

Обновление

<br />
var d = new Date();<br />
d.setDate(1);<br />
d.setMonth(0);<br />
var diff = ((new Date()).getTime() &#8211; d.getTime()) / 1000 / 86400 + 1;<br />
diff = ~~diff;<br />
if(diff === 256) alert(&#8216;С днем программиста!&#8217;);<br />

<br />
if(date(&#8216;z&#8217;) + 1 === 256) echo &#8216;С днем программиста!&#8217;;<br />

А я обновил блог. При обновлении блога столкнулся с проблемой нехватки памяти для обновления WordPress. Немного погуглив, нашел решение: прописать настройки по использованию памяти для WordPress.

<br />
define(&#8216;WP_MEMORY_LIMIT&#8217;, &#8217;256M&#8217;);<br />
define(&#8216;WP_MAX_MEMORY_LIMIT&#8217;, &#8217;256M&#8217;);<br />

Вот это я записал в начало wp-config.php, но из-за какой-то ошибки хостинга должного воздействия этот код не возымел. Решение было простое как апельсин: перенес сайт на localhost, обновил на локале и перенес обратно.
Так что скоро выложу пару плюшек.

Возвращение блудного попугая

После долгого отдыха я опять возвращаюсь к своему блогу. За то время, которое меня тут не было, я получил всего 37 комментов типа “купи виагру” и “увеличь заработок”, которые были выпилены в пару щелчков. Что-то осмысленное напишу чуть позже, а пока – небольшие кусочки кода на js.

<br />
$(&#8216;body&#8217;).on(&#8216;dblclick&#8217;, &#8216;input[type="password"]&#8216;, function(){<br />
this.type = {&#8216;text&#8217;: &#8216;password&#8217;, &#8216;password&#8217;: &#8216;text&#8217;}[this.type];<br />
});<br />

Теперь все input type=”password” при двойном клике будут показывать/скрывать содержимое.

<br />
var w = 0;<br />
$(&#8216;input[type="file"]&#8216;).each(function(){<br />
$(this).wrap(&#8216;
<div id="wrap' + (++w) + '"></div>
<p>&#8216;);<br />
$(this).after(&#8216;<input type="button" class="clearFile" onclick="$(\'#wrap' + w + '\').html($(\'#wrap' + w + '\').html());"/>&#8216;);<br />
});<br />

Ставим кнопку удаления файла после всех input type=”file”.

<br />
var a = 1, b = 2; a = [b, b = a][0]; // a = 2, b = 1<br />

Меняем местами значения двух переменных. Подзырено у Старого мавра.

<br />
var a = 0*a; a === a; // false<br />

Известная бага – проверка на isNaN. NaN не равен ничему, даже самому себе.

$(&#8216;#zoomed-in&#8217;).parent().show();return void(0);

Убираем Mature content filter на deviantart, все это пишем в консольке. Или в адресной строке, но предваряя “javascript:”.

О vk

Сидел в офисе, жевал шоколадку и вертел в руках обертку и вдруг взгляд зацепился за что-то знакомое. На упаковке шоколадки указан адрес сайта: www.vk.ru. Естественно, побороть любопытство мне не удалось, и я обнаружил, что этот адрес занимает сайт кондитерской фабрики “Верность качеству”. Тогда мне стало интересно, и я посетил еще несколько домЕнных зон с тем же именем. Результат:

http://vk.com/ – соцсеть
http://vk.ru/ – кондитеская фабрика
http://vk.org/ – христианский летний лагерь
http://www.vk.net/ – закрытый ресурс, без www недоступен
http://vk.com.ua/ – поставщик промышленного оборудования
http://vk.de/ – занят чем-то непонятным
http://vk.pl/ – магазин по продаже кассовой аппаратуры

В принципе, покопать можно было и дальше: стран-то много, но меня еще работа ждала.

Антиблок Subscribe.ru

Недавно наткнулся я на интересную статью в одной группе в subscribe.ru, но… она оказалась недоступной для пользователя вне группы. Блок – почти что по феншую: черный экран и сообщение типа “давай в группу”. Вспомнив, что когда-то я снимал ограничение с помощью Firebug, я посмеялся над наивностью создателей сервиса и показал другу: убиваем пару тегов и стилей и все, можно читать. А друг посоветовал мне написать скрипт и запостить его в блог. Короче, хватай его:

javascript:var d=document.getElementsByTagName(&#8216;div&#8217;),dl=d.length;while(dl&#8211;){if(/\bblockUI\b/i.test(d[dl].className)){d[dl].parentNode.removeChild(d[dl]);}}document.body.style.overflow = &#8216;visible&#8217;;void(0);

Выполнен скрипт в виде сниппета и запускается через адресную строку (копируй в нее код, начиная с “javascript:”). Только будь внимателен – некоторые “умные” браузеры любят обрезать “javascript:” в начале строки, поэтому это придется прописать вручную. А можешь еще сделать финт ушами: сохранить страницу в избранное и изменить ее адрес на строку скрипта. Тогда при попытке открытия сохраненной страницы будет убиваться блок Subscribe.

Moodstream

Moodstream

По адресу http://moodstream.gettyimages.com/ уютно расположился сервис по созданию настроения. Во флеше играет музыка и меняются слайды, которые могут быть изображениями или видео.

Настраивается все это в лево-верхней менюшке. Выбираешь установки с большого такого колеса или дергаешь ползунки над ним вправо-влево, затем кликаешь на розовую кнопку – и вуаля, настроение подобрано. А ползунки в настройках такие: радостнее-грустнее, спокойнее-живее, веселее-серьезнее, ностальгичнее-современнее, теплее-холоднее. В правой части меню настроек можешь выставить способ смены картинок, частоту ч/б картинок, частоту музыки со словами, громкость звука и длительность отображения картинок.

А в качестве приятного бонуса можешь щелкать по кнопке + внизу слева, составляя свою программу. Сохранить/редактировать программу можно в верхнем правом углу, но для этого придется регистрироваться.

Как видишь, все просто и незатейливо.

zoom в Safari

Сегодня столкнулся со странной ошибкой в поведении одного сайта в Safari на IPad. Во всех браузерах сайт отображался нормально, но только на IPad’е центральная часть улетала вправо почти на 100%. Дополнительная неприятность в том, что у меня нет IPad’а, а исправлять ошибку, которую я не вижу, я еще не умею. Пришлось качать себе MobiOne Studio с их эмуляторами и смотреть сайт через них.

Читать полностью

Презентации о javascript

По ссылке можно найти несколько полезных техник создания приложений на javascript. Не поленись в них разобраться – там много интересного.

Музыка для разогрева:

Аудиозапись: Adobe Flash Player (версия 9 или выше) требуется для воспроизведения этой аудиозаписи. Скачать последнюю версию здесь. К тому же, в Вашем браузере должен быть включен JavaScript.

Граватар на CSS

Граватар на CSS

Накопал в сети прикольный эффект, теперь вот делюсь им с тобой. Заключается он в растягивании/сжатии сторон элементов с помощью css. С чего все начинается?

</p>
<div class="trapecia"></div>
<style type="text/css">
.trapecia{
	background: #080;
	border: 1px #f80 solid;
	border-width: 20px 40px 100px 150px;
	width: 200px;
	height: 100px;
}
</style>
<p>

Читать полностью

Чем опасен Ajax

Чем опасен Ajax

Случай из практики с моралью скорее для себя.

Занимаюсь сейчас поддержкой одного сайта на Битриксе. Сайт этот верстал и прогал изначально не я, а какой-то другой прогер. Сделал он все на совесть – сайт летал, относительно, конечно, потому что Битрикс. Там был каталог товаров с нафигацией на ajax и возможностью хождения без js, так как ссылки были рабочими. Но чувак не был знаком с history.pushState(), так как в то время эта технология только-только зарождалась. И вот клиенты стали негодовать – как же так, они ходят по каталогу, а кнопка “Назад” ведет не в предыдущую категорию? Пришлось ему убрать ajax. А тут у заказчика еще идея возникла: пусть карточки товара отображаются во всплывающих окнах. Сказано – сделано. Теперь все ссылки ведут на карточки товаров. Пустые. Не, ну правда – чего зря траффик гонять? А вот с этим пришлось разбираться мне, когда обнаружилось, что ссылки с выдачи Яндекса ведут на эти самые карточки товаров.

Поэтому я сделал некоторые выводы на будущее:
- сайт должен работать и без js
- если для навигации используется ajax, надо обязательно проверять, умеет ли браузер работать с history.pushState(). если нет – использовать обычную нафвигацию
- движок должен иметь возможность выдавать код только контента, чтобы не гонять хидер и футер при каждом запросе
Вроде бы логично, но не всегда эти три пункта выполняются. Так что будь осторожнее, когда столкнешься с ajax’ом.

Скрипт простого шифрования

Скрипт простого шифрования

В свое время, чистя html-файлы от вирусов, я наткнулся на забавный способ шифрования строк. Строки авторы вируса формировали с помощью чисел, причем все это выглядело примерно так: window[17795081..toString(36)](‘!’); Ну, с window все понятно, доступ к свойству объекта осуществляется с помощью квадратных скобок (в javascript так можно), а круглые скобки означают вызов метода. Но, блин, что за фигня там в квадратных скобках?!

Естественно, пришлось гуглить, чтобы удовлетворить свой интерес. Все, как всегда, оказалось просто.

Читать полностью