čtvrtek 31. října 2013

V jednom zářijovém víkendu léta páně 2013 jsme s přáteli navštívili Dachstein s vizí, že zdoláme tři tamní ferraty (Anna, Johann, Shulter). Kvůli špatnému počasí jsme výpravu odložili až na neděli. Lezli jsme pouze na Shultera a zapadané jištění sněhem a ledem nás v půlce zastavilo... takže jsme slezli opět bez vyvrcholení :/ Přesto jsme si to užili :)


Příkládám ještě fotogalerii od Jendy: www.jpetrik.net.

středa 27. února 2013

LED krychle 3^3 a Arduino UNO

    Trošku jsem si hrál s Arduinem a vytvořil LED krychli 3x3x3. Inspiraci jsem čerpal z makeprojects.com. Neměl jsem po ruce 27 stejných LEDek, tak jsem vytvořil 3D šachovnicový vzor :)



    A tady je kód.



neděle 8. ledna 2012

Strašilky Parapachymorpha zomproi

        Už to bude skoro rok, co krmím několik krků na víc. Z šesti nymf druhu Parapachymorpha zomproi, které jsem zakoupil na entomologické burze, se mi povedlo vychovat něco kolem padesátky jedinců. Nejdříve to ale vypadalo dosti žalostně.
        Strašilkám jsem se snažil vnutit do jídelníčku břečťan, což mi s grácií odmítaly, a když už vypadaly na umření, běžel jsem v noci pro ostružiník do lesa. Prvních pár týdnů to vypadalo harmonicky, dokud se jedna ze slečen, měl jsem tři páry, špatně nesvlékla a nezůstaly jí jen tři nohy. Nejspíš umřela hlady. Stejným způsobem zahynul ještě jeden sameček, to byla zatím poslední tragédie tohoto druhu.

nymfa

        Z nymf se staly imága a strašilky začly klást vajíčka. Po třech měsících po prvním objevení vajíčka vzrůstala netrpělivost, jestli se něco vyklube nebo ne. Pár týdnů se nic nedělo a mě začalo vrtat hlavou, jestli dělám všechno dobře. Vajíčka byla umístěna v krabičce od zápalek vystlané ubrouskem, aby se dala dobře pozorovat, občas byla vlhčena (to nezní moc sofistikovaně, co? :)).
        Zkusil jsem vyrobit líheň z krabičky na jídlo, na dně je nasypaný písek (tak 5cm vrstva), na tom položený tenký molitan, na kterém jsou vajíčka, a přikryté dámskou punčochou :). Molitan je tam kvůli tomu, aby z vlhkého písku nechytla vajíčka plíseň. No a pak už jen kropit a kropit. Buď to byla shoda náhod a nebo to opravdu pomohlo, nymfy se začaly líhnout jedna za druhou.
        Vajíčka už od podzimu nenechávám vylíhnout. Sbírám je a dávám do mrazáku sterilizovat (doporučený postup). Stejně se mi to trochu, co se počtu týče, vymklo z rukou :). Kdyby někdo měl zájem, mohu tento druh distribuovat.

nymfa při svleku

        Jako zdroj informací doporučuji server www.strasilky.cz.

Hledáček Rigel QuickFinder

        Po několikerém boji jsem vzdal navigaci po noční obloze přes rektascenzi a deklinaci. Sice je montáž N-EQ5 vybavena těmito možnostmi, ale nepovedlo se mi to úspěšně použít. Co s tím? Jak mám nalézt hůře viditelné objekty? Rozhodl jsem se pro koupi red-dotového hledáčku.
        Byl jsem už víceméně rozhodnutý pro Telrad, který místo klasické červené tečky promítá 3 soustředné kruhy (0,5°, 2°, 4°) a tím lze orientaci ještě zlepšit (pomocí map a připraveného měřítka kruhů). V obchodě SUPRA Praha jsem byl přesvědčován, že je to na můj refraktor moc velký a těžký kolos, ať radši pořídím menší a lehčí Rigel. Tak se tedy stalo.
        Nechal jsem se přesvědčit a zakoupil Rigel QuickFinder. Promítá do výhledu pouze dva kruhy (0,5° a 2°), ale i tak je navigace oproti klasickému hledáčku pohodlnější (subjektivně hodnoceno).
        První, co mě zarazilo, byla montáž. Z nějakého neznámého důvodu jsem myslel, že Rigel umístím místo klasického hledáčku bez jakýkoliv úprav. V přiloženém příslušenství byla ve dvou kusech montáž pro uchycení buď pomocí přiložené oboustranně lepící pásky nebo pomocí šroubů, v tomto případě by se muselo ale vrtat do tubusu. Montáž pro nový hledáček jsem přilepil na tubus a nakonec se mi i líbí, že mohu využít oba hledáčky najednou.
        Co se týče samotného použití, člověk si musí najít správné místo, odkud bude skrz hledáček koukat. Umístil jsem ho mezi okulárovou šachtu a původní montáž pro hledáček, což je možná trochu nešťastné. Nejpohodlnější by bylo, kdyby si člověk stoupl za tubus a odtud viděl zmiňované promítané kruhy, nyní však musím přimáčknout hlavu někde v půlce délky dalekohledu. Zatím to tak asi nechám a kdyby to fakt nešlo, tak Rigel přesunu k druhému konci tubusu.
        Hledáček umí měnit jas kružnic, dokonce lze kružnice rozblikat, a jak jsem se sám přesvědčil, pro méně jasné objekty je to nezbytné. Inu, jsem zvědavý, kolik okem neviditelných objektů na vesmírné báni najdu :). Hledáček zatím hodnotím kladně.

čtvrtek 15. září 2011

V osobním vlastnictví: dalekohled TAL-150P

        V dubnu minulého roku jsem se rozhodl ke koupi dalekohledu, vybíral jsem u velice milého a profesionálního pána, totiž pana Matouška (www.dalekohledy.cz). Po váhání, jestli refraktor nebo reflektor, jsem šáhl po ruském dalekohledu newtonovské konstrukce TAL-150P v setu s německou paralaktickou montáží N-EQ5.
        Ačkoliv se tomuto koníčku nedostává tolik času a ačkoliv jsem se dosud nenaučil poroučet větru dešti, pár zkušeností jsem nabyl a mohu říct, že dalekohled slouží dobře a poskytuje nádherný pohled do vesmíru. Pro představu: prstence Saturnu a Cassiniho dělení, mlhovina M42 v Orionu, galaxie M31 v Andromedě, Jupiterovy pásy a další nádherné scenérie.
       Samozřejmě, že větší a světelnější dalekohled vidí víc, ale co se týče TALa v jeho kategorii, jsem spokojen.
foto duben 2010 by jendall
        Následující popis je převzat z výše uvedených stránek pana Matouška.

        Zrcadlový dalekohled konstrukce Newton s průměrem hlavního parabolického zrcadla 150mm a ohniskovou vzdáleností 750mm (f/5) na montáži NEQ5. Dodává se se dvěma okuláry f=10m (zv. 75x) a f=25mm (zv.30x), barlowovou čočkou 2x (s dodanými okuláry zvětšení 150x a 60x). 2" výtah s redukcí na 1,25". Hledáček 8x50. Montáž NEQ5 je upevněna na ocelových, výškově nastavitelných trubkových nohách. Montáž má ovládače jemných pohybů v obou osách, je možné dokoupit elektrický pohon polární osy s ovládačem, eventuelně kompletní Go To. Montáž se dodává včetně polárního hledáčku. Celková hmotnost setu ca 22 kg. Výborný a stabilní dalekohled pro všeobecné pozorování oblohy.

Severoatlantická oscilace

        Severoatlantická oscilace (NAO) je klimatický jev působící v severní části Atlantského oceánu objevený sirem Gilbertem Walkerem v roce 1920. NAO ovlivňuje změnu klimatu Evropy včetně Středomoří, severního Atlantiku, severovýchodu Severní Ameriky a části Sibiře. V této oblasti však ovlivňují klima i ostatní klimatické systémy, hlavní vztah severoatlantické oscilace je s arktickou oscilací (AO), ale nelze zanedbat i globální vliv jižní oscilace (SO) a jejích souvisejících jevů El Niño (ENSO) a La Niña.
        Jev severoatlantského proudění je založen na rozdílu tlaků mezi oblastmi Azorské tlakové výše a Islandské tlakové níže. Nejvíce se projevuje při velkých rozdílech teplot severního Atlantiku a oblasti rovníku a to bývá v zimních měsících včetně sychravého listopadu a aprílového dubna. Z měření je patrné, že tento jev prochází přibližně osmiletou periodou změn směrů větrů a atmosférických tlaků, s čímž souvisejí průměrné teploty. Nyní se NAO nachází ve studenější fázi a příští horní kulminace teplé fáze by měla nastat přibližně roku 2014.
        NAO kromě teplot ovlivňuje i rozložení srážek a jejich úhrny. Celkové aktuální klima závisí na rozdílu atmosférického tlaku mezi oblastmi tlakové výše Azor a tlakové níže Islandu. Pokud je rozdíl tlaků minimální, jedná se o zápornou fázi, pokud je rozdíl tlaků vysoký, jedná se o kladnou fázi.
        Kladná fáze způsobuje silnější západní proudění a trasy cyklón jsou unášeny severněji, zejména nad střední a severní Evropu a dále na východ. V zimním období je na tuto oblast z Atlantského oceánu přinášeno vlhké a mírné klima, avšak Středomoří zůstává bez srážek. Suchá je i oblast východu Kanady a Grónska, zatímco na východě Spojených států převládá mírná a vlhčí zima se sněhovými bouřemi.
        Záporná fáze se vyznačuje slabším západním prouděním zapříčiněným menším tlakovým gradientem. Cyklóny putují jižněji směrem do Středomoří a to přináší pro tuto oblast vlhko a teplo. Pro střed a sever Evropy se začne uplatňovat Sibiřská tlaková výše a začnou do těchto míst vanout východní větry, které přinášejí suchou a mrazivou zimu. Na východním pobřeží Spojených států jsou značné sněhové srážky a Grónsko zažívá mírnou zimu.
        Severoatlantická oscilace spolu s Golfským proudem ovlivňují podmínky ve velké části severní polokoule. Pokud se v rámci globálního oteplování zpomalí proudění Golfského proudu, může to narušit rovnováhu mezi těmito systémy a zapříčinit dominový efekt změn klimatu severní polokoule. Bohužel zatím ne zcela chápeme všechna fakta a jakákoli snaha o zlepšení situace by mohla naopak uškodit.

Zdroje:

středa 14. září 2011

Šedý filtr Baader, 1.25” ND=0.9 (T=12.5%)

        Zakoupil jsem si tento ztmavovací filtr na svého 150mm (f/5) Newtona v obchodě SUPRA Praha. Přišel jsem tam sice s tím, že si koupím dvojitý polarizák, ale nakonec jsem se nechal přemluvit :). Vyzkoušel jsem ho a určitě nelituji. Luna dva dny po úplňku mě neoslepila, tak jsem nadšený zkusil i Jupiter a byl jsem přemile překvapen, jak je krásný. Díky filtru jsem totiž viděl detailněji strukturu pásů, než když byla planeta přesvícená. Tohle sklíčko vřele doporučuji :).

pondělí 1. února 2010

Myšlenkové mapy

    Částečně navazuji na předchozí příspěvek Jak neztratit hlavu při řešení problémů s dalšími zkušenostmi a to právě s myšlenkovými mapami. Na internetu je k sehnání spousta informací, tudíž je zde nebudu popisovat, odkážu vás alespoň na wiki nebo na jeden seriál na portále abclinuxu.cz.
    Když mě na mindmapy upozornil bývalý kolega, začínal jsem zrovna dělat na novém problému, využil jsem tedy příležitosti a stáhnul freemind, což je software pro tvoření mentálních map. Můžete kreslit i na papír, ale kvůli doplňování informací a časté editaci obsahu mi připadá počítačová verze efektivnější. Freemind běží na platformě java a je lokalizovaný do češtiny.
    Teď k samotné práci. Vytvořením mapy, kam jsem zapsal veškeré požadavky, technologie, nejasnosti a znázornil postupy, jsem si udělal celkový pohled na věc. V téhle části mi přišla mapa velice výhodná. Při samotné práci jsem do mapy nahlížel jen občas, někdy aktualizoval obsah, zapsal otázky k zodpovězení nebo do ní jen tupě hleděl a doufal, že se něco stane:) Nějak nedokážu objektivně vyjádřit, jestli měla mapa v téhle fázi nějaký význam - možná nějaký podprahový.
    Závěrem bych chtěl poukázat na fakt, že to byla moje první práce s myšlenkovou mapou a ještě úplně nevím, jak na to. Celkově mi přijde tento nástroj užitečný, hlavně na začátku, kdy si spoustu věcí uvědomíte a získáte všeobecný pojem. Za mojí osobu můžu říct, že budu i nadále zkoumat potenciál tohoto nástroje :).


pátek 18. prosince 2009

Jak neztratit hlavu při řešení problémů

     Řešení velkých a komplexních úkolů není často snadná cesta. Ať se jedná o celý projekt nebo úkol realizující část, častokrát se do problematiky tak zamotáme, že nevíme kudy kam. Nemůže za to bludný kámen ani zlý rarach, který nás svede na špatnou cestu. Býváme to my, kdo se nechá příliš unést podrobnostmi a ztratí tak přehled nad tím, co vlastně dělá. Pokud tento stav zamotanosti identifikujeme včas, lze s tím pracovat, aniž bychom zbytečně ztráceli man-days a ušetřili si tak nepříjemné chvíle, kdy nám stojí projekťák za zády a ptá se, kdy že to už bude hotové.
    Úspěch tkví v tom, že si problém na začátku rozdělíme na úkoly a podúkoly. Tuto "osnovu" však budeme po celou dobu vývoje udržovat v aktuálním stavu, především se jedná o další rozdrobení podúkolů vedoucí k atomizaci celkového problému. Nyní se můžeme pustit do samotného vývoje. Budeme postupně řešit body osnovy a kdykoliv se ztratíme, koukneme o úroveň výš, případně o tolik úrovní kolik bude potřeba, abychom se zorientovali nad tím, jaký vůbec má smysl naše počínání. Mozek toto dělá do určité míry sám, ale pokud něco řešíte měsíc, je opravdu lepší si napsat osnovu a udržovat mysl v tom, co právě děláte.

pátek 11. prosince 2009

Java databáze HSQLDB

    Relační databáze HSQLDB je celá napsaná v jave. Je malá, rychlá, s podporou mnoha vláken, umožňující použití LOBů (large objects) a transakcí. Je velice jednoduchá na použití a hodí se jak na vývoj API, začátky projektu (kdy ještě nejsou přesně definovány specifikace db a nejsou připravené prostředí pro vývoj) nebo třeba pro JUnit testy.

    Asi nemá cenu probírat dopodrobna specifikace tohoto maličkého nástroje, odkážu vás na domovské stránky projektu http://hsqldb.org/, případně na http://sourceforge.net/projects/hsqldb/.

    S tímto nástrojem mám dobré zkušenosti, proto jsem se rozhodl, že zde ukážu jednoduchou ukázku použití :). Budeme pracovat s verzí 1.8.0.7 a pomůže nám orm framework Hibernate verze 3.3.1.GA a Spring container verze 2.5.6.

    Nejdříve si definujeme ve spring kontextu dataSource (zde využijeme knihovny jakarta-commons modulu dbcp pro DataSource holder). Nadefinujeme property driver, url, username a password. V případě, že bychom potřebovali in-memory databázy, nastavíme url na hodnotu jdbc:hsqldb:mem:db_test.

    <bean id="dataSource" scope="singleton" destroy-method="close"
            class="org.apache.commons.dbcp.BasicDataSource">

        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:db_test"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

    Vytvoříme si hibernateFactory.

    <bean id="hibernateFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.cache.provider_class">
                    net.sf.ehcache.hibernate.EhCacheProvider
                </prop>

                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
            </props>
        </property>
        <property name="dataSource" ref="dataSource"/>
        <property name="schemaUpdate" value="true"/>
        <property name="mappingLocations" value="classpath*:project/**/*.hbm.xml"/>
    </bean>

    Vytvoříme si domain objekty s mapováním podle specifikace hibernate a cestu uvedeme do hodnoty property mappingLocations, pokud nastavíme propertě schemaUpdate true, tak se při inicializaci této beany vytvoří v db tabulky automaticky.

    Teď máme v podstatě databázy připravenou pro použití, db pracuje s daty, které má na filesystemu.

    Pří používání jsem narazil na problém, že se neuvolňuje spojení s db. Vyřešil jsem to abstraktní třídou, z které všechny testy dědí. Je potřeba zavolat příkaz SHUTDOWN (podle specifikace HSQLDB), který connectionu uvolní.

    @ContextConfiguration(locations = {"classpath:spring/*.xml"})
    public abstract class AbstractTest
        extends AbstractTransactionalJUnit4SpringContextTests {


        @Autowired
        private BasicDataSource dataSource;

        @After
        public void afterTest() throws SQLException {
            Statement statement = dataSource.getConnection().createStatement();
            statement.execute("SHUTDOWN");
            statement.close();
        }
    }

    Pro vyzkoušení této technologie by to mělo být vše. Tak s požehnáním do toho! :)


Publikování příspěvků pomocí google docs

Dnes jsem zjistil, jak snadno a efektivně publikovat na tento blog příspěvky. Stačí začít používat aplikaci http://docs.google.com/. Napíšete dokument v požadovaném formátu a uložíte. Zvolíte volby Sdílet > Publikovat jako webovou stránku... > Odeslat příspěvek do blogu. Vyplníte náležité přihlašovací údaje, odfajfkujete a systém vás v brzku notifikuje o úspěšném publikování vašeho příspěvku. Prostě paráda, máte takovou radost jako já? :o)

MSSQL - funkce ROW_NUMBER() aneb číslování řádků


Konstrukce pro číslování vrácených řádků by vypadala následovně:

    select
    ROW_NUMBER() over (order by SLOUPEC)
    from TABULKA

Pro bližší ukázku:
  • máme tabulku LOG se sloupci DATE a DESCRIPTION

  • obsahuje data
    '11.12.2009 12:05', 'Inicializace'
    '11.12.2009 12:25', 'Chyba'
    '11.12.2009 13:00', 'Dalsi hlaska'

  • použijeme následující konstrukci
    select
        DESCRIPTION,
        ROW_NUMBER() over (order by DATE desc) as ORDER
    from LOG

  • select vrátí   
    DESCRIPTION        ORDER
    'Dalsi hlaska'     1
    'Chyba'            2
    'Inicializace'     3

čtvrtek 23. dubna 2009

PropertyPlaceholderConfigurer - jak na property v aplikačním kontextu

Ve springu v modulu beans je velice šikovná třída org.springframework.beans.factory.config.PropertyPlaceholderConfigurer. Umí z property filu podle klíče vložit hodnotu do aplikačního kontextu.

Použití v javadocu springu -> PropertyPlaceholderConfigurer.

Díky za reakci :)
Definice beany by vypadala následovně:

<bean id="localPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<value>cfg/localContext.properties</value>
</list>
</property>
</bean>

Nyní kdekoliv v kontextu se řetězec ${...} nahradí hodnotou z property souboru.

středa 22. dubna 2009

Systémové datum pomocí hibernate dialectu

Na našem projektu jsme potřebovali mechanismus, který by zjišťoval systémové datum. Pro každou db jsme implementovali třídu, kde byl natvrdo napsán JDBC select. Kupříkladu, v Oraclu "select sysdate from dual", pro MSSQL byla obdoba "select getdate()". Nakonec se ukázalo daleko příjemnějším řešením hibernate dialect.

Hibernatu musíte dát vědět, s jakou db má tu čest a to tak, že mu docpete konkrétní dialect. Hlavní předek je abstraktní třída
org.hibernate.dialect.Dialect. Obsahuje metodu getCurrentTimestampSelectString(), kterou implementují konkrétní dialecty. V této metodě se nachází náš hledaný JDBC select.

Teď k samotnému řešení.


public Calendar getSysDate() {
Calendar sysDate = Calendar.getInstance();
if (sessionFactory instanceof SessionFactoryImplementor) {
Session session = SessionFactoryUtils.getNewSession(sessionFactory);
Dialect dialect = ((SessionFactoryImplementor) sessionFactory).getDialect();
String queryString;
try {
queryString = dialect.getCurrentTimestampSelectString();
} catch (UnsupportedOperationException un) {
return sysDate;
}
Query query = session.createSQLQuery(queryString);
Object result = query.uniqueResult();
if (result != null && result instanceof Date) {
sysDate.setTime((Date) result);
}
}
return sysDate;
}

V případě, že pro daný dialect není přepsána metoda
getCurrentTimestampSelectString(), vyhodí se vyjímka UnsupportedOperationException a metoda getSysDate() vrací Calendar.getInstance(). Určitě by jste to tak neměli nechat a měli by jste si přepsat váš potřebný dialect a implementovat výše uvedenou metodu :).