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 *

drgania
Paweł Niedermaier

Ach ta motoryzacja…

Poddostawca-Tier2, dostawca-Tier1 i w końcu OEM. Będąc na studiach, marzyłem, żeby zostać inżynierem, który rozwija samochody. Droga do tego celu była zawiła. Od jakiegoś czasu pracuję przy samochodach i niebawem premiera tych samochodów w Polsce!

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

Nie sądziłem, że polubię pracę jako product owner i że będę rozwijać oprogramowanie dla budowlanki.

Przez kilkanaście miesięcy rozwijałem programowanie dla małych i średnich firm budowlanych. Projekt ten nauczył mnie zupełnie innego podejścia do tworzenia aplikacji webowych. Miałem okazję testować wersję demo oraz wdrażać pierwsze wersje u pierwszych klientów. Miałem też wpływ na kształtowanie się funkcji programu na podstawie feedbacku uzyskanego z rynku.

Czytaj więcej »