<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1440555928919685108</id><updated>2011-07-07T17:16:57.208-07:00</updated><category term='UDMA'/><category term='mysql'/><category term='english'/><category term='encoding'/><category term='W3C'/><category term='blogspot'/><category term='Info'/><category term='multithreading'/><category term='WMP'/><category term='Windows'/><category term='django'/><category term='gui'/><category term='c#'/><category term='PHP'/><category term='console'/><category term='Firefox'/><category term='blogger'/><category term='sql'/><category term='python'/><category term='html'/><category term='CD'/><category term='Hardware'/><category term='symfony'/><category term='DVD'/><category term='java script'/><category term='csv'/><category term='http://itblog.socar.pl'/><category term='PIO'/><category term='.NET'/><title type='text'>SOCAR IT place</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-7884500832883266039</id><published>2009-07-10T13:07:00.001-07:00</published><updated>2009-07-10T13:07:48.367-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http://itblog.socar.pl'/><title type='text'>Blog przeniesiony</title><content type='html'>Blog przeniesiony pod nowy adres:&lt;br /&gt;http://itblog.socar.pl&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-7884500832883266039?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/7884500832883266039/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=7884500832883266039' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/7884500832883266039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/7884500832883266039'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/07/blog-przeniesiony.html' title='Blog przeniesiony'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-7726133374399399664</id><published>2009-06-02T01:23:00.001-07:00</published><updated>2009-06-02T01:30:22.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>[.NET] Chowanie okna konsoli</title><content type='html'>Aby schować okno konsoli, w ramach &lt;i&gt;Console Window Application&lt;/i&gt; należy skorzystać z interops i biblioteki systemu windows:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;using System.Runtime.InteropServices&lt;br /&gt;//...&lt;br /&gt;[DllIMport("user32.dll")]&lt;br /&gt;private static extern IntPtr FindWindow(IntPtr hWnd, int nCmdShow);&lt;br /&gt;&lt;br /&gt;[DllIMport("user32.dll")]&lt;br /&gt;static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);&lt;br /&gt;&lt;br /&gt;//...&lt;br /&gt;if(hWnd != IntPtr.Zero)&lt;br /&gt;{&lt;br /&gt;  ShowWindow(hWnd, 0)  // Ukryj okno&lt;br /&gt;  &lt;br /&gt;  //ShowWindow(hWnd, 1) // Pokaż okno&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-7726133374399399664?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/7726133374399399664/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=7726133374399399664' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/7726133374399399664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/7726133374399399664'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/06/net-chowanie-okna-konsoli.html' title='[.NET] Chowanie okna konsoli'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-6693342906681962414</id><published>2009-03-29T06:40:00.000-07:00</published><updated>2009-03-29T06:52:53.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csv'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><title type='text'>[MySQL] Importowanie danych z CSV w UTF8</title><content type='html'>W poprzedniej notce opisywałem importowanie danych do MySQL z wykorzystaniem plików CSV i zapytania IMPORT DATA INFILE. Okazuje się że "zabawny problem z kodowaniem" który kiedyś mi się zdażył w ramach zapytania wykorzystującego CONCAT, jest dość "globalnym" problemem MySQL. &lt;br /&gt;&lt;br /&gt;Jeżeli posiadamy dane w kodowaniu UTF8, tabele w UTF8 i kolumny w UTF8, to próba importowania danych w sposób opisany wcześniej ... nie powiedzie się. Okazuje się że MySQL (od 2005 roku! od 4 lat!) posiada bug, który importuje dane w kodowaniu bazy danych w zależności od systemu na jakim się znajduje. &lt;br /&gt;&lt;br /&gt;Aby importować dane zawierające polskie znaki należy rozszerzyć zapytanie o "character set", ale nie o utf8 (co byłoby logiczne!) ale o... latin2. (W przypadku innych kodowań np. hiszpańskich, należy próbować z latin1);&lt;br /&gt;&lt;br /&gt;Rozszerzamy nasze zapytanie o&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;character set latin2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;przez co nasze zapytanie wyglada tak:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;LOAD DATA INFILE 'C:/data.csv' INTO TABLE `tbl1` &lt;br /&gt;CHARACTER SET latin2&lt;br /&gt;FIELDS TERMINATED BY ';' &lt;br /&gt;ENCLOSED BY '"' &lt;br /&gt;ESCAPED BY '\\' &lt;br /&gt;LINES TERMINATED BY '\n' (col1, col2);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-6693342906681962414?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/6693342906681962414/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=6693342906681962414' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6693342906681962414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6693342906681962414'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/03/mysql-importowanie-danych-z-csv-w-utf8.html' title='[MySQL] Importowanie danych z CSV w UTF8'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-2871557239487739155</id><published>2009-03-29T06:07:00.000-07:00</published><updated>2009-03-29T06:38:51.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csv'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>[MySQL] Importowanie danych z CSV</title><content type='html'>Dawno temu napisałem skrypt który wczytywał plik CSV do bazy MySQL. Można to zrobić bezpośrednio z poziomu bazy danych. &lt;br /&gt;Przypadek testowy:&lt;br /&gt;1) Tabela o nazwie tbl1&lt;br /&gt;2) Tabela posiada 2 kolumny o nazwie col1, col2 (int i varchar)&lt;br /&gt;3) plik z danymi: data.csv&lt;br /&gt;4) lokalizacja pliku z danymi: c:\&lt;br /&gt;5) Część danych zawarta jest pomiędzy cudzysłowami (")&lt;br /&gt;6) Znacznik kolejnej linii jest typu UNIXowego&lt;strong&gt;**&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Przykład pliku z danymi wygląda następująco:&lt;br /&gt;&lt;pre name="code" class="text"&gt;&lt;br /&gt;1;"some data 1"&lt;br /&gt;2;"some data 2"&lt;br /&gt;3;"some data x"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;W imporcie powyższego pliku pomoże nam zapytanie:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;LOAD DATA INFILE 'C:/data.csv' INTO TABLE `tbl1` &lt;br /&gt;FIELDS TERMINATED BY ';' &lt;br /&gt;ENCLOSED BY '"' &lt;br /&gt;ESCAPED BY '\\' &lt;br /&gt;LINES TERMINATED BY '\n' (col1, col2);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Wywołanie powyższego zapytania wypełni kolumny danymi. MySQL dba o to aby dane zostały odpowiednio zinterpretowane (text jako text, liczby jako liczby, itd);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;** -&lt;/strong&gt;Należy zauważyć fakt że każdy system operacyjny różnie interpretuje koniec linii. W rzeczywistości każdy plik ma tylko jedną linię. Jednak aby użytkownikowi zasymulować przejście do nowej linii wstawiane są "znaki nowej linii". System Windows, w przeciwieństwie np. do MacOS czy Unixów, stosuje podwójny znak końca linii jakim jest &lt;strong&gt;\r\n&lt;/strong&gt;. Unix natomiast stosuje tylko &lt;strong&gt;\n&lt;/strong&gt; a w przypadku MacOS jest to &lt;strong&gt;\r&lt;/strong&gt;. Aby płynnie zmieniać rodzaj znaku kończącego linię można wykorzystać edytor tekstowy &lt;a href="http://www.pspad.com/" target="_blank"&gt;PsPad&lt;/a&gt; lub zmienić zapis w LINES TERMINATED na '\n\r'&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-2871557239487739155?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/2871557239487739155/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=2871557239487739155' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2871557239487739155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2871557239487739155'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/03/mysql-importowanie-danych-z-csv.html' title='[MySQL] Importowanie danych z CSV'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-190816235112469473</id><published>2009-03-25T11:51:00.000-07:00</published><updated>2009-03-25T12:02:31.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[C#] Aplikacja transparentna (click-thru)</title><content type='html'>Ostatnio zacząłem się zastanawiać jak napisać aplikację przez którą można  kliknać na inne aplikacje, ikony pulpitu itp itd. Są to aplikacje tzw. "click-thru". Mogą zostać wykorzystane jako dodatek do elementów pulpitu, które jednak nie będą przeszkadzać bardzo użytkownikowi. Aby zrealizować taką aplikację należy odwołać się do WindowsAPI:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;//(...)&lt;br /&gt;[DllImport("user32.dll", SetLastError = true)]&lt;br /&gt;private static extern UInt32 GetWindowLong(IntPtr hWnd, int nIndex);&lt;br /&gt;&lt;br /&gt;[DllImport("user32.dll")]&lt;br /&gt;static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);&lt;br /&gt;&lt;br /&gt;public const int GWL_EXSTYLE = -20;&lt;br /&gt;public const int WS_EX_LAYERED = 0x80000;&lt;br /&gt;public const int WS_EX_TRANSPARENT = 0x20;&lt;br /&gt;public const int LWA_ALPHA = 0x2;&lt;br /&gt;public const int LWA_COLORKEY = 0x1;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * Aby dane okno było Click-Thru najlepiej kod wywołujący taką funkcjonalność&lt;br /&gt; * umieścić w konstruktorze obiektu okna. Tuż po "InitializeComponents()";&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;public Form1()&lt;br /&gt;{&lt;br /&gt;  InitializeComponent();&lt;br /&gt;  SetWindowLong(this.Handle, GWL_EXSTYLE,&lt;br /&gt;  (IntPtr)(GetWindowLong(this.Handle, GWL_EXSTYLE) | WS_EX_LAYERED | WS_EX_TRANSPARENT));&lt;br /&gt;  this.TopMost = true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Więcej informacji &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/49205592-47d8-48b7-ad29-be53aa8be7c0/" target="_blank"&gt;na forum MSDNu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-190816235112469473?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/190816235112469473/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=190816235112469473' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/190816235112469473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/190816235112469473'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/03/c-aplikacja-transparentna-click-thru.html' title='[C#] Aplikacja transparentna (click-thru)'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-5774467571552499439</id><published>2009-03-24T12:08:00.000-07:00</published><updated>2009-03-24T12:17:52.709-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>MySQL CONCAT traci kodowanie przy zcalaniu z liczbą</title><content type='html'>Ostatnio dłubiąc przy projekcie który wykorzystuje bazę danych MySQL natrafiłem na "ciekawy" błąd. Błąd na tyle ciekawy że jest znany od 2005 roku. W 2005 roku MySQL w wersji 3.3 posiadał ten bug. Ówcześni twórcy stwierdzili "poprawimy to w wersji ..5.1". Nadeszła wersja 5.1, a poprawki jak nie ma tak nie ma. Ale o co chodzi?&lt;br /&gt;&lt;br /&gt;Załóżmy że mamy tabelę z dwoma kolumnami. Pierwsza kolumna jest typu &lt;i&gt;INTEGER&lt;/i&gt; o nazwie myNumber, a druga typu &lt;i&gt;VARCHAR&lt;/i&gt; o nazwie myText. Kolumna VARCHAR jest ustawiona na porównywanie ciągów z kodowanie UTF-8 (UTF-8_general_ci). Jeżeli teraz wykonamy zapytanie:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT CONCAT(myNumber, myText) as myResult FROM myTable;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;otrzymamy w efekcie zcalony ciąg który ... utracił kodowanie UTF8. Pomimo tego że dane zostały wprowadzone i są w UTF-8, operacja CONCAT kolumny CHAR (lub VCHAR) i INTEGER (lub innej numerycznej) powoduje utracenie kodowania.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Rozwiązaniem tego problemu jest castowanie zmiennej liczbowej&lt;/strong&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT CONCAT(CAST(myNumber as CHAR), myText) as myResult FROM myTable;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To umożliwi nam otrzymanie prawidłowego ciągu.&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-5774467571552499439?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/5774467571552499439/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=5774467571552499439' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5774467571552499439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5774467571552499439'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/03/mysql-concat-traci-kodowanie-przy.html' title='MySQL CONCAT traci kodowanie przy zcalaniu z liczbą'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-5212455938067565215</id><published>2009-01-15T11:26:00.000-08:00</published><updated>2009-01-15T11:47:48.349-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>services.msc, compmgmt.msc ... - Odmowa dostępu  (Access denied)</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_BeBTjWOz7go/SW-S3LWAb3I/AAAAAAAABKE/H0vRfC_fvdU/s1600-h/msc.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 159px;" src="http://2.bp.blogspot.com/_BeBTjWOz7go/SW-S3LWAb3I/AAAAAAAABKE/H0vRfC_fvdU/s200/msc.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5291609563819175794" /&gt;&lt;/a&gt;&lt;br /&gt;Ostatnio natrafiłem na problem. Mianowicie przy próbie uruchomienia jakiejkolwiek przystawki administracyjnej (o rozszerzeniu msc), np. gpedit.msc, compmgmt.msc, services.msc etc. otrzymywałem komunikat o błędzie: &lt;b&gt;services.msc. Odmowa dostępu&lt;/b&gt; pomimo tego że posiadałem uprawnienia administratora. Rozwiązanie było proste.&lt;br /&gt;&lt;br /&gt;Wystarczyło przypisać pliki *.msc do programu obsługującego je, czyli mmc.exe (C:\windows\system32\mmc.exe). Przypisanie następuje w prosty sposób. Klikamy prawym przyciskiem myszy na np. services.msc i wybieramy "Otwórzy przy pomocy...", po czym klikamy "Przeglądaj" i wybieramy mmc.exe&lt;br /&gt;&lt;br /&gt;Jeżeli to rozwiązanie nie działa, należy jeszcze sprawdzić Uprawnienia dla dysku C.&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-5212455938067565215?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/5212455938067565215/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=5212455938067565215' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5212455938067565215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5212455938067565215'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2009/01/servicesmsc-compmgmtmsc-odmowa-dostpu.html' title='services.msc, compmgmt.msc ... - Odmowa dostępu  (Access denied)'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BeBTjWOz7go/SW-S3LWAb3I/AAAAAAAABKE/H0vRfC_fvdU/s72-c/msc.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-2221733822042647316</id><published>2008-11-10T14:21:00.000-08:00</published><updated>2008-11-10T14:45:01.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multithreading'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[C#] Wielowątkowość i GUI</title><content type='html'>Bardzo częstym problemem wielowątkowych aplikacji jest obługa GUI. Wszyscy zapewne świetne znają kwestię wykorzystania &lt;b&gt;&lt;i&gt;Invoke&lt;/i&gt;&lt;/b&gt; oraz &lt;b&gt;&lt;i&gt;InvokeRequired&lt;/i&gt;&lt;/b&gt;. Jednym z problemów na które ostatnio się natknąłem jest kwestia inicjalizacji rysowania formatki z innego wątku. W WinForms i .NET stosowane do rysowania jest GDI+. To jednak nie wyrzuca klasycznego wyjątku w przypadku odwołania się do funkcji formatki z innego wątku. &lt;br /&gt;&lt;br /&gt;Rozważmy następujący kod w którym mamy 2 formatki (&lt;b&gt;&lt;i&gt;Form1&lt;/i&gt;&lt;/b&gt; i &lt;b&gt;&lt;i&gt;Form2&lt;/i&gt;&lt;/b&gt;), przycisk (&lt;b&gt;&lt;i&gt;button1&lt;/i&gt;&lt;/b&gt;) oraz obiekt BackGroundWorker (&lt;b&gt;&lt;i&gt;backgroundworker1&lt;/i&gt;&lt;/b&gt;). Formatkę &lt;b&gt;&lt;i&gt;Form2&lt;/i&gt;&lt;/b&gt; (&lt;b&gt;&lt;i&gt;TheForm&lt;/i&gt;&lt;/b&gt;) inicjalizujemy w wątku GUI a konkretnie w konstruktorze &lt;b&gt;&lt;i&gt;Form1&lt;/i&gt;&lt;/b&gt;. Następnie pod przycisk &lt;b&gt;&lt;i&gt;button1&lt;/i&gt;&lt;/b&gt; przypisane jest wywołanie BackgroundWorkera (&lt;b&gt;&lt;i&gt;BackgroundWorker.StartWorkAsync()&lt;/i&gt;&lt;/b&gt;):&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;  &lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Drawing;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;namespace WindowsFormsApplication2&lt;br /&gt;{&lt;br /&gt;    public partial class Form1 : Form&lt;br /&gt;    {&lt;br /&gt;        Form2 TheForm;&lt;br /&gt;        public Form1()&lt;br /&gt;        {&lt;br /&gt;            TheForm = new Form2();&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void button1_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            backgroundWorker1.RunWorkerAsync();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            TheForm.Show();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;W powyższym kodzie formatka &lt;b&gt;&lt;i&gt;TheForm&lt;/i&gt;&lt;/b&gt; (&lt;b&gt;&lt;i&gt;Form2&lt;/i&gt;&lt;/b&gt;) zostanie wyświetlona, jednak będzie "wisieć", w czasie gdy reszta aplikacji (&lt;b&gt;&lt;i&gt;Form1&lt;/i&gt;&lt;/b&gt;) działa bez problemu. Również Visual Studio nie zgłasza żadnych problemów. Wg. moich ustaleń (a poniekąd przypuszczeń) dzieje się tak ze względu na &lt;b&gt;&lt;i&gt;Repaint()&lt;/i&gt;&lt;/b&gt; zaimplementowany w GDI+ który chcąc odmalować formatkę nie jest w stanie tego zrobić, gdyż obiekt z którego korzysta został zniszczony przy zakończeniu wątku, zanim zdążył się uruchomić. Pomimo tego nie rzuca żadnych ostrzeżeń.&lt;br /&gt;&lt;br /&gt;Wartym uwagi jest fakt że jeżeli &lt;b&gt;&lt;i&gt;TheForm&lt;/i&gt;&lt;/b&gt; (&lt;b&gt;&lt;i&gt;Form2&lt;/i&gt;&lt;/b&gt;) wyświetlimy w aplikacji poza osobnym wątkiem, następnie go ukryjemy (nie niszcząc go), to ponowne jego wyświetlenie, już z innego wątku nie spowoduje problemu. Oczywiście należy zauważyć że omijamy tutaj wykorzystanie powszechnie znanego &lt;b&gt;&lt;i&gt;ShowDialog()&lt;/i&gt;&lt;/b&gt;, które powoduje zatrzymanie wykonywania pozostałego kodu aplikacji, aż do zamknięcia okna modalnego.&lt;br /&gt;&lt;br /&gt;Jednocześnie rozwiązaniem jest &lt;b&gt;&lt;i&gt;Invoke&lt;/i&gt;&lt;/b&gt;. Co ciekawe nie na obiekt docelowy (&lt;b&gt;&lt;i&gt;Form2 - TheForm&lt;/i&gt;&lt;/b&gt;) tylko na obiekt źródłowy. Prawidłowy kod powinien wyglądać tak (istotne linie to 26 do 37):&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Drawing;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;namespace WindowsFormsApplication2&lt;br /&gt;{&lt;br /&gt;    public partial class Form1 : Form&lt;br /&gt;    {&lt;br /&gt;        Form2 TheForm;&lt;br /&gt;        public Form1()&lt;br /&gt;        {&lt;br /&gt;            TheForm = new Form2();&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void button1_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            backgroundWorker1.RunWorkerAsync();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private delegate void showWindowCallback();&lt;br /&gt;        private void showWindow()&lt;br /&gt;        {&lt;br /&gt;            if (this.InvokeRequired)&lt;br /&gt;            {&lt;br /&gt;                this.Invoke(new showWindowCallback(showWindow));&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                TheForm.Show();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            showWindow();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-2221733822042647316?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/2221733822042647316/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=2221733822042647316' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2221733822042647316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2221733822042647316'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/11/c-wielowtkowo-i-gui.html' title='[C#] Wielowątkowość i GUI'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-6066691218539767618</id><published>2008-10-22T23:09:00.000-07:00</published><updated>2008-10-22T23:23:54.554-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[C#] Krótkie ścieżki dostępu</title><content type='html'>Powszechnym problemem w pracy z plikami pod Microsoft Windows jest problem długich ścieżek. Szczególnie jeżeli użytkownik umieści swój plik na pulpicie, a my chcemy dostać się do niego bezpośrednio z kodu. Wtedy taki plik bedzie się znajdował np w:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;C:\Documents And Settings\SOCAR\Pulpit\Plik.cpp&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Niestety operowanie na takim ciągu może zakończyć się niepowodzeniem (zwykle wtedy kompilator zwraca wyjątek FileNotFoundException). &lt;br /&gt;&lt;br /&gt;Rozwiązaniem jest zastosowanie konwencji nazewniczej formatu 8.3 znanej jeszcze z DOSa i Windows 9x. Nazwa pliku jest wtedy skracana do 8 znaków + 3 znaki na rozszerzenie. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;  &lt;br /&gt;using System.Runtime.InteropServices&lt;br /&gt;&lt;br /&gt;//...&lt;br /&gt;&lt;br /&gt;class SomeClass{&lt;br /&gt;&lt;br /&gt;    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]&lt;br /&gt;    public static extern int GetShortPathName([MarshalAs(UnmanagedType.LPTStr)] string path, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder shortPath, int shortPathLength);&lt;br /&gt;&lt;br /&gt;//....&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Po użyciu tej funkcji otrzymamy z powyższej ścieżki, już "bezpieczny" ciąg, prowadzący bezpośrednio do pliku:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;C:\Docume~1\SOCAR\Pulpit\Plik.cpp&lt;/i&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-6066691218539767618?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/6066691218539767618/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=6066691218539767618' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6066691218539767618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6066691218539767618'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/10/c-krtkie-cieki-dostpu.html' title='[C#] Krótkie ścieżki dostępu'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-6015800073711822647</id><published>2008-09-13T11:55:00.000-07:00</published><updated>2008-09-13T13:27:50.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>[PHP] Integracja Symfony z XAMPP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BeBTjWOz7go/SMwe9FvXdsI/AAAAAAAAA44/4QA23YfWCi4/s1600-h/symfony_project.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_BeBTjWOz7go/SMwe9FvXdsI/AAAAAAAAA44/4QA23YfWCi4/s320/symfony_project.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5245601700841486018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;Wstęp&lt;/h1&gt;&lt;br /&gt;Symfony jest bardzo rozbudowanym frameworkiem PHP opartym o wzorzec projektowy MVC. Jednocześnie jest jednym z najbardziej rozpropagowanych i często używanych (m.in. przez Yahoo) frameworków PHP.&lt;br /&gt;&lt;br /&gt;Po paru miesiącach prac z frameworkiem Django (pisanym dla/w pythonie) uznałem że jest on na tyle niedopracowanym narzędziem, że dopóki nie zostanie opracowana stabilna i _sprawdzona_ wersja tegoż frameworka nie warto w niego inwestować sił. Każda kolejna wersja była niekompatybilna ze sobą, integracja z systemem była uciążliwa, a konfiguracja prostych ustawień mozolna i wymagająca googlowania. Django w połączeniu z Google webapp w rzeczywistości daje wymierne efekty w postaci "prostszego" zarządzania kodem, skalowalnosć itp itd. Jednak dla portali z sektora tzw. "startupów" (początkujące portale) jest kiepskim rozwiązaniem. Czas pisania aplikacji jest znacznie wyższy, jej przenośność jest bardzo niska, a hostowanie tego typu aplikacji w Polsce i zagranicą jest bardzo mało popularne, do tego stopnia że nieco bardziej wymagająca aplikacja w pythonie wymagania wynajęcia serwera wirtualnego lub kolokacji własnego.&lt;br /&gt;&lt;br /&gt;Dlatego też postanowiłem powrócić do swojego pierwszego języka dynamicznego tworzenia zwartości web czyli PHP. PHP jest językiem stworzonym wyłącznie do zastosowań WWW. Większość dostępnych stron i serwisów WWW jest pisana właśnie w nim. Jednak pisanie od zera jest czasochłonne i coraz częściej mniej bezpieczne. Dlatego stosuje się frameworki (takie jak np. .NET!). &lt;br /&gt;&lt;br /&gt;Aby zacząć pisać cokolwiek dzięki Symfony wystarczy zainstalować któryś "zestawów serwerowych" dla windowsa. Przez wiele lat używałem &lt;a href="http://www.wampserver.com/en/" target="_blank"&gt;WAMP (http://www.wampserver.com/en/)&lt;/a&gt; jednak ze względu na dodatkowe możliwości przeszedłem na  &lt;a href="http://www.apachefriends.org/en/xampp.html" target="_blank"&gt;XAMPP (http://www.apachefriends.org/en/xampp.html)&lt;/a&gt;. Po prostej instalacji znajdziemy na swoim komputerze uruchomiony serwer WWW, serwer baz danych MySQL oraz serwer FTP. Dobrym rozwiązaniem jest zainstalowanie serwera WWW (Apache) oraz MySQL jako usług. Wszystko sterowane przy pomocy prostego panelu administracyjnego oraz dodatkowych narzędzi PHP (np. phpmyadmin).&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Integracja&lt;/h1&gt;&lt;br /&gt;Symfony dostarcza dwie możliwości integracji. Pierwsza to tzw. &lt;b&gt;&lt;i&gt;sandbox&lt;/i&gt;&lt;/b&gt; czyli zestaw bibliotek gotowych do wykorzystania pod napisany przez nas kod. Rozwiązanie to jest dobre, ale tylko tymczasowo, w fazie testowej, a nie gdy chcemy upublicznić aplikację. Jest to kwestia bezpieczeństwa aplikacji. Poniżej prezentowane rozwiązanie zintegrowania symfony z XAMPP ukazuje drugą drogę "zainstalowania" symfony i chociaż jest ona nieco dłuższa, to warto od początku pracować na "porządnej" konfiguracji.&lt;br /&gt;&lt;br /&gt;&lt;table border=1&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;1. Pobieramy XAMPP i instalujemy (pamiętać należy o zainstalowaniu Apache i MySQL jako usług). Np. do C:\xampp&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;2. Pobieramy Symfony. Poniżej opisany jest tutorial dla Symfony 1.1.1, możesz go pobrać &lt;a href="http://www.symfony-project.org/get/symfony-1.1.1.zip"&gt;tutaj&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;3. Rozpakuj Symfony np. do katalogu c:\symfony&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;4. Musisz teraz dodać zmienne środowiskowe. Aby to zrobić przejdź: &lt;b&gt;START-&amp;gt;Ustawienia-&amp;gt;Panel Sterowania-&amp;gt;System-&amp;gt;Zaawansowane-&amp;gt;Zmienne środowiskowe&lt;/b&gt; Tam w &lt;b&gt;&lt;i&gt;"Zmienne systemowe"&lt;/i&gt;&lt;/b&gt; należy znaleźć zmienną "Path". Po jej zaznaczeniu i kliknięciu Edytuj, w polu &lt;b&gt;&lt;i&gt;Wartość zmiennej&lt;/i&gt;&lt;/b&gt; dopisać następujące ścieżki: &lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;C:\xampp\php;C:\xampp\mysql\bin;C:\symfony\data\bin&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Oczywiście ścieżki mogą się różnić jeżeli symfony i xampp zostały umieszczone w innych katalogach. Jednocześ &lt;b&gt;należy pamiętać o prawidłowym oddzieleniu zmiennych znakami ;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;5. Stwórz katalog projektu: np. C:\mojprojekt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;6. Uruchom konsolę (START-&amp;gt;Uruchom...-&amp;gt;cmd.exe). Przejdz do katalogu projektu&lt;br /&gt;i wpisz: &lt;b&gt;&lt;i&gt;symfony init-project mojprojekt&lt;/i&gt;&lt;/b&gt; co skopiuje potrzebne dla strony pliki projektu &lt;b&gt;&lt;i&gt;symfony init-app myapp&lt;/i&gt;&lt;/b&gt; co utworzy katalog aplikacji w katalogu projektu. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;7. Teraz musisz wyedytować plik &lt;b&gt;&lt;i&gt;httpd-vhosts.conf&lt;/i&gt;&lt;/b&gt;. Znajduje się on w katalogu C:\xampp\apache\conf\extra\ . Należy w nim dopisać w nim konfigurację dla serwera. Poniżej znajduje się konfiguracja dla ścieżek zgodna z powyższymi założeniami. Wystarczy dopisać ją na końcu tego pliku:&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;&lt;br /&gt; ServerName mojprojekt&lt;br /&gt; DocumentRoot "C:\mojprojekt\web"&lt;br /&gt; DirectoryIndex index.php&lt;br /&gt; Alias /sf C:\symfony\data\web\sf&lt;br /&gt;&lt;br /&gt;  &amp;lt;Directory "C:\symfony\data\web\sf"&amp;gt;&lt;br /&gt;    AllowOverride All&lt;br /&gt;    Allow from All&lt;br /&gt;  &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Directory "C:\mojprojekt\web"&amp;gt;&lt;br /&gt;    AllowOverride All&lt;br /&gt;    Allow from All&lt;br /&gt;   &amp;lt;/Directory&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;8. Kolejnym krokiem jest ... restart serwera Apache. Można tego dokonać prosto, poprzez panel administracyjny XAMPP. Drugą możliwością jest restart poprzez panel zarządzania usługami (START-&amp;gt;Uruchom-&amp;gt;services.msc) i tam zatrzymaj i uruchom ponownie usługę Apache 2.2. W przypadku gdyby usługa Apache nie chciałą się ponownie uruchomić, szczegóły błędów jakie napotakała odnajedziesz w Podglądzie zdażeń (START-&amp;gt;Uruchom-&amp;gt;compmgmt.msc-&amp;gt;Zarządzanie komputerem-&amp;gt;Narzędzia systemowe-&amp;gt;Podgląd zdarzeń-&amp;gt;Aplikacja)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;9. Jeżeli wszystko poszło zgodnie z planem pod adresem http://localhost powinien być widoczny "ekran powitalny" projektu. (lub http://127.0.0.1). Od tej pory można rozpocząć pracę nad swoim serwisem.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;10. Dodatkowym "ułatwieniem", gdy mamy wiele projektów, jest zmodyfikowanie pliku &lt;br /&gt;&lt;b&gt;C:\Windows\System32\drivers\etc\hosts&lt;/b&gt; i dodanie po linii &lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;127.0.0.1      localhost&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;linii np.:&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;127.0.0.1      mojprojekt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;dzieki temu po wpisaniu http://mojprojekt otworzy się strona naszego projektu. Jest dalsze kombinacje w pliku hosts daje możliwosc prostego zarządzania wieloma projektami.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-6015800073711822647?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/6015800073711822647/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=6015800073711822647' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6015800073711822647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6015800073711822647'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/09/php-integracja-symfony-z-xampp.html' title='[PHP] Integracja Symfony z XAMPP'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BeBTjWOz7go/SMwe9FvXdsI/AAAAAAAAA44/4QA23YfWCi4/s72-c/symfony_project.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-4616656607107662023</id><published>2008-09-01T16:25:00.000-07:00</published><updated>2008-10-22T23:25:51.763-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='java script'/><category scheme='http://www.blogger.com/atom/ns#' term='blogspot'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>[JS][HTML] Syntaxhighlighter w Blogger (Blogspot)</title><content type='html'>Zamieszczanie kodu C# / PHP / Java na blogu jest nieco problematyczne ze względu na znaki specjalne, spacje itp. Jednocześnie formatowanie kodu i jego kopiowanie jest znacznie bardziej problematyczne z podstawowej "notki" niż ze strony z czystym textem (plain text). Opisany poniżej sposób umożliwia zamieszczenie "podświetlania" dla kodu nie tylko na Bloggerze ale również na każdej innej stronie. Wystarczy przejść przez te kilka prostych kroków:&lt;br /&gt;&lt;br /&gt;1. Wejdź na stronę http://code.google.com/p/syntaxhighlighter/&lt;br /&gt;2. Pobierz wersję syntaxhighlitera&lt;br /&gt;3. Musisz posiadać &lt;b&gt;własne&lt;/b&gt; konto hostingowe na które wrzucisz pliki które później będziesz mógł wykorzystać na bloggerze.&lt;br /&gt;4. Po zalogowaniu się do bloggera przejdź do &lt;i&gt;&lt;b&gt;Ustawienia-&amp;gt;Układ-&amp;gt;Edytuj kod HTML&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;5. &lt;b&gt;PRZED&lt;/b&gt; tagiem &lt;b&gt;&amp;lt;/body&amp;gt;&lt;/b&gt; zamieść następujący kod:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;link href='http://TUTAJ.TWOJA.DOMENA/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shCore.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushCpp.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushCSharp.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushCss.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushJava.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushJScript.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushSql.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushXml.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/shBrushPhp.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script class='javascript'&amp;gt;&lt;br /&gt;//&amp;lt;![CDATA[&lt;br /&gt;    function FindTagsByName(container, name, Tag)&lt;br /&gt;    {&lt;br /&gt;        var elements = document.getElementsByTagName(Tag);&lt;br /&gt;        for (var i = 0; i &amp;lt; elements.length; i++)&lt;br /&gt;        {&lt;br /&gt;            if (elements[i].getAttribute("name") == name)&lt;br /&gt;            {&lt;br /&gt;                container.push(elements[i]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    var elements = [];&lt;br /&gt;    FindTagsByName(elements, "code", "pre");&lt;br /&gt;    FindTagsByName(elements, "code", "textarea");&lt;br /&gt; &lt;br /&gt; for(var i=0; i &amp;lt; elements.length; i++) {&lt;br /&gt;  if(elements[i].nodeName.toUpperCase() == "TEXTAREA") {&lt;br /&gt;   var childNode = elements[i].childNodes[0];&lt;br /&gt;   var newNode = document.createTextNode(childNode.nodeValue.replace(/&amp;lt;br\s*\/?&amp;gt;/gi,'\n'));&lt;br /&gt;   elements[i].replaceChild(newNode, childNode);&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt;else if(elements[i].nodeName.toUpperCase() == "PRE") {&lt;br /&gt;   brs = elements[i].getElementsByTagName("br");&lt;br /&gt;   for(var j = 0, brLength = brs.length; j &amp;lt; brLength; j++) {&lt;br /&gt;    var newNode = document.createTextNode("\n");&lt;br /&gt;    elements[i].replaceChild(newNode, brs[0]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;  //clipboard does not work well, no line breaks&lt;br /&gt;  // dp.SyntaxHighlighter.ClipboardSwf = &lt;br /&gt;  //"http://TUTAJ.TWOJA.DOMENA/clipboard.swf";&lt;br /&gt;  dp.SyntaxHighlighter.HighlightAll("code");&lt;br /&gt;//]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;6. Gdy umieścisz już ten kod, kliknij &lt;b&gt;ZAPISZ&lt;/b&gt;. O ile wszystko dobrze podlinkowałeś, teraz wystarczy tylko użyć tego kodu.&lt;br /&gt;7. Po utworzeniu nowej notki (ja osobiście tworze każdą w "Edytuj kod HTML", będziesz mógł użyć następującej składni:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;pre name="code" class="csharp"&amp;gt;&lt;br /&gt;//Tutaj jakiś kod c#&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;8. Zwróć uwagę na atrybut "class" w tagu "pre". W zależności od języka, jego skłądnia jest różnie układana i kolorowana przez skrypt. Lista języków znajduje się &lt;a href="http://code.google.com/p/syntaxhighlighter/wiki/Languages"&gt;tutaj&lt;/a&gt;&lt;br /&gt;9. Nie wszystkie języki w powyższym skrypcie są podlinkowane. Rozpoznawanie każdego języka odbywa się na podstawie dołączenia pliku &lt;b&gt;.js&lt;/b&gt; do kodu HTML szablonu strony. Dlatego aby dodać kolejny język (który w powyższym przykładzie nie został ujęty) wystarczy że dodasz do listy języków linijkę&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;script src='http://TUTAJ.TWOJA.DOMENA/DODATKOWY JĘZYK.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-4616656607107662023?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/4616656607107662023/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=4616656607107662023' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/4616656607107662023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/4616656607107662023'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/09/syntaxhighlighter-w-blogger-blogspot.html' title='[JS][HTML] Syntaxhighlighter w Blogger (Blogspot)'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-8433696463713652066</id><published>2008-09-01T16:04:00.000-07:00</published><updated>2008-09-01T16:25:13.098-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>[PHP][Eng] How to unzip ZIP archive using PHP script</title><content type='html'>One of the basics problems while uploading files onto www hosting account is that the FTP protocol isn't as stable for most connections as it shouild be. So while uploading lots of files (500+) there's always a risk that the connection will be terminated or closed. Good solution is to upload a &lt;b&gt;.zip&lt;/b&gt; or &lt;b&gt;.tar&lt;/b&gt; archive onto account and then extract the content from it. Not all admin panels allow extracting files.&lt;br /&gt;&lt;br /&gt;One of popular solutions is writing a php script which runs a shell-type command passing a archive as a parameter. It's nothing else like batch running an aplication with params to extract files. Mostly this solution isn't allowed as a security policy for server (triggering apps @ shell thru script). &lt;br /&gt;&lt;br /&gt;PHP allows to extract the ZIP file by itself, using few simple lines of code. Only requirement is that the PHP have enabled php_zip module (at apache web server or so). This is mostly done (and enable) in basic configuration of server. &lt;br /&gt;If the php_zip module is enable you can create such a script to use it to extract files from the zip archive:&lt;br /&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;&lt;?PHP&lt;br /&gt;$zip = new ZipArchive() ;&lt;br /&gt;if ($zip-&gt;open("archive.zip") !== TRUE) {die ("error!");}&lt;br /&gt;$zip-&gt;extractTo("./");&lt;br /&gt;$zip-&gt;close();&lt;br /&gt;echo("ok");&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using above script will extract it's content to the current directory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Additional info:&lt;/b&gt;&lt;br /&gt;1. ZIP archive and PHP script should be placed in the same directory&lt;br /&gt;2. The directory in which zip and php is placed should allow writing (privs set to 777)&lt;br /&gt;3. The name of the extracting script (above) should have unique name, so it couldn't be overwritten by some file from ZIP archive.&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-8433696463713652066?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/8433696463713652066/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=8433696463713652066' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/8433696463713652066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/8433696463713652066'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/09/phpeng-how-to-unzip-zip-archive-using.html' title='[PHP][Eng] How to unzip ZIP archive using PHP script'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-6128196713607869797</id><published>2008-09-01T15:43:00.000-07:00</published><updated>2008-09-01T15:54:34.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>[PHP] Jak rozpakować archiwum ZIP przy pomocy skryptu PHP</title><content type='html'>Jednym z podstawowych problemów z uploadowaniem plików jest to że przy ich dużej ilości protokół FTP nie jest na tyle (zazwyczaj) stabilny aby w czasie jednej sesji uploadowac sporo plików. Dobrym rozwiązaniem jest uploadowanie pliku &lt;b&gt;.zip&lt;/b&gt; lub &lt;b&gt;.tar&lt;/b&gt; i rozpakowanie go. Nie wszystkie systemy zarządzania treścią mają możliwośc rozpakowywania plików z poziomu menedzera plików. &lt;br /&gt;&lt;br /&gt;Jedym z popularnych sposobów jest korzystanie z uruchamiania skryptów powłoki. CZyli innymi słowy "odpalenie" przy pomocy skryptu PHP programu który to rozpakuje ten plik. Zazwyczaj nie powodzi się to gdyż system blokuje tego typu próby.&lt;br /&gt;&lt;br /&gt;PHP oferuje jednak możliwość programowego rozpakowania archiwum. O ile na serwerze PHP jest uruchomiony moduł php_zip (a zazwyczaj jest) możemy zastosować następujący kod:&lt;br /&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;&amp;lt;?PHP&lt;br /&gt;$zip = new ZipArchive() ;&lt;br /&gt;if ($zip-&gt;open("archiwum.zip") !== TRUE) {die ("error!");}&lt;br /&gt;$zip-&amp;gt;extractTo("./");&lt;br /&gt;$zip-&amp;gt;close();&lt;br /&gt;echo("ok");&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Spowoduje to rozpakowanie archiwum do katalogu w którym znajduje się skrypt i plik zip.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dodatkowe uwagi ogólne&lt;/b&gt;&lt;br /&gt;1. Plik ZIP i skrypt powinny znajdować się w tym samym katalogu&lt;br /&gt;2. Katalog w którym znajduje się skrypt i plik zip powinien być gotowy do zapisu (najlpiej z uprawnieniami 777)&lt;br /&gt;3. Skrypt rozpakowujący nie powinien sie nazywać jak jakiś plik w rozpakowywanym archiwum (najlepiej nadac mu jakas losową nazwę np. 298348237482743.php)&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-6128196713607869797?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/6128196713607869797/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=6128196713607869797' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6128196713607869797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6128196713607869797'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/09/php-jak-rozpakowa-archiwum-zip-przy.html' title='[PHP] Jak rozpakować archiwum ZIP przy pomocy skryptu PHP'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-5572365712706852926</id><published>2008-08-28T16:18:00.000-07:00</published><updated>2008-08-28T17:16:04.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[C#] Wyświetlanie właściwośći pliku/aplikacji przez panel systemu Windows</title><content type='html'>Pobieranie właściwości plików czy aplikacji przy użyciu .NET 2.0 i C# tak przy użyciu standardowych narzędzi dot. informacji o plikach czy refleksji jest stosunkowo powszechnie publikowanym tematem. Rzadko kiedy można znaleźć jednak informacje o tym jak wyświetlić standardowy panel właściwości pliku (te same które widzimy po kliknięciu prawym przyciskiem na plik i wybranie opcji "Właściwości"). Stosunkowo prosto jest osiągnąć ten cel.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BeBTjWOz7go/SLczm_Bni-I/AAAAAAAAA4I/hA2qpCERB48/s1600-h/properties.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BeBTjWOz7go/SLczm_Bni-I/AAAAAAAAA4I/hA2qpCERB48/s320/properties.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5239713436315126754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;&lt;br /&gt;class PropertiesInfo{&lt;br /&gt;        [StructLayout(LayoutKind.Sequential)]&lt;br /&gt;        public class SHELLEXECUTEINFO&lt;br /&gt;        {&lt;br /&gt;            public int cbSize;&lt;br /&gt;            public int fMask;&lt;br /&gt;            public int hwnd;&lt;br /&gt;            [MarshalAs(UnmanagedType.LPWStr)]&lt;br /&gt;            public string lpVerb;&lt;br /&gt;            [MarshalAs(UnmanagedType.LPWStr)]&lt;br /&gt;            public string lpFile;&lt;br /&gt;            [MarshalAs(UnmanagedType.LPWStr)]&lt;br /&gt;            public string lpParameters;&lt;br /&gt;            [MarshalAs(UnmanagedType.LPWStr)]&lt;br /&gt;            public string lpDirectory;&lt;br /&gt;            public int nShow;&lt;br /&gt;            public int hInstApp;&lt;br /&gt;            public int lpIDList;&lt;br /&gt;            public string lpClass;&lt;br /&gt;            public int hkeyClass;&lt;br /&gt;            public int dwHotKey;&lt;br /&gt;            public int hIcon;&lt;br /&gt;            public int hProcess;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [DllImport("Shell32.dll", CharSet = CharSet.Auto)]&lt;br /&gt;        public static extern int ShellExecuteEx(SHELLEXECUTEINFO shinfo);&lt;br /&gt;&lt;br /&gt;        private const int SW_SHOW = 5;&lt;br /&gt;        private const int SEE_MASK_INVOKEIDLIST = 0x0C;&lt;br /&gt;&lt;br /&gt;        public static void OpenPropertiesWindow(String appPath)&lt;br /&gt;        {&lt;br /&gt;            SHELLEXECUTEINFO shInfo = new SHELLEXECUTEINFO();&lt;br /&gt;&lt;br /&gt;            shInfo.cbSize = Marshal.SizeOf(typeof(SHELLEXECUTEINFO));&lt;br /&gt;            shInfo.lpFile = appPath;&lt;br /&gt;            shInfo.nShow = SW_SHOW;&lt;br /&gt;            shInfo.fMask = SEE_MASK_INVOKEIDLIST;&lt;br /&gt;            shInfo.lpVerb = "properties";&lt;br /&gt;&lt;br /&gt;            ShellExecuteEx(shInfo);&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Jednocześnie należy zwrócić uwagę że należy na początku klasy dodać referencję do &lt;b&gt;System.Runtime.InteropServices;&lt;/b&gt;. W innym przypadku otrzymamy błąd dot. braku identyfikacji DllImport&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-5572365712706852926?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/5572365712706852926/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=5572365712706852926' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5572365712706852926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5572365712706852926'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/08/c-wywietlanie-waciwoi-plikuaplikacji.html' title='[C#] Wyświetlanie właściwośći pliku/aplikacji przez panel systemu Windows'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_BeBTjWOz7go/SLczm_Bni-I/AAAAAAAAA4I/hA2qpCERB48/s72-c/properties.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-3990097528546362583</id><published>2008-08-15T06:58:00.000-07:00</published><updated>2008-08-28T17:22:45.908-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[C#] Otwieranie strony WWW w domyślnej przeglądarce</title><content type='html'>W aplikacji C# (WebForms) chciałem zaprogramować prosty przycisk który będzie uruchamiał domyślną przeglądarkę internetową i w niej stronę. Większość rozwiązań które znalazłem w sieci chciały uruchamiać Internet Explorera przy użyciu polecenia "iexplore" i przekazanie adresu jako parametr. W czasie gdy uruchomienie strony www w domyślnej przeglądarce jest banalne:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c-sharp" &gt;&lt;br /&gt; Process.Start("http://www.google.com");&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-3990097528546362583?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/3990097528546362583/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=3990097528546362583' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/3990097528546362583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/3990097528546362583'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/08/c-otwieranie-strony-www-w-domylnej.html' title='[C#] Otwieranie strony WWW w domyślnej przeglądarce'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-6674429571133273829</id><published>2008-08-09T09:09:00.000-07:00</published><updated>2008-10-22T23:26:13.912-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>[C#][ENG] Extracting Path (Location) of file from Path with atributes</title><content type='html'>Working on my latest project I came across some problem with extracting the path from complex path (a path which contains also parameters for app). Accually I was parsing paths for Windows Services and need to extract path for the service-app so I could extract its icon for my app.&lt;br /&gt;&lt;br /&gt;So having paths like this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"C:\windows\explorer.exe"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;C:\windows\svchost.exe -k&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;C:\windows\svchost -x&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"C:\apache\apache.exe" --mysql:"C:\mysql\mysql.exe"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"C:\program files\agnitum\outpost.exe"&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;As you can see there is a variety of paths maked the simple solutions inoperational.&lt;br /&gt;&lt;br /&gt;So I had to develope some simple algorith which could comprehend problem. Method follows:&lt;br /&gt;1. Split string for \ character to array of some &lt;span style="font-style: italic;"&gt;size&lt;/span&gt;&lt;br /&gt;2. Join such splitted strings into one as long as you will reach&lt;span style="font-style: italic;"&gt; size-1 &lt;/span&gt;or if you wont find ".exe" in current joining element.&lt;br /&gt;3. The last (ommited) element split by " " (space) character.&lt;br /&gt;4. Join only first element of second splitted array.&lt;br /&gt;&lt;br /&gt;The C# code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="c-sharp" &gt;&lt;br /&gt;&lt;br /&gt;    public static string extractPath(String path)&lt;br /&gt;    {&lt;br /&gt;        path = path.Replace("\"", string.Empty);&lt;br /&gt;        String[] parr1 = path.Split('\\');&lt;br /&gt;        String resultString= "";&lt;br /&gt;        &lt;br /&gt;        int SpliterCEll = parr1.Length -1;&lt;br /&gt;        for(int i=0; i&amp;lt;parr1.Length-1; i++)&lt;br /&gt;        {&lt;br /&gt;            if(parr1[i].Contains(".exe"))&lt;br /&gt;            {&lt;br /&gt;                SpliterCell = i;&lt;br /&gt;                break;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            resultString+=(parr1[i]);&lt;br /&gt;            resultString+="\\";&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        String[] parr2 = (parr1[SpliterCell]).Split(' ');&lt;br /&gt;        resultString += parr2[0];&lt;br /&gt;        &lt;br /&gt;        if(!resultString.ToLower().EndsWith(".exe"))&lt;br /&gt;            resultString+=".exe";&lt;br /&gt;        &lt;br /&gt;        return resultString;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Only situation above code cannot handle is situation when youre passing such path:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C:\windows\svchost c:\somefile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I haven't met such entry. In case if it occur it can be easily eliminated by adding check for ":" in same line as check for ".exe".&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-6674429571133273829?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/6674429571133273829/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=6674429571133273829' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6674429571133273829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/6674429571133273829'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/08/extracting-path-location-of-file-from.html' title='[C#][ENG] Extracting Path (Location) of file from Path with atributes'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-1026262319336805018</id><published>2008-07-16T02:43:00.001-07:00</published><updated>2008-10-22T23:26:34.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>[Python][Django] Błąd Instalacji Django 0.96</title><content type='html'>Django jest framworkiem webowym napisanym całkowicie (i współpracującym) przy użyciu języka skryptowego Python. Posiada klasyczne rozwiązania jakie są implementowane w większości współczesnych frameworków webowych, jednak część z nich, dzięki możliwościom jakie daje python, została rozszerzona. &lt;br /&gt;&lt;br /&gt;Django aktualnie dostępne jest w wersji 0.96.2, jednak cztery dni od tego posta planowana jest wersja 1.0 alpha. &lt;br /&gt;&lt;br /&gt;Osobiście znajduję w nim sporo niedogodności i problemów, nawet przy samej instalacji frameworka.&lt;br /&gt;&lt;br /&gt;Aby zaintalować django należy wydać komendę:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;setup.py install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Często jednak zdaża się że otrzymujemy błąd (pod Windows):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;error: package directory '\django' does not exist&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Powodem jest inna (niż w systemach unixowych) interpretacja ścieżek dostępu.&lt;br /&gt;Należy &lt;b&gt;wyedytować plik setup.py&lt;/b&gt; znajdujący się w najwyższym katalogu (root) instalacyjnym pakietu django, po czym odnaleźć (&lt;b&gt;zazwyczaj w 24 linii&lt;/b&gt;) poniższy zapis:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package = dirpath[len_root_dir:].lstrip('/').replace('/', '.')&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;i zmienić go na:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;package = dirpath[len_root_dir:].lstrip('\\').replace('\\', '.')&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Po tej operacji, django zainstaluje się bez problemu.&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-1026262319336805018?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/1026262319336805018/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=1026262319336805018' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/1026262319336805018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/1026262319336805018'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/07/bd-instalacji-django-096.html' title='[Python][Django] Błąd Instalacji Django 0.96'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-2248970217769872381</id><published>2008-06-28T01:31:00.000-07:00</published><updated>2008-12-11T00:04:17.017-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UDMA'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='CD'/><category scheme='http://www.blogger.com/atom/ns#' term='PIO'/><category scheme='http://www.blogger.com/atom/ns#' term='DVD'/><title type='text'>[Hardware] Zacinający się odczyt danych podczas korzystania z CD / DVD</title><content type='html'>Parę tygodni temu spotkałem problem, którego rozwiązanie nie było zbyt dla mnie oczywiste. Chodzi o to, że podczas odczytu z płyty CD/DVD (np. muzyki, filmu, danych) odbija się to również na odtwarzaniu czy odczycie innych danych. Np. Jeżeli podczas kopiowania z płyty DVD/CD danych będziemy odtwarzać plik dźwiękowy np. w Winampie, to w efekcie muzyka będzie się "cieła" lub "zamulała". &lt;br /&gt;&lt;br /&gt;Zacinanie się wynika z nieoptymalnego wykorzystania kanału przesyłania danych pomiędzy CD/DVD a komputerem. Dyski twarde, jak również napędy optyczne mogą działąć z wykorzystaniem jednej z technik obsługi I/O (wejścia/wyjścia) z CPU. Starszym formatem jest &lt;a href="http://pl.wikipedia.org/wiki/PIO" target="_blank"&gt;PIO&lt;/a&gt;, który został zastąpiony przez &lt;a href="http://http://pl.wikipedia.org/wiki/UDMA" target="_blank"&gt;UDMA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Powodem powyżej opisanego zachowania się danych podczas korzytania z nośnika, jest fakt że CD-ROM lub DVD-ROM pracuje w trybie PIO (który jest wolniejszy). &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Rozwiązaniem tego problemu&lt;/span&gt; jest przestawienie kontrolera IDE pod który podpięty jest napęd w tryb UDMA. W &lt;span style="font-weight:bold;"&gt;Windows XP&lt;/span&gt; dokonuje się tego następująco. Przechodzimy do &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;START -&gt; Ustawienia -&gt; Panel Sterowania -&gt; System-&gt; Sprzęt -&gt; Manager Urządzeń -&gt;Kontrolery IDE ATA/ATAPI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BeBTjWOz7go/SGX6wy8RZrI/AAAAAAAAA0w/potoY6g6yIQ/s1600-h/udma.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BeBTjWOz7go/SGX6wy8RZrI/AAAAAAAAA0w/potoY6g6yIQ/s320/udma.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5216851459593823922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tam wybieramy odpowiedni kontroler (podstawowy/zapasowy kanał IDE) i klikając na niego prawym przyciskiem myszy wybieramy &lt;span style="font-weight:bold;"&gt;Właściwości&lt;/span&gt;. W nowym oknie wybieramy "Ustawienia zaawansowane" a tam przestawiamy wszystko na &lt;span style="font-weight:bold;"&gt;DMA jeżeli dostępne&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Niestety czasem okazuje się to niewystarczające. Jeżeli nawet przestawimy wszystkie kanały na UDMA system po ponowym restarcie i tak wróci do trybu PIO. Nie jest to kwestia sterowników czy innych ustawień a ... "kaprysu" Windows. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Rozwiązanie tego jest równie proste&lt;/span&gt;. Mianowicie należy ... &lt;span style="font-weight:bold;"&gt;usunąć kanał będący w stanie PIO&lt;/span&gt;. Usunięcie go i ponowny restart komputera spowoduje ponowne go rozpoznanie i ustawienie w trybie UDMA.&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-2248970217769872381?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/2248970217769872381/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=2248970217769872381' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2248970217769872381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/2248970217769872381'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/06/zacinajcy-si-odczyt-danych-podczas.html' title='[Hardware] Zacinający się odczyt danych podczas korzystania z CD / DVD'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_BeBTjWOz7go/SGX6wy8RZrI/AAAAAAAAA0w/potoY6g6yIQ/s72-c/udma.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-5473085994105827650</id><published>2008-06-11T16:04:00.000-07:00</published><updated>2008-10-22T23:27:02.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMP'/><category scheme='http://www.blogger.com/atom/ns#' term='W3C'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>[HTML] Windows Media Player i Firefox</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Ostatnio zmagałem się z problemem walidacji obiektu Windows Media Player odtwarzający dzwięk/wideo w przeglądarce Firefox. Problem polega na tym ze chcemy na stronie umieścić Windows Media Player, jednak strona nie wyświetla poprawnie kodu w Firefoxie, a to w Operze itd itp. Zwykle do takich rozwiązań stosuje się połączenie tagów &lt;i&gt;object&lt;/i&gt; oraz &lt;i&gt;embed&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Strona taka jednak nie zwaliduje się. &lt;br /&gt;Rozwiązaniem jest zastosowanie następującego kodu (gdzie "plik.avi" jest jakąs sciezką do pliku multimedialnego):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;object type=&amp;quot;video/x-ms-wmv&amp;quot; data=&amp;quot;plik.avi&amp;quot;  width: 320px; height: 240px;&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;param name=&amp;quot;controller&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;param name=&amp;quot;autostart&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;param name=&amp;quot;src&amp;quot; value=&amp;quot;plik.avi&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/object&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Dzięki temu kodowi wyświetlimy okno Windows Media Playera w Firefoxie bez dodatkowych wtyczek. Jednocześnie będzie się on walidował w walidatorze W3C m.in. dla XHTML Strict 1.0 itp. Kod jest również odtwarzany w Operze oraz IE.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-5473085994105827650?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/5473085994105827650/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=5473085994105827650' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5473085994105827650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/5473085994105827650'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/06/windows-media-player-i-firefox.html' title='[HTML] Windows Media Player i Firefox'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1440555928919685108.post-791455641182674807</id><published>2008-06-10T04:50:00.000-07:00</published><updated>2008-06-28T02:03:58.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Info'/><title type='text'>SOCAR IT Place - START!</title><content type='html'>Postanowiłem utworzyć kolejnego bloga który uzupełniałby lukę jaka istnieje w schemacie publikowania moich materiałów/artykułów/czegokolwiek. Mianowicie od 3 lat istnieje tzw. &lt;a href="http://www.socar.net.pl" target="_blank"&gt;SOCAR Homepage&lt;/a&gt; oraz &lt;a href="http://socarsblog.blogger.com" target="_blank"&gt;SOCAR Private BlogSpace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pierwsza witryna poświecona jest projektom które realizowałem/realizuje. Druga natomiast ma za zadanie zbieranie moich przemyśleń i komentarzy dot. różnych spraw które mnie otaczają i z którymi tak czy inaczej mam styczność.&lt;br /&gt;&lt;br /&gt;Postaram się ograniczyć niepotrzebny bełkot (jak to ma miejsce na innych blogach "technicznych") do minimum. Ten blog ma na celu przede wszystkim zbieranie różnych "know-how" z zakresu IT. Bo jak wiadomo jestem z tymże IT dość mocno związany. &lt;br /&gt;&lt;br /&gt;Enjoy ;-)&lt;div class="blogger-post-footer"&gt;RSS by SOCAR.
Visit SOCARs other sites at:
http://www.socar.net.pl/
http://socarsblog.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1440555928919685108-791455641182674807?l=it-socar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-socar.blogspot.com/feeds/791455641182674807/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1440555928919685108&amp;postID=791455641182674807' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/791455641182674807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1440555928919685108/posts/default/791455641182674807'/><link rel='alternate' type='text/html' href='http://it-socar.blogspot.com/2008/06/socar-it-place-start.html' title='SOCAR IT Place - START!'/><author><name>SOCAR</name><uri>http://www.blogger.com/profile/11140056860824508267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://socar.ovh.org/images/stories/187.jpg'/></author><thr:total>0</thr:total></entry></feed>
