| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
9 марта 2010, 18:07 3 дня назад
Конвертируем в ASCII неведомые символы для cp1251 и копируем в буфер
Для того что бы конвертить неведомые символы, мы должны их отCharCodить, но функция конвертит всё подряд, поэтому мы предварительно составляем массив наших символов, и если не наши, мы их через ASCII-код выдаём :)
зы: прикрутил сразу туда же ZeroClipboard :)
cp1251 = [33,34,35,36,37,38,39,40,41,42,43,44,45,46,48,49,50,51,52,53,54, 55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, 76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97, 98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113, 114,115,116,117,118,119,120,121,122,123,125,126,1025,1028,1030, 1031,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051, 1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064, 1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077, 1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090, 1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103, 1108,1110,1111,8470]; function in_array(myValue,myArray){ function equals(a,b){return (a === b);} for (var i in myArray) if (equals(myArray[i],myValue)) return true; return false; } function fetchAscii(){ var obj = document.getElementById("converter").value, convertedObj = '', converted = document.getElementById("converted"); var _length = obj.length; for(i = 0; i < _length; i++) convertedObj += (in_array(obj.charCodeAt(i),cp1251) ? '&#' : '&#') + obj.charCodeAt(i) + ';'; converted.innerHTML = convertedObj; return false; }
зы: прикрутил сразу туда же ZeroClipboard :)
var clip = new ZeroClipboard.Client(); clip.setHandCursor( true ); clip.addEventListener('mouseOver', function(clip){ clip.setText( document.getElementById("converted") .innerHTML .split("&") .join("&")) } ); clip.glue("copy");Особенность в том, что текст, который копируется, постоянно изменяется, то есть динамический %)
24 февраля 2010, 21:30 16 дней назад
Apache: Premature end of script headers
Нужно на хомяк сайта права поставть 755 ;) ага, ок!
24 февраля 2010, 10:25 16 дней назад
php: первый и последний в массиве %)
// значения $first = reset($array); $last = end($array); // ключи $first = reset(array_keys($array)); $last = end(array_keys($array));
22 февраля 2010, 12:29 18 дней назад
Javascript: конвертация типов переменных
var myVar = "3.14159", str = ""+ myVar,// в стринг (string) int = ~~myVar, // в интеджер (integer) float = 1*myVar, // во флоат (float) bool = !!myVar, // в булен - все непустые строки и числа кроме 0 будут true array = [myVar]; // в массив
17 февраля 2010, 09:34 23 дня назад
Javascript: Строку в массив (string to array)
var nums = '1,2,3,4,5,6,7,8,9,10'.split(',');
10 февраля 2010, 18:33 30 дней назад
JavaScript викторина от perfectionkills.com
С утра твитор порадовал интересной викториной.
Немного подумав над ней, оказалось что решил я её без ошибок \m/, в отличии от многих других ;) (если бы на время, то наверное бы слил)…
По просьбам трудящихся, небольшие объяснения (в комментариях к викторине их можно частями найти)
Немного подумав над ней, оказалось что решил я её без ошибок \m/, в отличии от многих других ;) (если бы на время, то наверное бы слил)…
По просьбам трудящихся, небольшие объяснения (в комментариях к викторине их можно частями найти)
(function(){ return typeof arguments; })();
Вернёт object, потому что arguments всегда задана, и выводит все переменные которые приходят в функциюvar f = function g(){ return 23; }; typeof g();
Получим ошибку, фугкция g() не объявлена. Если запустить f() получим «number»(function(x){ delete x; return x; })(1);
Небольшой подвох ;) Delete внутри функций не работает ;) Ответ 1var y = 1, x = y = typeof x; x;
Объявление в «колоне» идёт слева на право, получаем в итоге строку «undefined»(function f(f){ return typeof f(); })(function(){ return 1; });
функция выполняется вконце, возвращает 1, она же идёт в начало аргументом функции f(), и тип 1 — «number»var foo = { bar: function() { return this.baz; }, baz: 1 }; (function(){ return typeof arguments[0](); })(foo.bar);
Есть объект foo с методом bar, и функция которой в качестве аргумента передаём наш метод. Почему в итоге не «function»? this в обжекте ;) Лол! ок!var foo = { bar: function(){ return this.baz; }, baz: 1 } typeof (f = foo.bar)();
А ну как конструкция, гибкость? :) смотрим вышеvar f = (function f(){ return "1"; }, function g(){ return 2; })(); typeof f;
исполняется последняя в списке функция g() — потому «number»var x = 1; if (function f(){}) { x += typeof f; } x;
Опять функция в условии (смотри 2), в итоге получаем «1undefined»var x = [typeof x, typeof y][1]; typeof typeof x;
типоф от типоф всегда стринг ;)))(function(foo){ return typeof foo.bar; })({ foo: { bar: 1 } });
у нас просто получилось foo.foo.bar = 1, обжект в обжекте — масло масляное, потому «undefined»(function f(){ function f(){ return 1; } return f(); function f(){ return 2; } })();
Последняя объявленная нижняя, потому получаем 2 %)function f(){ return f; } new f() instanceof f;
инстансоф буллевый оператор, и итог функции f() не может быть в «движении» функции f.with (function(x, undefined){}) length;
оператор with поиска находит оба аргумента, получаем 2 %)
9 февраля 2010, 11:34 более месяца назад
jQuery resourses
После 1.4 сразу выходит 1.4.1 и скоро будет 1.4.2 :)
Такая активность подтолкнула много других людишек, и было создано много полезных ресурсов и обновлено старых:
ps: больше инфы о новом Jq тут
Такая активность подтолкнула много других людишек, и было создано много полезных ресурсов и обновлено старых:
- jQuery souse viewer — каждую функцию теперь быстро и удобно можно найти
- jQuery API — теперь в удобном формате
- jQuery UI — скоро 1.8 и новые плюшки
- jQuery Documentation — теперь с человеческим лицом
- jQuery Meetups Ukraine — милости просим, вопросы, предложения. Когда будет много людишек, можно будет организовать конференцию
ps: больше инфы о новом Jq тут
27 января 2010, 17:46 более месяца назад
Утилиток нужных пост: CSS и JS уменьшаторы (minifier)
Последнее время часто пользуюсь, и так же часто не могу найти рабочие сайты. То домен пропал, то домен украли, то тупо сайт лежит. По этому сделал два зеркала для себя (если кому-то ещё пригодится, я не против ;) + любимый сайт для сжатия скриптов.
26 января 2010, 18:56 более месяца назад
CSS: СЕО-колонка :)
SEO-колонка спросите вы? Ничего тут страшного нет. Это просто колонка которая идёт за контентом. По сути контент поисковик видит сразу, и сайт более СЕО-дружен ;)
Как же сделать колонку?
Работает даже в ИЕ, проблем нет (нужно только добавить доктайп), а для правой колонки:
ps: всё просто и не сложно ;) Релейтивы и зум 1 — кажись не надо ;) но пускай полежат.
<html> <head> <title>Column page</title> </head> <body> <div class="wrapper"> <div class="content"> <span>text</span> </div> <div class="sidebar"> <span>text</span> </div> </div> </body> </html>
Как же сделать колонку?
- указываем длину текстового блока (для чтения рекомендовано не больше 600px на 14й фонт)
- указываем блоку маржин с нужной стороны в длину колонки
- оба летают слева, а у колонки левый маржин 100%
.wrapper { width: 960px; margin: 0 auto; clear: both; position: relative; zoom: 1; } .wrapper span{ display: block; margin: 30px; } .content{ float: left; margin-left: 230px; width: 730px; position: relative; } .sidebar{ margin-left: -100%; width: 230px; float: left; }
Работает даже в ИЕ, проблем нет (нужно только добавить доктайп), а для правой колонки:
- колонка: маржин справа -длина колонки
- контент: маржин справа длина колонки
.rightcolumn .content{ margin-left: 0; margin-right: 230px; } .rightcolumn .sidebar{ margin-left: -230px; }
ps: всё просто и не сложно ;) Релейтивы и зум 1 — кажись не надо ;) но пускай полежат.