From 4b54cca70b03a58af51ef6debdd012251f258bbb Mon Sep 17 00:00:00 2001 From: zel Date: Thu, 20 Feb 2025 10:54:08 +0800 Subject: [PATCH] 1 --- .idea/.idea.TightWiki/.idea/.gitignore | 13 +++ .idea/.idea.TightWiki/.idea/.name | 1 + .idea/.idea.TightWiki/.idea/indexLayout.xml | 8 ++ .idea/.idea.TightWiki/.idea/vcs.xml | 6 ++ README.md | 74 ------------------ ...台的企业内部知识库系统设计与实现-朱赟昱.doc | Bin 483840 -> 483328 bytes 6 files changed, 28 insertions(+), 74 deletions(-) create mode 100644 .idea/.idea.TightWiki/.idea/.gitignore create mode 100644 .idea/.idea.TightWiki/.idea/.name create mode 100644 .idea/.idea.TightWiki/.idea/indexLayout.xml create mode 100644 .idea/.idea.TightWiki/.idea/vcs.xml diff --git a/.idea/.idea.TightWiki/.idea/.gitignore b/.idea/.idea.TightWiki/.idea/.gitignore new file mode 100644 index 0000000..1c9750c --- /dev/null +++ b/.idea/.idea.TightWiki/.idea/.gitignore @@ -0,0 +1,13 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# Rider 忽略的文件 +/modules.xml +/contentModel.xml +/projectSettingsUpdater.xml +/.idea.TightWiki.iml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.TightWiki/.idea/.name b/.idea/.idea.TightWiki/.idea/.name new file mode 100644 index 0000000..f98fdb7 --- /dev/null +++ b/.idea/.idea.TightWiki/.idea/.name @@ -0,0 +1 @@ +TightWiki \ No newline at end of file diff --git a/.idea/.idea.TightWiki/.idea/indexLayout.xml b/.idea/.idea.TightWiki/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.TightWiki/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.TightWiki/.idea/vcs.xml b/.idea/.idea.TightWiki/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.TightWiki/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index b9f3dac..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,74 +0,0 @@ -# TightWiki - -For years I’ve worked at places where we just needed a simple to use, searchable, unobtrusive, no-nonsense, collaborative and free place to dump documentation. -The first thing that comes to mind is a Wiki but for some reason I can never find anything that "checks all the boxes". Hopefully you'll find this one does for you. - -:yum: TightWiki is an ASP.NET Core MVC Razor WIKI written in C# that sits on top of a SQLite database (zero configuration required). - -:crossed_fingers: Play with the latest dev build at http://TightWiki.com/. If you want to edit, you can signup using google auth or native TightWiki login. - -:eyes: Or check out the full wiki [documentation](https://tightwiki.com/Wiki%20Help%20::%20Wiki%20Help) to learn about the engine functionality. - -:star: Ready to run it for yourself? Check out the [installation instructions](https://tightwiki.com/wiki_help::installation)! - -:boom: Also be sure to check out the screenshots below the feature list... - -:anguished: Its been like a modern retelling of Sisyphus, only this time the stone is RegEx. - -# :astonished: Features (some of them anyway) -* MIT license, you can use it for free at home or at your business. -* Open source, you can make changes, submit fixes or just make suggestions. -* Completely customizable and rebrandable including name, title, footer, copyright and all images. -* User signup can be disabled, enabled and can require users to verify email before logging in. -* Multiple user roles are supported for admin, moderators, contributors and basic members. -* Easy page linking. Can even link to pages that do not exist and the link will subtly prompt you to create the page when logged in with a role that has page creation support. -* Admin shows missing pages, namespace metrics, users, roles, etc. -* Manual account creation, editing and deletion. -* All dates/times are stored in UTC and localized for logged in users. -* Admin moderation which is driven by page processing instructions for things like page deletions, review, drafts, etc. -* Page versioning. Revisions can be viewed by the original page URL with a /r/number route or by logging in a viewing the full page history. -* Revertible page history. -* Theme-able, with 25+ built in themes. -* Drag-drop fie uploads / page attachments, images. -* Versioned file uploads. -* Namespace support so you can have multiple pages with the same name in different namespaces. -* Fully baked in documentation of all wiki functions. -* Wiki Markup allows you post non-formatted code and even auto-syntax highlighting for things like C#, PHP, SQL, etc. Can also explicitly specify language. -* Wiki markup supports basic formatting, headings and sub-headings, tagging, tables, callouts, alerts, variables, bullets lists, dynamic glossaries, inline search results, dynamic tag clouds, related linking, expanding sections, auto-table of contents, and much more. -* Wiki page editing is syntax highlighted. -* Built in search supports fuzzy matching to support even mild misspellings. - -# Default home page -![image](https://github.com/NTDLS/TightWiki/assets/11428567/9cc75103-26b8-4732-8118-315335cddae9) - -# Site Metrics -We've beat the wiki up with more data than this, but this is our standard workload. ~45,000 pages, in ~400 namespaces, with ~250,000 revisions, created by ~1,000 users, manifesting ~5 million search tokens. The random fuzzy-match search time is 11 milliseconds. Not too shabby, right? - -![image](https://github.com/user-attachments/assets/02d9da1f-e164-44ce-aee9-0c42eedc4180) - - -# Page search -![Clip9](https://user-images.githubusercontent.com/11428567/208713076-118d981c-5cc3-4e33-a971-f63518da01ad.png) - -# Page History -![Clip2](https://user-images.githubusercontent.com/11428567/208713101-04646bf0-994a-423c-91bd-691d2e2e71fa.png) - -# Example edit page -![Clip1](https://user-images.githubusercontent.com/11428567/208712847-7f15a68d-d373-49a2-a8f0-e2d8074b3413.png) - -# Build in documentation list -![Clip7](https://user-images.githubusercontent.com/11428567/208712860-a92ba44d-28b2-4e36-9735-6c1f3bf78e3e.png) - -# Build in documentation sample -![Clip8](https://user-images.githubusercontent.com/11428567/208712889-9cf8eeca-7e0c-4019-af72-293f1ac50bc1.png) - -# Configuration -![Clip3](https://user-images.githubusercontent.com/11428567/208712916-2659d535-9b73-4ba9-bd4b-ccd003d365da.png) - -# Admin page list -![Clip6](https://user-images.githubusercontent.com/11428567/208712947-b75dd885-0a40-4bcf-bb3c-afcea2194a38.png) - -# Admin role list -![Clip4](https://user-images.githubusercontent.com/11428567/208712960-70b13aff-0f0c-4b04-bbd7-3c8a66dbe70c.png) - -Its been like a modern retelling of Sisyphus, only this time with RegEx. diff --git a/solution/基于.Net平台的企业内部知识库系统设计与实现-朱赟昱.doc b/solution/基于.Net平台的企业内部知识库系统设计与实现-朱赟昱.doc index 7d7e193ffdb30985bc897f756beffc7bce8b32d8..51348e2724f66f27d700867b91de332790d80e9f 100644 GIT binary patch delta 14508 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 delta 14580 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