sreda, 18. januar 2017

Repatha novo zdravilo za zniževanje holesterola - izkušnje

 Leta 2014 sem februarja meseca med potapljanjem utrpel miokardni infarkt. Nič kaj posebnega le pekoča bolečina v predelu prsi in bolečina v predelu čeljusti. Bolečina se je pojavljala tri dni zapored ob večjih obremenitvah na koncu pa ob hoji po stopnicah. Napad, ki bi lahko bil tragičen sem doživel na čolnu. Močna pekoča bolečina in slabost, siljenje na bruhanje. Ker sam nisem vedel kaj se točno dogaja sem poklical ženo, ki me je nato po skoraj dveh urah (Izola-Rovinj-Izola) pripeljala v izolsko bolnišnico. Po opravljenem EKG pregledu so mi sporočili, da gre za infarkt. Opravljen je bil tudi podroben pregled krvi in pa injeciran morfij, ki mi je sicer bolečino odpravil s tem pa tudi to, da sem pozabil čas, ki sem ga prebil v izolski urgenci. Namreč štiri ure prebite v bolnici se ne spominjam ravno najbolje. Z rešilnim vozilom sem bil pripeljan v UKC Ljubljana kjer so mi opravili poseg slikanja koronarnih žil in kaj kmalu so ugotovili zaporo leve koronarne arterije. S pomočjo aparature so mi aspirirali tromb in na mesto vstavili stent ali žilno opornico. Po posegu sem se odlično počutil izboljšalo se mi je spanje, ki me je zadnje tri mesece pred infarktom mučilo (slab spanec - pogosto prebujanje).

Animacija  stent-a


Poseg vstavljanja stent-a

Po podrobnejših pregledih krvi je bila zaznana nepravilna oziroma previsoka vsebnost slabega holesterola v krvi. V izvidih so mi zapisali, da gre za dedno hiperholesterolemijo (če pogledam prednike so tudi bolehali s podobnimi simptomi in boleznimi). Za zdravljenje hiperholesterolemije oziroma visokega holesterola mi je zdravnik predpisal jemanje statina in sicer Sorvasta 20mg eno tableto dnevno. Tablete sem jemal kakšen mesec dni in opravil meritev holesterola. Ostal sem presenečen, ko sem na izvidih videl skoraj da urejene vrednosti holesterola (LDL, HDL) vendar so me kaj kmalu začele boleti mišice (roke, noge, prsi). Po pogovoru s kardiologom sva statine (zdravila) zamenjala za drugo obliko zdravil vendar s stranskimi učinki ni bilo nič bolje. V roku leta dni sem tako zamenjal kar nekaj različnih zdravil, ki pa jih zaradi stranskih učinkov (bolečin v mišicah) nisem dobro prenašal. Meritve holesterola sem tako opravljal skoraj da mesečno in vrednosti niso bile preveč dobre. Ko sem meritve na pregledu pokazal kardiologu je bil seveda zaskrbljen in odločil se je, da obiščem kliniko za ožilje in žilne bolezni v Ljubljani.
Po pogovoru s primarijem sem se odločil in pričel z jemanjem biološkega zdravila Repatha.



Zdravilo Repatha se uporablja za zdravljenje:
• odraslih s primarno hiperholesterolemijo (visokimi ravnmi holesterola v krvi, predvsem
„holesterola LDL“ ali „slabega“ holesterola). Primarna pomeni, da je ta bolezen običajno posledica
genetske nepravilnosti. Primarna hiperholesterolemija vključuje heterozigotno družinsko (kadar se
genetska nepravilnost podeduje od samo enega starša) in nedružinsko bolezen (kadar se genetska
nepravilnost pojavi spontano, brez družinske anamneze). Zdravilo Repatha se uporablja tudi za
zdravljenje mešane dislipidemije (nenormalnih ravni maščob v krvi, vključno z visokimi ravnmi
holesterola LDL). Zdravilo Repatha se skupaj z dieto z malo maščobami uporablja na naslednje
načine:
− v kombinaciji s statinom (drugo vrsto zdravil, ki znižujejo raven holesterola) ali statinom z
drugimi zdravili za zniževanje ravni maščob pri bolnikih, ki se nezadostno odzovejo na največji
odmerek statina,
− samostojno ali v kombinaciji z drugimi zdravili za zniževanje ravni maščob pri bolnikih, ki ne
prenašajo ali ne smejo prejemati statinov;

Zdravilo Repatha je na voljo kot raztopina za injiciranje v napolnjeni injekcijski brizgi ali napolnjenem injekcijskem peresniku (140 mg). Injekcija se da pod kožo na trebuhu, stegnu ali nadlahti. Priporočeni odmerek pri odraslih s primarno boleznijo je 140 mg vsaka dva tedna ali 420 mg (kar je vsebina treh napolnjenih injekcijskih brizg) enkrat na mesec.


Kako zdravilo Repatha deluje?
Zdravilna učinkovina zdravila Repatha, evolokumab, je monoklonsko protitelo. To je protitelo (vrsta
beljakovine), ki je zasnovano tako, da v telesu prepozna posebno strukturo (imenovano antigen) in se
veže nanjo.
Evolokumab so razvili tako, da se veže na beljakovino, imenovano „PCSK9“. Ta beljakovina se na
površini jetrnih celic veže na receptorje za holesterol, zaradi česar se ti v celicah absorbirajo in
razgradijo. Ti receptorji uravnavajo ravni holesterola v krvi, predvsem holesterola LDL, tako da jih
odstranijo iz krvnega obtoka. Zdravilo Repatha z vezavo na encim PCSK9 in njegovim zaviranjem
preprečuje razgradnjo receptorjev v celicah, kar poveča njihovo število na celični površini, kjer se
lahko vežejo na holesterol LDL ter ga odstranijo iz krvnega obtoka. To pomaga pri zniževanju ravni
holesterola v krvi.





Zakaj je bilo zdravilo Repatha odobreno?
Odbor za zdravila za uporabo v humani medicini (CHMP) pri agenciji je zaključil, da so koristi zdravila Repatha večje od z njim povezanih tveganj, in priporočil, da se odobri za uporabo v EU. Ugotovil je, da so v vseh študijah z zdravilom Repatha pri bolnikih s primarno hiperholesterolemijo in mešano dislipidemijo, vključno z bolniki, ki so jemali največji priporočeni odmerek statinov, ali tistimi, ki jih ne prenašajo, dokazali pomembno znižanje ravni holesterola LDL, ki je znani dejavnik tveganja za srčno-žilne bolezni. Vendar še ni znano, ali bo zdravilo Repatha zmanjšalo pojav srčno-žilnih bolezni. Odbor je prav tako izpostavil, da je pri bolnikih s homozigotno družinsko boleznijo prisotna neizpolnjena klinična potreba, saj je te bolnike težko zdraviti in imajo veliko tveganje za pojav srčno-žilnih bolezni. Pri tej populaciji, vključno z nekaterimi otroci, starejšimi od 12 let, so z zdravilom Repatha dosegli dosledno znižanje ravni holesterola LDL, ki je bilo boljše od znižanih vrednosti z obstoječimi zdravili za zniževanje ravni maščob.  (vir: http://www.ema.europa.eu/docs/sl_SI/document_library/EPAR_-_Summary_for_the_public/human/003766/WC500191401.pdf)


Moje meritve:
Na spodnji sliki so vrednosti dobrega, slabega holesterola ter trigliceridov in skupnega holesterola. Meritve sem opravljal približno vsak mesec nato z zamikom (mesec ali dva). Skrajno desno so meritve opravljene, ko sem pričel jemati zdravilo Repatha. Vrednosti so se tako v pol leta normalizirale brez kakršnih koli stranskih učinkov.

29.10.2014 - jemanje zdravila sorvasta
22.12.2014 - brez zdravil
26.01.2015 - brez zdravil
27.02.2015 - jemanje zdravila ineggy
25.05.2015 - brez zdravil na LCHF prehrani (low carb high fat)
31.07.2015 - brez zdravil na LCHF prehrani (low carb high fat)
30.12.2015 - brez zdravil
17.05.2016 - brez zdravil
15.06.2016 - brez zdravil
05.07.2016 -> jemanje zdravila Repatha 1x na 14 dni


Osebne meritve holesterola 


sobota, 03. september 2016

Montaža klimatske naprave - lotanje cevi notranje enote

Pri adaptaciji kopalnice in spalnic sem želel bakrene cevi klimatske naprave spraviti pod omet. Pravtako sem v steno speljal cev, ki služi za odtok - odvajanje kondenza, in je v kopalnici spojena na sifon. Zadevo sem si zamislil tako, da sem v steno poleg bakrenih cevi vzidal še plastično dozo, katero bom kasneje zaprl s plastičnim pokrovom. 
Notranja enota ter spoj cevi v podometni dozi
Težava na katero sem "naletel" je ta, da so zazidane cevi fiksne, pravtako lahko le malo premaknem cevi, ki so na notranji enoti klimatske naprave. Za spoj omenjenih bakrenih cevi bi lahko uporabil spojko in na vsaki strani bi moral cev "zarobiti" ali "zapertlati" kakor temu rečejo mojstri. Težava pri spojih je velikokrat povezana s tesnenjem samega spoja in posledično uhajanjem plina, ki je v klimatski napravi R410A. Zaradi tega sem se odločil, da raje cevi "doštukam" in zalotam s srebrovim lotom saj je med delovanjem klimatske naprave prisoten visok tlak. Za spajanje cevi sem si sposodil jeklenko plina + jeklenko kisika in elektrode (srebrov lot) ali trdi lot. Pri spajanju cevi sem uporabil malenkost širšo cev (mufno). To sem naredil kar iz malo debelejše bakrene cevi.
Srebrov/trdi lot v paličicah
Najpogosteješe dimenzije cevi v colah in mm ter navor za spajanje bakrenih cevi  (na strani kompresorja)
 Dimenzije bakrenih cevi, ki se najpogosteje uporabljajo pri klimatskih napravah so za tanko cev 1/4 cole ter za debelo cev 3/8 cole oziroma tudi 1/2 cole.. Pri svoji klimi imam 1/4" in 3/8" cevi. Za spoj sem tako izrezal dve "mufne" iz 3/8 cevi katero sem nataknil preko 1/4 cevi ter mufno iz 1/2 "  cevi katero sem nataknil preko 3/8" bakrene cevi. 
Rezilec za bakrene cevi + koščki bakrenih cevi za spajanje (1/2")

Bakrene cevi je potrebno pred lotanjem dobro očistiti. Sam sem jih očistil s kovinsko volno. Pred samim lotanjem je potrebno material (cev) dobro segreti, da žari in na spoj prisloniti srebrov lot kateri se dobesedno preko spoja kar razlije. Pri tem moramo biti pozorni, da z ognjem ne poškodujemo instalacije oziroma, da cevi ne pregrejemo preveč saj se lahko v okolici cevi prične taliti tudi plastična izolacija. Pri sebi je dobro imeti mokro cunjo in to zaviti preko cevi, da se pri spajanju odvaja odvečna toplota. V primeru, da bakrene cevi premalo segrejemo bomo imeli težave saj se nam srebrov lot ne bo lepo razlil.  Dobro izveden spoj tako predstavlja veliko boljšo rešitev kot spajanje z vmesno spojko. Sledi še vakuumiranje celotnega sistema cevi ter izpust plina iz zunanje enote (kompresorja). Lotanje s srebrovim lotom je sicer enostavno vendar zahteva malce previdnosti. Predvsem pazite, da z ognjem ne stopite ali poškodujete drugih stvari (v mojem primeru je to podometna dozna). Sam sem med dozo in cevi prislonil pločevino. Poleg tega sem notranjo enoto podprl z izvijačem, da so bile cevi malce odmaknjene od zida in doze. Gole cevi je potrebno nato še izolirati z izolacijo zaradi kondenza in pa speljati cev kondenza v luknjo za kondenz. Dozo pa zapreti s plastičnim pokrovom (slika sledi kasneje)...

Zalotane bakrene cevi 1/4" in 3/8"

Kisik + butan propan za doseganje visokih temperatur pri lotanju
Izolirane cevi, čez dozo pride še plastičen pokrov

nedelja, 21. februar 2016

Menjava zobatega jermena na Yamahi F80/F100/F115 in ostali

Za pogon odmične gredi se pri dražjih vozilih/agregatih uporablja verižni pogon, pri cenejših pa jermenski, kjer je jermen zobat (zobati jermen).
Zobati jermen je sestavljen iz gumijaste ulite osnove, iz nateznih vlaken (prenašajo natezne obremenitve med delovanjem) ter iz tekalne plasti.
Dobra stran zobatega jermena je, da združuje elastičnost klinastega jermena in kinematično natančnost zobnika, poleg tega je njegov tek tišji kot pri verigah.
Splošna omejitev uporabe jermena za pogon odmičnih gredi je največja vrtilna hitrost motorja, ki za jermen znaša okoli 8.000 vrtljajev v minuti. Zobati jermen v načelu v celotnem času trajanja ne zahteva posebne nege, je pa treba paziti na snažnost okolja, kjer deluje ter na predpisano napetost jermena (pozorni moramo biti tudi na to, da jermena ne mažemo ali podmazujemo s kakšnimi spray-i kot so olja ali WD40).
Vzdrževanje zobatega jermena za pogon odmičnih gredi je izjemnega pomena, saj v primeru, da se poškoduje ali pretrga, zvečine to povzroči precejšne poškodbe motorja: ker ventili obmirujejo, ročična gred pa se vrti naprej, se nekateri bati (odvisno od položaja zaustavitve odmičnih gredi) zaletijo v mirujoče ventile in jih zvijejo. Tako je potrebno zamenjati poškodovane ventile, lahko se celo zgodi, da pride do močne poškodbe bata (batov), ki jih je potem treba zamenjati, pri takšnem večjem popravilu pa je treba zamenjati tudi številne druge elemente, vse do glavnih tesnil in seveda motornega olja. Preventivna menjava zobatega jermena razmeroma majhnih stroškov je zato na vsak način priporočljiva!

Menjava zobatega jermena na izvenkrmnem motorju je enostavna. Potrebno je le nabaviti ustrezno orodje med katerim so: moment ključ, nasadni ključ št. 36, snemalec (izvlakač ali abciger) s tremi vijaki M8 dolžine 6cm, kladivo, viličasti ključ 13/14mm, viličasti ključ ali raglja z nasadnim ključem št. 17 ter mizarsko dleto.

Najprej izklopimo glavno stikalo ali še bolje snamemo priključno kleme iz akumulatorja.
Iz motorja odstranimo zgornji pokrov ter na zgornjem delu agregata odvijemo dva vijaka M10 s katerim je pričvrščena zaščitna plastika katera pokriva odmični gredi ter vztrajnik.

Na moment ključ nasadimo nastavek št. 36 ter ga nasadimo na matico vztrajnika in v smeri urinega kazalca obračamo vztrajnik toliko časa, da sta puščici na odmičnih gredeh poravnani ter preverimo, da je na robu vztrajnika označba TDC (top dead center ali zgornja mrtva lega)poravnana z jezičkom, ki je tovarniško nastavljen (slika).

Označba TDC na vztrajniku motorja

Označba odmičnih gredi

Ko so omenjene označbe poravnane moramo odviti matico, ki je na vztrajniku. Da se nam vztrajnik nebi premaknil si lahko pomagamo z mizarskim dletom ali večjim izvijačem tako, da ga vstavimo skozi uho za dvig motorja ter skrajni konec porinemo med zobnik vztrajnika in s tem onemogočimo premikanje.
Fiksiranje vztrajnika s pomočjo dleta

Matico odvijemo v nasprotni smeri urinega kazalca. Ko matico odvijemo odstranimo še podložko, ki je pod njo ter na vztrajnik namestimo snemalec ali po domače "izvlakač". Za snemanje vztrajnika moramo uporabiti vijake M8 ustrezne dolžine. Sam sem nabavil vijake M8 dolčine 6 cm, ki sem jih kupil v Merkurju. Snemalec namestimo na sredino gredi, tri pomožne vijake privijemo v tri luknje, ki so na samem vztrajniku.
Snemalec s tremi M8 vijaki

S pomočjo ključa 17 pričnemo vrteti centralni vijak v smeri urinega kazalca in s tem povzročamo nateg. Ker sam vztrajnik ni bil že dlje časa odstranjen je potrebno ob zatezanju centralnega vijaka le tega večkrat udariti s kladivom (po zgornjem delu). Vibracije, ki pri tem nastanejo sprostijo vztrajnik (lahko pa ta popusti tudi brez tolčena). Sledi demontaža snemalca in dvig vztrajnika. Pri tem moramo biti pazljivi na zagozdo, katera pade v predel navitja (slika spodaj vztrajnik in zagozda).
Vztrajnik
Ko iz agregata odstranimo vztrajnik moramo odviti še dva vijaka, ki sta na prečki pravokotno na jermen, odstraniti cev vode iz termostata na bloku motorja ter popustiti napenjalec jermena in odstraniti vzmet.

Odstraniti moramo tudi navitje (stator) tako, da odvijemo štiri vijake s ključem 10.
Stator 
Stator nato snamemo preko gredi motorja (potegnemo navzgor in levo).

Star jermen snamemo iz zobnikov ter pazimo, da pri tem opravilu ne premaknemo kakorkoli gredi ali odmičnih gredi! 
Iz ovoja vzamemo nov jermen ter ga previdno namestimo preko odmičnih gredi in glavne gredi. 
Nov in star jermen (po 500 urah ni videti nobenih razlik med starim in novim)

Dvakrat preverite, da jermen lepo leži na svoji prvotni poziciji!
Sledi namestitev napenjalca in zateg jermena. Pri tem postopku moramo biti pozorni saj nam lahko zateg jermena premakne glavno gred za nekaj stopinj v smeri urinega kazalca. Bodite pozorni, da se gredi ne premaknejo. Jermen zategnemo toliko, da se ta na daljši strani (torej če gledamo iz smeri vztrajnika proti odmičnim gredem) je to desna stran (daljša stran jermena) ne upogne več kot 1 cm pod obremenitvijo 10 kg. (sam sem zategnil jermen na isto trdoto kot je bil predhodni s tem, da sem si pred snetjem napenjalca označil pozicijo vijaka).
Takoj zatem lahko na glavno gred namestite vztrajnik ter še enkrat preverite, da je oznaka TDC in jezička na bloku motorja poravnana. Pravtako morajo biti poravnane odmične gredi!
Če niso potem sledi ponovna demontaža napenjalca, postavitev gredi v TDC in še enkrat pazljiva nastavitev jermena in zateg napenjalca.


Ko smo opravili z menjavo jermena še enkrat preverimo pozicije odmičnih gredi ter vztrajnika. S pomočjo ključa motor obrnemo za nekaj zob v smeri nasproti urinega kazalca nato pa en krog v smeri urinega kazalca. Po enem obratu preverimo še enkrat, da se pozicije na odmičnih gredeh in vztrajniku ujemajo!
Sledi namestitev statorja  preko glavne gredi, prečne kovinske palice preko jermena, vzmet na napenjalcu ter namestitev cevi na termostat.
Zatič vstavite v gred ter preko pazljivo nastavite vztrajnik.
Sledi še postavitev podložke ter matice na glavni gredi in zatiskanje matice s silo 186 KN. 
Na moment ključu nastavite omenjeno silo ter zatisnite matico. Tudi pri tem postopku si lahko pomagate z dletom katerega vstavite med zobovje vztrajnika ter uho za dvig motorja.

Celoten postopek ni zapleten. Za menjavo jermena sem porabil okrog 40 minut. Ključna stvari pri vsem je kvaliteten snemalec (izvlakač). Ceneno kitajsko orodje hitro popusti pod večjimi silami kar povzroča težave. Konkretno v mojem primeru se je pod silo zvil eden od vijakov in posledično tudi daljša stran snemalca.










torek, 20. oktober 2015

Generiranje QR kode v PL/SQL-u

Vse bolj pogosto "QR kodo", je mogoče generirati tudi s pomočjo PL/SQL-a na podatkovni bazi Oracle na kateri je nameščena vsaj Java verzija 1.5 navzgor.

Za delovanje je potrebno predhodno naložiti tri jar datoteke s pomočjo orodja Loadjava.
Jar datoteke dobite na tem naslovu: knjiznice.zip.
Datoteke odzipajte v neko mapo ter jih naložite v podatkovno bazo:


V pl/sql-u je nato potrebno napisati java sored "funkcijo" katera bo sprejemala tekst, ki ga bo qrkoda vsebovala ter vračala kodo kot GIF sličico shranjeno v BLOB podatkovnem tipu.

       
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "QRCodeBean" as
import oracle.sql.BLOB;  
import oracle.sql.*;  
import oracle.jdbc.driver.*;  
import java.sql.*;  
import javax.imageio.ImageIO;  
import java.awt.image.BufferedImage;  
import java.io.ByteArrayOutputStream;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.OutputStream; 
import java.io.*;
import java.util.*;
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType; 

public class QRCodeGenerator{  

public static BLOB getQrCode(String value) throws Exception  
{  
    OracleDriver ora = new OracleDriver();  
    Connection conn = ora.defaultConnection();  
    BLOB retBlob = BLOB.createTemporary(conn, true, oracle.sql.BLOB.DURATION_SESSION);  
  
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            out = net.glxn.qrgen.QRCode.from(value).to(ImageType.GIF).stream();
              
            try {  
                java.io.OutputStream outStr = retBlob.setBinaryStream(0);  
                outStr.write(out.toByteArray());  
                outStr.flush();  
            } finally {  
                out.close();  
            }  
           return retBlob;  
}  
}
/    
       

Poleg java stored procedure je potrebno napisati še funkcijo, ki bo klicala zgornjo kodo
       
CREATE OR REPLACE function INSURANCE2.getQRcode(p_text in varchar2) return BLOB as LANGUAGE JAVA  
NAME 'QRCodeGenerator.getQrCode(java.lang.String) return oracle.sql.BLOB';
/

S klicem funkcije se izvede generiranje QR kode.


več o QR kodah dobite tudi tukaj ;)


petek, 25. september 2015

FURS - Finančni urad Republike Slovenije - podpisovanje XML datotek v Javi - davčno potrjevanje računov

"Državni zbor RS je 15. julija 2015 sprejel  Zakon o davčnem potrjevanju računov, ki se bo začel uporabljati 2. januarja 2016.
Sprejet je sistem, v katerem bodo blagajne zavezancev preko spleta povezane s centralnim informacijskim sistemom Finančne uprave RS. Finančna uprava bo potrdila in shranila podatke o računih pri gotovinskem poslovanju v postopku njihove izdaje v realnem času. Postopek davčnega potrjevanja računov skupaj z veljavnima členoma 38. in 31. a  Zakona o davčnem postopku tvori sistem, ki bo omogočal sledljivost in učinkovitost nadzora nad izdanimi računi ter omejil sivo ekonomijo.
Zavezanec bo moral ob vsaki dobavi blaga in storitev za plačilo z gotovino izdati račun prek elektronske naprave, ki izpolnjuje predpisane pogoje in omogoča izvedbo postopka potrjevanja računa, in ga izročiti kupcu blaga oziroma naročniku storitve. Račun bo moral izdati najpozneje, ko je opravljena dobava in prejeto plačilo z gotovino."

Pri podpisovanju sem uporabil Java 1.6 verzijo, saj moram podpisovanje XML dokumentov omogočiti v podatkovni bazi Oracle preko Java stored procedur.

Za podpisovanje dokumenta je potrebno pridobiti testni nato pa produkcijski certifikat.
FURS na zahtevo izda testni certifikat v obliki p12.

!!! Opozorilo !!! V kolikor boste izhodni xml pregledovali v orodju kot je xmlspy ter ga nato poslali preko orodja soapui na FURS bo po vsej verjetnosti prišlo do napake ujemanja digitalnega potrdila. Zato je najbolje, da vzamete xml, ki nastane v izhodni datoteki  ter to pošljete preko SOAP-ui-ja.



import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URL;

import java.security.*;
import java.security.cert.X509Certificate;
import java.util.*;
import javax.xml.XMLConstants;


import javax.xml.crypto.dsig.*;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.keyinfo.*;
import javax.xml.crypto.dsig.spec.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.w3c.dom.*;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;


public class SignFileExample {

    
    

    public static void main(String[] args) throws Exception {
        String referenceURI = null;
        List transforms = null;

        String xml = "Tukaj vnesite vaš xml "
        String outputFile = "c:/podpisan.xml";

        // Instantiate the document to be signed
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        dbFactory.setNamespaceAware(true);
        Document doc = (Document) dbFactory.newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes()));

        //podpišemo le določen node znotraj XML-ja
        Node node = doc.getElementsByTagName("fu:BusinessPremiseRequest").item(0);
     
        KeyStore p12 = KeyStore.getInstance("pkcs12");
        //iz diska naložimo certifikat v p12 obliki 
        p12.load(new FileInputStream("c:/cert/certifikatfursa.p12"), "GESLO".toCharArray());
        Enumeration e = p12.aliases();
        String alias = (String) e.nextElement();
        System.out.println("Alias certifikata:" + alias);
        Key privateKey = p12.getKey(alias, "GESLO".toCharArray());

        KeyStore.PrivateKeyEntry keyEntry
                = (KeyStore.PrivateKeyEntry) p12.getEntry(alias, new KeyStore.PasswordProtection("GESLO".toCharArray()));

        X509Certificate cert = (X509Certificate) keyEntry.getCertificate();

        PublicKey publicKey = cert.getPublicKey();

        final XMLSignatureFactory sigFactory = XMLSignatureFactory.getInstance("DOM");
        Referenciramo se na Id="#data", ki je v <fu:BusinessPremiseRequest>
        Reference ref = sigFactory.newReference("#data",
                sigFactory.newDigestMethod(DigestMethod.SHA256, null),
                Collections.singletonList(sigFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)),
                null,
                null);
        SignedInfo si = sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), sigFactory.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null), Collections.singletonList(ref));

        // Create a KeyValue containing the RSA PublicKey 
        KeyInfoFactory keyInfoFactory = sigFactory.getKeyInfoFactory();
        X509IssuerSerial x509IssuerSerial = keyInfoFactory.newX509IssuerSerial(cert.getSubjectX500Principal().getName(), cert.getSerialNumber());

        List x509Content = new ArrayList();

        x509Content.add(cert.getSubjectX500Principal().getName());
        x509Content.add(x509IssuerSerial);

        KeyValue keyValue = keyInfoFactory.newKeyValue(publicKey);
        X509Data xd = keyInfoFactory.newX509Data(x509Content);

        KeyInfo keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(xd));

        DOMSignContext dsc = new DOMSignContext(
                privateKey,
                node
        );

        XMLSignature signature = sigFactory.newXMLSignature(si, keyInfo);

        signature.sign(dsc);

        
        OutputStream os = new FileOutputStream(outputFile);
        Transformer trans = TransformerFactory.newInstance()
                .newTransformer();
        trans.transform(new DOMSource(doc), new StreamResult(os));
       

    }

    private static void usage() {
        System.out.println("Usage: java SignFile   [id|path|whole]");
    }
}

nedelja, 14. junij 2015

Sinhronizator upljinačev po domače


Nastavitev ali sinhronizacija uplinjačev je eden ključnih elementov za pravilno delovanje motorja. Nepravilno nastavljeni uplinjači povzročajo nepravilno delovanje motorja. Posledica so večja poraba ter tresenje motorja.
Sam sem lastnik trinajst let starega izvenkrmnega motorja Yamaha F80, kateri vsebuje štiri uplinjače. Ne spomnem se točno ali je na servisu bila kdaj opravljena sinhronizacija uplinjačev zato sem se odločil, da sinhronizator izdelam sam in zadevo testiram ter sinhroniziram. Težava je tudi ta, da večina "mojstrov" zadevo nastavi na "uho"  (po občutku) vendar to ni to..

Pri svojem testiranju sem za potrebe sinhronizatorja izdelal tri sinhronizatorje vendar sem na koncu uporabil tretjega - najcenejšega.

Prva izvedba sinhronizatorja je bila iz pvc cevk notranjega premera 5mm ter zunanjega premera 8mm. Potreboval sem dva T člena ter okrog pet metrov pvc cevi.
Za pričvrstitev PVC cevk na kolektor motorja sem v merkurju kupil varilne šobe, ki imajo navoj M6 te pa sem nato privil v kolektor (slika spodaj označena s puščicami).
Na varilne šobe sem nato nataknil konce pvc cevi.

Prostor na kolektorju kamor privijemo šobe

Prvotna izvedba sinhronizatorja je nekakšna "U" vaga (vaser vaga), ki deluje na principu podtlaka, ki ga ustvarjajo bati v motorju, ko sesajo mešanico goriva.
Različno nastavljeni uplinjači posledično povzročajo večji ali manjši dotok goriva in s tem večji ali manjši podtlak.
Neenakomerno nastavljeni uplinjač bo tako povzročil neenakomerno delovanje motorja, kar bo povzročalo tresljaje.
Kadar so uplinjači pravilno nastavljeni takrat je podtlak na vseh štirih uplinjačih približno enak in tekočina v pvc ceveh bo takrat v ravnovesju kar pomeni, da bo tudi motor enakomerno deloval.

1.) Prva izvedba sinhronizatorja izgleda takšna:
Sinhronizator s pomočjo pvc cevi v katerih je hidravlično olje

Slabost pri takšnem sinhronizatorju je ta, da v kolikor so uplinjači slabo nastavljeni nam bo hitro v  motoro po eni izmed cevk potegnilo olje. S tem instrumentom nisem uspel ustrezno nastaviti uplinjača zato sem ga kmalu opustil.

2.) Druga izvedba uplinjača je bila ideja o analogno digitalnem pretvorniku. Za ta projekt sem uporabil DCDuino Mega 2560 ,štiri A/D pretvornike podtlaka ter modul za blue tooth.
Cena takšnega projekta je okrog 60 eur kar pa je cenovno že kar velik strošek. Sestavil sem provizorično vezje ter spisal program v orodju za Arduino. Program je enostaven. Uporablja se 10 bitni A/D pretvornik, ki v neskončni zanki beleži digitalne vrednosti vsakega senzorja ter po prebranih 50 meritvah izračuna povprečje podtlaka ter podatke po RS232 ali BlueTooth pošlje v zunanjo napravo.
Grafični vmesnik sem razvil za Android telefon saj sem imel v mislih takšno napravo, da bi jo lahko držal v rokah medtem ko bi z drugo roko nastavljal posamezni uplinjač. 
Inspiracijo za to sem imel že prej v glavi vendar sem tudi na spletu opazil podoben projekt, vendar je program napisan le za PC platformo (http://www.instructables.com/id/Arduino-Throttle-Body-Syncronization-Shield/) . 

DCDuino, 4 A/D pretvorniki podtlaka + Bluetooth modul
Aplikacija za prikaz podtlaka na android telefonu
3.) Tretja izvedba je podobna prvi vendar narejena iz štirih stekleničk za olivno olje, štirih gumijastih zamaškov, štirih T členov ter nekaj metrov PVC cevi premera 5/8 mm. Strošek takšnega sinhronizatorja je minimalem (okrog 10-13 EUR).
Stekleničke cca 0.5 litra
Potek izdelave je sledeč:
Na leseno deščico postavimo štiri stekleničke ter označimo položaj le teh.

Na mesta kamor bomo postavili stekleničke iztisnemo nekaj silikona


Stekleničke pričvrstimo na lepilo 
Ko se lepilo posuši moramo v vsak gumijast zamašek narediti po dve luknje premera 8mm v katere potem vtaknemo po dve pvc cevki. Daljša pvc cevka je na vrhu preko T člena spojena z drugo stekleničko vse dokler na koncu preko T člena povežemo zadnjo stekleničko s prvo. 
Cevka, ki je na vrhu zamaška je spojena na kolektor izvenkrmnega motorja. Cevka je na samem vrhu zamaška zaradi tega, da motor nebi mogel potegniti tekočine v sam motor. 
Takšna naprava je nekakšna "vaser vaga". Različni podtlaki bodo povzročili različne podtlake v stekleničkah in posledično se bo tekočina v enih dvignila v drugih spustila.
Narejeni sinhronizator
Da bi lažje videl sem za tekočino tokrat uporabil kar ledeni čaj. Ta je lepe rdeče barve in je na dnevni svetlobi lepo viden..
Ledeni čaj je pravšnji za take reči
Šobe za varjenje z navojem M6 so privijačene v kolektor motorja
Na kolektor, kjer so privijačene šobe moramo sedaj natakniti cevke našega sinhronizatorja

Motor vžgemo in preko čoka nastavimo na cca 1000 obratov na minuto.
Po nekaj sekundah delovanja opažam, da mi četrti uplinjač preveč "vleče" kar se vidi po temu, da se je tekočina v četrti steklenički dvignila.
Slabo nastavljen uplinjač
Po skoraj uri in pol preciznega nastavljanja na vijaku za zrak vsakega uplinjača posebej sem nekako dosegel, da so vsi štirje uplinjači delovali skoraj isto.

V zimskem času se bom lotil demontaže vseh štirih karburatorjev ker se je verjetno v trinajstih letih nabral tudi bencinski kamen v šobah - dizah kar ima za posledico tudi nepravilno delovanje. Za enkrat sem dosegel ravnovesje in motor lepo deluje (mirno) kar pa brez sinhronizatorja nisem mogel doseči, saj gre tukaj kot sem napisal za "precizno" nastavljanje vsake uplinjača posebej. Motor tako deluje na 900 obratov ko je na minimumu in preskok v brzino ne povzroči, da bi motor "crknil".

Video prispevek si lahko ogledate tudi tukaj kjer za razliko sinhronizirajo uplinjač na cestnem motorju (princip je identičen)


Primer sinhronizatorjev, ki jih dobimo na internetu stanejo pa od 60-150 EUR.
Sinhronizator na manometre s pripadajočimi nastavki

Sinhronizator na vodni stolpec s pripadajočimi nastavki

ponedeljek, 20. april 2015

Sonarji z bočnim delovanjem

Po dooolgoletnem študiju, ki je poleg študija vseboval še izredno posvetitev prostega časa v namene podvodnega ribolova (2002-2010) ter kasneje ustvarjanju družine sem svojo pot na fakulteti za pomorstvo in promet smer ladijsko strojništvo zaključil. Tema diplomske naloge so seveda sonarji z bočnim delovanjem. V nadaljevanju si lahko ogledate diplomsko delo.

Sonarji_z_bocnim_delovanjem.pdf