Projekt badawczy Polska-Namibia 2010

Jest skrypt obslugujacy baze danych (plik csv), na macierzystym serwerze
dziala dobrze, po przeniesieniu na inny niestety nie chce dzialac.
Nie mam pojecia dlaczego, wymagane moduly sa zainstalowane, wymagane pliki
perla oraz zwiazane z sama bazka tez sa, po prostu wierna kopia calosci
oryginalu. sciezki dostepów tez sa poprawne.
Dziwne jest to, ze wysypuje sie w miejscy które jest neutralne
(platforma,struktura katalogów), czyli przy otwarciu pliku cennik.dat
(wyswietla die).
Mimo ze plik cennik.dat jest na swoim miejscu.
Podejrzewam, ze tu jest wina warunku if ($step eq ''), $step to
identyfikacja kroku, czyli tego czy sa jakies dane do pobrania (z
formularza) czy nie.
Na poczatku jest brak danych wiec $step='', a jak zmienie na 1 to dziala ale
przechodzi do innego kroku.
Najlepsze jest to, ze skrypt jest w 100% poprawny, bo chodzi na innym
serwerze. Jesli ktos ma ochote, to prosze o pomoc
Mateusz
m@mv.pl
Oto poczatek skryptu:
____________________________________________________
use CGI;
use Time::Local;
$q = new CGI;
$step = $q-param('STEP');
$from = $q-param('FROM');
$to   = $q-param('TO');
$dd   = $q-param('DD');
$mm   = $q-param('MM');
$rr   = $q-param('RR');
if ($step eq '') {
 open (FILE,"<cennik.dat") || die "nie można otworzyć cennik.dat";
                @cennik = <FILE;
        close(FILE);
......dalsza czesc drukujaca formularz na stronie
_______________________________________________________




On Fri, 06 May 2005 23:17:20 +0200, Janusz wrote:

Jeśli chcesz parkować subdomeny w domenie TEPSY,
to musisz się ich prosić o to, bo nie jest to w ich ofercie, ani cenniku
Lepiej dać sobie z tym siana i kupić jakiegoś coma lub neta,
lub jakąś regionalną


z tymi przydzielonym przez ISP u mnie jest tak że mój dns to będzie np.
uzytkownik.isp i oficjalnie mogę prowadzić swój serwer DNS. Gdybym
chciał to odpłatność jest śmieszna 50zł/rok i mógłbym się nie
bawić ale chodzi o naukę w warunkach rzeczywistych. Po prostu dla celów
samo-edukacyjnych chciałem sobie porobić osobne www.użytkownik.isp itp.
Później i tak będzie dodatkowo dokupiona domena.


| No IP to mam wiele, ale ZTCW (a właściwie słyszałem) to głupotą jest
| robienie secondary za tym samym firewall i/lub na tej samej maszynie.

Szczerze mówiąc - do zastosowań nie komercyjnych,
lub takich, gdzie obciążenie serwera jest minimalne,
czyli domowo - edukacyjnych, stosowanie drugiego
DNSa jest wogóle bez sensu, ale niestety registranty
tego wymagają.

Aczkolwiek stosowanie ich na jednej maszynie jest całkiem
praktyczne - aktualizujesz jedną bazę danych wpisów, a nie dwie.
I wcale nie jest to głupotą, skoro ludzie którzy piszą oprogramowanie
serwerów DNS, w dokumentacji pokazują jak to zrobić.


Hmmm... Już mi to kilka razy chodziło po głowie, choćby po to żeby
tak zacząć i jak będzie działać to dopiero przenieść secondary poza
sieć.


Poza tym , jak masz wiele IP to możesz postawić drugi komputer
i na nim serwer secondary dns.


No tak, ale i tak już ich za dużo stoi :) to już szybciej jeden na
bramce a drugi w dmz.




Zastrzezenie danych jest wpisane do cennika jako usluga. Usluga ta, mimo,
ze w nazwie jest mowa o zastrzeganiu danych, polega na nie podawaniu
_numeru_ telefonu! Pobieranie oplaty za taka usluge jest jak najbardziej
legalne,


No wlasnie zgodnie z ustawa o ochronie danych osobowych jest nielegalne, gdyz
ogranicza twoje prawa obywatelskie nakladajac oplate za korzystanie z nich.
Cennik jest wadliwie skonstruowany,
gdyz zgodnie z ustawa powinien zapewniac ochrone danych osobowych,
czyli jako standard niepodawania numeru telefonu,
a jako opcje - podawanie numeru telefonu - za ew. oplata.

A jest niezgodnie z ustawa i calkiem na odwrot.


natomiast mozna sie zastanawiac nad tym czy nam sie to podoa czy
nie (mnie sie np. nie podoba i moge sie przeniesc do operatora, ktory
takiej oplaty nie pobiera)


Bzdura.
To tak jakby producent samochodow sprzedawal je bez zamkow w drzwiach,
instalowanych za dodatkowa oplata.

Ustawa o ochronie danych osobowych obowiazuje osoby fizyczne jak i podmioty
gospodarcze, instytucje, urzedy.
Zatem rowniez operatorzy sa zobowiazani do jej przestrzegania i
nieoferowania uslugi naruszajacej ustawe.
A niewatpliwie taka usluga jest wlasnie abonament z otwarta opcja udostepniania
numeru
i zadanie dodatkowej oplaty za powrot do standardu uslugi, zgodnej z ustawa o
ODO.

Trudno znalezc wytlumaczenie dla takiego przeoczenia w regulaminach uslug.

Zatem podsumowujac.
Usluga zgodna z UoODO jest usluga z opcja nieudostepniania numeru dzwoniacego
a udostepnianie numeru moze nastapic jedynie, rowniez zgodnie z UoODO, na wniosek
zainteresowanego.
Tak jak mowi ustawa i zgodnie z ktora wszelkie druki wypelniane przez strony
zawieraja formule zgody
na udostepnianie danych osobowych/ ich przetwarzanie.

Jakkolwiek czesto zgoda jest naduzywana, gdyz przyjmujacy zgode, rozszerza ja na
wszelkie przetwarzanie i bywa ze zglaszajacy swoje dane do ksiazki telefonicznej
jest bombardowany ofertami
z zagranicy, bo w ramach przetwarzania, baza wywedrowala w swiat i odwiedza
kolejne biznesy
zainteresowane reklama i reklamowaniem sie w kraju.

jacek




| Nie i nie tęsknie za nimi.
| Nie bardzo rozumiem. Triggery rekursywne zapewniają zadziałanie
| niezależnie od tego, czy modyfikacja została dokonana w triggerze, czy
| poza nim. W dużym systemie to naprawdę upraszcza zarządzanie regułami
| biznesowymi.
Hmmm... być może masz rację (gdybym był złośliwy, tobym napisał że w
dużych systemach logikę zazwyczaj umieszcza się na serwerze aplikacji a
nie w bazie danych :P),


Tak też zrobiłem na początku, korzystając z rad podręcznikowych, ale
wycofałem się pod wpływem negatywnych doświadczeń.
Na serwerze aplikacji raguły biznesowe są realizowane na obiektach dataset
które są:
- 100 razy wolniejsze w porównaniu z triggerem, (to taki przybliżony wynik),
- niestabilne (najerzone eventami, ciężkie, przy modyfikacji danych nie
można odłączyć disablecontrols, bo rozwala się konstrukcja master-detail),
- jeżeli reguła siedzi w bazie, to będzie działała przy wykorzystaniu innych
kanałów łączności poza serwerm aplikacji (np. cennik dla klienów, który
zamawia towar nie wykorzystuje serwera aplikacji, ale łączy się z bazą i
generuje zamówienie, które wykorzystuje reguły biznesowe).
Dopóki trzymałem reguły na serwerze aplikacji miałem ciągłe problemy ze
stabilnością oraz szybkością działania. Problemy wielce się zmniejszyły, jak
przeniosłem je do bazy.


ale to tylko znaczy, że do problemu będziez musiał podejść trochę
inaczej - być może bardziej uniwersalnie i lepiej niż dotychczas :)
| Do takich zabaw powinieneś napisać procedurę, raczej w FB będziesz
| musiał.
| Szkoda. Bez tego trzeba będzie redundować triggery.
Nie sądzę, wystarczy, że zmienisz sposób postępowania - nadmiarowość
triggerów jest tu zdecydowanie najgorszym pomysłem... (to tak jak z
rekursywnym triggerem - nigdy na 100% nie wiadomo co się kiedy wykona -
ok, wiem że to wcale nie tak, ale mam takie odczucia - to nie jest prosty
elegancki kod :))


Więc jak rozwiążesz taki proste zadanie?
są 2  reguły:
cena=cena katalogowa*(100-rabat%)/100
oraz
VAT=ilość*cena*stawkaVAT%/100

Jak zapewnić wyliczenie VAT przy zmianie rabatu?
Robię to poprzez 2 triggery rekursywne. Zmiana rabatu zmieni cenę, a ta z
kolei zmiana, która dokona się w triggerze spowoduje wywołanie drugiego
triggera, który uaktualni VAT.
Brak rekursywności wymaga, abym przy zmianie rabatu musiał zatroszczyć się o
uaktulanienie VAT.
Chętnie wysłucham bardziej eleganckiego sposobu.


Poza tym jaki jest faktycznie sens stosowania GUID (poza swoistą modą) w
systemie nie-otwartym-na świat?


Aby rekord miał unikalny primarykey nie tylko w zakresie tabeli. Można
przenieść taki rekord do hurtowni bez ryzyka, że zderzy się z innym rekordem
z innej tabeli o tym samym primarykey.
Ponadto primarykey jest stringowy, co można wykorzystać do łączenia kluczy.
Z primarykey numerycznym sytuacja się komplikuje.


Zajmuje to więcej miejsca niż integer,


Nie zauważyłem spadku wydajności, kiedy zacząłem stosować primarykey
varchar(36).


a newid() jest równie dobrze unikalny. No chyba, że faktycznie każdy wiersz
musi byuć unikalny w większej skali niż jedna baza danych.


Właśnie tak jest w hurtowni.


| Natomiast widzę z przykładu, że jest trigger BEFORE. MSSQL tego nie ma
| (tylko FOR i AFTER), a czasami mi tego brakuje.
eee nie widzę tu wielkiej róznicy, poza inną deklaracją triggera.
Dokładnie ten sam efekt przecież można uzyskać w MS SQL wykorzystując
trigery FOR - ale faktyczie w FB jest jakoś fajniej.


To chyba nie rozumiem. Sądziłem, że BEFORE znaczy przed modyfikacją. W MSSQL
FOR jest już po modyfikacji. Wnioskuję tak, ponieważ nie mogę w takim
triggerze obsłużyć defaulta, jeżeli pole jest not nullable, ani znullować
foreignkey tabeli połączonej relacją z tabelą w której jest usuwawany
rekord.


| W MSSQL można zaciągać dane i robić selecty z plików excelowych, dbf i
| tekstowych. Czy w FB jest też to możliwe?
Jak powiedziałem w FB nie ma funkcjonaoności systemów ETL (Extract,
Transform and Load czyli wg nomenklatury MS będzie jest to DTS).
Czy szkoda? Czasem może tak, ale nie zapominaj że FB jest za free i za tę
kasę oferuje wcale wydajny i nieźle wyposażony silnik.


Wiem, że za free. Nie oczekuję, aby był taki, jak MSSQL, chciałem się tylko
rozeznać, czy możliwości są wystarczające.
Z drugiej strony MSDE do 5 użytkowników też jest za free, a jest to
praktycznie pełny MSSQL.

DD



Szablon by Sliffka (© Projekt badawczy Polska-Namibia 2010)