SlideShare une entreprise Scribd logo
1  sur  32
Full Stack JavaScript
Maracuyá Jukebox
Marek Będkowski
Plan
• Demo
• Ogólne wprowadzenie
• Zarządzanie zależnościami/automatyzacja zadań
• Zarządzanie modułami natywnymi
Demo
A co to ja
winampa nie
znam???
Demo
Ogólne wprowadzenie
Ogólne wprowadzenie
JS Stack
• Nodejs
• Npm
• Grunt
• Sqlite
• Expressjs
• Socket.io
• jQuery/jQueryMobile
• PhoneGap
• Weinre
• Node-webkit
Npm – zarządzanie zależnościami
• package.json (https://github.com/bendi/maracuya-
jukebox/blob/master/maracuya/package.json)
• Zdalne repo: npmjs.org
Total Packages: 79 946
12 299 994 downloads in the last day
71 743 126 downloads in the last week
300 030 760 downloads in the last month
Grunt – automatyzacja zadań
• Gruntfile.js (https://github.com/bendi/maracuya-
jukebox/blob/master/maracuya/Gruntfile.js)
• Oficjalna strona: gruntjs.com
• Łatwo rozszerzanie poprzez pluginy (obecnie 3079)
• grunt-contrib-jshint
Nodejs a wieloplatformowość
Nodejs a wieloplatformowość
Maracuyá Jukebox a odtwarzacz mp3
Odtwarzacz mp3
• …a może napiszę go sam 
Odtwarzacz mp3
• Open-source
• multi-arch
• No external deps
• play/pause/next/prev/jump/volume
Odtwarzacz mp3
• Mpg123
• Open-source
• multi-arch
• No external deps
• Tryb interaktywny (play/pause/next/prev/jump/volume)
Nodejs a wieloplatformowość
Node-gyp kompilacja modułów natywnych
• Wielo platformowe narzędzie kompilacji
• Pochodna projektu gyp znanego z Chromium
Mpg123 a nodejs…
• node-mpg123n – natywny moduł korzystający z API mpg123
• Wieloplatformowość w takim samym zakresie jak nodejs
Mpg123 a nodejs…
• node-mpg123n – natywny moduł korzystający z API mpg123
• Wieloplatformowość w takim samym zakresie jak nodejs
• Wymaga kompilacji modułu podczas wykonywania komendy npm
install
Czy muszę to konfigurować/kompilować???
• node-gyp - konfiguracja
•On Windows:
•Python (v2.7.3 recommended, v3.x.x is not supported)
•Windows XP/Vista/7:
•Microsoft Visual Studio C++ 2010 (Express version works well)
•For 64-bit builds of node and native modules you will also need the Windows 7
64-bit SDK
•If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that
you have installed first.
•If you get errors that the 64-bit compilers are not installed you may also need
the compiler update for the Windows SDK 7.1
•Windows 7/8:
•Microsoft Visual Studio C++ 2012 for Windows Desktop (Express version works
well)
Konfigurować?
A może by tak przechowywać binarki?
Npm – przechowuje biblioteki JavaScript
A może tak przechowywać binarki?
• Node-pre-gyp
Features
• A command line tool called node-pre-gyp that can install your package's
c++ module from a binary.
• A variety of developer targeted commands for packaging, testing, and
publishing binaries.
A gdzie je przechowywać?
• Amazon S3
• Mpg123n repo (http://mpg123n.s3.amazonaws.com)
Npm install pobiera binarkę
• Npm install (wersja modulu /ABI/platform)
• node-pre-gyp http GET https://mpg123n.s3-us-west-
2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz
• node-pre-gyp http 200 https://mpg123n.s3-us-west-
2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz
• [mpg123n] Success: "C:Usersmarek.bedkowskiDocumentsmaracuya-
jukeboxmaracuyanode_modulesmpg123nbuildReleasebindings.node" is installed
Konfiguracja
• Package.json
"binary": {
"module_name": "bindings",
"module_path": "./build/Release",
"host": "https://mpg123n.s3-us-west-2.amazonaws.com",
"remote_path" : "./{configuration}/"
}
Podsumowanie
• Npm – zarzadzanie zależościami/biblioteki JS
• Node-gyp – buduje moduły natywne
• Node-pre-gyp – pomija proces budowania (pobiera binarkę)
• Grunt – automatyzacja zadań/buduje projekt
• www.maracuya-jukebox.com
• www.github.com/bendi/maracuya-jukebox
Pytania?
Dziękuję za uwagę
Marek Będkowski

Contenu connexe

Tendances

“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005Tomasz Bak
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITKamil Grabowski
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkitbartosz_w
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managersMichał Michalczuk
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015Michał Dudak
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6The Software House
 
Szybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkSzybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkThe Software House
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open sourceTomasz Kopacz
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Polska
 
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...PROIDEA
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaGameDesire Academy
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsThe Software House
 

Tendances (20)

“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań IT
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers
 
Vagrant workshop
Vagrant workshopVagrant workshop
Vagrant workshop
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015
 
Od Zera do Farmera
Od Zera do FarmeraOd Zera do Farmera
Od Zera do Farmera
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
Szybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkSzybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic Beanstalk
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
 
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) Deployments
 

En vedette

Getting started with developing Nodejs
Getting started with developing NodejsGetting started with developing Nodejs
Getting started with developing NodejsPhil Hawksworth
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Node js (runtime environment + js library) platform
Node js (runtime environment + js library) platformNode js (runtime environment + js library) platform
Node js (runtime environment + js library) platformSreenivas Kappala
 
Prezentacja do referatu na Jakość
Prezentacja do referatu na JakośćPrezentacja do referatu na Jakość
Prezentacja do referatu na Jakośćirrelevant
 
Alfresco in few points - Node Tutorial
Alfresco in few points - Node TutorialAlfresco in few points - Node Tutorial
Alfresco in few points - Node TutorialPASCAL Jean Marie
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąAngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąThe Software House
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Introduction to Nodejs
Introduction to NodejsIntroduction to Nodejs
Introduction to NodejsGabriele Lana
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prodYunong Xiao
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with ExamplesGabriele Lana
 
Nodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsNodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsGanesh Iyer
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907NodejsFoundation
 

En vedette (17)

Getting started with developing Nodejs
Getting started with developing NodejsGetting started with developing Nodejs
Getting started with developing Nodejs
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Node js (runtime environment + js library) platform
Node js (runtime environment + js library) platformNode js (runtime environment + js library) platform
Node js (runtime environment + js library) platform
 
Prezentacja do referatu na Jakość
Prezentacja do referatu na JakośćPrezentacja do referatu na Jakość
Prezentacja do referatu na Jakość
 
Alfresco in few points - Node Tutorial
Alfresco in few points - Node TutorialAlfresco in few points - Node Tutorial
Alfresco in few points - Node Tutorial
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąAngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Introduction to Nodejs
Introduction to NodejsIntroduction to Nodejs
Introduction to Nodejs
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prod
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
Nodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web ApplicationsNodejs Event Driven Concurrency for Web Applications
Nodejs Event Driven Concurrency for Web Applications
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 
reveal.js 3.0.0
reveal.js 3.0.0reveal.js 3.0.0
reveal.js 3.0.0
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 

Similaire à Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player

Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?Michał Dudak
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Tomasz Dziuda
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Sagittario
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITGOG.com dev team
 
Continuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowychContinuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowychDreamLab
 
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...GOG.com dev team
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...Future Processing
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski Elitmind
 
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Krzysztof Głuszczyk
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 

Similaire à Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player (20)

Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014
 
JavaEE + OSGi
JavaEE + OSGiJavaEE + OSGi
JavaEE + OSGi
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com IT
 
Continuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowychContinuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowych
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
 
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 

Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player

  • 1. Full Stack JavaScript Maracuyá Jukebox Marek Będkowski
  • 2. Plan • Demo • Ogólne wprowadzenie • Zarządzanie zależnościami/automatyzacja zadań • Zarządzanie modułami natywnymi
  • 4. A co to ja winampa nie znam??? Demo
  • 7. JS Stack • Nodejs • Npm • Grunt • Sqlite • Expressjs • Socket.io • jQuery/jQueryMobile • PhoneGap • Weinre • Node-webkit
  • 8. Npm – zarządzanie zależnościami • package.json (https://github.com/bendi/maracuya- jukebox/blob/master/maracuya/package.json) • Zdalne repo: npmjs.org Total Packages: 79 946 12 299 994 downloads in the last day 71 743 126 downloads in the last week 300 030 760 downloads in the last month
  • 9. Grunt – automatyzacja zadań • Gruntfile.js (https://github.com/bendi/maracuya- jukebox/blob/master/maracuya/Gruntfile.js) • Oficjalna strona: gruntjs.com • Łatwo rozszerzanie poprzez pluginy (obecnie 3079) • grunt-contrib-jshint
  • 12. Maracuyá Jukebox a odtwarzacz mp3
  • 13. Odtwarzacz mp3 • …a może napiszę go sam 
  • 14.
  • 15. Odtwarzacz mp3 • Open-source • multi-arch • No external deps • play/pause/next/prev/jump/volume
  • 16. Odtwarzacz mp3 • Mpg123 • Open-source • multi-arch • No external deps • Tryb interaktywny (play/pause/next/prev/jump/volume)
  • 18. Node-gyp kompilacja modułów natywnych • Wielo platformowe narzędzie kompilacji • Pochodna projektu gyp znanego z Chromium
  • 19. Mpg123 a nodejs… • node-mpg123n – natywny moduł korzystający z API mpg123 • Wieloplatformowość w takim samym zakresie jak nodejs
  • 20.
  • 21. Mpg123 a nodejs… • node-mpg123n – natywny moduł korzystający z API mpg123 • Wieloplatformowość w takim samym zakresie jak nodejs • Wymaga kompilacji modułu podczas wykonywania komendy npm install
  • 22. Czy muszę to konfigurować/kompilować??? • node-gyp - konfiguracja •On Windows: •Python (v2.7.3 recommended, v3.x.x is not supported) •Windows XP/Vista/7: •Microsoft Visual Studio C++ 2010 (Express version works well) •For 64-bit builds of node and native modules you will also need the Windows 7 64-bit SDK •If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that you have installed first. •If you get errors that the 64-bit compilers are not installed you may also need the compiler update for the Windows SDK 7.1 •Windows 7/8: •Microsoft Visual Studio C++ 2012 for Windows Desktop (Express version works well)
  • 24. A może by tak przechowywać binarki? Npm – przechowuje biblioteki JavaScript
  • 25. A może tak przechowywać binarki? • Node-pre-gyp Features • A command line tool called node-pre-gyp that can install your package's c++ module from a binary. • A variety of developer targeted commands for packaging, testing, and publishing binaries.
  • 26. A gdzie je przechowywać? • Amazon S3 • Mpg123n repo (http://mpg123n.s3.amazonaws.com)
  • 27. Npm install pobiera binarkę • Npm install (wersja modulu /ABI/platform) • node-pre-gyp http GET https://mpg123n.s3-us-west- 2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz • node-pre-gyp http 200 https://mpg123n.s3-us-west- 2.amazonaws.com/Release/bindings-v0.0.21-node-v11-win32-ia32.tar.gz • [mpg123n] Success: "C:Usersmarek.bedkowskiDocumentsmaracuya- jukeboxmaracuyanode_modulesmpg123nbuildReleasebindings.node" is installed
  • 28. Konfiguracja • Package.json "binary": { "module_name": "bindings", "module_path": "./build/Release", "host": "https://mpg123n.s3-us-west-2.amazonaws.com", "remote_path" : "./{configuration}/" }
  • 29. Podsumowanie • Npm – zarzadzanie zależościami/biblioteki JS • Node-gyp – buduje moduły natywne • Node-pre-gyp – pomija proces budowania (pobiera binarkę) • Grunt – automatyzacja zadań/buduje projekt

Notes de l'éditeur

  1. npm install lodash
  2. npm install lodash
  3. npm install lodash