Giter VIP home page Giter VIP logo

reversesacle / simple-comment-system Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 839 KB

留言评论系统。此项目综合了大部分计算机基础知识的应用,展示了一个项目从零(不依赖第三方库)到一(自行优化代码),以及优化项目(通过第三方库优化相应功能)的全部过程。

License: MIT License

Makefile 0.20% C++ 99.80%
cpp network-programming whole-process whole-project http socket

simple-comment-system's Introduction

网站留言评论系统(simple-comment-system-pre)

预览

概述

此项目为从计算机入门水平升阶为计算机进阶-前期水平的升阶项目。

初稿部分以简单、简洁性和完整性为主,除了必要的数据库API外,没有额外的外部插件库,全是由个人手动实现的底层C语言源码。

对于初稿所指的C语言指C,不包含C++,使用的C标准在C99之下(不包括C99)。
该项目在Linux系统CentOS 7下编译,测试和运行,具体操作包含

  • HTML和CSS的源码编写
  • JavaScript脚本语言监听元素事件的源码编写
  • 支持http1.0协议的socket通信的纯C语言源码编写
  • MySQL数据库(C语言API)的数据库处理纯C语言源码编写
  • 前端网络请求的JS源码编写
  • 后端对前端请求的处理纯C语言源码编写
  • 前端通过后端与数据库进行数据交换的纯C语言源码和JS源码编写
  • 前端与后端与数据库的动态化处理
  • 服务器进程源码的多线程模式编写
  • 服务器进程源码的日志监听模式编写
  • 对后端服务器进程纯C语言源码进行高性能化的处理

中稿部分以附加功能为主,主要是将编程语言切换到cpp,并利用了cpp中的第三方库添加并改善了相关功能。

设计思路与源码解析,以及项目实现的全过程 - 网站留言评论系统-初稿与中稿的(思路与教程)文章

分支说明

  • main - 主线分支,由C++编写,通过使用外部库及API来对功能进行优化,并作为主线来更新其他功能
  • original - 最初的初稿成品,由C语言编写
  • original-cpp - 最初的初稿成品,由C++编写

初稿涉及的计算机知识范围

源码使用流程详解

目录结构

httpserver
├── _config
│   ├── _config.cc
│   ├── _config.h
│   ├── _config.json
│   └── json.hpp
├── _database
│   ├── db.cc
│   └── db.h
├── docs
│   ├── css
│   │   ├── comment_reply.css
│   │   └── comments.css
│   ├── index.html
│   └── js
│       └── comments.js
├── _http
│   ├── http.cc
│   ├── http.h
│   ├── _response.cc
│   └── _response.h
├── httpserver.cc
├── makefile
├── mylibs.cc
├── mylibs.h
└── _tcp
    ├── tcp.cc
    └── tcp.h

获取源码

git clone https://github.com/ReverseSacle/simple-comment-system.git

正式操作

(info) 这里以二进制的方式运行,默认在虚拟机上Linux系统(CentOS7)中运行。

(info) 编译前需预先安装MySQL,详细请看→该项目介绍文章第一部分的【Linux服务器处理进程的数据库链接】区块。

(info) 运行前需修改./docs/js/comments.js文件开头的_host变量的值,改为虚拟机的IP地址。

# (可选)预先确保Linux虚拟机环境安装了make工具
yum -y install make

# 配置库连接位置
vi /etc/ld.so.conf
## 新的一行添加 /usr/local/lib
## 输入 :x
## 退出后输入命令 ldconfig

cd simple-comment-system

make httptest
## make操作详细操作可查看makefile文件

可通过ctrl c中断,之后直接执行./httpserver即可启动服务端进程,再在浏览器中的输入栏输入http://(虚拟机IP地址)/index.html,回车即可看到评论系统的前端界面。

第三方依赖

  • mysql++ - 用于mysql数据库的相关操作(C++)

  • gabime/spdlog - 用于记录日志(C++)

  • nlohmann/json - 用于json文件的解析(C++)

  • crypto-js - 用于SHA256的哈希处理(JavaScript)

    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/core.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/sha256.js"></script>

Record

  • 使用了gabime/spdlog第三方库来配置日志功能 - tag v0.0.2
  • 更换不可更改配置的运行方法,采用运行时动态解析JSON文件的方式来获取配置,使用了nlohmann/json第三库来解析JSON配置文件 - tag v0.0.3
  • 完善之前的改进部分并优化项目代码结构,使用C++11特性改善了代码 - tag v0.0.4
  • 更改数据库的存储数据类型,并利用crypto-js进行SHA256的哈希处理,以此适配avatar头像。部分代码的结构进行了调整 - tag v0.0.5
  • 更改数据库的表结构,添加了评论回复功能的前端样式、前端回复功能的交互代码、后端交互代码和服务器后端与前端的交互代码,之后,对前端的样式代码进行了文件拆分,对前端的js代码进行了重构 - tag v0.0.6
  • 添加了回复对象的显示,并对所有代码进行了简明的注释 - tag v0.0.7

simple-comment-system's People

Contributors

reversesacle avatar

Watchers

 avatar

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.