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 *

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 »
hałas
Paweł Niedermaier

Pomiary hałasu samochodów

Kilka dni temu pod mikrofon i czujnik drgań poszedł nowy Land Rover Discovery, najbardziej luksusowa wersja 3.0 w Dieslu. Klient miał podejrzenie, że mu świszczy turbo. A jak mu turbosprężarka gwizda to zwrócił się do mnie.

Czytaj więcej »
biznes
Paweł Niedermaier

Zimowa działalność górska, a rozwój w biznesie, część 1

Do napisania tego krótkiego artykułu skłoniły mnie doświadczenia zebrane w trakcie samotnych i zespołowych zimowych wypraw górskich. Mam wiele przemyśleń dotyczących tego, w jaki sposób pielęgnacja hobby może się przełożyć na własny rozwój, z korzyściami dla codziennej pracy na stanowisku inżyniera wibroakustyki.

Czytaj więcej »