SlideShare a Scribd company logo
OpenWrt front&backend Guide
sean
Doc version
● V1 2018-05-15
– Juci frontend&backend
– AngularJS,Lighttpd,orange-rpcd,Lua
JuCI

.config
 add Juci and some busybox
 Delete luci

http://mkschreder.github.io/juci/manual/juci.html
 How JUCI Works
 Core Subsystems
 Controls Library
 Plugins
 Plugin Widgets Library
Juci frontend
● JavaScript
– package.json
– juci/src/lib/js/
● AngularJs
● async
JavaScript
●
prototype 属性使您有能力向对象添加属性和方法。
– 语法
● object.prototype.name=value
– 作用
●
动态的添加类的属性和方法
●
复制原类的内容
● http://www.w3school.com.cn/jsref/jsref_prototype_a
rray.asp
AngularJS

https://www.runoob.com/angularjs/angularjs-
tutorial.html

JUCI.app.directive
创建自定义的指令
除了 AngularJS 内置的指令外,我们还可以创建自定义指令。
你可以使用 .directive 函数来添加自定义的指令。
要调用自定义指令, HTML 元素上需要添加自定义指令名。
使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割 , runoob-directive:
AngularJS 实例
<body ng-app="myApp">
<runoob-directive></runoob-directive>
<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
template : "<h1> 自定义指令 !</h1>"
};
});
</script>
</body>
Async
● https://github.com/caolan/async/
● async.series
Juci page load
●
Juci/src/js/juci.js
– scope.JUCI = scope.$juci = new JUCIMain();
– var app = scope.JUCI.app = angular.module("juci", [
● JUCI.page(name, template,redirect)
– Juci/src/pages/
● 404
● Login
– Themes/juci-theme-openwrt/src/pages/
● Overview
● Status-about
JUCIMain.prototype.$init

async.series
●
function doConnect(next){
●
scope.UBUS.$connect(options.host)
●
RPC connection established
●
scope.UBUS.$init().done(function(){
scope.UBUS = scope.$rpc = new
RevoRPC();
● Juci/src/js/rpc.js
● RevoRPC.prototype.$connect = function(host){
– var address = "ws://"+_host+"/websocket/";
– socket = this.socket = new WebSocket(address);
– socket.onmessage = function(e){
● try { msg = JSON.parse(data); } catch(e) {
● RevoRPC.prototype.$init = function(host){
– self.$list().done(function(result){
● //console.log("Adding method "+method);
● self.$register(obj, method); // can be used by $call
– "/uci":{"delete":[],"set":[],"configs":[],"add":[],"get":[]}}
RevoRPC();
● RevoRPC.prototype.$list = function(){
– return this.$request("list", [sid || "", "*"]);
– websocket > {"jsonrpc":"2.0","id":2,"method":"list","params":
["0188401d2c43171f66383fd61b56262f","*"]}
● RevoRPC.prototype.$request = function(method, params){
– var str = JSON.stringify({
● Jsonrpc: "2.0",
● id: req.id,
● method: method,
● params: params || []
– console.log("websocket > "+str);
– self.socket.send(str);
$call
● RevoRPC.prototype.$call
– return this.$request("call", [sid, object, method,
data]);
Juci/$uci
●
Juci/src/js/uci.js
●
scope.UCI = new UCI();
●
UCI.prototype.$init = function(){
– scope.UBUS.uci.configs().done(function(response){
●
Register from list result : "/uci":{"delete":[],"set":[],"configs":[],"add":
[],"get":[]}}
– Adding method configs
– registering: /uci, method: configs
●
Called by UBUS.object.method()
●
websocket > {"jsonrpc":"2.0","id":3,"method":"call","params":
["0188401d2c43171f66383fd61b56262f","/uci","configs",{}]}
JUCI Init
● console.log("JUCI Init");
● $juci.config.$init()
●
● $rpc.juci.ui.menu()
$juci.config = new JUCIConfig();
●
UCI.$sync("juci")
– websocket >
{"jsonrpc":"2.0","id":5,"method":"call","params":
["0188401d2c43171f66383fd61b56262f","/uci","get",
{"config":"juci"}]}
– self[cf].$sync({ reload: do_reload })
– console.log("Using settings from config/juci on
router");
– self.settings = UCI.juci;
menu
● console.log("juci: loading menu from server..");
● $rpc.juci.ui.menu()
– websocket >
{"jsonrpc":"2.0","id":6,"method":"call","params":
["0188401d2c43171f66383fd61b56262f","/juci/ui","me
nu",{}]}
– adding menu: overview overview
– INSERT LEAF: overview
– Registering page overview: pages/overview.html
Ubus component
● ubus library
● Ubus-scriptd
– scripts /usr/lib/ubus/
– services /usr/lib/ubus-services/
Ubus arch
● ubus functions
Ubus debug
$rpc.my.object.method().done(function(result){
console.log(JSON.stringify(result));
});
backend
● lighttpd
● mod_websocket
● orangerpcd
lighttpd
● /etc/conf.d/websocket.conf
● websocket_mod
websocket.server = (
"/websocket/" => ( "host" => "127.0.0.1",
"port" => 5303,
"proto" => "websocket"
)
)
Orange-rpcd
● Src/main.c
– main()
● const char *www_root = "/www";
● const char *listen_socket = "ws://127.0.0.1:5303";
● const char *plugin_dir = "/usr/lib/orange/api/";
● const char *pw_file = "/etc/orange/shadow";
● const char *acl_dir = "";
● int num_workers = 10;
– orange_server_t server = orange_ws_server_new(www_root);
– orange_server_listen(server, listen_socket)
– orange_new(plugin_dir, pw_file, acl_dir);
– orange_rpc_init(&rpc, server, app, 5000000UL, num_workers);
Lua
● http://manual.luaer.cn/
Lua libs
●
/usr/lib/lua
– Posix.so,uci.so,ubus.so
●
/usr/lib/orange/
– Lib/orange
– Api/juci
●
require
– local juci = require("orange/core");
– local network = require("orange/network");
debug
● Kill which started by init.d
– /etc/init.d/orange stop
● Start manual
– orangerpcd -vvvv
– https://github.com/mkschreder/juci/issues/84
Runtime process
● ps | grep rpc
● ps | grep http
issue
● rpcd crash
– /etc/init.d/rpcd restart
– UCI fail: https://github.com/mkschreder/juci/issues/78
● Lighttpd version wrong
– https://github.com/mkschreder/juci/issues/82
– Check build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/lighttpd-
23644e8f150baac0aa5199a6820234d8e7898231/
– ./scripts/feeds update -a
– ./scripts/feeds uninstall -a
– ./scripts/feeds install -fap juci
– ./scripts/feeds install -a
– rm -f -r ./feeds/packages/net/lighttpd
Issue of juci
● JUCI.interval.repeat("overview-network", 1000
● JUCI.interval.repeat("wireless-refresh", 5000
Data As Code
● Juci Plugins
● JavaScript rpc object
● Overview Widgets
● Backend Lua Plugins
Juci Plugins
● @feeds/juci/juci/Makefile
● Top
– $(eval $(call RegisterAddon,Plugins,juci-openwrt-
wireless,JUCI OpenWRT standard wireless configuration,
+libiwinfo-lua))
– $(eval $(call RegisterAddon,Themes,juci-theme-openwrt,Juci
Default Theme,,depends on y || !JUCI_THEME_SELECTED))
● define RegisterAddon
– define RegisterAddonInner
● define Package/$(2)/config
JavaScript rpc object
● @juci/src/js/rpc.js
construct rpc object containing all of the methods in javascript
● RevoRPC.prototype.$init
– self.$list().done
● self.$register(obj, method);
– create the rpc method
– obj[method] = function(data){
return self.$call(object, method, data);
● scope.UBUS.uci.configs()
– Call /uci configs
Overview Widgets
● @themes/juci-theme-openwrt/src/pages/overview.js
● ["overview", "overviewStatus",
"overviewSlider"].map(function(widget_area)
– $scope[widget_area+"Widgets"] = queue.map(function(item)
● var directive = item[2][0];
● return "<"+directive.toDash()+"/>";
● $scope.overviewWidgetRows =
chunk($scope.overviewWidgets, 3);
– function chunk(array, chunkSize)
● return [].concat.apply([],array.map(function(elem,i) {
– return i%chunkSize ? [] : [array.slice(i,i+chunkSize)];
@themes/juci-theme-
openwrt/src/pages/overview.html
<div class="row" ng-repeat="row in overviewWidgetRows">
<div class="col-sm-4 overview-box" ng-repeat="widget in row">
<div dynamic="widget"/>
</div>
</div>
<div class="row" ng-repeat="widget in overviewStatusWidgets"
style="padding-left: 10px; padding-right: 10px">
<div dynamic="widget"/>
</div>
Backend Lua Plugins
● @orange-rpcd/src/orange.c
● _orange_load_plugins
– while((ent = readdir(dir))){
● INFO("loading plugin %s of %s at base %sn", objname,
fname, base_path);
● struct orange_luaobject *obj =
orange_luaobject_new(objname);
● orange_luaobject_load(obj, fname)
– luaL_loadfile(self->lua, file)
– lua_pcall(self->lua, 0, 1, 0)

More Related Content

What's hot

Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debuggingUtkarsh Mankad
 
Software update for embedded systems - elce2014
Software update for embedded systems - elce2014Software update for embedded systems - elce2014
Software update for embedded systems - elce2014
Stefano Babic
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharingJames Hsieh
 
asyncio internals
asyncio internalsasyncio internals
asyncio internals
Saúl Ibarra Corretgé
 
systemd
systemdsystemd
systemd
nussbauml
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
Chris Simmonds
 
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
CODE BLUE
 
Linux Booting Steps
Linux Booting StepsLinux Booting Steps
Linux Booting Steps
Anando Kumar Paul
 
Linux wireless kickstarter Guide
Linux wireless kickstarter GuideLinux wireless kickstarter Guide
Linux wireless kickstarter Guide
Chaitanya Tata, PMP
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
Opersys inc.
 
Easiest way to start with Shell scripting
Easiest way to start with Shell scriptingEasiest way to start with Shell scripting
Easiest way to start with Shell scripting
Akshay Siwal
 
Finding attacks with these 6 events
Finding attacks with these 6 eventsFinding attacks with these 6 events
Finding attacks with these 6 events
Michael Gough
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
Thomas Graf
 
QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?
Pradeep Kumar
 
Génie informatique, exercices sous Linux
Génie informatique, exercices sous Linux Génie informatique, exercices sous Linux
Génie informatique, exercices sous Linux
iferis
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
lcplcp1
 
DevConf 2014 Kernel Networking Walkthrough
DevConf 2014   Kernel Networking WalkthroughDevConf 2014   Kernel Networking Walkthrough
DevConf 2014 Kernel Networking Walkthrough
Thomas Graf
 
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and LinkerdNavigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Christian Posta
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
Divye Kapoor
 

What's hot (20)

Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
 
Software update for embedded systems - elce2014
Software update for embedded systems - elce2014Software update for embedded systems - elce2014
Software update for embedded systems - elce2014
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharing
 
asyncio internals
asyncio internalsasyncio internals
asyncio internals
 
systemd
systemdsystemd
systemd
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
[CB19] Deep Exploit: Fully Automatic Penetration Test Tool Using Reinforcemen...
 
Linux Booting Steps
Linux Booting StepsLinux Booting Steps
Linux Booting Steps
 
Linux wireless kickstarter Guide
Linux wireless kickstarter GuideLinux wireless kickstarter Guide
Linux wireless kickstarter Guide
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Easiest way to start with Shell scripting
Easiest way to start with Shell scriptingEasiest way to start with Shell scripting
Easiest way to start with Shell scripting
 
Finding attacks with these 6 events
Finding attacks with these 6 eventsFinding attacks with these 6 events
Finding attacks with these 6 events
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?
 
Génie informatique, exercices sous Linux
Génie informatique, exercices sous Linux Génie informatique, exercices sous Linux
Génie informatique, exercices sous Linux
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
 
DevConf 2014 Kernel Networking Walkthrough
DevConf 2014   Kernel Networking WalkthroughDevConf 2014   Kernel Networking Walkthrough
DevConf 2014 Kernel Networking Walkthrough
 
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and LinkerdNavigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 

Similar to Openwrt frontend backend

Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010
Adam Moore
 
Rest application
Rest applicationRest application
Rest application
Illia Seleznov
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 
Backbone 4.0
Backbone 4.0Backbone 4.0
Sling IDE Tooling @ adaptTo 2013
Sling IDE Tooling @ adaptTo 2013Sling IDE Tooling @ adaptTo 2013
Sling IDE Tooling @ adaptTo 2013
Robert Munteanu
 
Let's run JavaScript Everywhere
Let's run JavaScript EverywhereLet's run JavaScript Everywhere
Let's run JavaScript Everywhere
Tom Croucher
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
Mike Pittaro
 
Running YUI 3 on Node.js - BayJax
Running YUI 3 on Node.js - BayJaxRunning YUI 3 on Node.js - BayJax
Running YUI 3 on Node.js - BayJax
Adam Moore
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
Tom Croucher
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
Ioan Eugen Stan
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS偉格 高
 
Drupalcon 2021 - Nuxt.js for drupal developers
Drupalcon 2021 - Nuxt.js for drupal developersDrupalcon 2021 - Nuxt.js for drupal developers
Drupalcon 2021 - Nuxt.js for drupal developers
nuppla
 
Deploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab FacilitiesDeploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab Facilities
José Ignacio Carretero Guarde
 
Sprint 136
Sprint 136Sprint 136
Sprint 136
ManageIQ
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOondraz
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
Mu Chun Wang
 
YUI 3
YUI 3YUI 3
YUI 3
Dav Glass
 
Google Compute Engine Starter Guide
Google Compute Engine Starter GuideGoogle Compute Engine Starter Guide
Google Compute Engine Starter Guide
Simon Su
 

Similar to Openwrt frontend backend (20)

Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010
 
Rest application
Rest applicationRest application
Rest application
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
Backbone 4.0
Backbone 4.0Backbone 4.0
Backbone 4.0
 
Yui intro
Yui introYui intro
Yui intro
 
Sling IDE Tooling @ adaptTo 2013
Sling IDE Tooling @ adaptTo 2013Sling IDE Tooling @ adaptTo 2013
Sling IDE Tooling @ adaptTo 2013
 
Let's run JavaScript Everywhere
Let's run JavaScript EverywhereLet's run JavaScript Everywhere
Let's run JavaScript Everywhere
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
 
Running YUI 3 on Node.js - BayJax
Running YUI 3 on Node.js - BayJaxRunning YUI 3 on Node.js - BayJax
Running YUI 3 on Node.js - BayJax
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
Drupalcon 2021 - Nuxt.js for drupal developers
Drupalcon 2021 - Nuxt.js for drupal developersDrupalcon 2021 - Nuxt.js for drupal developers
Drupalcon 2021 - Nuxt.js for drupal developers
 
Deploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab FacilitiesDeploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab Facilities
 
Sprint 136
Sprint 136Sprint 136
Sprint 136
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IO
 
Session11 Ucc Intro
Session11 Ucc IntroSession11 Ucc Intro
Session11 Ucc Intro
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
YUI 3
YUI 3YUI 3
YUI 3
 
Google Compute Engine Starter Guide
Google Compute Engine Starter GuideGoogle Compute Engine Starter Guide
Google Compute Engine Starter Guide
 

More from 晓东 杜

Stability issues of user space
Stability issues of user spaceStability issues of user space
Stability issues of user space
晓东 杜
 
performance optimization: UI
performance optimization: UIperformance optimization: UI
performance optimization: UI
晓东 杜
 
performance optimization: Memory
performance optimization: Memoryperformance optimization: Memory
performance optimization: Memory
晓东 杜
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
晓东 杜
 
Openwrt wireless
Openwrt wirelessOpenwrt wireless
Openwrt wireless
晓东 杜
 
DevOps at DUDU
DevOps at DUDUDevOps at DUDU
DevOps at DUDU
晓东 杜
 

More from 晓东 杜 (6)

Stability issues of user space
Stability issues of user spaceStability issues of user space
Stability issues of user space
 
performance optimization: UI
performance optimization: UIperformance optimization: UI
performance optimization: UI
 
performance optimization: Memory
performance optimization: Memoryperformance optimization: Memory
performance optimization: Memory
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
 
Openwrt wireless
Openwrt wirelessOpenwrt wireless
Openwrt wireless
 
DevOps at DUDU
DevOps at DUDUDevOps at DUDU
DevOps at DUDU
 

Recently uploaded

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
XfilesPro
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 

Recently uploaded (20)

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 

Openwrt frontend backend