Skip to content
56 changes: 56 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

TODO:
http://app.ganttpro.com/#!/app/home

Services
--------
- workflow/template
- metrics/stream

Plugins
-------
ANN/pipeline ANN/scenario Location+weather/sensor PHOTO/indexer
- weather: https://github.com/schachmat/wego
- imagga goclient
- NOX73/go-neural or fxsjy/gonn

Workflow
--------
- load Workflowfile by FeedID
- parse Workflowfile with templating
- load WorkflowController with Workflowfile
- add WorkflowController to WorkflowManager
- implement SystemEvents
- bind Workflow to SystemEvents



More than 70 experts will present examples, standards, methods, strategies,
and tools needed to deliver the right content, to the right people,
at the right place and time, on any device.

WHAT IS INTELLIGENT CONTENT?

Simply put, ‘intelligent content’ is content which is not limited to one purpose,
technology or output. It’s content that is structurally rich and semantically aware,
and is therefore discoverable, reusable, reconfigurable and adaptable. It’s
content that helps you and your customers get the job done. It’s content that
works for you and it’s limited only by your imagination. Learn more about intelligent
content and how it can benefit your organization.

TOPICS TO BE COVERED

Content Strategy
Content Engineering
Content Marketing
Digital Publishing
eBooks, Apps, and Mobile
Structured Authoring
Adaptive Content
Language and Culture
Personalized Content
Dynamic Publishing
Content Reuse
Translation Automation
Information Visualization
Big Data and Analytics
5 changes: 5 additions & 0 deletions ai/dsp/dsp.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dsp

/*
digital signal processor
*/
5 changes: 5 additions & 0 deletions ai/fpga/fpga.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package fpga

/*
field-programmable gate array
*/
25 changes: 25 additions & 0 deletions ai/framework.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ai

// https://github.com/josephmisiti/awesome-machine-learning#go

/*
TODO:

SHOULD PROVIDE ABSTRACTION FOR ELASTICFEED ENGINE AND SERVER-PLUGIN LOGIC.

- Support for ANN: new, train, predict, grow, optimise
- Support for GA: new, simulate

- Recognition: Photo, Songs, Video
- Transformations: FFT, ...

- Filtering
- Sorting
- Aggregation

- Compressing
- Export/Import
- Transcoding
*/

func init() {}
5 changes: 5 additions & 0 deletions ai/gpu/gpu.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package gpu

/*
graphic processing unit
*/
18 changes: 18 additions & 0 deletions common/rest/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package rest

/*
SHOULD ALLOW FOR PLUGINS TO HANDLE RESTFUL APIs

e.g

- photo API by imagga.com
- weather API by worldweatheronline.com
- space weather by data.nasa.gov
- crawling API by import.io
- prediction API by prediction.io
- http://predictthesky.org/ Predict the Sky
- Earth temperature anomalies GET https://api.nasa.gov/planetary/earth/temperature/address GET https://api.nasa.gov/planetary/earth/temperature/coords
- space Sounds https://api.nasa.gov/planetary/sounds?q=apollo&api_key=DEMO_KEY
- https://earthdata.nasa.gov
- https://earthdata.nasa.gov/user-resources/remote-sensors
*/
10 changes: 10 additions & 0 deletions common/scraper/scraper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package scraper

/*
SHOULD ALLOW FOR EASY SCRAPPING OF WEBSITEs

e.g.
- biorythm
- horoscope
- event in location/city
*/
1 change: 1 addition & 0 deletions elasticfeed/elasticfeed.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ func (this *Elasticfeed) Run() {
this.GetResourceManager().Init()
this.GetServiceManager().Init()
this.GetWorkflowManager().Init()
this.GetEventManager().Init()

feedify.SetStaticPath("/static", "public")
feedify.Run()
Expand Down
4 changes: 4 additions & 0 deletions elasticfeed/model/event.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
package model

type EventManager interface {

Init()

InstallSchedule(string, string, func() error) error
}
5 changes: 4 additions & 1 deletion event/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ type Event struct {

eventGroup string
eventName string

parent string
target string
}

func NewEvent(data interface{}) *Event {
return &Event{data, "", ""}
return &Event{data, "", "", "", ""}
}
31 changes: 23 additions & 8 deletions event/manager.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
package event

import (
"github.com/astaxie/beego/toolbox"

"github.com/feedlabs/elasticfeed/elasticfeed/model"
)

const (
EVENT_STORING = "storing"
EVENT_PROCESSING = "processing"
EVENT_STORING = "storing"
EVENT_PROCESSING = "processing"
EVENT_DISTRIBUTING = "distributing"
EVENT_LEARNING = "learning"
EVENT_LEARNING = "learning"

EVENT_STORING_CREATE_ENTRY = "create-entry"
EVENT_STORING_CREATE_VIEWER = "create-viewer"
EVENT_STORING_CREATE_ENTRY = "create-entry"
EVENT_STORING_CREATE_VIEWER = "create-viewer"
EVENT_PROCESSING_FEED_MAINTAINER = "feed-maintainer"
EVENT_PROCESSING_SENSOR_UPDATE = "sensor-update"
EVENT_DISTRIBUTING_PUSH_ENTRY = "push-entry"
EVENT_LEARNING_CREATE_METRIC = "create-metric"
EVENT_PROCESSING_SENSOR_UPDATE = "sensor-update"
EVENT_DISTRIBUTING_PUSH_ENTRY = "push-entry"
EVENT_LEARNING_CREATE_METRIC = "create-metric"
)

/**
Expand All @@ -39,6 +41,11 @@ type EventManager struct {
events map[string]interface{}
}

func (this *EventManager) Init() {
toolbox.StartTask()
// defer toolbox.StopTask()
}

func (this *EventManager) On(name string, callback func(event *Event)) {
this.events[name] = callback
}
Expand All @@ -63,6 +70,14 @@ func (this *EventManager) GetEventsMap() map[string]interface{} {
}
}

func (this *EventManager) InstallSchedule(name string, spec string, cb func() error) error {
t := toolbox.NewTask(name, spec, cb)

toolbox.AddTask(name, t)

return nil
}

func NewEventManager(engine model.Elasticfeed) model.EventManager {
e := make(map[string]interface{})
return &EventManager{engine, e}
Expand Down
19 changes: 19 additions & 0 deletions plugin/rpc_data.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package plugin

import (
"net/rpc"
"github.com/feedlabs/elasticfeed/plugin/model"
)

// An implementation of packer.Cache where the RpcData is actually executed
// over an RPC connection.
type RpcData struct {
client *rpc.Client
endpoint string
}

// CacheRpcServer wraps a packer.Cache implementation and makes it exportable
// as part of a Golang RPC server.
type DataRpcServer struct {
data model.Data
}
16 changes: 16 additions & 0 deletions resource/viewer.go
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
package resource

func (this *Viewer) GetStorage() {}

func (this *Viewer) GetProfile() {}

func (this *Viewer) GetNN() {}

func (this *Viewer) GetId() {}

func (this *Viewer) GetPluginStorageList() {}

func (this *Viewer) GetIdentity() {}

func (this *Viewer) GetScope() {}

func (this *Viewer) GetContext() {}
9 changes: 9 additions & 0 deletions resource/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ func (this *Workflow) GetRawData() map[string]interface{} {
}

func (this *Workflow) GetProfilerRawData() map[string]string {

// workaround - first GetRawData() needs to return real data
data := make(map[string]string)
data["default-profiler"] = "true"
data["mem"] = "256"
data["cpus"] = "4"
data["bandwidth"] = "1000"
return data

return this.GetRawData()["profiler"].(map[string]string)
}

Expand Down
26 changes: 26 additions & 0 deletions service/predict/predict.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package predict

import (
"github.com/feedlabs/elasticfeed/service/predict/v1/router"
)

/*
TODO:
- THIS SERVICE SHOULD ALLOW FOR WORKFLOW files
- WORKFLOW SHOULD be:
- SCENARIO -> YES (learning)
- PIPELINE -> YES (prediction)
- SENSOR/INDEXER/CRAWLER/HELPER -> NO (no pre-learning, no environment)
*/

type PredictService struct {}

func (this *PredictService) Init() {
router.InitStatusRouters()
router.InitPredictRouters()
router.InitTrainRouters()
}

func NewPredictService() *PredictService {
return &PredictService{}
}
24 changes: 24 additions & 0 deletions service/predict/v1/controller/default.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package controller

import (
"github.com/feedlabs/feedify"
)

type DefaultController struct {
feedify.Controller
}

func (this *DefaultController) Get() {
this.Data["json"] = map[string]string{"succes": "ok"}
this.Controller.ServeJson()
}

func (this *DefaultController) ServeJson(data interface{}, status int) {
this.Data["json"] = data
this.SetResponseStatusCode(status)
this.Controller.ServeJson()
}

func (this *DefaultController) SetResponseStatusCode(code int) {
this.Controller.Ctx.Output.SetStatus(code)
}
17 changes: 17 additions & 0 deletions service/predict/v1/controller/status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package controller

import (
"github.com/feedlabs/feedify"
)

type StatusController struct {
feedify.Controller
}

func (this *StatusController) Get() {
this.Data["json"] = map[string]interface{}{
"enabled": true,
}

this.Controller.ServeJson()
}
10 changes: 10 additions & 0 deletions service/predict/v1/router/predict.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package router

import (
"github.com/feedlabs/feedify"
"github.com/feedlabs/elasticfeed/service/predict/v1/controller"
)

func InitPredictRouters() {
feedify.Router("/v1/predict/predict", &controller.DefaultController{}, "get:Get")
}
10 changes: 10 additions & 0 deletions service/predict/v1/router/status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package router

import (
"github.com/feedlabs/feedify"
"github.com/feedlabs/elasticfeed/service/predict/v1/controller"
)

func InitStatusRouters() {
feedify.Router("/v1/predict/status", &controller.StatusController{}, "get:Get")
}
10 changes: 10 additions & 0 deletions service/predict/v1/router/train.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package router

import (
"github.com/feedlabs/feedify"
"github.com/feedlabs/elasticfeed/service/predict/v1/controller"
)

func InitTrainRouters() {
feedify.Router("/v1/predict/train", &controller.DefaultController{}, "get:Get")
}
12 changes: 12 additions & 0 deletions service/predict/v1/template/const.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package template

const HTTP_CODE_VALID_REQUEST = 200
const HTTP_CODE_ENTITY_CREATED = 201
const HTTP_CODE_ENTITY_NOEXIST = 404
const HTTP_CODE_ENTITY_CONFLICT = 409
const HTTP_CODE_INVALID_REQUEST = 400
const HTTP_CODE_ACCESS_UNAUTHORIZED = 401
const HTTP_CODE_ACCESS_FORBIDDEN = 403
const HTTP_CODE_NOALLOWED_REQUEST = 405
const HTTP_CODE_TOOMANY_REQUEST = 429
const HTTP_CODE_SERVER_ERROR = 500
Loading