20 июня 2010, 16:57 более месяца назад
Лучший xml2array
function xml2array(&$string) { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parse_into_struct($parser, $string, $vals, $index); xml_parser_free($parser); $mnary=array(); $ary=&$mnary; foreach ($vals as $r) { $t=$r['tag']; if ($r['type']=='open') { if (isset($ary[$t])) { if (isset($ary[$t][0])) $ary[$t][]=array(); else $ary[$t]=array($ary[$t], array()); $cv=&$ary[$t][count($ary[$t])-1]; } else $cv=&$ary[$t]; if (isset($r['attributes'])) {foreach ($r['attributes'] as $k=>$v) $cv['_a'][$k]=$v;} $cv['_c']=array(); $cv['_c']['_p']=&$ary; $ary=&$cv['_c']; } elseif ($r['type']=='complete') { if (isset($ary[$t])) { // same as open if (isset($ary[$t][0])) $ary[$t][]=array(); else $ary[$t]=array($ary[$t], array()); $cv=&$ary[$t][count($ary[$t])-1]; } else $cv=&$ary[$t]; if (isset($r['attributes'])) {foreach ($r['attributes'] as $k=>$v) $cv['_a'][$k]=$v;} if (isset($r['value'])) $cv['_v'] = $r['value']; } elseif ($r['type']=='close') { $ary=&$ary['_p']; } } _del_p($mnary); return $mnary; } function _del_p(&$ary) { foreach ($ary as $k=>$v) { if ($k==='_p') unset($ary[$k]); elseif (is_array($ary[$k])) _del_p($ary[$k]); } }
Последняя функция удаляет результаты рекурсий ;)
15 июня 2010, 16:21 более месяца назад
почти аналог GM_xmlhttpRequest
GM_xmlhttpRequest = function(params) { var request = new XMLHttpRequest() request.onreadystatechange = function() { if (params.onreadystatechange) params.onreadystatechange(request) if (request.readyState == 4) { if (request.status >= 200 && request.status < 400) if (params.onload) params.onload(request) else if (params.onerror) params.onerror(request) } } request.open(params.method, params.url, true) if (params.headers) for (name in params.headers) request.setRequestHeader(name, params.headers[name]) request.send(params.data) return request }
11 июня 2010, 09:49 более месяца назад
CSS3: Перевод больших строк в новый рядок (pre-wrap)
pre { white-space: pre; /* CSS 2.0 */ white-space: pre-wrap; /* CSS 2.1 */ white-space: pre-line; /* CSS 3.0 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: -moz-pre-wrap; /* Mozilla */ white-space: -hp-pre-wrap; /* HP Printers */ word-wrap: break-word; /* IE 5+ */ }
9 июня 2010, 10:18 более месяца назад
Сравнение таблиц в двух БД (и больше)
Когда дохера работы, начинаешь страдать такой ерундой :)Раз в несколько месяцев приходится сравнивать БД, и каждый раз в ручную. Один даже раз софт сутки искал, но он ужасен, весь. Немного пострадав, минут 30, получился такой код:
- собираем всё в масcив;
- выводим всё красиво в табличках;
- подключаем jQ и делаем удобную «обёрточку»;
- …
- Profit
$user = "root"; $userp = ""; mysql_connect("localhost", $user, $userp) or die(mysql_error()); $table2compare = array("test1", "test2"); $comparedtables = array(); $i = 0; foreach ($table2compare as $tablename){ $comparedtables["title"][$i] = $tablename; $db = mysql_query("SHOW TABLES IN $tablename"); while($dbt = mysql_fetch_array( $db )){ $table = mysql_query("SHOW COLUMNS FROM $dbt[0] FROM $tablename "); while($tbf = mysql_fetch_array( $table )) $comparedtables["tables"][$dbt[0]][$i][] = $tbf; } $i++; } echo "<table><tr>"; for ($j = 0; $j < $i; $j++) echo "<td>".$comparedtables["title"][$j]."</td>"; echo "</tr>"; foreach ($comparedtables["tables"] as $table => $fields) { echo "<tr>"; for ($j = 0; $j < $i; $j++) { if ($j > 0) $eq = $fields[$j] == $fields[0]; else $eq = true; echo "<td valign='top' ".(!$eq ? "style='background: #fcc;'" : "").">"; if (empty($fields[$j])) continue; echo "<span>$table</span><br><table rules=all frame=box cellpadding='2'> <tr> <td>Field</td> <td>Type</td> <td>Null</td> <td>Key</td> <td>Default</td> <td>Extra</td> </tr>"; foreach ($fields[$j] as $field) echo "<tr> <td>$field[0]</td> <td>$field[1]</td> <td>$field[2]</td> <td>$field[3]</td> <td>$field[4]</td> <td>$field[5]</td> </tr>"; echo "</table></td>"; } echo "</tr>"; } echo "</table>"; mysql_close(); <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $("table table").hide(); $("table span").click(function(){ $(this).next().next().toggle(); }).css({"cursor":"pointer"}); }); </script>
26 мая 2010, 16:25 более 2-х месяцев назад
getBoxObjectFor для FireFox 3.6 и выше
if(typeof document.getBoxObjectFor == "undefined") { document.getBoxObjectFor = function(elem) { var obj = new Object; var rect = elem.getBoundingClientRect(); obj.y = rect.top; obj.x = rect.left; obj.width =Math.abs(rect.right-rect.left); obj.height = Math.abs(rect.bottom-rect.top); return obj; } }
24 мая 2010, 11:05 более 2-х месяцев назад
Как делать CRX для Google Chrome
Так как всегда забываю о сабже, и каждый раз долго ищу, решил таки себе сохранить.
chrome.exe --pack-extension="C:\MyTheme"
Запускать с командной строки win+r
ps: chrome нужно закрывать, полностью!
23 мая 2010, 22:41 более 2-х месяцев назад
usejquery.org.ua
- блог
- мои наработки
- Копи-зона
17 мая 2010, 09:47 более 2-х месяцев назад
Firebug Lite Snippet (bookmarklet)
А вот и он
javascript:var firebug=document.createElement('script'); firebug.setAttribute('src', 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'); document.body.appendChild(firebug); (function(){if(window.firebug.version) {firebug.init();}else{setTimeout(arguments.callee);}})(); void(firebug);
Для удобства, запихаем его в текстареа
15 мая 2010, 21:18 более 2-х месяцев назад
Javascript: get Array Unique Values
getUniqueValues = function (arr) { var hash = new Object(); for (j = 0; j < arr.length; j++) {hash[arr[j]] = true} var array = new Array(); for (value in hash) {array.push(value)}; return array; }
12 мая 2010, 21:21 более 2-х месяцев назад