javascript array check

Posted in programmer on Agosto 12th, 2010 by admin

A lot of solutions of checking if javascript variable is an array. This one is working for me well across all used browsers.

  1. function isArray(obj) {
  2.  return Object.prototype.toString.call(obj) === ‘[object Array]‘;
  3. }

php date diff

Posted in PHP, myšlenky, programmer on Julio 30th, 2010 by admin

Simple and easy solution for counting difference between two dates in days for PHP 4+. Input in common DB form ‘YYYY-MM-DD’

  1.  
  2. function DateDiff($date1,$date2)
  3. {
  4.  $date1 = strtotime(substr($date1,0,10)." 23:59:59");
  5.  $date2 = strtotime(substr($date2,0,10)." 23:59:59");
  6.  
  7.  $daysDiff = ($date2$date1)/(24 * 60 * 60);
  8.  
  9.  return abs(round($daysDiff));  
  10. }
  11.  

MSSQL connect

Posted in programmer on Diciembre 5th, 2009 by admin

MSSQL doesn’t use CONCAT function as MYSQL. But the same effect has connecting columns with plus operator.

select col1 + ' ' + col2 as col3

w3 Valid a link target attribute

Posted in programmer on Noviembre 20th, 2009 by admin

Target attribute used inside link tag turns the page contnent into a non w3c valid. (for strict and transitional DOCTYPE). There is as simply way to add it with javascript.

Using jQuery

  1. <javascript>
  2.   $("#somewhere a").attr("target","_blank")
  3. </javascript>
  4.  
  5. <div id="somewhere">
  6. <a href="http://go.away">please</a>
  7. </div>

jquery – Retrieve the href value of a link inside a div

Posted in programmer on Agosto 20th, 2009 by admin

There is a short way to set <a> href value as a click event for full container. It’s useful when we need to set whole area to be active.

atodiv

Set click event for container from a href inside.

JAVASCRIPT

$("div").click(function () {
window.location=($(this).find("a.go").attr("href"))
});

HTML

<div>
<p> ... any content ... </p>
<a class="go" href="http://www.metalmap.org">link</a>
</div>

Specific class needed if there is more than one <a> tag inside parent container.

Increase the number of allowed connection

Posted in programmer on Mayo 5th, 2009 by admin

There is a default limit for simultaneous TCP connections to one workstation under windows XP. The reason is decreasing of spreading worm viruses while infecting.

When we need to change this value, there is the possibility with using patch or manual editing of tcpip.sys This situation may occur when we’d like use the workstation as a node for working proxy or similar. Windows HOME edition allows max 5 connection, Windows Prfessional allows the connection of 10.

This restriction may disable sharing in network, when connection aren’t closed properly.

full article: http://www.speedguide.net/read_articles.php?id=1497

Tags:

Too small initial heap

Posted in programmer, zábava on Marzo 17th, 2009 by admin

Too small initial heap for new size specified

Pro člověka, který není zrovna kovaný v native prostředí JAVA aplikací může být tato hláška smrtící. Po jisté aktualizace Java Virtual Machine se začala objevovat tato hláška při pokusu o spuštění geniálního (free) proxy serveru SCACHE. Po této hlášce se program ukončil a musím říct, že mi dalo několik hodin pátrání jak z toho ven.

Pro správné řešení je potřeba rozšířit parametr volající spuštění programu o příslušnou direktivu pro alokování paměti:

tedy kromě: -ms1m

Navíc direktivu -Xms, která je třeba vhodně nakombinovat. Pozor na zápis s předponou, takže např: “-Xms16m”

Ovládání paměti JAVA VM konkrétně a na pevno windows lze vyčíst na podpoře IBM

regular expression matching file extension

Posted in programmer on Enero 28th, 2009 by admin

For unknow reason the expected regular expression

eregi("[jpe?g|gif|bmp|png]$",$from)

doesn’t work :(

There is an opportunity with using preg_match as:

preg_match("/^.*.(jpg|jpeg|png|gif)$/i",$from)

zobrazení xml – windows-1250 v MS IE

Posted in programmer on Enero 23rd, 2009 by admin

Windows-1250 sice nepatří mezi hoch time kódování, ale jednou už tu je takže se na něj dá narazit. Při interpretaci XML souboru nestačí jen nastavit kódování v hlavičce xml definice. S tím se spokojí pouze ostatní browsery na stvětě.

<\?xml version="1.0" encoding="WINDOWS-1250"'>

V souboru je navíc třeba uvodit header:

header('Content-Type: application/xml; charset=windows-1250');

Bez tohoto se cílený charset nenastaví.

chyba diakritiky

Posted in programmer on Noviembre 21st, 2007 by admin

nebo spíš její detekce od prohlížeče i přes to, že je správně definovaná v HEAD stránky

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

se může klidně přihodit když není nastavena navíc jako header parametr php části.

  1. header("Content-Type:text/html; charset=utf-8");

Nutnost řádku není to pravidlem a vysloveně záleží na parametru hostingu. Nicméně tomu kdo o tom neví to může zamotat hlavu, protože se to blbě dohledává.

Mozilla vs. World – getElementById

Posted in programmer on Noviembre 7th, 2007 by admin

O javascriptu, který používá mozilla by se dalo říct, že je standaradnější než standrad. Narozdíl od prohlížečů, který museli řešit implementaci javascriptu ještě předtím, než vznikla nějaká normovaná dohoda, přišla k hotovému. Tedy hotovému standradu. Ten domluvený měl však jisté rozdíly oproti tomu jak se předpokládalo že bude. OPERA se sladila na vlnu podobojího někdy v půlce verze 6. Tzn., že v rámci programování fungovaly skripty společně v IE a OPEŘE a MOZILLE se museli dopisovat extra. Vzhledem k tomu, že rozdí je v přístupu k identifikátorům objektů, tak se to naštěstí dá řešit přes funkce, které překládají podle příslušného typu prohlížeče. Pamatuju si, že někdy před 4 rokama bylo běžné psát 5 modifikací skriptu pro různé prohlížeče.

  1. function getElement(aID)
  2. {
  3. return (document.getElementById)
  4. ? document.getElementById(aID)
  5. : document.all[aID];
  6. }
  7.  

Toto řešení je poněkud skoupé k majitelům cizokrajných prohlížečů. Tzn. že nepostihuje cca. 0.8% uživatelů.

PHP – regex – odstranění teček z názvu souboru

Posted in programmer on Octubre 19th, 2007 by admin

řešení pomocí regulárního výrazu. funguje na přípony různé délky včetně nulové.

  1. if (eregi("\.[A-Z0-9]{1,4}$",$from,$regs))
  2. {
  3.  $length = ((strlen($regs[0]))*(-1));
  4.  # část před příponou
  5.  $from = eregi_replace("\.","_",substr($from,0,$length))
  6.  # přípona
  7.  $from .= substr($from,$length);
  8. }

/ regex filename dots replace /

PHP multi echo

Posted in programmer on Septiembre 28th, 2007 by admin

Vlastní funkce echo, která je tu vymalovaná ušetří řadu práce, čekání, kódu a podmínek.

klasika

aneb použití stejně jako funkce echo

  1. _echo("Tradááá!");

Podmíněný výstup

Občas výstup záleží na tom, zda je či není prázdná zobrazovaná proměnná. např.

  1. if ($YES!="") echo "<h1>$YES</h1>";
zápis pmocí echo funkce:
  1. echo($YES,"<h1>%s</h1>");
Jedná se vlastně o obrácený zápis funkce printf. Proč obrácený by mělo pozornému čtenáři dojít z předchozího ostavce. Důležité je, že funkce zajistí aby se v případě, že bude $YES=="", nevypsalo prázdný <h1></h1>

Skrytý výstup

Během stavby programu potřebuje člověk často sledovat mezistav či hodnoty všelijakých proměnných.

  1. _echo($YES,true);

zajistí, že se proměnná YES vypíše okomentovaná <!– tagem, takže bude vidět akorát ve zdrojovém kódu stránky.

Všechno se vším

_echo() pobere object, pole i string. Formátovací masky a skrývání jde navzájem kombinovat napříč všem typům proměnných.

zdrojový kód

  1. function _echo($INPUT,$MASK="%s",$hidden = false)
  2. {
  3. if ($MASK=="true" || $MASK=="1")
  4. {  $hidden = false;   $MASK = "%s";  }
  5.  
  6. if ($MASK=="false" || $MASK=="0")
  7. {  $hidden = true; $MASK = "%s"; }
  8.  
  9. if (is_array($INPUT) || is_object($INPUT))
  10. {
  11.  $INPUT = print_r($INPUT,true);
  12.  $MASK  = sprintf( ($hidden) ? "%s" : "<p r e>%s</p r e>",$MASK);
  13. }
  14.  
  15. if (trim($INPUT)!="")
  16. {
  17. $OUTMASK = ($hidden) ? $OUTMASK = "<!- – %s – ->" : "%s";
  18. printf($OUTMASK,sprintf($MASK,$INPUT));
  19. }
  20.  

Mozilla hidden input display bug

Posted in programmer on Octubre 12th, 2006 by admin

Je téměř módní nadávat na IE ohledně interpretace CSS. Má svoje mouchy, je to pravda, obzvláště mizení obsahu po použití float bez dvojitého <br clear=..> je mizérie, ale CSS Hacks and Filters nabízí sadu mnoha elegantních řešení nejen na tento ořech.

Dnes jsem narazil čistě náhodou na BUG, který má Mozilla Firefox. Spočívá ve špatném zobrazení hidden input boxu. Pokud máme v css globálně definován pro <input> vlastní border:

  1. input { border: 1px solid #fff }
se drze zobrazí napříč svému parametru jako prázdné ohraničení (vlastně jen obrysová čára – přestože je input skrytý parametrem hidden!). Je tedy třeba doplnit o negaci border parametru. např:

  1. <input type="hidden" style="border: none;">

nebo ho deklarovat samostatně což znamená zavést třídu.

CSS hack – DIV size

Posted in programmer on Septiembre 24th, 2006 by admin

Dnes jsem našel pěkné řešení na problém s počítáním velikostí DIVů.

  1. .mybox
  2.  { width: 200px; border: 5px solid #fff; padding: 10px; }
  3.  
Tento objekt, bude mít v IE.x prohlížečích šířku 200px, v ostatních prohlížečích ale 230px. Stačí včak doplnit podmínku:
  1. * html .mybox {
  2.  width: 230px;
  3. }
která zařídí že v IE bude mít zrovna takovou šířku, neb tato podmínka je čitelná pouze tam.

my PHP implode()

Posted in programmer on Septiembre 20th, 2006 by admin

na prázdný vstup reaguje odobně jako funkce in_array(), reaguje i funkce implode(). Napadlo mě opět vylepšení, tentokrát navíc s jednoduchým rozšířením pro formátování výstupu

  1. function my_implode($como="\n",$que,$plus = "%s")
  2. {
  3.  return (!is_array($que)) ? "" : sprintf($plus,implode($como,$que));   
  4. }

kromě kontroly pole, je navíc přidaný 3. parametr, který umožní výstup rovnou naformátovat, neboli obalit. Takže když funkci zavoláme například:

  1. $list = array("a","b","c","d");
  2. my_implode("+",$list," = ( %s ) ";

nám vyleze: = ( a + b + c + d )

PHP multi array to tree list – parse recursively

Posted in programmer on Septiembre 14th, 2006 by admin

Tahle rekurzivní funkce, kterou jsem před chvílí vypotil, vygeneruje z multi array (n-rozměrné pole) neboli n-pole uspořádaný seznam. Navíc ve XHTML, tedy řeší správně symetrii vnořených tagů odrážek. Rekurze zajišťuje řešení pro n-rozměrné pole.

  1. function TreeRead($tree,$BUFFER=array())
  2. {
  3.  
  4.  foreach ($tree as $k=>$v)
  5.         {              
  6.         if (is_array($v))
  7.                 {              
  8.                 echo "\n<ul>\n<li>".$k;
  9.                 TreeRead($v,$BUFFER);
  10.                 echo "</li>\n</ul>";   
  11.                 }
  12.         else
  13.                 {
  14.                 $BUFFER[]=$v;
  15.                 }
  16.         }
  17.  
  18.   if (count($BUFFER)>0)
  19.         {
  20.         echo "\n<ul>\n <li>".(implode("</li>\n <li>",$BUFFER))."</li>\n</ul>\n";       
  21.         }
  22. }
  23.  

in_array crash

Posted in programmer on Agosto 28th, 2006 by admin

PHP funkce inarray() je protivná s tím, že když se volá s haystackem, který nejni pole, končí chybou. což je škoda. Napadla mě velmi jednoduchá jednořádková modifikace.

  1.  
  2. function myinarray($que,$donde)
  3. {
  4.  return (!isarray($donde)) ? false : (in_array($que,$donde));
  5. }
  6.  

Regexp – header 2 anchor

Posted in programmer on Julio 10th, 2006 by admin

Dnes jsem přišel na tento jednoduchý, leč efektní a efektvní regulární výraz, který transformuje header s id tagem na odkaz.

  1. $exam = ‘<h1 id="level1">Nadpis</h1>’;
  2. $patt = "{(<h)([1-6])(.id=\")(.+?\")(.+?)(</h[1-6])}";
  3. $repl = \2~<a href="#\4\5</a’;
  4. REGEXP($patt,$repl,$exam) = 1~<a href"#level1">Nadpis</a>
Výstup si uchovává informaci o úrovni headeru, ze kterého vznikl, aby se s tim dali dělat další kousky, jako například třídění do úrovní atd.

Když jsou REGISTER_GLOBALS off

Posted in programmer on Noviembre 25th, 2005 by admin

Některý vtipný servery, mají z nějakého vtipného důvodu, vtipně vypnutý REGISTERGLOBALS, což způsobuje, že se proměnný nepřenáší v uvozené podobě, ale je třeba přistupovat včetně uvedení jejich důvodu což už vtipné nejní, neb je to dlouhé. Proto je šikovný malý převod:

  1. foreach ($HTTP{GET or POST}VARS as $key=>$v)
  2.         ${$key}=$v;
což lze zapsat i jednopříkazovým:
  1. extract(${GET or POST});