├── LICENSE ├── README.md ├── create-views.sql ├── domains ├── BanditMulticlass.domain ├── BanditMulticlass │ ├── banditron │ │ ├── metadata │ │ └── run │ ├── random │ │ ├── metadata │ │ └── run │ ├── sample │ │ ├── metadata │ │ └── raw │ └── utils │ │ ├── metadata │ │ └── run ├── BinaryClassification.domain ├── CollaborativeFiltering.domain ├── CollaborativeFiltering │ ├── sample │ │ ├── metadata │ │ ├── test │ │ └── train │ └── utils │ │ ├── Utils.scala │ │ ├── collaborativefiltering.jar │ │ ├── compile │ │ ├── metadata │ │ └── run ├── ConstituencyParsingTest.domain ├── ConstituencyParsingTest │ ├── sample │ │ ├── metadata │ │ └── raw │ └── utils │ │ ├── BerkeleyParser.jar │ │ ├── Makefile │ │ ├── evalb.c │ │ ├── general.rb │ │ ├── metadata │ │ ├── new.prm │ │ └── run ├── DependencyParsingTest.domain ├── DependencyParsingTest │ ├── sample │ │ ├── metadata │ │ └── raw │ └── utils │ │ ├── eval.pl │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── DocumentClassification.domain ├── DocumentClassification │ ├── general.rb │ ├── sample │ │ ├── metadata │ │ └── raw │ │ │ ├── cars │ │ │ ├── doc1 │ │ │ ├── doc2 │ │ │ ├── doc3 │ │ │ ├── doc4 │ │ │ └── doc5 │ │ │ └── trees │ │ │ ├── doc11 │ │ │ ├── doc12 │ │ │ ├── doc13 │ │ │ ├── doc14 │ │ │ └── doc15 │ └── utils │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── MulticlassClassification.domain ├── OnlineLearningMulticlass.domain ├── OnlineLearningMulticlass │ ├── general.rb │ ├── sample │ │ ├── metadata │ │ └── raw │ └── utils │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── Regression.domain ├── SemiSupervisedMulticlass.domain ├── SemiSupervisedMulticlass │ └── sample │ │ ├── metadata │ │ └── raw ├── SequenceTagging.domain ├── SequenceTagging │ ├── eval │ │ ├── conlleval.pl │ │ ├── general.rb │ │ ├── metadata │ │ └── run │ ├── general.rb │ ├── sample │ │ ├── metadata │ │ ├── test │ │ └── train │ └── utils │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── WordSegmentation.domain ├── WordSegmentation │ ├── general.rb │ ├── sample │ │ ├── metadata │ │ └── raw │ └── utils │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── core │ ├── README │ ├── general.rb │ ├── interactive-learning │ │ ├── general.rb │ │ └── main │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ ├── performing │ │ ├── general.rb │ │ ├── main │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ │ └── processor │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ └── supervised-learning │ │ ├── general.rb │ │ ├── main │ │ ├── general.rb │ │ ├── metadata │ │ └── run │ │ └── processor │ │ ├── general.rb │ │ ├── metadata │ │ └── run ├── flat │ ├── README │ ├── binary-sample │ │ ├── metadata │ │ └── raw │ ├── evaluators │ │ ├── continuous │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ │ ├── discrete │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ │ └── general.rb │ ├── general.rb │ ├── meta-learning │ │ ├── binary-to-multi │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ │ ├── general.rb │ │ ├── one-vs-all │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ │ └── tune-hyperparameter │ │ │ ├── general.rb │ │ │ ├── metadata │ │ │ └── run │ ├── multiclass-sample │ │ ├── metadata │ │ └── raw │ ├── processors │ │ ├── binary │ │ │ ├── metadata │ │ │ └── run │ │ ├── general.rb │ │ ├── multiclass │ │ │ ├── metadata │ │ │ └── run │ │ ├── regression │ │ │ ├── metadata │ │ │ └── run │ │ └── svmlight-format.rb │ └── regression-sample │ │ ├── metadata │ │ └── raw ├── general.rb └── index ├── init-db ├── loop ├── mlcomp-tool ├── packages └── rails_sql_views-0.7.0.gem ├── rc ├── run-command-server ├── run-ec2-manager ├── run-master ├── run-stats ├── run-web-server ├── run-web-server-static ├── seed-db ├── show-log ├── site ├── README ├── Rakefile ├── app │ ├── controllers │ │ ├── application.rb │ │ ├── datasets_controller.rb │ │ ├── faq_controller.rb │ │ ├── general_display_controller.rb │ │ ├── my_stuff_controller.rb │ │ ├── programs_controller.rb │ │ ├── runs_controller.rb │ │ ├── static_controller.rb │ │ ├── table_controller.rb │ │ ├── users_controller.rb │ │ └── workers_controller.rb │ ├── helpers │ │ ├── application_helper.rb │ │ ├── datasets_helper.rb │ │ ├── faq_helper.rb │ │ ├── general_display_helper.rb │ │ ├── my_stuff_helper.rb │ │ ├── programs_helper.rb │ │ ├── runs_helper.rb │ │ ├── table_helper.rb │ │ └── users_helper.rb │ ├── models │ │ ├── announcement.rb │ │ ├── announcement_emailer.rb │ │ ├── dataset.rb │ │ ├── emailer.rb │ │ ├── program.rb │ │ ├── run.rb │ │ ├── run_dataset.rb │ │ ├── run_program.rb │ │ ├── run_result.rb │ │ ├── run_status.rb │ │ ├── user.rb │ │ └── worker.rb │ └── views │ │ ├── announcement_emailer │ │ └── mass_announcement.html.erb │ │ ├── datasets │ │ ├── create_bundle.rjs │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ ├── replace.html.erb │ │ └── show.html.erb │ │ ├── emailer │ │ ├── general_email.html.erb │ │ ├── reset_notification.html.erb │ │ └── user_comment.html.erb │ │ ├── faq │ │ ├── _faq_edit_question.html.erb │ │ ├── _question.html.erb │ │ ├── _question_list.html.erb │ │ ├── domains.html.erb │ │ ├── index.html.erb │ │ └── reductions.html.erb │ │ ├── general_display │ │ ├── _comment_form.html.erb │ │ ├── _dataset_format_selector.html.erb │ │ ├── _login.html.erb │ │ ├── execution_tasks.html.erb │ │ ├── front_page.html.erb │ │ ├── help.html.erb │ │ └── index.html.erb │ │ ├── layouts │ │ ├── application.html.erb │ │ ├── base_layout_new.html.erb │ │ ├── main_with_sidebar_new.html.erb │ │ ├── popup_layout.html.erb │ │ ├── single_column_layout.html.erb │ │ └── three_column.html.erb │ │ ├── my_stuff │ │ └── index.html.erb │ │ ├── programs │ │ ├── create_bundle.rjs │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ ├── replace.html.erb │ │ ├── show.html.erb │ │ └── view_file.html.erb │ │ ├── runs │ │ ├── _create_run_success.html.erb │ │ ├── _dset_choose.html.erb │ │ ├── _prg_choose.html.erb │ │ ├── _run_spec.html.erb │ │ ├── _run_status_box.html.erb │ │ ├── _runs_comparison.html.erb │ │ ├── _runs_table.html.erb │ │ ├── compare.html.erb │ │ ├── create_bundle.rjs │ │ ├── create_popup.html.erb │ │ ├── create_several_runs.html.erb │ │ ├── creation_outcomes.rjs │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ ├── initiate_runs.html.erb │ │ ├── list_by_dataset.html.erb │ │ ├── new.html.erb │ │ └── show.html.erb │ │ ├── shared │ │ ├── _comment.html.erb │ │ ├── _comments.html.erb │ │ ├── _default_sidebar.html.erb │ │ ├── _faq_mini_box.html.erb │ │ └── _twitter_news.html.erb │ │ ├── static │ │ ├── help │ │ │ ├── about_us.html │ │ │ ├── program_info.html │ │ │ ├── quickstart.html │ │ │ ├── simple-dataset │ │ │ │ ├── metadata │ │ │ │ └── raw │ │ │ ├── simple-naive-bayes │ │ │ │ ├── metadata │ │ │ │ └── run │ │ │ └── worker_info.html │ │ └── index.html │ │ ├── table │ │ ├── _many_table_show.html.erb │ │ ├── _table_container.html.erb │ │ ├── _table_data.html.erb │ │ ├── new_table_play.html.erb │ │ └── query.rjs │ │ ├── users │ │ ├── _new_user_form.html.erb │ │ ├── announcements.html.erb │ │ ├── edit.html.erb │ │ ├── forgot.html.erb │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ ├── reset.html.erb │ │ ├── show.html.erb │ │ ├── unsubscribe.html.erb │ │ └── unsubscribe_success.html.erb │ │ └── workers │ │ └── index.html.erb ├── config │ ├── boot.rb │ ├── database.yml │ ├── environment.rb │ ├── environments │ │ ├── development.rb │ │ ├── production.rb │ │ └── test.rb │ ├── initializers │ │ ├── inflections.rb │ │ └── mime_types.rb │ ├── mlcomp_site_params.yml.example │ └── routes.rb ├── db │ ├── migrate │ │ ├── 001_create_users.rb │ │ ├── 002_create_datasets.rb │ │ ├── 003_remove_location_from_dataset.rb │ │ ├── 004_create_programs.rb │ │ ├── 005_create_runs.rb │ │ ├── 006_fix_references_datasets_programs.rb │ │ ├── 007_add_fullname_to_user.rb │ │ ├── 008_fix_password_length.rb │ │ ├── 009_add_admin_user.rb │ │ ├── 010_backend_field_modifications.rb │ │ ├── 011_create_run_statuses.rb │ │ ├── 012_create_run_results.rb │ │ ├── 013_revamp_runs.rb │ │ ├── 014_remove_main_program_id.rb │ │ ├── 015_add_info_spec.rb │ │ ├── 016_remove_split_present.rb │ │ ├── 017_add_size_and_dataset_status.rb │ │ ├── 018_dataset_processor_feedback.rb │ │ ├── 019_string_to_text.rb │ │ ├── 020_types.rb │ │ ├── 021_sort_fields.rb │ │ ├── 022_zero_sort_fields.rb │ │ ├── 023_run_program_dataset_fields.rb │ │ ├── 20090105033521_create_workers.rb │ │ ├── 20090105070115_update_worker_fields.rb │ │ ├── 20090105205109_run_worker.rb │ │ ├── 20090105210700_worker_commands.rb │ │ ├── 20090106002345_int_to_float.rb │ │ ├── 20090106190056_main_id.rb │ │ ├── 20090820012133_add_more_fields_to_users.rb │ │ ├── 20090822055710_program_datasets_valid.rb │ │ ├── 20090822061510_program_datasets_proper.rb │ │ ├── 20090924022336_program_ishelper.rb │ │ ├── 20090924053536_worker_version.rb │ │ ├── 20090928173733_adminfield.rb │ │ ├── 20090928181459_program_processed.rb │ │ ├── 20090928183336_rename_admin.rb │ │ ├── 20090930175026_run_performance.rb │ │ ├── 20090930181626_run_error.rb │ │ ├── 20090930185921_program_dataset_info_from_runs.rb │ │ ├── 20091001054541_vresult_rename.rb │ │ ├── 20091002061520_user_times.rb │ │ ├── 20091002103334_outer_join.rb │ │ ├── 20091029042756_program_dataset_state.rb │ │ ├── 20091105013404_add_user_reset_password_field.rb │ │ ├── 20091113002227_add_comment_system.rb │ │ ├── 20091118102208_worker_last_run_time.rb │ │ ├── 20091223171853_add_more_prg_dset_info.rb │ │ ├── 20100121065917_add_all_table_indexes.rb │ │ ├── 20100726194400_user_email_subscription.rb │ │ ├── 20100726233641_create_announcements.rb │ │ └── 20101007183241_add_rating.rb │ └── schema.rb ├── doc │ └── README_FOR_APP ├── lib │ ├── FAQ.yml │ ├── lib_autoloader.rb │ ├── mlcomp │ │ ├── CommandServer.rb │ │ ├── Constants.rb │ │ ├── DatasetInfo.rb │ │ ├── Domain.rb │ │ ├── EC2Manager.rb │ │ ├── Exceptions.rb │ │ ├── FieldSpec.rb │ │ ├── GenericRunInfo.rb │ │ ├── Logging.rb │ │ ├── MLcompServer.rb │ │ ├── Notification.rb │ │ ├── Rating.rb │ │ ├── RefreshFromSpec.rb │ │ ├── ResourceManager.rb │ │ ├── RunInfo.rb │ │ ├── RunMaster.rb │ │ ├── RunSpecification.rb │ │ ├── Specification.rb │ │ ├── TableQuery.rb │ │ ├── ValidateState.rb │ │ ├── interactive-learning │ │ │ ├── InteractiveLearningDatasetProcessorRunInfo.rb │ │ │ └── InteractiveLearningRunInfo.rb │ │ ├── performing │ │ │ ├── PerformingDatasetProcessorRunInfo.rb │ │ │ └── PerformingRunInfo.rb │ │ └── supervised-learning │ │ │ ├── SupervisedLearningDatasetProcessorRunInfo.rb │ │ │ └── SupervisedLearningRunInfo.rb │ ├── smtp_tls.rb │ └── utils │ │ ├── Format.rb │ │ ├── MyFileUtils.rb │ │ ├── args.rb │ │ └── general.rb ├── public │ ├── .htaccess │ ├── 404.html │ ├── 422.html │ ├── 500.html │ ├── dispatch.cgi │ ├── dispatch.fcgi │ ├── dispatch.rb │ ├── download │ ├── images │ │ ├── ajax-loader.gif │ │ ├── alex.jpg │ │ ├── book.png │ │ ├── cmd │ │ ├── create_run_img.png │ │ ├── database.png │ │ ├── dataset_img.png │ │ ├── dataset_img2.png │ │ ├── favicon.ico │ │ ├── icon_profile.gif │ │ ├── icons │ │ │ ├── action_back.gif │ │ │ ├── action_forward.gif │ │ │ ├── action_go.gif │ │ │ ├── action_paste.gif │ │ │ ├── action_print.gif │ │ │ ├── action_refresh.gif │ │ │ ├── action_refresh_blue.gif │ │ │ ├── action_save.gif │ │ │ ├── action_stop.gif │ │ │ ├── application_dreamweaver.gif │ │ │ ├── application_firefox.gif │ │ │ ├── application_flash.gif │ │ │ ├── arrow_down.gif │ │ │ ├── arrow_left.gif │ │ │ ├── arrow_right.gif │ │ │ ├── arrow_up.gif │ │ │ ├── box.gif │ │ │ ├── calendar.gif │ │ │ ├── comment.gif │ │ │ ├── comment_blue.gif │ │ │ ├── comment_delete.gif │ │ │ ├── comment_new.gif │ │ │ ├── comment_yellow.gif │ │ │ ├── copy.gif │ │ │ ├── cut.gif │ │ │ ├── date.gif │ │ │ ├── date_delete.gif │ │ │ ├── date_new.gif │ │ │ ├── file_acrobat.gif │ │ │ ├── file_font.gif │ │ │ ├── file_font_truetype.gif │ │ │ ├── flag_blue.gif │ │ │ ├── flag_green.gif │ │ │ ├── flag_orange.gif │ │ │ ├── flag_red.gif │ │ │ ├── flag_white.gif │ │ │ ├── folder.gif │ │ │ ├── folder_delete.gif │ │ │ ├── folder_images.gif │ │ │ ├── folder_lock.gif │ │ │ ├── folder_new.gif │ │ │ ├── folder_page.gif │ │ │ ├── icon_accept.gif │ │ │ ├── icon_airmail.gif │ │ │ ├── icon_alert.gif │ │ │ ├── icon_attachment.gif │ │ │ ├── icon_clock.gif │ │ │ ├── icon_component.gif │ │ │ ├── icon_download.gif │ │ │ ├── icon_email.gif │ │ │ ├── icon_extension.gif │ │ │ ├── icon_favourites.gif │ │ │ ├── icon_get_world.gif │ │ │ ├── icon_history.gif │ │ │ ├── icon_home.gif │ │ │ ├── icon_info.gif │ │ │ ├── icon_key.gif │ │ │ ├── icon_link.gif │ │ │ ├── icon_mail.gif │ │ │ ├── icon_monitor_mac.gif │ │ │ ├── icon_monitor_pc.gif │ │ │ ├── icon_network.gif │ │ │ ├── icon_package.gif │ │ │ ├── icon_package_get.gif │ │ │ ├── icon_package_open.gif │ │ │ ├── icon_padlock.gif │ │ │ ├── icon_security.gif │ │ │ ├── icon_settings.gif │ │ │ ├── icon_user.gif │ │ │ ├── icon_wand.gif │ │ │ ├── icon_world.gif │ │ │ ├── icon_world_dynamic.gif │ │ │ ├── image.gif │ │ │ ├── image_new.gif │ │ │ ├── interface_browser.gif │ │ │ ├── interface_dialog.gif │ │ │ ├── interface_installer.gif │ │ │ ├── list_comments.gif │ │ │ ├── list_components.gif │ │ │ ├── list_errors.gif │ │ │ ├── list_extensions.gif │ │ │ ├── list_images.gif │ │ │ ├── list_keys.gif │ │ │ ├── list_links.gif │ │ │ ├── list_packages.gif │ │ │ ├── list_security.gif │ │ │ ├── list_settings.gif │ │ │ ├── list_users.gif │ │ │ ├── list_world.gif │ │ │ ├── note.gif │ │ │ ├── note_delete.gif │ │ │ ├── note_new.gif │ │ │ ├── page.gif │ │ │ ├── page_alert.gif │ │ │ ├── page_attachment.gif │ │ │ ├── page_bookmark.gif │ │ │ ├── page_boy.gif │ │ │ ├── page_code.gif │ │ │ ├── page_colors.gif │ │ │ ├── page_component.gif │ │ │ ├── page_cross.gif │ │ │ ├── page_delete.gif │ │ │ ├── page_deny.gif │ │ │ ├── page_down.gif │ │ │ ├── page_dynamic.gif │ │ │ ├── page_edit.gif │ │ │ ├── page_extension.gif │ │ │ ├── page_favourites.gif │ │ │ ├── page_find.gif │ │ │ ├── page_flash.gif │ │ │ ├── page_girl.gif │ │ │ ├── page_html.gif │ │ │ ├── page_java.gif │ │ │ ├── page_key.gif │ │ │ ├── page_left.gif │ │ │ ├── page_link.gif │ │ │ ├── page_lock.gif │ │ │ ├── page_new.gif │ │ │ ├── page_next.gif │ │ │ ├── page_package.gif │ │ │ ├── page_php.gif │ │ │ ├── page_prev.gif │ │ │ ├── page_refresh.gif │ │ │ ├── page_right.gif │ │ │ ├── page_script.gif │ │ │ ├── page_security.gif │ │ │ ├── page_settings.gif │ │ │ ├── page_sound.gif │ │ │ ├── page_tag_blue.gif │ │ │ ├── page_tag_red.gif │ │ │ ├── page_text.gif │ │ │ ├── page_text_delete.gif │ │ │ ├── page_tick.gif │ │ │ ├── page_tree.gif │ │ │ ├── page_up.gif │ │ │ ├── page_url.gif │ │ │ ├── page_user.gif │ │ │ ├── page_user_dark.gif │ │ │ ├── page_user_light.gif │ │ │ ├── page_video.gif │ │ │ ├── page_wizard.gif │ │ │ ├── readme.txt │ │ │ ├── table.gif │ │ │ ├── table_delete.gif │ │ │ └── tables.gif │ │ ├── jake.png │ │ ├── job_running.gif │ │ ├── job_running2.gif │ │ ├── percy.jpeg │ │ ├── profilepic.png │ │ ├── program_img.png │ │ ├── program_img2.png │ │ ├── prototip │ │ │ └── styles │ │ │ │ ├── creamy │ │ │ │ ├── bottomleft.png │ │ │ │ ├── bottommiddle.png │ │ │ │ ├── bottomright.png │ │ │ │ ├── close.png │ │ │ │ ├── close_hover.png │ │ │ │ ├── leftbottom.png │ │ │ │ ├── leftmiddle.png │ │ │ │ ├── lefttop.png │ │ │ │ ├── loader.gif │ │ │ │ ├── rightbottom.png │ │ │ │ ├── rightmiddle.png │ │ │ │ ├── righttop.png │ │ │ │ ├── topleft.png │ │ │ │ ├── topmiddle.png │ │ │ │ └── topright.png │ │ │ │ ├── darkgrey │ │ │ │ ├── bottomleft.png │ │ │ │ ├── bottommiddle.png │ │ │ │ ├── bottomright.png │ │ │ │ ├── close.png │ │ │ │ ├── close_hover.png │ │ │ │ ├── leftbottom.png │ │ │ │ ├── leftmiddle.png │ │ │ │ ├── lefttop.png │ │ │ │ ├── loader.gif │ │ │ │ ├── rightbottom.png │ │ │ │ ├── rightmiddle.png │ │ │ │ ├── righttop.png │ │ │ │ ├── topleft.png │ │ │ │ ├── topmiddle.png │ │ │ │ └── topright.png │ │ │ │ ├── default │ │ │ │ ├── bottomleft.png │ │ │ │ ├── bottommiddle.png │ │ │ │ ├── bottomright.png │ │ │ │ ├── close.png │ │ │ │ ├── close_hover.png │ │ │ │ ├── leftbottom.png │ │ │ │ ├── leftmiddle.png │ │ │ │ ├── lefttop.png │ │ │ │ ├── loader.gif │ │ │ │ ├── rightbottom.png │ │ │ │ ├── rightmiddle.png │ │ │ │ ├── righttop.png │ │ │ │ ├── topleft.png │ │ │ │ ├── topmiddle.png │ │ │ │ └── topright.png │ │ │ │ ├── protoblue │ │ │ │ ├── bottomleft.png │ │ │ │ ├── bottommiddle.png │ │ │ │ ├── bottomright.png │ │ │ │ ├── close.png │ │ │ │ ├── close_hover.png │ │ │ │ ├── leftbottom.png │ │ │ │ ├── leftmiddle.png │ │ │ │ ├── lefttop.png │ │ │ │ ├── loader.gif │ │ │ │ ├── rightbottom.png │ │ │ │ ├── rightmiddle.png │ │ │ │ ├── righttop.png │ │ │ │ ├── topleft.png │ │ │ │ ├── topmiddle.png │ │ │ │ └── topright.png │ │ │ │ └── protogrey │ │ │ │ ├── bottomleft.png │ │ │ │ ├── bottommiddle.png │ │ │ │ ├── bottomright.png │ │ │ │ ├── close.png │ │ │ │ ├── close_hover.png │ │ │ │ ├── leftbottom.png │ │ │ │ ├── leftmiddle.png │ │ │ │ ├── lefttop.png │ │ │ │ ├── loader.gif │ │ │ │ ├── rightbottom.png │ │ │ │ ├── rightmiddle.png │ │ │ │ ├── righttop.png │ │ │ │ ├── topleft.png │ │ │ │ ├── topmiddle.png │ │ │ │ └── topright.png │ │ ├── rails.png │ │ ├── result_img.png │ │ ├── server.png │ │ ├── spinner.gif │ │ └── spinner2.gif │ ├── index-rails-default.html │ ├── javascripts │ │ ├── add_to_list.js │ │ ├── application.js │ │ ├── controls.js │ │ ├── dragdrop.js │ │ ├── effects.js │ │ ├── prototip │ │ │ ├── prototip.js │ │ │ └── styles.js │ │ ├── prototype.js │ │ └── twitter.js │ ├── robots.txt │ └── stylesheets │ │ ├── bg.png │ │ ├── buttons.css │ │ ├── dotted.gif │ │ ├── dottedangle.gif │ │ ├── prototip.css │ │ └── screen.css ├── script │ ├── about │ ├── console │ ├── destroy │ ├── generate │ ├── mlcomp │ │ ├── announcement_script.rb │ │ ├── resource │ │ ├── run-server │ │ └── send_announcements │ ├── performance │ │ ├── benchmarker │ │ ├── profiler │ │ └── request │ ├── plugin │ ├── process │ │ ├── inspector │ │ ├── reaper │ │ └── spawner │ ├── runner │ └── server ├── test │ ├── fixtures │ │ ├── announcements.yml │ │ ├── datasets.yml │ │ ├── programs.yml │ │ ├── run_construct_arg_programs.yml │ │ ├── run_datasets.yml │ │ ├── run_results.yml │ │ ├── run_statuses.yml │ │ ├── runs.yml │ │ ├── users.yml │ │ └── workers.yml │ ├── functional │ │ ├── about_controller_test.rb │ │ ├── datasets_controller_test.rb │ │ ├── faq_controller_test.rb │ │ ├── general_display_controller_test.rb │ │ ├── my_stuff_controller_test.rb │ │ ├── programs_controller_test.rb │ │ ├── runs_controller_test.rb │ │ ├── table_controller_test.rb │ │ └── users_controller_test.rb │ ├── test_helper.rb │ └── unit │ │ ├── announcement_test.rb │ │ ├── dataset_test.rb │ │ ├── emailer_test.rb │ │ ├── program_test.rb │ │ ├── run_construct_arg_program_test.rb │ │ ├── run_dataset_test.rb │ │ ├── run_result_test.rb │ │ ├── run_status_test.rb │ │ ├── run_test.rb │ │ ├── user_test.rb │ │ └── worker_test.rb └── vendor │ └── plugins │ └── acts_as_commentable │ ├── CHANGELOG │ ├── MIT-LICENSE │ ├── README │ ├── init.rb │ ├── install.rb │ ├── lib │ ├── acts_as_commentable.rb │ └── comment.rb │ ├── tasks │ └── acts_as_commentable_tasks.rake │ └── test │ └── acts_as_commentable_test.rb ├── update-db ├── upload-to-codalab.py └── worker ├── args.rb ├── general.rb ├── version └── worker /LICENSE: -------------------------------------------------------------------------------- 1 | MLcomp: website for automatic and standarized execution of algorithms on datasets. 2 | Copyright (C) 2010 by Percy Liang and Jake Abernethy 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU Affero General Public License as 6 | published by the Free Software Foundation, either version 3 of the 7 | License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU Affero General Public License for more details. 13 | 14 | You should have received a copy of the GNU Affero General Public License 15 | along with this program. If not, see . 16 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/banditron/metadata: -------------------------------------------------------------------------------- 1 | name: banditron 2 | construct: 3 | task: BanditMulticlass 4 | description: An implementation of the Banditron algorithm presented in "Efficient Bandit Algorithms for Online Multiclass Prediction" by Sham M. Kakade, Shai Shalev-Shwartz and Ambuj Tewari, in ICML, 2008. 5 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/random/metadata: -------------------------------------------------------------------------------- 1 | name: bandit-random 2 | construct: 3 | task: BanditMulticlass 4 | description: Guess labels at random. 5 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/random/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | import sys, random 3 | 4 | if len(sys.argv) < 2: 5 | print >>sys.stderr, "USAGE: %s construct OR %s interact \n" % (sys.argv[0], sys.argv[0]) 6 | sys.exit(1) 7 | if sys.argv[0] == 'construct': 8 | sys.exit(0) 9 | if sys.argv[1] == 'interact': 10 | num_labels = int(sys.argv[2]) 11 | line = sys.stdin.readline() # features 12 | while line: 13 | label = random.randint(1, num_labels) 14 | sys.stdout.write("%d\n" % label) 15 | sys.stdout.flush() 16 | line = sys.stdin.readline() # oracle 17 | line = sys.stdin.readline() # features 18 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/sample/metadata: -------------------------------------------------------------------------------- 1 | name: bandit-multiclass-sample 2 | format: BanditMulticlass 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/sample/raw: -------------------------------------------------------------------------------- 1 | 1 2:1 3:1 2 | 2 1:1 3:1 3 | 3 1:1 2:1 4 | 1 2:1 3:1 5 | 2 1:1 3:1 6 | 2 1:1 7 | -------------------------------------------------------------------------------- /domains/BanditMulticlass/utils/metadata: -------------------------------------------------------------------------------- 1 | name: bandit-multiclass-utils 2 | description: Inspects BanditMulticlass datasets and evaluates BanditMulticlass performance. 3 | task: Inspect Interact Evaluate 4 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/sample/metadata: -------------------------------------------------------------------------------- 1 | name: collaborativefiltering-sample 2 | description: a toy dataset for testing collaborative filtering programs. 3 | format: CollaborativeFiltering 4 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/sample/test: -------------------------------------------------------------------------------- 1 | 1 3 3 2 | 2 2 1 3 | 3 1 2 4 | 3 2 4 5 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/sample/train: -------------------------------------------------------------------------------- 1 | 1 1 4 2 | 1 2 3 3 | 2 1 3 4 | 2 3 4 5 | 3 3 1 6 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/utils/collaborativefiltering.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/domains/CollaborativeFiltering/utils/collaborativefiltering.jar -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/utils/compile: -------------------------------------------------------------------------------- 1 | scalac Utils.scala && jar cf collaborativefiltering.jar collaborativefiltering && rm -r collaborativefiltering 2 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/utils/metadata: -------------------------------------------------------------------------------- 1 | name: collaborativefiltering-utils 2 | description: Validates, inspects, and evaluates a dataset in CollaborativeFiltering format. 3 | task: Inspect Split Strip Evaluate 4 | -------------------------------------------------------------------------------- /domains/CollaborativeFiltering/utils/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | scala -classpath collaborativefiltering.jar collaborativefiltering.Utils "$@" 3 | -------------------------------------------------------------------------------- /domains/ConstituencyParsingTest/sample/metadata: -------------------------------------------------------------------------------- 1 | name: constituency-parsing-test-sample 2 | description: Sample dataset for ConstituencyParsingTest. 3 | format: ConstituencyParsingTest -------------------------------------------------------------------------------- /domains/ConstituencyParsingTest/sample/raw: -------------------------------------------------------------------------------- 1 | (TOP (S (NP (DT This)) (VP (VBZ is) (NP (DT a) (NN sample) (NN sentence))) (. .)) ) 2 | -------------------------------------------------------------------------------- /domains/ConstituencyParsingTest/utils/BerkeleyParser.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/domains/ConstituencyParsingTest/utils/BerkeleyParser.jar -------------------------------------------------------------------------------- /domains/ConstituencyParsingTest/utils/Makefile: -------------------------------------------------------------------------------- 1 | all: evalb 2 | 3 | evalb: evalb.c 4 | gcc -Wall -g -o evalb evalb.c 5 | -------------------------------------------------------------------------------- /domains/ConstituencyParsingTest/utils/metadata: -------------------------------------------------------------------------------- 1 | name: constituency-parsing-test-utils 2 | description: Inspects ConstituencyParsingTest datasets and evaluates performance. 3 | task: Inspect Strip Evaluate 4 | -------------------------------------------------------------------------------- /domains/DependencyParsingTest/sample/metadata: -------------------------------------------------------------------------------- 1 | name: dependency-parsing-test-sample 2 | description: Sample dataset for DependencyParsingTest. 3 | format: DependencyParsingTest 4 | -------------------------------------------------------------------------------- /domains/DependencyParsingTest/sample/raw: -------------------------------------------------------------------------------- 1 | 1 This _ DET DT _ 2 nsubj _ _ 2 | 2 is _ VERB VBZ _ 0 ROOT _ _ 3 | 3 a _ DET DT _ 5 det _ _ 4 | 4 sample _ NOUN NN _ 5 nn _ _ 5 | 5 sentence _ NOUN NN _ 2 attr _ _ 6 | 6 . _ . . _ 2 p _ _ 7 | 8 | -------------------------------------------------------------------------------- /domains/DependencyParsingTest/utils/metadata: -------------------------------------------------------------------------------- 1 | name: dependency-parsing-test-utils 2 | description: Inspects DependencyParsingTest datasets and evaluates performance. 3 | task: Inspect Strip Evaluate 4 | -------------------------------------------------------------------------------- /domains/DocumentClassification/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/metadata: -------------------------------------------------------------------------------- 1 | name: document-classification-sample 2 | description: Sample dataset for DocumentClassification consisting of two document classes - one about cars and the other about trees. 3 | format: DocumentClassification 4 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/cars/doc1: -------------------------------------------------------------------------------- 1 | a car has four wheel 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/cars/doc2: -------------------------------------------------------------------------------- 1 | a driver behind the wheel 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/cars/doc3: -------------------------------------------------------------------------------- 1 | the driver behind the wheel 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/cars/doc4: -------------------------------------------------------------------------------- 1 | cars encounter lots of traffic on the highway 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/cars/doc5: -------------------------------------------------------------------------------- 1 | cars should stop at the traffic light 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/trees/doc11: -------------------------------------------------------------------------------- 1 | trees have roots 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/trees/doc12: -------------------------------------------------------------------------------- 1 | trees also have leaves 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/trees/doc13: -------------------------------------------------------------------------------- 1 | rooted trees occur a lot in NLP 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/trees/doc14: -------------------------------------------------------------------------------- 1 | these are the leaves of a tree 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/sample/raw/trees/doc15: -------------------------------------------------------------------------------- 1 | i like parsing trees 2 | -------------------------------------------------------------------------------- /domains/DocumentClassification/utils/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/DocumentClassification/utils/metadata: -------------------------------------------------------------------------------- 1 | name: document-classification-utils 2 | description: Inspects DocumentClassification datasets and evaluates DocumentClassification performance. 3 | task: Inspect Split Strip Evaluate 4 | -------------------------------------------------------------------------------- /domains/OnlineLearningMulticlass/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/OnlineLearningMulticlass/sample/metadata: -------------------------------------------------------------------------------- 1 | name: online-multiclass-sample 2 | format: OnlineLearningMulticlass 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/OnlineLearningMulticlass/sample/raw: -------------------------------------------------------------------------------- 1 | 1 2:1 3:1 2 | 2 1:1 3:1 3 | 3 1:1 2:1 4 | 1 2:1 3:1 5 | 2 1:1 3:1 6 | 2 1:1 7 | -------------------------------------------------------------------------------- /domains/OnlineLearningMulticlass/utils/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/OnlineLearningMulticlass/utils/metadata: -------------------------------------------------------------------------------- 1 | name: online-multiclass-utils 2 | description: Inspects OnlineLearningMulticlass datasets and evaluates OnlineLearningMulticlass performance. 3 | task: Inspect Interact Evaluate 4 | -------------------------------------------------------------------------------- /domains/SemiSupervisedMulticlass/sample/metadata: -------------------------------------------------------------------------------- 1 | name: semi-supervised-multiclass-sample 2 | format: SemiSupervisedMulticlass 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/SemiSupervisedMulticlass/sample/raw: -------------------------------------------------------------------------------- 1 | u 1:1 5:1 2 | u 1:1 3:1 4:1 5:1 3 | u 3:1 5:1 4 | u 1:1 3:1 5:1 5 | u 1:1 2:1 4:1 5:1 6 | u 3:1 5:1 7 | u 1:1 4:1 5:1 8 | u 1:1 2:1 4:1 9 | u 1:1 2:1 4:1 5:1 10 | u 1:1 3:1 5:1 11 | u 1:1 3:1 5:1 12 | u 1:1 3:1 13 | 3 1:1 2:1 3:1 5:1 14 | 1 2:1 4:1 5:1 15 | 2 1:1 16 | 3 2:1 3:1 4:1 5:1 17 | 3 1:1 2:1 5:1 18 | 2 1:1 5:1 19 | 2 1:1 4:1 5:1 20 | 1 3:1 4:1 5:1 21 | -------------------------------------------------------------------------------- /domains/SequenceTagging/eval/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/SequenceTagging/eval/metadata: -------------------------------------------------------------------------------- 1 | name: sequence-conll-evaluator 2 | description: Evaluator for SequenceTagging. 3 | task: Evaluate 4 | -------------------------------------------------------------------------------- /domains/SequenceTagging/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/SequenceTagging/sample/metadata: -------------------------------------------------------------------------------- 1 | name: sequence-conll-sample 2 | description: Sample dataset for sanity checking. 3 | format: SequenceTagging 4 | -------------------------------------------------------------------------------- /domains/SequenceTagging/sample/test: -------------------------------------------------------------------------------- 1 | Unknown JJ B-NP 2 | words NNS I-NP 3 | in IN B-PP 4 | the DT B-NP 5 | bag NN I-NP 6 | -------------------------------------------------------------------------------- /domains/SequenceTagging/sample/train: -------------------------------------------------------------------------------- 1 | Sample NN B-NP 2 | dataset NN I-NP 3 | 4 | Potatoes NN B-NP 5 | in IN B-PP 6 | the DT B-NP 7 | bag NN I-NP 8 | -------------------------------------------------------------------------------- /domains/SequenceTagging/utils/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/SequenceTagging/utils/metadata: -------------------------------------------------------------------------------- 1 | name: sequence-conll-utils 2 | description: Validates and inspects SequenceTagging (CoNLL Shared Task) datasets. 3 | task: Inspect Split Strip 4 | -------------------------------------------------------------------------------- /domains/WordSegmentation/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/WordSegmentation/sample/metadata: -------------------------------------------------------------------------------- 1 | name: word-segmentation-sample 2 | description: Sample dataset for WordSegmentation. 3 | format: WordSegmentation 4 | -------------------------------------------------------------------------------- /domains/WordSegmentation/sample/raw: -------------------------------------------------------------------------------- 1 | this is a test 2 | a test that is hard 3 | -------------------------------------------------------------------------------- /domains/WordSegmentation/utils/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/WordSegmentation/utils/metadata: -------------------------------------------------------------------------------- 1 | name: word-segmentation-utils 2 | description: Inspects WordSegmentation datasets and evaluates performance. 3 | task: Inspect Strip Evaluate 4 | -------------------------------------------------------------------------------- /domains/core/README: -------------------------------------------------------------------------------- 1 | These are the top-level entry points for all runs depending on: 2 | - the *kind* of domain 3 | - whether this is a dataset processing run or not. 4 | -------------------------------------------------------------------------------- /domains/core/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/interactive-learning/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/interactive-learning/main/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/interactive-learning/main/metadata: -------------------------------------------------------------------------------- 1 | name: interactive-learning 2 | description: Main entry for interactive learning tasks (online learning), where is two phases. 3 | task: Main 4 | construct: interactivelearner:Program dataset:Dataset interactor:Program[Interact] evaluator:Program[Evaluate] 5 | -------------------------------------------------------------------------------- /domains/core/performing/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/performing/main/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/performing/main/metadata: -------------------------------------------------------------------------------- 1 | name: performing 2 | description: Main entry for performing tasks (unsupervised learning, solving optimization problems), where is one phase. 3 | task: Main 4 | construct: performer:Program dataset:Dataset stripper:Program[Strip] evaluator:Program[Evaluate] 5 | -------------------------------------------------------------------------------- /domains/core/performing/main/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'general' 4 | 5 | # Main entry point for performing tasks (e.g., unsupervised learning). 6 | # Takes in a performer, dataset, and other stuff and does all the running. 7 | cmd = ARGV.shift 8 | case cmd 9 | when 'construct' then 10 | saveArgs 11 | when 'execute' then 12 | performer, dataset, stripper, evaluator = 13 | loadArgs(:directory, :directory, :directory, :directory) 14 | 15 | datashard = dataset+"/raw" 16 | inPath = "input" 17 | outPath = "output" 18 | 19 | # Prepare data 20 | puts "===== MAIN: prepare data =====" 21 | exitIfFail('strip', runProgram(stripper, 'stripLabels', file(datashard), file(inPath))) 22 | puts 23 | 24 | # Learn 25 | puts "===== MAIN: perform task =====" 26 | exitIfFail('perform', runProgram(performer, 'perform', file(inPath), file(outPath))) 27 | exitFail("On ./run perform , your program (#{performer}) did not write to .") if not File.exists?(outPath) 28 | puts 29 | 30 | # Evaluate 31 | puts "===== MAIN: evaluate performance =====" 32 | exitIfFail('evaluate', runProgram(evaluator, 'evaluate', file(datashard), file(outPath))) 33 | end 34 | -------------------------------------------------------------------------------- /domains/core/performing/processor/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/performing/processor/metadata: -------------------------------------------------------------------------------- 1 | name: performing-processor 2 | description: Main entry point for validating and inspecting a dataset for performing datasets. 3 | task: Main 4 | construct: Dataset Program[Inspect] 5 | -------------------------------------------------------------------------------- /domains/core/performing/processor/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'general' 4 | 5 | # Process a performing dataset. Just inspect it (no need to split). 6 | cmd = ARGV.shift 7 | case cmd 8 | when 'construct' 9 | saveArgs 10 | when 'execute' 11 | dataset, inspector, = loadArgs(:directory, :directory) 12 | rawDatashard = "#{dataset}/raw" 13 | exitIfFail('raw', runProgram(inspector, 'inspect', file(rawDatashard)), 'Inspecting raw datashard.') 14 | exitSuccess 15 | end 16 | -------------------------------------------------------------------------------- /domains/core/supervised-learning/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/supervised-learning/main/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/supervised-learning/main/metadata: -------------------------------------------------------------------------------- 1 | name: supervised-learning 2 | description: Main entry for supervised learning for training and testing a program on a dataset. 3 | task: Main 4 | construct: learner:Program dataset:Dataset stripper:Program[Strip] evaluator:Program[Evaluate] 5 | -------------------------------------------------------------------------------- /domains/core/supervised-learning/processor/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/core/supervised-learning/processor/metadata: -------------------------------------------------------------------------------- 1 | name: supervised-learning-processor 2 | description: Main entry point for validating and inspecting a dataset for supervised learning datasets. 3 | task: Main 4 | construct: Dataset Program[Inspect] Program[Split] 5 | -------------------------------------------------------------------------------- /domains/core/supervised-learning/processor/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'general' 4 | 5 | # Splits the raw datashard if training and testing splits don't exist. 6 | 7 | cmd = ARGV.shift 8 | case cmd 9 | when 'construct' 10 | saveArgs 11 | when 'execute' 12 | dataset, inspector, splitter = loadArgs(:directory, :directory, :directory) 13 | rawDatashard = "#{dataset}/raw" 14 | trainDatashard = "#{dataset}/train" 15 | testDatashard = "#{dataset}/test" 16 | 17 | # Split 18 | if not (File.exists?(trainDatashard) && File.exists?(testDatashard)) 19 | if not File.exists?(rawDatashard) 20 | exitFail("Can't find files 'raw' or 'train' and 'test' in your dataset (#{dataset}).") 21 | else 22 | puts "Found #{rawDatashard}, splitting..." 23 | exitIfFail('splitter', 24 | runProgram(splitter, 'split', file(rawDatashard), file(trainDatashard), file(testDatashard)), 25 | "Splitter failed") 26 | end 27 | end 28 | 29 | # Inspect 30 | exitIfFail('train', runProgram(inspector, 'inspect', file(trainDatashard)), 'Inspecting train datashard failed.') 31 | exitIfFail('test', runProgram(inspector, 'inspect', file(testDatashard)), 'Inspecting test datashard failed.') 32 | 33 | exitSuccess 34 | end 35 | -------------------------------------------------------------------------------- /domains/flat/README: -------------------------------------------------------------------------------- 1 | These are programs for BinaryClassification, MulticlassClassification, and Regression. 2 | -------------------------------------------------------------------------------- /domains/flat/binary-sample/metadata: -------------------------------------------------------------------------------- 1 | name: binary-sample 2 | format: BinaryClassification 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/flat/binary-sample/raw: -------------------------------------------------------------------------------- 1 | 1 2:1 3:1 2 | -1 1:1 3:1 3 | -1 1:1 2:1 4 | 1 2:1 3:1 5 | -1 1:1 3:1 6 | -1 1:1 7 | -------------------------------------------------------------------------------- /domains/flat/evaluators/continuous/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/evaluators/continuous/metadata: -------------------------------------------------------------------------------- 1 | name: regression-evaluator 2 | description: Evaluates predictions of Regression datasets (continuous outputs). 3 | task: Evaluate 4 | -------------------------------------------------------------------------------- /domains/flat/evaluators/continuous/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'general' 4 | 5 | # Given a datashard (with true labels) and a predictions file, compute the error. 6 | # Labels are continuous, so compute mean squared error 7 | # Output results to a YAML file 8 | cmd = ARGV.shift 9 | case cmd 10 | when 'evaluate' then 11 | truePath, predPath = parseArgs(:file, :file) 12 | trueLines = IO.readlinesClean(truePath) 13 | predLines = IO.readlinesClean(predPath) 14 | results = [] 15 | if trueLines.size != predLines.size 16 | exitFail("True file has #{trueLines.size} examples but prediction file has #{predLines.size} examples") 17 | else 18 | numExamples = trueLines.size 19 | totalMeanSquaredError = 0 20 | (0...numExamples).each { |i| 21 | truey = trueLines[i].split(/ /, 2)[0].to_f 22 | predy = predLines[i].split(/ /, 2)[0].to_f 23 | totalMeanSquaredError += (truey-predy)**2 24 | } 25 | writeStatus( 26 | 'totalMeanSquaredError' => totalMeanSquaredError, 27 | 'numExamples' => numExamples, 28 | 'meanSquaredError' => 1.0*totalMeanSquaredError/numExamples) 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /domains/flat/evaluators/discrete/general.rb: -------------------------------------------------------------------------------- 1 | ../../../general.rb -------------------------------------------------------------------------------- /domains/flat/evaluators/discrete/metadata: -------------------------------------------------------------------------------- 1 | name: classification-evaluator 2 | description: Evaluates predictions of classification datasets (discrete outputs). 3 | task: Evaluate 4 | -------------------------------------------------------------------------------- /domains/flat/evaluators/discrete/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'general' 4 | 5 | # Given a datashard (with true labels) and a predictions file, compute the error. 6 | # TODO: handle prediction files with confidences to compute AUC 7 | # TODO: compute confusion matrix 8 | # Output results to a YAML file 9 | cmd = ARGV.shift 10 | case cmd 11 | when 'evaluate' then 12 | truePath, predPath = parseArgs(:file, :file) 13 | trueLines = IO.readlinesClean(truePath) 14 | predLines = IO.readlinesClean(predPath) 15 | if trueLines.size != predLines.size 16 | exitFail("True file has #{trueLines.size} examples but prediction file has #{predLines.size} examples") 17 | else 18 | numExamples = trueLines.size 19 | numErrors = 0 20 | (0...numExamples).each { |i| 21 | truey = trueLines[i].split(/ /, 2)[0].to_i 22 | predy = predLines[i].split(/ /, 2)[0].to_i 23 | numErrors += 1 if truey != predy 24 | } 25 | writeStatus( 26 | 'numErrors' => numErrors, 27 | 'numExamples' => numExamples, 28 | 'errorRate' => 1.0*numErrors/numExamples) 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /domains/flat/evaluators/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/meta-learning/binary-to-multi/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/meta-learning/binary-to-multi/metadata: -------------------------------------------------------------------------------- 1 | name: binary-to-multi 2 | description: Allows multiclass classification to be run on binary classification datasets (trivial reduction). 3 | task: BinaryClassification 4 | construct: multiclassLearner:Program[MulticlassClassification] 5 | -------------------------------------------------------------------------------- /domains/flat/meta-learning/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/meta-learning/one-vs-all/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/meta-learning/one-vs-all/metadata: -------------------------------------------------------------------------------- 1 | name: one-vs-all 2 | description: Reduction from multiclass classification to binary classification. 3 | task: MulticlassClassification 4 | construct: binaryLearner:Program[BinaryClassification] 5 | -------------------------------------------------------------------------------- /domains/flat/meta-learning/tune-hyperparameter/general.rb: -------------------------------------------------------------------------------- 1 | ../../general.rb -------------------------------------------------------------------------------- /domains/flat/meta-learning/tune-hyperparameter/metadata: -------------------------------------------------------------------------------- 1 | name: tune-hyperparameter 2 | description: Sets the hyperparameter 3 | task: BinaryClassification MulticlassClassification 4 | construct: numProbes:int learner:Program splitter:Program evaluator:Program[Evaluate] 5 | -------------------------------------------------------------------------------- /domains/flat/multiclass-sample/metadata: -------------------------------------------------------------------------------- 1 | name: multiclass-sample 2 | format: MulticlassClassification 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/flat/multiclass-sample/raw: -------------------------------------------------------------------------------- 1 | 1 2:1 3:1 2 | 2 1:1 3:1 3 | 3 1:1 2:1 4 | 1 2:1 3:1 5 | 2 1:1 3:1 6 | 2 1:1 7 | -------------------------------------------------------------------------------- /domains/flat/processors/binary/metadata: -------------------------------------------------------------------------------- 1 | name: binary-utils 2 | description: Validates and inspects a dataset in BinaryClassification format. 3 | task: Inspect Split Strip 4 | -------------------------------------------------------------------------------- /domains/flat/processors/general.rb: -------------------------------------------------------------------------------- 1 | ../general.rb -------------------------------------------------------------------------------- /domains/flat/processors/multiclass/metadata: -------------------------------------------------------------------------------- 1 | name: multiclass-utils 2 | description: Validates and inspects a dataset in MulticlassClassification format. 3 | task: Inspect Split Strip 4 | -------------------------------------------------------------------------------- /domains/flat/processors/regression/metadata: -------------------------------------------------------------------------------- 1 | name: regression-utils 2 | description: Validates and inspects a dataset in Regression format. 3 | task: Inspect Split Strip 4 | -------------------------------------------------------------------------------- /domains/flat/regression-sample/metadata: -------------------------------------------------------------------------------- 1 | name: regression-sample 2 | format: Regression 3 | description: Sample dataset for sanity checking. 4 | -------------------------------------------------------------------------------- /domains/flat/regression-sample/raw: -------------------------------------------------------------------------------- 1 | -0.3 2:1 3:1 2 | 2.7 1:1 3:1 3 | 3 1:1 2:1 4 | 0 2:1 3:1 5 | 1.1 1:1 3:1 6 | 2.3 1:1 7 | -------------------------------------------------------------------------------- /domains/general.rb: -------------------------------------------------------------------------------- 1 | ../site/lib/utils/general.rb -------------------------------------------------------------------------------- /domains/index: -------------------------------------------------------------------------------- 1 | - BinaryClassification 2 | - MulticlassClassification 3 | - Regression 4 | - SequenceTagging 5 | - CollaborativeFiltering 6 | - DocumentClassification 7 | - WordSegmentation 8 | - ConstituencyParsingTest 9 | - DependencyParsingTest 10 | - OnlineLearningMulticlass 11 | - BanditMulticlass 12 | - SemiSupervisedMulticlass 13 | -------------------------------------------------------------------------------- /init-db: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Run this script once to install MLcomp. 4 | 5 | . ./rc 6 | 7 | # We need to create the root directory for programs/datasets/etc. 8 | mkdir -p $MLCOMP_BASE_PATH 9 | mkdir -p $MLCOMP_BASE_PATH/programs 10 | mkdir -p $MLCOMP_BASE_PATH/datasets 11 | mkdir -p $MLCOMP_BASE_PATH/runs 12 | mkdir -p $MLCOMP_BASE_PATH/download 13 | 14 | # Create the database. 15 | echo "Do you know your mysql root password? It is necessary to creat the mlcomp_development db, and to grant permissions to it. You should now be prompted for your password." 16 | cat < ..." 9 | exit 1 10 | end 11 | pause = ARGV.shift.to_i 12 | 13 | idx = 0 14 | while true 15 | idx += 1 16 | puts "#{now} === STARTING PROCESS ##{idx}: #{ARGV.join(' ')}" 17 | system(*ARGV) 18 | puts "#{now} === PROCESS ##{idx} TERMINATED: #{ARGV.join(' ')}" 19 | puts 20 | sleep pause 21 | end 22 | -------------------------------------------------------------------------------- /packages/rails_sql_views-0.7.0.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/packages/rails_sql_views-0.7.0.gem -------------------------------------------------------------------------------- /rc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Setup environment variables used in MLcomp. 4 | # Important: always source this file from this current directory as follows: 5 | # . ./rc 6 | 7 | export RAILS_ENV=production 8 | export MLCOMP_SOURCE_PATH=$PWD 9 | export MLCOMP_BASE_PATH=$PWD/var 10 | export TMP_PATH=$MLCOMP_BASE_PATH/tmp 11 | export DOMAINS_PATH=$PWD/domains 12 | 13 | alias r=$MLCOMP_SOURCE_PATH'/site/script/mlcomp/resource' 14 | 15 | [ -e 'local.rc' ] && . local.rc 16 | -------------------------------------------------------------------------------- /run-command-server: -------------------------------------------------------------------------------- 1 | ./loop 5 site/script/mlcomp/resource commandServer "$@" 2 | -------------------------------------------------------------------------------- /run-ec2-manager: -------------------------------------------------------------------------------- 1 | site/script/mlcomp/resource ec2manager "$@" 2 | -------------------------------------------------------------------------------- /run-master: -------------------------------------------------------------------------------- 1 | ./loop 5 site/script/mlcomp/resource master "$@" 2 | -------------------------------------------------------------------------------- /run-stats: -------------------------------------------------------------------------------- 1 | #./loop $((5*60*60)) script/mlcomp/resource periodicUpdate "$@" 2 | ./loop $((5*60*60)) site/script/mlcomp/resource rateAll "$@" 3 | -------------------------------------------------------------------------------- /run-web-server: -------------------------------------------------------------------------------- 1 | cd site && script/mlcomp/run-server "$@" 2 | -------------------------------------------------------------------------------- /run-web-server-static: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'webrick' 4 | web_server = WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd + '/site/app/views/static') 5 | trap('INT') { web_server.shutdown } 6 | web_server.start 7 | -------------------------------------------------------------------------------- /seed-db: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | def add(s) 4 | cmd = "site/script/mlcomp/resource #{ARGV.join(' ')} -add #{s}" 5 | puts cmd 6 | exit 1 unless system("bash", "-c", cmd) 7 | end 8 | 9 | # Recursively add everything 10 | add('domains/core') 11 | add('domains/flat') 12 | add('domains/*/utils') 13 | add('domains/*/sample') 14 | 15 | #add('domains') # Only do this after all sample datasets have been processed 16 | -------------------------------------------------------------------------------- /show-log: -------------------------------------------------------------------------------- 1 | tail -f site/log/mlcomp.log | grep SENDING 2 | -------------------------------------------------------------------------------- /site/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require(File.join(File.dirname(__FILE__), 'config', 'boot')) 5 | 6 | require 'rake' 7 | require 'rake/testtask' 8 | require 'rake/rdoctask' 9 | 10 | require 'tasks/rails' 11 | -------------------------------------------------------------------------------- /site/app/controllers/my_stuff_controller.rb: -------------------------------------------------------------------------------- 1 | # MLcomp: website for automatic and standarized execution of algorithms on datasets. 2 | # Copyright (C) 2010 by Percy Liang and Jake Abernethy 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU Affero General Public License as 6 | # published by the Free Software Foundation, either version 3 of the 7 | # License, or (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU Affero General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU Affero General Public License 15 | # along with this program. If not, see . 16 | 17 | class MyStuffController < ApplicationController 18 | 19 | before_filter :require_login 20 | 21 | def index 22 | @pagetitle << " - My Stuff" 23 | end 24 | 25 | end 26 | -------------------------------------------------------------------------------- /site/app/helpers/faq_helper.rb: -------------------------------------------------------------------------------- 1 | module FaqHelper 2 | end 3 | -------------------------------------------------------------------------------- /site/app/helpers/my_stuff_helper.rb: -------------------------------------------------------------------------------- 1 | module MyStuffHelper 2 | end 3 | -------------------------------------------------------------------------------- /site/app/helpers/users_helper.rb: -------------------------------------------------------------------------------- 1 | module UsersHelper 2 | end 3 | -------------------------------------------------------------------------------- /site/app/models/announcement.rb: -------------------------------------------------------------------------------- 1 | class Announcement < ActiveRecord::Base 2 | 3 | belongs_to :user 4 | 5 | def self.create_ann(user,type,tmail_obj) 6 | msg = Announcement.new 7 | msg.message_type = type 8 | msg.user = user 9 | msg.serialized_message = tmail_obj.to_s 10 | msg.processed = false 11 | msg.success = false 12 | msg.save 13 | end 14 | 15 | def send_msg(ignore_processed = false) 16 | raise "already processed" if self.processed and (not ignore_processed) 17 | self.processed = true 18 | self.save 19 | tmail_msg = TMail::Mail.parse(self.serialized_message) 20 | self.success = true if AnnouncementEmailer.deliver(tmail_msg) 21 | self.save 22 | end 23 | 24 | end -------------------------------------------------------------------------------- /site/app/models/run_dataset.rb: -------------------------------------------------------------------------------- 1 | class RunDataset < ActiveRecord::Base 2 | belongs_to :run 3 | belongs_to :dataset 4 | end 5 | -------------------------------------------------------------------------------- /site/app/models/run_program.rb: -------------------------------------------------------------------------------- 1 | class RunProgram < ActiveRecord::Base 2 | belongs_to :run 3 | belongs_to :program 4 | end 5 | -------------------------------------------------------------------------------- /site/app/models/run_result.rb: -------------------------------------------------------------------------------- 1 | class RunResult < ActiveRecord::Base 2 | belongs_to :run 3 | end 4 | -------------------------------------------------------------------------------- /site/app/models/run_status.rb: -------------------------------------------------------------------------------- 1 | class RunStatus < ActiveRecord::Base 2 | belongs_to :run 3 | end 4 | -------------------------------------------------------------------------------- /site/app/views/announcement_emailer/mass_announcement.html.erb: -------------------------------------------------------------------------------- 1 | Hello <%= @user.fullname %>, 2 | 3 | <%= @main_text %> 4 | 5 | _______________________________________________ 6 | 7 | If you would like to stop receiving emails from us then please visit <%= @url %>. 8 | 9 | Questions and comments should be sent to mlcomp.support@gmail.com. -------------------------------------------------------------------------------- /site/app/views/datasets/create_bundle.rjs: -------------------------------------------------------------------------------- 1 | page[:dataset_download_box].replace_html(@dataset_bundle_url ? link_to("[download zip]", @dataset_bundle_url) : "Creating zip failed: #{@dataset_bundle_error}") 2 | -------------------------------------------------------------------------------- /site/app/views/datasets/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
6 | <%= make_list "ul", [datasetNewButton] %> 7 |
8 | <% end %> 9 | 10 |

A dataset is the input into a machine learning program.

11 | 12 | <% 13 | if sessionDatasetFormats[0] != '(all)' then 14 | domain = Domain.get(sessionDatasetFormats[0]) %> 15 |
16 | <%= sessionDatasetFormats[0] %>: 17 | <%= domain.datasetDescription %> 18 |

Click here to see a <%= link_to 'sample dataset', :controller => 'datasets', :action => 'show', :id => domain.sampleDataset %>.

19 |
20 | <% end %> 21 | 22 |

23 | The table below shows everyone's datasets that have been processed successfully in <%= sessionDatasetFormatStr %>. 24 | To see only your datasets, go to <%= link_to 'my stuff', :controller => 'my_stuff' %>. 25 |

26 | 27 |

To create a run, first click on a dataset.

28 | 29 | <%= render :partial => 'table/many_table_show', :locals => { :tparams => @tparams } %> 30 | -------------------------------------------------------------------------------- /site/app/views/datasets/replace.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
6 | <%= make_list "ul", [datasetShowButton, datasetEditButton, datasetDeleteButton, datasetNewButton, datasetShowAllButton] %> 7 |
8 | <% end %> 9 | 10 |

Re-uploading dataset <%= @dataset.name %>:


11 | <% form_tag({:action => 'replace'}, {:multipart => true}) do |f| %> 12 | 13 | Warning: Replacing this dataset will delete all of its <%= @dataset.runs.size %> run(s)! 14 | 15 |

16 |

Enter either a single data file or a zip file containing multiple files, including a file called metadata:

17 | 18 | <%= submit_tag "Upload", :confirm => datasetDeleteConfirm %> 19 |

20 | 21 | <% end %> 22 | -------------------------------------------------------------------------------- /site/app/views/emailer/general_email.html.erb: -------------------------------------------------------------------------------- 1 | <%= @body %> 2 | -------------------------------------------------------------------------------- /site/app/views/emailer/reset_notification.html.erb: -------------------------------------------------------------------------------- 1 | Request to reset password received for <%= @user.username %> 2 | Visit this url to choose a new password: 3 | <%= @url %> 4 | 5 | (Your password will remain the same if no action is taken) 6 | -------------------------------------------------------------------------------- /site/app/views/emailer/user_comment.html.erb: -------------------------------------------------------------------------------- 1 | User <%= @username + " (#{@fullname}, email #{@email})"%> visited URL <%= @url %> and left the following comment: 2 | 3 | <%= @message %> 4 | -------------------------------------------------------------------------------- /site/app/views/faq/_faq_edit_question.html.erb: -------------------------------------------------------------------------------- 1 | <% q ||= {} %> 2 | <% %> 3 | <% qid = rand 1000000 %> 4 |
  • 5 | <% unless local_assigns[:visible] %> 6 |
    7 | <%= render :partial => 'question', :object => q %> 8 | <%= link_to_function "edit", "$('edit_#{qid}').show(); $('view_#{qid}').hide();" %> 9 |
    10 | <% end -%> 11 | 12 |
    id="edit_<%= qid %>" style="display:none" <% end -%>> 13 |
    14 | 15 | <%= link_to "Move", "#", :class => "move_button" %>
    16 | <%= link_to "Delete", "#", :class => "delete_button" %> 17 |
    18 |
    19 |
    20 | <%= text_field_tag nil, q['question'] || "Question title", :size => 50, :class => 'question_field' %>
    21 | <%= text_field_tag nil, q['tags'] ? q['tags'].join(", ") : 'section_general', :size => 70, :class => 'tags_field' %>
    22 | <%= text_area_tag nil, q['answer'] || "Answer text", :rows => 4, :cols => 50, :class => 'answer_field' %> 23 |
    24 | 25 |
    26 | 27 |
    28 |
    29 |
  • -------------------------------------------------------------------------------- /site/app/views/faq/_question.html.erb: -------------------------------------------------------------------------------- 1 | <% liid = rand 1000000 %> 2 |
    3 | <%= link_to_function(question['question'], 4 | "new Effect.toggle('#{liid}','blind', {duration:0.1})") %> 5 |
    6 | -------------------------------------------------------------------------------- /site/app/views/faq/_question_list.html.erb: -------------------------------------------------------------------------------- 1 |
      2 | <% questions.each_with_index do |question,ind| %> 3 |
    1. 4 | <%= render :partial => 'faq/question', :object => question %> 5 |
    2. 6 | <% end -%> 7 |
    -------------------------------------------------------------------------------- /site/app/views/general_display/_dataset_format_selector.html.erb: -------------------------------------------------------------------------------- 1 |
    2 | <% form_tag "format_filter_form" do %> 3 | 4 | <%= select_tag "format_filter_selection", 5 | options_for_select(["(all)"] + Domain.names, 6 | session[:format_filter] || "(all)"), :style => 'margin: 5px; padding:2px 10px; font-size: 1.1em;' %> 7 | <% end -%> 8 | <%= observe_field "format_filter_selection", 9 | :url => {:controller => 'general_display', :action => 'update_format_filter'}, 10 | :with => "Form.Element.serialize('format_filter_selection')", 11 | :on => "selected" 12 | %> 13 |
    14 | -------------------------------------------------------------------------------- /site/app/views/general_display/help.html.erb: -------------------------------------------------------------------------------- 1 | <%= @help_file %> 2 | -------------------------------------------------------------------------------- /site/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <% inside_layout 'main_with_sidebar_new' do %> 3 | <%= yield %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /site/app/views/layouts/main_with_sidebar_new.html.erb: -------------------------------------------------------------------------------- 1 | <% inside_layout 'base_layout_new' do %> 2 | 3 |
    4 | <%= yield %> 5 |
    6 | 7 | 16 | 17 | 18 | 19 | <% end %> 20 | -------------------------------------------------------------------------------- /site/app/views/layouts/single_column_layout.html.erb: -------------------------------------------------------------------------------- 1 | <% inside_layout 'base_layout_new' do %> 2 | 3 |
    4 | <%= yield %> 5 |
    6 | 7 | 8 | <% end %> 9 | -------------------------------------------------------------------------------- /site/app/views/layouts/three_column.html.erb: -------------------------------------------------------------------------------- 1 | <% inside_layout 'base_layout_new' do %> 2 | 3 |
    4 | <%= yield :left_column %> 5 |
    6 | 7 |
    8 | <%= yield %> 9 |
    10 | 11 |
    12 | <%= render :partial => 'general_display/dataset_format_selector' %> 13 | <%= render(:partial => 'shared/default_sidebar') %> 14 | <%# (sidebar = yield :sidebar) ? sidebar : render(:partial => 'shared/default_sidebar') %> 15 | <%= yield :sidebar %> 16 | <%= image_tag 'ajax-loader.gif', :id => 'spinner', :style => 'display:none' %> 17 |
    18 | 19 | 20 | 24 | 25 | <% end %> 26 | -------------------------------------------------------------------------------- /site/app/views/programs/create_bundle.rjs: -------------------------------------------------------------------------------- 1 | page[:program_download_box].replace_html (@program_bundle_url ? (link_to "[download zip]", @program_bundle_url) : "Creating zip failed: #{@program_bundle_error}") 2 | -------------------------------------------------------------------------------- /site/app/views/programs/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
    6 | <%= make_list "ul", [programNewButton] %> 7 |
    8 | <% end %> 9 | 10 |

    A program performs a machine learning task (e.g., regression, binary classification), 11 | taking a dataset as input.

    12 | 13 | <% if sessionTaskTypes[0] != '(all)' then %> 14 |
    15 | <%= sessionTaskTypes[0] %>: 16 | <%= Domain.get(sessionTaskTypes[0]).taskDescription %> 17 |
    18 | <% end %> 19 | 20 |

    21 | The table below shows everyone's programs that have been checked successfully in <%= sessionTaskTypeStr %>. 22 | To see only your programs, go to <%= link_to 'my stuff', :controller => 'my_stuff' %>. 23 |

    24 | 25 |

    To create a run, first click on a program.

    26 | 27 | <%= render :partial => 'table/many_table_show', :locals => { :tparams => @tparams } %> 28 | -------------------------------------------------------------------------------- /site/app/views/programs/new.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
    6 | <%= make_list "ul", [programShowAllButton] %> 7 |
    8 | <% end %> 9 | 10 | <%= error_messages_for :program %> 11 | 12 |

    Upload Program

    13 |
    14 | 15 | <% form_for(@program, :html => {:multipart => true}) do |f| %> 16 | 17 |

    Your program must contain an executable which conforms to a standard program interface. 18 | For an example of how this interface is implemented, download any existing <%= link_to 'program', :controller => 'programs' %>. 19 |

    20 | 21 | You can upload one of the following: 22 |
      23 |
    1. A single executable script run.
    2. 24 |
    3. A zip file containing a file called run and other files. 25 | This zip file can optionally contain a metadata.
    4. 26 |
    27 | 28 |

    29 | 30 | <%= f.submit "Upload" %> 31 |

    32 | 33 | <% end %> 34 | -------------------------------------------------------------------------------- /site/app/views/programs/view_file.html.erb: -------------------------------------------------------------------------------- 1 | 12 |

    Displaying File <%= @filename %>

    13 |
    <%= @file %>
    14 | 17 | -------------------------------------------------------------------------------- /site/app/views/runs/_create_run_success.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | <%= link_to_function("See run progress", "window.opener.window.location.href = '" + url_for(:controller => 'runs', :action => 'show', :id => @run.id) + "'; window.close();") %>
    5 | This window will close in 5 seconds. 6 |
    7 | -------------------------------------------------------------------------------- /site/app/views/runs/_dset_choose.html.erb: -------------------------------------------------------------------------------- 1 | <% default_tparams = { 2 | :columns => [:dset_add_to_list, :dset_name_nolink, :dset_user_nolink], 3 | :name => "datasets", 4 | :model => 'Dataset', 5 | :limit => 10, 6 | :width => '100%', 7 | :show_footer => true, 8 | :paginate => true, 9 | :pagination_page => 0, 10 | :include => 'user', 11 | } %> 12 | <% all_tparams = [ 13 | ['(all compat.)', { 14 | :filters => [['format', @dset_format]] 15 | } 16 | ], 17 | [ 18 | '(mine)', 19 | {:filters => [['format', @dset_format], 20 | ['user_id', session[:user].id]] 21 | } 22 | ]].map do |name,hash| 23 | [name, default_tparams.merge(hash)] 24 | end %> 25 | <%= render :partial => 'table/many_table_show', :locals => { :tparams => all_tparams } %> -------------------------------------------------------------------------------- /site/app/views/runs/_prg_choose.html.erb: -------------------------------------------------------------------------------- 1 | <% default_tparams = { 2 | :name => "programs", 3 | :model => 'Program', 4 | :columns => [:prg_add_to_list, :prg_name_nolink, :prg_user_nolink], 5 | :limit => 10, 6 | :width => '100%', 7 | :show_footer => true, 8 | :paginate => true, 9 | :pagination_page => 0, 10 | :include => 'user' 11 | } %> 12 | <% all_tparams = [ 13 | ['(compatible)', { 14 | :filters => [['task_type', RunInfo.compatibleTaskTypes(@dset_format), 'in']] 15 | } 16 | ], 17 | [ 18 | '(mine)', 19 | {:filters => [['task_type', RunInfo.compatibleTaskTypes(@dset_format), 'in'], 20 | ['user_id', session[:user].id]] 21 | } 22 | ]].map do |name,hash| 23 | [name, default_tparams.merge(hash)] 24 | end %> 25 | <%= render :partial => 'table/many_table_show', 26 | :locals => { 27 | :tparams => all_tparams #Program.create_tparams(:taskTypes => RunInfo.compatibleTaskTypes(@dset_format)) 28 | } %> 29 | -------------------------------------------------------------------------------- /site/app/views/runs/_run_spec.html.erb: -------------------------------------------------------------------------------- 1 | Detailed specification: 2 | <%= getRunSpecTree(:program => @program, :dataset => @dataset, :tune => @tune) %> 3 | -------------------------------------------------------------------------------- /site/app/views/runs/_runs_comparison.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <% @datasets.each do |dset| %> 5 | 6 | <% end -%> 7 | 8 | <% @matrix.each_with_index do |prglst,pind| %> 9 | 10 | 11 | <% prglst.each_with_index do |runs,dind| %> 12 | 20 | <% end -%> 21 | 22 | <% end -%> 23 |
     <%= dset.name %>
    <%= @programs[pind].name %><%= if runs.empty? then 13 | "none - " + link_to_function("create?", 14 | "prgid_torun = #{@programs[pind].id}; 15 | dsetid_torun = #{@datasets[dind].id}; 16 | startRun();") 17 | else 18 | display_runs_list runs 19 | end %>
    -------------------------------------------------------------------------------- /site/app/views/runs/_runs_table.html.erb: -------------------------------------------------------------------------------- 1 | <% shortened = (defined? shorten) && shorten %> 2 | <% columns = shortened ? [0,1,8] : (0..8).to_a %> 3 | <% title = local_assigns[:title] %> 4 | <% headers = %w(RunID Program Dataset Status LearnTime TrainTime TestTime TrainError TestError) %> 5 | 6 | <% headers = columns.map { |ind| headers[ind] } %> 7 | 8 | <% body = [] %> 9 | 10 | <% if runs 11 | for run in runs 12 | if run.info.class == SupervisedLearningRunInfo then 13 | row_data = [] 14 | row_data << (link_to run.id, run_path(run)) 15 | row_data << (run.info.learner ? program_link(run.info.learner) : "(deleted)") 16 | row_data << (run.info.dataset ? dataset_link(run.info.dataset) : "(deleted)") 17 | row_data << (run.status && run.status.status) 18 | row_data << Format.time(run.info.learnTime) 19 | row_data << Format.time(run.info.predictTrainTime) 20 | row_data << Format.time(run.info.predictTestTime) 21 | row_data << Format.double(run.info.predictTrainError) 22 | row_data << Format.double(run.info.predictTestError) 23 | body << (columns.map {|ind| row_data[ind]}) 24 | end 25 | end 26 | end 27 | %> 28 | 29 | <%= make_nice_table headers, body, title %> 30 | -------------------------------------------------------------------------------- /site/app/views/runs/create_bundle.rjs: -------------------------------------------------------------------------------- 1 | page[:run_download_box].replace_html (@run_bundle_url ? (link_to "[download zip]", @run_bundle_url) : "Creating zip failed: #{@run_bundle_error}") 2 | -------------------------------------------------------------------------------- /site/app/views/runs/create_several_runs.html.erb: -------------------------------------------------------------------------------- 1 | <% header = %w{DatasetName DatasetID ProgramName ProgramID ModelSelection?} %> 2 | <% rows = [] %> 3 | <% count = 0 %> 4 | <% @programs.each do |prg| 5 | @datasets.each do |dset| 6 | count = count + 1 7 | hidden_tags = (hidden_field_tag ("runs[#{count}][dataset_id]", dset.id)) + "\n" 8 | hidden_tags << (hidden_field_tag ("runs[#{count}][program_id]", prg.id)) + "\n" 9 | row = [dset.name, dset.id.to_s, prg.name, prg.id, 10 | hidden_tags + (check_box_tag "runs[#{count}][modelselect]", "yes", false)] 11 | rows << row 12 | end 13 | end %> 14 | 15 | <% form_remote_tag :html => { 16 | :action => {:action => 'create_several_runs', :controller => 'runs'}, 17 | :id => 'multiple_runs_form' 18 | }, 19 | :after => "$('multiple_runs_form').disable(); $('creation_result').show()", 20 | :url => {:action => 'create_several_runs', :controller => 'runs'} do %> 21 | <%= make_nice_table header, rows, "Initiating the Following Runs" %> 22 | <%= submit_tag "confirm" %> 23 | <% end %> 24 | 25 | 28 | -------------------------------------------------------------------------------- /site/app/views/runs/creation_outcomes.rjs: -------------------------------------------------------------------------------- 1 | outcome = "" 2 | @errors.each do |error| 3 | outcome << "
  • Error: " + (h error.inspect.to_s) + "
  • \n" 4 | end 5 | @successes.each do |success| 6 | outcome << ("
  • Success: " + 7 | success[:dataset] + " - " + success[:program] + "
  • \n") 8 | end 9 | outcome = "
      \n" + outcome + "
    \n" 10 | page.insert_html (:bottom, :creation_result, outcome) 11 | # page.insert_html :bottom, :creation_result, "

    You may try again

    " 12 | # page['multiple_runs_form'].enable 13 | page[:creation_result].highlight 14 | page.delay(3) do 15 | page.call "window.close()" 16 | # page.redirect_to :action => 'index' 17 | end 18 | -------------------------------------------------------------------------------- /site/app/views/runs/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    Editing run

    2 | 3 | <%= error_messages_for :run %> 4 | 5 | <% form_for(@run) do |f| %> 6 |

    7 | <%= collection_select("run", "program_id" , Program.find(:all), "id", "name") %> 8 | <%= f.submit "Update" %> 9 |

    10 | <% end %> 11 | 12 | <%= link_to 'Show', @run %> | 13 | <%= link_to 'Back', runs_path %> 14 | -------------------------------------------------------------------------------- /site/app/views/runs/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
    6 |
    7 | 8 | <% end %> 9 | 10 |

    A run is the execution and evaluation of a program on a dataset.

    11 | 12 |

    To create a run, first choose a <%= link_to 'program', programs_path %> or a <%= link_to 'dataset', datasets_path %>.

    13 | 14 |

    Summary: <%= Run.countByStatus('ready') %> queued, 15 | <%= Run.countByStatus('running') %> running, 16 | <%= Run.countByStatus('done') %> successful, 17 | <%= Run.countByStatus('failed') %> failed

    18 | 19 | <%= render :partial => 'table/many_table_show', :locals => { :tparams => @tparams } %> 20 | -------------------------------------------------------------------------------- /site/app/views/runs/list_by_dataset.html.erb: -------------------------------------------------------------------------------- 1 |

    Listing runs for <%= link_to(@dataset.name, @dataset) %>

    2 | 3 | <%= render :partial => "runs_table" %> 4 | 5 |
    6 | 7 | <%= link_to 'New run', new_run_path %> 8 | -------------------------------------------------------------------------------- /site/app/views/runs/new.html.erb: -------------------------------------------------------------------------------- 1 | DEPRECATED 2 |

    New run

    3 | 4 | <%= error_messages_for :run %> 5 | 6 | <% form_for(@run) do |f| %> 7 |

    8 | Program: <%= collection_select(:slrun, :learner_id, Program.find(:all, 9 | :conditions => ['task_type = ? OR task_type = ? OR task_type = ? OR task_type = ?', 10 | 'BinaryClassification', 'MulticlassClassification', 11 | 'Regression', 'SequenceTagging']).delete_if { |p| p.hasConstructor? }, "id", "name") %> 12 |

    13 |

    14 | Dataset: <%= collection_select(:slrun, :dataset_id, Dataset.find(:all, 15 | :conditions => 'processed = 1'), "id", "name") %> 16 |

    17 |

    18 | <%= f.submit "Create" %> 19 |

    20 | <% end %> 21 | 22 | <%= link_to 'Back', runs_path %> 23 | -------------------------------------------------------------------------------- /site/app/views/shared/_comment.html.erb: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | <%= image_tag "icon_profile.gif" %> 4 |
    5 |
    6 | <%= comment.user.fullname %> (<%= link_to comment.user.username, {:controller => "users", :action => "show", :id => comment.user[:id]} %>)
    7 | <%= comment.user.affiliation %>
    8 | Posted at <%= comment.created_at.to_s %> 9 | <% if session[:user] && (session[:user].id == comment.user[:id]) %> 10 |
    11 | 12 | <%= link_to_remote "Delete Comment", :url => { 13 | :controller => 'general_display', :action => "delete_comment", :id => comment.id }, 14 | :html => {:class => 'smallbutton'} 15 | # , :confirm => "Are you certain you want to delete this comment?" 16 | %> 17 | 18 | <% end %> 19 |
    20 |
    21 |
    22 | <%= comment.title %> 23 |
    24 |
    25 | <%= comment.comment %> 26 |
    27 |
    28 |
    29 |
    30 | -------------------------------------------------------------------------------- /site/app/views/shared/_default_sidebar.html.erb: -------------------------------------------------------------------------------- 1 | <% if not loggedin? %> 2 | <%= render :partial => 'general_display/login' %> 3 | <% end %> 4 | 5 | <%= render :partial => 'general_display/comment_form' %> 6 | 7 | <%= render :partial => 'shared/faq_mini_box' %> 8 | -------------------------------------------------------------------------------- /site/app/views/shared/_faq_mini_box.html.erb: -------------------------------------------------------------------------------- 1 | <% view_name = controller.controller_name + "/" + controller.action_name %> 2 | <% questions = @questions.select{|q| q['tags'].index(view_name)} %> 3 | <% unless questions.empty? %> 4 | 5 |
    6 | <%= render :partial => 'faq/question_list', :locals => { 7 | :questions => questions 8 | } %> 9 | 10 |
    11 | <% end -%> 12 | -------------------------------------------------------------------------------- /site/app/views/shared/_twitter_news.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 33 | -------------------------------------------------------------------------------- /site/app/views/static/help/simple-dataset/metadata: -------------------------------------------------------------------------------- 1 | name: simple-dataset 2 | description: A simple dataset for testing out the mlcomp infrastructure. 3 | format: MulticlassClassification 4 | -------------------------------------------------------------------------------- /site/app/views/static/help/simple-dataset/raw: -------------------------------------------------------------------------------- 1 | 1 2:1 3:1 2 | 2 1:1 3:1 3 | 3 1:1 2:1 4 | 1 2:1 3:1 5 | 2 1:1 3:1 6 | 2 1:1 7 | -------------------------------------------------------------------------------- /site/app/views/static/help/simple-naive-bayes/metadata: -------------------------------------------------------------------------------- 1 | name: simple-naive-bayes 2 | description: A Simple Naive Bayes implementation in Ruby. 3 | task: MulticlassClassification 4 | -------------------------------------------------------------------------------- /site/app/views/static/index.html: -------------------------------------------------------------------------------- 1 |

    2 | MLcomp is currently unavailable due to maintainence. 3 | We apologize for the inconvenience. 4 |

    5 | -------------------------------------------------------------------------------- /site/app/views/table/_many_table_show.html.erb: -------------------------------------------------------------------------------- 1 | <% if tparams.size > 0 %> 2 | 3 | <% 4 | table_name = tparams.first[1][:name] 5 | select_field_name = 'format_' + table_name 6 | dropdown_options = [] 7 | tparams.each do |key,tp| 8 | dropdown_options << [key, tp.to_json] 9 | end 10 | %> 11 | 12 |
    13 | <% if tparams.size > 1 %> 14 | <% dropdown = select_tag(select_field_name, options_for_select(dropdown_options)) %> 15 | <% else %> 16 | <% dropdown = select_tag(select_field_name, options_for_select(dropdown_options), :style => "display:none") %> 17 | <% end %> 18 | <%= render :partial => 'table/table_container', 19 | :locals => { :table_params => tparams.first[1], :dropdown => dropdown } %> 20 |
    21 | 22 | <%= observe_field select_field_name, 23 | :on => "selected" , 24 | :before => "Element.show('spinner')", 25 | :success => "Element.hide('spinner')", 26 | :function => "setTableData('#{table_name}', value); 27 | updateTable('#{table_name}');" 28 | %> 29 | 30 | <% end %> 31 | -------------------------------------------------------------------------------- /site/app/views/table/new_table_play.html.erb: -------------------------------------------------------------------------------- 1 | <% @table_params = default_table_params %> 2 | <% @table_params.merge!({:name => 'mytable', :paginate => true, :pagination_page => 0, :limit => 10}) %> 3 | 4 | <%= render :partial => 'table_container', :locals => {:table_params => @table_params} %> 5 | -------------------------------------------------------------------------------- /site/app/views/table/query.rjs: -------------------------------------------------------------------------------- 1 | tname = @table_params[:name] 2 | pagname = @table_params[:name].to_s + "_pagination" 3 | page[tname].replace_html :partial => 'table_data' 4 | page[pagname].replace_html pagination_line(@table_params, @items.length, @total) -------------------------------------------------------------------------------- /site/app/views/users/_new_user_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= error_messages_for :user, :header_message => nil %> 2 | 3 | <% form_for :user, :url => {:action => action, :id => id} do |f| %> 4 | 5 | <% if true %> 6 |

    7 | Username <%= @errors && @errors.on(:username) %>
    8 | <%= f.text_field :username %> 9 |

    10 | 11 |

    12 | Password <%= @errors && @errors.on(:password) %>
    13 | <%= f.password_field :password %> 14 |

    15 |

    16 | Confirm password
    17 | <%= f.password_field :password_confirmation %> 18 |

    19 | 20 |
    21 | <% end %> 22 | 23 |

    24 | Full name <%= @errors && @errors.on(:fullname) %>
    25 | <%= f.text_field :fullname %> 26 |

    27 | 28 |

    29 | Email (we will not spam you) <%= @errors && @errors.on(:email) %>
    30 | <%= f.text_field :email %> 31 |

    32 | 33 |

    34 | Affiliation (e.g., school, company, etc.)
    35 | <%= f.text_field :affiliation %> 36 |

    37 | 38 |

    39 | <%= f.submit submitText %> 40 |

    41 | 42 | <% end %> 43 | -------------------------------------------------------------------------------- /site/app/views/users/announcements.html.erb: -------------------------------------------------------------------------------- 1 |

    Create new announcement

    2 | 3 | <% form_tag(:action => "announcements") do %> 4 |
    5 | <%= text_field_tag 'email_subject', '', :size => 60 %>
    6 |
    7 | <%= text_area_tag 'email_body', '', :rows => 20, :cols => 60 %>
    8 | <%= submit_tag "Send" %> 9 | <% end -%> 10 | 11 |

    Announcements to process: <%= Announcement.count(:conditions => 'processed = false') %> out of <%= Announcement.count() %>

    -------------------------------------------------------------------------------- /site/app/views/users/edit.html.erb: -------------------------------------------------------------------------------- 1 |

    Editing profile

    2 | 3 | <%= render :partial => 'users/new_user_form', :locals => { :action => :update, :id => @user.id, :submitText => "Update" } %> 4 | -------------------------------------------------------------------------------- /site/app/views/users/forgot.html.erb: -------------------------------------------------------------------------------- 1 | <%= error_messages_for :user %> 2 | <% form_for :user do |f| -%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
    Request link to reset password
    <%= f.text_field :email %>
    <%= submit_tag 'Submit' %>
    20 | <% end -%> -------------------------------------------------------------------------------- /site/app/views/users/index.html.erb: -------------------------------------------------------------------------------- 1 |

    Users

    2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | <% for user in @users %> 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | <% end %> 31 |
    UsernameFull NameEmailCreated# Datasets# Programs# Runs
    <%=h user.username %><%=h user.fullname %><%=h user.email %><%=h user.created_at.to_s %><%=h user.datasets.length.to_s %><%=h user.programs.length.to_s %><%=h user.runs.length.to_s %><%= link_to 'Edit', :action => :edit, :id => user.id %><%= link_to 'LoginAs', :action => :loginas, :id => user.id %><%= link_to 'Destroy', :action => :destroy, :id => user.id, :confirm => 'Are you sure?' %>
    32 | 33 |
    34 | 35 | <%= link_to 'New user', :action => :new %> 36 | -------------------------------------------------------------------------------- /site/app/views/users/new.html.erb: -------------------------------------------------------------------------------- 1 |

    Creating an account

    2 | 3 | <%= render :partial => 'users/new_user_form', :locals => { :action => :create, :submitText => "Create" } %> 4 | -------------------------------------------------------------------------------- /site/app/views/users/reset.html.erb: -------------------------------------------------------------------------------- 1 | <%= error_messages_for :user %> 2 | <% form_for @user do |f| -%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
    Pick a new password for <%= @user.email %>
    <%= f.password_field :password %>
    <%= f.password_field :password_confirmation %>
    <%= submit_tag 'Reset' %>
    25 | <% end -%> -------------------------------------------------------------------------------- /site/app/views/users/unsubscribe.html.erb: -------------------------------------------------------------------------------- 1 | <% if @user.receive_emails %> 2 |

    Please confirm that you want to unsubscribe

    3 | <%= @user.username %>
    4 | <%= @user.fullname %>
    5 | <%= @user.email %>
    6 | <%= link_to 'Confirm', :controller => 'users', :action => 'unsubscribe', :id => @user.id, :confirm => true, :code => @code %> 7 | <% else %> 8 |

    Our records indicate that you are not subscribed to mlcomp's emails list

    9 | 10 | The email address <%= @user.email %> is not subscribed to our list. If this is in error, please contact mlcomp.support@gmail.com for more information. 11 | <% end -%> -------------------------------------------------------------------------------- /site/app/views/users/unsubscribe_success.html.erb: -------------------------------------------------------------------------------- 1 |

    Success

    2 | You have successfully unsubscribed <%= @user.email %> from our email list -------------------------------------------------------------------------------- /site/app/views/workers/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :sidebar do %> 2 | 5 |
    6 | <% btn_list = [] %> 7 | <% n = Worker.countInactive %> 8 | <% btn_list << nice_button("Remove #{n} inactive workers", :action => :prune, :id => :none) if n > 0 %> 9 | <%= make_list "ul", btn_list %> 10 |
    11 | <% end %> 12 | 13 |

    A worker performs a run.

    14 | 15 | <%= render :partial => 'table/many_table_show', :locals => { :tparams => @tparams } %> 16 | -------------------------------------------------------------------------------- /site/config/environments/development.rb: -------------------------------------------------------------------------------- 1 | # Settings specified here will take precedence over those in config/environment.rb 2 | 3 | # In the development environment your application's code is reloaded on 4 | # every request. This slows down response time but is perfect for development 5 | # since you don't have to restart the webserver when you make code changes. 6 | config.cache_classes = false 7 | 8 | # Log error messages when you accidentally call methods on nil. 9 | config.whiny_nils = true 10 | 11 | # Show full error reports and disable caching 12 | config.action_controller.consider_all_requests_local = true 13 | config.action_view.debug_rjs = true 14 | config.action_controller.perform_caching = false 15 | config.action_view.cache_template_extensions = false 16 | 17 | # Don't care if the mailer can't send 18 | config.action_mailer.raise_delivery_errors = false 19 | -------------------------------------------------------------------------------- /site/config/environments/production.rb: -------------------------------------------------------------------------------- 1 | # Settings specified here will take precedence over those in config/environment.rb 2 | 3 | # The production environment is meant for finished, "live" apps. 4 | # Code is not reloaded between requests 5 | config.cache_classes = true 6 | 7 | # Use a different logger for distributed setups 8 | # config.logger = SyslogLogger.new 9 | 10 | # Full error reports are disabled and caching is turned on 11 | config.action_controller.consider_all_requests_local = false 12 | config.action_controller.perform_caching = true 13 | config.action_view.cache_template_loading = true 14 | 15 | # Enable serving of images, stylesheets, and javascripts from an asset server 16 | # config.action_controller.asset_host = "http://assets.example.com" 17 | 18 | # Disable delivery errors, bad email addresses will be ignored 19 | # config.action_mailer.raise_delivery_errors = false 20 | -------------------------------------------------------------------------------- /site/config/environments/test.rb: -------------------------------------------------------------------------------- 1 | # Settings specified here will take precedence over those in config/environment.rb 2 | 3 | # The test environment is used exclusively to run your application's 4 | # test suite. You never need to work with it otherwise. Remember that 5 | # your test database is "scratch space" for the test suite and is wiped 6 | # and recreated between test runs. Don't rely on the data there! 7 | config.cache_classes = true 8 | 9 | # Log error messages when you accidentally call methods on nil. 10 | config.whiny_nils = true 11 | 12 | # Show full error reports and disable caching 13 | config.action_controller.consider_all_requests_local = true 14 | config.action_controller.perform_caching = false 15 | 16 | # Disable request forgery protection in test environment 17 | config.action_controller.allow_forgery_protection = false 18 | 19 | # Tell ActionMailer not to deliver emails to the real world. 20 | # The :test delivery method accumulates sent emails in the 21 | # ActionMailer::Base.deliveries array. 22 | config.action_mailer.delivery_method = :test 23 | -------------------------------------------------------------------------------- /site/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format 4 | # (all these examples are active by default): 5 | # Inflector.inflections do |inflect| 6 | # inflect.plural /^(ox)$/i, '\1en' 7 | # inflect.singular /^(ox)en/i, '\1' 8 | # inflect.irregular 'person', 'people' 9 | # inflect.uncountable %w( fish sheep ) 10 | # end 11 | -------------------------------------------------------------------------------- /site/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | -------------------------------------------------------------------------------- /site/config/mlcomp_site_params.yml.example: -------------------------------------------------------------------------------- 1 | --- 2 | :email_configured: true # Set this if you want to enable email. 3 | :email_config_params: # Information used to send out all emails. 4 | :port: 587 5 | :authentication: :plain 6 | :user_name: USERNAME@gmail.com 7 | :password: PASSWORD 8 | :address: smtp.gmail.com 9 | :notify_recipients: # When user comments or events happen on the server, these email addresses get notified. 10 | - @gmail.com 11 | - @gmail.com 12 | -------------------------------------------------------------------------------- /site/db/migrate/001_create_users.rb: -------------------------------------------------------------------------------- 1 | class CreateUsers < ActiveRecord::Migration 2 | def self.up 3 | create_table :users do |t| 4 | t.string :username, :limit => 30, :null => false 5 | t.string :password_hash, :limit => 30, :null => false 6 | t.timestamps 7 | end 8 | end 9 | 10 | def self.down 11 | drop_table :users 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /site/db/migrate/002_create_datasets.rb: -------------------------------------------------------------------------------- 1 | class CreateDatasets < ActiveRecord::Migration 2 | def self.up 3 | create_table :datasets do |t| 4 | t.string :name, :limit => 60 5 | t.text :description 6 | t.text :source 7 | t.string :task_type 8 | t.string :location #local path at which dataset stored 9 | t.timestamps 10 | end 11 | 12 | create_table :datasets_users do |t| 13 | t.integer :dataset_id, :user_id 14 | end 15 | end 16 | 17 | def self.down 18 | drop_table :datasets 19 | drop_table :datasets_users 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /site/db/migrate/003_remove_location_from_dataset.rb: -------------------------------------------------------------------------------- 1 | class RemoveLocationFromDataset < ActiveRecord::Migration 2 | def self.up 3 | remove_column :datasets, :location 4 | end 5 | 6 | def self.down 7 | add_column :datasets, :location, :string 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/004_create_programs.rb: -------------------------------------------------------------------------------- 1 | class CreatePrograms < ActiveRecord::Migration 2 | def self.up 3 | create_table :programs do |t| 4 | t.string :name, :limit => 60 5 | t.text :description 6 | t.string :format #language of program; binary? 7 | t.timestamps 8 | end 9 | 10 | create_table(:programs_users, :id => false) do |t| 11 | t.integer :program_id, :user_id 12 | end 13 | end 14 | 15 | def self.down 16 | drop_table :programs 17 | drop_table :programs_users 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /site/db/migrate/005_create_runs.rb: -------------------------------------------------------------------------------- 1 | class CreateRuns < ActiveRecord::Migration 2 | def self.up 3 | create_table :runs do |t| 4 | t.belongs_to :user 5 | t.belongs_to :program, :null => false 6 | t.belongs_to :dataset, :null => false 7 | t.timestamps 8 | end 9 | end 10 | 11 | def self.down 12 | drop_table :runs 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /site/db/migrate/006_fix_references_datasets_programs.rb: -------------------------------------------------------------------------------- 1 | class FixReferencesDatasetsPrograms < ActiveRecord::Migration 2 | def self.up 3 | drop_table :datasets_users 4 | add_column :datasets, :user_id, :integer #datasets belong to users 5 | 6 | drop_table :programs_users 7 | add_column :programs, :user_id, :integer #programs belong to users 8 | end 9 | 10 | def self.down 11 | create_table(:datasets_users, :id=>false) do |t| 12 | t.integer :dataset_id, :user_id 13 | end 14 | remove_column :datasets, :user_id 15 | 16 | create_table(:programs_users, :id => false) do |t| 17 | t.integer :program_id, :user_id 18 | end 19 | remove_column :programs, :user_id 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /site/db/migrate/007_add_fullname_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddFullnameToUser < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :fullname, :string 4 | end 5 | 6 | def self.down 7 | remove_column :users, :fullname 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/008_fix_password_length.rb: -------------------------------------------------------------------------------- 1 | class FixPasswordLength < ActiveRecord::Migration 2 | def self.up 3 | change_column :users, :password_hash, :string, :null => false 4 | end 5 | 6 | def self.down 7 | change_column :users, :password_hash, :string, :limit => 30, :null => false 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/009_add_admin_user.rb: -------------------------------------------------------------------------------- 1 | class AddAdminUser < ActiveRecord::Migration 2 | def self.up 3 | #unless User.find_by_username("admin") 4 | #adminparams = {:username => "admin", :password => "mlcomp", :fullname => "The Administrator"} 5 | #admin = User.create adminparams; 6 | #end 7 | end 8 | 9 | def self.down 10 | #user = User.find_by_username("admin") 11 | #unless user.nil? 12 | #user.destroy 13 | #end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /site/db/migrate/011_create_run_statuses.rb: -------------------------------------------------------------------------------- 1 | class CreateRunStatuses < ActiveRecord::Migration 2 | def self.up 3 | create_table :run_statuses do |t| 4 | t.belongs_to :run, :null => false 5 | t.integer :max_memory_usage # Over the course of the run (bytes) 6 | t.integer :memory_usage # The current (final if run is done) (bytes) 7 | t.integer :max_disk_usage # Over the course of the run (bytes) 8 | t.integer :disk_usage # The current (final if run is done) (bytes) 9 | t.integer :real_time # Actual time spent running (milliseconds) 10 | t.integer :user_time # Effective CPU time (milliseconds) 11 | t.string :status # One of {ready, inprogress, done} 12 | t.timestamps 13 | end 14 | end 15 | 16 | def self.down 17 | drop_table :run_statuses 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /site/db/migrate/012_create_run_results.rb: -------------------------------------------------------------------------------- 1 | class CreateRunResults < ActiveRecord::Migration 2 | def self.up 3 | create_table :run_results do |t| 4 | t.string :key 5 | t.string :value 6 | t.belongs_to :run 7 | t.timestamps 8 | end 9 | end 10 | 11 | def self.down 12 | drop_table :run_results 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /site/db/migrate/013_revamp_runs.rb: -------------------------------------------------------------------------------- 1 | class RevampRuns < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :specification, :text 4 | add_column :runs, :result, :text 5 | add_column :runs, :allowed_time, :integer 6 | add_column :runs, :allowed_memory, :integer 7 | add_column :runs, :allowed_disk, :integer 8 | 9 | create_table :run_programs do |t| 10 | t.belongs_to :run 11 | t.belongs_to :program 12 | t.timestamps 13 | end 14 | 15 | drop_table :run_construct_arg_programs 16 | drop_table :run_results 17 | end 18 | 19 | def self.down 20 | remove_column :runs, :specification 21 | remove_column :runs, :result 22 | remove_column :runs, :allowed_time 23 | remove_column :runs, :allowed_memory 24 | remove_column :runs, :allowed_disk 25 | 26 | drop_table :run_programs 27 | 28 | create_table :run_construct_arg_programs do |t| 29 | t.belongs_to :run 30 | t.belongs_to :program 31 | t.timestamps 32 | end 33 | create_table :run_results do |t| 34 | t.string :key 35 | t.string :value 36 | t.belongs_to :run 37 | t.timestamps 38 | end 39 | end 40 | end 41 | -------------------------------------------------------------------------------- /site/db/migrate/014_remove_main_program_id.rb: -------------------------------------------------------------------------------- 1 | class RemoveMainProgramId < ActiveRecord::Migration 2 | def self.up 3 | remove_column :runs, :main_program_id 4 | end 5 | 6 | def self.down 7 | add_column :runs, :main_program_id, :integer 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/015_add_info_spec.rb: -------------------------------------------------------------------------------- 1 | class AddInfoSpec < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :info_spec, :string 4 | end 5 | 6 | def self.down 7 | remove_column :runs, :info_spec 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/016_remove_split_present.rb: -------------------------------------------------------------------------------- 1 | class RemoveSplitPresent < ActiveRecord::Migration 2 | def self.up 3 | remove_column :datasets, :user_split_present 4 | end 5 | 6 | def self.down 7 | add_column :datasets, :user_split_present, :boolean 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/017_add_size_and_dataset_status.rb: -------------------------------------------------------------------------------- 1 | class AddSizeAndDatasetStatus < ActiveRecord::Migration 2 | def self.up 3 | add_column :datasets, :disk_size, :integer 4 | add_column :programs, :disk_size, :integer 5 | add_column :datasets, :result, :string 6 | end 7 | 8 | def self.down 9 | remove_column :datasets, :disk_size 10 | remove_column :programs, :disk_size 11 | remove_column :datasets, :result 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /site/db/migrate/018_dataset_processor_feedback.rb: -------------------------------------------------------------------------------- 1 | class DatasetProcessorFeedback < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :processed_dataset_id, :integer 4 | add_column :datasets, :processed, :boolean 5 | end 6 | 7 | def self.down 8 | remove_column :runs, :processed_dataset_id 9 | remove_column :datasets, :processed 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/db/migrate/019_string_to_text.rb: -------------------------------------------------------------------------------- 1 | class StringToText < ActiveRecord::Migration 2 | def self.up 3 | change_column :datasets, :result, :text 4 | change_column :runs, :info_spec, :text 5 | end 6 | 7 | def self.down 8 | change_column :datasets, :result, :string 9 | change_column :runs, :info_spec, :string 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/db/migrate/020_types.rb: -------------------------------------------------------------------------------- 1 | class Types < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :constructor_signature, :string 4 | end 5 | def self_down 6 | remove_column :programs, :constructor_signature 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/db/migrate/022_zero_sort_fields.rb: -------------------------------------------------------------------------------- 1 | class ZeroSortFields < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :sort0, :double 4 | add_column :datasets, :sort0, :double 5 | add_column :runs, :sort0, :double 6 | end 7 | def self_down 8 | remove_column :programs, :sort0 9 | remove_column :datasets, :sort0 10 | remove_column :runs, :sort0 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /site/db/migrate/023_run_program_dataset_fields.rb: -------------------------------------------------------------------------------- 1 | class RunProgramDatasetFields < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :main_program, :integer 4 | add_column :runs, :main_dataset, :integer 5 | end 6 | def self_down 7 | remove_column :runs, :main_program 8 | remove_column :runs, :main_dataset 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /site/db/migrate/20090105033521_create_workers.rb: -------------------------------------------------------------------------------- 1 | class CreateWorkers < ActiveRecord::Migration 2 | def self.up 3 | create_table :workers do |t| 4 | t.string :handle 5 | t.string :host, :limit => 60 6 | t.integer :num_cpus 7 | t.integer :cpu_speed 8 | t.integer :max_memory 9 | t.integer :max_disk 10 | t.timestamps 11 | end 12 | 13 | create_table :workers_users do |t| 14 | t.integer :worker_id, :user_id 15 | end 16 | create_table :workers_runs do |t| 17 | t.integer :worker_id, :run_id 18 | end 19 | end 20 | 21 | def self.down 22 | drop_table :workers 23 | drop_table :workers_users 24 | drop_table :workers_runs 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /site/db/migrate/20090105070115_update_worker_fields.rb: -------------------------------------------------------------------------------- 1 | class UpdateWorkerFields < ActiveRecord::Migration 2 | def self.up 3 | drop_table :workers_users 4 | drop_table :workers_runs 5 | add_column :workers, :user_id, :integer 6 | add_column :workers, :current_run_id, :integer 7 | end 8 | 9 | def self.down 10 | create_table :workers_users do |t| 11 | t.integer :worker_id, :user_id 12 | end 13 | create_table :workers_runs do |t| 14 | t.integer :worker_id, :run_id 15 | end 16 | remove_column :workers, :user_id 17 | remove_column :workers, :current_run_id 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /site/db/migrate/20090105205109_run_worker.rb: -------------------------------------------------------------------------------- 1 | class RunWorker < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :worker_id, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :runs, :worker_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090105210700_worker_commands.rb: -------------------------------------------------------------------------------- 1 | class WorkerCommands < ActiveRecord::Migration 2 | def self.up 3 | add_column :workers, :command, :string 4 | end 5 | 6 | def self.down 7 | remove_column :workers, :command 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090106190056_main_id.rb: -------------------------------------------------------------------------------- 1 | class MainId < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :core_program_id, :integer 4 | add_column :runs, :core_dataset_id, :integer 5 | remove_column :runs, :main_program 6 | remove_column :runs, :main_dataset 7 | end 8 | 9 | def self.down 10 | remove_column :runs, :core_program_id 11 | remove_column :runs, :core_dataset_id 12 | add_column :runs, :main_program, :integer 13 | add_column :runs, :main_dataset, :integer 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /site/db/migrate/20090820012133_add_more_fields_to_users.rb: -------------------------------------------------------------------------------- 1 | class AddMoreFieldsToUsers < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :email, :string 4 | add_column :users, :affiliation, :string 5 | end 6 | 7 | def self.down 8 | remove_column :users, :email 9 | remove_column :users, :affiliation 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/db/migrate/20090822055710_program_datasets_valid.rb: -------------------------------------------------------------------------------- 1 | class ProgramDatasetsValid < ActiveRecord::Migration 2 | def self.up 3 | add_column :datasets, :valid, :boolean 4 | add_column :programs, :valid, :boolean 5 | add_column :datasets, :restricted_access, :boolean 6 | add_column :programs, :restricted_access, :boolean 7 | end 8 | 9 | def self.down 10 | remove_column :datasets, :valid 11 | remove_column :programs, :valid 12 | remove_column :datasets, :restricted_access 13 | remove_column :programs, :restricted_access 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /site/db/migrate/20090822061510_program_datasets_proper.rb: -------------------------------------------------------------------------------- 1 | class ProgramDatasetsProper < ActiveRecord::Migration 2 | def self.up 3 | remove_column :datasets, :valid 4 | remove_column :programs, :valid 5 | add_column :datasets, :proper, :boolean 6 | add_column :programs, :proper, :boolean 7 | end 8 | 9 | def self.down 10 | add_column :datasets, :valid, :boolean 11 | add_column :programs, :valid, :boolean 12 | remove_column :datasets, :proper 13 | remove_column :programs, :proper 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /site/db/migrate/20090924022336_program_ishelper.rb: -------------------------------------------------------------------------------- 1 | class ProgramIshelper < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :is_helper, :boolean 4 | end 5 | 6 | def self.down 7 | remove_column :programs, :is_helper 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090924053536_worker_version.rb: -------------------------------------------------------------------------------- 1 | class WorkerVersion < ActiveRecord::Migration 2 | def self.up 3 | add_column :workers, :version, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :workers, :version 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090928173733_adminfield.rb: -------------------------------------------------------------------------------- 1 | class Adminfield < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :admin, :boolean 4 | end 5 | 6 | def self.down 7 | remove_column :users, :admin 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090928181459_program_processed.rb: -------------------------------------------------------------------------------- 1 | class ProgramProcessed < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :processed, :boolean 4 | end 5 | 6 | def self.down 7 | remove_column :programs, :processed 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090928183336_rename_admin.rb: -------------------------------------------------------------------------------- 1 | class RenameAdmin < ActiveRecord::Migration 2 | def self.up 3 | remove_column :users, :admin 4 | add_column :users, :is_admin, :boolean 5 | end 6 | 7 | def self.down 8 | remove_column :users, :is_admin 9 | add_column :users, :admin, :boolean 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/db/migrate/20090930175026_run_performance.rb: -------------------------------------------------------------------------------- 1 | class RunPerformance < ActiveRecord::Migration 2 | def self.up 3 | add_column :runs, :performance, :double 4 | end 5 | 6 | def self.down 7 | remove_column :runs, :performance 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20090930181626_run_error.rb: -------------------------------------------------------------------------------- 1 | class RunError < ActiveRecord::Migration 2 | def self.up 3 | remove_column :runs, :performance 4 | add_column :runs, :error, :double 5 | end 6 | 7 | def self.down 8 | add_column :runs, :performance, :double 9 | remove_column :runs, :error 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/db/migrate/20091029042756_program_dataset_state.rb: -------------------------------------------------------------------------------- 1 | class ProgramDatasetState < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :process_status, :string 4 | add_column :datasets, :process_status, :string 5 | # Possible states: none, inprogress, success, failed 6 | (Program.find(:all)+Dataset.find(:all)).each { |x| 7 | x.process_status = x.processed ? 'success' : 'none' 8 | } 9 | remove_column :programs, :processed 10 | remove_column :datasets, :processed 11 | add_column :runs, :processed_program_id, :integer 12 | end 13 | 14 | def self.down 15 | add_column :programs, :processed, :boolean 16 | add_column :datasets, :processed, :boolean 17 | (Program.find(:all)+Dataset.find(:all)).each { |x| 18 | x.processed = x.process_status != 'success' 19 | } 20 | remove_column :programs, :process_status 21 | remove_column :datasets, :process_status 22 | remove_column :runs, :processed_program_id 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /site/db/migrate/20091105013404_add_user_reset_password_field.rb: -------------------------------------------------------------------------------- 1 | class AddUserResetPasswordField < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :reset_code, :string 4 | end 5 | 6 | def self.down 7 | remove_column :users, :reset_code 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20091113002227_add_comment_system.rb: -------------------------------------------------------------------------------- 1 | class AddCommentSystem < ActiveRecord::Migration 2 | def self.up 3 | create_table :comments, :force => true do |t| 4 | t.column :title, :string, :limit => 50, :default => "" 5 | t.column :comment, :string, :default => "" 6 | t.column :created_at, :datetime, :null => false 7 | t.column :commentable_id, :integer, :default => 0, :null => false 8 | t.column :commentable_type, :string, :limit => 15, 9 | :default => "", :null => false 10 | t.column :user_id, :integer, :default => 0, :null => false 11 | end 12 | 13 | add_index :comments, ["user_id"], :name => "fk_comments_user" 14 | end 15 | 16 | def self.down 17 | drop_table :comments 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /site/db/migrate/20091118102208_worker_last_run_time.rb: -------------------------------------------------------------------------------- 1 | class WorkerLastRunTime < ActiveRecord::Migration 2 | def self.up 3 | add_column :workers, :last_run_time, :datetime 4 | end 5 | 6 | def self.down 7 | remove_column :workers, :last_run_time 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20091223171853_add_more_prg_dset_info.rb: -------------------------------------------------------------------------------- 1 | class AddMorePrgDsetInfo < ActiveRecord::Migration 2 | def self.up 3 | add_column :datasets, :url, :string 4 | add_column :datasets, :author, :string 5 | add_column :programs, :url, :string 6 | add_column :programs, :language, :string 7 | add_column :programs, :tuneable, :boolean 8 | end 9 | 10 | def self.down 11 | remove_column :datasets, :url 12 | remove_column :datasets, :author 13 | remove_column :programs, :url 14 | remove_column :programs, :language 15 | remove_column :programs, :tuneable 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /site/db/migrate/20100121065917_add_all_table_indexes.rb: -------------------------------------------------------------------------------- 1 | class AddAllTableIndexes < ActiveRecord::Migration 2 | def self.up 3 | add_index :runs, [:core_dataset_id, :error] 4 | add_index :runs, [:core_program_id, :error] 5 | add_index :runs, [:user_id] 6 | add_index :run_programs, [:run_id, :program_id] 7 | add_index :run_datasets, [:run_id, :dataset_id] 8 | add_index :datasets, [:user_id] 9 | add_index :programs, [:user_id] 10 | add_index :runs, [:processed_dataset_id] 11 | add_index :runs, [:processed_program_id] 12 | end 13 | 14 | def self.down 15 | remove_index :runs, [:core_dataset_id, :error] 16 | remove_index :runs, [:core_program_id, :error] 17 | remove_index :runs, [:user_id] 18 | remove_index :run_programs, [:run_id, :program_id] 19 | remove_index :run_datasets, [:run_id, :dataset_id] 20 | remove_index :datasets, [:user_id] 21 | remove_index :programs, [:user_id] 22 | remove_index :runs, :processed_dataset_id 23 | remove_index :runs, :processed_program_id 24 | end 25 | end -------------------------------------------------------------------------------- /site/db/migrate/20100726194400_user_email_subscription.rb: -------------------------------------------------------------------------------- 1 | class UserEmailSubscription < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :receive_emails, :boolean, :default => true 4 | end 5 | 6 | def self.down 7 | remove_column :users, :receive_emails 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/db/migrate/20100726233641_create_announcements.rb: -------------------------------------------------------------------------------- 1 | class CreateAnnouncements < ActiveRecord::Migration 2 | def self.up 3 | create_table :announcements do |t| 4 | t.string :serialized_message, :limit => 2.megabytes 5 | t.string :message_type 6 | t.integer :user_id 7 | t.boolean :processed, :default => false 8 | t.boolean :success, :default => false 9 | 10 | t.timestamps 11 | end 12 | end 13 | 14 | def self.down 15 | drop_table :announcements 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /site/db/migrate/20101007183241_add_rating.rb: -------------------------------------------------------------------------------- 1 | class AddRating < ActiveRecord::Migration 2 | def self.up 3 | add_column :programs, :avg_percentile, :double 4 | add_column :datasets, :avg_stddev, :double 5 | end 6 | 7 | def self.down 8 | remove_column :programs, :avg_percentile 9 | remove_column :datasets, :avg_stddev 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /site/doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | Use this README file to introduce your application and point to useful places in the API for learning more. 2 | Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries. 3 | -------------------------------------------------------------------------------- /site/lib/mlcomp/Constants.rb: -------------------------------------------------------------------------------- 1 | # MLcomp: website for automatic and standarized execution of algorithms on datasets. 2 | # Copyright (C) 2010 by Percy Liang and Jake Abernethy 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU Affero General Public License as 6 | # published by the Free Software Foundation, either version 3 of the 7 | # License, or (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU Affero General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU Affero General Public License 15 | # along with this program. If not, see . 16 | 17 | class Constants 18 | BASE_PATH = ENV['MLCOMP_BASE_PATH'] or raise "Missing environment variable MLCOMP_BASE_PATH" 19 | DATASETS_DEFAULT_BASE_PATH = "#{BASE_PATH}/datasets" 20 | PROGRAMS_DEFAULT_BASE_PATH = "#{BASE_PATH}/programs" 21 | RUNS_DEFAULT_BASE_PATH = "#{BASE_PATH}/runs" 22 | TMP_PATH = ENV['TMP_PATH'] or raise "Missing environment variable TMP_PATH" 23 | end 24 | -------------------------------------------------------------------------------- /site/lib/mlcomp/GenericRunInfo.rb: -------------------------------------------------------------------------------- 1 | require 'mlcomp/RunInfo' 2 | 3 | # A RunInfo is used to create a RunSpecification, the tree that describes the constructor of the program to be executed. 4 | # Usually the RunInfo is parametrized by a few parameters (e.g., see SupervisedLearningRunInfo). 5 | # This RunInfo is parametrized by a RunSpecification directly. 6 | class GenericRunInfo < RunInfo 7 | attr_reader :runSpecTree 8 | 9 | def initialize(runSpecTree) 10 | super(nil) 11 | @runSpecTree = runSpecTree 12 | end 13 | 14 | def self.defaultRunInfoSpecObj(runSpecTree) 15 | Specification.new([self, runSpecTree]) 16 | end 17 | 18 | def getRunSpecObj 19 | spec = RunSpecification.new(@runSpecTree) 20 | spec.verifyTypes(RunException) 21 | spec 22 | end 23 | 24 | def coreProgram; nil end 25 | def coreDataset; nil end 26 | end 27 | -------------------------------------------------------------------------------- /site/lib/mlcomp/Logging.rb: -------------------------------------------------------------------------------- 1 | # MLcomp: website for automatic and standarized execution of algorithms on datasets. 2 | # Copyright (C) 2010 by Percy Liang and Jake Abernethy 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU Affero General Public License as 6 | # published by the Free Software Foundation, either version 3 of the 7 | # License, or (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU Affero General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU Affero General Public License 15 | # along with this program. If not, see . 16 | 17 | def log(s="",verbose=0) 18 | $logger = open(ENV['MLCOMP_SOURCE_PATH']+'/site/log/mlcomp.log', "a") unless $logger 19 | s = "#{verbose} #{Format.datetime(Time.now.to_i)} | #{s}" 20 | puts s 21 | $logger.puts s 22 | $logger.flush 23 | end 24 | -------------------------------------------------------------------------------- /site/public/404.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | The page you were looking for doesn't exist (404) 9 | 21 | 22 | 23 | 24 | 25 |
    26 |

    The page you were looking for doesn't exist.

    27 |

    You may have mistyped the address or the page may have moved.

    28 |
    29 | 30 | -------------------------------------------------------------------------------- /site/public/422.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | The change you wanted was rejected (422) 9 | 21 | 22 | 23 | 24 | 25 |
    26 |

    The change you wanted was rejected.

    27 |

    Maybe you tried to change something you didn't have access to.

    28 |
    29 | 30 | -------------------------------------------------------------------------------- /site/public/500.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | We're sorry, but something went wrong (500) 9 | 21 | 22 | 23 | 24 | 25 |
    26 |

    We're sorry, but something went wrong.

    27 |

    We've been notified about this issue and we'll take a look at it shortly.

    28 |
    29 | 30 | -------------------------------------------------------------------------------- /site/public/dispatch.cgi: -------------------------------------------------------------------------------- 1 | #!C:/Program Files/ruby/bin/ruby 2 | 3 | require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) 4 | 5 | # If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like: 6 | # "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired 7 | require "dispatcher" 8 | 9 | ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun) 10 | Dispatcher.dispatch -------------------------------------------------------------------------------- /site/public/dispatch.fcgi: -------------------------------------------------------------------------------- 1 | #!C:/Program Files/ruby/bin/ruby 2 | # 3 | # You may specify the path to the FastCGI crash log (a log of unhandled 4 | # exceptions which forced the FastCGI instance to exit, great for debugging) 5 | # and the number of requests to process before running garbage collection. 6 | # 7 | # By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log 8 | # and the GC period is nil (turned off). A reasonable number of requests 9 | # could range from 10-100 depending on the memory footprint of your app. 10 | # 11 | # Example: 12 | # # Default log path, normal GC behavior. 13 | # RailsFCGIHandler.process! 14 | # 15 | # # Default log path, 50 requests between GC. 16 | # RailsFCGIHandler.process! nil, 50 17 | # 18 | # # Custom log path, normal GC behavior. 19 | # RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log' 20 | # 21 | require File.dirname(__FILE__) + "/../config/environment" 22 | require 'fcgi_handler' 23 | 24 | RailsFCGIHandler.process! 25 | -------------------------------------------------------------------------------- /site/public/dispatch.rb: -------------------------------------------------------------------------------- 1 | #!C:/Program Files/ruby/bin/ruby 2 | 3 | require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) 4 | 5 | # If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like: 6 | # "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired 7 | require "dispatcher" 8 | 9 | ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun) 10 | Dispatcher.dispatch -------------------------------------------------------------------------------- /site/public/download: -------------------------------------------------------------------------------- 1 | ../../var/download -------------------------------------------------------------------------------- /site/public/images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/ajax-loader.gif -------------------------------------------------------------------------------- /site/public/images/alex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/alex.jpg -------------------------------------------------------------------------------- /site/public/images/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/book.png -------------------------------------------------------------------------------- /site/public/images/cmd: -------------------------------------------------------------------------------- 1 | wget http://www.clipartpal.com/_thumbs/pd/education/large_open_book.png -O book.png 2 | wget http://www.clker.com/cliparts/4/b/8/d/1194983813750083554server_mimooh_.svg.med.png -O server.png 3 | wget http://www.clker.com/cliparts/b/1/6/b/1195431327409717356database_base_de_donn__01r.svg.med.png -O database.png 4 | convert oldbook.png -fuzz 10% -transparent white book.png 5 | -------------------------------------------------------------------------------- /site/public/images/create_run_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/create_run_img.png -------------------------------------------------------------------------------- /site/public/images/database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/database.png -------------------------------------------------------------------------------- /site/public/images/dataset_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/dataset_img.png -------------------------------------------------------------------------------- /site/public/images/dataset_img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/dataset_img2.png -------------------------------------------------------------------------------- /site/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/favicon.ico -------------------------------------------------------------------------------- /site/public/images/icon_profile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icon_profile.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_back.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_forward.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_forward.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_go.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_go.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_paste.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_paste.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_print.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_print.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_refresh.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_refresh_blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_refresh_blue.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_save.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_save.gif -------------------------------------------------------------------------------- /site/public/images/icons/action_stop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/action_stop.gif -------------------------------------------------------------------------------- /site/public/images/icons/application_dreamweaver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/application_dreamweaver.gif -------------------------------------------------------------------------------- /site/public/images/icons/application_firefox.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/application_firefox.gif -------------------------------------------------------------------------------- /site/public/images/icons/application_flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/application_flash.gif -------------------------------------------------------------------------------- /site/public/images/icons/arrow_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/arrow_down.gif -------------------------------------------------------------------------------- /site/public/images/icons/arrow_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/arrow_left.gif -------------------------------------------------------------------------------- /site/public/images/icons/arrow_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/arrow_right.gif -------------------------------------------------------------------------------- /site/public/images/icons/arrow_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/arrow_up.gif -------------------------------------------------------------------------------- /site/public/images/icons/box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/box.gif -------------------------------------------------------------------------------- /site/public/images/icons/calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/calendar.gif -------------------------------------------------------------------------------- /site/public/images/icons/comment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/comment.gif -------------------------------------------------------------------------------- /site/public/images/icons/comment_blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/comment_blue.gif -------------------------------------------------------------------------------- /site/public/images/icons/comment_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/comment_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/comment_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/comment_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/comment_yellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/comment_yellow.gif -------------------------------------------------------------------------------- /site/public/images/icons/copy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/copy.gif -------------------------------------------------------------------------------- /site/public/images/icons/cut.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/cut.gif -------------------------------------------------------------------------------- /site/public/images/icons/date.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/date.gif -------------------------------------------------------------------------------- /site/public/images/icons/date_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/date_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/date_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/date_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/file_acrobat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/file_acrobat.gif -------------------------------------------------------------------------------- /site/public/images/icons/file_font.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/file_font.gif -------------------------------------------------------------------------------- /site/public/images/icons/file_font_truetype.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/file_font_truetype.gif -------------------------------------------------------------------------------- /site/public/images/icons/flag_blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/flag_blue.gif -------------------------------------------------------------------------------- /site/public/images/icons/flag_green.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/flag_green.gif -------------------------------------------------------------------------------- /site/public/images/icons/flag_orange.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/flag_orange.gif -------------------------------------------------------------------------------- /site/public/images/icons/flag_red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/flag_red.gif -------------------------------------------------------------------------------- /site/public/images/icons/flag_white.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/flag_white.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder_images.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder_images.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder_lock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder_lock.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/folder_page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/folder_page.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_accept.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_accept.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_airmail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_airmail.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_alert.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_attachment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_attachment.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_clock.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_component.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_component.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_download.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_download.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_email.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_email.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_extension.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_favourites.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_favourites.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_get_world.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_get_world.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_history.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_history.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_home.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_home.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_info.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_key.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_key.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_link.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_link.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_mail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_mail.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_monitor_mac.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_monitor_mac.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_monitor_pc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_monitor_pc.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_network.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_network.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_package.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_package.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_package_get.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_package_get.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_package_open.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_package_open.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_padlock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_padlock.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_security.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_security.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_settings.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_settings.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_user.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_user.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_wand.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_wand.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_world.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_world.gif -------------------------------------------------------------------------------- /site/public/images/icons/icon_world_dynamic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/icon_world_dynamic.gif -------------------------------------------------------------------------------- /site/public/images/icons/image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/image.gif -------------------------------------------------------------------------------- /site/public/images/icons/image_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/image_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/interface_browser.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/interface_browser.gif -------------------------------------------------------------------------------- /site/public/images/icons/interface_dialog.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/interface_dialog.gif -------------------------------------------------------------------------------- /site/public/images/icons/interface_installer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/interface_installer.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_comments.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_comments.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_components.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_components.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_errors.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_errors.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_extensions.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_extensions.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_images.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_images.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_keys.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_keys.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_links.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_links.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_packages.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_packages.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_security.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_security.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_settings.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_settings.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_users.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_users.gif -------------------------------------------------------------------------------- /site/public/images/icons/list_world.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/list_world.gif -------------------------------------------------------------------------------- /site/public/images/icons/note.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/note.gif -------------------------------------------------------------------------------- /site/public/images/icons/note_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/note_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/note_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/note_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_alert.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_attachment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_attachment.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_bookmark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_bookmark.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_boy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_boy.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_code.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_colors.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_colors.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_component.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_component.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_cross.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_cross.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_deny.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_deny.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_down.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_dynamic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_dynamic.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_edit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_edit.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_extension.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_favourites.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_favourites.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_find.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_find.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_flash.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_girl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_girl.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_html.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_html.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_java.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_java.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_key.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_key.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_left.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_link.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_link.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_lock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_lock.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_new.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_next.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_package.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_package.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_php.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_php.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_prev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_prev.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_refresh.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_right.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_script.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_script.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_security.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_security.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_settings.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_settings.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_sound.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_sound.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_tag_blue.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_tag_blue.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_tag_red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_tag_red.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_text.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_text.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_text_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_text_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_tick.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_tick.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_tree.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_tree.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_up.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_url.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_url.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_user.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_user.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_user_dark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_user_dark.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_user_light.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_user_light.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_video.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_video.gif -------------------------------------------------------------------------------- /site/public/images/icons/page_wizard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/page_wizard.gif -------------------------------------------------------------------------------- /site/public/images/icons/readme.txt: -------------------------------------------------------------------------------- 1 | mini icons - famfamfam.com 2 | Contact: mjames@gmail.com -------------------------------------------------------------------------------- /site/public/images/icons/table.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/table.gif -------------------------------------------------------------------------------- /site/public/images/icons/table_delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/table_delete.gif -------------------------------------------------------------------------------- /site/public/images/icons/tables.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/icons/tables.gif -------------------------------------------------------------------------------- /site/public/images/jake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/jake.png -------------------------------------------------------------------------------- /site/public/images/job_running.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/job_running.gif -------------------------------------------------------------------------------- /site/public/images/job_running2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/job_running2.gif -------------------------------------------------------------------------------- /site/public/images/percy.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/percy.jpeg -------------------------------------------------------------------------------- /site/public/images/profilepic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/profilepic.png -------------------------------------------------------------------------------- /site/public/images/program_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/program_img.png -------------------------------------------------------------------------------- /site/public/images/program_img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/program_img2.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/bottomleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/bottomleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/bottommiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/bottommiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/bottomright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/bottomright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/close.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/close_hover.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/leftbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/leftmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/leftmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/lefttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/lefttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/loader.gif -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/rightbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/rightmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/rightmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/righttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/righttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/topleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/topleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/topmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/topmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/creamy/topright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/creamy/topright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/bottomleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/bottomleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/bottommiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/bottommiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/bottomright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/bottomright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/close.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/close_hover.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/leftbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/leftmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/leftmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/lefttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/lefttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/loader.gif -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/rightbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/rightmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/rightmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/righttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/righttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/topleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/topleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/topmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/topmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/darkgrey/topright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/darkgrey/topright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/bottomleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/bottomleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/bottommiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/bottommiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/bottomright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/bottomright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/close.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/close_hover.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/leftbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/leftmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/leftmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/lefttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/lefttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/loader.gif -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/rightbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/rightmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/rightmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/righttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/righttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/topleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/topleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/topmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/topmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/default/topright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/default/topright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/bottomleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/bottomleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/bottommiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/bottommiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/bottomright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/bottomright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/close.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/close_hover.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/leftbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/leftmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/leftmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/lefttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/lefttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/loader.gif -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/rightbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/rightmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/rightmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/righttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/righttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/topleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/topleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/topmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/topmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protoblue/topright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protoblue/topright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/bottomleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/bottomleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/bottommiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/bottommiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/bottomright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/bottomright.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/close.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/close_hover.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/leftbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/leftmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/leftmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/lefttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/lefttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/loader.gif -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/rightbottom.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/rightmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/rightmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/righttop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/righttop.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/topleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/topleft.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/topmiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/topmiddle.png -------------------------------------------------------------------------------- /site/public/images/prototip/styles/protogrey/topright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/prototip/styles/protogrey/topright.png -------------------------------------------------------------------------------- /site/public/images/rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/rails.png -------------------------------------------------------------------------------- /site/public/images/result_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/result_img.png -------------------------------------------------------------------------------- /site/public/images/server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/server.png -------------------------------------------------------------------------------- /site/public/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/spinner.gif -------------------------------------------------------------------------------- /site/public/images/spinner2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/images/spinner2.gif -------------------------------------------------------------------------------- /site/public/javascripts/add_to_list.js: -------------------------------------------------------------------------------- 1 | var item_list = []; 2 | function add_to_list (name, id, list_name) { 3 | if (item_list.indexOf(id) == -1) { 4 | item_list.push(id); 5 | var li_item = new Element('li', { id: 'item_' + id, item_id: id }); 6 | var remlink = new Element('a', {href:'#'}); 7 | remlink.appendChild(document.createTextNode("rem")); 8 | remlink.observe('click', function () { 9 | rm_from_list(id); 10 | }); 11 | li_item.appendChild(document.createTextNode(name + " ")); 12 | li_item.appendChild(remlink); 13 | $(list_name).insert({bottom: li_item}); 14 | var input_name = list_name + "_input"; 15 | var elements = $$('#' + list_name + ' li').map( 16 | function (elt) { 17 | return elt.readAttribute('item_id'); 18 | } 19 | ); 20 | $(input_name).writeAttribute('value', elements.toJSON()); 21 | } else { 22 | alert("Already added " + name + " to list!"); 23 | } 24 | }; 25 | 26 | function rm_from_list (id) { 27 | item_list = item_list.without(id); 28 | $('item_' + id).remove(); 29 | } -------------------------------------------------------------------------------- /site/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-Agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /site/public/stylesheets/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/stylesheets/bg.png -------------------------------------------------------------------------------- /site/public/stylesheets/dotted.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/stylesheets/dotted.gif -------------------------------------------------------------------------------- /site/public/stylesheets/dottedangle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percyliang/mlcomp/9669625c0a0a631c86fbaa86a428f26fb4ff10a2/site/public/stylesheets/dottedangle.gif -------------------------------------------------------------------------------- /site/script/about: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/about' 4 | -------------------------------------------------------------------------------- /site/script/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/console' 4 | -------------------------------------------------------------------------------- /site/script/destroy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/destroy' 4 | -------------------------------------------------------------------------------- /site/script/generate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/generate' 4 | -------------------------------------------------------------------------------- /site/script/mlcomp/resource: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # Command-line utility to add programs, datasets, manipulate the database 4 | exec(File.dirname($0)+'/../runner', 'require "lib_autoloader"; ResourceManager.main('+ARGV.map{|x|"'"+x+"'"}.join(',')+')') 5 | -------------------------------------------------------------------------------- /site/script/mlcomp/run-server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # Restart the server every night at 4am. 4 | while true 5 | lastRestartTime = Time.now 6 | puts "=== STARTING SERVER" 7 | pid = fork { exec(File.dirname($0)+'/../server', *ARGV) } 8 | while not Process.wait(pid, Process::WNOHANG) 9 | #if Time.now.strftime("%S") == "04" && Time.now - lastRestartTime > 2 10 | # Restart around 4am and at least 20 hours after last restart 11 | if Time.now.strftime("%H") == "04" && Time.now - lastRestartTime > 20*60*60 12 | puts "=== KILLING SERVER" 13 | Process.kill('TERM', pid) 14 | end 15 | sleep 1 16 | end 17 | puts "=== SERVER TERMINATED" 18 | sleep 5 19 | end 20 | -------------------------------------------------------------------------------- /site/script/mlcomp/send_announcements: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | system(File.dirname($0)+'/../runner', File.dirname($0)+"/announcement_script.rb") -------------------------------------------------------------------------------- /site/script/performance/benchmarker: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/benchmarker' 4 | -------------------------------------------------------------------------------- /site/script/performance/profiler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/profiler' 4 | -------------------------------------------------------------------------------- /site/script/performance/request: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/request' 4 | -------------------------------------------------------------------------------- /site/script/plugin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/plugin' 4 | -------------------------------------------------------------------------------- /site/script/process/inspector: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/inspector' 4 | -------------------------------------------------------------------------------- /site/script/process/reaper: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/reaper' 4 | -------------------------------------------------------------------------------- /site/script/process/spawner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/spawner' 4 | -------------------------------------------------------------------------------- /site/script/runner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/runner' 4 | -------------------------------------------------------------------------------- /site/script/server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/server' 4 | -------------------------------------------------------------------------------- /site/test/fixtures/announcements.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | subject: MyString 5 | body: MyString 6 | created_at: 2010-07-26 16:36:41 7 | 8 | two: 9 | subject: MyString 10 | body: MyString 11 | created_at: 2010-07-26 16:36:41 12 | -------------------------------------------------------------------------------- /site/test/fixtures/datasets.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | name: MyString 5 | description: MyText 6 | source: MyText 7 | task_type: MyString 8 | 9 | two: 10 | name: MyString 11 | description: MyText 12 | source: MyText 13 | task_type: MyString 14 | -------------------------------------------------------------------------------- /site/test/fixtures/programs.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | name: MyString 5 | description: MyText 6 | format: MyString 7 | 8 | two: 9 | name: MyString 10 | description: MyText 11 | format: MyString 12 | -------------------------------------------------------------------------------- /site/test/fixtures/run_construct_arg_programs.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | # one: 4 | # column: value 5 | # 6 | # two: 7 | # column: value 8 | -------------------------------------------------------------------------------- /site/test/fixtures/run_datasets.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | # one: 4 | # column: value 5 | # 6 | # two: 7 | # column: value 8 | -------------------------------------------------------------------------------- /site/test/fixtures/run_results.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | key: MyString 5 | value: MyString 6 | 7 | two: 8 | key: MyString 9 | value: MyString 10 | -------------------------------------------------------------------------------- /site/test/fixtures/run_statuses.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | # one: 4 | # column: value 5 | # 6 | # two: 7 | # column: value 8 | -------------------------------------------------------------------------------- /site/test/fixtures/runs.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | # one: 4 | # column: value 5 | # 6 | # two: 7 | # column: value 8 | -------------------------------------------------------------------------------- /site/test/fixtures/users.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | username: MyString 5 | password_hash: MyString 6 | 7 | two: 8 | username: MyString 9 | password_hash: MyString 10 | -------------------------------------------------------------------------------- /site/test/fixtures/workers.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | # one: 4 | # column: value 5 | # 6 | # two: 7 | # column: value 8 | -------------------------------------------------------------------------------- /site/test/functional/about_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class AboutControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/functional/datasets_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class DatasetsControllerTest < ActionController::TestCase 4 | def test_should_get_index 5 | get :index 6 | assert_response :success 7 | assert_not_nil assigns(:datasets) 8 | end 9 | 10 | def test_should_get_new 11 | get :new 12 | assert_response :success 13 | end 14 | 15 | def test_should_create_dataset 16 | assert_difference('Dataset.count') do 17 | post :create, :dataset => { } 18 | end 19 | 20 | assert_redirected_to dataset_path(assigns(:dataset)) 21 | end 22 | 23 | def test_should_show_dataset 24 | get :show, :id => datasets(:one).id 25 | assert_response :success 26 | end 27 | 28 | def test_should_get_edit 29 | get :edit, :id => datasets(:one).id 30 | assert_response :success 31 | end 32 | 33 | def test_should_update_dataset 34 | put :update, :id => datasets(:one).id, :dataset => { } 35 | assert_redirected_to dataset_path(assigns(:dataset)) 36 | end 37 | 38 | def test_should_destroy_dataset 39 | assert_difference('Dataset.count', -1) do 40 | delete :destroy, :id => datasets(:one).id 41 | end 42 | 43 | assert_redirected_to datasets_path 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /site/test/functional/faq_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class FaqControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/functional/general_display_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class GeneralDisplayControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/functional/my_stuff_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MyStuffControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/functional/programs_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class ProgramsControllerTest < ActionController::TestCase 4 | def test_should_get_index 5 | get :index 6 | assert_response :success 7 | assert_not_nil assigns(:programs) 8 | end 9 | 10 | def test_should_get_new 11 | get :new 12 | assert_response :success 13 | end 14 | 15 | def test_should_create_program 16 | assert_difference('Program.count') do 17 | post :create, :program => { } 18 | end 19 | 20 | assert_redirected_to program_path(assigns(:program)) 21 | end 22 | 23 | def test_should_show_program 24 | get :show, :id => programs(:one).id 25 | assert_response :success 26 | end 27 | 28 | def test_should_get_edit 29 | get :edit, :id => programs(:one).id 30 | assert_response :success 31 | end 32 | 33 | def test_should_update_program 34 | put :update, :id => programs(:one).id, :program => { } 35 | assert_redirected_to program_path(assigns(:program)) 36 | end 37 | 38 | def test_should_destroy_program 39 | assert_difference('Program.count', -1) do 40 | delete :destroy, :id => programs(:one).id 41 | end 42 | 43 | assert_redirected_to programs_path 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /site/test/functional/runs_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunsControllerTest < ActionController::TestCase 4 | def test_should_get_index 5 | get :index 6 | assert_response :success 7 | assert_not_nil assigns(:runs) 8 | end 9 | 10 | def test_should_get_new 11 | get :new 12 | assert_response :success 13 | end 14 | 15 | def test_should_create_run 16 | assert_difference('Run.count') do 17 | post :create, :run => { } 18 | end 19 | 20 | assert_redirected_to run_path(assigns(:run)) 21 | end 22 | 23 | def test_should_show_run 24 | get :show, :id => runs(:one).id 25 | assert_response :success 26 | end 27 | 28 | def test_should_get_edit 29 | get :edit, :id => runs(:one).id 30 | assert_response :success 31 | end 32 | 33 | def test_should_update_run 34 | put :update, :id => runs(:one).id, :run => { } 35 | assert_redirected_to run_path(assigns(:run)) 36 | end 37 | 38 | def test_should_destroy_run 39 | assert_difference('Run.count', -1) do 40 | delete :destroy, :id => runs(:one).id 41 | end 42 | 43 | assert_redirected_to runs_path 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /site/test/functional/table_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class TableControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/functional/users_controller_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class UsersControllerTest < ActionController::TestCase 4 | def test_should_get_index 5 | get :index 6 | assert_response :success 7 | assert_not_nil assigns(:users) 8 | end 9 | 10 | def test_should_get_new 11 | get :new 12 | assert_response :success 13 | end 14 | 15 | def test_should_create_user 16 | assert_difference('User.count') do 17 | post :create, :user => { } 18 | end 19 | 20 | assert_redirected_to user_path(assigns(:user)) 21 | end 22 | 23 | def test_should_show_user 24 | get :show, :id => users(:one).id 25 | assert_response :success 26 | end 27 | 28 | def test_should_get_edit 29 | get :edit, :id => users(:one).id 30 | assert_response :success 31 | end 32 | 33 | def test_should_update_user 34 | put :update, :id => users(:one).id, :user => { } 35 | assert_redirected_to user_path(assigns(:user)) 36 | end 37 | 38 | def test_should_destroy_user 39 | assert_difference('User.count', -1) do 40 | delete :destroy, :id => users(:one).id 41 | end 42 | 43 | assert_redirected_to users_path 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /site/test/unit/announcement_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class AnnouncementTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/dataset_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class DatasetTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/emailer_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EmailerTest < ActionMailer::TestCase 4 | tests Emailer 5 | # replace this with your real tests 6 | def test_truth 7 | assert true 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /site/test/unit/program_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class ProgramTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/run_construct_arg_program_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunConstructArgProgramTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/run_dataset_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunDatasetTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/run_result_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunResultTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/run_status_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunStatusTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/run_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class RunTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/user_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class UserTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/test/unit/worker_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class WorkerTest < ActiveSupport::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/CHANGELOG: -------------------------------------------------------------------------------- 1 | * revision 8: Changed has_many :dependent => true to :dependent => :destroy for Rails 1.2.2 2 | + Thanks Josh Martin 3 | Added an order clause in the has_many relationship. 4 | Made comment column type to text from string in migration example in README 5 | + Thanks Patrick Crowley 6 | Added this CHANGELOG file. 7 | -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/MIT-LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Cosmin Radoi 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/init.rb: -------------------------------------------------------------------------------- 1 | # Include hook code here 2 | require 'acts_as_commentable' 3 | ActiveRecord::Base.send(:include, Juixe::Acts::Commentable) 4 | -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/install.rb: -------------------------------------------------------------------------------- 1 | # Install hook code here 2 | -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/lib/comment.rb: -------------------------------------------------------------------------------- 1 | class Comment < ActiveRecord::Base 2 | belongs_to :commentable, :polymorphic => true 3 | 4 | # NOTE: install the acts_as_votable plugin if you 5 | # want user to vote on the quality of comments. 6 | #acts_as_voteable 7 | 8 | # NOTE: Comments belong to a user 9 | belongs_to :user 10 | 11 | # Helper class method to lookup all comments assigned 12 | # to all commentable types for a given user. 13 | def self.find_comments_by_user(user) 14 | find(:all, 15 | :conditions => ["user_id = ?", user.id], 16 | :order => "created_at DESC" 17 | ) 18 | end 19 | 20 | # Helper class method to look up all comments for 21 | # commentable class name and commentable id. 22 | def self.find_comments_for_commentable(commentable_str, commentable_id) 23 | find(:all, 24 | :conditions => ["commentable_type = ? and commentable_id = ?", commentable_str, commentable_id], 25 | :order => "created_at DESC" 26 | ) 27 | end 28 | 29 | # Helper class method to look up a commentable object 30 | # given the commentable class name and id 31 | def self.find_commentable(commentable_str, commentable_id) 32 | commentable_str.constantize.find(commentable_id) 33 | end 34 | end -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/tasks/acts_as_commentable_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :acts_as_commentable do 3 | # # Task goes here 4 | # end -------------------------------------------------------------------------------- /site/vendor/plugins/acts_as_commentable/test/acts_as_commentable_test.rb: -------------------------------------------------------------------------------- 1 | require 'test/unit' 2 | 3 | class ActsAsCommentableTest < Test::Unit::TestCase 4 | # Replace this with your real tests. 5 | def test_this_plugin 6 | flunk 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /update-db: -------------------------------------------------------------------------------- 1 | # Updates the mysql database. 2 | # Run this script each time you check out from the repository. 3 | echo "Doing rails migration..." 4 | (cd site && $GEM_HOME/bin/rake db:migrate) || exit 1 5 | echo "Creating DB views..." 6 | cat create-views.sql | grep -v "^--" | mysql -u rails_user mlcomp_development 7 | echo "Finished creating views!" 8 | -------------------------------------------------------------------------------- /worker/args.rb: -------------------------------------------------------------------------------- 1 | ../site/lib/utils/args.rb -------------------------------------------------------------------------------- /worker/general.rb: -------------------------------------------------------------------------------- 1 | ../site/lib/utils/general.rb -------------------------------------------------------------------------------- /worker/version: -------------------------------------------------------------------------------- 1 | 35 2 | --------------------------------------------------------------------------------