├── .gitignore ├── LICENSE ├── README.md ├── key ├── easy.calvinneo.com.crt ├── easy.calvinneo.com.csr ├── easy.calvinneo.com.key ├── easy.calvinneo.com.key.pub ├── easy.calvinneo.com.key.unsecure └── new.txt ├── master ├── conf │ └── app.conf ├── controllers │ ├── data_set.go │ ├── job.go │ ├── job_slice.go │ ├── node.go │ ├── result_set.go │ └── utility.go ├── docs │ ├── doc.go │ └── docs.go ├── inspinia │ ├── css │ │ ├── animate.css │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── patterns │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── congruent_pentagon.png │ │ │ ├── header-profile-skin-1.png │ │ │ ├── header-profile-skin-2.png │ │ │ ├── header-profile-skin-3.png │ │ │ ├── header-profile.png │ │ │ ├── otis_redding.png │ │ │ ├── shattered.png │ │ │ └── triangular.png │ │ ├── plugins │ │ │ ├── awesome-bootstrap-checkbox │ │ │ │ └── awesome-bootstrap-checkbox.css │ │ │ ├── blueimp │ │ │ │ ├── css │ │ │ │ │ ├── blueimp-gallery-indicator.css │ │ │ │ │ ├── blueimp-gallery-video.css │ │ │ │ │ ├── blueimp-gallery.css │ │ │ │ │ ├── blueimp-gallery.min.css │ │ │ │ │ └── demo.css │ │ │ │ └── img │ │ │ │ │ ├── error.png │ │ │ │ │ ├── error.svg │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── play-pause.png │ │ │ │ │ ├── play-pause.svg │ │ │ │ │ ├── video-play.png │ │ │ │ │ └── video-play.svg │ │ │ ├── bootstrap-rtl │ │ │ │ ├── bootstrap-rtl.css │ │ │ │ ├── bootstrap-rtl.css.map │ │ │ │ └── bootstrap-rtl.min.css │ │ │ ├── chartist │ │ │ │ └── chartist.min.css │ │ │ ├── chosen │ │ │ │ ├── chosen-sprite.png │ │ │ │ ├── chosen-sprite@2x.png │ │ │ │ └── chosen.css │ │ │ ├── clockpicker │ │ │ │ └── clockpicker.css │ │ │ ├── codemirror │ │ │ │ ├── ambiance.css │ │ │ │ └── codemirror.css │ │ │ ├── colorpicker │ │ │ │ └── bootstrap-colorpicker.min.css │ │ │ ├── cropper │ │ │ │ └── cropper.min.css │ │ │ ├── dataTables │ │ │ │ ├── dataTables.bootstrap.css │ │ │ │ ├── dataTables.responsive.css │ │ │ │ └── dataTables.tableTools.min.css │ │ │ ├── datapicker │ │ │ │ └── datepicker3.css │ │ │ ├── daterangepicker │ │ │ │ └── daterangepicker-bs3.css │ │ │ ├── dropzone │ │ │ │ ├── basic.css │ │ │ │ └── dropzone.css │ │ │ ├── footable │ │ │ │ ├── fonts │ │ │ │ │ ├── footable.eot │ │ │ │ │ ├── footable.svg │ │ │ │ │ ├── footable.ttf │ │ │ │ │ └── footable.woff │ │ │ │ └── footable.core.css │ │ │ ├── fullcalendar │ │ │ │ ├── fullcalendar.css │ │ │ │ └── fullcalendar.print.css │ │ │ ├── iCheck │ │ │ │ ├── custom.css │ │ │ │ ├── green.png │ │ │ │ └── green@2x.png │ │ │ ├── images │ │ │ │ ├── bootstrap-colorpicker │ │ │ │ │ ├── alpha-horizontal.png │ │ │ │ │ ├── alpha.png │ │ │ │ │ ├── hue-horizontal.png │ │ │ │ │ ├── hue.png │ │ │ │ │ └── saturation.png │ │ │ │ ├── sort.png │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_desc.png │ │ │ │ ├── sprite-skin-flat.png │ │ │ │ ├── sprite-skin-flat2.png │ │ │ │ ├── sprite-skin-nice.png │ │ │ │ ├── sprite-skin-simple.png │ │ │ │ ├── spritemap.png │ │ │ │ └── spritemap@2x.png │ │ │ ├── ionRangeSlider │ │ │ │ ├── ion.rangeSlider.css │ │ │ │ ├── ion.rangeSlider.skinFlat.css │ │ │ │ ├── ion.rangeSlider.skinNice.css │ │ │ │ └── ion.rangeSlider.skinSimple.css │ │ │ ├── jQueryUI │ │ │ │ ├── images │ │ │ │ │ ├── animated-overlay.gif │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ │ └── jquery-ui-1.10.4.custom.min.css │ │ │ ├── jasny │ │ │ │ └── jasny-bootstrap.min.css │ │ │ ├── jqGrid │ │ │ │ └── ui.jqgrid.css │ │ │ ├── jsTree │ │ │ │ ├── 32px.png │ │ │ │ ├── 39px.png │ │ │ │ ├── 40px.png │ │ │ │ ├── style.css │ │ │ │ ├── style.min.css │ │ │ │ └── throbber.gif │ │ │ ├── morris │ │ │ │ └── morris-0.4.3.min.css │ │ │ ├── nouslider │ │ │ │ └── jquery.nouislider.css │ │ │ ├── select2 │ │ │ │ └── select2.min.css │ │ │ ├── slick │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── fonts │ │ │ │ │ ├── slick.eot │ │ │ │ │ ├── slick.svg │ │ │ │ │ ├── slick.ttf │ │ │ │ │ └── slick.woff │ │ │ │ ├── slick-theme.css │ │ │ │ └── slick.css │ │ │ ├── social-buttons │ │ │ │ └── social-buttons.css │ │ │ ├── steps │ │ │ │ └── jquery.steps.css │ │ │ ├── summernote │ │ │ │ ├── summernote-bs3.css │ │ │ │ └── summernote.css │ │ │ ├── sweetalert │ │ │ │ └── sweetalert.css │ │ │ ├── switchery │ │ │ │ └── switchery.css │ │ │ └── toastr │ │ │ │ └── toastr.min.css │ │ ├── style.css │ │ └── style.min.css │ ├── font-awesome │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── less │ │ │ ├── animated.less │ │ │ ├── bordered-pulled.less │ │ │ ├── core.less │ │ │ ├── fixed-width.less │ │ │ ├── font-awesome.less │ │ │ ├── icons.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── mixins.less │ │ │ ├── path.less │ │ │ ├── rotated-flipped.less │ │ │ ├── stacked.less │ │ │ └── variables.less │ │ └── scss │ │ │ ├── _animated.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _path.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ └── font-awesome.scss │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── index.html │ ├── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ ├── demo │ │ │ └── flot-demo.js │ │ ├── inspinia.js │ │ ├── jquery-2.1.1.js │ │ ├── jquery-ui-1.10.4.min.js │ │ ├── jquery-ui.custom.min.js │ │ └── plugins │ │ │ ├── blueimp │ │ │ └── jquery.blueimp-gallery.min.js │ │ │ ├── chartJs │ │ │ └── Chart.min.js │ │ │ ├── chartist │ │ │ ├── chartist.min.js │ │ │ └── chartist.min.js.map │ │ │ ├── chosen │ │ │ └── chosen.jquery.js │ │ │ ├── clockpicker │ │ │ └── clockpicker.js │ │ │ ├── codemirror │ │ │ ├── codemirror.js │ │ │ └── mode │ │ │ │ ├── apl │ │ │ │ ├── apl.js │ │ │ │ └── index.html │ │ │ │ ├── asterisk │ │ │ │ ├── asterisk.js │ │ │ │ └── index.html │ │ │ │ ├── clike │ │ │ │ ├── clike.js │ │ │ │ ├── index.html │ │ │ │ └── scala.html │ │ │ │ ├── clojure │ │ │ │ ├── clojure.js │ │ │ │ └── index.html │ │ │ │ ├── cobol │ │ │ │ ├── cobol.js │ │ │ │ └── index.html │ │ │ │ ├── coffeescript │ │ │ │ ├── coffeescript.js │ │ │ │ └── index.html │ │ │ │ ├── commonlisp │ │ │ │ ├── commonlisp.js │ │ │ │ └── index.html │ │ │ │ ├── css │ │ │ │ ├── css.js │ │ │ │ ├── index.html │ │ │ │ ├── less.html │ │ │ │ ├── less_test.js │ │ │ │ ├── scss.html │ │ │ │ ├── scss_test.js │ │ │ │ └── test.js │ │ │ │ ├── cypher │ │ │ │ ├── cypher.js │ │ │ │ └── index.html │ │ │ │ ├── d │ │ │ │ ├── d.js │ │ │ │ └── index.html │ │ │ │ ├── diff │ │ │ │ ├── diff.js │ │ │ │ └── index.html │ │ │ │ ├── django │ │ │ │ ├── django.js │ │ │ │ └── index.html │ │ │ │ ├── dtd │ │ │ │ ├── dtd.js │ │ │ │ └── index.html │ │ │ │ ├── dylan │ │ │ │ ├── dylan.js │ │ │ │ └── index.html │ │ │ │ ├── ecl │ │ │ │ ├── ecl.js │ │ │ │ └── index.html │ │ │ │ ├── eiffel │ │ │ │ ├── eiffel.js │ │ │ │ └── index.html │ │ │ │ ├── erlang │ │ │ │ ├── erlang.js │ │ │ │ └── index.html │ │ │ │ ├── fortran │ │ │ │ ├── fortran.js │ │ │ │ └── index.html │ │ │ │ ├── gas │ │ │ │ ├── gas.js │ │ │ │ └── index.html │ │ │ │ ├── gfm │ │ │ │ ├── gfm.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ │ ├── gherkin │ │ │ │ ├── gherkin.js │ │ │ │ └── index.html │ │ │ │ ├── go │ │ │ │ ├── go.js │ │ │ │ └── index.html │ │ │ │ ├── groovy │ │ │ │ ├── groovy.js │ │ │ │ └── index.html │ │ │ │ ├── haml │ │ │ │ ├── haml.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ │ ├── haskell │ │ │ │ ├── haskell.js │ │ │ │ └── index.html │ │ │ │ ├── haxe │ │ │ │ ├── haxe.js │ │ │ │ └── index.html │ │ │ │ ├── htmlembedded │ │ │ │ ├── htmlembedded.js │ │ │ │ └── index.html │ │ │ │ ├── htmlmixed │ │ │ │ ├── htmlmixed.js │ │ │ │ └── index.html │ │ │ │ ├── http │ │ │ │ ├── http.js │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── jade │ │ │ │ ├── index.html │ │ │ │ └── jade.js │ │ │ │ ├── javascript │ │ │ │ ├── index.html │ │ │ │ ├── javascript.js │ │ │ │ ├── json-ld.html │ │ │ │ ├── test.js │ │ │ │ └── typescript.html │ │ │ │ ├── jinja2 │ │ │ │ ├── index.html │ │ │ │ └── jinja2.js │ │ │ │ ├── julia │ │ │ │ ├── index.html │ │ │ │ └── julia.js │ │ │ │ ├── kotlin │ │ │ │ ├── index.html │ │ │ │ └── kotlin.js │ │ │ │ ├── livescript │ │ │ │ ├── index.html │ │ │ │ └── livescript.js │ │ │ │ ├── lua │ │ │ │ ├── index.html │ │ │ │ └── lua.js │ │ │ │ ├── markdown │ │ │ │ ├── index.html │ │ │ │ ├── markdown.js │ │ │ │ └── test.js │ │ │ │ ├── meta.js │ │ │ │ ├── mirc │ │ │ │ ├── index.html │ │ │ │ └── mirc.js │ │ │ │ ├── mllike │ │ │ │ ├── index.html │ │ │ │ └── mllike.js │ │ │ │ ├── modelica │ │ │ │ ├── index.html │ │ │ │ └── modelica.js │ │ │ │ ├── nginx │ │ │ │ ├── index.html │ │ │ │ └── nginx.js │ │ │ │ ├── ntriples │ │ │ │ ├── index.html │ │ │ │ └── ntriples.js │ │ │ │ ├── octave │ │ │ │ ├── index.html │ │ │ │ └── octave.js │ │ │ │ ├── pascal │ │ │ │ ├── index.html │ │ │ │ └── pascal.js │ │ │ │ ├── pegjs │ │ │ │ ├── index.html │ │ │ │ └── pegjs.js │ │ │ │ ├── perl │ │ │ │ ├── index.html │ │ │ │ └── perl.js │ │ │ │ ├── php │ │ │ │ ├── index.html │ │ │ │ ├── php.js │ │ │ │ └── test.js │ │ │ │ ├── pig │ │ │ │ ├── index.html │ │ │ │ └── pig.js │ │ │ │ ├── properties │ │ │ │ ├── index.html │ │ │ │ └── properties.js │ │ │ │ ├── puppet │ │ │ │ ├── index.html │ │ │ │ └── puppet.js │ │ │ │ ├── python │ │ │ │ ├── index.html │ │ │ │ └── python.js │ │ │ │ ├── q │ │ │ │ ├── index.html │ │ │ │ └── q.js │ │ │ │ ├── r │ │ │ │ ├── index.html │ │ │ │ └── r.js │ │ │ │ ├── rpm │ │ │ │ ├── changes │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── rpm.js │ │ │ │ ├── rst │ │ │ │ ├── index.html │ │ │ │ └── rst.js │ │ │ │ ├── ruby │ │ │ │ ├── index.html │ │ │ │ ├── ruby.js │ │ │ │ └── test.js │ │ │ │ ├── rust │ │ │ │ ├── index.html │ │ │ │ └── rust.js │ │ │ │ ├── sass │ │ │ │ ├── index.html │ │ │ │ └── sass.js │ │ │ │ ├── scheme │ │ │ │ ├── index.html │ │ │ │ └── scheme.js │ │ │ │ ├── shell │ │ │ │ ├── index.html │ │ │ │ ├── shell.js │ │ │ │ └── test.js │ │ │ │ ├── sieve │ │ │ │ ├── index.html │ │ │ │ └── sieve.js │ │ │ │ ├── slim │ │ │ │ ├── index.html │ │ │ │ ├── slim.js │ │ │ │ └── test.js │ │ │ │ ├── smalltalk │ │ │ │ ├── index.html │ │ │ │ └── smalltalk.js │ │ │ │ ├── smarty │ │ │ │ ├── index.html │ │ │ │ └── smarty.js │ │ │ │ ├── smartymixed │ │ │ │ ├── index.html │ │ │ │ └── smartymixed.js │ │ │ │ ├── solr │ │ │ │ ├── index.html │ │ │ │ └── solr.js │ │ │ │ ├── sparql │ │ │ │ ├── index.html │ │ │ │ └── sparql.js │ │ │ │ ├── sql │ │ │ │ ├── index.html │ │ │ │ └── sql.js │ │ │ │ ├── stex │ │ │ │ ├── index.html │ │ │ │ ├── stex.js │ │ │ │ └── test.js │ │ │ │ ├── tcl │ │ │ │ ├── index.html │ │ │ │ └── tcl.js │ │ │ │ ├── textile │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── textile.js │ │ │ │ ├── tiddlywiki │ │ │ │ ├── index.html │ │ │ │ ├── tiddlywiki.css │ │ │ │ └── tiddlywiki.js │ │ │ │ ├── tiki │ │ │ │ ├── index.html │ │ │ │ ├── tiki.css │ │ │ │ └── tiki.js │ │ │ │ ├── toml │ │ │ │ ├── index.html │ │ │ │ └── toml.js │ │ │ │ ├── tornado │ │ │ │ ├── index.html │ │ │ │ └── tornado.js │ │ │ │ ├── turtle │ │ │ │ ├── index.html │ │ │ │ └── turtle.js │ │ │ │ ├── vb │ │ │ │ ├── index.html │ │ │ │ └── vb.js │ │ │ │ ├── vbscript │ │ │ │ ├── index.html │ │ │ │ └── vbscript.js │ │ │ │ ├── velocity │ │ │ │ ├── index.html │ │ │ │ └── velocity.js │ │ │ │ ├── verilog │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── verilog.js │ │ │ │ ├── xml │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xml.js │ │ │ │ ├── xquery │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xquery.js │ │ │ │ ├── yaml │ │ │ │ ├── index.html │ │ │ │ └── yaml.js │ │ │ │ └── z80 │ │ │ │ ├── index.html │ │ │ │ └── z80.js │ │ │ ├── colorpicker │ │ │ └── bootstrap-colorpicker.min.js │ │ │ ├── cropper │ │ │ └── cropper.min.js │ │ │ ├── dataTables │ │ │ ├── dataTables.bootstrap.js │ │ │ ├── dataTables.responsive.js │ │ │ ├── dataTables.tableTools.min.js │ │ │ ├── jquery.dataTables.js │ │ │ └── swf │ │ │ │ ├── copy_csv_xls.swf │ │ │ │ └── copy_csv_xls_pdf.swf │ │ │ ├── datapicker │ │ │ └── bootstrap-datepicker.js │ │ │ ├── flot │ │ │ ├── curvedLines.js │ │ │ ├── excanvas.min.js │ │ │ ├── jquery.flot.js │ │ │ ├── jquery.flot.pie.js │ │ │ ├── jquery.flot.resize.js │ │ │ ├── jquery.flot.spline.js │ │ │ ├── jquery.flot.symbol.js │ │ │ ├── jquery.flot.time.js │ │ │ └── jquery.flot.tooltip.min.js │ │ │ ├── metisMenu │ │ │ └── jquery.metisMenu.js │ │ │ ├── pace │ │ │ └── pace.min.js │ │ │ └── slimscroll │ │ │ ├── jquery.slimscroll.js │ │ │ └── jquery.slimscroll.min.js │ └── skin-config.html ├── lastupdate.tmp ├── main.go ├── master.exe ├── models │ ├── data_set.go │ ├── init.go │ ├── job.go │ └── models.go ├── node │ ├── id.go │ └── status.go ├── routers │ ├── commentsRouter_mlp_master_controllers.go │ └── router.go └── swagger │ ├── css │ ├── reset.css │ └── screen.css │ ├── images │ ├── explorer_icons.png │ ├── logo_small.png │ ├── pet_store_api.png │ ├── throbber.gif │ └── wordnik_api.png │ ├── index.html │ ├── o2c.html │ ├── swagger-ui.js │ └── swagger-ui.min.js ├── nginx ├── conf │ ├── fastcgi.conf │ ├── fastcgi_params │ ├── koi-utf │ ├── koi-win │ ├── localhost.crt │ ├── localhost.key.pub │ ├── mime.types │ ├── nginx - 副本 (2).conf │ ├── nginx - 副本.conf │ ├── nginx.conf │ ├── scgi_params │ ├── uwsgi_params │ └── win-utf ├── contrib │ ├── README │ ├── geo2nginx.pl │ ├── unicode2nginx │ │ ├── koi-utf │ │ ├── unicode-to-nginx.pl │ │ └── win-utf │ └── vim │ │ ├── ftdetect │ │ └── nginx.vim │ │ ├── indent │ │ └── nginx.vim │ │ └── syntax │ │ └── nginx.vim └── nginx.exe ├── node ├── alive.go ├── api │ └── master_api.go ├── config.ini ├── main.go ├── node.exe └── work.go ├── py ├── dataprovider │ ├── dataprovider │ │ ├── __init__.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── css │ │ │ │ └── main.css │ │ │ └── js │ │ │ │ ├── angular.min.js │ │ │ │ ├── bootstrap │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ └── bootstrap.min.css │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ │ └── js │ │ │ │ │ ├── bootstrap-typeahead.js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ └── bootstrap.min.js │ │ │ │ └── jquery.js │ │ ├── templates │ │ │ ├── data.html │ │ │ └── interval.html │ │ ├── urls.py │ │ ├── views.py │ │ └── wsgi.py │ ├── db.sqlite3 │ ├── manage.cmd │ ├── manage.py │ ├── shell.cmd │ └── start-server.cmd ├── datasets │ ├── 1.txt │ ├── __init__.py │ ├── crawl.py │ ├── datamgr.py │ ├── localdata.py │ ├── monads.py │ ├── parse.py │ └── saved.csv ├── graphic │ ├── __init__.py │ ├── classfication.py │ ├── datagraph.py │ ├── network.py │ ├── performance.py │ └── tree.py ├── install │ ├── MySQL_python-1.2.5-cp27-none-win32.whl │ ├── first.cmd │ ├── migrate.cmd │ ├── mysql_alter.sql │ ├── mysql_init.cmd │ ├── mysql_init.sql │ ├── mysql_migrate.sql │ └── new_website.cmd ├── ml_models │ ├── __init__.py │ ├── assessment.py │ ├── boosting.py │ ├── bp.py │ ├── clustering.py │ ├── crf.py │ ├── dat_cls.txt │ ├── dat_cls_test.txt │ ├── decision_tree.py │ ├── em.py │ ├── fpgrowth.py │ ├── hmm.py │ ├── iris.txt │ ├── knn.py │ ├── lasso_logistic.py │ ├── logistic.py │ ├── model_def.py │ ├── model_task.py │ ├── modelbase.py │ ├── models.json │ ├── naive_bayes.py │ ├── pca.py │ ├── perceptron.py │ └── svm.py ├── test.py └── www │ ├── db.sqlite3 │ ├── manage.cmd │ ├── manage.py │ ├── shell.cmd │ ├── start-server.cmd │ ├── upload │ └── dataset │ │ ├── 20160228233152_406.txt │ │ ├── 20160228233203_726.txt │ │ ├── 20160228233215_452.csv │ │ └── 20160304003421_968.txt │ └── www │ ├── __init__.py │ ├── admin.py │ ├── forms.py │ ├── middlewares.py │ ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20151209_0057.py │ ├── 0003_mlmodel_classfeatureindex.py │ ├── 0004_auto_20151211_2305.py │ ├── 0005_auto_20151217_0015.py │ ├── 0006_auto_20160214_1807.py │ ├── 0007_auto_20160228_2201.py │ └── __init__.py │ ├── models.py │ ├── scaffold.py │ ├── settings.py │ ├── static │ ├── css │ │ └── main.css │ └── js │ │ ├── angular.min.js │ │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── js │ │ │ ├── bootstrap-typeahead.js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ │ ├── controller.js │ │ └── jquery.js │ ├── storage.py │ ├── templates │ ├── 302.html │ ├── 404.html │ ├── applymodel.html │ ├── as_right.html │ ├── assessmodel.html │ ├── dataset.html │ ├── ds_list.html │ ├── ds_upload.html │ ├── ds_view.html │ ├── error.html │ ├── footer.html │ ├── header.html │ ├── index.html │ ├── md_list.html │ ├── md_new.html │ ├── md_trainingprocess.html │ ├── md_view.html │ ├── models │ │ ├── decision_tree.partial.html │ │ └── matrix.partial.html │ ├── node_manager.html │ ├── olds_list.html │ ├── olds_upload.html │ ├── olds_view.html │ ├── success.html │ ├── trainmodel.html │ ├── ur_login.html │ └── user.html │ ├── urls.py │ ├── utils.py │ ├── views.py │ └── wsgi.py ├── store └── db.sqlite3 ├── test ├── add_data_set.cmd ├── clean_store.cmd ├── data_set_01.md ├── data_set_02.json ├── query_data_set_list.cmd ├── query_job_list.cmd ├── set_data_set.cmd └── submit_job.cmd └── utility ├── acquire_filename.go ├── copy_file.go ├── file_exist.go ├── get_cpu_rate.go ├── get_file_line_number.go ├── get_file_point_line_data.go └── get_mem_used.go /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | 46 | # Translations 47 | *.mo 48 | *.pot 49 | 50 | # Django stuff: 51 | *.log 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # PyBuilder 57 | target/ 58 | 59 | py/www/upload 60 | py/www/www/migrations 61 | nouse/ 62 | *.lnk 63 | *.trd 64 | nginx/docs 65 | nginx/logs 66 | nginx/temp 67 | nginx/html 68 | *.key 69 | *.unsecure 70 | *.csr 71 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EasyMLPlatform 2 | an easy distributed machine learning platform 3 | ## Install 4 | #### Dependencies: 5 | 1. Python 2.7 6 | 2. Django 1.9 7 | 3. MySQLdb 8 | 4. mysql-python 9 | 5. BeautifulSoup 10 | 6. django-pagination 11 | 7. Go 12 | 8. sklearn 13 | 14 | ## Run 15 | #### Start Server 16 | master.exe start masternode 17 | node.exe start slavenode 18 | start-server.cmd start django frontend and stading machine learning framework 19 | start-online-server.cmd online dataset demo 20 | 21 | #### PortID 22 | HTTPS Server 4433 23 | HTTP Server 80/8888 24 | ML Framework(on standalone server) 8090 25 | Distributed Nodes 8190 26 | Data Provider Server 8091 27 | 28 | 29 | -------------------------------------------------------------------------------- /key/easy.calvinneo.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDBDCCAewCCQDHULuSsdizEjANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB 3 | VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 4 | cyBQdHkgTHRkMB4XDTE2MDMxMTE2MDE0OVoXDTE3MDMxMTE2MDE0OVowRTELMAkG 5 | A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0 6 | IFdpZGdpdHMgUHR5IEx0ZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB 7 | ALhNqhQ9cy3s8yTnIAdT1PpvegGZCpD7LkuyoB6WXfPAr+WZxEoSiEbfaVXeZF9n 8 | FkFaCbHVpuu6mS1mvOgg/5CIxqrKvfwteIuo/zt+4eoRL17Q6FARtIieHQFBhfpx 9 | D+jBfBUX6JDQ+CWs78z2JHURAEOg5/kGPkE723ez1ROxQzte+9KEYNj8aYUOWAVe 10 | IC49of0/XQ8JuK9aLf71f4KkBGFTTXXvrcRiqPOY6m24FuwJi1+jw9BkH1ciQeoT 11 | 5w3ausGkxWci7uUdwRzBJSU4UccUEYAz2uRE6f37rRohgAjOSTnRlKDJB4WKrv57 12 | VICOppfa6ij1i6FFKDgENPkCASMwDQYJKoZIhvcNAQEFBQADggEBAJDJdsWXKTAI 13 | sU/LBajKZ9LE9qCwwn62VK08j7LDmWy3g69u58BljpQWRuqvpj4xIs7L3BtJ14aA 14 | Q2z9c2IpwosZy9KhOP3RAi5t8y/4BhyvCVIKoYekMgPx1zt5T/9cVXZbviNjYfuV 15 | PNH9Yk687E8E6Q/yFGj76uUzyclzsBXdE9I0qu5CN+rULiAAhbKCZmabpvyhiHQK 16 | o1Tix5KBTxJwT0dgte5Q2BFKrK/jgy/luzm0rxlaHQKLjuNZAlke50Rq0Zb71+i0 17 | NcSkPebewDROSyDNm43LMJgLwD+UF668U4uGH3xhRrAcJZExGzY15rU9izZ+Z6d3 18 | 6rVs4Z1Z3+I= 19 | -----END CERTIFICATE----- 20 | -------------------------------------------------------------------------------- /key/easy.calvinneo.com.csr: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE REQUEST----- 2 | MIICiDCCAXACAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUx 3 | ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASAwDQYJKoZIhvcN 4 | AQEBBQADggENADCCAQgCggEBALhNqhQ9cy3s8yTnIAdT1PpvegGZCpD7LkuyoB6W 5 | XfPAr+WZxEoSiEbfaVXeZF9nFkFaCbHVpuu6mS1mvOgg/5CIxqrKvfwteIuo/zt+ 6 | 4eoRL17Q6FARtIieHQFBhfpxD+jBfBUX6JDQ+CWs78z2JHURAEOg5/kGPkE723ez 7 | 1ROxQzte+9KEYNj8aYUOWAVeIC49of0/XQ8JuK9aLf71f4KkBGFTTXXvrcRiqPOY 8 | 6m24FuwJi1+jw9BkH1ciQeoT5w3ausGkxWci7uUdwRzBJSU4UccUEYAz2uRE6f37 9 | rRohgAjOSTnRlKDJB4WKrv57VICOppfa6ij1i6FFKDgENPkCASOgADANBgkqhkiG 10 | 9w0BAQUFAAOCAQEAnxYSeAlzixOZk+bOFeMCRMgXMo+fAYwjCUxNFwrm6gTT23tI 11 | 6T1kB8HZwJ3FMLaWqG5kRmwWqzcqZ+HGeCte31u286KoJTKmjz6ayGTKauG6umdt 12 | rnC1ySi7qLCQZgd8/tca/TSCmkuberv9g/LlEyEYBDg4U7X15qccS5+NWgcvcVDp 13 | qMPwfqOzv4k+8KysA5fh059er0x1pQynMyKf1wzwObPLijUyDRy1ixm8zL4w8DRf 14 | 7Lw5PnoYgoRlSL+2JsmaoNiyfXg4ssv7xHmH0wWmDcWMSFW4xzk3mE5G7zeXwEhj 15 | 9hmxVMfm/jc6oJ67oeUSfgm5ZuHuQHsZu9wJPg== 16 | -----END CERTIFICATE REQUEST----- 17 | -------------------------------------------------------------------------------- /key/easy.calvinneo.com.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-EDE3-CBC,76E59CDD53BC6E01 4 | 5 | OTccIXzqVrrWWpZHd65Gu4p8jpYV7BhSVCYiYjfN1Vbzz2H/VpV/JtobdfLJJNI9 6 | Qdb9wtRRaoEnr9tGBepAqAk4T07pb9TsL0hCFrwHGWuv4G8r3dWDM6psABC+YY4P 7 | N+yQbCQzAzlnNkd2bZsi/BdGMgyTbjuHIUUrvenynRc3MtlFy9SlmqDumSiqIuwP 8 | g6xjIh/eZ5pAyd2GrGXB8dvBLZqRwsPrT3FDCa9bjCo0hwbyCzyw/YYiln7Rmtxd 9 | rgEb5edDPF8QWpBFvb7Pz2mA6OfZZwbdM3Xf2koDIkWKDc7Vh0a3UPJS9s/m28PB 10 | 31o1TJFJ66A9z13LhhZjzuRxigd4JubbXnxsWlpK1OwB2mWDf3yMqeJTLn/Kt0Lz 11 | y3gty9ZGCDTmPvFLhdGUspchnoUXe7QdxoH5l5J29sCvE7ZTxHiQFGjypA3Lbvn1 12 | +/CeyxfSmGLky8rslmOcVzoCPhNwNKl6mYrkb57C/rdlQrckuyARSZ1CyieuNuwJ 13 | JcdcAiAf4WlT2VVixuSTXmSD+nFr+em0FiwjodyVKk1B4YnTHR53HC1oogm19J0l 14 | X2j6vAxvOdSQzVCh9bh4I8Nf4KZ+ASniVibexA84mAfZhz3qgb2DHNAp3eg8vJB/ 15 | 0bsdb2SxhY2yxl9NcnQlqG+0CfESN3yGu/WQbm9ciPdJkvvVmrP1KOioWn7GS8qA 16 | kOpOX16fGYUlLEVrtyaGcwun+YH7gVibWgeQD3YY636TP8/IyCNUBFSK927Vk0S7 17 | 5a7/hgr0MysZtPnFyb5/S6zWoeTjGg1i+ofnRF7wo8N/G7JjAEfjm9LfBrPi/h5O 18 | K0E1CrmhRJCn8BKTRPtQWqq4wjtBwIRe2Expx0qIcRocx9i4KzMzASABa8IqqUEY 19 | s71+tvw/s6pHiHlfyo31qSzFTUxYy5IC0bwk75u+NWGcXSbdErcviMJYy6duHdSK 20 | PoE2hyegmMZVdmNQh4mFaJbinTwvgw4iPgsFiYFpSb10GZLDhkuwPAGzqRMZ9rJF 21 | cbWitqfkIxW+5WuLKp35g9uCSOASBCo0MnpL4/zLgGNfBgxiPXmC1T53yx9hgtBS 22 | Xn/VxB1JfthLOSQT9cdGwrVjt4TNlOoA4+RX/QkoAz6cGYvfSb4MphbHn56Dzznz 23 | 4rBvDMwSE6Q4xcb2mV2gXIRomw8duTlj0lJJrMT4m0fMo7QPAqo5sIhR+g3HFqDP 24 | PZgqvuRTARa6cejxH239bamFgbW6x0+SLjTdAQRggCE5EA78ByHhYssDpN0nXSGl 25 | Zp+/odHctLx/PrrZnAdsIxxwe0yqFdiWkKIUp96zzAMM2Vdkw7G9b4aW4z0DXZ4e 26 | 70FfFhxOLWNZmsVn6dYx5IbifZTB2/tdKuTYPfNJGfrGnXF0ns6RvhnafzQaQhTR 27 | giT+SotiQTkRA7teIIQOhBZyGpZi/FBMngyG268CJ2iniX4nJRtKPaeUfdOJavLL 28 | o7Gk5lr5WMsSG+VU8TkRiUyZfMl5tpyXUH5X/o9k/HoA7rioC9QP4t4bb5Ewe9+q 29 | 1KKT5o9QiLNyOMIDAfTiIIokuDSNGmQ+HMT7frigU7xT3ubU0g443Q== 30 | -----END RSA PRIVATE KEY----- 31 | -------------------------------------------------------------------------------- /key/easy.calvinneo.com.key.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuE2qFD1zLezzJOcgB1PU+m96AZkKkPsuS7KgHpZd88Cv5ZnEShKIRt9pVd5kX2cWQVoJsdWm67qZLWa86CD/kIjGqsq9/C14i6j/O37h6hEvXtDoUBG0iJ4dAUGF+nEP6MF8FRfokND4JazvzPYkdREAQ6Dn+QY+QTvbd7PVE7FDO1770oRg2PxphQ5YBV4gLj2h/T9dDwm4r1ot/vV/gqQEYVNNde+txGKo85jqbbgW7AmLX6PD0GQfVyJB6hPnDdq6waTFZyLu5R3BHMElJThRxxQRgDPa5ETp/futGiGACM5JOdGUoMkHhYqu/ntUgI6ml9rqKPWLoUUoOAQ0+Q== Calvin@NEO 2 | -------------------------------------------------------------------------------- /key/easy.calvinneo.com.key.unsecure: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEoQIBAAKCAQEAuE2qFD1zLezzJOcgB1PU+m96AZkKkPsuS7KgHpZd88Cv5ZnE 3 | ShKIRt9pVd5kX2cWQVoJsdWm67qZLWa86CD/kIjGqsq9/C14i6j/O37h6hEvXtDo 4 | UBG0iJ4dAUGF+nEP6MF8FRfokND4JazvzPYkdREAQ6Dn+QY+QTvbd7PVE7FDO177 5 | 0oRg2PxphQ5YBV4gLj2h/T9dDwm4r1ot/vV/gqQEYVNNde+txGKo85jqbbgW7AmL 6 | X6PD0GQfVyJB6hPnDdq6waTFZyLu5R3BHMElJThRxxQRgDPa5ETp/futGiGACM5J 7 | OdGUoMkHhYqu/ntUgI6ml9rqKPWLoUUoOAQ0+QIBIwKCAQBkDOdM0ObBKNvDk2ko 8 | jJgwLeMlcFYxcmmWzq6xhNPquQ8HnJ3Bz4vOs8t3wd63cnnLtIjrgpxxVqrswr5S 9 | IIq8LP4iM4u0yDof7gblyIlEjPx1TNXiUsEW9r9J0xzYaUMmlOuWbBCJIPu8rlZK 10 | sYGBYQAktm9Mq54jaaMGd5Dtbe+EXmKnNu0zP4HsXVqWsw3NafuTGAflDJZRjg+t 11 | ohUoFHqTag2LkXRE3E+v2ZAkLQ3dm9OBZYu0CjHEfpaMAnhoYOKcrTmo8muFiyOd 12 | a/B/y3BUiSr519mQM9qGF6MeDsRxqPgy3yjiflpXHKZSBWawUHBLDXn63kxB9aJl 13 | Q00LAoGBANq6xG2MstCrtoHv9dg1iyBva2ERZX+tUMcLuq+2qB8KCq9RVKCVBNoP 14 | +zGrUU4kjJaTK38vykLxik7yYg+zAjtf/nTJ+d9SnQD2Hfe/R9YYf+lDO5kAhSOJ 15 | Mu3fh3XEUiwOB3OBIGhQI8nwPR40c7OIwwm2IV4XVRPDx7NqvxRJAoGBANe1MA5w 16 | G4pjFEkXlPPipBw29BMtuxI1DYvk+B4Ic6VJtvoAcTWccxh47JOmB621sBX2iRrI 17 | OWSTMtMIQswMvEcjeqSGNeenaQzrhjbqpP/Qd4weBDbOZHdsYZ94SKyKOtyiqoXG 18 | xT9RGs0Px/Keuk+YDwPrrjIbFHIgngZIoLsxAoGAGP9m5/LSm4FWr8OnEWU0eLxG 19 | yUPRFefr+X2u74KW3vnVVd1oweUlIDxXOOBhED6w+0QE+Je/WBuaxzGkzpgdgyDp 20 | 4XYrL3cn4tpMkVewcD1Qcm4VcJJYW9UqZFQPeyxhKZs0DTNUKS268oHbGWUUiYv5 21 | CGyWGWHAlItnR7Rtm+sCgYAYpv4tiSe4C1LGhloqgE1FDZg8tMTsI1IBW/8ZYA03 22 | diOKSTGCeEerBoFv9be8FMOqvRb7vxyAhdnsO3VZJgbjjwazt5Ehyf1gj/IU553U 23 | F9Ml9M1IF5Z0DGLtp1jDQv9prDC+1ONXsX9n5IvhNrY0+29uKZBAPZvvyTahoeZ7 24 | ywKBgQCduYM42s3q7S8tTaUflLpGBTWBskXcF9ljZqgAWwZKbQLct92NQmyZBuIA 25 | xYcUtnBhDRGj6+ZeTpI9g2RaSH8pf5VCuh2sOHqaYwGDJ5LymtGq9k1DfC4pB2xh 26 | jK6WhlkCtOZyZxTznpGCW4PeZ6Ur4ONtzrtdgvWfjDsLKv6c7Q== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /key/new.txt: -------------------------------------------------------------------------------- 1 | $ssh-keygen -f easy.calvinneo.com.key 2 | $openssl req -new -key easy.calvinneo.com.key -out easy.calvinneo.com.csr 3 | $openssl x509 -req -days 365 -in easy.calvinneo.com.csr -signkey easy.calvinneo.com.key -out easy.calvinneo.com.crt 4 | 5 | openssl rsa -in server.key -out server.key.unsecure -------------------------------------------------------------------------------- /master/conf/app.conf: -------------------------------------------------------------------------------- 1 | appname = mlp-master 2 | httpport = 8190 3 | runmode = dev 4 | autorender = false 5 | copyrequestbody = true 6 | EnableDocs = true 7 | EnableMonitor = true 8 | -------------------------------------------------------------------------------- /master/controllers/job_slice.go: -------------------------------------------------------------------------------- 1 | // job_slice 2 | package controllers 3 | 4 | import ( 5 | "mlp/master/models" 6 | 7 | "github.com/astaxie/beego" 8 | ) 9 | 10 | // Job slice API Controller 11 | type JobSliceController struct { 12 | beego.Controller 13 | } 14 | 15 | // @Title Acquire Job Slice 16 | // @Description Acquire a job slice that status is ready to work 17 | // @Success 200 {object} models.JobSlice 18 | // @Failure 403 {string} error description 19 | // @router /acquire [post] 20 | func (o *JobSliceController) AcquireJobSlice() { 21 | // id, err := o.GetInt64("id") 22 | // if err != nil { 23 | // log.Println(err) 24 | // FinishRequest(o.Ctx, 403, err.Error()) 25 | // return 26 | // } 27 | 28 | d, err := models.AcquireReadyJobSlice() 29 | if err != nil { 30 | if err == models.ErrNoMoreData { 31 | FinishRequest(o.Ctx, 204, "") 32 | } else { 33 | FinishRequest(o.Ctx, 403, err.Error()) 34 | } 35 | return 36 | } 37 | 38 | o.Data["json"] = d 39 | o.ServeJson() 40 | } 41 | -------------------------------------------------------------------------------- /master/controllers/result_set.go: -------------------------------------------------------------------------------- 1 | // result_set 2 | package controllers 3 | 4 | import ( 5 | "log" 6 | "mlp/master/models" 7 | "mlp/utility" 8 | 9 | "github.com/astaxie/beego" 10 | ) 11 | 12 | // ResultSet API Controller 13 | type ResultSetController struct { 14 | beego.Controller 15 | } 16 | 17 | // @Title Upload 18 | // @Description Upload result set 19 | // @Param file form file true "Result set data" 20 | // @Param jobSliceId form int64 true "The job slice id" 21 | // @Success 200 body is empty 22 | // @Failure 403 {string} error description 23 | // @router /upload [post] 24 | func (o *ResultSetController) Upload() { 25 | f, _, err := o.GetFile("file") 26 | if err != nil { 27 | log.Println(err) 28 | FinishRequest(o.Ctx, 403, err.Error()) 29 | return 30 | } 31 | defer f.Close() 32 | 33 | // fileSize, err := o.GetInt64("fileSize") 34 | // if err != nil { 35 | // log.Println(err) 36 | // FinishRequest(o.Ctx, 403, err.Error()) 37 | // return 38 | // } 39 | 40 | jobSliceId, err := o.GetInt64("jobSliceId") 41 | if err != nil { 42 | log.Println(err) 43 | FinishRequest(o.Ctx, 403, err.Error()) 44 | return 45 | } 46 | 47 | filename := utility.AcquireFilename() 48 | _, err = utility.CopyFile2(f, "../store/"+filename) 49 | if err != nil { 50 | log.Println(err) 51 | FinishRequest(o.Ctx, 403, err.Error()) 52 | return 53 | } 54 | 55 | err = models.CompletedJobSlice(jobSliceId, filename) 56 | if err != nil { 57 | log.Println(err) 58 | FinishRequest(o.Ctx, 403, err.Error()) 59 | return 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /master/controllers/utility.go: -------------------------------------------------------------------------------- 1 | // utility 2 | package controllers 3 | 4 | import "github.com/astaxie/beego/context" 5 | 6 | func FinishRequest(ctx *context.Context, status int, body string) { 7 | ctx.Output.SetStatus(status) 8 | ctx.Output.Body([]byte(body)) 9 | } 10 | -------------------------------------------------------------------------------- /master/docs/doc.go: -------------------------------------------------------------------------------- 1 | package docs -------------------------------------------------------------------------------- /master/inspinia/css/patterns/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/1.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/2.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/3.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/4.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/5.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/6.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/7.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/congruent_pentagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/congruent_pentagon.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/header-profile-skin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/header-profile-skin-1.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/header-profile-skin-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/header-profile-skin-2.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/header-profile-skin-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/header-profile-skin-3.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/header-profile.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/otis_redding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/otis_redding.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/shattered.png -------------------------------------------------------------------------------- /master/inspinia/css/patterns/triangular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/patterns/triangular.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/css/blueimp-gallery-indicator.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * blueimp Gallery Indicator CSS 1.1.0 4 | * https://github.com/blueimp/Gallery 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .blueimp-gallery > .indicator { 14 | position: absolute; 15 | top: auto; 16 | right: 15px; 17 | bottom: 15px; 18 | left: 15px; 19 | margin: 0 40px; 20 | padding: 0; 21 | list-style: none; 22 | text-align: center; 23 | line-height: 10px; 24 | display: none; 25 | } 26 | .blueimp-gallery > .indicator > li { 27 | display: inline-block; 28 | width: 9px; 29 | height: 9px; 30 | margin: 6px 3px 0 3px; 31 | -webkit-box-sizing: content-box; 32 | -moz-box-sizing: content-box; 33 | box-sizing: content-box; 34 | border: 1px solid transparent; 35 | background: #ccc; 36 | background: rgba(255, 255, 255, 0.25) center no-repeat; 37 | border-radius: 5px; 38 | box-shadow: 0 0 2px #000; 39 | opacity: 0.5; 40 | cursor: pointer; 41 | } 42 | .blueimp-gallery > .indicator > li:hover, 43 | .blueimp-gallery > .indicator > .active { 44 | background-color: #fff; 45 | border-color: #fff; 46 | opacity: 1; 47 | } 48 | .blueimp-gallery-controls > .indicator { 49 | display: block; 50 | /* Fix z-index issues (controls behind slide element) on Android: */ 51 | -webkit-transform: translateZ(0); 52 | -moz-transform: translateZ(0); 53 | -ms-transform: translateZ(0); 54 | -o-transform: translateZ(0); 55 | transform: translateZ(0); 56 | } 57 | .blueimp-gallery-single > .indicator { 58 | display: none; 59 | } 60 | .blueimp-gallery > .indicator { 61 | -webkit-user-select: none; 62 | -khtml-user-select: none; 63 | -moz-user-select: none; 64 | -ms-user-select: none; 65 | user-select: none; 66 | } 67 | 68 | /* IE7 fixes */ 69 | *+html .blueimp-gallery > .indicator > li { 70 | display: inline; 71 | } 72 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/css/demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * blueimp Gallery Demo CSS 2.0.0 3 | * https://github.com/blueimp/Gallery 4 | * 5 | * Copyright 2013, Sebastian Tschan 6 | * https://blueimp.net 7 | * 8 | * Licensed under the MIT license: 9 | * http://www.opensource.org/licenses/MIT 10 | */ 11 | 12 | body { 13 | max-width: 750px; 14 | margin: 0 auto; 15 | padding: 1em; 16 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; 17 | font-size: 1em; 18 | line-height: 1.4em; 19 | background: #222; 20 | color: #fff; 21 | -webkit-text-size-adjust: 100%; 22 | -ms-text-size-adjust: 100%; 23 | } 24 | a { 25 | color: orange; 26 | text-decoration: none; 27 | } 28 | img { 29 | border: 0; 30 | vertical-align: middle; 31 | } 32 | h1 { 33 | line-height: 1em; 34 | } 35 | h2, 36 | .links { 37 | text-align: center; 38 | } 39 | 40 | @media (min-width: 481px) { 41 | .navigation { 42 | list-style: none; 43 | padding: 0; 44 | } 45 | .navigation li { 46 | display: inline-block; 47 | } 48 | .navigation li:not(:first-child):before { 49 | content: '| '; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/blueimp/img/error.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/blueimp/img/loading.gif -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/play-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/blueimp/img/play-pause.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/play-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/blueimp/img/video-play.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/blueimp/img/video-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/chosen/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/chosen/chosen-sprite.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/chosen/chosen-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/chosen/chosen-sprite@2x.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/footable/fonts/footable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/footable/fonts/footable.eot -------------------------------------------------------------------------------- /master/inspinia/css/plugins/footable/fonts/footable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/footable/fonts/footable.ttf -------------------------------------------------------------------------------- /master/inspinia/css/plugins/footable/fonts/footable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/footable/fonts/footable.woff -------------------------------------------------------------------------------- /master/inspinia/css/plugins/iCheck/custom.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-green.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-green.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-green.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-green.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-green { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-green.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-green.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-green.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-green.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 53 | .icheckbox_square-green, 54 | .iradio_square-green { 55 | background-image: url(green@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /master/inspinia/css/plugins/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/iCheck/green.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/iCheck/green@2x.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sort.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sort_asc.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sort_desc.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sprite-skin-flat.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sprite-skin-flat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sprite-skin-flat2.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sprite-skin-nice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sprite-skin-nice.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/sprite-skin-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/sprite-skin-simple.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/spritemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/spritemap.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/images/spritemap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/images/spritemap@2x.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/ionRangeSlider/ion.rangeSlider.skinNice.css: -------------------------------------------------------------------------------- 1 | /* Ion.RangeSlider, Nice Skin 2 | // css version 1.8.5 3 | // by Denis Ineshin | ionden.com 4 | // ===================================================================================================================*/ 5 | 6 | /* ===================================================================================================================== 7 | // Skin details */ 8 | 9 | .irs-line-mid, 10 | .irs-line-left, 11 | .irs-line-right, 12 | .irs-diapason, 13 | .irs-slider { 14 | background: url(../img/sprite-skin-nice.png) repeat-x; 15 | } 16 | 17 | .irs { 18 | height: 40px; 19 | } 20 | .irs-with-grid { 21 | height: 60px; 22 | } 23 | .irs-line { 24 | height: 8px; top: 25px; 25 | } 26 | .irs-line-left { 27 | height: 8px; 28 | background-position: 0 -30px; 29 | } 30 | .irs-line-mid { 31 | height: 8px; 32 | background-position: 0 0; 33 | } 34 | .irs-line-right { 35 | height: 8px; 36 | background-position: 100% -30px; 37 | } 38 | 39 | .irs-diapason { 40 | height: 8px; top: 25px; 41 | background-position: 0 -60px; 42 | } 43 | 44 | .irs-slider { 45 | width: 22px; height: 22px; 46 | top: 17px; 47 | background-position: 0 -90px; 48 | } 49 | #irs-active-slider, .irs-slider:hover { 50 | background-position: 0 -120px; 51 | } 52 | 53 | .irs-min, .irs-max { 54 | color: #999; 55 | font-size: 10px; line-height: 1.333; 56 | text-shadow: none; 57 | top: 0; padding: 1px 3px; 58 | background: rgba(0,0,0,0.1); 59 | border-radius: 3px; 60 | } 61 | .lt-ie9 .irs-min, .lt-ie9 .irs-max { 62 | background: #ccc; 63 | } 64 | 65 | .irs-from, .irs-to, .irs-single { 66 | color: #fff; 67 | font-size: 10px; line-height: 1.333; 68 | text-shadow: none; 69 | padding: 1px 5px; 70 | background: rgba(0,0,0,0.3); 71 | border-radius: 3px; 72 | } 73 | .lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { 74 | background: #999; 75 | } 76 | 77 | .irs-grid-pol { 78 | background: #99a4ac; 79 | } 80 | .irs-grid-text { 81 | color: #99a4ac; 82 | } 83 | 84 | .irs-disabled { 85 | } -------------------------------------------------------------------------------- /master/inspinia/css/plugins/ionRangeSlider/ion.rangeSlider.skinSimple.css: -------------------------------------------------------------------------------- 1 | /* Ion.RangeSlider, Simple Skin 2 | // css version 1.8.5 3 | // by Denis Ineshin | ionden.com 4 | // ===================================================================================================================*/ 5 | 6 | /* ===================================================================================================================== 7 | // Skin details */ 8 | 9 | .irs-line-mid, 10 | .irs-line-left, 11 | .irs-line-right, 12 | .irs-diapason, 13 | .irs-slider { 14 | background: url(../img/sprite-skin-simple.png) repeat-x; 15 | } 16 | 17 | .irs { 18 | height: 40px; 19 | } 20 | .irs-with-grid { 21 | height: 60px; 22 | } 23 | .irs-line { 24 | height: 6px; top: 25px; 25 | } 26 | .irs-line-left { 27 | height: 6px; 28 | background-position: 0 -30px; 29 | } 30 | .irs-line-mid { 31 | height: 6px; 32 | background-position: 0 0; 33 | } 34 | .irs-line-right { 35 | height: 6px; 36 | background-position: 100% -30px; 37 | } 38 | 39 | .irs-diapason { 40 | height: 6px; top: 25px; 41 | background-position: 0 -60px; 42 | } 43 | 44 | .irs-slider { 45 | width: 8px; height: 15px; 46 | top: 21px; 47 | background-position: 0 -90px; 48 | } 49 | #irs-active-slider, .irs-slider:hover { 50 | background-position: 0 -120px; 51 | } 52 | 53 | .irs-min, .irs-max { 54 | color: #c0c0c0; 55 | font-size: 10px; line-height: 1.333; 56 | text-shadow: none; 57 | top: 0; padding: 1px 3px; 58 | background: rgba(0,0,0,0.1); 59 | border-radius: 3px; 60 | } 61 | .lt-ie9 .irs-min, .lt-ie9 .irs-max { 62 | background: #3654b0; 63 | } 64 | 65 | .irs-from, .irs-to, .irs-single { 66 | color: #000; 67 | font-size: 10px; line-height: 1.333; 68 | text-shadow: none; 69 | padding: 1px 5px; 70 | background: rgba(255,255,255,0.8); 71 | border-radius: 3px; 72 | } 73 | .lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single { 74 | background: #d8dff3; 75 | } 76 | 77 | .irs-grid-pol { 78 | background: #777; 79 | } 80 | .irs-grid-text { 81 | color: #e0e0e0; 82 | } 83 | 84 | .irs-disabled { 85 | } -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/animated-overlay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/animated-overlay.gif -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jQueryUI/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jQueryUI/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jsTree/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jsTree/32px.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jsTree/39px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jsTree/39px.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jsTree/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jsTree/40px.png -------------------------------------------------------------------------------- /master/inspinia/css/plugins/jsTree/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/jsTree/throbber.gif -------------------------------------------------------------------------------- /master/inspinia/css/plugins/morris/morris-0.4.3.min.css: -------------------------------------------------------------------------------- 1 | .morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} 2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} -------------------------------------------------------------------------------- /master/inspinia/css/plugins/slick/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/slick/ajax-loader.gif -------------------------------------------------------------------------------- /master/inspinia/css/plugins/slick/fonts/slick.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/slick/fonts/slick.eot -------------------------------------------------------------------------------- /master/inspinia/css/plugins/slick/fonts/slick.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by Fontastic.me 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /master/inspinia/css/plugins/slick/fonts/slick.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/slick/fonts/slick.ttf -------------------------------------------------------------------------------- /master/inspinia/css/plugins/slick/fonts/slick.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/css/plugins/slick/fonts/slick.woff -------------------------------------------------------------------------------- /master/inspinia/css/plugins/switchery/switchery.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Main stylesheet for Switchery. 4 | * http://abpetkov.github.io/switchery/ 5 | * 6 | */ 7 | 8 | .switchery { 9 | background-color: #fff; 10 | border: 1px solid #dfdfdf; 11 | border-radius: 20px; 12 | cursor: pointer; 13 | display: inline-block; 14 | height: 30px; 15 | position: relative; 16 | vertical-align: middle; 17 | width: 50px; 18 | 19 | -webkit-box-sizing: content-box; 20 | -moz-box-sizing: content-box; 21 | box-sizing: content-box; 22 | } 23 | 24 | .switchery > small { 25 | background: #fff; 26 | border-radius: 100%; 27 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 28 | height: 30px; 29 | position: absolute; 30 | top: 0; 31 | width: 30px; 32 | } -------------------------------------------------------------------------------- /master/inspinia/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /master/inspinia/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /master/inspinia/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /master/inspinia/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /master/inspinia/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | 15 | .fa-icon-rotate(@degrees, @rotation) { 16 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 17 | -webkit-transform: rotate(@degrees); 18 | -ms-transform: rotate(@degrees); 19 | transform: rotate(@degrees); 20 | } 21 | 22 | .fa-icon-flip(@horiz, @vert, @rotation) { 23 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 24 | -webkit-transform: scale(@horiz, @vert); 25 | -ms-transform: scale(@horiz, @vert); 26 | transform: scale(@horiz, @vert); 27 | } 28 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | 15 | @mixin fa-icon-rotate($degrees, $rotation) { 16 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 17 | -webkit-transform: rotate($degrees); 18 | -ms-transform: rotate($degrees); 19 | transform: rotate($degrees); 20 | } 21 | 22 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 23 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 24 | -webkit-transform: scale($horiz, $vert); 25 | -ms-transform: scale($horiz, $vert); 26 | transform: scale($horiz, $vert); 27 | } 28 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /master/inspinia/font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /master/inspinia/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /master/inspinia/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /master/inspinia/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /master/inspinia/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: CSS mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

CSS mode

27 |
62 | 65 | 66 |

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

67 | 68 |

Parsing/Highlighting Tests: normal, verbose.

69 | 70 |
71 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/css/less_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | "use strict"; 6 | 7 | var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); 8 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } 9 | 10 | MT("variable", 11 | "[variable-2 @base]: [atom #f04615];", 12 | "[qualifier .class] {", 13 | " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", 14 | " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", 15 | "}"); 16 | 17 | MT("amp", 18 | "[qualifier .child], [qualifier .sibling] {", 19 | " [qualifier .parent] [atom &] {", 20 | " [property color]: [keyword black];", 21 | " }", 22 | " [atom &] + [atom &] {", 23 | " [property color]: [keyword red];", 24 | " }", 25 | "}"); 26 | 27 | MT("mixin", 28 | "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", 29 | " [property color]: [variable darken]([variable-2 @color], [number 10%]);", 30 | "}", 31 | "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", 32 | " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", 33 | "}", 34 | "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", 35 | " [property display]: [atom block];", 36 | "}", 37 | "[variable-2 @switch]: [variable light];", 38 | "[qualifier .class] {", 39 | " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", 40 | "}"); 41 | 42 | MT("nest", 43 | "[qualifier .one] {", 44 | " [def @media] ([property width]: [number 400px]) {", 45 | " [property font-size]: [number 1.2em];", 46 | " [def @media] [attribute print] [keyword and] [property color] {", 47 | " [property color]: [keyword blue];", 48 | " }", 49 | " }", 50 | "}"); 51 | })(); 52 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/django/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Django template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Django template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Django template markup.

61 | 62 |

MIME types defined: text/x-django

63 |
64 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/gas/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gas mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gas mode

27 |
28 | 50 |
51 | 52 | 58 | 59 |

Handles AT&T assembler syntax (more specifically this handles 60 | the GNU Assembler (gas) syntax.) 61 | It takes a single optional configuration parameter: 62 | architecture, which can be one of "ARM", 63 | "ARMv6" or "x86". 64 | Including the parameter adds syntax for the registers and special 65 | directives for the supplied architecture. 66 | 67 |

MIME types defined: text/x-gas

68 |
69 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/jinja2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Jinja2 mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Jinja2 mode

27 |
49 | 54 |
55 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/octave/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Octave mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Octave mode

27 | 28 |
71 | 81 | 82 |

MIME types defined: text/x-octave.

83 |
84 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/perl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Perl mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Perl mode

27 | 28 | 29 |
67 | 68 | 73 | 74 |

MIME types defined: text/x-perl.

75 |
76 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pig Latin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pig Latin mode

27 |
39 | 40 | 47 | 48 |

49 | Simple mode that handles Pig Latin language. 50 |

51 | 52 |

MIME type defined: text/x-pig 53 | (PIG code) 54 | 55 |

56 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/sass/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Sass mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Sass mode

28 |
58 | 64 | 65 |

MIME types defined: text/x-sass.

66 |
67 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/shell/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Shell mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
29 |

Shell mode

30 | 31 | 32 | 56 | 57 | 64 | 65 |

MIME types defined: text/x-sh.

66 |
67 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/shell/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({}, "shell"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("var", 9 | "text [def $var] text"); 10 | MT("varBraces", 11 | "text[def ${var}]text"); 12 | MT("varVar", 13 | "text [def $a$b] text"); 14 | MT("varBracesVarBraces", 15 | "text[def ${a}${b}]text"); 16 | 17 | MT("singleQuotedVar", 18 | "[string 'text $var text']"); 19 | MT("singleQuotedVarBraces", 20 | "[string 'text ${var} text']"); 21 | 22 | MT("doubleQuotedVar", 23 | '[string "text ][def $var][string text"]'); 24 | MT("doubleQuotedVarBraces", 25 | '[string "text][def ${var}][string text"]'); 26 | MT("doubleQuotedVarPunct", 27 | '[string "text ][def $@][string text"]'); 28 | MT("doubleQuotedVarVar", 29 | '[string "][def $a$b][string "]'); 30 | MT("doubleQuotedVarBracesVarBraces", 31 | '[string "][def ${a}${b}][string "]'); 32 | 33 | MT("notAString", 34 | "text\\'text"); 35 | MT("escapes", 36 | "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); 37 | 38 | MT("subshell", 39 | "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); 40 | MT("doubleQuotedSubshell", 41 | "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); 42 | 43 | MT("hashbang", 44 | "[meta #!/bin/bash]"); 45 | MT("comment", 46 | "text [comment # Blurb]"); 47 | 48 | MT("numbers", 49 | "[number 0] [number 1] [number 2]"); 50 | MT("keywords", 51 | "[keyword while] [atom true]; [keyword do]", 52 | " [builtin sleep] [number 3]", 53 | "[keyword done]"); 54 | MT("options", 55 | "[builtin ls] [attribute -l] [attribute --human-readable]"); 56 | MT("operator", 57 | "[def var][operator =]value"); 58 | })(); 59 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/sparql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: SPARQL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

SPARQL mode

28 |
44 | 50 | 51 |

MIME types defined: application/x-sparql-query.

52 | 53 |
54 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/toml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TOML Mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TOML Mode

27 |
64 | 70 |

The TOML Mode

71 |

Created by Forbes Lindesay.

72 |

MIME type defined: text/x-toml.

73 |
74 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/tornado/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tornado template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Tornado template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Tornado template markup.

61 | 62 |

MIME types defined: text/x-tornado

63 |
64 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/xml/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } 7 | 8 | MT("matching", 9 | "[tag&bracket <][tag top][tag&bracket >]", 10 | " text", 11 | " [tag&bracket <][tag inner][tag&bracket />]", 12 | "[tag&bracket ]"); 13 | 14 | MT("nonmatching", 15 | "[tag&bracket <][tag top][tag&bracket >]", 16 | " [tag&bracket <][tag inner][tag&bracket />]", 17 | " [tag&bracket ]"); 18 | 19 | MT("doctype", 20 | "[meta ]", 21 | "[tag&bracket <][tag top][tag&bracket />]"); 22 | 23 | MT("cdata", 24 | "[tag&bracket <][tag top][tag&bracket >]", 25 | " [atom ]", 27 | "[tag&bracket ]"); 28 | 29 | // HTML tests 30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); 31 | 32 | MT("selfclose", 33 | "[tag&bracket <][tag html][tag&bracket >]", 34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", 35 | "[tag&bracket ]"); 36 | 37 | MT("list", 38 | "[tag&bracket <][tag ol][tag&bracket >]", 39 | " [tag&bracket <][tag li][tag&bracket >]one", 40 | " [tag&bracket <][tag li][tag&bracket >]two", 41 | "[tag&bracket ]"); 42 | 43 | MT("valueless", 44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); 45 | 46 | MT("pThenArticle", 47 | "[tag&bracket <][tag p][tag&bracket >]", 48 | " foo", 49 | "[tag&bracket <][tag article][tag&bracket >]bar"); 50 | 51 | })(); 52 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /master/inspinia/js/plugins/dataTables/swf/copy_csv_xls.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/js/plugins/dataTables/swf/copy_csv_xls.swf -------------------------------------------------------------------------------- /master/inspinia/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/inspinia/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf -------------------------------------------------------------------------------- /master/lastupdate.tmp: -------------------------------------------------------------------------------- 1 | {"D:\\Programs\\Golang\\src\\mlp\\master\\controllers":1456146437924001900,"D:\\code\\golang\\src\\mlp\\master\\controllers":1456146437924001900} -------------------------------------------------------------------------------- /master/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "log" 5 | _ "mlp/master/docs" 6 | "mlp/master/models" 7 | _ "mlp/master/routers" 8 | "os" 9 | 10 | "github.com/astaxie/beego" 11 | ) 12 | 13 | func init() { 14 | log.SetFlags(log.Lshortfile | log.LstdFlags) 15 | } 16 | 17 | func main() { 18 | if len(os.Args) > 1 { 19 | switch len(os.Args) { 20 | case 2: 21 | if os.Args[1] == "init" { 22 | models.Install() 23 | } 24 | } 25 | return 26 | } 27 | 28 | docSwitch, err := beego.AppConfig.Bool("EnableDocs") 29 | if err != nil { 30 | log.Fatalln(err) 31 | } 32 | 33 | if docSwitch { 34 | beego.DirectoryIndex = true 35 | beego.StaticDir["/swagger"] = "swagger" 36 | } 37 | 38 | monitorSwitch, err := beego.AppConfig.Bool("EnableMonitor") 39 | if err != nil { 40 | log.Fatalln(err) 41 | } 42 | 43 | if monitorSwitch { 44 | beego.StaticDir["/inspinia"] = "inspinia" 45 | } 46 | 47 | beego.Run() 48 | } 49 | -------------------------------------------------------------------------------- /master/master.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/master.exe -------------------------------------------------------------------------------- /master/models/data_set.go: -------------------------------------------------------------------------------- 1 | // data_set 2 | package models 3 | 4 | import "github.com/astaxie/beego/orm" 5 | 6 | type DataSet struct { 7 | Id int64 `orm:"auto;pk"` 8 | 9 | FilePath string 10 | 11 | // Meta data 12 | Meta string 13 | 14 | // Ext data 15 | Ext string 16 | 17 | // Data line number 18 | LineNumber int64 19 | 20 | // Data set if has header 21 | DropHeader bool 22 | } 23 | 24 | func AddDataSet(filePath string, lineNumber int64, dropHeader bool) (int64, error) { 25 | d := DataSet{ 26 | FilePath: filePath, 27 | LineNumber: lineNumber, 28 | DropHeader: dropHeader, 29 | } 30 | id, err := orm.NewOrm().Insert(&d) 31 | if err != nil { 32 | return -1, err 33 | } 34 | return id, nil 35 | } 36 | 37 | func UpdateDataSet(id int64, meta, ext string) error { 38 | d := DataSet{ 39 | Id: id, 40 | } 41 | o := orm.NewOrm() 42 | err := o.Read(&d) 43 | if err != nil { 44 | return err 45 | } 46 | if len(meta) > 0 { 47 | d.Meta = meta 48 | } 49 | if len(ext) > 0 { 50 | d.Ext = ext 51 | } 52 | _, err = o.Update(&d) 53 | if err != nil { 54 | return err 55 | } 56 | return nil 57 | } 58 | 59 | func QueryDataSet(id int64) (*DataSet, error) { 60 | d := DataSet{ 61 | Id: id, 62 | } 63 | err := orm.NewOrm().Read(&d) 64 | if err != nil { 65 | return nil, err 66 | } 67 | return &d, nil 68 | } 69 | 70 | func QueryDataSetList() ([]*DataSet, error) { 71 | ds := []*DataSet{} 72 | _, err := orm.NewOrm().QueryTable("DataSet").All(&ds) 73 | if err != nil { 74 | return nil, err 75 | } 76 | return ds, nil 77 | } 78 | 79 | func DeleteDataSet(id int64) error { 80 | d := DataSet{ 81 | Id: id, 82 | } 83 | _, err := orm.NewOrm().Delete(&d) 84 | if err != nil { 85 | return err 86 | } 87 | return nil 88 | } 89 | -------------------------------------------------------------------------------- /master/models/init.go: -------------------------------------------------------------------------------- 1 | // init 2 | package models 3 | 4 | import ( 5 | "github.com/astaxie/beego/orm" 6 | _ "github.com/mattn/go-sqlite3" 7 | ) 8 | 9 | func init() { 10 | orm.RegisterDataBase("default", "sqlite3", "../store/db.sqlite3") 11 | orm.RegisterModel( 12 | new(DataSet), 13 | new(ResultSet), 14 | new(Job), 15 | new(JobSlice), 16 | ) 17 | } 18 | 19 | func Install() error { 20 | err := orm.RunSyncdb("default", true, true) 21 | if err != nil { 22 | return err 23 | } 24 | return nil 25 | } 26 | -------------------------------------------------------------------------------- /master/models/models.go: -------------------------------------------------------------------------------- 1 | // object 2 | package models 3 | 4 | type ResultSet struct { 5 | Id int64 `orm:"auto;pk"` 6 | 7 | FilePath string 8 | 9 | // Meta data 10 | Meta string 11 | 12 | // Ext data 13 | Ext string 14 | } 15 | -------------------------------------------------------------------------------- /master/node/id.go: -------------------------------------------------------------------------------- 1 | // id 2 | package node 3 | 4 | import "sync/atomic" 5 | 6 | var ( 7 | nextId int64 = 1 8 | ) 9 | 10 | func AcquireId() int64 { 11 | return atomic.AddInt64(&nextId, 1) - 1 12 | } 13 | -------------------------------------------------------------------------------- /master/node/status.go: -------------------------------------------------------------------------------- 1 | // status 2 | package node 3 | 4 | import ( 5 | "errors" 6 | "sync" 7 | ) 8 | 9 | type NodeStatus struct { 10 | Id int64 11 | Cpu float64 12 | Memory float64 13 | } 14 | 15 | var ( 16 | ErrNodeNotFound error = errors.New("node not found") 17 | 18 | lock sync.Mutex 19 | 20 | nodeMap map[int64]NodeStatus 21 | ) 22 | 23 | func init() { 24 | nodeMap = map[int64]NodeStatus{} 25 | } 26 | 27 | func UpdateNodeStatus(id int64, cpu, memory float64) { 28 | lock.Lock() 29 | defer lock.Unlock() 30 | 31 | nodeMap[id] = NodeStatus{ 32 | Id: id, 33 | Cpu: cpu, 34 | Memory: memory, 35 | } 36 | } 37 | 38 | func QueryNodeStatus(id int64) (*NodeStatus, error) { 39 | lock.Lock() 40 | defer lock.Unlock() 41 | 42 | s, ok := nodeMap[id] 43 | if !ok { 44 | return nil, ErrNodeNotFound 45 | } 46 | return &s, nil 47 | } 48 | 49 | func QueryNodeStatusList() []NodeStatus { 50 | lock.Lock() 51 | defer lock.Unlock() 52 | 53 | ns := []NodeStatus{} 54 | for _, v := range nodeMap { 55 | ns = append(ns, v) 56 | } 57 | return ns 58 | } 59 | -------------------------------------------------------------------------------- /master/routers/router.go: -------------------------------------------------------------------------------- 1 | // @APIVersion 0.0.1 2 | // @Title Mokou Machine Learning Base Platform API 3 | // @Description support base functions for Mokou Machine Learning Platform 4 | // @Contact liuhanlcj1994@gmail.com 5 | // @TermsOfServiceUrl http://reficuls.cn/ 6 | // @License Apache 2.0 7 | // @LicenseUrl http://www.apache.org/licenses/LICENSE-2.0.html 8 | package routers 9 | 10 | import ( 11 | "mlp/master/controllers" 12 | 13 | "github.com/astaxie/beego/context" 14 | 15 | "github.com/astaxie/beego" 16 | ) 17 | 18 | func init() { 19 | filterAccess := func(ctx *context.Context) { 20 | ctx.Output.Header("Access-Control-Allow-Origin", "*") 21 | } 22 | 23 | beego.InsertFilter("/swagger", beego.BeforeExec, filterAccess, true) 24 | 25 | ns := beego.NewNamespace("/v1", 26 | beego.NSNamespace("/data_set", 27 | beego.NSInclude( 28 | &controllers.DataSetController{}, 29 | ), 30 | ), 31 | beego.NSNamespace("/job", 32 | beego.NSInclude( 33 | &controllers.JobController{}, 34 | ), 35 | ), 36 | beego.NSNamespace("/node", 37 | beego.NSInclude( 38 | &controllers.NodeController{}, 39 | ), 40 | ), 41 | beego.NSNamespace("/job_slice", 42 | beego.NSInclude( 43 | &controllers.JobSliceController{}, 44 | ), 45 | ), 46 | beego.NSNamespace("/result_set", 47 | beego.NSInclude( 48 | &controllers.ResultSetController{}, 49 | ), 50 | ), 51 | ) 52 | 53 | beego.AddNamespace(ns) 54 | 55 | } 56 | -------------------------------------------------------------------------------- /master/swagger/css/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */ 2 | html, 3 | body, 4 | div, 5 | span, 6 | applet, 7 | object, 8 | iframe, 9 | h1, 10 | h2, 11 | h3, 12 | h4, 13 | h5, 14 | h6, 15 | p, 16 | blockquote, 17 | pre, 18 | a, 19 | abbr, 20 | acronym, 21 | address, 22 | big, 23 | cite, 24 | code, 25 | del, 26 | dfn, 27 | em, 28 | img, 29 | ins, 30 | kbd, 31 | q, 32 | s, 33 | samp, 34 | small, 35 | strike, 36 | strong, 37 | sub, 38 | sup, 39 | tt, 40 | var, 41 | b, 42 | u, 43 | i, 44 | center, 45 | dl, 46 | dt, 47 | dd, 48 | ol, 49 | ul, 50 | li, 51 | fieldset, 52 | form, 53 | label, 54 | legend, 55 | table, 56 | caption, 57 | tbody, 58 | tfoot, 59 | thead, 60 | tr, 61 | th, 62 | td, 63 | article, 64 | aside, 65 | canvas, 66 | details, 67 | embed, 68 | figure, 69 | figcaption, 70 | footer, 71 | header, 72 | hgroup, 73 | menu, 74 | nav, 75 | output, 76 | ruby, 77 | section, 78 | summary, 79 | time, 80 | mark, 81 | audio, 82 | video { 83 | margin: 0; 84 | padding: 0; 85 | border: 0; 86 | font-size: 100%; 87 | font: inherit; 88 | vertical-align: baseline; 89 | } 90 | /* HTML5 display-role reset for older browsers */ 91 | article, 92 | aside, 93 | details, 94 | figcaption, 95 | figure, 96 | footer, 97 | header, 98 | hgroup, 99 | menu, 100 | nav, 101 | section { 102 | display: block; 103 | } 104 | body { 105 | line-height: 1; 106 | } 107 | ol, 108 | ul { 109 | list-style: none; 110 | } 111 | blockquote, 112 | q { 113 | quotes: none; 114 | } 115 | blockquote:before, 116 | blockquote:after, 117 | q:before, 118 | q:after { 119 | content: ''; 120 | content: none; 121 | } 122 | table { 123 | border-collapse: collapse; 124 | border-spacing: 0; 125 | } 126 | -------------------------------------------------------------------------------- /master/swagger/images/explorer_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/swagger/images/explorer_icons.png -------------------------------------------------------------------------------- /master/swagger/images/logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/swagger/images/logo_small.png -------------------------------------------------------------------------------- /master/swagger/images/pet_store_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/swagger/images/pet_store_api.png -------------------------------------------------------------------------------- /master/swagger/images/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/swagger/images/throbber.gif -------------------------------------------------------------------------------- /master/swagger/images/wordnik_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/master/swagger/images/wordnik_api.png -------------------------------------------------------------------------------- /master/swagger/o2c.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nginx/conf/fastcgi.conf: -------------------------------------------------------------------------------- 1 | 2 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 3 | fastcgi_param QUERY_STRING $query_string; 4 | fastcgi_param REQUEST_METHOD $request_method; 5 | fastcgi_param CONTENT_TYPE $content_type; 6 | fastcgi_param CONTENT_LENGTH $content_length; 7 | 8 | fastcgi_param SCRIPT_NAME $fastcgi_script_name; 9 | fastcgi_param REQUEST_URI $request_uri; 10 | fastcgi_param DOCUMENT_URI $document_uri; 11 | fastcgi_param DOCUMENT_ROOT $document_root; 12 | fastcgi_param SERVER_PROTOCOL $server_protocol; 13 | fastcgi_param HTTPS $https if_not_empty; 14 | 15 | fastcgi_param GATEWAY_INTERFACE CGI/1.1; 16 | fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 17 | 18 | fastcgi_param REMOTE_ADDR $remote_addr; 19 | fastcgi_param REMOTE_PORT $remote_port; 20 | fastcgi_param SERVER_ADDR $server_addr; 21 | fastcgi_param SERVER_PORT $server_port; 22 | fastcgi_param SERVER_NAME $server_name; 23 | 24 | # PHP only, required if PHP was built with --enable-force-cgi-redirect 25 | fastcgi_param REDIRECT_STATUS 200; 26 | -------------------------------------------------------------------------------- /nginx/conf/fastcgi_params: -------------------------------------------------------------------------------- 1 | 2 | fastcgi_param QUERY_STRING $query_string; 3 | fastcgi_param REQUEST_METHOD $request_method; 4 | fastcgi_param CONTENT_TYPE $content_type; 5 | fastcgi_param CONTENT_LENGTH $content_length; 6 | 7 | fastcgi_param SCRIPT_NAME $fastcgi_script_name; 8 | fastcgi_param REQUEST_URI $request_uri; 9 | fastcgi_param DOCUMENT_URI $document_uri; 10 | fastcgi_param DOCUMENT_ROOT $document_root; 11 | fastcgi_param SERVER_PROTOCOL $server_protocol; 12 | fastcgi_param HTTPS $https if_not_empty; 13 | 14 | fastcgi_param GATEWAY_INTERFACE CGI/1.1; 15 | fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 16 | 17 | fastcgi_param REMOTE_ADDR $remote_addr; 18 | fastcgi_param REMOTE_PORT $remote_port; 19 | fastcgi_param SERVER_ADDR $server_addr; 20 | fastcgi_param SERVER_PORT $server_port; 21 | fastcgi_param SERVER_NAME $server_name; 22 | 23 | # PHP only, required if PHP was built with --enable-force-cgi-redirect 24 | fastcgi_param REDIRECT_STATUS 200; 25 | -------------------------------------------------------------------------------- /nginx/conf/localhost.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDBDCCAewCCQCEZkFOE6Zx1zANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB 3 | VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 4 | cyBQdHkgTHRkMB4XDTE2MDMxMzE0MjEzNVoXDTE3MDMxMzE0MjEzNVowRTELMAkG 5 | A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0 6 | IFdpZGdpdHMgUHR5IEx0ZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB 7 | AMTUaYNcg+lDwG/umSF6ZL6Kvhpc1zqlpm4s5lD0mtQZkMFHoh3mHzVTB1d9AkWf 8 | CSAQfMXkzHGj8ycQmNXK4QG7ysGPfodwq0xLC50TwEjqauWl981mBGTrdTVYc3kD 9 | dwVdqSVM5U/RenmzXNpK02HHSQIAZIvH5WEuqCRR1/gMKM5FsnEzkNcOiTfwDd3n 10 | 6CaxFZSl7mHSC6bZi2aWQE0trLEjFAd4fRxxkngbAUBQuOciuZRwEtQ6n3xErTRq 11 | foUzpBzM3Jqx8ke+cdjjm3w5W+jOUhaK9c0wotsM49h5eNQCHPkidjRsEqhwWcsW 12 | cVuFsqInE/e+7NC2CZ6LFqkCASMwDQYJKoZIhvcNAQEFBQADggEBAIjYr0aoFebq 13 | h/S1BEo9enr4+HXGqB4I3DjDfZ8SCudHQ9/d/8xy2rgTz4sf/v8aoEo9WKKxtHl6 14 | r/oK7gTmRBPdZXO4Dju9tMqhnlL0fpcJgJTE+kZ1gBBMLzGHrFk6rnCXBocrXone 15 | D5cFjxudamxbEbZxgABp4eESFPTab9xO1XMdw1fJHNNdyHBBwsn6KgpWsaJNtD84 16 | 21scR7eXB/lPgONawppknWR8FN99/IKKVK/MjQZcZGMvbrAKhSBU7N1adFDzkfGz 17 | GzItuedBDpO2Vis3jSv9d4wrU+Sh6LbU62FUzHSmTHxCP4vmayo/HCPVnMV8b2pS 18 | cDXgoZHMuwE= 19 | -----END CERTIFICATE----- 20 | -------------------------------------------------------------------------------- /nginx/conf/localhost.key.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxNRpg1yD6UPAb+6ZIXpkvoq+GlzXOqWmbizmUPSa1BmQwUeiHeYfNVMHV30CRZ8JIBB8xeTMcaPzJxCY1crhAbvKwY9+h3CrTEsLnRPASOpq5aX3zWYEZOt1NVhzeQN3BV2pJUzlT9F6ebNc2krTYcdJAgBki8flYS6oJFHX+AwozkWycTOQ1w6JN/AN3efoJrEVlKXuYdILptmLZpZATS2ssSMUB3h9HHGSeBsBQFC45yK5lHAS1DqffEStNGp+hTOkHMzcmrHyR75x2OObfDlb6M5SFor1zTCi2wzj2Hl41AIc+SJ2NGwSqHBZyxZxW4WyoicT977s0LYJnosWqQ== Calvin@NEO 2 | -------------------------------------------------------------------------------- /nginx/conf/nginx - 副本 (2).conf: -------------------------------------------------------------------------------- 1 | # nginx.conf 2 | worker_processes 1; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | 8 | http { 9 | include mime.types; 10 | default_type application/octet-stream; 11 | 12 | sendfile on; 13 | keepalive_timeout 65; 14 | 15 | server { 16 | listen 8888; 17 | server_name localhost; 18 | location / { 19 | proxy_pass http://127.0.0.1:8090; 20 | proxy_set_header Host $host; 21 | } 22 | } 23 | 24 | upstream backend { 25 | server localhost:8090; 26 | } 27 | 28 | server { 29 | listen 443; 30 | ssl on; 31 | ssl_certificate localhost.crt; 32 | ssl_certificate_key localhost.key.unsecure; 33 | 34 | server_name localhost; 35 | 36 | location / { 37 | proxy_pass http://backend; 38 | proxy_redirect off; 39 | proxy_set_header Host $http_host; 40 | proxy_set_header X-Real-IP $remote_addr; 41 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 42 | # proxy_read_timeout 3600s; 43 | # proxy_send_timeout 3600s; 44 | } 45 | 46 | location /static/ { 47 | proxy_pass http://backend; 48 | proxy_set_header X-Real-IP $remote_addr; 49 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 50 | proxy_set_header Host $http_host; 51 | proxy_set_header X-NginX-Proxy true; 52 | proxy_set_header Upgrade $http_upgrade; 53 | proxy_set_header Connection "Upgrade"; 54 | proxy_redirect off; 55 | # proxy_read_timeout 3600s; 56 | # proxy_send_timeout 3600s; 57 | break; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /nginx/conf/nginx - 副本.conf: -------------------------------------------------------------------------------- 1 | # nginx.conf 2 | worker_processes 1; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | 8 | http { 9 | include mime.types; 10 | default_type application/octet-stream; 11 | 12 | sendfile on; 13 | keepalive_timeout 65; 14 | 15 | server { 16 | listen 8888; 17 | server_name localhost; 18 | location / { 19 | proxy_pass http://127.0.0.1:8090; 20 | proxy_set_header Host $host; 21 | } 22 | # rewrite ^ https://localhost:8090$request_uri? permanent; 23 | } 24 | 25 | server { 26 | listen 443; 27 | ssl on; 28 | ssl_certificate localhost.crt; 29 | ssl_certificate_key localhost.key.unsecure; 30 | 31 | server_name localhost; 32 | location / { 33 | # rewrite (.*) https://127.0.0.1:8090/$1 permanent; 34 | # proxy_pass http://127.0.0.1:8090; 35 | # proxy_set_header Host $host; 36 | 37 | # uwsgi_pass 127.0.0.1:8090; 38 | # include uwsgi_params; 39 | 40 | proxy_pass http://localhost:8090/; 41 | proxy_redirect off; 42 | proxy_set_header Host $http_host; 43 | proxy_set_header X-Real-IP $remote_addr; 44 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 45 | } 46 | # location /static/ { 47 | # rewrite https http permanent; 48 | # } 49 | } 50 | } -------------------------------------------------------------------------------- /nginx/conf/nginx.conf: -------------------------------------------------------------------------------- 1 | # nginx.conf 2 | worker_processes 1; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | 8 | http { 9 | include mime.types; 10 | default_type application/octet-stream; 11 | 12 | sendfile on; 13 | keepalive_timeout 65; 14 | 15 | server { 16 | listen 8888; 17 | server_name localhost; 18 | location / { 19 | proxy_pass http://127.0.0.1:8090; 20 | proxy_set_header Host $host; 21 | } 22 | } 23 | 24 | server { 25 | listen 4433; 26 | ssl on; 27 | ssl_certificate localhost.crt; 28 | ssl_certificate_key localhost.key.unsecure; 29 | 30 | server_name localhost; 31 | 32 | location / { 33 | proxy_pass http://127.0.0.1:8090/; 34 | proxy_redirect off; 35 | proxy_set_header Host $http_host; 36 | proxy_set_header X-Real-IP $remote_addr; 37 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 38 | } 39 | 40 | } 41 | } -------------------------------------------------------------------------------- /nginx/conf/scgi_params: -------------------------------------------------------------------------------- 1 | 2 | scgi_param REQUEST_METHOD $request_method; 3 | scgi_param REQUEST_URI $request_uri; 4 | scgi_param QUERY_STRING $query_string; 5 | scgi_param CONTENT_TYPE $content_type; 6 | 7 | scgi_param DOCUMENT_URI $document_uri; 8 | scgi_param DOCUMENT_ROOT $document_root; 9 | scgi_param SCGI 1; 10 | scgi_param SERVER_PROTOCOL $server_protocol; 11 | scgi_param HTTPS $https if_not_empty; 12 | 13 | scgi_param REMOTE_ADDR $remote_addr; 14 | scgi_param REMOTE_PORT $remote_port; 15 | scgi_param SERVER_PORT $server_port; 16 | scgi_param SERVER_NAME $server_name; 17 | -------------------------------------------------------------------------------- /nginx/conf/uwsgi_params: -------------------------------------------------------------------------------- 1 | 2 | uwsgi_param QUERY_STRING $query_string; 3 | uwsgi_param REQUEST_METHOD $request_method; 4 | uwsgi_param CONTENT_TYPE $content_type; 5 | uwsgi_param CONTENT_LENGTH $content_length; 6 | 7 | uwsgi_param REQUEST_URI $request_uri; 8 | uwsgi_param PATH_INFO $document_uri; 9 | uwsgi_param DOCUMENT_ROOT $document_root; 10 | uwsgi_param SERVER_PROTOCOL $server_protocol; 11 | uwsgi_param HTTPS $https if_not_empty; 12 | 13 | uwsgi_param REMOTE_ADDR $remote_addr; 14 | uwsgi_param REMOTE_PORT $remote_port; 15 | uwsgi_param SERVER_PORT $server_port; 16 | uwsgi_param SERVER_NAME $server_name; 17 | -------------------------------------------------------------------------------- /nginx/contrib/README: -------------------------------------------------------------------------------- 1 | 2 | geo2nginx.pl by Andrei Nigmatulin 3 | 4 | The perl script to convert CSV geoip database ( free download 5 | at http://www.maxmind.com/app/geoip_country ) to format, suitable 6 | for use by the ngx_http_geo_module. 7 | 8 | 9 | unicode2nginx by Maxim Dounin 10 | 11 | The perl script to convert unicode mappings ( available 12 | at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx 13 | configuration file format. 14 | Two generated full maps for windows-1251 and koi8-r. 15 | 16 | 17 | vim by Evan Miller 18 | 19 | Syntax highlighting of nginx configuration for vim, to be 20 | placed into ~/.vim/. 21 | 22 | -------------------------------------------------------------------------------- /nginx/contrib/geo2nginx.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # (c) Andrei Nigmatulin, 2005 4 | # 5 | # this script provided "as is", without any warranties. use it at your own risk. 6 | # 7 | # special thanx to Andrew Sitnikov for perl port 8 | # 9 | # this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country) 10 | # to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx) 11 | # 12 | # for example, line with ip range 13 | # 14 | # "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation" 15 | # 16 | # will be converted to four subnetworks: 17 | # 18 | # 62.16.68.0/22 RU; 19 | # 62.16.72.0/21 RU; 20 | # 62.16.80.0/20 RU; 21 | # 62.16.96.0/19 RU; 22 | 23 | 24 | use warnings; 25 | use strict; 26 | 27 | while( ){ 28 | if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){ 29 | print_subnets($1, $2, $3); 30 | } 31 | } 32 | 33 | sub print_subnets { 34 | my ($a1, $a2, $c) = @_; 35 | my $l; 36 | while ($a1 <= $a2) { 37 | for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){}; 38 | print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n"; 39 | $a1 += (1 << $l); 40 | } 41 | } 42 | 43 | sub long2ip { 44 | my $ip = shift; 45 | 46 | my $str = 0; 47 | 48 | $str = ($ip & 255); 49 | 50 | $ip >>= 8; 51 | $str = ($ip & 255).".$str"; 52 | 53 | $ip >>= 8; 54 | $str = ($ip & 255).".$str"; 55 | 56 | $ip >>= 8; 57 | $str = ($ip & 255).".$str"; 58 | } 59 | -------------------------------------------------------------------------------- /nginx/contrib/unicode2nginx/unicode-to-nginx.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Convert unicode mappings to nginx configuration file format. 4 | 5 | # You may find useful mappings in various places, including 6 | # unicode.org official site: 7 | # 8 | # http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT 9 | # http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT 10 | 11 | # Needs perl 5.6 or later. 12 | 13 | # Written by Maxim Dounin, mdounin@rambler-co.ru 14 | 15 | ############################################################################### 16 | 17 | require 5.006; 18 | 19 | while (<>) { 20 | # Skip comments and empty lines 21 | 22 | next if /^#/; 23 | next if /^\s*$/; 24 | chomp; 25 | 26 | # Convert mappings 27 | 28 | if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) { 29 | # Mapping "#" 30 | my $cs_code = $1; 31 | my $un_code = $2; 32 | my $un_name = $3; 33 | 34 | # Produce UTF-8 sequence from character code; 35 | 36 | my $un_utf8 = join('', map { sprintf("%02X", $_) } unpack("C*", pack("U", hex($un_code)))); 37 | 38 | print " $cs_code $un_utf8 ; $un_name\n"; 39 | 40 | } else { 41 | warn "Unrecognized line: '$_'"; 42 | } 43 | } 44 | 45 | ############################################################################### 46 | -------------------------------------------------------------------------------- /nginx/contrib/vim/ftdetect/nginx.vim: -------------------------------------------------------------------------------- 1 | au BufRead,BufNewFile *.nginx set ft=nginx 2 | au BufRead,BufNewFile */etc/nginx/* set ft=nginx 3 | au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx 4 | au BufRead,BufNewFile nginx.conf set ft=nginx 5 | -------------------------------------------------------------------------------- /nginx/contrib/vim/indent/nginx.vim: -------------------------------------------------------------------------------- 1 | if exists("b:did_indent") 2 | finish 3 | endif 4 | let b:did_indent = 1 5 | 6 | setlocal indentexpr= 7 | 8 | " cindent actually works for nginx' simple file structure 9 | setlocal cindent 10 | " Just make sure that the comments are not reset as defs would be. 11 | setlocal cinkeys-=0# 12 | -------------------------------------------------------------------------------- /nginx/nginx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/nginx/nginx.exe -------------------------------------------------------------------------------- /node/alive.go: -------------------------------------------------------------------------------- 1 | // alive 2 | package main 3 | 4 | import ( 5 | "log" 6 | "mlp/utility" 7 | "time" 8 | ) 9 | 10 | const ( 11 | aliveSleepTime = 5 12 | ) 13 | 14 | func Aliver(id int64) { 15 | for { 16 | freeMemory, err := utility.GetFreePhysicalMemory() 17 | if err != nil { 18 | time.Sleep(time.Second * aliveSleepTime) 19 | continue 20 | } 21 | 22 | cpuUsed, err := utility.GetCpuUsedRate() 23 | if err != nil { 24 | time.Sleep(time.Second * aliveSleepTime) 25 | continue 26 | } 27 | 28 | err = mapi.Alive(id, cpuUsed, float64(freeMemory)) 29 | if err != nil { 30 | log.Println("Report alive failed :", err) 31 | } 32 | 33 | time.Sleep(time.Second * aliveSleepTime) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /node/config.ini: -------------------------------------------------------------------------------- 1 | hostname = 127.0.0.1:8190 -------------------------------------------------------------------------------- /node/main.go: -------------------------------------------------------------------------------- 1 | // main 2 | package main 3 | 4 | import ( 5 | "log" 6 | "mlp/node/api" 7 | "mlp/utility" 8 | "time" 9 | 10 | "github.com/astaxie/beego/config" 11 | ) 12 | 13 | const ( 14 | acquireJobSleepTime = 8 15 | ) 16 | 17 | var ( 18 | mapi *api.MasterApi 19 | cfg config.ConfigContainer 20 | ) 21 | 22 | func init() { 23 | log.SetFlags(log.Lshortfile | log.LstdFlags) 24 | 25 | var err error 26 | 27 | cfg, err = config.NewConfig("ini", "config.ini") 28 | if err != nil { 29 | log.Fatalln(err) 30 | } 31 | 32 | hostname := cfg.String("hostname") 33 | 34 | mapi = api.New(hostname) 35 | } 36 | 37 | func main() { 38 | id, err := mapi.AcquireId() 39 | if err != nil { 40 | log.Fatalln(err) 41 | } 42 | 43 | log.Println("Node ID :", id) 44 | 45 | go Aliver(id) 46 | 47 | for { 48 | can, err := CheckCanNewWork() 49 | if err != nil { 50 | log.Println(err) 51 | time.Sleep(time.Second * acquireJobSleepTime) 52 | continue 53 | } 54 | 55 | if can { 56 | js, err := mapi.AcquireJobSlice() 57 | if err != nil { 58 | if err != api.ErrNoMoreData { 59 | log.Println(err) 60 | } 61 | time.Sleep(time.Second * acquireJobSleepTime) 62 | continue 63 | } 64 | 65 | go NewWork(js) 66 | } 67 | 68 | time.Sleep(time.Second * acquireJobSleepTime) 69 | } 70 | } 71 | 72 | func CheckCanNewWork() (bool, error) { 73 | freeMemory, err := utility.GetFreePhysicalMemory() 74 | if err != nil { 75 | return false, err 76 | } 77 | 78 | cpuUsed, err := utility.GetCpuUsedRate() 79 | if err != nil { 80 | return false, err 81 | } 82 | 83 | log.Println("Free Memory :", freeMemory, "CPU :", cpuUsed) 84 | 85 | if freeMemory <= 1024*512 { 86 | return false, nil 87 | } 88 | 89 | if cpuUsed >= 90 { 90 | return false, nil 91 | } 92 | 93 | return true, nil 94 | } 95 | -------------------------------------------------------------------------------- /node/node.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/node/node.exe -------------------------------------------------------------------------------- /node/work.go: -------------------------------------------------------------------------------- 1 | // work 2 | package main 3 | 4 | import ( 5 | "encoding/json" 6 | "io/ioutil" 7 | "log" 8 | "mlp/master/models" 9 | "os/exec" 10 | ) 11 | 12 | func NewWork(js *models.JobSlice) { 13 | filename, err := mapi.DownloadDataSetSplit(js.Job.UsedDataSet.Id, js.Job.SplitNumber, js.Index) 14 | if err != nil { 15 | log.Println(err) 16 | return 17 | } 18 | 19 | startParam := map[string]string{ 20 | "FilePath": filename, 21 | "Ext": js.Job.UsedDataSet.Ext, 22 | "Meta": js.Job.UsedDataSet.Meta, 23 | } 24 | 25 | jd, err := json.Marshal(startParam) 26 | if err != nil { 27 | log.Println(err) 28 | return 29 | } 30 | 31 | err = ioutil.WriteFile("../tmp/"+filename+".json", jd, 0) 32 | if err != nil { 33 | log.Println(err) 34 | return 35 | } 36 | 37 | od, err := exec.Command("python.exe", "../py/plugin1.py", filename+".json").Output() 38 | if err != nil { 39 | log.Println(err) 40 | return 41 | } 42 | 43 | outputJson := map[string]string{} 44 | 45 | err = json.Unmarshal(od, outputJson) 46 | if err != nil { 47 | log.Println(err) 48 | return 49 | } 50 | 51 | resultSetPath, ok := outputJson["resultSetFilePath"] 52 | if !ok { 53 | log.Println("can not find result file path key") 54 | return 55 | } 56 | 57 | err = mapi.UploadResultSetSlice(js.Id, "../py/"+resultSetPath) 58 | if !ok { 59 | log.Println("can not upload result :", err) 60 | return 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/dataprovider/dataprovider/__init__.py -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/static/css/main.css: -------------------------------------------------------------------------------- 1 | input.ng-invalid.ng-dirty{ 2 | background-color: yellow; 3 | } 4 | a,a:link,a:visited{ 5 | text-decoration: none; 6 | color: #4da2ef; 7 | -webkit-transition: color linear 0.2s; 8 | -moz-transition: color linear 0.2s; 9 | transition: color linear 0.2s; 10 | } 11 | a:hover,a:focus { 12 | text-decoration: none; 13 | color: #E54646; 14 | } 15 | .date { 16 | margin: 0 0.1em; 17 | padding: 0.3em 1em; 18 | color:#eeeeee; 19 | background: #999999; 20 | font-size: 12px; 21 | } 22 | a.author,a.author:link,a.author:visited{ 23 | text-decoration: none; 24 | background: #5DB2FF; 25 | color: #eeeeee; 26 | font-weight:bold; 27 | margin: 0 0.1em; 28 | padding: 0.3em 1em; 29 | font-size: 12px; 30 | -webkit-transition: color linear 0.2s; 31 | -moz-transition: color linear 0.2s; 32 | transition: color linear 0.2s; 33 | } 34 | a.author:hover,a.author:focus { 35 | background: #5DB2FF; 36 | text-decoration: none; 37 | color: #E54646; 38 | margin: 0 0.1em; 39 | padding: 0.3em 1em; 40 | } 41 | .footer{ 42 | position: fixed; 43 | height:20px; 44 | bottom:3px; 45 | width:100%; 46 | clear:both; 47 | right: 0; 48 | left: 0; 49 | z-index: 1030; 50 | -webkit-transform: translate3d(0, 0, 0); 51 | -o-transform: translate3d(0, 0, 0); 52 | transform: translate3d(0, 0, 0); 53 | } 54 | .npnm{ 55 | padding:0 0 0 0; 56 | margin:0 0 0 0 57 | } 58 | -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/dataprovider/dataprovider/static/js/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/templates/data.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |

Sample Dataset At localhost:8091

17 |

Iris

18 | 19 | 20 | 21 | {% for col in head %} 22 | 25 | {% endfor %} 26 | 27 | 28 | 29 | {% for row in data %} 30 | 31 | {% for col in row %} 32 | 33 | {% endfor %} 34 | 35 | {% endfor %} 36 | 37 | 38 |
23 | {{col}} 24 |
{{col}}
39 | 40 | -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/urls.py: -------------------------------------------------------------------------------- 1 | """dataprovider URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/dev/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Add an import: from blog import urls as blog_urls 14 | 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) 15 | """ 16 | from django.conf.urls import patterns, include, url 17 | from django.conf import settings 18 | from django.contrib import admin 19 | admin.autodiscover() 20 | 21 | 22 | urlpatterns = patterns('', 23 | url(r'^admin/', include(admin.site.urls)) 24 | ,url(r'^static/(?P.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}) 25 | ,url(r'^$', 'dataprovider.views.index') 26 | ,url(r'^index/(\w+)/$', 'dataprovider.views.index',name = 'index') 27 | ,url(r'^index/$', 'dataprovider.views.index',name = 'index') 28 | ) 29 | -------------------------------------------------------------------------------- /py/dataprovider/dataprovider/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for dataprovider project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dataprovider.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /py/dataprovider/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/dataprovider/db.sqlite3 -------------------------------------------------------------------------------- /py/dataprovider/manage.cmd: -------------------------------------------------------------------------------- 1 | :start 2 | @echo input one command 3 | @set /p op= 4 | @python manage.py %op% 5 | @goto start -------------------------------------------------------------------------------- /py/dataprovider/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dataprovider.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /py/dataprovider/shell.cmd: -------------------------------------------------------------------------------- 1 | @echo "press any key to enter shell" 2 | @pause 3 | @python manage.py shell 4 | -------------------------------------------------------------------------------- /py/dataprovider/start-server.cmd: -------------------------------------------------------------------------------- 1 | :start 2 | @python manage.py runserver 8091 3 | @echo server start at port 8091 4 | @echo restart serever(Y/N)? 5 | @set /p op= 6 | @if op == "Y" goto start 7 | @if op == "y" goto start 8 | -------------------------------------------------------------------------------- /py/datasets/1.txt: -------------------------------------------------------------------------------- 1 | a,b,c 2 | 1,1,2 3 | 1,2,3 4 | 2,2,2 5 | 4,7,9 6 | -------------------------------------------------------------------------------- /py/datasets/__init__.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | 3 | __all__=['datamgr','localdata','monads','parse'] -------------------------------------------------------------------------------- /py/datasets/datamgr.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | 3 | # import MySQLdb 4 | 5 | # conn= MySQLdb.connect( 6 | # host='localhost', 7 | # port = 3306, 8 | # user='root', 9 | # passwd='80868086', 10 | # db ='mlplatform', 11 | # ) 12 | # cur = conn.cursor() 13 | 14 | # #创建数据表 15 | # #cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))") 16 | 17 | # #插入一条数据 18 | # #cur.execute("insert into student values('2','Tom','3 year 2 class','9')") 19 | 20 | 21 | # #修改查询条件的数据 22 | # #cur.execute("update student set class='3 year 1 class' where name = 'Tom'") 23 | 24 | # #删除查询条件的数据 25 | # #cur.execute("delete from student where age='9'") 26 | 27 | # cur.close() 28 | # conn.commit() 29 | # conn.close() -------------------------------------------------------------------------------- /py/datasets/parse.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from optparse import OptionParser 6 | import operator 7 | import string 8 | import ast 9 | 10 | def parsestr(somethingstring, elselambda=[]): 11 | x = str(somethingstring) 12 | if len(x) == 0: 13 | return None 14 | if x[0] in list(string.digits)+['-','+','.']: 15 | try: 16 | return int(x) 17 | except ValueError: 18 | try: 19 | return float(x) 20 | except ValueError: 21 | return x 22 | elif x.lower() in ['true','false']: 23 | return True if x.lower() == 'true' else False 24 | #if not return util now ... 25 | for lmda in elselambda: 26 | lr = lmda(x) 27 | if lr != None: 28 | return lr 29 | #ok i can only return a string 30 | return x 31 | 32 | def extendboolean(x): 33 | if x.lower() in ['y', 'yes', 't']: 34 | return True 35 | elif x.lower() in ['n', 'no', 'f']: 36 | return False 37 | 38 | if __name__ == '__main__': 39 | print list(string.digits)+['-','+','.'] -------------------------------------------------------------------------------- /py/datasets/saved.csv: -------------------------------------------------------------------------------- 1 | a,b,c 2 | 1,1,2 3 | 1,2,3 4 | 2,2,2 5 | 4,7,9 6 | -------------------------------------------------------------------------------- /py/graphic/__init__.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | 3 | __all__ = ['tree','classfication','datagraph','network','performance'] -------------------------------------------------------------------------------- /py/graphic/classfication.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import numpy as np 3 | import math 4 | import pylab as pl 5 | from mpl_toolkits.mplot3d import Axes3D 6 | import sys 7 | from collections import defaultdict, namedtuple 8 | import itertools 9 | import matplotlib.cm as cm 10 | import matplotlib.mlab as mlab 11 | import matplotlib.pyplot as plt 12 | 13 | import datagraph 14 | -------------------------------------------------------------------------------- /py/graphic/performance.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import numpy as np 3 | import math 4 | import pylab as pl 5 | from mpl_toolkits.mplot3d import Axes3D 6 | import sys 7 | from collections import defaultdict, namedtuple 8 | import itertools 9 | import matplotlib.cm as cm 10 | import matplotlib.mlab as mlab 11 | import matplotlib.pyplot as plt 12 | 13 | def draw_contour(fun,dim1,dim2,tofilename): 14 | #DIM (scale_id,from,to,step) 15 | fig = pl.figure() 16 | X,Y = np.meshgrid(np.arange(dim1[0], dim1[1], dim1[2]),np.arange(dim2[0], dim2[1], dim2[2])) 17 | Z = np.vectorize(fun)(X,Y) 18 | pl.contourf(X,Y,Z) 19 | pl.colorbar() 20 | if tofilename != "": 21 | pl.savefig(tofilename) 22 | else: 23 | pl.show() 24 | draw_contour(lambda x,y:math.sin(x+y),(-2,2,0.05),(-1,1,0.05),"D:/myfig") 25 | 26 | 27 | -------------------------------------------------------------------------------- /py/install/MySQL_python-1.2.5-cp27-none-win32.whl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/install/MySQL_python-1.2.5-cp27-none-win32.whl -------------------------------------------------------------------------------- /py/install/first.cmd: -------------------------------------------------------------------------------- 1 | @echo "press any key to init www" 2 | @pause 3 | python ../www/manage.py makemigrations 4 | python ../www/manage.py migrate 5 | python ../www/manage.py flush 6 | python ../www/manage.py createsuperuser 7 | @pause -------------------------------------------------------------------------------- /py/install/migrate.cmd: -------------------------------------------------------------------------------- 1 | @echo "press any key to migrate www" 2 | @pause 3 | python ../www/manage.py makemigrations www 4 | python ../www/manage.py migrate www 5 | 6 | @pause -------------------------------------------------------------------------------- /py/install/mysql_alter.sql: -------------------------------------------------------------------------------- 1 | create database if not exists mlplatform default charset utf8 COLLATE utf8_general_ci; 2 | use mlplatform; 3 | alter table dataset( 4 | id int(4) not null primary key auto_increment 5 | ,name varchar(20) not null 6 | ,type int(1) not DEFAULT 0 --0 local 1 online 7 | ,path varchar(255) --filepath local url online 8 | ,filetype varchar(10) 9 | ,head varchar(1023) 10 | ,attr_delim varchar(3) 11 | ,record_delim varchar(3) 12 | ,location varchar(255) 13 | ,search varchar(255) 14 | ) 15 | alter table model( 16 | id int(4) not null primary key auto_increment 17 | ,name varchar(20) not null 18 | ,path varchar(255) 19 | ,modeltype varchar(10) 20 | ) 21 | -------------------------------------------------------------------------------- /py/install/mysql_init.cmd: -------------------------------------------------------------------------------- 1 | mysql -uroot -p80868086 < mysql_migrate.sql 2 | @pause -------------------------------------------------------------------------------- /py/install/mysql_init.sql: -------------------------------------------------------------------------------- 1 | create database if not exists mlplatform default charset utf8 COLLATE utf8_general_ci; 2 | use mlplatform; 3 | create table dataset( 4 | id int(4) not null primary key auto_increment 5 | ,name varchar(20) not null 6 | -- ,datasettype int(4) not null default 0 7 | ,path varchar(255) 8 | ,filetype varchar(10) 9 | ,head varchar(1023) 10 | ,attr_delim varchar(3) 11 | ,record_delim varchar(3) 12 | -- ,location varchar(255) 13 | -- ,search varchar(255) 14 | -- ,url varchar(255) 15 | ); 16 | create table onlinedataset( 17 | id int(4) not null primary key auto_increment 18 | ,name varchar(20) not null 19 | ,datasettype int(4) not null default 0 20 | ,location varchar(255) 21 | ,search varchar(255) 22 | ,url varchar(255) 23 | ); 24 | create table model( 25 | id int(4) not null primary key auto_increment 26 | ,name varchar(20) not null 27 | ,path varchar(255) 28 | ,modeltype varchar(10) 29 | ) 30 | 31 | -------------------------------------------------------------------------------- /py/install/mysql_migrate.sql: -------------------------------------------------------------------------------- 1 | create database if not exists mlplatform default charset utf8 COLLATE utf8_general_ci; -------------------------------------------------------------------------------- /py/install/new_website.cmd: -------------------------------------------------------------------------------- 1 | python "%DJANGO_BIN%\django-admin.py" startproject dataprovider -------------------------------------------------------------------------------- /py/ml_models/__init__.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | 3 | __all__ = ['assessment','boosting','bp','clustering','crf','decision_tree','em','fpgrowth','hmm','knn','lasso_logistic','logistic' 4 | ,'modelbase','naive_bayes','pca','perceptron','svm' 5 | ] -------------------------------------------------------------------------------- /py/ml_models/boosting.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import sys 9 | from collections import defaultdict, namedtuple 10 | import itertools 11 | 12 | -------------------------------------------------------------------------------- /py/ml_models/bp.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | import math 6 | from modelbase import * 7 | import datasets 8 | from datasets.localdata import * 9 | from datasets.monads import * 10 | import operator 11 | import json 12 | import pickle 13 | import sklearn 14 | 15 | 16 | if __name__ == '__main__': 17 | pass 18 | # print repr(f) -------------------------------------------------------------------------------- /py/ml_models/clustering.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import sys 9 | from collections import defaultdict, namedtuple 10 | import itertools 11 | 12 | 13 | -------------------------------------------------------------------------------- /py/ml_models/crf.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import sys 9 | from collections import defaultdict, namedtuple 10 | import itertools 11 | -------------------------------------------------------------------------------- /py/ml_models/dat_cls.txt: -------------------------------------------------------------------------------- 1 | water,foot,size,isfish 2 | 1,1,1,yes 3 | 1,0,1,no 4 | 0,1,1,no 5 | 0,0,0,no 6 | 0,0,1,no 7 | 1,0,0,no 8 | 1,1,0,yes 9 | -------------------------------------------------------------------------------- /py/ml_models/dat_cls_test.txt: -------------------------------------------------------------------------------- 1 | water,foot,size 2 | 1,1,1 3 | 1,0,1 4 | 0,1,1 5 | 0,0,0 6 | 0,0,1 7 | 1,0,0 8 | 1,1,0 9 | -------------------------------------------------------------------------------- /py/ml_models/em.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import pylab as pl 9 | import sys 10 | from collections import defaultdict, namedtuple 11 | import itertools 12 | 13 | -------------------------------------------------------------------------------- /py/ml_models/hmm.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import pylab as pl 9 | import sys 10 | from collections import defaultdict, namedtuple 11 | import itertools 12 | 13 | # a = 1 14 | # for i in xrange(200000000): 15 | # a = a * i 16 | # print "aaa" 17 | 18 | # if __name__ == '__main__': 19 | # id, modeltype, name = '1','2','3' 20 | # print "{{ 'id':{}, 'modeltype':{}, 'name':{} }}".format(id, modeltype, name) -------------------------------------------------------------------------------- /py/ml_models/lasso_logistic.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import pylab as pl 9 | import sys 10 | from collections import defaultdict, namedtuple 11 | import itertools 12 | 13 | 14 | -------------------------------------------------------------------------------- /py/ml_models/model_def.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/ml_models/model_def.py -------------------------------------------------------------------------------- /py/ml_models/models.json: -------------------------------------------------------------------------------- 1 | { 2 | 'MATRIX_ADD':{ 3 | 'ndataset': 2 4 | ,'distributed': True 5 | ,'nontraining': True 6 | }, 7 | 'MATRIX_DOT':{ 8 | 'ndataset': 2 9 | ,'distributed': True 10 | ,'nontraining': True 11 | }, 12 | 'MATRIX_INV':{ 13 | 'ndataset': 1 14 | ,'distributed': True 15 | ,'nontraining': True 16 | }, 17 | 'MATRIX_PCA':{ 18 | 'ndataset': 2 19 | ,'distributed': True 20 | ,'nontraining': False 21 | }, 22 | 23 | 24 | 'EM':{ 25 | 'ndataset': 1 26 | ,'distributed': True 27 | ,'nontraining': False 28 | }, 29 | 'SVM':{ 30 | 'ndataset': 1 31 | ,'distributed': True 32 | ,'nontraining': False 33 | }, 34 | 'NAIVE_BAYES':{ 35 | 'ndataset': 1 36 | ,'distributed': True 37 | ,'nontraining': False 38 | }, 39 | 'K_MEANS':{ 40 | 'ndataset': 1 41 | ,'distributed': True 42 | ,'nontraining': False 43 | }, 44 | 'KNN':{ 45 | 'ndataset': 1 46 | ,'distributed': True 47 | ,'nontraining': False 48 | }, 49 | 50 | 'DECISION_TREE':{ 51 | 'ndataset': 1 52 | ,'distributed': False 53 | ,'nontraining': False 54 | }, 55 | 'ADABOOST':{ 56 | 'ndataset': 1 57 | ,'distributed': False 58 | ,'nontraining': False 59 | }, 60 | 'LOGISTIC':{ 61 | 'ndataset': 1 62 | ,'distributed': False 63 | ,'nontraining': False 64 | }, 65 | 'CRF':{ 66 | 'ndataset': 1 67 | ,'distributed': False 68 | ,'nontraining': False 69 | }, 70 | 'FP_GROWTH':{ 71 | 'ndataset': 1 72 | ,'distributed': False 73 | ,'nontraining': False 74 | }, 75 | } -------------------------------------------------------------------------------- /py/ml_models/pca.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | from modelbase import * 6 | import numpy as np 7 | import math 8 | import pylab as pl 9 | import sys 10 | from collections import defaultdict, namedtuple 11 | import itertools 12 | 13 | 14 | if __name__ == '__main__': 15 | print range(0,2) + range(3,10) 16 | print [x.upper() for x in ['aaaa','bbbb']] -------------------------------------------------------------------------------- /py/ml_models/perceptron.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | import sys 3 | sys.path.append('..') 4 | 5 | import numpy as np 6 | import math 7 | import pylab as pl 8 | import sys 9 | from collections import defaultdict, namedtuple 10 | import itertools 11 | -------------------------------------------------------------------------------- /py/test.py: -------------------------------------------------------------------------------- 1 | #coding: utf8 2 | # ss = lambda f, arr: arr if len(arr) < 2 else [max(arr)] + f(ss, arr[0: arr.index(max(arr))] + arr[arr.index(max(arr))+1 :]) 3 | # print ss(ss, [4,3,6,7,9,2,8]) 4 | 5 | ssort = lambda arr: arr if len(arr) < 2 else [max(arr)] + ssort(arr[0: arr.index(max(arr))] + arr[arr.index(max(arr))+1 :]) 6 | print ssort([4,3,6,7,9,2,8]) -------------------------------------------------------------------------------- /py/www/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/db.sqlite3 -------------------------------------------------------------------------------- /py/www/manage.cmd: -------------------------------------------------------------------------------- 1 | :start 2 | @echo input one command 3 | @set /p op= 4 | @python manage.py %op% 5 | @goto start -------------------------------------------------------------------------------- /py/www/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /py/www/shell.cmd: -------------------------------------------------------------------------------- 1 | @echo "press any key to enter shell" 2 | @pause 3 | @python manage.py shell 4 | from www.models import Dataset 5 | Dataset.objects.create(name="test",filetype="STR",path="/e/",head="1,2,3") -------------------------------------------------------------------------------- /py/www/start-server.cmd: -------------------------------------------------------------------------------- 1 | :start 2 | @python manage.py runserver 8090 3 | @echo server start at port 8090 4 | @echo restart serever(Y/N)? 5 | @set /p op= 6 | @if %op% == "y" goto start 7 | -------------------------------------------------------------------------------- /py/www/upload/dataset/20160228233152_406.txt: -------------------------------------------------------------------------------- 1 | water,foot,size,isfish 2 | 1,1,1,yes 3 | 1,0,1,no 4 | 0,1,1,no 5 | 0,0,0,no 6 | 0,0,1,no 7 | 1,0,0,no 8 | 1,1,0,yes 9 | -------------------------------------------------------------------------------- /py/www/upload/dataset/20160228233203_726.txt: -------------------------------------------------------------------------------- 1 | water,foot,size 2 | 1,1,1 3 | 1,0,1 4 | 0,1,1 5 | 0,0,0 6 | 0,0,1 7 | 1,0,0 8 | 1,1,0 9 | -------------------------------------------------------------------------------- /py/www/upload/dataset/20160228233215_452.csv: -------------------------------------------------------------------------------- 1 | 5.1,3.5,1.4,0.2 2 | 4.9,3.0,1.4,0.2 3 | 4.7,3.2,1.3,0.2 4 | 4.6,3.1,1.5,0.2 5 | 5.0,3.6,1.4,0.2 6 | 5.4,3.9,1.7,0.4 7 | 4.6,3.4,1.4,0.3 8 | 5.0,3.4,1.5,0.2 9 | 4.4,2.9,1.4,0.2 10 | 4.9,3.1,1.5,0.1 11 | 5.4,3.7,1.5,0.2 12 | 4.8,3.4,1.6,0.2 13 | 4.8,3.0,1.4,0.1 14 | 4.3,3.0,1.1,0.1 15 | 5.8,4.0,1.2,0.2 16 | 5.7,4.4,1.5,0.4 17 | 5.4,3.9,1.3,0.4 18 | 5.1,3.5,1.4,0.3 19 | 5.7,3.8,1.7,0.3 20 | 5.1,3.8,1.5,0.3 21 | 5.4,3.4,1.7,0.2 22 | 5.1,3.7,1.5,0.4 23 | 4.6,3.6,1.0,0.2 24 | 5.1,3.3,1.7,0.5 25 | 4.8,3.4,1.9,0.2 26 | 5.0,3.0,1.6,0.2 27 | 5.0,3.4,1.6,0.4 28 | 5.2,3.5,1.5,0.2 29 | 5.2,3.4,1.4,0.2 30 | 4.7,3.2,1.6,0.2 31 | 4.8,3.1,1.6,0.2 32 | 5.4,3.4,1.5,0.4 33 | 5.2,4.1,1.5,0.1 34 | 5.5,4.2,1.4,0.2 35 | 4.9,3.1,1.5,0.1 36 | 5.0,3.2,1.2,0.2 37 | 5.5,3.5,1.3,0.2 38 | 4.9,3.1,1.5,0.1 39 | 4.4,3.0,1.3,0.2 40 | 5.1,3.4,1.5,0.2 41 | 5.0,3.5,1.3,0.3 42 | 4.5,2.3,1.3,0.3 43 | 4.4,3.2,1.3,0.2 44 | 5.0,3.5,1.6,0.6 45 | 5.1,3.8,1.9,0.4 46 | 4.8,3.0,1.4,0.3 47 | 5.1,3.8,1.6,0.2 48 | 4.6,3.2,1.4,0.2 49 | 5.3,3.7,1.5,0.2 50 | 5.0,3.3,1.4,0.2 51 | 7.0,3.2,4.7,1.4 52 | 6.4,3.2,4.5,1.5 53 | 6.9,3.1,4.9,1.5 54 | 5.5,2.3,4.0,1.3 55 | 6.5,2.8,4.6,1.5 56 | 5.7,2.8,4.5,1.3 57 | 6.3,3.3,4.7,1.6 58 | 4.9,2.4,3.3,1.0 59 | 6.6,2.9,4.6,1.3 60 | 5.2,2.7,3.9,1.4 61 | 5.0,2.0,3.5,1.0 62 | 5.9,3.0,4.2,1.5 63 | 6.0,2.2,4.0,1.0 64 | 6.1,2.9,4.7,1.4 65 | 5.6,2.9,3.6,1.3 66 | 6.7,3.1,4.4,1.4 67 | 5.6,3.0,4.5,1.5 68 | 5.8,2.7,4.1,1.0 69 | 6.2,2.2,4.5,1.5 70 | 5.6,2.5,3.9,1.1 71 | 5.9,3.2,4.8,1.8 72 | 6.1,2.8,4.0,1.3 73 | 6.3,2.5,4.9,1.5 74 | 6.1,2.8,4.7,1.2 75 | 6.4,2.9,4.3,1.3 76 | 6.6,3.0,4.4,1.4 77 | 6.8,2.8,4.8,1.4 78 | 6.7,3.0,5.0,1.7 79 | 6.0,2.9,4.5,1.5 80 | 5.7,2.6,3.5,1.0 81 | 5.5,2.4,3.8,1.1 82 | 5.5,2.4,3.7,1.0 83 | 5.8,2.7,3.9,1.2 84 | 6.0,2.7,5.1,1.6 85 | 5.4,3.0,4.5,1.5 86 | 6.0,3.4,4.5,1.6 87 | 6.7,3.1,4.7,1.5 88 | 6.3,2.3,4.4,1.3 89 | 5.6,3.0,4.1,1.3 90 | 5.5,2.5,4.0,1.3 91 | 5.5,2.6,4.4,1.2 92 | 6.1,3.0,4.6,1.4 93 | 5.8,2.6,4.0,1.2 94 | 5.0,2.3,3.3,1.0 95 | 5.6,2.7,4.2,1.3 96 | 5.7,3.0,4.2,1.2 97 | 5.7,2.9,4.2,1.3 98 | 6.2,2.9,4.3,1.3 99 | 5.1,2.5,3.0,1.1 100 | 5.7,2.8,4.1,1.3 -------------------------------------------------------------------------------- /py/www/www/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/__init__.py -------------------------------------------------------------------------------- /py/www/www/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from www.models import Dataset 3 | from www.models import MLModel 4 | from www.models import OnlineDataset 5 | from www.models import TrainingTask 6 | 7 | admin.site.register(Dataset) 8 | admin.site.register(MLModel) 9 | admin.site.register(OnlineDataset) 10 | admin.site.register(TrainingTask) -------------------------------------------------------------------------------- /py/www/www/middlewares.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.http import HttpResponsePermanentRedirect 3 | 4 | class SecureRequiredMiddleware(object): 5 | def __init__(self): 6 | self.paths = getattr(settings, 'SECURE_REQUIRED_PATHS') 7 | self.enabled = self.paths and getattr(settings, 'HTTPS_SUPPORT') 8 | 9 | def process_request(self, request): 10 | if self.enabled and not request.is_secure(): 11 | for path in self.paths: 12 | if request.get_full_path().startswith(path): 13 | request_url = request.build_absolute_uri(request.get_full_path()) 14 | secure_url = request_url.replace('http://', 'https://') 15 | return HttpResponsePermanentRedirect(secure_url) 16 | return None -------------------------------------------------------------------------------- /py/www/www/migrations/0002_auto_20151209_0057.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0001_initial'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='mlmodel', 16 | name='modelstatus', 17 | field=models.CharField(choices=[(b'INITED', b'INITED'), (b'TRAINING', b'TRAINING'), (b'TRAINED', b'TRAINED')], max_length=32), 18 | ), 19 | migrations.AlterField( 20 | model_name='mlmodel', 21 | name='modeltype', 22 | field=models.CharField(max_length=32), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /py/www/www/migrations/0003_mlmodel_classfeatureindex.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0002_auto_20151209_0057'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='mlmodel', 16 | name='classfeatureindex', 17 | field=models.IntegerField(default=-1), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /py/www/www/migrations/0004_auto_20151211_2305.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0003_mlmodel_classfeatureindex'), 11 | ] 12 | 13 | operations = [ 14 | migrations.RemoveField( 15 | model_name='trainingtask', 16 | name='datasetindex', 17 | ), 18 | migrations.RemoveField( 19 | model_name='trainingtask', 20 | name='datasetprototype', 21 | ), 22 | migrations.AddField( 23 | model_name='mlmodel', 24 | name='datasetindex', 25 | field=models.IntegerField(default=0), 26 | preserve_default=False, 27 | ), 28 | migrations.AddField( 29 | model_name='mlmodel', 30 | name='datasetprototype', 31 | field=models.CharField(choices=[(b'LOCAL', b'LOCAL'), (b'ONLINE', b'ONLINE')], default='LOCAL', max_length=16), 32 | preserve_default=False, 33 | ), 34 | ] 35 | -------------------------------------------------------------------------------- /py/www/www/migrations/0005_auto_20151217_0015.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0004_auto_20151211_2305'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='mlmodel', 16 | name='loss', 17 | field=models.CharField(choices=[(b'QUAD', b'QUAD'), (b'BIN', b'BIN'), (b'ABS', b'ABS'), (b'LOG', b'LOG')], default=b'QUAD', max_length=20), 18 | ), 19 | migrations.AddField( 20 | model_name='mlmodel', 21 | name='negative', 22 | field=models.FloatField(default=-0.5), 23 | ), 24 | migrations.AddField( 25 | model_name='mlmodel', 26 | name='positive', 27 | field=models.FloatField(default=1.0), 28 | ), 29 | migrations.AlterField( 30 | model_name='mlmodel', 31 | name='classfeatureindex', 32 | field=models.IntegerField(), 33 | ), 34 | ] 35 | -------------------------------------------------------------------------------- /py/www/www/migrations/0006_auto_20160214_1807.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0005_auto_20151217_0015'), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='ApplyTask', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ], 19 | options={ 20 | 'db_table': 'applyingtask', 21 | }, 22 | ), 23 | migrations.AddField( 24 | model_name='mlmodel', 25 | name='model_path', 26 | field=models.CharField(default='', max_length=255), 27 | preserve_default=False, 28 | ), 29 | ] 30 | -------------------------------------------------------------------------------- /py/www/www/migrations/0007_auto_20160228_2201.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('www', '0006_auto_20160214_1807'), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='AssessTask', 16 | fields=[ 17 | ('id', models.AutoField(primary_key=True, serialize=False)), 18 | ], 19 | options={ 20 | 'db_table': 'assesstask', 21 | }, 22 | ), 23 | migrations.AlterField( 24 | model_name='applytask', 25 | name='id', 26 | field=models.AutoField(primary_key=True, serialize=False), 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /py/www/www/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/migrations/__init__.py -------------------------------------------------------------------------------- /py/www/www/scaffold.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | import sys,os 3 | sys.path.append('../') 4 | 5 | if __name__ == '__main__': 6 | print dir('../') -------------------------------------------------------------------------------- /py/www/www/static/css/main.css: -------------------------------------------------------------------------------- 1 | input.ng-invalid.ng-dirty{ 2 | background-color: yellow; 3 | } 4 | a,a:link,a:visited{ 5 | text-decoration: none; 6 | color: #4da2ef; 7 | -webkit-transition: color linear 0.2s; 8 | -moz-transition: color linear 0.2s; 9 | transition: color linear 0.2s; 10 | } 11 | a:hover,a:focus { 12 | text-decoration: none; 13 | color: #E54646; 14 | } 15 | .date { 16 | margin: 0 0.1em; 17 | padding: 0.3em 1em; 18 | color:#eeeeee; 19 | background: #999999; 20 | font-size: 12px; 21 | } 22 | a.author,a.author:link,a.author:visited{ 23 | text-decoration: none; 24 | background: #5DB2FF; 25 | color: #eeeeee; 26 | font-weight:bold; 27 | margin: 0 0.1em; 28 | padding: 0.3em 1em; 29 | font-size: 12px; 30 | -webkit-transition: color linear 0.2s; 31 | -moz-transition: color linear 0.2s; 32 | transition: color linear 0.2s; 33 | } 34 | a.author:hover,a.author:focus { 35 | background: #5DB2FF; 36 | text-decoration: none; 37 | color: #E54646; 38 | margin: 0 0.1em; 39 | padding: 0.3em 1em; 40 | } 41 | .footer{ 42 | position: fixed; 43 | height:20px; 44 | bottom:3px; 45 | width:100%; 46 | clear:both; 47 | right: 0; 48 | left: 0; 49 | z-index: 1030; 50 | -webkit-transform: translate3d(0, 0, 0); 51 | -o-transform: translate3d(0, 0, 0); 52 | transform: translate3d(0, 0, 0); 53 | } 54 | .npnm{ 55 | padding:0 0 0 0; 56 | margin:0 0 0 0 57 | } 58 | -------------------------------------------------------------------------------- /py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/static/js/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /py/www/www/storage.py: -------------------------------------------------------------------------------- 1 | #coding:utf8 2 | from django.core.files.storage import FileSystemStorage 3 | from django.http import HttpResponse 4 | from django.conf import settings 5 | 6 | from www.utils import random_file_name 7 | 8 | class FileStorage(FileSystemStorage): 9 | def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL): 10 | #初始化 11 | super(FileStorage, self).__init__(location, base_url) 12 | 13 | #重写 _save方法 14 | def _save(self, name, content, subclass): 15 | #调用父类方法 16 | return super(FileStorage, self)._save(random_file_name(name), content) -------------------------------------------------------------------------------- /py/www/www/templates/302.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /py/www/www/templates/404.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 |

404

3 |

{{title}}

4 | 5 | 6 | {% include 'footer.html' %} 7 | 8 | -------------------------------------------------------------------------------- /py/www/www/templates/as_right.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
IndexValue
{% templatetag openvariable %} item['name'] {% templatetag closevariable %}{% templatetag openvariable %} item['value'] {% templatetag closevariable %}
14 | -------------------------------------------------------------------------------- /py/www/www/templates/dataset.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | 3 |
4 |
5 | 11 | 12 |
13 |

Dataset List

14 | {% include 'ds_list.html' %} 15 |
16 |
17 |

Online Dataset List

18 | {% include 'olds_list.html' %} 19 |
20 | 21 |
22 |

New Local Dataset

23 | {% include 'ds_upload.html' %} 24 |
25 |
26 |

New Online Dataset

27 | {% include 'olds_upload.html' %} 28 |
29 |
30 |
31 |

Dataset View

32 |

Online Dataset View

33 | 39 |
40 | 41 |
42 |
43 | 44 |
45 |
46 |
47 | 48 | 51 | {% include 'footer.html' %} -------------------------------------------------------------------------------- /py/www/www/templates/ds_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% if ds_select %} 6 | 7 | {% endif %} 8 | 9 | 10 | 11 | 12 | {% for dataset in datasets %} 13 | 14 | {% if ds_select %} 15 | 16 | {% endif %} 17 | 21 | {% if ds_operation %} 22 | {% if ds_delete %} 23 | 24 | {% endif %} 25 | 26 | 27 | {% endif %} 28 | 29 | {% endfor%} 30 | 31 | 32 |
NameTypeUser
{{dataset.name}}{{dataset.filetype}}{{dataset.user}}DELETE
33 | -------------------------------------------------------------------------------- /py/www/www/templates/ds_view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% for col in dataset.head %} 6 | 7 | {% endfor %} 8 | 9 | 10 | 11 | {% for item in dataset.items %} 12 | 13 | {% for col in item %} 14 | 15 | {% endfor%} 16 | 17 | {% endfor %} 18 | 19 |
{{ col }}
{{ col }}
20 | 27 | -------------------------------------------------------------------------------- /py/www/www/templates/error.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 |

ERROR

3 |
4 |

{{title}}

5 |
6 |

{{description}}

7 | click to get back 8 | {% include 'footer.html' %} -------------------------------------------------------------------------------- /py/www/www/templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /py/www/www/templates/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Easy Machine Learning Platform 19 | 38 |
-------------------------------------------------------------------------------- /py/www/www/templates/index.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | 3 | {% include 'ur_login.html' %} 4 | 5 | {% include 'footer.html' %} -------------------------------------------------------------------------------- /py/www/www/templates/md_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if md_select %} 5 | 8 | {% endif %} 9 | 10 | {% if operation != 'apply'%} {% endif %} 11 | 12 | 13 | 14 | 15 | {% for model in models %} 16 | 17 | {% if md_select %} 18 | 19 | {% endif %} 20 | 21 | 22 | 23 | {% if operation != 'apply'%}{% endif %} 24 | 25 | {% if md_operation %} 26 | {% if md_delete %} 27 | 28 | {% endif %} 29 | {% if md_train %} 30 | 31 | {% endif %} 32 | {% endif %} 33 | 34 | {% endfor%} 35 | 36 | 37 |
6 | 7 | NameModel Type Create Time DatasetStatus
{{model.name}}{{model.modeltype}}{{model.createtime}}{{model.datasetprototype}}:{{model.datasetindex}}{{model.modelstatus}}DELETETRAIN
38 | 39 | -------------------------------------------------------------------------------- /py/www/www/templates/md_trainingprocess.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if select %} 5 | 8 | {% endif %} 9 | 10 | 11 | 12 | 13 | {% for task in tasks %} 14 | 15 | {% if select %} 16 | 17 | {% endif %} 18 | 19 | 20 | 21 | 22 | 23 | {% if operation %} 24 | 25 | 26 | 27 | {% endif %} 28 | 29 | {% endfor%} 30 | 31 | 32 |
6 | 7 | Task IDModel TypeModel IDCreate TimeStatus
{{task.id}}{{task.modelprototype}}{{task.modelindex}}{{task.createtime}}{{task.status}}STARTPAUSEABORT
33 | 34 | -------------------------------------------------------------------------------- /py/www/www/templates/md_view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 15 | 21 | -------------------------------------------------------------------------------- /py/www/www/templates/models/decision_tree.partial.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/templates/models/decision_tree.partial.html -------------------------------------------------------------------------------- /py/www/www/templates/models/matrix.partial.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CalvinNeo/EasyMLPlatform/a11b61e1544641294d9a7c0e5458931cd3a325ec/py/www/www/templates/models/matrix.partial.html -------------------------------------------------------------------------------- /py/www/www/templates/node_manager.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | 3 | 5 | 6 | {% include 'footer.html' %} -------------------------------------------------------------------------------- /py/www/www/templates/olds_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% if ds_select %} 5 | 8 | {% endif %} 9 | 10 | {% if operation != 'apply' and operation != 'models' %} {% endif %} 11 | 12 | 13 | 14 | {% for dataset in oldatasets %} 15 | 16 | {% if ds_select %} 17 | 18 | {% endif %} 19 | 23 | 24 | 25 | 26 | 27 | {% if operation != 'apply' and operation != 'models' %}{% endif %} 28 | {% if ds_operation %} 29 | {% if ds_delete %} 30 | 31 | {% endif %} 32 | 33 | 34 | {% endif %} 35 | 36 | {% endfor%} 37 | 38 | 39 |
6 | 7 | NameURLLocationUserMetaRenew
{{dataset.name}}{{dataset.url}}{{dataset.location}}{{dataset.user}}{{dataset.metatype}}{{dataset.renewstrategy}}DELETELOCALIZE
40 | -------------------------------------------------------------------------------- /py/www/www/templates/olds_view.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | {% for col in dataset.head %} 10 | 11 | {% endfor %} 12 | 13 | 14 | 15 | {% for item in dataset.items %} 16 | 17 | {% for col in item %} 18 | 19 | {% endfor%} 20 | 21 | {% endfor %} 22 | 23 |
{{ col }}
{{ col }}
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /py/www/www/templates/success.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 |

SUCCESS

3 |
4 |

{{title}}

5 |
6 | 7 | click to get back 8 | {% include 'footer.html' %} -------------------------------------------------------------------------------- /py/www/www/templates/trainmodel.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | 3 |
4 |
5 | 11 |
12 |

New Model

13 |
14 | {% include 'md_new.html' %} 15 |
16 |
17 |
18 |

Model List

19 |
20 | {% include 'md_list.html' %} 21 |
22 |
23 |
24 |
25 |

Task List

26 | {% include 'md_trainingprocess.html' %} 27 |
28 |
29 | 30 | 33 | {% include 'footer.html' %} 34 |