<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Takietam</title>
	<atom:link href="http://brinf.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://brinf.wordpress.com</link>
	<description>Takietam różne i podobne</description>
	<lastBuildDate>Fri, 20 Jan 2012 09:01:31 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='brinf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Takietam</title>
		<link>http://brinf.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://brinf.wordpress.com/osd.xml" title="Takietam" />
	<atom:link rel='hub' href='http://brinf.wordpress.com/?pushpress=hub'/>
		<item>
		<title>SQL Server 2008 &#8211; dodaj grupę lokalną jako login</title>
		<link>http://brinf.wordpress.com/2012/01/09/sql-server-2008-dodaj-grupe-lokalna-jako-login/</link>
		<comments>http://brinf.wordpress.com/2012/01/09/sql-server-2008-dodaj-grupe-lokalna-jako-login/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 07:38:12 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[administracja]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=207</guid>
		<description><![CDATA[Przy zarządzaniu dostępami do SQL Servera możemy dodać grupę użytkowników jako jeden login. Potem ułatwia to zarządzanie &#8211; zamiast tworzyć i kasować dostęp do serwera i bazy dla każdego nowego użytkownika wystarczy go dodać lub usunąć z grupy. Jak to się robi &#8211; na przykładzie ustawienia lokalnej grupy administratorów serwera jako sysadminów SQL Servera: USE [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=207&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Przy zarządzaniu dostępami do SQL Servera możemy dodać grupę użytkowników jako jeden login. Potem ułatwia to zarządzanie &#8211; zamiast tworzyć i kasować dostęp do serwera i bazy dla każdego nowego użytkownika wystarczy go dodać lub usunąć z grupy. Jak to się robi &#8211; na przykładzie ustawienia lokalnej grupy administratorów serwera jako sysadminów SQL Servera:</p>
<p><code>USE [master]<br />
GO<br />
CREATE LOGIN [NAZWA_SERWERA\Administrators]<br />
FROM WINDOWS<br />
WITH DEFAULT_DATABASE=[master]<br />
GO</p>
<p>EXEC master..sp_addsrvrolemember<br />
	@loginame = N'NAZWA_SERWERA\Administrators',<br />
	@rolename = N'sysadmin'<br />
GO</code></p>
<p>Uruchomienie takich poleceń wygeneruje błąd:</p>
<p><code style="color:#e00;">Msg 15401, Level 16, State 1, Line 1<br />
Windows NT user or group 'NAZWA_SERWERA\Administrators' not found. Check the name again.<br />
Msg 15007, Level 16, State 1, Procedure sp_addsrvrolemember, Line 68<br />
'NAZWA_SERWERA\Administrators' is not a valid login or you do not have permission.</code></p>
<p>Okazuje się, że jeśli chcemy dodać grupę lokalną musimy <a href="http://support.microsoft.com/kb/324321/en-us">zamiast nazwy serwera użyć BUILTIN</a>:</p>
<p><code>USE [master]<br />
GO<br />
CREATE LOGIN [BUILTIN\Administrators]<br />
FROM WINDOWS<br />
WITH DEFAULT_DATABASE=[master]<br />
GO</p>
<p>EXEC master..sp_addsrvrolemember<br />
	@loginame = N'BUILTIN\Administrators',<br />
	@rolename = N'sysadmin'<br />
GO</code></p>
<p>I działa.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=207&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2012/01/09/sql-server-2008-dodaj-grupe-lokalna-jako-login/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP + Apache + Imagick na Windows 7</title>
		<link>http://brinf.wordpress.com/2012/01/01/php-apache-imagick-na-windows-7/</link>
		<comments>http://brinf.wordpress.com/2012/01/01/php-apache-imagick-na-windows-7/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 15:36:46 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=200</guid>
		<description><![CDATA[Zadanie &#8211; zainstalować obsługę Image Magick na maszynie deweloperskiej z Windows7 64-bit. Integracja z PHP 5.3.8 jako moduł Apache 2.2.x. PHP 5.3.8 musi być w w wersji Thread Safe, bo ona jest przewidziana do integracji jako moduł Apache 2.2 (zawiera bibliotekę php5apache2_2.dll, której jest pozbawiona wersja Non Thread Safe przeznaczona na dostęp CGI). Ponieważ do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=200&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zadanie &#8211; zainstalować obsługę Image Magick na maszynie deweloperskiej z Windows7 64-bit. Integracja z PHP 5.3.8 jako moduł Apache 2.2.x.</p>
<p>PHP 5.3.8 musi być w w wersji Thread Safe, bo ona jest przewidziana do integracji jako moduł Apache 2.2 (zawiera bibliotekę php5apache2_2.dll, której jest pozbawiona wersja Non Thread Safe przeznaczona na dostęp CGI). Ponieważ do budowy PHP stosowany jest kompilator VC9, to potrzebne są binaria Apache skompilowane także VC9. Do pobrania z <a href="http://www.apachelounge.com/" title="Apache Lounge">Apache Lounge</a>.</p>
<p>Obsługa rozszerzenia imagick wymaga posiadania zainstalowanego Image Magick. <a href="http://www.imagemagick.org/script/binary-releases.php#windows">Ściągamy</a> wersję 32-bitową, ponieważ PHP też jest w wersji 32-bit. Najlepiej zastosować się do zaleceń autorów &#8211; jeśli nie wiesz co potrzebujesz, to ściągaj wersję Q-16-windows-dll. Podczas instalacji należy zaznaczyć dodanie Image Magick do ścieżki systemowej. Następnie ściągamy <code>php_imagick.dll</code> &#8211; nie ma obecnie wersji windows na PECL, więc bierzemy bezpośrednio <a href="http://valokuva.org/?page_id=50">ze strony autora rozszerzenia</a> (wybieramy wersję Thread Safe). Bibliotekę kopiujemy do podkatalogu <code>ext</code>, zmianiamy nazwę na <code>php_imagick.dll</code> i dodajemy rozszerzenie</p>
<pre>extension=php_imagick.dll</pre>
<p>I gotowe.</p>
<p>EDIT: Nie do końca gotowe. Jeśli zatrzymamy się w tym punkcie biblioteka będzie się podłączała i zobaczymy ją w <code>phpinfo()</code>, ale każdorazowe wywołanie funkcji <code>Imagick()</code> będzie powodowało restart Apache. Żeby działało poprawnie należy zainstalować wersję Image Magick nie nowszą niż 6.6.4.0. Patrz też: <a href="http://stackoverflow.com/questions/8608426/imagick-crash-with-php-5-3/8694569#8694569">odpowiedź na stackoverflow</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=200&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2012/01/01/php-apache-imagick-na-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>Open file &#8211; security warning na Windows 2008</title>
		<link>http://brinf.wordpress.com/2011/07/15/open-file-security-warning-na-windows-2008/</link>
		<comments>http://brinf.wordpress.com/2011/07/15/open-file-security-warning-na-windows-2008/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 13:18:44 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[kruczki i sztuczki]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=191</guid>
		<description><![CDATA[Jak wyłączyć konieczność potwierdzania uruchamiania/pobierania plików zewnętrznych w W2K8, kiedy wyskakuje okno &#8216;open file &#8211; security warning&#8217;? Porada znaleziona na experts-exchange.com: Otwórz konsolę Local Group Policy Edito wpisując w konsoli gpedit.msc Przejdź do User Configuration &#62; Administrative Templates &#62; Windows Components &#62; Attachment Manager Wybierz Inclusion list for low file types i wprowadź swoje rozszerzenia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=191&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jak wyłączyć konieczność potwierdzania uruchamiania/pobierania plików zewnętrznych w W2K8, kiedy wyskakuje okno &#8216;open file &#8211; security warning&#8217;? Porada znaleziona na <a href="http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Server/Windows_Server_2008/Q_24890083.html">experts-exchange.com</a>:</p>
<ol>
<li>Otwórz konsolę Local Group Policy Edito wpisując w konsoli <tt>gpedit.msc</tt></li>
<li>Przejdź do <strong>User Configuration &gt; Administrative Templates &gt; Windows Components &gt; Attachment Manager</strong></li>
<li>Wybierz <strong>Inclusion list for low file types</strong> i wprowadź swoje rozszerzenia oddzielane średnikiem (w moim przypadku wystarcza .bat)</li>
</ol>
<p>Gotowe</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=191&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2011/07/15/open-file-security-warning-na-windows-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>Filtrowanie tablicy w javascript</title>
		<link>http://brinf.wordpress.com/2011/06/20/filtrowanie-tablicy-w-javascript/</link>
		<comments>http://brinf.wordpress.com/2011/06/20/filtrowanie-tablicy-w-javascript/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 09:41:40 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=175</guid>
		<description><![CDATA[Zadanie: mamy w javascript tablicę obiektów, przykładowo strukturę jakiejś firmy: var json = [ { "region_id" : "10", "obszar_id" : "15", "punkt_sprzedazy_id" : 25, "nazwa_punktu" : "Punkt 1" }, { "region_id" : "10", "obszar_id" : "15", "punkt_sprzedazy_id" : 24, "nazwa_punktu" : "Punkt 2" }, { "region_id" : "10", "obszar_id" : "15", "punkt_sprzedazy_id" : 27, "nazwa_punktu" [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=175&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zadanie:<br />
mamy w javascript tablicę obiektów, przykładowo strukturę jakiejś firmy:</p>
<pre>var json = [
{
    "region_id" : "10",
    "obszar_id" : "15",
    "punkt_sprzedazy_id" : 25,
    "nazwa_punktu" : "Punkt 1"
},
{
    "region_id" : "10",
    "obszar_id" : "15",
    "punkt_sprzedazy_id" : 24,
    "nazwa_punktu" : "Punkt 2"
},
{
    "region_id" : "10",
    "obszar_id" : "15",
    "punkt_sprzedazy_id" : 27,
    "nazwa_punktu" : "Punkt 3"
},
{
    "region_id" : "10",
    "obszar_id" : "17",
    "punkt_sprzedazy_id" : 125,
    "nazwa_punktu" : "Punkt 41"
},
{
    "region_id" : "14",
    "obszar_id" : "9",
    "punkt_sprzedazy_id" : 205,
    "nazwa_punktu" : "Punkt 87"
},
{
    "region_id" : "6",
    "obszar_id" : "23",
    "punkt_sprzedazy_id" : 16,
    "nazwa_punktu" : "Punkt 42"
},
...
];
</pre>
<p>Teraz chcemy wybrać z tej tablicy tylko punkty sprzedaży z jednego obszaru &#8211; czyli np. elementy, dla których obszar_id == 15. Można do tego użyć zewnętrznych bibliotek operujących na formacie JSON, np: <a href="http://jorder.net">jOrder</a>, <a href="http://code.google.com/p/jsonpath/">JSONPath</a>, <a href="http://code.google.com/p/jaql/">Jaql</a>, czy <a href="http://www.hugoware.net/projects/jlinq">jLinq</a>, albo wykorzystać obsługę <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter">Array.prototype.filter</a>:</p>
<pre>function wybierzPunktyZObszaru(obszar_id) {
    var Punkty = json.filter(function(el) {
        return el.obszar_id == obszar_id;
    });
    return Punkty;
}
</pre>
<p>Dla większej ilości warunków łączymy je:</p>
<pre>var Punkty2 = json.filter(function(el) {
    return el.obszar_id == 15
    &amp;&amp; el.punkt_sprzedazy_id &gt;= 10;
});
</pre>
<p>lub</p>
<pre>
var Punkty3 = json.filter(function(el) {
    return el.obszar_id == 15;
}).filter(function(el) {
    return el.punkt_sprzedazy_id &gt;= 10;
});
</pre>
<p>Więcej np. <a href="http://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes">na stackoverflow</a>.</p>
<p>Ważne, żeby dla przeglądarek nieobsługujących Array.prototype.filter dodać lokalną obsługę metody (za dokumentacją):</p>
<pre>if (!Array.prototype.filter)
{
  Array.prototype.filter = function(fun /*, thisp */)
  {
    "use strict";

    if (this === void 0 || this === null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length &gt;&gt;&gt; 0;
    if (typeof fun !== "function")
      throw new TypeError();

    var res = [];
    var thisp = arguments[1];
    for (var i = 0; i &lt; len; i++)
    {
      if (i in t)
      {
        var val = t[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, t))
          res.push(val);
      }
    }

    return res;
  };
}
</pre>
<p>Taki fragment dodajemy np. na początku kodu.</p>
<p>Gdyby chcieć skorzystać przykładowo z biblioteki jOrder:</p>
<pre>// utwórz obiekt tablicy jOrder i dodaj nieunikalny (grouped: true) indeks 'ix_obszar_id' na polu 'obszar_id'
var jsonTable = jOrder.table(json).index('ix_obszar_id', ['obszar_id'], {grouped : true});
// funkcja filtrująca, która zwraca tylko znalezione rekordy (renumber : true)
function szukajDaneZObszaru(obszar_id) {
    return jsonTable.where([{'obszar_id' : obszar_id}], {indexName : 'ix_obszar_id', renumber : true});
}
// wyszukaj punkty z obszaru 15
var Dane15 = szukajDaneZObszaru(15);
</pre>
<p>Więcej przykładów zastosowania jOrder <a href="https://github.com/danstocker/jorder/wiki/Reference">na wiki projektu</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=175&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2011/06/20/filtrowanie-tablicy-w-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>dtsrun /Z</title>
		<link>http://brinf.wordpress.com/2011/02/04/dtsrun-z/</link>
		<comments>http://brinf.wordpress.com/2011/02/04/dtsrun-z/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 10:29:47 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[narzędzia]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=163</guid>
		<description><![CDATA[Do uruchamiania DTSów MS SQLa 2000 z linii poleceń służy dtsrun. Posiada kilka zdefiniowanych przełączników, w tym jeden, który służy do ukrywania wszystkich parametrów: /Z (np. żeby nikt nie podejrzał hasła). Wykorzystując go należy przekazać zakodowany ciąg znaków zawierający informacje, które możemy przekazać podczas normalnego wywołania. Przykładowo (~ oznacza, że dane znajdujące się za przełącznikiem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=163&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Do uruchamiania DTSów MS SQLa 2000 z linii poleceń służy <code>dtsrun</code>. Posiada <a href="http://msdn.microsoft.com/en-us/library/aa224467%28v=sql.80%29.aspx">kilka zdefiniowanych przełączników</a>, w tym jeden, który służy do ukrywania wszystkich parametrów: <code>/Z</code> (np. żeby nikt nie podejrzał hasła). Wykorzystując go należy przekazać zakodowany ciąg znaków zawierający informacje, które możemy przekazać podczas normalnego wywołania. Przykładowo (<code>~</code> oznacza, że dane znajdujące się za przełącznikiem są przekazywane jako hex):</p>
<pre>DTSRUN /~Z0x1C0C617F1217894A624CDB7DC...</pre>
<p>Jak taki ciąg przygotować?<br />
<span id="more-163"></span><br />
Opcja 1: przełącznik <code>/!Y</code> &#8211; zakoduje parametry do ciągu znaków i wypisze na wyjściu kod wynikowy. Dodanie opcji <code>/!C</code> spowoduje skopiowanie treści do schowka, zamiast pisania na ekran.</p>
<pre>DTSRUN /S serwer /U użytkownik /P hasło /N nazwa_dtsa /!Y </pre>
<p>Opcja 2: <code>dtsrunui</code> &#8211; wpisanie w konsoli (lub przez Start &gt; Uruchom) wyświetla okienkową wersję uruchamiania DTSa.<br />
Wybieramy serwer oraz podajemy (lub wyszukujemy) nazwę DTSa i naciskamy przycisk &#8216;Advanced&#8230;&#8217;. W dolnej części nowego okna należy zaznaczyć pole &#8216;Encrypt the command&#8217; i nacisnąć &#8216;Generate&#8217;. Ciąg gotowy.</p>
<p>A jak w drugą stronę? Tzn. znając zakodowane polecenie <code>DTSRUN</code> znaleźć co ono wywołuje? Wystarczy wywołać takie polecenie z przełącznikami <code>/!X /!C</code>:</p>
<pre>DTSRun /~Z0x1A0211D49(...) /!X /!C</pre>
<p>Spowoduje to uruchomienie DTSa, ale zablokowanie jego wykonywania (<code>/!X</code>) oraz skopiowanie parametrów do schowka (<code>/!C</code>). Otrzymujemy wynik:</p>
<pre>DTSRun:  Loading...
DTSRun:  Executing...</pre>
<p>Teraz wystarczy wkleić zawartość schowka np. do notatnika i pokazane zostaną parametry do uruchomienia:</p>
<pre>DTSRun /S "serwer /U "użytkownik" /N "zadanie" /!X /!C </pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=163&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2011/02/04/dtsrun-z/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>ZF: Zend_Date a polskie nazwy</title>
		<link>http://brinf.wordpress.com/2011/01/24/zf-zend_date-a-polskie-nazwy/</link>
		<comments>http://brinf.wordpress.com/2011/01/24/zf-zend_date-a-polskie-nazwy/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 12:56:25 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=148</guid>
		<description><![CDATA[Zadanie z użyciem Zend_Date: mając datę przykładowo 2011-01-24 wyświetlić ją jako 24 styczeń 2011. Na początek tworzymy obiekt, który będzie zawierał naszą datę. Żeby wyświetlać polskie nazwy zainicjujemy locale = &#8216;pl_PL&#8217; $data = new Zend_Date('2011-01-24', 'YMd', 'pl_PL'); Zakładając, że nie wymuszaliśmy formatowania daty jako &#8216;php&#8217; i wykorzystujemy format &#8216;iso&#8217; wyświetlamy w wymaganym formacie: echo $data-&#62;get(Zend_Date::DAY) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=148&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zadanie z użyciem Zend_Date: mając datę przykładowo 2011-01-24 wyświetlić ją jako 24 styczeń 2011.</p>
<p>Na początek tworzymy obiekt, który będzie zawierał naszą datę. Żeby wyświetlać polskie nazwy zainicjujemy locale = &#8216;pl_PL&#8217;</p>
<pre>$data = new Zend_Date('2011-01-24', 'YMd', 'pl_PL');</pre>
<p>Zakładając, że nie wymuszaliśmy formatowania daty jako &#8216;php&#8217; i wykorzystujemy format &#8216;iso&#8217; wyświetlamy w wymaganym formacie:</p>
<pre>echo $data-&gt;get(Zend_Date::DAY) . ' '
     . $data-&gt;get(Zend_Date::MONTH_NAME) . ' '
     . $data-&gt;get(Zend_Date::YEAR);</pre>
<p>Otrzymujemy: 24 stycznia 2011</p>
<p>Czyli niezupełnie to, o co chodziło. Dlaczego tak jest?<br />
<span id="more-148"></span><br />
Odpowiedzi należy szukać w dokumentacji Zend_Locale i kodzie klasy Zend_Date. Zacznijmy od tej pierwszej: <a href="http://framework.zend.com/manual/en/zend.locale.functions.html">http://framework.zend.com/manual/en/zend.locale.functions.html</a> (bazuję na wersji ZF 1.11.2)<br />
W części dotyczącej szczegółów metody getTranslation() przy opisie typu &#8216;month&#8217; można przeczytać:</p>
<blockquote><p>Returns a translation for a month. You have to give the number of the month as integer value. It has to be between 1 and 12. If you want to receive data for other calendars, contexts or formats, then you must give an array instead of an integer with the expected values. The array has to look like this: array( &#8216;calendar&#8217;, &#8216;context&#8217;, &#8216;format&#8217;, &#8216;month number&#8217;). <strong>If you give only an integer then the default values are the &#8216;gregorian&#8217; calendar, the context &#8216;format&#8217; and the format &#8216;wide&#8217;</strong>. Use Zend_Date for simplicity</p></blockquote>
<p>Czyli tłumaczenie domyślne używa ustawień, które są powyżej pogrubione.</p>
<p>Tylko co to znaczy? Zajrzyjmy do pliku pl.xml w katalogu Zend\Locale\Data i przejdźmy do węzła &lt;calendar type=&#8221;gregorian&#8221;&gt;</p>
<pre>&lt;calendar type="gregorian"&gt;
    &lt;months&gt;
        &lt;monthContext type="format"&gt;
            &lt;monthWidth type="abbreviated"&gt;
                &lt;month type="1"&gt;sty&lt;/month&gt;
                &lt;month type="2"&gt;lut&lt;/month&gt;
                ...
            &lt;/monthWidth&gt;
            &lt;monthWidth type="wide"&gt;
                &lt;month type="1"&gt;stycznia&lt;/month&gt;
                &lt;month type="2"&gt;lutego&lt;/month&gt;
                ...
            &lt;/monthWidth&gt;
        &lt;/monthContext&gt;
        &lt;monthContext type="stand-alone"&gt;
            &lt;monthWidth type="narrow"&gt;
                &lt;month type="1"&gt;s&lt;/month&gt;
                &lt;month type="2"&gt;l&lt;/month&gt;
                ...
            &lt;/monthWidth&gt;
            &lt;monthWidth type="wide"&gt;
                &lt;month type="1"&gt;styczeń&lt;/month&gt;
                &lt;month type="2"&gt;luty&lt;/month&gt;
                ...
            &lt;/monthWidth&gt;
        &lt;/monthContext&gt;
    &lt;/months&gt;</pre>
<p>Widać, że istnieją dwa węzły <code>&lt;monthContext&gt;</code> &#8211; &#8222;format&#8221; i &#8222;stand-alone&#8221;. Oba zawierają węzły <code>&lt;monthWidth="wide"&gt;</code>, przy czym to w domyślnie używanej gałęzi <code>calendar[@gregorian]/months/monthContext[@format]/monthWidth[@wide]</code> widać wartość &#8216;stycznia&#8217;, a w gałęzi <code>calendar[@gregorian]/months/monthContext[@stand-alone]/monthWidth[@wide]</code> jest &#8216;styczeń&#8217;. Czyli interesuje nas ta druga, niestandardowa gałąź.</p>
<p>Jak to działa w Zend_Date. Odwołując się w Zend_Date do części daty przez get() wywoływana jest wewnętrzna metoda _toToken(), która z kolei wywołuje metodę _parseIsoToDate(). W tej metodzie widać, że wszystkie odwołania to tłumaczonych wartości odwołują się do wartości domyślnych: gregorian, format. Na przykładzie Zend_Date::MONTH_NAME:</p>
<pre>return $this-&gt;_toComment(Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'wide', $month)));</pre>
<p>Jak to się ma do opisanej wcześniej metody getTranslation() klasy Zend_Locale? Ona po prostu wywołuje Zend_Locale_Data::getContent().</p>
<p>Co zatem trzeba zrobić, żeby zamiast &#8222;stycznia&#8221; uzyskać &#8222;styczeń&#8221;? Niestety, nie da się wykorzystując samo Zend_Date(). Trzeba skorzystać z Zend_Locale::getTranslation() lub bezpośrednio Zend_Locale_Data::getContent():</p>
<pre>$aFormat = array('gregorian', 'stand-alone', 'wide', $data-&gt;get(Zend_Date::MONTH_SHORT));
echo $data-&gt;get(Zend_Date::DAY) . ' '
     . Zend_Locale::getTranslation($aFormat, 'month', 'pl') . ' '
     . $data-&gt;get(Zend_Date::YEAR);</pre>
<p>Dlaczego miesiąc określamy przez Zend_Date::MONTH_SHORT? Bo zwraca miesiąc bez wiodącego zera przy miesiącach jednocyfrowych &#8211; a takie są wartości atrybutów &#8222;type&#8221; elementów &#8222;month&#8221; w pliku pl.xml.</p>
<p>Na początku założyłem, że nie zmieniamy nic w formatowaniu dat w Zend_Date i wykorzystujemy domyślny format &#8216;iso&#8217;. Co jeśli wcześniej ustawiliśmy format &#8216;php&#8217;, np. poleceniem:</p>
<pre>Zend_Date::setOptions(array(
    'format_type'   =&gt; 'php'
));</pre>
<p>Wówczas nie będziemy mogli odwoływać się do części składowych daty wykorzystując stałe, np. Zend_Date::MONTH. Należy wtedy zastosować formatowanie znane z funkcji date():</p>
<pre>$aFormat = array('gregorian', 'stand-alone', 'wide', $data-&gt;get('n'));
echo $data-&gt;get('d') . ' '
     . Zend_Locale::getTranslation($aFormat, 'month', 'pl') . ' '
     . $data-&gt;get('Y');</pre>
<p>W określaniu formatu dajemy &#8216;n&#8217;, żeby uzyskać jednocyfrowy miesiąc bez wiodącego zera. Pozostałe składowe to &#8216;d&#8217; &#8211; dzień z wiodącym zerem i &#8216;Y&#8217; &#8211; czterocyfrowy rok.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=148&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2011/01/24/zf-zend_date-a-polskie-nazwy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>ZF: Długości pól formularza na podstawie bazy</title>
		<link>http://brinf.wordpress.com/2011/01/18/zf-dlugosci-pol-formularza-na-podstawie-bazy/</link>
		<comments>http://brinf.wordpress.com/2011/01/18/zf-dlugosci-pol-formularza-na-podstawie-bazy/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 07:49:32 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=128</guid>
		<description><![CDATA[Kiedy tworzymy formularz w Zend Frameworku przesyłamy potem dane z niego do bazy. Czasem się okazuje, że długość wprowadzanych danych przekracza długość pola tabeli i przez to pojawia się błąd w stylu &#8222;String data, right truncated: 7 ERROR value too long for type character varying(40)&#8221; (PostgreSQL). Żeby temu zapobiec można ustawić dodatkowe walidatory dla pól [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=128&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kiedy tworzymy formularz w Zend Frameworku przesyłamy potem dane z niego do bazy. Czasem się okazuje, że długość wprowadzanych danych przekracza długość pola tabeli i przez to pojawia się błąd w stylu &#8222;String data, right truncated: 7 ERROR value too long for type character varying(40)&#8221; (PostgreSQL). Żeby temu zapobiec można ustawić dodatkowe walidatory dla pól formularza, które będą bazowały na informacjach z metadanych tabeli. Można to osiągnąć m.in. tak:<br />
<span id="more-128"></span></p>
<pre>
public function ustawWalidatory($aMetadane, $bInfoLabel = true)
{
    $elementy = $this-&gt;getElements();
        foreach($elementy as $sNazwa =&gt; $element) {
            $sNazwa = narzedziownia::fromCamelCase($sNazwa);
            if(!empty($aMetadane[$sNazwa]['LENGTH'])
			&amp;&amp; !$element instanceof Zend_Form_Element_Hidden
			&amp;&amp; !$element instanceof Zend_Form_Element_Checkbox
			&amp;&amp; $aMetadane[$sNazwa]['DATA_TYPE'] != 'date') {
                $nLength = $aMetadane[$sNazwa]['LENGTH'];
                $element-&gt;addValidator('StringLength', false, array(
                    'min'       =&gt; 1,
                    'max'       =&gt; $nLength,
                    'messages'  =&gt; array(
                        'stringLengthInvalid'   =&gt; 'Nie przesłano stringa, tylko coś innego',
                        'stringLengthTooShort'  =&gt; 'Za krótki ciąg znaków, wymagane co najmniej %min%',
                        'stringLengthTooLong'   =&gt; 'Za długi ciąg znaków, wymagane najwyżej %max%'
                    )
                ));

                // doklej informację do 'labela'
                if($bInfoLabel) {
                    $element-&gt;setLabel($element-&gt;getLabel() . ' [' . $nLength . ']');
                }
            }
        }
}
</pre>
<p>Po kolei. Funkcję dodajemy do formularza</p>
<pre>
// application/forms/NaszForm.php
public NaszForm extends Zend_Form
{
    public function init()
    {
        // tutaj inicjalizacja formularza
    }

    public function ustawWalidatory($aMetadata)
    {
        // tutaj treść funkcji jak wyżej
    }
}
</pre>
<p>Żeby pobrać metadane wystarczy wywołać metodę info() dla naszego modelu rozszerzającego Zend_Db_Table_Abstract (patrz: Zend_Db_Table_Abstract-&gt;info()).<br />
Przelatujemy po wszystkich elementach dodanych do formularza. Sprawdzamy, czy dane pole przypadkiem nie jest checkboxem lub polem ukrytym (hidden) i czy ma w ogóle ustawioną długość (np. pole typu varchar bez podanej długości lub typu text &#8211; nie ma). Jeśli tak &#8211; ustaw walidator długości znaków od 1 do długości pola tabeli. Jeśli pole nie jest wymagane, to można ustawić długość od zera (min =&gt; 0). Na koniec ustawienie komunikatów walidatora i doklejenie informacji o długości pola do elementu Label.</p>
<p>Dobra, jeszcze jak to wywołać. Tu jest minus, bo nie zrobimy tego przekazując parametr do metody Zend_Form::init() &#8211; bo nie przyjmuje ona parametrów. Można wywołać funkcję niezależnie, np:</p>
<pre>
$form = new NaszForm();
// $tabela jest typu rozszerzającego Zend_Db_Table_Abstract
$aMetadane = $tabela-&gt;info('metadata');
$form-&gt;ustawWalidatory($aMetadane);
</pre>
<p>lub wykorzystać fakt, że przy tworzeniu obiektu klasy Zend_Form (lub dziedziczącej) w konstruktorze wywoływana jest metoda setOptions(), która może wywołać dowolną zdefiniowaną przez nas metodę, która zaczyna się od set. Czyli coś w tym stylu:</p>
<pre>
// $tabela jest typu rozszerzającego Zend_Db_Table_Abstract
$aMetadane = $tabela-&gt;info('metadata');

$form = new NaszForm(array(
    'walidatory'    =&gt; array(
        'metadane'  =&gt; $aMetadane
    )
));
</pre>
<p>Wówczas NaszForm musi posiadać metodę setWalidatory($aWalidatory), która ustawi walidatory. Mnie wygodnie było to zrobić tak:</p>
<pre>
public function setWalidatory(array $aWalidatory)
    {
        $aMetadane = $aWalidatory['metadane'];
        $bInfoLabel = strlen($aWalidatory['infolabel']) &gt; 0 ? $aWalidatory['infolabel'] : true;

        $this-&gt;ustawWalidatory($aMetadane, $bInfoLabel);
    }
</pre>
<p>Można też bezpośrednio zmienić nazwę metody ustawWalidatory() na setWalidatory() i odpowiednio ustawić parametry.<br />
I powinno działać.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=128&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2011/01/18/zf-dlugosci-pol-formularza-na-podstawie-bazy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>Przez proxy z konsoli</title>
		<link>http://brinf.wordpress.com/2009/10/26/przez-proxy-z-konsoli/</link>
		<comments>http://brinf.wordpress.com/2009/10/26/przez-proxy-z-konsoli/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 13:34:57 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[kruczki i sztuczki]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=122</guid>
		<description><![CDATA[Czasem zachodzi potrzeba połączenia się ze stroną internetową z poziomu konsoli windows (np. przy aktualizacji gemów w Ruby). Co zrobić, jeśli jesteśmy zmuszeni korzystać z proxy? Sposobów jest kilka, najprostszy chyba ten: ustawić zmienną środowiskową http_proxy: set http_proxy=http://user:haslo@adres.serwera.proxy:port Wyłącza się to poprzez set http_proxy= Można też rozbić wpis na kilka: set http_proxy=http://adres.serwera.proxy:port set http_proxy_user=user set [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=122&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Czasem zachodzi potrzeba połączenia się ze stroną internetową z poziomu konsoli windows (np. przy aktualizacji gemów w Ruby). Co zrobić, jeśli jesteśmy zmuszeni korzystać z proxy? Sposobów jest kilka, najprostszy chyba ten: ustawić zmienną środowiskową http_proxy:<br />
<code><br />
set http_proxy=http://user:haslo@adres.serwera.proxy:port<br />
</code></p>
<p>Wyłącza się to poprzez<br />
<code><br />
set http_proxy=<br />
</code></p>
<p>Można też <a href="http://www.xav.com/perl/Components/ppmproxy.htm">rozbić wpis na kilka</a>:<br />
<code><br />
set http_proxy=http://adres.serwera.proxy:port<br />
set http_proxy_user=user<br />
set http_proxy_pass=haslo<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=122&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2009/10/26/przez-proxy-z-konsoli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>And i &amp;&amp;</title>
		<link>http://brinf.wordpress.com/2009/06/26/and-i/</link>
		<comments>http://brinf.wordpress.com/2009/06/26/and-i/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 07:03:48 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=108</guid>
		<description><![CDATA[W przejętej do utrzymania aplikacji napisanej w PHP zauważyłem, że podczas testowania warunków if() zamiast używania operatorów &#38;&#38; i &#124;&#124; stosowano and i or. Ponieważ ja zawsze używałem tych pierwszych postanowiłem sprawdzić czym to się różni. Po lekturze dokumentacji i sieci można powiedzieć, że sprawa kręci się wokół dwóch rzeczy: kolejność operatorów (operator precedence) i [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=108&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>W przejętej do utrzymania aplikacji napisanej w PHP zauważyłem, że podczas testowania warunków if() zamiast używania operatorów &amp;&amp; i || stosowano and i or. Ponieważ ja zawsze używałem tych pierwszych postanowiłem sprawdzić czym to się różni. Po lekturze dokumentacji i sieci można powiedzieć, że sprawa kręci się wokół dwóch rzeczy: kolejność operatorów (operator precedence) i short-circuit evaluation. To drugie nie wiem jak ładnie przetłumaczyć, ale chodzi o jak najszybsze zakończenie sprawdzania warunków true/false &#8211; to znaczy kiedy silnik PHP uzna, że zna już odpowiedź, to nie sprawdza pozostałych warunków.</p>
<p>Ma to miejsce kiedy:</p>
<ul>
<li>pierwsza część warunku <strong>and</strong> zwraca <em>false</em> &#8211; bo od razu wiadomo, że cały warunek zwróci false</li>
<li>pierwsza część warunku <strong>or</strong> zwraca wartość <em>true</em> &#8211; bo od razu wiadomo, że cały warunek zwróci true</li>
</ul>
<p><span id="more-108"></span><br />
Dla przypomnienia krótka powtórka z logiki matematycznej: <strong>and</strong> zwraca true tylko jeśli oba elementy są true, <strong>or</strong> zwraca false tylko jeśli oba elementy są false.</p>
<pre>
A     B    AND   OR
0     0     0     0
0     1     0     1
1     0     0     1
1     1     1     1
</pre>
<p>Dla zilustrowania zagadnienia posłużę się przykładem</p>
<pre>
&lt;?php

$a = true || false;
$b = (true || false);
var_dump($a, $b);

$c = true or false;
$d = (true or false);
var_dump($c, $d);

$e = false || true;
$f = (false || true);
var_dump($e, $f);

$g = false or true;
$h = (false or true);
var_dump($g, $h);

echo "----------\n";

$A = true &amp;&amp; false;
$B = (true &amp;&amp; false);
var_dump($A, $B);

$C = true and false;
$D = (true and false);
var_dump($C, $D);

$E = false &amp;&amp; true;
$F = (false &amp;&amp; true);
var_dump($E, $F);

$G = false and true;
$H = (false and true);
var_dump($G, $H);

?&gt;
</pre>
<p>Co zwróci:</p>
<pre>
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
----------
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
</pre>
<p>Dlaczego zwracane są takie wartości? Jeszcze krótkie przypomnienie z kolejności operatorów. Z używanych powyżej od najważniejszego:<br />
&amp;&amp;<br />
||<br />
=<br />
and<br />
or</p>
<p>Short-circuit evaluation ma miejsce w przykładach $a, $b, $c, $d, $E, $F.<br />
W przykładach $e, $f, $h, $A, $B, $D, $H PHP musi obliczyć wynik, bo go nie zna na podstawie pierwszego warunku. Pozostają do omówienia przypadki $g, $C i $G. Tu sprawa wygląda inaczej z powodu kolejności operatorów.</p>
<p>$g = false or true zwraca false, ponieważ najpierw do zmiennej $g jest przypisywana wartość false, a następnie następuje operacja <em>or true</em>, która niczego niczemu nie przypisuje. Taka instrukcja to jakby złożenie dwóch poleceń:<br />
$g = false;<br />
$g or true;<br />
Drugie z nich po prostu robi operację porównania, która zwraca true, ale nie przypisuje już tego zmiennej $g.</p>
<p>Tak samo w pozostałych przypadkach:<br />
$C = true and false zwraca true:<br />
$C = true;<br />
$C and false;</p>
<p>$G = false and true zwraca false:<br />
$G = false;<br />
$G and true;</p>
<p>Żeby jeszcze bardziej unaocznić działanie short-circuit evaluation taki przykład:<br />
if(true || $n = 1) {<br />
  echo $n;<br />
}<br />
Zmienna $n nie pojawi się na ekranie, ponieważ silnik PHP uznał, że warunek if zwraca true i reszty instrukcji już nie wykonuje.</p>
<p>No, to na koniec jeszcze wnioski. Jeśli nie chcesz się zamotać w warunkach &#8211; stosuj nawiasy. Jeśli chcesz przyspieszyć działanie warunków &#8211; w przypadkach <em>or</em> dawaj warunki zwracające true jak najbliżej lewej strony (np. 1 or 0). W przypadku <em>and</em> najbliżej lewej strony dawaj warunki false (np. 0 and 1).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=108&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2009/06/26/and-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
		<item>
		<title>Otwieranie załączników</title>
		<link>http://brinf.wordpress.com/2009/06/25/otwieranie-zalacznikow/</link>
		<comments>http://brinf.wordpress.com/2009/06/25/otwieranie-zalacznikow/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 05:45:17 +0000</pubDate>
		<dc:creator>brinf</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[kruczki i sztuczki]]></category>

		<guid isPermaLink="false">http://brinf.wordpress.com/?p=103</guid>
		<description><![CDATA[Zdarza się, że podczas ściągania dokumentów z sieci (doc, xls, csv, &#8230;) lub np. otwierania załączników w Outlooku niechcący odznaczymy pole &#8222;Zawsze pytaj przed otwarciem pliku tego typu&#8221;. I szlag potem nas trafia, bo nie możemy znaleźć jak to przywrócić. Przekopanie całych menu opcji, ustawień i preferencji zazwyczaj nic nie daje. Najlepiej od razu iść [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=103&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zdarza się, że podczas ściągania dokumentów z sieci (doc, xls, csv, &#8230;) lub np. otwierania załączników w Outlooku niechcący odznaczymy pole &#8222;Zawsze pytaj przed otwarciem pliku tego typu&#8221;. I szlag potem nas trafia, bo nie możemy znaleźć jak to przywrócić.</p>
<p>Przekopanie całych menu opcji, ustawień i preferencji zazwyczaj nic nie daje. Najlepiej od razu iść do miejsca, gdzie i tak jakaś opcja by grzebała.</p>
<p>Otwórz okno Eksploratora Windows, jeśli nie masz jakiegoś na wierzchu. Z menu wybierz Narzędzia&nbsp;-&gt;&nbsp;Opcje folderów&#8230; a potem zakładkę &#8222;Typy plików&#8221;.</p>
<p>W oknie &#8222;Zarejestrowane typy plików&#8221; wybierz interesujące Cię rozszerzenie. Ja mam najczęściej problem przy plikach Excela, to szukam XLS. Po podświetleniu rozszerzenia powinien pokazać się przycisk &#8222;Zaawansowane&#8221;. Klik. Zaznacz pole &#8222;Potwierdź otwarcie po pobraniu&#8221; i pozamykaj okna klikając wszystkie &#8222;OK&#8221;.</p>
<p>Voila.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brinf.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brinf.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brinf.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brinf.wordpress.com&amp;blog=6602838&amp;post=103&amp;subd=brinf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://brinf.wordpress.com/2009/06/25/otwieranie-zalacznikow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdcec5125f65743f01f03cdb18a407f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">BartekR</media:title>
		</media:content>
	</item>
	</channel>
</rss>
