Git Product home page Git Product logo

xxb's Introduction

README

学学半简介

“学学半”是一套用 ruby on rails 开发的教学站点。

  • 部署于个人电脑中,通过小型的家用路由器,教师和学生可通过多种电子设备(如电脑,手机,平板)进行交互。

  • 部署于学校的服务器中,通过覆盖全校的路由器,供全校师生共同使用,教师之间学生之间可以共享数据资源。

  • 部署于培训机构的服务器中,可使用登录计费模块进行收费管理,因此这个软件可以用于商业。

  • 部署于云端,通过互联网,服务于世界各地的用户。

功能

学学半包含三个模块:内容管理模块,教学管理模块,登录计费模块。

内容管理模块包含如下功能:

  • 创建教科书

  • 为教科书添加课文

  • 对课文进行字词分析

  • 为课文内容添加辅导页面

  • 为课文内容添加习题

  • 为课文内容添加某种教学方式(有效组织辅导页面)

  • 按教学方式安排辅导页面和习题

  • 依据记忆曲线进行卡片式练习

  • 对所学卡片进行抽查自测

  • 使用习题进行随机测试,评价测试

  • 将习题组织成试卷,并可限定考试时间,

  • 批改答卷

教学管理模块包含如下功能:

  • 创建班级

  • 为班级添加学生、班干和各科教师

  • 对学生进行各种分组

  • 对小组进行评价

  • 对班级进行教学

  • 布置作业,对作业进行评价

  • 班干和教师可对学生的不良记录进行登记和消除

  • 利用特定试卷安排班级测验,查看答题,按班级批改答卷

登录计费模块

  • 用户登录管理,可区分计时用户和特别不计时用户

  • 根据计时用户的登录时间,逾期强制下线,充值续时

  • 收费管理,出纳现金管理。

TODO

  • 用户社交(主要是信息交流,不考虑博文留言)

  • 学长辅导付费模式。(这是淘宝模式?谁要喔?)

  • 多媒体。(硬盘空间得多大啊!不考虑,待多媒体技术稳定再说)

一般信息

系统要求(System dependencies):

  • Ubuntu 14.04

  • Ruby 2.2.0

  • Rails 4.2.0

  • Sqlite3

安装

  • 安装 rvm 。详见 www.rvm.io。一般是两步:

    $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    $ \curl -sSL https://get.rvm.io | bash -s stable
  • 安装 ruby。 在终端输入‘$ rvm install 2.2.0`

  • 安装 rails。在终端输入‘$ gem install rails –version 4.2.0 –no-ri –no-rdoc`

  • 安装 git。在终端输入‘sudo apt-get install git`

  • 获取“学学半”代码。在终端输入‘$ git clone www.github.com/kinders/xxb.git`

  • 配置“学学半”。进入学学半的目录中,在终端输入‘$ bundle install`

配置(Configuration)

Bootstrap-rails

这个软件包逐个导入js文件,将会拖慢网页的加载时间。 可以将gem包里的bootstrap.js文件替换为官网下载的压缩过的bootstrap.min.js(当然,这个文件需要命名为bootsrap.js。

CKEditor

  • 更换内核

Ckeditor的内核比较陈旧,并且没有数学公式的编辑功能,可以将它替换掉。 ckeditor的自定义方式见: www.ckeditor.com/builder ,选择需要的插件即可下载替换。编辑数学公式则需要‘Mathematical Formulas`插件。 替换路径为`~/.rvm/gems/ruby/gems/ckeditor-x-x-x/vendor/assets/javascripts/`。

  • 推荐安装插件有:

    - Color Button
    - Enhanced Image
    - Find / Replace
    - Font Size and Family
    - Image Rotate
    - Justify
    - Mathematical Formulas
    - Print
    - Select All
  • 配置ckeditor

具体位置是:~/.rvm/gems/ruby/gems/ckeditor/app/assets/javascripts/ckeditor/config.js 第一,加入mathjax的获取路径:

config.mathJaxLib = '/mathjax/MathJax.js?config=TeX-AMS_HTML';

第二,工具栏: 用下面这一段更换gem包中原有的代码,不要依赖app里的config.js,那会导致图片上传功能消失的bug。

  config.toolbar = [
  { name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: ['Undo', 'Redo', '-', 'SelectAll', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord' ] },
  { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Find', 'Replace', '-', 'Scayt' ] },
  // { name: 'forms', items: [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
  { name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
  { name: 'insert', items: [ 'NumberedList', 'BulletedList', '-', 'Blockquote', 'CreateDiv', '-', 'Image', 'Mathjax', 'Flash', 'Table', 'HorizontalRule', 'SpecialChar' ] },
  { name: 'document', groups: [ 'mode', 'document', 'doctools' ], items: [ 'Print', 'Source', 'Maximize'] },
  '/',
  // { name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] },
  { name: 'styles', items: [ 'Format', 'Font', 'FontSize' ] },
  { name: 'colors', items: [ 'TextColor', 'BGColor' ] },
  { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] },
  { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ], items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'Outdent', 'Indent' ] }
];
  • 禁用Ckeditor的图片服务器功能。

在‘~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/plugins/`路径下有`image/dialogs/image.js`、`link/dialogs/link.js`和`flash/dialogs/flash.js`三个文件, 将三个文件里面`browseserver`和`filebrowsers`的`style`改为`display: none;`

  • 删除sample文件。

如果没有删除sample文件,部署时预编译assets就会出错。 需要删除的文件夹:

- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/samples/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/sample/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/scss/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/.temp/`

创建数据库(Database creation)

  • 创建‘config/database.yml`文件,内容如下:

    default: &default
      adapter: sqlite3
      pool: 5
      timeout: 5000
    development:
      <<: *default
      database: db/development.sqlite3
    test:
      <<: *default
      database: db/test.sqlite3
    production:
      <<: *default
      database: db/production.sqlite3
  • 创建‘config/secrets.yml`文件,生成密钥。

    development:
      secret_key_base: <128位的乱序英文和数字字符>
    test:
      secret_key_base: <128位的乱序英文和数字字符>
    production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  • 创建‘config/initializers/secret_token.rb`文件,生成密钥。

    Depot::Application.config.secret_key_base = '<128位的乱序英文和数字字符>'
    
  • 该数据库一些字段信息参见xxb.ods。

初始化数据库 (Database initialization)

生成数据库:‘$ rake db:setup`

设置管理员

将第一个用户自动设置为管理员的做法司空常见,但这种做法显然不够严谨。 基于系统安全,开发人员抛弃了这种做法。 当然这么做需要付出点代价:

  • 首先进入本应用的目录,在终端(Terminal)里打开rails后台:‘$ rails console`

  • 在后台输入:

    user = User.find(who_id)  # who_id 就是拥有管理员权限的那个人的用户id。
    user.add_role :admin
    

于是后台会弹出类似如下的提示,就表明添加管理员权限成功了:

(0.0ms)  begin transaction
SQL (0.2ms)  INSERT INTO "users_roles" ("user_id", "role_id") VALUES (?, ?)  [["user_id", 2], ["role_id", 1]]
 (130.3ms)  commit transaction
  • 关闭后台:‘exit`,关闭终端,就可以了。

代码测试 (How to run the test suite)

  • 内伤啊!

服务(Services (job queues, cache servers, search engines, etc.))

  • 暂无。

  • 部署在云端时,应该启用Mailer,并补充代码

部署(Deployment instructions)

推荐使用Passenger和Nginx

  • 安装postgresql数据库,创建项目使用的数据库,修改文件‘config/database.yml`,初始化生产数据库。

  • 安装passenger。在终端输入‘$ gem install passenger`

  • 安装nginx。在终端输入‘$ passenger install nginx-module`,安装位置选择`/opt/nginx`

  • 配置nginx。修改‘/opt/nginx/conf/nginx.conf`文件

    server {  
            listen       80;  
            server_name  localhost;  
            root /xx/xx/rails_app/public;  
            passenger_enabled on;  
            rails_env production;  
    }
    
  • 预编译assets。在终端输入‘$ RAILS_ENV=production rake assets:precompile`

  • 启动“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx`

  • 关闭“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx -s quit`

版权(COPYRIGHT)

  • 许可证:GPLv3。

  • 这是一个自由软件,您可自由复制、自由使用、自由修改,乃至发布为新的自由软件。

  • 需要其他许可证的,可与作者联系。

xxb's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.