Floating FB popout byReview Results

Produkcijska verzija FiskalizacijaDEV projekta

by Nino18. November 2012 09:22

Kako se približava dan kada bi Zakon trebao biti donesen, a, očekivano, i finalna verzija Tehničke specifikacije, tako i mi, prema ranijoj najavi, planiramo izdavanje finalne, produkcijske, verzije FiskalizacijaDEV projekta. Ovo uključuje i osnovnu .NET komponentu, kao i EXE i COM.

Otvorili smo tri nove rasprave na temu novih stvari koje bismo svi zajedno željeli vidjeti u produkcijskoj verziji, već prema tome o kojoj se tehnologiji radi:

 
Pozivamo sve zainteresirane da se priključe ovoj raspravi kako bismo zaokružili ovaj projekt i uspješno ga pripremili za produkciju Smile

Tags:

FiskalizacijaDEV.dll, COM i EXE - digitalni potpis sa code signing certifikatom finalne verzije

by Nino10. November 2012 10:09

Namjera nam je finalnu verziju komponenti (.NET assembly, COM, EXE) nastalih u sklopu FiskalizacijaDEV projekta digitalno potpisati sa našim code signing certifikatom. Ovakvo potpisivanje finalne verzije i, kasnije, svih ostalih verzija koje mi službeno izdamo, svima onima koji spomenuta rješenja koriste za digitalno potpisivanje XML poruka i komunikaciju sa CIS-om, osiguravaju neke stvari:

  • sigurnost da znate da koristite "originalnu" verziju komponente, a ne neki derivat koji ste možda skinuli negdje drugdje sa Interneta (jer, ipak, radi se o open source projektu)
  • sigurnost da znate da je komponenta koju koristite temeljito isprobana
  • smanjujete rizik od lažnih prijava raznih anti-virus, anti-spyware i sličnih programa
 
Otvorili smo issue koji prati status rješavanja ovdje: http://fiskalizacija.codeplex.com/workitem/625
 
 
Važno je napomenuti da ovaj post ne treba shvatiti kao kritiku ostalih (alternativnih) rješenja nastalih na temelju izvornog koda iz FiskalizacijaDEV projekta; baš naprotiv, izvorni kod i je open source upravo zato da se svi zainteresirani mogu njime poslužiti u svojim projektima i u svakom pogledu i bez ikakvih rezervi podržavamo i u budućnosti ćemo podržavati sva takva rješenja. Ovaj post, prije svega, pišemo da onima kojima je to bitno, pružimo određeni nivo sigurnosti i zaštite ukoliko se odluče na korištenje rješenja nastalih u sklopu ovog projekta.

Tags:

CIS load test

by Nino4. November 2012 11:51

Pripremamo load test putem kojeg planiramo poslati veću količinu XML poruka tipa RacunZahtjev u CIS, u što kraćem periodu, kako bismo provjerili kakav je odziv i kako se vrijeme odziva ponaša kod jačeg opterećenja.

Prema službenim najavama, očekuje se cca 10.000.000 XML poruka dnevno, cijeli je sustav dizajniran da može obraditi cca 1.000 XML poruka u sekundi, odnosno, da vrijeme odziva ne bude veće od 2 sekunde, od trenutka ulaska XML poruke u CIS pa do vraćanja odgovora.

Trenutno je prosječni odziv CIS-a u rangu od 0,11 sekundi - naravno, ovdje se radi o "praznom hodu", odnosno, sustav praktično radi bez ikakvog opterećenja, osim povremenih i sporadičnih testova. Trenutni status CIS-a je dostupan ovdje, zajedno sa prikazom, tabelarnim i grafičkim, vremena odziva, te tabelarnim prikazom grešaka u radu.

Kako nemamo informacije o platformi (hardware + software) koja se koristi kao podloga za CIS, možemo jedino pričati o tome kako smo osmislili ovaj naš load test: u ovom smo trenutku u fazi prikupljanja XML poruka, koje se spremaju u SQL Azure bazu podataka. Samo sučelje, web stranice + web servis, se također nalaze u Azure-u, kao web rola koja se "vrti" na 2 instance; prema potrebi ćemo povećavati broj instanci, iako je procjena da neće biti potrebe za time u ovoj fazi prikupljanja XML poruka.

Nakon što prikupimo potreban broj XML poruka i nakon što se sve ostalo pripremi, XML poruke ćemo iz SQL Azure baze podataka prebaciti u Azure Queue. Poruke planiramo prebaciti u Queue kako bismo mogli povećati paralelan broj zahtjeva koje možemo obraditi. Naime, plan je da kad load test započne, podignemo najmanje 4-6 instanci worker role koja će odraditi testiranje, slanjem XML poruka tipa RacunZahtjev u CIS. Pri tome planiramo da svaka od instanci vrti barem 50-tak zasebnih threadova koji će slati podatke u CIS. S obzirom na ovu arhitekturu, smatramo da ćemo biti puno fleksibilniji ako XML poruke čitamo iz Queue, umjesto direktno iz baze podataka - na ovaj način ne moramo brinuti o tome koji smo redak iz baze pročitali, jesmo li poruku uspješno poslali ili ne, koja instanca i koji thread obrađuje koji segment podataka iz baze i sl. O svemu ovome "brine" Azure Queue mehanizam, na nama je da čitamo poruke i šaljemo ih...

Maksimalna veličina poruke koju je moguće poslati u Queue je 64 KB -  s obzirom da je prosječna veličina XML poruke tipa RacunZahtjev negdje oko 4 - 5 KB, ovo je sasvim prihvatljivo.

Windows Azure Queue može obraditi do 2.000 transakcija u sekundi - ovdje se radi o teoretskom maksimumu i taj broj je u praksi nešto manji. U ovom prvom load testu ćemo biti zadovoljni ako uspijemo poslati između 250-500 XML poruka u sekundi.

Za svaku XML poruku koju pošaljemo u CIS ćemo spremiti odgovor koji smo primili natrag - ukoliko se pojavi greška, spremit ćemo poruku greške. Kako bi se proces slanja/primanja poruka dodatno ubrzao i optimizirao, pristigle XML poruke ćemo isto pohranjivati u Queue. Nakon što load test završi, obradit ćemo odgovore u smislu da usporedimo podatke u SQL Azure bazi podataka i odgovore u Queue - na taj ćemo način napraviti usporedbu, prema UUID-u svake poruke, kako bismo vidjeli koliko smo poruka uspješno poslali i za koje smo primili JIR.

Svrha je ovog testiranja:

  • vidjeti ponašanje CIS-a u situaciji povećanog opterećenja; ovdje je bitno napomenuti da će očekivano opterećenje, barem za ovaj prvi load test, biti u redu veličini 25 - 50% maksimalnog opterećenja za koje je CIS projektiran.
  • izmjeriti očekivano povećanje u vremenu odziva kada je sustav pod opterećenjem
  • provjeriti da li se povećava broj neuspjelih odgovora (grešaka) kada je sustav pod opterećenjem - očekivano ponašanje je da CIS ispravno vraća odgovore bez obzira na opterećenje, jedino vrijeme odziva može biti povećano, no ne i postotak grešaka
  • svi developeri uključeni u ovo testiranje imaju priliku provjeriti svoje aplikacije, odnosno rutine za kreiranje XML-a i digitalno potpisivanje - pripremit ćemo detaljan izvještaj koji će prikazivati ove podatke
 
 
U ovom trenutku još nismo stupili u kontakt sa nekime iz APIS IT-a i testiranje nećemo pokrenuti prije toga. U svakom slučaju, pokušat ćemo dati neku službenu "notu" svemu ovome. Testiranje, odnosno, slanje XML poruka u CIS, će ranije biti najavljeno - najavit ćemo točan datum i vrijeme kada će test započeti.
 
 
Pridružite nam se ovdje.
 

Tags: , ,

CIS | Testno okruženje

Tehnička specifikacija v1.1. - prvi dojmovi

by Nino3. November 2012 09:14

Od 02.11. je dostupna verzija 1.1. Tehničke dokumentacije i WSDL-a. Koji su prvi dojmovi, što je ostalo isto, što je novo? Idemo redom:

  • Prvo što smo primijetili je da je došlo do najave da će Porezna prikupljati OIB proizvođača programskog rješenja (software-a). Citiramo:
Izvršit će se promjena opisa podataka poruke zahtjeva za podatke o poslovnom prostoru. U dijelu koji se odnosi na Specifičnu namjenu potrebno je upisati jedan od podataka u nastavku:
  • OIB pravne ili fizičke osobe koja je proizvela programsko rješenje ili
  • OIB pravne ili fizičke osobe koja održava programsko rješenje ili
  • OIB pravne ili fizičke osobe prodavatelja u slučaju da se koristi rješenje od stranog proizvođača – bez lokalnog partnera

 

  • RacunZahtjev se nije mijenjao - isti je kao i u v1.0; do male promjene je došlo u RacunOdgovor, Identifikator poruke je promijenjen iz Char(36) u Varchar(0-36)
  • Prema najavi, PoslovniProstorZahtjev je proširen u smislu dodatnih podataka koji se šalju u polju "Specifična namjena" - sama schema nije mijenjana. U polje "Specifična namjena" je sada moguće upisati OIB vezan uz programsko rješenje koje obveznik koristi; PoslovniProstorOdgovor je promijenjen na sličan način kao i RacunOdgovor, Identifikator poruke je promijenjen iz Char(36) u Varchar(0-36)
  • Uz ECHO metodu je dodano pojašnjenje da uspješno pozivanje ECHO metode NIJE garancija da će proći slanje računa ili poslovnog prostora. Citiramo: "Poziv echo metode ne uključuje provjeru certifikata i elektroničkog potpisa i samim time uspješan poziv te metode ne znači i da će poziv ostalih metoda servisa (račun i poslovni prostor) biti uspješan.". Ovo znači da i dalje ostaje aktualno pitanje službenog servisa koji će svima davati informaciju o statusu CIS-a, u smislu, da li je servis dostupan, da li uredno zaprima zahtjeve i generira odgovore i sl.
  • Prema najavi, opisan je i dokumentiran novi algoritam za generiranje Zaštitnog koda izdavatelja (ZKI) - svakako je pohvalno to što su kolege prihvatili sugestije iz struke i da su odustali od algoritma koji koristi privatni ključ iz certifikata; umjesto toga, koristi se elektronički potpis sa FISKAL certifikatom, što je svakako standardna i uobičajena operacija.
 
Pored ovih novosti, primjetne su manje ispravke unutar samog teksta prije svega usmjerene na preciznost u pojašnjavanju, dodatna pojašnjenja i definicije (npr. UUID), više primjera i to ne samo za dokumente koji se šalju nego i za odgovore (očekivane i one koji sadrže greške) i slično, U svakom slučaju, naš je opći dojam da je v1.1. maleni korak naprijed u pojašnjavanju i opisivanju tehničkih detalja cijelog ovog projekta. Svakako nam se sviđa više primjera i - algoritam u .NET-u za izračun ZKI Laughing
 

U sklopu ovog projekta, mi smo krenuli sa poslom prilagodbe FiskalizacijaDEV.DLL, COM i EXE (http://fiskalizacija.codeplex.com) komponenti tako da podržimo v1.1.
 

Za sam kraj napomena - testno okruženje (CIS) će se po novim pravilima početi ponašati od 05.11. iza 17h. Uzmite ovo u obzir ako ćete raditi testiranja tijekom vikenda/ponedjeljka.

Tags:

Tehničke specifikacije

CIS status - dostupna web stranica

by Nino29. October 2012 16:40

Sukladno ranijim najavama, od danas je dostupna i web stranica za praćenje statusa testnog okruženja.

Radi se o neslužbenom statusu, a adresa stranice je ovdje: https://www.fdev.hr/Status/Status-CIS-Servisa.aspx

Pogledajte i raniji članak Centralni informacijski sustav (CIS) - status službenog testnog web servisa u kojem je opisano kako je status moguće dohvatiti putem web servisa.

Tags:

Testno okruženje

Lista tehnologija i platformi na kojima provjereno radi FiskalizacijaDEV.dll

by Renato26. October 2012 09:17

Ovo je lista tehnologija/platformi na kojima (trenutno) provjereno radi naš DLL, bilo kao .NET assembly, bilo kao COM DLL ili vanjski EXE koji se poziva prema potrebi:

  • .NET, VB.NET, C#, Visual Studio 2008/2010/2012
  • Delphi 7 i XE
  • Visual Basic 6 (VB6)
  • VB Script
  • ASP.NET
  • Clarion
  • Visual Foxpro
  • Windows XP SP2, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008
  • DOS box pod Windows-ima
  • Linux (Debian, Ubuntu) + Mono
Nadamo se uskoro potvrdi i sa drugih tehnologija/platformi, ako ste isprobali FiskalizacijaDEV rješenje negdje drugdje, slobodno ostavite komentar :)

Tags:

Testno okruženje

Kolika je propusnost zaista potrebna za fiskalizaciju?

by Nino25. October 2012 18:46

Dosta često čujemo pitanja tipa "koliku brzinu Internet veze trebam za fiskalizaciju?", kao i komentare tipa "treba imati super brzi Internet za sve ovo". Sve ovo nas je potaknulo da pokušamo malo razjasniti cijelu situaciju.

Prvo - priča o "broju računa po sekundi" naspram priče o "broju sekundi za račun" ima smisla samo za velike (najveće?). Naime, ako u nekom prostoru, na jednom Internet linku, imate 1 blagajnu, tada nema nikakve šanse da pričate o "broju računa po sekundi", jer je fizički nemoguće generirati i naplatiti toliko računa na samo jednoj blagajni u 1 sekundi. Ako dalje malo razmislimo o svemu i ukoliko, na primjer, na jednom Internet linku imate 10 blagajni, tada to znači da morate imati 10 kupaca na svakoj od tih blagajni i da svaki blagajnik/ca mora pokušati isprintati račun u točno određenoj, istoj sekundi. Ovaj je scenarij malo vjerojatan, ali, barem teoretski moguć - iako - realno - u praksi, vjerojatno opet pričate o "broju sekundi za račun", odnosno, pričate o tome koliko vam sekundi treba da isprintate neki račun. 

100 blagajni u istom prostoru, na jednom Internet linku? Ovdje, pretpostavljam, već možete početi priču o tome koliko računa u jednoj sekundi vaš sustav (Internet link) mora moći podnijeti a da zahtjev i odgovor zaista i primite unutar 1 sekunde.

 

Bez da dalje ulazimo u sve ovo, i uz napomenu da je svakako poželjno da odziv od strane CIS-a bude što manji, donosimo okvirni tabelarni prikaz propusnosti i broja računa u sekundi.

 

U ovom izračunu pažnju smo obratili na brzinu upload-a, s obzirom da je on najčešće puno kritičniji od brzine download-a. Isto tako, vrijeme potrebno za dohvat odgovora je ovdje zanemareno iz razloga velike asimetričnosti u brzini kod ADSL paketa prisutnih u Hrvatskoj. Ako ćete se spajati modemom, GPRS-om, EDGE-om ili nekim drugim sporijim načinima spajanja, svakako u obzir uzmite i vrijeme koje vam treba za primanje odgovora, a ne samo za njegovo slanje.

Uzmite u obzir da se ovdje ne radi o znanstvenom istraživanju na ovu temu - ovo je samo priručna, okvirna informacija i svako tko smatra da se njegovo rješenje nalazi u rubnim granicama ovo treba iskoristiti kao početnu točku za daljnje, detaljnije istraživanje.

Excel datoteku preuzmite ovdje:

Brzine.xlsx (10.81 kb)

Tags: , ,

CIS "radno vrijeme"

by Nino25. October 2012 08:18

Samo kratki update za sve one koji su jučer "razbijali glavu" oko ovoga: od cca  16:05 do 17:00 i zatim od cca 18:53 - 19:00 CIS nije radio, za sada je status moguće pratiti jedino preko našeg neslužbenog web servisa (http://blog.fiskalizacija-dev.com.hr/post/2012/10/22/Centralni-informacijski-sustav-(CIS)-status-sluzbenog-testnog-web-servisa.aspx), uskoro stiže i neslužbena web stranica sa više detalja, za prvu ruku, dok PU ne napravi nekaj svoje :)

Status se može, za sada, pratiti i kroz SAMPLE aplikaciju, koja je dio ovog projekta na Codeplex-u.

Inače, ovo je prvi veći "ispad" od kada redovito pratimo status uz napomenu da je i inače period od 16:00 - 17:00, radnim danom, te nedjeljom od 08:00 - 12:00 naznačen kao period u kojem se radi održavanje sustava, kako je i navedeno u Tehničkoj dokumentaciji. Imajte ovo na umu, da izbjegnete frustracije upravo na kraju radnog dana :)

Tags: ,

Tehničke specifikacije | Testno okruženje

FISKAL certifikat - pogrešan OIB

by Nino23. October 2012 14:48

Upravo nam je jedan od korisnika našeg FiskalizacijaDEV.DLL-a skrenuo pažnju da se danima patio sa slanjem XML poruka u CIS - poruke mu nikako nisu prolazile, dok na kraju nije shvatio da su mu u FINA-i izdali certifikat koji ima pogrešan OIB. Kako CIS zahtjeva da polje OIB u poruci RacunZahtjev odgovara OIB-u koji se nalazi u FISKAL certifikatu - evo problema Smile

Dakle, ako imate problema sa slanjem u CIS, još jedan od savjeta je da provjerite da li OIB u certifikatu stvarno odgovara OIB-u vaše tvrtke.

 

Prema informacijama iz Porezne, broj obveznika je oko 200.000, broj onih koji će koristiti slanje računa putem JIR-a je vjerojatno manji od te brojke; no, svejedno, radi se o ogromnom broju obveznika koji moraju izvaditi svoje FISKAL certifikate na vrijeme. Nadajmo se da će FINA biti spremna i da će se, u praksi, greške poput ove stvarno svesti na minimum - ako ne, bit će zanimljivo vidjeti kao će sve raditi u praksi Wink

Tags: , ,

DEMO certifikat

Centralni informacijski sustav (CIS) - status službenog testnog web servisa

by Nino22. October 2012 11:03

Prema ranijim najavama, od danas je svima, a u sklopu projekta Fiskalizacija-DEV, dostupan i web servis koji možete koristiti za provjeru statusa službenog testnog okruženja (CIS-a).

Radi se o NESLUŽBENOM rješenju, koje je smješteno u Windows Azure cloud, na adresi https://www.fdev.hr/StatusWS/GetStatus.asmx. Ovaj servis se poziva kao i svaki drugi .NET web servis, primjer je u CodePlex-u, a vraća statuse:

  • green - znači da je sve OK, da sve radi
  • yellow - znači da je bilo nekih problema u zadnjoj minuti, da servis malo radi, malo ne
  • red - da servis ne radi
  • unknown - da status nije poznat
 
Kako se radi o neslužbenom rješenju, tako je bitno napomenuti da smo se prilikom izrade snalazili kako smo znali - ovo posebno znači da nismo mogli koristiti ECHO metodu s obzirom da onda radi i kada ne radi slanje računa odnosno poruka za poslovni prostor. Iz tog razloga smo odlučili ovaj servis za provjeru statusa implementirati tako da u pravilnim vremenskim intervalima (za sada svakih 10 sekundi) šaljemo potpisani XML sa RacunZahtjev porukom u CIS - nakon toga mjerimo vrijeme odziva i to sve spremamo u SQL Azure bazu. U slučaju pojave greške, spremamo tekst pogreške a pod response time spremamo 0 umjesto prave vrijednosti.
Odlučili smo se za slanje poruke tipa RacunZahtjev jer smo primijetili da, pogotovo unutar testnog perioda, ponekad servis ne radi kako treba što onda dovodi do frustrirajućih poruka "Internal server error 500", pa onaj koji testira nije siguran da li je problem kod njega ili je problem u tome što testni servis u tom trenutku ne radi kako bi trebao. Ako niste sigurni da li je problem kod vas, jednostavno dohvatite status i to je to Wink
 
S obzirom na korištenu "metodologiju", sasvim je jasno da se status CIS-a, jednom kada sustav bude u produkciji, na ovaj način neće moći pratiti - jednostavno nećemo biti u mogućnosti slati poruke tipa RacunZahtjev u Poreznu; nadamo se da će netko od osoba službeno uključenih u ovaj projekt prepoznati potrebu za time i da će ili sami implementirati ovakav servis za dohvat statusa, ili da će prilagodi ECHO (odnosno neku drugu web metodu) koja će to omogućiti.
 
Nadalje, u pripremi je i web stranica na kojoj će, a bez pozivanja web servisa, biti moguće vidjeti koji je trenutni status. Ovo su neki screenshotovi, još uvijek radimo na tome.
 

 

Koja je tehnička strana priče? Na jednom od naših servera se nalazi Windows servis koji šalje XML poruku u CIS, svakih 10 sekundi. Nakon što je primljen odgovor, poziva se WCF data servis, smješten u Windows Azure cloud-u i njemu se šalju prikupljeni podaci, koje spomenuti servis pohranjuje u Azure SQL bazu. Za svaki se poziv, u ovom trenutku, pohranjuje vrijeme poziva, vrijeme odziva (response time) od CIS-a i eventualni tekst greške. U slučaju greške, kao response time spremamo 0.

Za dohvat statusa, koristi se klasičan web servis (ASMX).

Sve je ovo deploy-ano na 2 small instance, što bi trebalo biti i više nego dovoljno za ovu fazu projekta. U svakom slučaju, ukoliko se pokaže da zaista postoji realna potreba za ovako nečime, te ukoliko neće postojati službena stranica sa statusom CIS-a (produkcija) i ukoliko će biti moguće na neki način dohvaćati status CIS-a, tada ćemo i Windows servis koji prikuplja status migrirati u cloud; u ovom trenutku jednostavno nema potrebe za time.

 

Kao završna napomena - servis za dohvat statusa je u beti - javite ako primijetite neku nelogičnost ili problem u radu; isto tako, sve su primjedbe, komentari i sugestije i više nego dobrodošle Smile

Tags: ,

Testno okruženje

Month List