wtorek, 27 października 2015

Jeździsz na rowerze? Odwiedź Enduro Trails w Bielsku-Białej!

Ostatnio miałem okazję odwiedzić polską alternatywę dla Rychlebskich Stezek czyli Enduro Trails w Bielsku-Białej. Na rychlebach jest na prawdę super, więc ciężko temu miejscu dorównać ale bielskie trailsy sobie z tym poradziły. To znakomite miejsce dla każdego kto lubi jeździć na rowerze, a wizyta tam przerosła moje oczekiwania.

Enduro Trails to świeżutki projekt zbudowany dzięki budżetowi obywatelskiemu. Na jednej z bielskiej Koziej Górze powstały 4 ścieżki rowerowe o różnym stopniu trudności. Ja wytestowałem dwie z nich: DH+ i Twistera.

Brama do raju

Twister to chyba najprzyjemniejsza trasa na jakiej miałem ostatnio okazję jeździć. Jest dokładnie taka jaka według mnie powinna być trasa w takim miejscu. To znaczy bezproblemowo przejezdna dla amatorów, ale dająca także mega przyjemność tym bardziej doświadczonym. 
Twister jest zbudowany z niezliczonej ilości zakrętów (co ważne bezpiecznych i dobrze zrobionych, a to w Polsce jest rzadkością!) i całej masy wałków które nie wyrzucają nas na mordę, nie każą nam nad nimi skakać (choć na to pozwalają), tylko po prostu pomagają nam się napędzić. Jedzie się tam zupełnie jakbyśmy płynęli po dobrze zrobionym pumptracku. Tyle, że ten "pumptrack" ma ponad 4 kilometry! "Flow" na tej trasie jest niesamowity, a ilość tych wszystkich elementów daje nam poczuć nóżki. Idealna jest również nawierzchnia. Dwa dni z rzędu padało i o ile na trasie dh było bardzo dużo błota, to na twisterze cały czas jechało się po równiutkiej ubitej i przyczepnej nawierzchni. Dla mnie nie ma nic do czego można by się przyczepić.

Trasa dh też jest całkiem w porządku, choć trochę krótka. Było dużo błota więc nie poznaliśmy jej pełnych walorów ale jechało się dobrze. Jedzie się po niej dość szybko i jest kilka hopek, czyli generalnie jest ok. Nie jest to jakieś ultra trudne dh, tylko takie przystępne dla każdego. Daliśmy radę 3 razy wjechać do góry i opcja dwa razy twister plus raz dh wydaję się być odpowiednia. Ale trzeba sobie przemyśleć, czy długi podjazd jest wart krótkiego zjazdu :)

Szkoda że forma taka kiepska i ciężko zrobić więcej podjazdów bo zabawa na Enduro Trails jest przednia. Podjazd w Bielsku co prawda nie jest tak malowniczy jak na rychlebskich stezkach, ale nie jest też tak wymagający. Na szczęście to co czeka na tych którzy dotrą do góry, wynagradza trudy podjazdu z nawiązką.

Enduro Trails niczym nie ustępują Rychlebom. Powiedziałbym nawet że Twister podoba mi się bardziej niż tamtejszy Superflow. Zjazdu co prawda jest mniej, ale mniej też podjazdu, a to akurat idealnie wpasowuje się w moje preferencje. Cztery kilometry w dół dostarcza dostatecznie dużo radości.

Polecam wycieczkę do Bielska każdemu kto lubi jeździć na rowerze. Nie trzeba mieć żadnych specjalnych umiejętności i nie wiadomo jakiego roweru. Była z nami Sylwia na rowerze z najpopularniejszej kategorii "do dwóch tysięcy" i z twisterem radziła sobie bez problemu. Gwarantuje że każdy zjedzie z uśmiechem na ustach! (Tylko obowiązkowo w kasku!)

Gratulacje dla budowniczych ścieżek, bo wykonali bardzo dobrą robotę. Mam nadzieję że takich miejsc powstanie jeszcze więcej, bo to idealny sposób na spędzenie niedzielnego popołudnia.


A tutaj czyjś filmik z youtuba, który bardzo dobrze pokazuje jak tam jest:




O Bielsku napisałem też trochę tutaj.

czwartek, 22 października 2015

Hibernate 5 + Maven + MySQL - "Hello World" app in Java

This is short example of hello world app in java with hibernate 5 and maven. It doesn't describe the details, but might be useful if you just want to see the working code. It shows example maven's pom.xml, hibernate configuration file and code for creating one table with one record.

1. Creating project with Maven

in your console run command:
mvn archetype:generate -DgroupId="com.blogspot.aknowakowski
ski" -DartifactId="Hibernate-Hello-World" -DarchetypeArtifactId="maven-archetype-quickstart"


(you can confirm suggested 1.0-SNAPSHOT version if maven asks)

Edit pom.xml and add dependencies for hibernate and for mysql connector:
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.0.2.Final</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
</dependency>

Add exec plugin which will make running app easier:
<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <mainClass>com.blogspot.aknowakowski.App</mainClass>
                    <cleanupDaemonThreads>false</cleanupDaemonThreads>
                </configuration>
            </plugin>
        </plugins>
    </build>
Take a look at line <mainClass>com.blogspot.aknowakowski.App</mainClass>. You need to specify there class with your main method.

Full example of pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.blogspot.aknowakowski</groupId>
    <artifactId>Hibernate-Hello-World</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>IOR-Testy</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <mainClass>com.blogspot.aknowakowski.App</mainClass>
                    <cleanupDaemonThreads>false</cleanupDaemonThreads>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2. Coding

Create entity class:

package com.blogspot.aknowakowski;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="task")
public class Task {
    @Id
    @Column(name="task_id")
    Long id;

    @Column(name="name")
    String name;

    public Task(Long id, String name, String description) {
        this.id = id;
        this.name = name;
        this.description = description;
    }

    public Task() {
    }

    @Column(name="description")
    String description;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

Create hibernate configuration file hibernate.cfg.xml and put it to src/main/resources directory. (Because maven copies files from main/resources to target)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate-hello</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <!-- DB schema will be updated if needed -->
        <property name="hbm2ddl.auto">update</property>
        <property name="show_sql">false</property>
        <property name="format_sql">false</property>

        <mapping class="com.blogspot.aknowakowski.Task"></mapping>


    </session-factory>
</hibernate-configuration>

Don't forget to add mapping in configuration file (<mapping class="com.blogspot.aknowakowski.Task"></mapping>)


Create class with application main method:

package com.blogspot.aknowakowski;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class App 
{
    public static void main( String[] args )
    {
        SessionFactory sessionFactory;
        sessionFactory = new Configuration()
                .configure() // configures settings from hibernate.cfg.xml
                .buildSessionFactory();

        Session session = sessionFactory.openSession();

        Transaction tx = session.beginTransaction();
        Task task = new Task();
        task.setId(new Long(1));
        task.setName("Hello world task");
        task.setDescription("Hello world task description");
        session.save(task);
        tx.commit();
        session.close();
    }
}

3. Running app

Run commands
mvn package
mvn exec:java

first command will build your app,
second command will run your main method
(you can combine them - mvn package exec:java)

If everything is ok you should see added table and record in the database:

poniedziałek, 12 października 2015

Pumptrack Nowy Sącz - musisz go odwiedzić!

480km żeby pojeździć na pumptracku, do tego haracz za A4 Katowice-Kraków? Daleko, drogo ale było warto. Pumptrack w Nowym Sączu to mistrzowska robota.

Z Rybnika jedzie się do Nowego Sącza całkiem dobrze, więc w 3 godziny dojechaliśmy na zawody Pumptrack Challenge, czyli oficjalne otwarcie obiektu z trzema pumptrackami, placem zabaw do treningu mięśni (jak to się fachowo nazywa to nie mam pojęcia) i boiskiem do siatkówki. Mnie interesował tylko pumptrack, ale kilku czołowych zawodników z kraju przybyło na zawody dirtowe w których do wygrania za pierwsze miejsce było aż 1000zł. Musieli się nieźle zdziwić jak zobaczyli "hopy".

Szybko tylko napiszę, że przygotowanie zawodów dirtowych było fatalne. Chciałbym opisać te dirty ale nie potrafię... A może spróbuję... Dirty składały się z drewnianego wybicia i kupy gówna. Wywalone dwie kupy gliny, z prowizorycznie ubitym lądowaniem, do tego wyraźnie niższe niż wybicia. Tragedia!

Piłeś? Nie buduj dirtów.


Oczywiście zawody w dircie na tych hopach się nie odbyły. Jak tylko przyjechała poduszka, to ten nieszczęsny widok został nią przysłonięty, no i chłopaki robili konkurs trików na poduchę. Choć i tu nie było kolorowo, bo z tego co widziałem lądowali raczej w okolicach początku poduszki (na przeciwstoku). Nie dało się po prostu dobrze rozpędzić. Ekipa Biketour365, która organizowała tę imprezę się nie popisała. Wstyd, że przy takich doskonałych pumptrackach, ktoś narobił taki syf. No ale dirtowcy mimo trudnych warunków pokazali co potrafią i uratowali widowisko.

Okej, przejdźmy lepiej do pozytywnych rzeczy, czyli do mega ekstra super mistrz pumptracka! Pumptracki tak naprawdę są trzy. Jeden z mniejszymi wałkami, dla dzieci. Drugi pozawijany jak słuchawki w kieszeni i trzeci "racingowy" w kształcie elipsy. Zacząłem od tego racingowego. Jeździ się tam w kółko. Jest szybko, wszystko idealnie napędza i można przeskakiwać wałki. Super sprawa. Można wywalić hamulec i jeździć cały dzień, bo bandy i kształty wałków są perfekcyjne.

Pumptracki w Nowym Sączu


Najwięcej zabawy miałem jednak na tym pozawijanym pumptracku (to na nim odbywały się zawody). No coś niesamowitego! Różne bandy, wałki o przeróżnej wielkości i wiele, wiele możliwości przejazdu. Do tego można sobie fajnie na pierwszej prostej polatać. Mistrzostwo! Moja forma nie pozwalała mi na nim zrobić porządnie dwóch kółek, przez to wiedziałem, że muszę odpoczywać, bo na zawodach będzie lipa, ale mimo to robiłem okrążenie i co chwila wracałem na start mówiąc sobie "dobra, jeszcze tylko jeden raz". Chciałbym takie coś mieć u siebie w mieście. Mocno zazdroszczę! Naprawdę bardzo dobrze się bawiłem.

Najważniejszy punkt dnia, czyli zawody "pumptack challenge" przebiegły sprawnie, bo na szczęście na miejscu była ekipa Pump Check'a, która to wszystko dobrze poprowadziła. Pojawiło się całkiem sporo zawodników lokalnych i przyjezdnych. Fajnie też, że przyjechały największe kozaki z kilku dyscyplin i wszyscy razem równo walczyli. Dawid Godziek spec od bmxów, Bartek Giemza spec od racingowych bmxów, Wojtek Czermak mistrz DH i Piotrek Krajewski mistrz freestyle'u na mtb. Normalnie każdy z nich robi coś innego i ciężko byłoby im ze sobą rywalizować, a właśnie dzięki takim imprezom mają na to szanse. Zawody na pumptracku pięknie to całe ekstremalne towarzystwo połączyło. Na jazdę każdego z nich przemiło się patrzyło i każdy z nich mógł wygrać. Ja czas wykręciłem słabiutki ale nie to było najważniejsze. Najważniejsze, że wracałem zadowolony.

Patrzcie ilu ludzi czeka na swoją kolej :)


Wielka piona dla BTProject za zrobienie takiego dobrego pumptrack'a! Boje się tylko, że teraz już żaden inny mi się nie spodoba :( Wysoko sobie postawili poprzeczkę. Czekam na kolejne takie miejscówki - takie coś powinno istnieć w każdym mieście!



Zdjęcie zamieszczone przez użytkownika Artur (@aknowakowski)

czwartek, 1 października 2015

Finder 43.41 Eagle schematic + footprint

There are some "Finder" relays in Cadsoft Eagle 7.3 by default, but there is missing Finder 43.41 symbol + footprint, so I had to do it by myself.




You can download it from my github repo. It is available in file akn-finder.lbr

It is my first ever element in Eagle so feel free to improve it if you know how.