Merge remote-tracking branch 'origin/dev_local' into dev_local

dev_local_2
杨树林 6 years ago
commit 130a76d208

@ -3,6 +3,18 @@
命令CREATE DATABASE `edu_local` CHARACTER SET utf8 COLLATE utf8_general_ci;
2.设置本地database.yml
3. 链接mysql执行导入数据库source /Users/jingquanhuang/eduplus2/db/structure.sql
3.1 mac电脑 pwd 获取本地目录
4. 导入基础数据: source /Users/jingquanhuang/eduplus2/db/init.sql
4. 初始化种子数据 bundle exec rake db:seed
5、启动服务用 bundle exec rails s
6、设置配置文件数据/edu_settins: 配置: origin_database原始数据库及有数据的数据库database需要导入的数据库及database.yml中的数据库
7、调用接口
url: /api/initialization_data.json?paths=123,124,125
参数paths: 需要导入的实训路径的id以逗号分隔
8、 超级管理员用户
educoder 123456789
9、 需要导入的TPM版本库
在mysql中select repo_name from shixuns;
将mysql输出的结果交给运维使用脚本一建导入

@ -1,113 +1,357 @@
class InitializationDataController < ApplicationController
def init_subjects
# GET: /api/initialization_data.json?paths=169,170,171
def index
raise("实践课程id不能为空") if params[:paths].blank?
paths = params[:paths].split(",")
origin_database = EduSetting.where(name: origin_database)&.value
database = EduSetting.where(name: database)&.value
origin_database = EduSetting.find_by(name: "origin_database")&.value
database = EduSetting.find_by(name: "database")&.value
logger.info("#########{origin_database}")
raise("请配置原始数据库") if origin_database.blank?
raise("请配置本地数据库") if database.blank?
# 获取原始数据库导入数据
get_origin_data origin_database, paths
# 创建初始数据
create_init_data database
normal_status("初始化数据成功!")
end
private
def get_origin_data origin_database, paths
connect_to_origin_date(origin_database)
@subjects = get_subject_data(paths)
@stages = get_stages_data(@subjects)
@stage_shixuns = get_stage_shixuns_data(@stages)
@shixuns = get_shixun_data(@stage_shixuns)
@shixun_mirror_repositories = get_shixun_mirror_repositories_data(@shixuns)
@shixun_tag_repertoires = get_shixun_tag_repertoires_data(@shixuns)
@shixun_service_configs = get_shixun_service_configs_data(@shixuns)
@challenges = get_challenges_data(@shixuns)
@challenge_tags = get_challenge_tags_data(@challenges)
@test_sets = get_test_sets_data(@challenges)
@challenge_chooses = get_challenge_chooses_data(@challenges)
@challenge_questions = get_challenge_questions_data(@challenge_chooses)
get_subject_data(paths)
get_stages_data(@subjects)
get_stage_shixuns_data(@stages)
get_shixun_data(@stage_shixuns)
get_shixun_info_data(@shixuns)
get_shixun_mirror_repositories_data(@shixuns)
get_shixun_tag_repertoires_data(@shixuns)
get_shixun_service_configs_data(@shixuns)
get_challenges_data(@shixuns)
get_challenge_answers_data(@challenges)
get_challenge_tags_data(@challenges)
get_test_sets_data(@challenges)
get_challenge_chooses_data(@challenges)
get_challenge_questions_data(@challenge_chooses)
end
def create_init_data database
logger.info("#########subjects: #{@subjects.map(&:id)}")
logger.info("#########stage: #{@stages.map(&:id)}")
logger.info("#########stage_shixuns: #{@stage_shixuns.map(&:id)}")
logger.info("#########shixuns: #{@shixuns.map(&:id)}")
logger.info("#########shixun_infos: #{@shixun_infos.map(&:id)}")
logger.info("#########shixun_mirror_repositories: #{@shixun_mirror_repositories.map(&:id)}")
logger.info("#########shixun_tag_repertoires: #{@shixun_tag_repertoires.map(&:id)}")
logger.info("#########shixun_service_configs: #{@shixun_service_configs.map(&:id)}")
logger.info("#########challenges: #{@challenges.map(&:id)}")
logger.info("#########challenge_answers: #{@challenge_answers.map(&:id)}")
logger.info("#########challenge_tags: #{@challenge_tags.map(&:id)}")
logger.info("#########test_sets: #{@test_sets.map(&:id)}")
logger.info("#########challenge_chooses: #{@challenge_chooses.map(&:id)}")
logger.info("#########challenge_questions: #{@challenge_questions.map(&:id)}")
connect_to_origin_date database
#copy_shixuns
logger.info("#########subjects: #{@subjects.count}")
logger.info("#########stage: #{@stages.count}")
logger.info("#########stage_shixuns: #{@stage_shixuns.count}")
logger.info("#########shixuns: #{@shixuns.count}")
logger.info("#########shixun_infos: #{@shixun_infos.count}")
logger.info("#########shixun_mirror_repositories: #{@shixun_mirror_repositories.count}")
logger.info("#########shixun_tag_repertoires: #{@shixun_tag_repertoires.count}")
logger.info("#########shixun_service_configs: #{@shixun_service_configs.count}")
logger.info("#########challenges: #{@challenges.count}")
logger.info("#########challenge_answers: #{@challenge_answers.count}")
logger.info("#########challenge_tags: #{@challenge_tags.count}")
logger.info("#########test_sets: #{@test_sets.count}")
logger.info("#########challenge_chooses: #{@challenge_chooses.count}")
logger.info("#########challenge_questions: #{@challenge_questions.count}")
ActiveRecord::Base.transaction do
copy_subject_data
copy_stages_data
copy_stage_shixuns_data
copy_shixun_data
copy_shixun_info_data
copy_shixun_mirror_repositories_data
copy_shixun_tag_repertoires_data
copy_shixun_service_configs_data
copy_challenges_data
copy_challenge_answers_data
copy_challenge_tags_data
copy_test_sets_data
copy_challenge_chooses_data
copy_challenge_questions_data
copy_shixun_members_data
copy_subject_members_data
end
end
# 链接库
def connect_to_origin_date database
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost",
username: "root",
password: "123456",
database: "#{database}"
host: "rm-bp13v5020p7828r5r.mysql.rds.aliyuncs.com",
username: "testeducoder",
password: "TEST@123",
database: "#{database}",
encoding: "utf8"
)
end
# 查询需要的路径
# 获取需要的路径
def get_subject_data paths
Subject.where(id: paths)
@subjects = Subject.where(id: paths)
end
# 创建需要的路径
def copy_subject_data
logger.info("##############subjects: #{@subjects.map(&:id)}")
subject_attrs = %i[id name description status major_id learning_notes introduction homepage_show user_id
repertoire_id score_count publish_time subject_level_system_id excellent created_at updated_at stages_count
stage_shixuns_count shixuns_count]
Subject.bulk_insert(*subject_attrs) do |worker|
@subjects.each do |subject|
base_attr = subject.attributes.dup.except("user_id")
worker.add(base_attr.merge(user_id: 1))
end
end
end
# 获取实践课程的章节
def get_stages_data subjects
Stage.where(subject_id: subjects)
@stages = Stage.where(subject_id: subjects)
end
# 创建需要的章节
def copy_stages_data
logger.info("##############stages: #{@stages.map(&:id)}")
stage_attrs = %i[id subject_id name description user_id position created_at updated_at]
Stage.bulk_insert(*stage_attrs) do |worker|
@stages.each do |stage|
base_attr = stage.attributes.dup.except("user_id", "shixuns_count")
worker.add(base_attr.merge(user_id: 1))
end
end
end
# 获取时间课程的关联实训表
# 获取实践课程的关联实训表
def get_stage_shixuns_data stages
StageShixun.where(stage_id: stages)
@stage_shixuns = StageShixun.where(stage_id: stages)
end
# 创建实践课程关联实训表
def copy_stage_shixuns_data
stage_shixun_attrs = %i[id subject_id stage_id shixun_id position created_at updated_at]
StageShixun.bulk_insert(*stage_shixun_attrs) do |worker|
@stage_shixuns.each do |stage_shixun|
base_attr = stage_shixun.attributes.dup
worker.add(base_attr)
end
end
end
# 获取实训数据
def get_shixun_data stage_shixuns
Shixun.where(id: stage_shixuns.map(&:shixun_id))
@shixuns = Shixun.where(id: stage_shixuns.map(&:shixun_id))
end
# 创建实训数据
def copy_shixun_data
shixun_attrs = %i[id name user_id gpid status authentication identifier trainee major_id webssh homepage_show hidden
fork_from can_copy modify_time reset_time publish_time closer_id end_time git_url vnc created_at updated_at
mirror_script_id image_text code_hidden task_pass exec_time test_set_permission sigle_training hide_code
multi_webssh excute_time repo_name averge_star opening_time forbid_copy pod_life challenges_count]
Shixun.bulk_insert(*shixun_attrs) do |worker|
@shixuns.each do |shixun|
base_attr = shixun.attributes.dup.except("user_id", "myshixuns_count", "use_scope")
logger.info("#######shixun:#{base_attr}")
worker.add(base_attr.merge(user_id: 1))
end
end
end
# 获取关卡数据
def get_challenges_data shixuns
Challenge.where(shixun_id: shixuns)
@challenges = Challenge.where(shixun_id: shixuns)
end
# 创建关卡数据
def copy_challenges_data
challenge_attrs = %i[id shixun_id subject user_id status position task_pass score path evaluation_way difficulty
exec_path code_line st web_route picture_path expect_picture_path modify_time challenge_tags_count original_picture_path
show_type test_set_score test_set_average exec_time created_at updated_at]
Challenge.bulk_insert(*challenge_attrs) do |worker|
@challenges.each do |challenge|
base_attr = challenge.attributes.dup.except("user_id", "praises_count", "memory_limit", "request_limit", "time_limit",
"lower_cpu_limit", "cpu_limit", "visits")
worker.add(base_attr.merge(user_id: 1))
end
end
end
# 获取参考答案
def get_challenge_answers_data challenges
@challenge_answers = ChallengeAnswer.where(challenge_id: challenges)
end
# 复制参考答案
def copy_challenge_answers_data
answer_attrs = %i[id name contents score level challenge_id created_at updated_at]
ChallengeAnswer.bulk_insert(*answer_attrs) do |worker|
@challenge_answers.each do |answer|
base_attr = answer.attributes.dup
worker.add(base_attr)
end
end
end
# 获取关卡标签数据
def get_challenge_tags_data challenges
ChallengeTag.where(challenge_id: challenges)
@challenge_tags = ChallengeTag.where(challenge_id: challenges)
end
# 获取实训技能标签数据
# 创建关卡标签数据
def copy_challenge_tags_data
tag_attrs = %i[id name challenge_id challenge_choose_id created_at updated_at]
ChallengeTag.bulk_insert(*tag_attrs) do |worker|
@challenge_tags.each do |tag|
base_attr = tag.attributes.dup
worker.add(base_attr)
end
end
end
# 获取实训镜像标签数据
def get_shixun_mirror_repositories_data shixuns
ShixunMirrorRepository.where(shixun_id: shixuns)
@shixun_mirror_repositories = ShixunMirrorRepository.where(shixun_id: shixuns)
end
# 创建实训镜像标签
def copy_shixun_mirror_repositories_data
repository_attrs = %i[id shixun_id mirror_repository_id created_at updated_at]
ShixunMirrorRepository.bulk_insert(*repository_attrs) do |worker|
@shixun_mirror_repositories.each do |repository|
base_attr = repository.attributes.dup
worker.add(base_attr)
end
end
end
# 获取实训标签
def get_shixun_tag_repertoires_data shixuns
ShixunTagRepertoire.where(shixun_id: shixuns)
@shixun_tag_repertoires = ShixunTagRepertoire.where(shixun_id: shixuns)
end
# 创建实训标签
def copy_shixun_tag_repertoires_data
repository_attrs = %i[id shixun_id tag_repertoire_id created_at updated_at]
ShixunTagRepertoire.bulk_insert(*repository_attrs) do |worker|
@shixun_tag_repertoires.each do |repository|
base_attr = repository.attributes.dup
worker.add(base_attr)
end
end
end
# 获取实训镜像配置
def get_shixun_service_configs_data shixuns
ShixunServiceConfig.where(shixun_id: shixuns)
@shixun_service_configs = ShixunServiceConfig.where(shixun_id: shixuns)
end
# 创建镜像配置
def copy_shixun_service_configs_data
config_attrs = %i[id shixun_id cpu_limit memory_limit request_limit lower_cpu_limit resource_limit
mirror_repository_id created_at updated_at]
ShixunServiceConfig.bulk_insert(*config_attrs) do |worker|
@shixun_service_configs.each do |config|
base_attr = config.attributes.dup
worker.add(base_attr)
end
end
end
# 获取测试集数据
def get_test_sets_data challenges
TestSet.where(challenge_id: challenges)
@test_sets = TestSet.where(challenge_id: challenges)
end
# 创建测试集数据
def copy_test_sets_data
set_attrs = %i[id input output challenge_id is_public result position score created_at updated_at]
TestSet.bulk_insert(*set_attrs) do |worker|
@test_sets.each do |set|
base_attr = set.attributes.dup
worker.add(base_attr)
end
end
end
# 获取选择题题目
def get_challenge_chooses_data challenges
ChallengeChoose.where(challenge_id: challenges)
@challenge_chooses = ChallengeChoose.where(challenge_id: challenges)
end
# 创建选择题题目数据
def copy_challenge_chooses_data
choose_attrs = %i[id subject challenge_id standard_answer answer score difficult category position created_at updated_at]
ChallengeChoose.bulk_insert(*choose_attrs) do |worker|
@challenge_chooses.each do |choose|
base_attr = choose.attributes.dup
worker.add(base_attr)
end
end
end
# 复制选择题选项
def get_challenge_questions_data challenge_chooses
ChallengeQuestion.where(challenge_choose_id: challenge_chooses)
@challenge_questions = ChallengeQuestion.where(challenge_choose_id: challenge_chooses)
end
# 创建选择题选项数据
def copy_challenge_questions_data
question_attrs = %i[id option_name challenge_choose_id right_key position created_at updated_at]
ChallengeQuestion.bulk_insert(*question_attrs) do |worker|
@challenge_questions.each do |question|
base_attr = question.attributes.dup
worker.add(base_attr)
end
end
end
# 获取实训长字段内容
def get_shixun_info_data shixuns
@shixun_infos = ShixunInfo.where(shixun_id: shixuns)
end
# 创建实训长字段内容
def copy_shixun_info_data
info_attrs = %i[id propaedeutics description evaluate_script shixun_id created_at updated_at]
ShixunInfo.bulk_insert(*info_attrs) do |worker|
@shixun_infos.each do |info|
base_attr = info.attributes.dup
worker.add(base_attr)
end
end
end
# 创建实训成员
def copy_shixun_members_data
member_attrs = %i[user_id shixun_id role created_at updated_at]
ShixunMember.bulk_insert(*member_attrs) do |worker|
@shixuns.each do |shixun|
base_attr = {shixun_id: shixun.id, user_id: 1, role: 1}
worker.add(base_attr)
end
end
end
# 创建实践课程成员
def copy_subject_members_data
member_attrs = %i[user_id subject_id role created_at updated_at position]
SubjectMember.bulk_insert(*member_attrs) do |worker|
@subjects.each do |subject|
base_attr = {subject_id: subject.id, user_id: 1, role: 1, position: 1}
worker.add(base_attr)
end
end
end

@ -29,7 +29,7 @@ module ElasticsearchAble
def body_options
{
min_score: EduSetting.get('es_min_score') || 10
min_score: EduSetting.get('es_min_score') || 1.1
}
end

@ -33,6 +33,7 @@ Rails.application.routes.draw do
end
end
resources :initialization_data
resources :tem_tests
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
#

@ -124,7 +124,7 @@ insert into `tag_repertoires`(`id`,`name`,`sub_repertoire_id`,`created_at`,`upda
(86,'Android',5,'2018-04-08 11:07:57','2018-05-11 17:19:12'),
(87,'IOS',5,'2018-04-08 11:08:03','2018-05-11 17:19:11'),
(88,'MySQL',9,'2018-04-08 11:08:23','2018-05-21 09:16:30'),
(89,'SQL Server',9,'2018-04-08 11:08:28','2019-08-28 16:58:13'),
(89,'SQL Server',9,'2018-04-08 11:08:28','2018-05-21 09:16:29'),
(90,'Oracle',9,'2018-04-08 11:08:32','2018-05-21 09:16:27'),
(91,'SQLite',9,'2018-04-08 11:08:36','2018-05-21 09:16:26'),
(92,'PostgreSQL',9,'2018-04-08 11:08:41','2018-05-21 09:16:25'),
@ -220,10 +220,10 @@ CREATE TABLE `mirror_repositories` (
`repertoire_id` int(11) DEFAULT NULL,
`sub_repertoire_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=130 DEFAULT CHARSET=utf8;
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8;
insert into `mirror_repositories`(`id`,`mirrorID`,`name`,`main_type`,`description`,`status`,`created_at`,`updated_at`,`type_name`,`script_template`,`resource_limit`,`memory_limit`,`cpu_limit`,`time_limit`,`should_compile`,`repertoire_id`,`sub_repertoire_id`) values
(2,'5d789e5d495f','python3-ssh:v1.0','1','python3.6.2ssh',1,'2018-01-29 11:31:25','2019-08-24 09:45:27','Python3.6','#!/bin/bash
(2,'5d789e5d495f','python3-ssh:v1.0','1','python3.6.2ssh',1,'2018-01-29 11:31:25','2019-07-30 17:43:21','Python3.6','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -263,7 +263,7 @@ returnResult(){
returnResult
',100000,2048,2,85,0,2,4),
(3,'42bd3e1427cc','cisco-ssh:v1.0','1','dynagen0.11.0dynamips0.2.8ssh',1,'2018-01-29 11:31:25','2019-08-20 15:45:53','Dynamips','#!/bin/bash
(3,'42bd3e1427cc','cisco-ssh:v1.0','1','dynagen0.11.0dynamips0.2.8ssh',1,'2018-01-29 11:31:25','2019-06-25 14:13:24','Dynamips','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -304,7 +304,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,6,17),
(4,'b21be9214e36','python2-ssh:v1.0','1','python2.7.9ssh',1,'2018-01-29 11:31:25','2019-08-20 15:47:45','Python2.7','#!/bin/bash
(4,'b21be9214e36','python2-ssh:v1.0','1','python2.7.9ssh',1,'2018-01-29 11:31:25','2019-06-25 14:17:20','Python2.7','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -344,7 +344,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,2,4),
(5,'eb55c2848120','openjdk-ssh:v1.0','1','java1.8.0zookeeper3.4.12',1,'2018-01-29 11:31:25','2019-08-24 09:44:02','Java','#!/bin/bash
(5,'eb55c2848120','openjdk-ssh:v1.0','1','java1.8.0zookeeper3.4.12',1,'2018-01-29 11:31:25','2019-07-16 17:48:22','Java','#!/bin/bash
#工作空间
cd WORKSPACE
#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名
@ -406,8 +406,8 @@ returnResult(){
returnResult
',100000,1024,1,50,1,2,4),
(6,'3a0adda6b05f','hive-ssh:v1.0','1','hive-2.3.2ssh',1,'2018-01-29 11:31:25','2019-08-24 09:45:01','Hive',null,100000,2500,2,120,0,5,14),
(7,'c3cac044d76a','hadoop-ssh:v1.0','1','jdk8ant1.10.1hadoop2.7.4ssh 伪分布式',1,'2018-01-29 11:31:25','2019-08-20 15:46:13','Hadoop','#!/bin/bash
(6,'3a0adda6b05f','hive-ssh:v1.0','1','hive-2.3.2ssh',1,'2018-01-29 11:31:25','2019-07-12 09:26:20','Hive',null,100000,2500,2,120,0,5,14),
(7,'c3cac044d76a','hadoop-ssh:v1.0','1','jdk8ant1.10.1hadoop2.7.4ssh 伪分布式',1,'2018-01-29 11:31:25','2019-06-25 14:19:55','Hadoop','#!/bin/bash
#工作空间
cd WORKSPACE
#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名
@ -469,8 +469,8 @@ returnResult(){
returnResult
',100000,2048,1,120,1,5,14),
(8,'a48703cc8a4b','sdl2-vnc:v1.0','1','sdl2vncssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:51','SDL',null,100000,1024,1,120,1,2,null),
(9,'6293d9c4ae5b','php-ssh:v1.0','1','php7.1.10ssh',1,'2018-01-29 11:31:25','2019-08-20 15:47:31','PHP','#!/bin/bash
(8,'a48703cc8a4b','sdl2-vnc:v1.0','1','sdl2vncssh',1,'2018-01-29 11:31:25','2019-06-25 14:18:36','SDL',null,100000,1024,1,120,1,2,null),
(9,'6293d9c4ae5b','php-ssh:v1.0','1','php7.1.10ssh',1,'2018-01-29 11:31:25','2019-06-25 14:16:23','PHP','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -519,7 +519,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,2,4),
(10,'2f0657d8af26','octave-novnc:v1.0','1','octave4.2.1novnc',1,'2018-01-29 11:31:25','2019-08-24 09:44:14','Matlab','#!/bin/bash
(10,'d94b9367b952','octave-novnc:v1.0','1','octave4.2.1novnc',1,'2018-01-29 11:31:25','2019-06-25 14:15:43','Matlab','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -559,7 +559,7 @@ returnResult(){
returnResult
',100000,2048,1,120,0,8,19),
(12,'c64a7e3a4b1c','git-ssh:v1.0','1','git2.1.4ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:03','Git','#!/bin/bash
(12,'c64a7e3a4b1c','git-ssh:v1.0','1','git2.1.4ssh',1,'2018-01-29 11:31:25','2019-06-25 14:13:38','Git','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -654,7 +654,7 @@ returnResult(){
returnResult
',100000,1024,1,40,1,2,4),
(14,'f953dd677e85','ruby-ssh:v1.0','1','ruby2.3.1rails5.2.0ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:45','Ruby','#!/bin/bash
(14,'f953dd677e85','ruby-ssh:v1.0','1','ruby2.3.1rails5.2.0ssh',1,'2018-01-29 11:31:25','2019-06-25 14:18:33','Ruby','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -694,7 +694,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,2,null),
(15,'e56c4315f99c','ubuntu16-ssh:v1.0','1','ubuntu16.04ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:56','Shell','#!/bin/bash
(15,'e56c4315f99c','ubuntu16-ssh:v1.0','1','ubuntu16.04ssh',1,'2018-01-29 11:31:25','2019-06-25 14:18:39','Shell','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -734,7 +734,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,6,16),
(16,'316a8a646cdb','node-ssh:v1.0','1','node9.3.0python2python3htmlhint0.9.13csslint1.0.4ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:36','JavaScript','#!/bin/bash
(16,'316a8a646cdb','node-ssh:v1.0','1','node9.3.0python2python3htmlhint0.9.13csslint1.0.4ssh',1,'2018-01-29 11:31:25','2019-06-25 14:15:27','JavaScript','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -774,7 +774,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,1,1),
(17,'6e04f44485a9','perl6-ssh:v1.0','1','perl6ssh',1,'2018-01-29 11:31:25','2019-08-20 15:47:27','Perl6','#!/bin/bash
(17,'6e04f44485a9','perl6-ssh:v1.0','1','perl6ssh',1,'2018-01-29 11:31:25','2019-06-25 14:16:20','Perl6','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -814,7 +814,7 @@ returnResult(){
returnResult
',100000,1024,1,120,0,2,null),
(18,'4e82c3efd0fb','kotlin-ssh:v1.0','1','kotlin1.2.20ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:47','Kotlin','#!/bin/bash
(18,'4e82c3efd0fb','kotlin-ssh:v1.0','1','kotlin1.2.20ssh',1,'2018-01-29 11:31:25','2019-06-25 14:15:34','Kotlin','#!/bin/bash
#工作空间
cd WORKSPACE
#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名
@ -876,8 +876,8 @@ returnResult
',100000,1024,1,120,1,2,null),
(19,'2de19c574588','elixir-ssh:v1.0','1','elixir1.5.3ssh
',1,'2018-01-29 11:31:25','2019-08-20 15:45:56','Elixir',null,100000,1024,1,120,0,2,null),
(20,'a0067972d5d8','android:v1.0','1','jdk7jdk8android-sdk',1,'2018-01-29 11:31:25','2019-08-20 15:43:33','Android','#!/bin/bash
',1,'2018-01-29 11:31:25','2019-06-25 14:13:29','Elixir',null,100000,1024,1,120,0,2,null),
(20,'a0067972d5d8','android:v1.0','1','jdk7jdk8android-sdk',1,'2018-01-29 11:31:25','2019-07-31 10:18:28','Android','#!/bin/bash
#工作空间
cd WORKSPACE
#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名
@ -922,8 +922,8 @@ returnResult(){
returnResult
',100000,1024,1,120,0,3,5),
(21,'21bf72b5e23e','ubuntu16-xfce-vnc:v1.0','0','VNC图形化镜像',1,'2018-01-29 11:31:25','2019-08-20 15:45:35','VNC',null,100000,1024,1,120,0,6,17),
(22,'30f82079d643','jfinal-mysql55:v1.0','1','tomcat8.5.20mysql5.5jdk1.8ant1.10.1maven3.5.4',1,'2018-01-29 11:31:25','2019-08-28 16:05:17','JavaWeb','#!/bin/bash
(21,'21bf72b5e23e','ubuntu16-xfce-vnc:v1.0','0','VNC图形化镜像',1,'2018-01-29 11:31:25','2019-06-25 14:16:51','VNC',null,100000,1024,1,120,0,6,17),
(22,'1ec8ba103f82','jfinal-mysql55:v1.0','1','tomcat8.5.20mysql5.5jdk1.8ant1.10.1maven3.5.4',1,'2018-01-29 11:31:25','2019-06-25 14:15:30','JavaWeb','#!/bin/bash
cd WORKSPACEjfinalshop
sourceClassNames=("com.jfinalshop.test.TestRunner1" "com.jfinalshop.test.TestRunner2" "com.jfinalshop.test.TestRunner3" "com.jfinalshop.test.TestRunner4" "com.jfinalshop.test.TestRunner5" "com.jfinalshop.test.TestRunner6" "com.jfinalshop.test.TestRunner7")
@ -990,7 +990,7 @@ returnResult(){
returnResult
',100000,1024,1,180,0,1,2),
(24,'833b45fe4ce5','go-ssh:v1.0','1','go1.9.2ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:07','Go','#!/bin/bash
(24,'833b45fe4ce5','go-ssh:v1.0','1','go1.9.2ssh',1,'2018-01-29 11:31:25','2019-06-25 14:13:41','Go','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -1030,9 +1030,9 @@ returnResult(){
returnResult
',100000,1024,1,120,0,2,null),
(27,'7a7980335112','mysql55-ssh:v1.0','0','mysql5.5ssh',1,'2018-01-29 11:31:25','2019-08-20 15:45:51','Mysql',null,100000,1024,1,120,0,4,9),
(29,'d3d83a78ed87','spark-ssh:v1.0','1','jdk8maven3.5.0ssh;',1,'2018-01-29 11:31:25','2019-08-24 09:45:33','Spark',null,100000,2048,1,180,0,5,14),
(30,'f0d5bfc8134e','machine-learning:v1.0','1','python2.7.9python3.6.2jdk8ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:52','MachineLearning','#!/bin/bash
(27,'7a7980335112','mysql55-ssh:v1.0','0','mysql5.5ssh',1,'2018-01-29 11:31:25','2019-07-06 09:31:51','Mysql',null,100000,1024,1,120,0,4,9),
(29,'d3d83a78ed87','spark-ssh:v1.0','1','jdk8maven3.5.0ssh;',1,'2018-01-29 11:31:25','2019-07-25 19:31:54','Spark',null,100000,2048,1,180,0,5,14),
(30,'f0d5bfc8134e','machine-learning:v1.0','1','python2.7.9python3.6.2jdk8ssh',1,'2018-01-29 11:31:25','2019-06-25 14:15:37','MachineLearning','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -1073,7 +1073,7 @@ returnResult(){
returnResult
',100000,1024,1,180,0,5,12),
(32,'c3f1760586db','iverilog-ssh:v1.0','1','verilog0.10.0ssh',1,'2018-01-29 11:31:25','2019-08-20 15:46:05','Verilog','#!/bin/bash
(32,'c3f1760586db','iverilog-ssh:v1.0','1','verilog0.10.0ssh',1,'2018-01-29 11:31:25','2019-06-25 14:19:03','Verilog','#!/bin/bash
cd WORKSPACE
challengeProgramNames=("" "")
@ -1124,7 +1124,7 @@ returnResult(){
returnResult
',100000,1024,1,120,1,8,19),
(34,'14a2cc7affa2','dind-ssh:v1.0','1','docker17.06.0-cessh',1,'2018-01-29 11:31:25','2019-08-20 15:45:49','Docker','#!/bin/bash
(34,'14a2cc7affa2','dind-ssh:v1.0','1','docker17.06.0-cessh',1,'2018-01-29 11:31:25','2019-06-25 14:13:21','Docker','#!/bin/bash
cd WORKSPACE
#前台传来的可执行文件,即测试文件
@ -1167,36 +1167,35 @@ returnResult
',100000,1024,1,120,0,5,13),
(35,null,null,'0','',1,'2018-01-29 15:15:33','2018-01-29 15:16:03','Html',null,100000,1024,1,120,0,1,1),
(36,null,null,'0','',1,'2018-01-29 15:15:45','2018-01-29 15:15:45','Web',null,100000,1024,1,120,0,1,2),
(39,'405aebc1e662','mono-ssh:v1.0','1','mono5.4.1.7ssh',1,'2018-01-29 16:11:33','2019-08-20 15:44:57','C#',null,100000,1024,1,120,1,2,null),
(64,'d9c6e8954dad','sqlite-ssh:v1.0','1','sqlite3.11.0ssh',1,'2018-03-06 14:03:48','2019-08-20 15:47:08','SQLite3',null,100000,1024,1,120,null,null,null),
(66,'fbaeac72b706','oracle-ssh:v1.0','1','oracle11.2.0.2.0ssh',1,'2018-03-29 15:18:41','2019-08-20 15:47:14','Oracle',null,100000,800,1,240,null,null,null),
(94,'1ed037bbd23f','ghdl-ssh:v1.0','1','ghdl-0.36-devgnat-5.4.0ssh',1,'2018-04-04 17:21:04','2019-08-20 15:45:45','Vhdl',null,100000,1024,1,120,null,null,null),
(95,'46198ab247fb','r-ssh:v1.0','1','R-3.4.4ssh',1,'2018-04-08 10:30:37','2019-08-20 15:46:41','R',null,100000,1024,1,120,null,null,null),
(96,'ea8282136791','swift-ssh:v1.0','1','swift-4.1ssh',1,'2018-04-09 15:13:06','2019-08-20 15:46:15','Swift',null,100000,1024,1,120,null,null,null),
(97,'5d4e4884482c','sqlserver-ssh:v1.0','1','sqlserver2017ssh',1,'2018-04-26 11:55:21','2019-08-20 15:47:15','SQLServer',null,100000,2000,1,120,null,null,null),
(98,'714ba67fe884','mysqlserver55-ssh:v1.0','1','mysql5.5ssh',1,'2018-05-10 09:40:08','2019-08-24 09:45:13','MySQL',null,100000,1024,1,120,null,null,null),
(102,'cf662ab7da9c','ubuntu16-install-ssh:v1.0','1','添加了hadoop3.1.0和jdk1.8的源码包;',1,'2018-06-15 16:49:29','2019-08-20 15:46:09','Ubuntu16-env',null,1000000,2560,1,120,null,null,null),
(104,'24b3af129b64','mongo-ssh:v1.0','1','mogo4.0python3ssh',1,'2018-08-02 15:31:23','2019-08-20 15:47:07','Mongo',null,100000,1024,1,120,null,null,null),
(105,'3614e492d7e9','mongodb-ssh:v1.0','0','mogo4.0python3ssh',1,'2018-08-20 15:39:41','2019-08-20 15:45:56','Mogodb',null,100000,1024,1,120,null,null,null),
(106,'01ed95c29336','python3-vnc:v1.0','1','turtle库python3.5vnc',1,'2018-09-06 11:32:52','2019-08-20 15:46:29','Python3-vnc',null,100000,1024,1,120,null,null,null),
(39,'405aebc1e662','mono-ssh:v1.0','1','mono5.4.1.7ssh',1,'2018-01-29 16:11:33','2019-07-31 10:18:39','C#',null,100000,1024,1,120,1,2,null),
(64,'d9c6e8954dad','sqlite-ssh:v1.0','1','sqlite3.11.0ssh',1,'2018-03-06 14:03:48','2019-06-25 14:18:45','SQLite3',null,100000,1024,1,120,null,null,null),
(66,'fbaeac72b706','oracle-ssh:v1.0','1','oracle11.2.0.2.0ssh',1,'2018-03-29 15:18:41','2019-06-25 14:16:16','Oracle',null,100000,800,1,240,null,null,null),
(94,'1ed037bbd23f','ghdl-ssh:v1.0','1','ghdl-0.36-devgnat-5.4.0ssh',1,'2018-04-04 17:21:04','2019-06-25 14:19:07','Vhdl',null,100000,1024,1,120,null,null,null),
(95,'46198ab247fb','r-ssh:v1.0','1','R-3.4.4ssh',1,'2018-04-08 10:30:37','2019-06-25 14:18:29','R',null,100000,1024,1,120,null,null,null),
(96,'ea8282136791','swift-ssh:v1.0','1','swift-4.1ssh',1,'2018-04-09 15:13:06','2019-06-25 14:18:56','Swift',null,100000,1024,1,120,null,null,null),
(97,'5d4e4884482c','sqlserver-ssh:v1.0','1','sqlserver2017ssh',1,'2018-04-26 11:55:21','2019-06-25 14:18:50','SQLServer',null,100000,2000,1,120,null,null,null),
(98,'714ba67fe884','mysqlserver55-ssh:v1.0','1','mysql5.5ssh',1,'2018-05-10 09:40:08','2019-07-06 10:32:08','MySQL',null,100000,1024,1,120,null,null,null),
(102,'cf662ab7da9c','ubuntu16-install-ssh:v1.0','1','添加了hadoop3.1.0和jdk1.8的源码包;',1,'2018-06-15 16:49:29','2019-06-25 14:19:00','Ubuntu16-env',null,100000,2560,1,120,null,null,null),
(104,'24b3af129b64','mongo-ssh:v1.0','1','mogo4.0python3ssh',1,'2018-08-02 15:31:23','2019-06-25 14:15:59','Mongo',null,100000,1024,1,120,null,null,null),
(105,'3614e492d7e9','mongodb-ssh:v1.0','0','mogo4.0python3ssh',1,'2018-08-20 15:39:41','2019-06-25 14:16:44','Mogodb',null,100000,1024,1,120,null,null,null),
(106,'01ed95c29336','python3-vnc:v1.0','1','turtle库python3.5vnc',1,'2018-09-06 11:32:52','2019-06-25 14:17:37','Python3-vnc',null,100000,1024,1,120,null,null,null),
(107,'84499af0600f','python3-competition:v1.0','1','没有安装sklearn包',1,'2018-10-29 10:23:30','2019-06-25 14:17:29','Python3-competition',null,100000,1024,1,120,null,null,null),
(108,'b64b94a5ed4d','hbase-ssh:v1.0','1','Hadoop2.7 JDK8.0 HBase2.1.1 伪分布式',1,'2018-11-14 13:16:45','2019-08-20 15:46:17','Hbase',null,100000,3096,2,200,null,null,null),
(109,'f890a121e481','postgresql-ssh:v1.0','1','postgresql9.5.14ssh',1,'2018-11-15 12:15:17','2019-08-20 15:47:36','PostgreSql',null,100000,1024,1,120,null,null,null),
(110,'bd62c3d558cd','hbase2-ssh:v1.0','1','为分部署定制的镜像。',1,'2018-11-18 15:27:27','2019-08-20 15:46:26','Hbase2',null,100000,4048,1,120,null,null,null),
(111,'fa6acf79f4c2','hbase-simple:v1.0','1','单节点',1,'2018-11-30 15:10:54','2019-08-24 09:45:19','Hbase-simple',null,100000,3072,2,80,null,null,null),
(112,'b1b1eb1ad716','sqoop-ssh:v1.0','1','Hbase基础上安装了 sqoop',1,'2018-12-18 09:21:54','2019-08-20 15:46:24','Sqoop',null,100000,2048,1,120,null,null,null),
(108,'b64b94a5ed4d','hbase-ssh:v1.0','1','Hadoop2.7 JDK8.0 HBase2.1.1 伪分布式',1,'2018-11-14 13:16:45','2019-06-25 14:14:35','Hbase',null,100000,3096,2,200,null,null,null),
(109,'f890a121e481','postgresql-ssh:v1.0','1','postgresql9.5.14ssh',1,'2018-11-15 12:15:17','2019-06-25 14:16:32','PostgreSql',null,100000,1024,1,120,null,null,null),
(110,'bd62c3d558cd','hbase2-ssh:v1.0','1','为分部署定制的镜像。',1,'2018-11-18 15:27:27','2019-06-25 14:15:13','Hbase2',null,100000,4048,1,120,null,null,null),
(111,'8bfdbbac7601','hbase-simple:v1.0','1','单节点',1,'2018-11-30 15:10:54','2019-08-06 17:03:27','Hbase-simple',null,100000,3072,2,80,null,null,null),
(112,'b1b1eb1ad716','sqoop-ssh:v1.0','1','Hbase基础上安装了 sqoop',1,'2018-12-18 09:21:54','2019-06-25 14:18:53','Sqoop',null,100000,2048,1,120,null,null,null),
(113,null,null,'0','',1,'2018-12-20 10:20:33','2018-12-20 10:20:33','Css',null,100000,1024,1,120,null,null,null),
(114,'433f4526ec22','nasm-ssh:v1.0','1','汇编语言',1,'2019-02-18 17:13:34','2019-08-20 15:47:10','Nasm',null,100000,1024,1,120,null,null,null),
(115,'6f3c7e80aeea','ubuntu-nvidia:v1.0','1','GPU',1,'2019-03-07 14:32:45','2019-08-24 09:47:22','Python-Gpu',null,100000,2048,1,120,null,null,null),
(116,'90366fe59219','python3-tentensorflow1.5-ssh:v1.0','1','',1,'2019-03-08 10:48:22','2019-08-20 15:47:53','Python3-tentensorflow1.5',null,100000,2048,1,120,null,null,null),
(118,'53ffa15bc4ec','kafka-ssh:v1.0','1','kafka_2.11-1.1.0afka_2.11-1.1.0sshmvn',1,'2019-03-20 17:33:46','2019-08-24 09:44:08','Kafka',null,100000,2500,1,120,null,null,null),
(119,'b3f6ce4aafbb','vscode-novnc:v1.0','1','VSCode、novnc、netsurf、ssh、pip3、flask、sogou;',1,'2019-05-29 17:42:02','2019-08-24 09:45:42','VSCode',null,100000,2048,1,120,null,null,null),
(120,'45221690780b','ubuntu-nvidia-c:v1.0','1','cuda、mpi',1,'2019-06-05 17:46:20','2019-08-24 09:47:31','GPU-C/C++',null,100000,1024,1,120,null,null,null),
(123,'c4f0b2ef2ed2','flink-mysql55:v1.0','1','flink1.8、mvn、jdk8;',1,'2019-06-17 16:10:27','2019-08-24 09:43:36','Flink',null,100000,3072,1,120,null,null,null),
(124,'bdfb097d9a30','matlab-novnc:v1.0','1','matlab2017图形化',1,'2019-06-25 13:29:14','2019-08-24 09:45:08','Matlab/vnc',null,100000,2048,2,120,null,null,null),
(114,'433f4526ec22','nasm-ssh:v1.0','1','汇编语言',1,'2019-02-18 17:13:34','2019-06-25 14:16:13','Nasm',null,100000,1024,1,120,null,null,null),
(115,'06144b287844','ubuntu-nvidia:v1.0','1','GPU',1,'2019-03-07 14:32:45','2019-06-25 14:16:35','Python-Gpu',null,100000,2048,1,120,null,null,null),
(116,'90366fe59219','python3-tentensorflow1.5-ssh:v1.0','1','',1,'2019-03-08 10:48:22','2019-06-25 14:17:33','Python3-tentensorflow1.5',null,100000,2048,1,120,null,null,null),
(118,'18f7eeb2d1c2','kafka-ssh:v1.0','1','kafka_2.11-1.1.0afka_2.11-1.1.0sshmvn',1,'2019-03-20 17:33:46','2019-08-02 15:02:46','Kafka',null,100000,2500,1,120,null,null,null),
(119,'b3f6ce4aafbb','vscode-novnc:v1.0','1','VSCode、novnc、netsurf、ssh、pip3、flask、sogou;',1,'2019-05-29 17:42:02','2019-07-25 16:19:42','VSCode',null,100000,2048,1,120,null,null,null),
(120,'64f5d945efcc','ubuntu-nvidia-c:v1.0','1','cuda、mpi',1,'2019-06-05 17:46:20','2019-06-25 14:13:45','GPU-C/C++',null,100000,1024,1,120,null,null,null),
(123,'c4f0b2ef2ed2','flink-mysql55:v1.0','1','flink1.8、mvn、jdk8;',1,'2019-06-17 16:10:27','2019-07-19 13:28:00','Flink',null,100000,2560,1,120,null,null,null),
(124,'bdfb097d9a30','matlab-novnc:v1.0','1','matlab2017图形化',1,'2019-06-25 13:29:14','2019-06-27 16:26:55','Matlab/vnc',null,100000,2048,2,120,null,null,null),
(126,'12450a0d48ea','sqlserver-ssh2:v1.0',null,null,0,'2019-06-26 10:23:18','2019-06-26 10:23:18',null,null,100000,1024,1,120,null,null,null),
(127,'16e3a8b20df2','cisco-novnc:v1.0','1','cisco、vscode、firefox、wireshark',1,'2019-07-17 17:03:53','2019-08-24 09:43:24','Cisco',null,100000,1024,1,120,null,null,null),
(129,'77520d805023','hbase-finish-ssh:v1.0','1','hbase 2.0.0',1,'2019-08-13 16:30:16','2019-08-29 10:52:37','Hbase-finish',null,100000,2048,1,120,null,null,null);
(127,'16e3a8b20df2','cisco-novnc:v1.0','1','cisco、vscode、firefox、wireshark',1,'2019-07-17 17:03:53','2019-07-17 17:06:12','Cisco',null,100000,1024,1,120,null,null,null);
DROP TABLE IF EXISTS `mirror_scripts`;
CREATE TABLE `mirror_scripts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -1207,7 +1206,7 @@ CREATE TABLE `mirror_scripts` (
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8;
) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8;
insert into `mirror_scripts`(`id`,`mirror_repository_id`,`script`,`script_type`,`description`,`created_at`,`updated_at`) values
(1,13,'#!/bin/bash
@ -5280,58 +5279,7 @@ returnResult(){
result="{\\"compileResult\\":\\"$compileResult\\",\\"out\\":$output,\\"resUsage\\":\\"$res_usage\\"}"
echo $result
}
returnResult','Python-Gpu/Shell','','2019-07-19 15:10:36','2019-07-19 15:13:52'),
(88,null,null,null,null,'2019-08-13 16:46:05','2019-08-13 16:46:05'),
(89,129,'#!/bin/bash
cd WORKSPACE
# 待执行的评测文件
sourceClassNames=(SOURCECLASSNAMES)
# 执行命令
executeCommand="bash"
# 获取测试用例的输入(请勿改动此行语句)
input=$2;OLD_IFS="$IFS"; IFS=,; ins=($input);IFS="$OLD_IFS"
compileResult=$(echo -n "compile successfully" | base64)
# 执行函数
execute(){
# 当前关卡的执行目标文件
sourceClassName=${sourceClassNames[$1 - 1]}
# 当前关卡号
challengeStage=$1
# 循环获取各测试用例下的实际输出
res_usage="{\\"testSetUsages\\":["
output=\'\'
i=0
while [[ i -lt ${#ins[*]} ]]; do
echo 0 > /sys/fs/cgroup/memory/memory.max_usage_in_bytes
startCpuUsage=$(cat /sys/fs/cgroup/cpuacct/cpuacct.usage)
result=$(echo "${ins[$i]}" | base64 -d | $executeCommand $sourceClassName 2>&1 | base64)
# 拼接输出结果
endCpuUsage=$(cat /sys/fs/cgroup/cpuacct/cpuacct.usage)
let testSetCpuUsage=$endCpuUsage-$startCpuUsage
maxMemUsage=$(cat /sys/fs/cgroup/memory/memory.max_usage_in_bytes)
res_usage="$res_usage{\\"testSetTime\\":\\"$testSetCpuUsage\\",\\"testSetMem\\":\\"$maxMemUsage\\"},"
output=$output\\"$result\\",
let i++
done
output="[${output%?}]"
}
execute $1
res_usage="${res_usage::-1}"
res_usage="$res_usage]}"
res_usage=$(echo -ne "$res_usage"|base64)
# 返回评测结果
returnResult(){
result="{\\"compileResult\\":\\"$compileResult\\",\\"out\\":$output,\\"resUsage\\":\\"$res_usage\\"}"
echo $result
}
returnResult','Hbase-finish/Shell','','2019-08-13 16:47:52','2019-08-13 16:47:52');
returnResult','Python-Gpu/Shell','','2019-07-19 15:10:36','2019-07-19 15:13:52');
DROP TABLE IF EXISTS `platform_samples`;
CREATE TABLE `platform_samples` (
`id` int(11) NOT NULL AUTO_INCREMENT,
@ -5537,5 +5485,47 @@ returnResult','2018-01-29 16:21:11','2018-02-01 14:36:37'),
','2018-04-20 09:10:16','2018-04-20 09:10:16');
DROP TABLE IF EXISTS `edu_settings`;
CREATE TABLE `edu_settings` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `index_edu_settings_on_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;
insert into `edu_settings`(`id`,`name`,`value`,`created_at`,`updated_at`,`description`) values
(1,'tomcat_webssh','http://172.16.94.254:8890','2019-06-21 09:38:31','2019-08-22 13:45:18',null),
(2,'webssh_username','root','2019-06-21 09:38:31','2019-06-21 10:29:51',null),
(3,'webssh_password','123123','2019-06-21 09:38:31','2019-06-21 10:30:02',null),
(4,'git_address_ip','http://172.16.95.5:9000','2019-06-21 09:38:31','2019-08-30 16:18:43',null),
(5,'git_address_domain','http://pre-git.educoder.net','2019-06-21 09:38:31','2019-08-30 16:18:32',null),
(6,'git_username','edugit','2019-06-21 09:38:31','2019-06-21 10:28:17',null),
(7,'git_password',' xinedugit#','2019-06-21 09:38:31','2019-06-21 10:28:26',null),
(8,'public_key','z7AAP5vtgm8UsbLIfbHodzb+iqH2vPz0sqK+jS4Kx7Nt9D6SgpLkKA==','2019-06-21 09:38:31','2019-06-26 10:01:20',null),
(9,'private_key','f3cb7907a54957953aebb32508b853934a9d3e91','2019-06-21 09:38:31','2019-06-26 10:01:34',null),
(10,'public_bucket','educoder','2019-06-21 09:38:31','2019-06-21 10:32:22',null),
(11,'public_bucket_host','https://pre-newweb.educoder.net','2019-06-21 09:38:31','2019-08-23 18:02:03',null),
(12,'public_cdn_host','','2019-06-21 09:38:31','2019-08-22 16:09:22',null),
(13,'cloud_bridge','http://172.16.94.254:8890','2019-06-21 09:38:31','2019-08-22 13:45:28',null),
(14,'cloud_tomcat_php','http://121.40.224.66','2019-06-21 09:38:31','2019-08-23 18:05:58',null),
(15,'host_name','http://pre-newweb.educoder.net','2019-06-21 09:38:31','2019-08-23 18:02:11',null),
(16,'old_edu_host','http://pre-oldweb.educoder.net','2019-06-21 09:38:31','2019-08-23 18:06:15',null),
(17,'bridge_secret_key','priEn3UwXfJs3PmyXnSG','2019-06-21 10:54:07','2019-06-21 10:54:07',null),
(18,'attachment_folder','/home/pdl/educoderplus/files','2019-06-21 10:54:34','2019-06-21 10:54:34',null),
(19,'cookie_domain','.educoder.net ','2019-06-21 10:54:50','2019-06-21 10:54:50',null),
(20,'openi_domain','https://openi.org.cn ','2019-06-21 10:55:39','2019-06-21 10:55:39',null),
(21,'sms_apikey','2affbf2ff83f9810512622ec83bccd4f','2019-06-21 10:56:22','2019-06-21 10:56:22',null),
(22,'educoder_domain','http://pre-newweb.educoder.net','2019-06-21 10:57:28','2019-08-23 18:02:22',null),
(23,'vnc_url','vnc.educoder.net','2019-06-22 17:53:54','2019-07-20 12:32:52',null),
(26,'review_server_url','http://172.16.94.186:80','2019-06-27 13:53:05','2019-08-09 10:37:52',null),
(27,'autologin_cookie_name','autologin_trustie','2019-07-22 10:16:27','2019-07-22 10:16:27',null),
(29,'notify_admin_phone','18711085785','2019-08-01 13:52:27','2019-08-01 13:52:27',null),
(30,'teacher_register_phone','17680641960','2019-08-01 16:16:17','2019-08-01 16:16:17',null),
(31,'subject_shixun_notify_phone','18711011226','2019-08-01 16:16:57','2019-08-01 16:16:57',null),
(32,'es_min_score','10','2019-08-02 08:51:17','2019-08-02 08:53:00',null);
SET FOREIGN_KEY_CHECKS = 1;

@ -1,6 +1,6 @@
class AddUpdateUserIdToStudentWorks < ActiveRecord::Migration[5.2]
def change
add_column :student_works, :update_user_id, :integer
#add_column :student_works, :update_user_id, :integer
StudentWork.update_all("update_user_id = commit_user_id")
end
end

@ -11,7 +11,7 @@ user_params = [
{
id: 1,
login: 'educoder',
hashed_password: '0434e43e945cd5aa375dc268f6af77a1c881852a',
hashed_password: 'be23da3a28946db0eb0c5e62964cf7669621977a',
lastname: '社区导师',
mail: '721773699@qq.com',
admin: 1,

@ -1,44 +1,44 @@
{
"./static/js/0.b72bb743.chunk.js": "./static/js/0.b72bb743.chunk.js",
"./static/js/1.772fa078.chunk.js": "./static/js/1.772fa078.chunk.js",
"./static/js/10.a63f114c.chunk.js": "./static/js/10.a63f114c.chunk.js",
"./static/js/100.95f61b0d.chunk.js": "./static/js/100.95f61b0d.chunk.js",
"./static/js/101.85a19ed1.chunk.js": "./static/js/101.85a19ed1.chunk.js",
"./static/js/102.d514a945.chunk.js": "./static/js/102.d514a945.chunk.js",
"./static/js/103.3e04b63e.chunk.js": "./static/js/103.3e04b63e.chunk.js",
"./static/js/104.21ee3efc.chunk.js": "./static/js/104.21ee3efc.chunk.js",
"./static/js/105.47197023.chunk.js": "./static/js/105.47197023.chunk.js",
"./static/js/106.a5f51790.chunk.js": "./static/js/106.a5f51790.chunk.js",
"./static/js/107.8d901178.chunk.js": "./static/js/107.8d901178.chunk.js",
"./static/js/108.41aff1a1.chunk.js": "./static/js/108.41aff1a1.chunk.js",
"./static/js/109.191f99ee.chunk.js": "./static/js/109.191f99ee.chunk.js",
"./static/js/11.285261c8.chunk.js": "./static/js/11.285261c8.chunk.js",
"./static/js/110.50893e43.chunk.js": "./static/js/110.50893e43.chunk.js",
"./static/js/111.229cee79.chunk.js": "./static/js/111.229cee79.chunk.js",
"./static/js/112.13c29d28.chunk.js": "./static/js/112.13c29d28.chunk.js",
"./static/js/113.c593c219.chunk.js": "./static/js/113.c593c219.chunk.js",
"./static/js/114.8813860f.chunk.js": "./static/js/114.8813860f.chunk.js",
"./static/js/115.04f316d7.chunk.js": "./static/js/115.04f316d7.chunk.js",
"./static/js/116.daf409ea.chunk.js": "./static/js/116.daf409ea.chunk.js",
"./static/js/117.7686d594.chunk.js": "./static/js/117.7686d594.chunk.js",
"./static/js/118.1f1d71fb.chunk.js": "./static/js/118.1f1d71fb.chunk.js",
"./static/js/119.00c504d6.chunk.js": "./static/js/119.00c504d6.chunk.js",
"./static/js/12.dd868a8a.chunk.js": "./static/js/12.dd868a8a.chunk.js",
"./static/js/120.d342cce4.chunk.js": "./static/js/120.d342cce4.chunk.js",
"./static/js/121.fb29de4f.chunk.js": "./static/js/121.fb29de4f.chunk.js",
"./static/js/122.db14bf1e.chunk.js": "./static/js/122.db14bf1e.chunk.js",
"./static/js/0.26f51bd8.chunk.js": "./static/js/0.26f51bd8.chunk.js",
"./static/js/1.0a6759a9.chunk.js": "./static/js/1.0a6759a9.chunk.js",
"./static/js/10.5cd4d296.chunk.js": "./static/js/10.5cd4d296.chunk.js",
"./static/js/100.96be48cd.chunk.js": "./static/js/100.96be48cd.chunk.js",
"./static/js/101.887d0286.chunk.js": "./static/js/101.887d0286.chunk.js",
"./static/js/102.b299f3a1.chunk.js": "./static/js/102.b299f3a1.chunk.js",
"./static/js/103.7dd159c1.chunk.js": "./static/js/103.7dd159c1.chunk.js",
"./static/js/104.89fac2bb.chunk.js": "./static/js/104.89fac2bb.chunk.js",
"./static/js/105.6a00b843.chunk.js": "./static/js/105.6a00b843.chunk.js",
"./static/js/106.52961952.chunk.js": "./static/js/106.52961952.chunk.js",
"./static/js/107.2f251b6d.chunk.js": "./static/js/107.2f251b6d.chunk.js",
"./static/js/108.e635e023.chunk.js": "./static/js/108.e635e023.chunk.js",
"./static/js/109.60db0625.chunk.js": "./static/js/109.60db0625.chunk.js",
"./static/js/11.95a80a05.chunk.js": "./static/js/11.95a80a05.chunk.js",
"./static/js/110.21047f82.chunk.js": "./static/js/110.21047f82.chunk.js",
"./static/js/111.55e96fb9.chunk.js": "./static/js/111.55e96fb9.chunk.js",
"./static/js/112.ff5ab185.chunk.js": "./static/js/112.ff5ab185.chunk.js",
"./static/js/113.91b52670.chunk.js": "./static/js/113.91b52670.chunk.js",
"./static/js/114.54116931.chunk.js": "./static/js/114.54116931.chunk.js",
"./static/js/115.095774a8.chunk.js": "./static/js/115.095774a8.chunk.js",
"./static/js/116.198c906b.chunk.js": "./static/js/116.198c906b.chunk.js",
"./static/js/117.d73b01e4.chunk.js": "./static/js/117.d73b01e4.chunk.js",
"./static/js/118.69d1cd48.chunk.js": "./static/js/118.69d1cd48.chunk.js",
"./static/js/119.d3f1d335.chunk.js": "./static/js/119.d3f1d335.chunk.js",
"./static/js/12.a97aa197.chunk.js": "./static/js/12.a97aa197.chunk.js",
"./static/js/120.51e8bce6.chunk.js": "./static/js/120.51e8bce6.chunk.js",
"./static/js/121.1cc731c6.chunk.js": "./static/js/121.1cc731c6.chunk.js",
"./static/js/122.971ab8ed.chunk.js": "./static/js/122.971ab8ed.chunk.js",
"./static/js/123.bb7e5641.chunk.js": "./static/js/123.bb7e5641.chunk.js",
"./static/js/124.a9266c3e.chunk.js": "./static/js/124.a9266c3e.chunk.js",
"./static/js/125.1276dbdd.chunk.js": "./static/js/125.1276dbdd.chunk.js",
"./static/js/124.45cf1160.chunk.js": "./static/js/124.45cf1160.chunk.js",
"./static/js/125.a4d417ce.chunk.js": "./static/js/125.a4d417ce.chunk.js",
"./static/js/126.b15e65c4.chunk.js": "./static/js/126.b15e65c4.chunk.js",
"./static/js/127.0b61f254.chunk.js": "./static/js/127.0b61f254.chunk.js",
"./static/js/128.c01795db.chunk.js": "./static/js/128.c01795db.chunk.js",
"./static/js/129.0bdbd5ce.chunk.js": "./static/js/129.0bdbd5ce.chunk.js",
"./static/js/13.6be63d13.chunk.js": "./static/js/13.6be63d13.chunk.js",
"./static/js/130.919dc802.chunk.js": "./static/js/130.919dc802.chunk.js",
"./static/js/131.8d14c0c1.chunk.js": "./static/js/131.8d14c0c1.chunk.js",
"./static/js/13.2e4a43dd.chunk.js": "./static/js/13.2e4a43dd.chunk.js",
"./static/js/130.be53073f.chunk.js": "./static/js/130.be53073f.chunk.js",
"./static/js/131.061e81ca.chunk.js": "./static/js/131.061e81ca.chunk.js",
"./static/js/132.3ed9b6d8.chunk.js": "./static/js/132.3ed9b6d8.chunk.js",
"./static/js/133.1ea3bf5f.chunk.js": "./static/js/133.1ea3bf5f.chunk.js",
"./static/js/133.5b17136f.chunk.js": "./static/js/133.5b17136f.chunk.js",
"./static/js/134.2d08c935.chunk.js": "./static/js/134.2d08c935.chunk.js",
"./static/js/135.6663792c.chunk.js": "./static/js/135.6663792c.chunk.js",
"./static/js/136.b7ea4ced.chunk.js": "./static/js/136.b7ea4ced.chunk.js",
@ -78,7 +78,7 @@
"./static/js/167.1b9d950b.chunk.js": "./static/js/167.1b9d950b.chunk.js",
"./static/js/168.83d0757d.chunk.js": "./static/js/168.83d0757d.chunk.js",
"./static/js/169.24176e0e.chunk.js": "./static/js/169.24176e0e.chunk.js",
"./static/js/17.920976a4.chunk.js": "./static/js/17.920976a4.chunk.js",
"./static/js/17.d25852cc.chunk.js": "./static/js/17.d25852cc.chunk.js",
"./static/js/170.430c8451.chunk.js": "./static/js/170.430c8451.chunk.js",
"./static/js/171.c394de8f.chunk.js": "./static/js/171.c394de8f.chunk.js",
"./static/js/172.251e674e.chunk.js": "./static/js/172.251e674e.chunk.js",
@ -89,7 +89,7 @@
"./static/js/177.6d6684a5.chunk.js": "./static/js/177.6d6684a5.chunk.js",
"./static/js/178.616fd110.chunk.js": "./static/js/178.616fd110.chunk.js",
"./static/js/179.08813572.chunk.js": "./static/js/179.08813572.chunk.js",
"./static/js/18.7b758a5a.chunk.js": "./static/js/18.7b758a5a.chunk.js",
"./static/js/18.5a3c202b.chunk.js": "./static/js/18.5a3c202b.chunk.js",
"./static/js/180.d47a26a0.chunk.js": "./static/js/180.d47a26a0.chunk.js",
"./static/js/181.d5112da3.chunk.js": "./static/js/181.d5112da3.chunk.js",
"./static/js/182.b7dfc7b7.chunk.js": "./static/js/182.b7dfc7b7.chunk.js",
@ -103,7 +103,7 @@
"./static/js/19.1323a4bd.chunk.js": "./static/js/19.1323a4bd.chunk.js",
"./static/js/190.8658cae4.chunk.js": "./static/js/190.8658cae4.chunk.js",
"./static/js/191.ac20f459.chunk.js": "./static/js/191.ac20f459.chunk.js",
"./static/js/2.c3f23dd8.chunk.js": "./static/js/2.c3f23dd8.chunk.js",
"./static/js/2.c9d0215b.chunk.js": "./static/js/2.c9d0215b.chunk.js",
"./static/js/20.86f05c33.chunk.js": "./static/js/20.86f05c33.chunk.js",
"./static/js/21.ca0f88cd.chunk.js": "./static/js/21.ca0f88cd.chunk.js",
"./static/js/22.249168cf.chunk.js": "./static/js/22.249168cf.chunk.js",
@ -112,88 +112,88 @@
"./static/js/25.d1401b2d.chunk.js": "./static/js/25.d1401b2d.chunk.js",
"./static/js/26.53f0e545.chunk.js": "./static/js/26.53f0e545.chunk.js",
"./static/js/27.496bf55f.chunk.js": "./static/js/27.496bf55f.chunk.js",
"./static/js/28.970439de.chunk.js": "./static/js/28.970439de.chunk.js",
"./static/js/29.0f820826.chunk.js": "./static/js/29.0f820826.chunk.js",
"./static/js/3.dcd70414.chunk.js": "./static/js/3.dcd70414.chunk.js",
"./static/js/30.d4a11c9f.chunk.js": "./static/js/30.d4a11c9f.chunk.js",
"./static/js/31.c673c6fb.chunk.js": "./static/js/31.c673c6fb.chunk.js",
"./static/js/32.4d2bc208.chunk.js": "./static/js/32.4d2bc208.chunk.js",
"./static/js/33.d0730a61.chunk.js": "./static/js/33.d0730a61.chunk.js",
"./static/js/34.26c98477.chunk.js": "./static/js/34.26c98477.chunk.js",
"./static/js/35.eae752e9.chunk.js": "./static/js/35.eae752e9.chunk.js",
"./static/js/36.5b926170.chunk.js": "./static/js/36.5b926170.chunk.js",
"./static/js/37.d9bf1eda.chunk.js": "./static/js/37.d9bf1eda.chunk.js",
"./static/js/38.7b9102f1.chunk.js": "./static/js/38.7b9102f1.chunk.js",
"./static/js/39.d8524826.chunk.js": "./static/js/39.d8524826.chunk.js",
"./static/js/4.06415140.chunk.js": "./static/js/4.06415140.chunk.js",
"./static/js/28.29234730.chunk.js": "./static/js/28.29234730.chunk.js",
"./static/js/29.f1a19121.chunk.js": "./static/js/29.f1a19121.chunk.js",
"./static/js/3.7c29747f.chunk.js": "./static/js/3.7c29747f.chunk.js",
"./static/js/30.7215d979.chunk.js": "./static/js/30.7215d979.chunk.js",
"./static/js/31.9b53191c.chunk.js": "./static/js/31.9b53191c.chunk.js",
"./static/js/32.0a8f95f8.chunk.js": "./static/js/32.0a8f95f8.chunk.js",
"./static/js/33.2f2f54b7.chunk.js": "./static/js/33.2f2f54b7.chunk.js",
"./static/js/34.e7282a91.chunk.js": "./static/js/34.e7282a91.chunk.js",
"./static/js/35.f3906dee.chunk.js": "./static/js/35.f3906dee.chunk.js",
"./static/js/36.0890b3a8.chunk.js": "./static/js/36.0890b3a8.chunk.js",
"./static/js/37.be341112.chunk.js": "./static/js/37.be341112.chunk.js",
"./static/js/38.8ed09777.chunk.js": "./static/js/38.8ed09777.chunk.js",
"./static/js/39.c8d3471e.chunk.js": "./static/js/39.c8d3471e.chunk.js",
"./static/js/4.41d6a7a1.chunk.js": "./static/js/4.41d6a7a1.chunk.js",
"./static/js/40.bacd5d18.chunk.js": "./static/js/40.bacd5d18.chunk.js",
"./static/js/41.527f0c81.chunk.js": "./static/js/41.527f0c81.chunk.js",
"./static/js/42.792984b5.chunk.js": "./static/js/42.792984b5.chunk.js",
"./static/js/43.12545bce.chunk.js": "./static/js/43.12545bce.chunk.js",
"./static/js/44.9d5ca8a4.chunk.js": "./static/js/44.9d5ca8a4.chunk.js",
"./static/js/45.22460660.chunk.js": "./static/js/45.22460660.chunk.js",
"./static/js/46.5861d434.chunk.js": "./static/js/46.5861d434.chunk.js",
"./static/js/47.0e5d5a88.chunk.js": "./static/js/47.0e5d5a88.chunk.js",
"./static/js/48.5cb0f302.chunk.js": "./static/js/48.5cb0f302.chunk.js",
"./static/js/49.5bfeff58.chunk.js": "./static/js/49.5bfeff58.chunk.js",
"./static/js/5.72ce0ba5.chunk.js": "./static/js/5.72ce0ba5.chunk.js",
"./static/js/50.95092897.chunk.js": "./static/js/50.95092897.chunk.js",
"./static/js/51.218eaed9.chunk.js": "./static/js/51.218eaed9.chunk.js",
"./static/js/52.323ae69b.chunk.js": "./static/js/52.323ae69b.chunk.js",
"./static/js/53.d34baa5a.chunk.js": "./static/js/53.d34baa5a.chunk.js",
"./static/js/54.49bf0100.chunk.js": "./static/js/54.49bf0100.chunk.js",
"./static/js/55.64835dd4.chunk.js": "./static/js/55.64835dd4.chunk.js",
"./static/js/56.ffd48ce5.chunk.js": "./static/js/56.ffd48ce5.chunk.js",
"./static/js/57.d03287ba.chunk.js": "./static/js/57.d03287ba.chunk.js",
"./static/js/58.9aa3ee18.chunk.js": "./static/js/58.9aa3ee18.chunk.js",
"./static/js/59.f0655f50.chunk.js": "./static/js/59.f0655f50.chunk.js",
"./static/js/6.c089056b.chunk.js": "./static/js/6.c089056b.chunk.js",
"./static/js/60.f4a7efd3.chunk.js": "./static/js/60.f4a7efd3.chunk.js",
"./static/js/61.a4a894e5.chunk.js": "./static/js/61.a4a894e5.chunk.js",
"./static/js/62.f32828d9.chunk.js": "./static/js/62.f32828d9.chunk.js",
"./static/js/63.ddae66e8.chunk.js": "./static/js/63.ddae66e8.chunk.js",
"./static/js/64.6b594cfe.chunk.js": "./static/js/64.6b594cfe.chunk.js",
"./static/js/65.6048622b.chunk.js": "./static/js/65.6048622b.chunk.js",
"./static/js/66.96e07511.chunk.js": "./static/js/66.96e07511.chunk.js",
"./static/js/67.180dcd01.chunk.js": "./static/js/67.180dcd01.chunk.js",
"./static/js/68.f1643df5.chunk.js": "./static/js/68.f1643df5.chunk.js",
"./static/js/69.209caa0c.chunk.js": "./static/js/69.209caa0c.chunk.js",
"./static/js/7.d8d5d4f0.chunk.js": "./static/js/7.d8d5d4f0.chunk.js",
"./static/js/70.f8b32463.chunk.js": "./static/js/70.f8b32463.chunk.js",
"./static/js/71.f84dfb6c.chunk.js": "./static/js/71.f84dfb6c.chunk.js",
"./static/js/72.06fc1800.chunk.js": "./static/js/72.06fc1800.chunk.js",
"./static/js/73.11879945.chunk.js": "./static/js/73.11879945.chunk.js",
"./static/js/74.f3fbdc1f.chunk.js": "./static/js/74.f3fbdc1f.chunk.js",
"./static/js/75.08b30165.chunk.js": "./static/js/75.08b30165.chunk.js",
"./static/js/76.f7a79e61.chunk.js": "./static/js/76.f7a79e61.chunk.js",
"./static/js/77.37694687.chunk.js": "./static/js/77.37694687.chunk.js",
"./static/js/78.2b57a1c1.chunk.js": "./static/js/78.2b57a1c1.chunk.js",
"./static/js/79.19d03059.chunk.js": "./static/js/79.19d03059.chunk.js",
"./static/js/8.2b7f504e.chunk.js": "./static/js/8.2b7f504e.chunk.js",
"./static/js/80.adf09872.chunk.js": "./static/js/80.adf09872.chunk.js",
"./static/js/81.1e9c841d.chunk.js": "./static/js/81.1e9c841d.chunk.js",
"./static/js/82.df1e5ec3.chunk.js": "./static/js/82.df1e5ec3.chunk.js",
"./static/js/83.2288f95e.chunk.js": "./static/js/83.2288f95e.chunk.js",
"./static/js/84.3a5a9f4d.chunk.js": "./static/js/84.3a5a9f4d.chunk.js",
"./static/js/85.e5955097.chunk.js": "./static/js/85.e5955097.chunk.js",
"./static/js/86.728ac671.chunk.js": "./static/js/86.728ac671.chunk.js",
"./static/js/87.e2e9c9ce.chunk.js": "./static/js/87.e2e9c9ce.chunk.js",
"./static/js/88.bc8ebddc.chunk.js": "./static/js/88.bc8ebddc.chunk.js",
"./static/js/89.9a2939ba.chunk.js": "./static/js/89.9a2939ba.chunk.js",
"./static/js/9.50591a28.chunk.js": "./static/js/9.50591a28.chunk.js",
"./static/js/90.ef0619c8.chunk.js": "./static/js/90.ef0619c8.chunk.js",
"./static/js/91.9236dbcb.chunk.js": "./static/js/91.9236dbcb.chunk.js",
"./static/js/92.bb69bc64.chunk.js": "./static/js/92.bb69bc64.chunk.js",
"./static/js/93.2ce9d602.chunk.js": "./static/js/93.2ce9d602.chunk.js",
"./static/js/94.98889ef5.chunk.js": "./static/js/94.98889ef5.chunk.js",
"./static/js/95.e361216e.chunk.js": "./static/js/95.e361216e.chunk.js",
"./static/js/96.7d728547.chunk.js": "./static/js/96.7d728547.chunk.js",
"./static/js/97.a1f96ab8.chunk.js": "./static/js/97.a1f96ab8.chunk.js",
"./static/js/98.2b4533d6.chunk.js": "./static/js/98.2b4533d6.chunk.js",
"./static/js/99.6f0ba57f.chunk.js": "./static/js/99.6f0ba57f.chunk.js",
"./static/js/41.c0dca3de.chunk.js": "./static/js/41.c0dca3de.chunk.js",
"./static/js/42.c0f5b07f.chunk.js": "./static/js/42.c0f5b07f.chunk.js",
"./static/js/43.9fe3b45b.chunk.js": "./static/js/43.9fe3b45b.chunk.js",
"./static/js/44.2a82df91.chunk.js": "./static/js/44.2a82df91.chunk.js",
"./static/js/45.bbd101ce.chunk.js": "./static/js/45.bbd101ce.chunk.js",
"./static/js/46.67c53701.chunk.js": "./static/js/46.67c53701.chunk.js",
"./static/js/47.e03ed466.chunk.js": "./static/js/47.e03ed466.chunk.js",
"./static/js/48.b9bb5f78.chunk.js": "./static/js/48.b9bb5f78.chunk.js",
"./static/js/49.22453b1a.chunk.js": "./static/js/49.22453b1a.chunk.js",
"./static/js/5.f6d98c3d.chunk.js": "./static/js/5.f6d98c3d.chunk.js",
"./static/js/50.9d1ab0aa.chunk.js": "./static/js/50.9d1ab0aa.chunk.js",
"./static/js/51.a65d83ae.chunk.js": "./static/js/51.a65d83ae.chunk.js",
"./static/js/52.c358b7e7.chunk.js": "./static/js/52.c358b7e7.chunk.js",
"./static/js/53.348902e9.chunk.js": "./static/js/53.348902e9.chunk.js",
"./static/js/54.2f1af1b2.chunk.js": "./static/js/54.2f1af1b2.chunk.js",
"./static/js/55.70209142.chunk.js": "./static/js/55.70209142.chunk.js",
"./static/js/56.ee510c95.chunk.js": "./static/js/56.ee510c95.chunk.js",
"./static/js/57.291a2197.chunk.js": "./static/js/57.291a2197.chunk.js",
"./static/js/58.647a98e5.chunk.js": "./static/js/58.647a98e5.chunk.js",
"./static/js/59.307d1f70.chunk.js": "./static/js/59.307d1f70.chunk.js",
"./static/js/6.727e141e.chunk.js": "./static/js/6.727e141e.chunk.js",
"./static/js/60.d2e04f3e.chunk.js": "./static/js/60.d2e04f3e.chunk.js",
"./static/js/61.16927c5d.chunk.js": "./static/js/61.16927c5d.chunk.js",
"./static/js/62.7e7e80d6.chunk.js": "./static/js/62.7e7e80d6.chunk.js",
"./static/js/63.31ac08f8.chunk.js": "./static/js/63.31ac08f8.chunk.js",
"./static/js/64.7f53a4b7.chunk.js": "./static/js/64.7f53a4b7.chunk.js",
"./static/js/65.03aaf0de.chunk.js": "./static/js/65.03aaf0de.chunk.js",
"./static/js/66.e6568327.chunk.js": "./static/js/66.e6568327.chunk.js",
"./static/js/67.5e074423.chunk.js": "./static/js/67.5e074423.chunk.js",
"./static/js/68.f6b97e99.chunk.js": "./static/js/68.f6b97e99.chunk.js",
"./static/js/69.a6b75cca.chunk.js": "./static/js/69.a6b75cca.chunk.js",
"./static/js/7.ca323c29.chunk.js": "./static/js/7.ca323c29.chunk.js",
"./static/js/70.0bc2deaf.chunk.js": "./static/js/70.0bc2deaf.chunk.js",
"./static/js/71.1f0c437b.chunk.js": "./static/js/71.1f0c437b.chunk.js",
"./static/js/72.b81bc5fc.chunk.js": "./static/js/72.b81bc5fc.chunk.js",
"./static/js/73.e3a1ed09.chunk.js": "./static/js/73.e3a1ed09.chunk.js",
"./static/js/74.8506100c.chunk.js": "./static/js/74.8506100c.chunk.js",
"./static/js/75.ad7b886d.chunk.js": "./static/js/75.ad7b886d.chunk.js",
"./static/js/76.2389a9f0.chunk.js": "./static/js/76.2389a9f0.chunk.js",
"./static/js/77.8f3864c7.chunk.js": "./static/js/77.8f3864c7.chunk.js",
"./static/js/78.2f9e92e4.chunk.js": "./static/js/78.2f9e92e4.chunk.js",
"./static/js/79.e7e84a52.chunk.js": "./static/js/79.e7e84a52.chunk.js",
"./static/js/8.00b0aee5.chunk.js": "./static/js/8.00b0aee5.chunk.js",
"./static/js/80.022cf2e6.chunk.js": "./static/js/80.022cf2e6.chunk.js",
"./static/js/81.6d76bf94.chunk.js": "./static/js/81.6d76bf94.chunk.js",
"./static/js/82.025a39d7.chunk.js": "./static/js/82.025a39d7.chunk.js",
"./static/js/83.f784d289.chunk.js": "./static/js/83.f784d289.chunk.js",
"./static/js/84.1bd9e660.chunk.js": "./static/js/84.1bd9e660.chunk.js",
"./static/js/85.a97983ff.chunk.js": "./static/js/85.a97983ff.chunk.js",
"./static/js/86.58791e55.chunk.js": "./static/js/86.58791e55.chunk.js",
"./static/js/87.3605213c.chunk.js": "./static/js/87.3605213c.chunk.js",
"./static/js/88.64c996ca.chunk.js": "./static/js/88.64c996ca.chunk.js",
"./static/js/89.ca2dea37.chunk.js": "./static/js/89.ca2dea37.chunk.js",
"./static/js/9.01fb0f73.chunk.js": "./static/js/9.01fb0f73.chunk.js",
"./static/js/90.fe9ebc86.chunk.js": "./static/js/90.fe9ebc86.chunk.js",
"./static/js/91.243f5322.chunk.js": "./static/js/91.243f5322.chunk.js",
"./static/js/92.8f93bc28.chunk.js": "./static/js/92.8f93bc28.chunk.js",
"./static/js/93.65e070aa.chunk.js": "./static/js/93.65e070aa.chunk.js",
"./static/js/94.5e127104.chunk.js": "./static/js/94.5e127104.chunk.js",
"./static/js/95.637bf7db.chunk.js": "./static/js/95.637bf7db.chunk.js",
"./static/js/96.36219078.chunk.js": "./static/js/96.36219078.chunk.js",
"./static/js/97.5429e017.chunk.js": "./static/js/97.5429e017.chunk.js",
"./static/js/98.f57c69ba.chunk.js": "./static/js/98.f57c69ba.chunk.js",
"./static/js/99.59828407.chunk.js": "./static/js/99.59828407.chunk.js",
"main.css": "./static/css/main.f643b8b4.css",
"main.css.map": "./static/css/main.f643b8b4.css.map",
"main.js": "./static/js/main.ba979358.js",
"main.js": "./static/js/main.1525a886.js",
"static/media/auth.png": "static/media/auth.43f1c749.png",
"static/media/beian.png": "static/media/beian.d0289dc0.png",
"static/media/beijintulogontwo.png": "static/media/beijintulogontwo.245dc9e1.png",

@ -9,7 +9,7 @@
_host = 'https://ali-cdn.educoder.net/react/build/'
}
document.write('<script type="text/javascript" src="' + _host + 'js/js_min_all.js"><\/script>');
document.write('<script type="text/javascript" src="' + _host + 'static/js/main.ba979358.js"><\/script>');
document.write('<script type="text/javascript" src="' + _host + 'static/js/main.1525a886.js"><\/script>');
})()
</script>
<script>!function(){var t=location.href;"3007"===window.location.port?-1!=t.indexOf("/tasks/")?(document.write('<script type="text/javascript" src="https://newweb.educoder.net/assets/kindeditor/kindeditor.js"><\/script>'),document.write('<script type="text/javascript" src="/react/build/js/create_kindeditor.js?v=1.1.1"><\/script>'),document.write('<script type="text/javascript" src="https://newweb.educoder.net/javascripts/educoder/edu_application.js"><\/script>')):-1!=t.indexOf("/paths/")&&document.write('<script type="text/javascript" src="https://newweb.educoder.net/javascripts/educoder/edu_application.js"><\/script>'):-1!=t.indexOf("/tasks/")?(document.write('<script type="text/javascript" src="/assets/kindeditor/kindeditor.js"><\/script>'),document.write('<script type="text/javascript" src="/react/build/js/create_kindeditor.js?v=1.1.1"><\/script>'),document.write('<script type="text/javascript" src="/javascripts/educoder/edu_application.js"><\/script>')):-1!=t.indexOf("/paths/")&&document.write('<script type="text/javascript" src="/javascripts/educoder/edu_application.js"><\/script>')}()</script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save