1673613956993

Nie lubiłem programować do momentu, kiedy trafiłem na NEO4J i sam stworzyłem MVP programu.

W przeszłości programowałem w wielu językach c++, java, sql i tym podobne. Żaden z tych języków jakoś szczególnie mi się nie spodobał. Zawsze lubiłem bazy danych i tabelki. To, co zrobiło NEO4J przeszło moje najśmielsze oczekiwania. Za pomocą języka CYPHER w tej bazie danych udało się skutecznie zbudować MVP programu do rozliczeń artystów.

Jakieś 15-20 lat temu może zacząłem programować w C i C++. Pisałem proste programy do obróbki obrazu, obróbki dźwięku. To nie było to. Kończąc studia inżynierii mechanicznej na AGH, czułem niedosyt. Chciałem jeszcze się doszkolić z budowania oprogramowania. Dlatego wybrałem się na studia podyplomowe na UJ. Tam przeszedłem przez wiele języków programowania, wiele różnych metodologii tworzenia oprogramowania. Później podczas pracy w różnych korporacjach, wykorzystałem zdobyte umiejętności, tworząc to jakieś automatyzacje przyspieszające moją pracę. Podczas pracy w motoryzacji Borgwarner, wielokrotnie miałem okazję współpracować z Siemens nad aktualizacjami w ich programie. Często inżynierowie Siemens pytali mnie o funkcje, jakie by mi się przydały podczas pracy inżyniera wibroakustyki. Działało to też w drugą stronę, bo wielokrotnie ja zgłaszałem im ciekawe funkcje do wdrożenia.

Podczas pracy w startupie TANDIG jako produkt owner, też programowałem. I to całkiem sporo. Miałem za zadanie znaleźć system-język programowania, które będzie najlepsze dla naszego problemu. Testowałem wiele różnych rozwiązań. W pewnym momencie trafiłem na obiektową bazę danych NEO4J. Zamknąłem się na 2 miesiące w domu, praktycznie nie wychodziłem. Studiowałem strukturę, uczyłem się, pisałem swój kod, aż w końcu stworzyłem działające demo MVP. Pracownicy NEO4J podczas wyceny wdrożenia mojego programu chwalili sposób rozwiązania.

Poniżej wklejam wszystkie linijki kodu w CYPHER:

\NEO4J\neo4jDatabases\database-c479acc6-003b-47d6-a6fc-b439c423e6af\installation-4.0.1\import
MATCH (com:composer), (tra:track)
////RETURN com, tra
MERGE (com:composer)-[:composed]->(tra:track )
//START
//1
LOAD CSV FROM 'file:///X:/NEO4J/neo4jDatabases/database-c479acc6-003b-47d6-a6fc-b439c423e6af/installation-4.0.1/import/01_lodz_b.csv’ AS line
create (:track { name: line[1], track_id: line[0]} )
create (:composer { name: line[2], composed_track_id: line[0] })
create (:artist { name: line[3], reproduced_track_id: line[0]} )
//2
MATCH (t:track),(a:artist)
WHERE t.track_id = a.reproduced_track_id
CREATE (a)-[r:reproduced]->(t)
RETURN type(r)
//3
MATCH (t:track),(c:composer)
WHERE t.track_id = c.composed_track_id
CREATE (c)-[r:composed]->(t)
RETURN type(r)
//4
CREATE (pn:person { name: 'Paweł’, title: 'co-founder’, b_model: 'k_res’ })
CREATE (tb:firma { name: 'sztartup’, title: 'startup’ })<-[r:works_at]-(js:person {name:”Jarosław”, b_model: 'k_res’})
CREATE (pn)-[:works_at]->(tb)
CREATE (pn)-[:owns]->(tb)
CREATE (js)-[:owns]->(tb)
CREATE (pn)-[c:cooperate_with]->(js)
CREATE (js)-[:cooperate_with]->(pn)//
CREATE (product:demo { name: 'track_up’, title: 'software’, b_model: 'k_res’, b_model: 'cost’, b_model: 'revenue’ })
CREATE (soft:resource { name: 'neo4j’, b_model: 'k_res’, b_model: 'cost’ })-[de:devlope]->(product)
CREATE (cloud:resource { name: 'amazon’, b_model: 'k_res’, b_model: 'cost’})-[st:store]->(product)
create (pn)-[:programing {b_model:”cost”, b_model:”k_activ”}]->(product)
create (pn)-[:programing {b_model:”cost”}]->(cloud)
create (pn)-[:programing {b_model:”cost”}]->(soft)
CREATE (dj:DJ :customer { name: 'Trakmajster’, b_model: 'customer_DJ’ })-[ex:export]->(djlist1a:value:list_event:demo {name:”Lista 05 07 2019″})
create (dj)-[:is_registered_in]->(product)
create (dj)-[:export]->(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
//create (dj)-[:export]->(djlist1c:value :demo :list_event {name:”Lista 22 07 2019″})
create (dj)-[:export]->(djlist1d:value :demo :list_event {name:”Lista 02_03_2020″})
create (dj)-[:export]->(djlist1e:value :demo :list_event {name:”Lista 03_03_2020″})
//CREATE (dj2:DJ { name: 'Funky’, b_model: 'customer_DJ’ })-[:export]->(djlist2a:value :demo :list_event {name:”Lista 11 07 2019″})
//create (dj2)-[:export]->(djlist2b:value :demo :list_event {name:”Lista 12 07 2019″})
//create (dj2)-[:export]->(djlist2c:value :demo :list_event {name:”Lista 23 07 2019″})
CREATE (place:place :customer { name: 'Lodz’, type:”club”, b_model: 'customer_place’ })-[re:receive]->(djlist2:value :list_event {name:”March 2020″})
CREATE (zaiks:firma :customer { name: 'zaiks’, title: 'Stowrzyszenie’, b_model:’customer_zaiks’ })
create (djlistmth:demo :list_mounth {name:”March Lodz 2020″, b_model:’k_res’ })-[:sent_to]->(zaiks)
create (place)-[:sent_to]->(product)
create (product)-[:export]->(djlistmth)
create (product)-[:sent_to]->(djlistmth)
create (product)-[:calculate]->(djlistmth)
//create (trala:track { name:”Trala la”})
//CREATE (aut:author :customer { name: 'Jan Kowalski’, b_model:’customer_author’ })-[:is_author_of]->(trala)
//CREATE (comp:composer :customer { name: 'Marek Nowak’, b_model:’customer_composer’ })-[iscom:is_composer_of]->(trala)
//CREATE (art:artist :customer { name: 'Rzepolisław’, b_model: 'customer_artist’ })-[isart:is_artist_of]->(trala)
//CREATE (trala)-[:is_registered_in]->(product)
//create (bla:track { name:”Bla la”})
//CREATE (aut)-[:is_author_of]->(bla)
//CREATE (comp)-[:is_composer_of]->(bla)
//CREATE (art)-[:is_artist_of]->(bla)
//CREATE (bla)-[:is_registered_in]->(product)
//create (ala:track { name:”ala ma cota”})
//CREATE (aut)-[:is_author_of]->(ala)
//CREATE (comp)-[:is_composer_of]->(ala)
//CREATE (art)-[:is_artist_of]->(ala)
//CREATE (ala)-[:is_registered_in]->(product)
//create (dj)-[:sent_to]->(product)
//create (dj2)-[:sent_to]->(product)
//CREATE (art)-[:is_registered_in]->(product)
//CREATE (comp)-[:is_registered_in]->(product)
//CREATE (aut)-[:is_registered_in]->(product)
//CREATE (dj2)-[:is_registered_in]->(product)
CREATE (zaiks)-[:is_registered_in]->(product)
CREATE (zaiks)-[:update]->(djlistmth)
CREATE (djlistmth)-[:sent_to]->(product)
CREATE (product)-[:calculate]->(tantiemy:demo {name:’tantiemy’, b_model: 'k_res’, b_model: 'cost’, b_model: 'revenue’})
create (djlist1b)-[:update]->(djlistmth)
create (djlist1e)-[:update]->(djlistmth)
create (djlist1d)-[:update]->(djlistmth)
//create (djlist2a)-[:update]->(djlistmth)
//create (trala)-[:update]->(djlist1b)
//create (trala)-[:update]->(djlist1e)
//create (trala)-[:update]->(djlist2a)
//create (trala)-[:update]->(djlist2c)
//create (ala)-[:update]->(djlist1b)
//create (ala)-[:update]->(djlist1e)
//create (ala)-[:update]->(djlist2a)
//create (tantiemy)-[:update]->(art)
//create (tantiemy)-[:update]->(comp)
//create (tantiemy)-[:update]->(aut)
create (dj)-[:played_at]->(place)
//create (dj2)-[:played_at]->(place)

//5
MATCH (t:track), (l:list_event)
WHERE t.list_name = l.listEventName
CREATE (t)-[r:made666]->(l)
RETURN type(r)

////////
MATCH (t:track),(l:list_event)
WHERE t.list_name = l.name
CREATE (t)-[r:made]->(l)
RETURN type(r)
// list_event_id:”Lista 01_03_2020″} to trzeba dopisać od innych list to klucz

// wyszkanie tylko tracków co mają id listy 01….
MATCH (t:track)//,(l:list_event_id)
WHERE t.list_name = 'Lista_01_03_2020′ //and wl:list_event_id = 'Lista_01_03_2020′
//CREATE (t)-[r:made]->(l)
//RETURN type(r)
return t.list_name
MATCH (t:track)
WHERE t.list_name = 'Lista_01_03_2020′
CREATE (t)-[r:made]->(djlist1b)
RETURN type(r)
MATCH (t:track),(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
WHERE t.list_name = 'Lista_01_03_2020′
CREATE (t)-[r:mfffffffade]->(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
RETURN type(r)
MATCH (l:list_event)
WHERE l.listEventName = 'Lista_01_03_2020′
RETURN l

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

ogólne
Paweł Niedermaier

Tata inżynier + VAN + dzieci + 2 tygodnie wakacji + Chorwacja = ?

Sezon wakacyjny dobiegł końca, a wraz z nim czas na refleksje. Już drugi rok z rzędu zdecydowałem się na wyjazd samemu z dziećmi do Chorwacji. Mieliśmy sporo różnych przygód związanych z autem, campingami. Takie wycieczki są niezwykle inspirujące, budujące relacje oraz świetnie podnoszą umiejętności miękkie. Na pewno nie jest to łatwe przedsięwzięcie, ale warte przeżycia.

Czytaj więcej »
biznes
Paweł Niedermaier

Inżynieria zdrowia w oparciu o wibroakustykę?

W niedalekiej przyszłości to technologie stworzone przez inżynierów będą “naprawiać” ludzi ze schorzeń, a era tabletek na wszystko będzie zredukowana do minimum. Jestem przekonany, że nadejdzie czas wielu nowych technologii, które pozwolą na domowe uzdrawianie, tanio i komfortowo, a szpitale będą potrzebne tylko do nagłych przypadków. Wierzę w jeszcze większy rozwój wibroakustyki w medycynie, diagnostyce, fizjoterapii i wprowadzaniu w stan relaksu, które zapobiegają powstawaniu dolegliwości i chorób.

Czytaj więcej »
rozwój produktu
Paweł Niedermaier

Kupiłem przyczepę samochodową za 110k$

Towing dyno – to hamownia samochodowa w formie przyczepy. Obciążenie, które wytwarza jest w stanie zatrzymać samochód w ułamku sekundy. Sam prowadziłem samochód, ogarniałem przyczepę oraz robiłem pomiary wibroakustyki.

Czytaj więcej »
drgania
Paweł Niedermaier

Napisałem artykuł „Wibroakustyka w motoryzacji”

Światowe organizacje wymuszają budowę samochodów coraz bardziej oszczędnych, ograniczając zużycie zasobów naturalnych. Zazwyczaj sprostanie takim wymogom prowadzi do optymalizacji konstrukcji samochodów. Bardzo często dotyczy ona generowania hałasu, który bywa uciążliwy podczas jazdy autem.

Hałas staje się realnym problemem klienta końcowego i kaskadowany jest przez koncerny samochodowe na cały łańcuch dostaw. W konsekwencji OEMy zmieniają swoje samochody, a dostawcy i poddostawcy też muszą iść za rozwojem narzuconym z góry.

Czytaj więcej »