pawelkor
Odpowiedzi: 32
-
2010-01-21 12:08:43 O co chodzi z tym CGI?
CGI to interfejs określający sposób przekazywania danych między serwerem WWW a aplikacją, w obie strony. Opisuje w jaki sposób dane żądania są przekazywane w zmiennych środowiskowych (typ żądania, IP klienta), jak właściwe żądanie jest przekazywane przez standardowe wejście i jak odpowiedź jest przekazywana przez stanadardowe wyjście.
http://hoohoo.ncsa.illinois.edu/cgi - specyfikacja CGI
http://www.ietf.org/rfc/rfc3875.txt
Niemal każdy serwer WWW można skonfigurować do uruchamiania programów jako CGI. Oznacza to, że serwer po odebraniu żądania definiuje pewne zmienne środowiskowe i uruchamia pewien program. Dane są przekazywane do programu przez STDIN, a zwracane do serwera WWW przez STDOUT. Zwracane dane to kompletna strona.
Serwer WWW może w ten sposób uruchamiać zupełnie dowolne programy, o ile tylko zapewniają one właściwą obsługę przekazywanych standardowym wejściem parametrów. Można więc pisać w C, w Perlu, w VB czy choćby w Bashu, bo każdy język źródłowy plików wykonywalnych pozwala na pracę z danymi na standardowym wejściu i wyjściu.
W przypadku PHP używa się najczęściej innej metody komunikacji skryptu z programem - mod_php. Choć PHP w dużym stopniu bazuje na specyfikacji CGI.
Katalog cgi-bin i rozszerzenie cgi to wyłącznie konwencja. W konfiguracji serwera można wskazać dowolny plik wykonywalny w dowolnym katalogu.
Powiązanie CGI i Perla wynika wyłącznie z tego, że oba zyskały popularność w podobnym okresie, a Perl dobrze się sprawdził jako język skryptów uruchamianych przez CGI. Teraz nawet i Perl można uruchamiać inaczej, przez mod_perl.
Współcześnie istnieje wiele alternatyw dla CGI i uważa się tę metodę za mało wydajną i przestarzałą. Najprostszą alternatywą jest FastCGI - http://www.fastcgi.com/.
Podstawowy problem z CGI to uruchamianie osobnego procesu dla każdego żądania. -
2010-02-02 08:19:34 (Java) Niepotrzebne ciągi znakowe pozostają w pamięci
substringtworzy co prawda nowy obiekt, ale operuje on na tej samej, niemodyfikowalnej tablicychar[], atrybucievaluepierwotnego obiektu.Łączenie ciągów wymaga utworzenia nowej niemodyfikowalnej tablicy
char[], przechowującej ciąg uzyskany w wyniku wykonania operacji. Odwołanie do starej przestaje istnieć i może się nią zająć garbage collector. -
2010-01-21 15:06:39 Najlepsza czcionka do programowania
- Consolas - zoptymalizowane do MS ClearType i wtedy super, ale beznadziejne bez ClearType, http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3 Instalują się też z PowerPoint 2007 Viewer.
- Andale Mono http://prdownloads.sourceforge.net/corefonts/andale32.exe?download
- proFont
Dobry test to ciąg: Illegal10O - każda litera powinna wyglądać inaczej.
No i 8pt oczywiście.
-
2010-01-21 18:00:50 Zwracać z funkcji w C++ bool czy int?
Podstawową zasadą jest to, że kod powinien mówić jak najwięcej o intencjach programisty. typ
boolwyjaśnia od razu o co chodzi. Nadintmożna się zastanawiać.Istotne jest to, że po 5 latach każdy będzie widział, że chodzi o
bool, a nie liczbę.ale
Po 5 latach może się okazać, że trzeba też zwracać null... albo jeszcze coś... Najlepszym rozwiązaniem może być
enum. -
2010-01-31 01:19:40 (Perl) Kiedy dokładnie undef jest dopuszczalne?
wyrażenia logiczne, jak
$zmienna || do_something++i--(++undef == 1)lewa strona
.=,+=i-=, na przykładmy $a .='a';- automatyczne tworzenie elementów haszy (autovivification) - możemy napisać
$hasz{element}{podelement}, mimo, że nigdy wcześniej nie zdefiniowaliśmy wartości$hasz{element}.
-
2010-01-31 14:10:07 (Perl) Zapisywanie struktury danych na dysku
http://perldoc.perl.org/Storable.html freeze() i thaw()
-
2010-02-02 07:48:58 Regex w C# - przeszukiwanie HTML
Parser HTML to zdecydowanie lepszy pomysł. Np. Html Agility Pack.
Możesz ewentualnie próbować:
<h3 class=r><a .*? href="(?<adres>[^"]*)".*?>(?<tytul>.*?)</a></h3>ale podziały wierszy i wszelkie wariacje w HTML będą problemem.
-
2010-01-26 00:26:43 Co lepsze - IF-RETURN czy IF obejmujący kod całej funkcji?
@michu - faktycznie mało miejsca w komentarzach - haha, właśnie natrafiłem na taki przypadek: system symulacji giełdowych, procedura 'sub apply_system{if (buy_signal) {submit_buy_order;return} if (sell_signal) {submit_sell_order;return}}', w pakiecie był też system o nazwie 'zawsze w grze', do użycia np. 'system:always,filtr:buy_only,...' do specjalnych zastosowań. Typowe filtry to buy_only, sell_only, both albo 1pozycja,wiele_pozycji itp, itd. Można tworzyć nowe filtry. Cóż prostszego jak utworzyć filtr, który mówi 'można utworzyć drugą pozycję, jeżeli jest przeciwstawna do pierwszej'? Najpierw system generuje sygnały, potem filtrują je filtry, możemy mieć dwie pozycje przeciwstawne... no i było fajnie, dopóki nie znalazłem tego 'return' wewnątrz procedury :))) cieszy mnie argument, ale to nie było śmieszne... kiepski proces testowania zmian, oczywiście. żadnego unit testingu, sam byłem sobie winien... (błąd pojawiał się tylko w szczególnych przypadkach - użycia jednego z wielu systemów, tego specjalnego 'zawsze w grze') dodam jeszcze, że temat kolejności ifów w takich programach jest bardzo typowy i wydawało mi się, że jestem wyczulony na takie kwestie, a i tak dałem się złapać.
-
2010-01-31 00:45:31 Rozbudowa grupowania w SQL
A czemu nikt nie pisze JOIN?
select tabela.nazwa, pods.max_parametr, tabela.inny_parametr from tabela inner join ( select nazwa, max(parametr) as max_parametr from tabela group by nazwa ) as pods on tabela.nazwa=pods.nazwa and tabela.parametr=pods.max_parametr; -
2010-01-31 11:05:27 Parser XML w Perlu
Może http://search.cpan.org/perldoc/XML::Twig ("gałązka").
Może modyfikować pojedyncze elementy lub wiele elementów o tej samej nazwie. Ma dobrą dokumentację, tutorial i wszystkie normalnie potrzebne możliwości dostępne w prosty sposób.
my $twig= XML::Twig->new( twig_handlers => { wezel => &procedura_zmieniajaca_wezel } ); $twig->parse($xmlStr); $twig->print();Procedura dostaje dwa parametry: obiekt Twig (dokument) i obiekt węzła z metodami
text()iset_text().








6