- 博客(25)
- 收藏
- 关注
原创 创新实训:动作队列与动作类
撤销是将上一个动作造成的影响消除,而重做是将消除的动作的影响重新添加。撤销和重做通过两个队列进行管理。分为actionQueue和backQueue当进行撤销动作的时候,将actionQueue的末尾action弹出到backQueue的末尾中,并执行撤销动作当进行重做动作的时候,将backQueue的末尾action弹出到actionQueue的末尾中,并执行重做动作需要注意的是,有的动作不会产生影响,所以不应加入队列,有的动作为连续多次发生,如果全部加入到队列当中,可能对功能造成极大的影响,所以
2022-05-26 11:04:17 326
原创 创新实训:上侧功能栏介绍
1.上方功能栏1 上方功能栏1.1 画布放缩显示+放大缩小+按钮设置+快捷键设置+自适应grid画布画布的设置通过tranform的scale属性进行设置,scale的设置有三种不同的方式,通过界面的scaleNum进行设置,自增1%,自减1%。通过统一的接口对scale进行设置,同时,由于scale属性并不会改变svg的大小,需要在外侧的div进行改变以适配。首先,将整体div的大小进行一定的设置。画布的大小+scale-padding(使scale后画布位置不进行改变的padding)map
2022-05-24 23:21:01 137
原创 创新实训:模块介绍--分组
前端通过连接后端核心库,为客户提供分组的功能当通过ctrl模式一次性选中多个组件时,可以通过右侧的功能栏的分组按钮进行分组。完成分组中,组内元素可以有统一的移动和其他特性1.功能介绍关于分组有两个功能:link和groupgroup的实现基于link。link:在组件之间建立父子关系。之后父组件的行动会影响子组件,但是子组件的行动不会影响父组件。group:在组件之间建立分组关系。组内元素可以一起移动。2.功能实现分析可以看出 link是实现group的基础,但是link和group之间又有
2022-05-19 20:56:51 282
原创 创新实训10:附着和移动规则的建立
这周的主要目标是实现一下两个功能。这两个功能的实现均比较繁杂,为了能更好的进行代码的书写,先在这里理清一下自己的思路。1.附着分析:附着的基本要求是可以从组件悬浮时出现的附着点拉出一条箭头,并允许箭头附着在另一个组件的附着点上,首先箭头移动到组件的边缘出会显示组件的附着点,并在一定距离内被附着点所吸附,同时需要移动一段距离才能离开。同时被吸附后对应附着点的移动会引起相应的组件移动。2.移动规则在不同的情况下移动组件有着不同的规则1.移动箭头时,箭头会在附着点一定范围内被附着点吸引2.移动组件时
2022-04-27 21:50:19 75
原创 项目实训8:各种svg解析器的制作以及贝塞尔曲线的学习
对于附着和锚点的功能,由于附着对后端不会产生影响并且前端有许多关于附着的api方便计算,所以决定该功能在前端实现。首先,针对svg的七种基本模型:line,rect,circle,ellipase,polygon,polyline,path.设计附着点的解析器。前六种的机制较为简单,但是path有些复杂。所以下文记录一下对于path的学习过程path将路径记录在d属性中,且有许多的操作指令进行对path的绘制,记录一下各种操作指令以及他们的效果。1.M x y和m x y(大写绝对定位,小写相对定位
2022-04-24 14:16:35 475
原创 项目实训7:项目具体的实现关于svg的各种功能
现在已经是第八周了。经过之前的各种铺垫和讨论,我已经基本上将前端搭建完成,前后端之间也能利用websocket进行通信。本周的任务: 创建图形 画布缩放、 移动 关键点的移动 图形的拖动 组件:直线、矩形、…(其他视情况) 撤销、重做 删除 保存图片 画布网格 Markdown这任务还是挺重的,由于架构的变化,打算使用dom直接操作svg而不是原来的绘制在canvas中。我需要先熟悉一些关于dom操作svg的方法和手段。1.demo目标:通过点击屏幕绘制出svg,
2022-04-11 21:12:33 2105
原创 项目实训6:前端具体逻辑的思考与内容的详细定义
首先介绍一下前端的架构。上侧,左侧,右侧均为封装的组件0.!所有传递的有关鼠标的参数(x,y)均为当前鼠标与画布的相对位置(仅为对于在浏览器中的画布而不是画布中的详细位置)。1.图形的创建对于创建图形的途径,我们希望提供3种创建图形的方式1).通过上测栏的加号图形,在画布的中央进行创建2).通过右侧栏点击图形,在画布的中央进行创建3).将点击图形并进行移动,在鼠标进入画布的同时,图形在鼠标当前位置进行创建。创建图形的函数createShape(int shape_id,double x,.
2022-04-05 17:58:37 419
原创 项目实训4:与后端的连接
因为前端使用vue,而后端使用c++,为了避免网络延迟所可能带来的延迟,我们需要将c++代码进行转换并当成js的包被前端调用。我这周的主要目标便是尝试进行前后端的连接。我了解到nodejs可以通过一些特殊机制将c++的代码转换为编译后的node文件。我首先根据官网上的hello world进行操作,因为我并不会使用nodejs,我短暂的补了一些nodejs的知识。成功运行addon的hello world后,我的心情还是比较激动的。但是我发现webpack在编译时会报错。但是我没在网上找到合适的资料
2022-03-29 23:35:29 1779
原创 项目实训3:项目的细节填充
本周在上周的框架基础上,对界面的细节进行填充1.实现左侧栏的拖拽功能这个功能是通过鼠标事件进行实现的。由于对前端不是特别熟悉,我进行了多次尝试。eg1:使用mousedown方法将flag置为true,mouseup方法将flag置为false,使用mousemove方法在flag===true的时候,对左侧栏的宽度进行调整。但是这个方法会带来很大的延迟。方法的实现也不是非常优美。eg2:在mousedown方法注册mousemove方法和mouseup方法。我觉得这样的实现比较合理。第二种代码
2022-03-21 15:09:33 1208
原创 项目实训2:项目的整体搭建
首先进行效果展示整体结构是:上边栏,左右工具栏,和中间的画布。本周的总体任务是完成上边栏的绘制和整体框架的实现,以及中间画布各种事件的注册以及实验。上边栏的制作左边的组件设定为logo,不过由于目前没有设计,所以暂时先拿vue的图标来替代右边分为两层上边是思维导图标题,设想可以很轻易的直接修改下边是功能栏,均为下拉菜单,因为功能较为独立,且代码较长,我将其封装成一个单独的vue component。之后的各种事件设计为父子组件之间的通信。下拉菜单的各项功能还未进行填充,所以进行了留白。工具
2022-03-16 18:43:23 956
原创 项目实训1:搭建vue-electron工程
在需求分析和接口的定义结束后,要开始进行框架的搭建。我们选择vue-electron作为前端的开发框架。框架搭建1.新建vue项目vue create vue-electron2.搭建electronvue add electron-builder3.运行程序npm run electron:serve过程中遇到的问题查了一下是由于nodejs版本过低了,重装了一下就能安装好了。...
2022-03-14 20:30:03 878
原创 # 2021SC@SDUSC 山大智云 13 app
该模块对软件的配置等进行了一系列设置。log.py目录结构class LogConfigurator def __init__ def _rotating_config def _basic_config def add_syslog_handler def _get_log_levelinitdef __init__(self,level,logfile) self._level=self._get_log_level(level) self._log
2021-12-22 21:03:05 540
原创 2021SC@SDUSC 山大智云 12.db.py
该文件为seafevent中的数据库操作类,定义了许多与数据库有关的通用操作create_mysql_session()create_engine_from_conf()init_db_session_classcreate_db_tablesping_connectionGroupIdLDAPUuidPairBase = declarative_base()SeafBase = automap_base()...
2021-12-19 15:38:58 548
原创 2021SC@SDUSC 山大智云 11.utils
分析seafevent包下的utils包utils包一般指工具包,该包下有两个文件:init和configinit.py目录结构def find_in_path(prog)def check_executables_in_path(tools:[])def check_office_tools()def check_offline_download_tools()def check_python_uno()def has_office_tools()def has_offline_dow
2021-12-11 15:19:29 314
原创 2021SC@SDUSC 山大智云 10.statistics
目录结构models.pyhandler.pycounter.pydb.pymodel.py:数据库模型声明TotalStorageStatFileOpsStatUserTrafficStatUserAcivityStatUserTrafficMonthlyUserTrafficMonthlySysTrafficcounter.py:文件结构update_hash_recordsave_traffic_infoFileOpsCounterTotalStorageCou
2021-12-05 20:17:17 788
原创 2021SC@SDUSC 山大智云 9.content_scanner
目录结构为ali_scan.pyconfig.pycontent_scan.pydb.pylog.pymain.pymodels.pythread_pools.pythread_pools.py和之前分析过的线程池相似分为worker和ThreadpoolWorkerworker的主要属性:do_work:处理任务队列中的任务的函数task_queue:任务队列client:在这里指AliScannerThreadPoolThreadPool的主要属性:do_wor
2021-11-28 22:05:05 3095
原创 2021SC@SDUSC 山大智云 8.offine_download
2021SC@SDUSC 山大智云 8.offine_downloadoffine_download_settings.py文件结构__init__(self,config_file):初始化parse_config(self,config_file):解析配置def is_enabled(self):返回是否有文件下载功能def __init__(self, config_file): self.enable_offline_download = False self.temp_
2021-11-21 21:20:11 3330
原创 2021SC@SDUSC 山大智云 7.病毒扫描
病毒扫描病毒扫描包下的文件组成__init__.pycommit_differ.py:文件差异对比db_oper.py:数据库操作models.py:数据库模型run_virus_scan.py:主启动文件scan_settings.py:病毒扫描设置thread_pool.py:线程池声明virus_scan.py:病毒扫描函数scan_settings(关于扫描的设置)class Settings(): __init__(): parse_config(): p
2021-11-12 17:28:22 2964
原创 2021SC@SDUSC 山大智云6.分析ceph的结构
因为后面项目的配置要用到ceph系统,所以在此分析结构Ceph在一个统一的系统中提供对象、块和文件存储。这是每个存储功能的特性ceph具有高可靠、管理简单,并且是开源软件。ceph的结构如上图所示,对象存储功能基于RADOSGW实现,块存储基于RBD实现,文件存储基于CEPHFS实现。LIEBRADOS提供了C,C++,Java,Python访问RADOS的支持。同时,存储的底层为RADOS,提供由自愈、自管理、智能存储节点组成的可靠、自治的分布式对象存储。Ceph存储集群由多种类型的守护进
2021-11-07 13:59:15 94
原创 2021SC@SDUSC 山大智云 5.对seafobj的分析:4
本周分析seafobj的最后一个文件:crypto.py(与加密算法相关)from ctypes import ( create_string_buffer, CDLL, c_char_p, c_void_p, c_int, POINTER, byref)ctypes是python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数。from ctypes.util import find_libraryfrom seafobj.exceptions im
2021-10-31 11:58:57 111
原创 2021SC@SDUSC 山大智云 4.对seafobj的分析:3
2021SC@SDUSC 山大智云 4.对seafobj的分析:3fs.py文件结构1.SeafDirent:SeafDir的一些基础信息,包括name,type(dir or file),id,mtime(最后修改时间),size和返回信息的__str__方法及返回是否为file或dir的方法2.SeafDir:管理dir的对象3.SeafFile:管理file的对象4.SeafileStream:实现基本的类文件接口5.SeafFSManager:seaf文件系统的管理对象让我们看一下
2021-10-21 19:28:20 125
原创 2021SC@SDUSC 山大智云 3.对seafobj的分析:2
2021SC@SDUSCseafobj中的backends包中,提供了多种后端服务器的连接和操作。base.py:声明了各种操作类的基类AbstractObjStorealioss.py:阿里云oss的后端操作实现类ceph.py:ceph分布式操作系统的操作类的实现filesystem.py:Amazon S3操作类的实现swift.py:swift服务操作类的实现各个操作类中主要实现的方法def read_obj_raw(self, repo_id, version, obj_id):
2021-10-14 14:57:30 117
原创 2021SC@SDUSC 山大智云 2.对seafobj的分析:1
2021SC@SDUSC首先我们先列出seafobj的目录:backendsutils__init__.pyblocks.pycommits.pycommit_differ.pydb.pyexceptions.pyfs.pyobjstore_factory.py打开__ init __.py:看到from .commits import commit_mgrfrom .fs import fs_mgrfrom .blocks import block_mgrfrom .co
2021-10-07 18:07:05 154
原创 2021SC@SDUSC 山大智云 1.综述
2021SC@SDUSC 山大智云 1.综述2021SC@SDUSC0.项目简介"山大智云"是以网盘功能为基础的在线应用系统。以seafile开源版本为基础,拓展网盘的应用功能和场景化的业务适配。该项目已事先校园统一认证,文件锁,在线编辑预览,全文搜索,文件病毒扫描,审计,离线上传等功能。1.项目配置1.0 安装Ubuntu18.041.1 安装Dockerapt install docker.server1.2 创建Docker容器docker run -it -p 8000:800
2021-09-30 14:16:20 455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人