GithubHelp home page GithubHelp logo

tureezhang / csl-cn Goto Github PK

View Code? Open in Web Editor NEW
39.0 39.0 5.0 29.45 MB

CSL-CN

Home Page: http://www.cities-skylines.cn

License: Other

C# 33.94% JavaScript 30.15% TypeScript 16.25% CSS 2.34% HTML 11.09% Less 5.22% PowerShell 0.47% Dockerfile 0.03% Rich Text Format 0.51%

csl-cn's People

Contributors

dependabot[bot] avatar tureezhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

csl-cn's Issues

使用 k8s 完成高可用部署

偶尔出现程序异常中止的问题,会影响网站访问。

考虑使用 Kubernetes 的 Minikube 搭建单机集群环境,使用 Deployment 托管 netcore 网站程序,保证网站至少在异常退出时可以被 k8s 自动重启。

Debug 环境并未使用 appsetting.Debug.json 下的连接字符串

现已迁移测试数据库至 阿里云服务器。

  • 因而测试环境无需安装数据库即可运行项目。

  • 但 Debug 环境下由于 CodeFirst 的某些配置原因,数据库上下文配置 Build 并不是读取 appsetting.debug.json 文件。

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            ////执行 Add-Migration 报错时,注释一下 if -else 代码段。(但要保留 base. 一行)
            ////if (AppDomain.CurrentDomain.BaseDirectory.Contains("HanJie.CSLCN.Tests"))    //如果从单元测试调用此构造函数,则采用内存中数据库
            ////{
            ////    var options = new DbContextOptionsBuilder<CSLDbContext>()
            ////        .UseInMemoryDatabase(databaseName: "Add_Writes_to_database")
            ////        .Options;
            ////    optionsBuilder.UseInMemoryDatabase("test");
            ////}
            ////else
            ////{
            string connStr = "User ID=csl-cn-debug;Password=7EBC8B5FB6C14509BC75F68824B22351;Host=118.31.20.44;Port=3306;Database=cslcn-dev;Min Pool Size=0;Max Pool Size=100;";

            if (RunAs.Release)
                connStr = GlobalConfigs.AppSettings.ConnectionString;

            optionsBuilder.UseMySql(connStr);
            ////}
            //base.OnConfiguring(optionsBuilder);
        }

文章管理器

部分文章需要采用管理器发布,因为他们不在顶层导航文章列表中,而由一级文档中的链接跳转而来。

@gsgysm 此功能需求开发进度在此 issue 追踪。

鸣谢页面

需要一个页面,表明所有贡献者的功劳和付出。

EF Core DataReader 占用问题

原因是各个请求共用了一个 DbContext 实例。

此问题已修复。应当在下一次版本发布时,更新 Release 配置文件,连接字符串追加 MultipleActiveResultSets=true; 配置。

数据库自动备份

鉴于维基文档的重要性,需要开发一个数据库自动备份功能。

应当备份以下内容:

  • 维基文档表
  • 用户表

关于右侧最近编辑和DLC部分大小跳动问题

右侧的“最近编辑”模块是一直更新跳动的,但是每次跳动后的整个“最近编辑”模块的大小和上次有可能会不一样。这导致每次跳动之后我鼠标停留在下面的DLC部分的指针可能会被迫偏移。
这是因为“最后编辑:XXXXX XX-XX-XX”这个地方由于编辑者名字的长度不同导致有可能会出现两行,这样子就会影响单个编辑框的高度,继而影响总体最近编辑的高度。这样子下面的DLC部分加入原本鼠标已经准备点击某个DLC,就会被这个高度变化导致从准备点击的DLC上移开。

访问轨迹分析的核心**

数据埋点为什么使用1x1 gif透明图片

  1. 能够完成整个 HTTP 请求+响应(尽管不需要响应内容)
  2. 触发 GET 请求之后不需要获取和处理数据、服务器也不需要发送数据
  3. 跨域友好
  4. 执行过程无阻塞
  5. 相比 XMLHttpRequest 对象发送 GET 请求,性能上更好
  6. GIF的最低合法体积最小(最小的BMP文件需要74个字节,PNG需要67个字节,而合法的GIF,只需要43个字节)
    weijiyang/GOOD-IDEA#63

所谓埋点就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,包括访问数(Visits),访客数(Visitor),停留时长(Time On Site),页面浏览数(Page Views)和跳出率(Bounce Rate)。这样的信息收集可以大致分为两种:页面统计(track this virtual page view),统计操作行为(track this button by an event)。 https://www.zhihu.com/question/36411025

引擎的目录标题识别逻辑问题

刚刚使用中发现引擎的目录标题识别逻辑可能有点小问题,
正常来说,代码块里的标签是不应该被识别到的。
QQ3`6%3BN(CD2IW{% SLK Y
H%CALC7ICMOKHAH2 2B LU

ps:目录能识别的标题标签似乎只有 2级和 3级?

编辑锁定与合并请求

受到编辑锁定保护的文档:

  1. 只能由主要编辑者进行修改。
  2. 其他用户可以修改但无法保存,修改后可以提起合并请求由主要编辑者(或主编辑者24小时未处理后由管理员代为)审查,通过后修改内容才会发布。

首页自定义

  • 自定义网站名称
  • 自定义网站简介
  • 自定义备案号
  • 自定义目录版块、关于版块、如何贡献版块、最近编辑版块、可下载内容DLC版块的版块文字
  • 自定义主 Logo、副 Logo 的图片地址(网络地址或本地文件地址)
  • 自定义颜色主题
  • 自定义友情链接图片、链接、文字(可下载内容DLC)
  • 自定义外部媒体跳转链接和说明文字(前往虎牙汉界的直播间现场)

关于维基编辑器下编辑模式中表格的一点小建议

我在使用维基编辑器时发现,编辑模式下的表格格式似乎无法智能对齐,如果表格格式可以智能对齐再加上中英文等宽字体,书写体验我想会直线上升,嘿嘿嘿

具体效果如下图:

image

上方左图是来自使用默认字体的维基编辑器,无智能对齐,右图是来自使用自定义的开源字体 更纱黑体 Sarasa-Gothic 下的 等距更纱黑体 SC (sarasa-mono-sc-regular) 字体的 开源软件VNote,有智能对齐

感官效果很明显,是不是(滑稽

关于添加Mod百科

现在似乎已经没有太多可以编辑添加的条目了,希望能增加Mod百科,让百科更有活力和实用性(可参考www.mcmod.cn)

主页页面自适应布局中的文字重叠及其他页面布局问题

问题描述
目前在主页发现以下几种布局

总页面宽度 布局 导航栏默认状态
1600px以上 中间栏较宽的三栏布局 显示
1200px-1599px 中间栏较窄的三栏布局 显示
992px-1199px 两栏布局 显示
768px-991px 两栏布局 不显示
768px以下 一栏布局 不显示

导航栏保持默认状态时会发生文字重叠的页面宽度区间如下

  • 310px及以下
  • 768px-852px
  • 992px-1052px
  • 1200px-1323px
  • 1600px-1864px

因为现在一般没有宽度低于310px的浏览器所以对此不做讨论

各模块的最小宽度

模块标题 元素不会溢出的最小宽度(约)
天际线图片及百科标语 1104px
GitHub及编辑者入口顶栏 430px
天际线图片 370px
百科全书 310px
经营 292px
元数据 232px

其中百科标语在总页面宽度1200px以上时才会显示,但导航栏会占据约200的页面宽度,所以显示导航栏时为了显示完整的百科标语需要约1304px的总页面宽度

图 百科全书模块中的mod推荐已经溢出到了下一行并且被经营模块的标题遮挡了一部分
image

原因分析

  1. 页面内容是按行固定的,每一行的内容超出模块长度时会溢出至下一行,但下一行不会向下浮动于是上一行的溢出部分就会被下一行遮挡

可能的解决方案

  1. 浮动所有元素,让浏览器自行决定换行,同时增加可变的模块(盒子)高度的适配
  2. 限制模块的最小宽度,并更改布局变更的宽度节点

MOD推荐列表页 表头与表格对齐出现问题

正确情况

  • 表头与表格对齐

当前情况

  • 任意缩放、浏览器全屏运行的情况下,页面基本显示正常(也是略微偏右但是看的不明显)
  • 当非全屏预览或打开F12,表头向右偏移的问题加重

附错误的情况下图片一张

QQ截图20201017213207

维基文档风格指南

@TureeZhang


本文主要是对自己使用 Mrakdown 进行书写的一个笔记记录和总结。

因为碎月是个萌新,故而,如有错误或遗漏之处,还请各位大佬们指出!


创建发布时间:2020 年 1 月 24 日 23:42

最后更新时间:2020 年 7 月 6 日 13:37

Markdown 语法快速指南

什么是 Markdown?

Markdown 是一种通过少量简单的标记字符来格式化文本的方法,是一种轻量级的易用的书写语法。您可以用纯文本来书写文档,然后在阅读时呈现一个美观的排版。

其实目前并没有一个标准的 Markdown 语法文档,很多编辑器都会在基本语法上添加自己的扩展语法。所以,为了兼容性下方仅展示被广泛使用的基本语法。

如何上手 Markdown?

如果您是刚接触 Markdown, 那么比较好的一个方法是逐个学习 Markdown 语法。刚开始,懂得标题和强调语法就能够写出基本的文档;然后,您可以在书写的过程中不断学习和接触新的语法并不断练习,加强记忆。

语法指南

下面是被广泛支持的 Markdown 基本语法的一个概览。

标题

# 这是一个<h1>标签
## 这是一个<h2>标签
......
###### 这是一个<h6>标签

注意

  • # 之后需要至少一个空格。
  • 一个标题应该独占一整行。

强调

*此文本为斜体*
_此文本为斜体_

**此文本为粗体**
__此文本为粗体__

***此文本为加粗斜体***
___此文本为加粗斜体___

例:

此文本为斜体
此文本为斜体

此文本为粗体
此文本为粗体

此文本为加粗斜体
此文本为加粗斜体

注意

  • 这边推荐使用 *,因为最常用。
  • 如果渲染错误,请尝试在第一个 * 之前以及最后一个 * 之后添加一个空格。如果被标记的文本是以全角符号开始或结尾,一般都需要前后添加一个空格。

段落和换行

如果需要您一个新的段落,您应该先在一个段落的后面插入一个空行,然后才输入新的段落的文本。

如:

这是一个段落。

这是另一个段落。

例:

这是一个段落。

这是另一个段落。

注意

  • 您可直接按键盘上的 Enter 键插入空行,进入下一行。

  • 一般来说,您应该在一个块元素(例如代码块、列表和块引用)后面插入一个空行来结束该元素。

列表

无序列表

* 项目 1

这是一段在 项目 1 下面的文字。

* 项目 2
    * 项目 2a
    * 项目 2b
* 项目 3

例:

  • 项目 1

这是一段在 项目 1 下面的文字。

  • 项目 2
    • 项目 2a
    • 项目 2b
  • 项目 3

注意

  • # 之后需要至少一个空格。

  • 使用一个空行来结束一个列表序列。

有序列表

1. 项目 1
1. 项目 2

注意,列表前面的数字序号其实是无关紧要的,渲染时 Markdown 会自动修改该序号。

3. 项目 3
    1. 项目 3a
    2. 项目 3b
4. 项目 4

例:

  1. 项目 1
  2. 项目 2

注意,列表前面的数字序号其实是无关紧要的,渲染时 Markdown 会自动修改该序号。

  1. 项目 3
    1. 项目 3a
    2. 项目 3b
  2. 项目 4

注意

  • 数字 之后需要至少一个空格。

  • 使用一个空行来结束一个列表序列。

表格

| 表头 1 | 表头 2 | 表头 3 |
| - | - | - |
| 单元格 1 | 单元格 2 | 单元格 3 |
| 单元格 4 | 单元格 5 | 单元格 6 |

例:

表头 1 表头 2 表头 3
单元格 1 单元格 2 单元格 3
单元格 4 单元格 5 单元格 6

注意

  • Markdown 的表格默认为左对齐,在第二行 | - | 中的 - 右边加上 : 就右对齐,两边都加上就是居中。

    • | - |:左对齐
    • | -: |:居中对齐
    • | :-: |:右对齐

图片和链接

![图像文本,图片失效时显示](/url/to/image.png "可选文本,鼠标在图片上悬停时会显示")

![图像文本,图片失效时显示](https://www.***.com "可选文本,鼠标在图片上悬停时会显示")

[链接文本](/url/of/the/link)

[链接文本](https://www.***.com)

块引用

> 这是一个块引用示范。

例:

这是一个块引用示范。

注意

  • > 标记后面至少需要一个空格。
  • 多行连续的引用可以只在第一行添加标记。

代码块

~~
这是一个普通的代码块。
~~

~~lang
这是一个有代码高亮的代码块。
~~

``
这是另一个普通的代码块。
``

``lang
这是另一个有代码高亮的代码块。
``

注意

  • 因语法冲突,实际上上方代码块内两种实现代码块的 ~` 个数均应为 3 个。
    • 如:~~~```
  • lang 用于指定代码块的代码语言并进行代码高亮,可选;如果不指定,Markdown 引擎不会尝试进行高亮代码。

例:~~~markdown:表示该代码块会使用 Mrakdown 的语法高亮规则对代码块内的文本进行高亮。

行内代码块

`这是一个行内代码块。`

在想包裹的文字两边输入 `,便可形成行内代码块。

例:这是一个行内代码块。

任务列表

- [x] 这是一个已完成的项目。
- [ ] 这是一个未完成的项目。

例:

  • 这是一个已完成的项目。
  • 这是一个未完成的项目。

删除线

~~这是一个带删除线的文本。~~

例:

这是一个带删除线的文本。

分隔线

***

---

___

您可以在独立的一行中使用 3 个或以上的 *-_ 来建立一个分隔线,行内不能有其他文本字符。

三种使用方法的实现效果是一样的,例:


Markdown 编辑器推荐

这里推荐两个好用的 Markdown 编辑器。

  • VNote:一款开源且强大的更懂程序员和 Markdown 的笔记管理软件!Github 上的开源项目地址:vnote
  • Typora:简单但功能强大,无缝实时预览,所见即所得的免费编辑器。

参考资料

  1. Mastering Markdown

支持根据文章跳转层级的面包屑导航

@gsgysm **文章管理工具(可跳转到之前的任意一级)**已迁移至此。

功能如图所示:

image

因后续文档层级会不断增多,因此需要一个面包屑导航跟踪曾经,并随时返回上层文档。

协同编辑器

此功能用于用户间翻译文档的协同。

功能概览:

  • 增删改查。
  • 版本管理。
  • 组成员认领并标记文档翻译进度。
  • 对文档进行过提交的用户,均记录为协同编辑者。

左侧导航栏不支持独立的滚动

页面左侧的导航栏(此问题发布时)是与页面相对固定,与页面一起滚动的。
主要缺陷

  1. 需要滚动到页面上方才能完整看到导航栏(图1)
    image

自动保存编辑器文本到本地

  • 不会保存到服务器端。原因不是资源占用,而是保存到服务器在请求时有网络需求、鉴权问题,失败风险很大,而保存草稿就是为了应对这些风险。

  • 一定是缓存在浏览器中。

  • 可以考虑每 1 分钟自动保存草稿,或每 100 字保存草稿。

左侧导航栏不支持独立滚动

页面左侧的导航栏(此问题发布时)是与页面相对固定,与页面一起滚动的。
主要缺陷

  1. 需要滚动到页面上方才能完整看到导航栏(图),可改进为导航栏独立于页面浮动
    image

这属于可改进项

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.