晨心

晨心 查看完整档案

南京编辑南京工业大学  |  建筑电气与智能化 编辑  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

晨心 发布了文章 · 2019-08-24

main.obj : error LNK2019 or LNK2001: unresolved external symbol

main.obj : error LNK2019 : unresolved external symbol

main.obj : error LNK2001: unresolved external symbol

在写c++的时候将类的初始化函数定义为了inline,导致产生了以上的链接错误。开始的时候就是在网上查资料并没有找到问题所在,然后根据我之前写的另一个工程做对照分析两个工程的不同之处,才发现引发错误的工程里我将初始化函数定义为了inline,

我们知道inline关键词是将函数定义为内联函数,这样在编译器编译的时候就可以做一些相应的优化,但是在将初始化函数前使用inline关键词,我推测是因为初始化函数没有返回类型申明,所以当添加inline关键词时就引发了编译器混淆,从而引发链接错误。

查看原文

赞 0 收藏 0 评论 0

晨心 评论了文章 · 2018-09-24

如何在新版的gitbook上写自己的书

前言

之前为了学习QT当中的qmake,就去看QT的官方文档,但QT的官方文档都是英文的,而自己本身英文较差,就一咬牙决定不如就把qmake的使用文档翻译一下吧。这样即可以加深对文档的理解,也可以留着自己以后查阅,顺便也可以将自己的文档放在网上给想要的人进行查阅。于是就开始查找相关的工具,几经辗转找到了gitbook这个网站。然后了解其使用方法,但不巧的是网站正处于改版时间,网上找到的教程基本全是针对旧版的,而新版的网站许多功能上还没有完善,这个折磨了我好久。

gitbook上提供了多种编辑文档的方式,可以在线编辑也可以离线编辑后再上传。新版的网站和旧版的网站已经有了好多的改变。具体的改变可以参阅gitbook的网站文档。其中的一种编辑文档的方式就是将文档像代码一样推送到GitHub,然后将文档同步到gitbook。虽然之前我没有用过git也没有用过github,我还是挺着迷这种编写文档的方式的,so。。。。因为新网站的功能还不算完善,于是各种折腾开始了。。。。之间我也联系了网站的管理员,他们也以邮件的方式回复了我,表达了它们对网站功能不完善的歉意。这里也表示感谢。。。。于是折腾了几天还是先将对gitbook网站的折腾先暂时搁置了。。。。

继续查阅我还要哪些工具,于是我还要学习Markdown,git以及github的使用。于是学起来。。。。而关于文本编辑器的使用又陷入了纠结。。。再VScode和sublime之间徘徊,最后还是发现vscode更适合我一些(这里并不是说sublime不好)。VScode中可以很方便的预览文档,以及纠正语法错误。

教程

首先我们需要再在github上创建一个仓储,并在电脑的本地安装git并将github上的仓储同步到本地。新建github仓储以及git的受用的方法可以参阅廖雪峰的git教程。更详细的也可以阅读git的官方教程。vscode和Markdown的使用自己百度就好啦。。。

做完上面的这些你就可以在本地使用vscode编写自己的文档,并将文档同步到github。下面介绍如何将文档同步到gitbook上,并生成一本书。下面就开始吧。。。

对了这里还要提一下,gitbook可以添加一个.gitbook.ymal的文件文件的使用方法可以查阅gitbook的网站文档

这里我们先创建一个gitbook账号,这里推荐直接使用自己的github账号登陆gitbook。我们按照gitbook的网站文档中的步骤创建一个organization,然后再在organization下创建一个space。
图片描述

然后按照网站文档建立和GitHub上的仓储进行关联。
图片描述

图片描述

按照提示关联自己所需要的仓储就好。

写在最后

gitbook官方文档对.gitbook.yaml文档的模板如下所示。该文件需要放在你GitHub仓储的根目录下,然后通过该文档的设置,使用相对路径指定gitbook下的根目录。这里给出我翻译的书qmake-learn其仓储位置是github qmake-learn

# Root directory to locate the content
# Default is the root directory of the repository.
root: ./

# Files to use as SUMMARY/README.
# (Relative to <root> directory)
structure:
  readme: README.md
  summary: SUMMARY.md

# Redirect urls to specific files (relative to the <root> directory)
redirects:
  previous/page: new-folder/page.md

这里给出我翻译的书qmake-learn其仓储位置是github qmake-learn。其实gitbook中也提供了一些其他的服务和设置。比如将你所写的书的网址绑定到自己的域名当中。自定义书的logo,更改书的网址。具体的使用方法可以看一下网站文档,以及自己摸索一下。

这里还要说一下,由于gitbook是国外的网站要像流畅的在上面写书,还是要。。。。。不过浏览文档没什么问题。

查看原文

晨心 发布了文章 · 2018-09-09

matplotlib嵌入到pyqt中

在pyqt5中使用matplotlib

前言

虽然,qt中也提供了绘图函数,但对于初学者并不是很容易掌握,众所周知,matplot提供了简单,易用,强大的绘图函数,结合mumpy基本可以达到matlb中的绘图体验,并且比matlab更加具有扩展性,也更自由。通过matplotlib提供的官方例程的修改,就可以很容易的绘制你想要的图形,真的很强大。(我也是名初学者)

matplotlib,pyqt5官方例程

# 取自matplotlib 官方文档案例

from __future__ import unicode_literals
import sys
import os
import random
import matplotlib
# Make sure that we are using QT5
matplotlib.use('Qt5Agg')

from PyQt5 import QtCore, QtWidgets
from numpy import arange, sin, pi, linspace
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

progname = os.path.basename(sys.argv[0])
progversion = "0.1"


class MyMplCanvas(FigureCanvas):
    # 这既是一个wiget类也是一个FigureCanva

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        self.fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = self.fig.add_subplot(111)

        self.compute_initial_figure()

        FigureCanvas.__init__(self, self.fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self,
                                   QtWidgets.QSizePolicy.Expanding,
                                   QtWidgets.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

    def compute_initial_figure(self):
        pass


class MyStaticMplCanvas(MyMplCanvas):
    """Simple canvas with a sine plot."""

    def __init__(self, *args, **kwargs):
        MyMplCanvas.__init__(self, *args, **kwargs)
        

    def compute_initial_figure(self):
        print("hello world")
        x = linspace(0, 2 * pi, 500000)
        y = sin(x)
        self.axes.cla()
        self.axes.plot(x, y)
        self.draw()


class MyDynamicMplCanvas(MyMplCanvas):
    """A canvas that updates itself every second with a new plot."""

    def __init__(self, *args, **kwargs):
        MyMplCanvas.__init__(self, *args, **kwargs)
        timer = QtCore.QTimer(self)
        
        timer.timeout.connect(self.update_figure)
        timer.start(1000)

    def compute_initial_figure(self):
        self.axes.plot([0, 1, 2, 3], [1, 2, 0, 4], 'r')

    def update_figure(self):
        # Build a list of 4 random integers between 0 and 10 (both inclusive)
        l = [random.randint(0, 10) for i in range(4)]
        self.axes.cla()
        self.axes.plot([0, 1, 2, 3], l, 'r')
        self.draw()


class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        self.setWindowTitle("application main window")

        self.file_menu = QtWidgets.QMenu('&File', self)
        self.file_menu.addAction('&Quit', self.fileQuit,
                                 QtCore.Qt.CTRL + QtCore.Qt.Key_Q)
        self.menuBar().addMenu(self.file_menu)

        self.help_menu = QtWidgets.QMenu('&Help', self)
        self.menuBar().addSeparator()
        self.menuBar().addMenu(self.help_menu)

        self.help_menu.addAction('&About', self.about)

        self.main_widget = QtWidgets.QWidget(self)

        l = QtWidgets.QVBoxLayout(self.main_widget)
        sc = MyStaticMplCanvas(self.main_widget, width=5, height=4, dpi=100)
        dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4, dpi=100)
        l.addWidget(sc)
        l.addWidget(dc)

        self.main_widget.setFocus()
        self.setCentralWidget(self.main_widget)

        self.statusBar().showMessage("All hail matplotlib!", 2000)

    def fileQuit(self):
        self.close()

    def closeEvent(self, ce):
        self.fileQuit()

    def about(self):
        QtWidgets.QMessageBox.about(self, "About",
                                    """embedding_in_qt5.py example
Copyright 2005 Florent Rougon, 2006 Darren Dale, 2015 Jens H Nielsen

This program is a simple example of a Qt5 application embedding matplotlib
canvases.

It may be used and modified with no restriction; raw copies as well as
modified versions may be distributed without limitation.

This is modified from the embedding in qt4 example to show the difference
between qt4 and qt5""")

代码解析

通过matplotlib.use('Qt5Agg'),这行代码声明matplotlib将要嵌入到pyqt5中,同样通过这句,也可以声明将matplotlib嵌入到其他的,gui界面中去,然后通过继承FigureCanvas类来获得一个即使widget的类也是FigureCanva类的类,然后通过self.fig成员,生成一个绘图类,并由其创建一个绘图布局,返回一个self.axes来管理绘图布局中的内容。坐标轴,标题,标签,图形样式(饼图,柱状图,折线图等)等等的设置都通过self.axes的成员函数来设置完成。刚开始的使用还是比较云里雾里的,现在就差不多了。我对官方例程做了些修改,具体的代码,可以到我的GitHub仓储上查看Qt-learn-pyqt5-matplotlib里面也有一些其他的例子,应该还会不定期的更新,有兴趣也可以看看。下面只需要对这几个类进行实例话,开启qt的事件循环就可以看到界面了,具体的可以看我的github代码,这里就不多说了。

写在最后

因为自身能力有限,也不是科班出身,都是自学的,目前还是一名学生,所以有未尽之处还请指正,不喜勿喷。谢谢。

查看原文

赞 0 收藏 0 评论 0

晨心 发布了文章 · 2018-06-07

git教程推荐以及其常用命令

git的学习推荐大家可以到廖雪峰的博客中查看相关教程觉得写的还是不错的

其次给出,该教程中给出的git常用命令下载虽然是英文的但还是很实用的。。。

查看原文

赞 1 收藏 0 评论 0

晨心 发布了文章 · 2018-05-28

matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线

koch曲线

matlab plot函数绘制koch曲线程序,程序还是比较简单的,这里只绘制出了雪花的三分之一

function koch_curve(number)%number代表koch的阶数,范围为大于等于2  
figure  
set(gcf,'position',[0,0,1920,1080]);%设置窗口分辨率,[0,0]和[1920,1080]分别为窗口左上角和右下角坐标可根据自己的屏幕分辨率调整,注释掉这句则使用matlab默认窗口分辨率  
n=2;  
koch1=[0,0;1,0];  
    for i=1:number  
        koch2=zeros(4*n-3,2);  
        k=2;  
        for j=2:n  
            koch2(k,:)=[(koch1(j-1,1)*2+koch1(j,1))/3,(koch1(j-1,2)*2+koch1(j,2))/3];  
            koch2(k+1,:)=[(koch1(j-1,1)+koch1(j,1)+sqrt(3)*(koch1(j-1,2)-koch1(j,2))/3)/2,(koch1(j-1,2)+koch1(j,2)-sqrt(3)*(koch1(j-1,1)-koch1(j,1))/3)/2];  
            koch2(k+2,:)=[(koch1(j,1)*2+koch1(j-1,1))/3,(koch1(j,2)*2+koch1(j-1,2))/3];  
            koch2(k+3,:)=koch1(j,:);  
            k=k+4;  
        end  
        n=4*n-3;  
        x=koch2(:,1);  
        y=koch2(:,2);  
        plot(x,y)  
        axis equal   
        koch1=koch2;  
        pause(1);  
    end    
end  

matlab 绘制皮亚诺曲线

function peano_curve(n)  
    peano_old=[0,0;0,1;0.5,1;0.5,0;1,0;1,1];  
    x=peano_old(:,1);  
    y=peano_old(:,2);  
    figure  
    set(gcf,'position',[0,0,1920,1080]);  
    plot(x,y)  
    axis equal  
    for i=1:n-1  
        p1=[peano_old(:,1),2+1/(3^i-1)-peano_old(:,2)];  
        p1=p1(length(p1):-1:1,:);  
        p2=[p1(:,1),4+3/(3^i-1)-p1(:,2)];  
        p2=p2(length(p2):-1:1,:);  
        peano_new=[peano_old;p1;p2];  
        p1=[2+1/(3^i-1)-peano_new(:,1),peano_new(:,2)];  
        p1=p1(length(p1):-1:1,:);  
        p2=[4+3/(3^i-1)-p1(:,1),p1(:,2)];  
        p2=p2(length(p2):-1:1,:);  
        peano_new=[peano_new;p1;p2];  
        peano_old=peano_new/(3+2/(3^i-1));  
        x=peano_old(:,1);  
        y=peano_old(:,2);  
        plot(x,y)  
        axis equal  
        pause(1)  
    end  
end 
查看原文

赞 1 收藏 0 评论 0

晨心 发布了文章 · 2018-05-24

如何在新版的gitbook上写自己的书

前言

之前为了学习QT当中的qmake,就去看QT的官方文档,但QT的官方文档都是英文的,而自己本身英文较差,就一咬牙决定不如就把qmake的使用文档翻译一下吧。这样即可以加深对文档的理解,也可以留着自己以后查阅,顺便也可以将自己的文档放在网上给想要的人进行查阅。于是就开始查找相关的工具,几经辗转找到了gitbook这个网站。然后了解其使用方法,但不巧的是网站正处于改版时间,网上找到的教程基本全是针对旧版的,而新版的网站许多功能上还没有完善,这个折磨了我好久。

gitbook上提供了多种编辑文档的方式,可以在线编辑也可以离线编辑后再上传。新版的网站和旧版的网站已经有了好多的改变。具体的改变可以参阅gitbook的网站文档。其中的一种编辑文档的方式就是将文档像代码一样推送到GitHub,然后将文档同步到gitbook。虽然之前我没有用过git也没有用过github,我还是挺着迷这种编写文档的方式的,so。。。。因为新网站的功能还不算完善,于是各种折腾开始了。。。。之间我也联系了网站的管理员,他们也以邮件的方式回复了我,表达了它们对网站功能不完善的歉意。这里也表示感谢。。。。于是折腾了几天还是先将对gitbook网站的折腾先暂时搁置了。。。。

继续查阅我还要哪些工具,于是我还要学习Markdown,git以及github的使用。于是学起来。。。。而关于文本编辑器的使用又陷入了纠结。。。再VScode和sublime之间徘徊,最后还是发现vscode更适合我一些(这里并不是说sublime不好)。VScode中可以很方便的预览文档,以及纠正语法错误。

教程

首先我们需要再在github上创建一个仓储,并在电脑的本地安装git并将github上的仓储同步到本地。新建github仓储以及git的受用的方法可以参阅廖雪峰的git教程。更详细的也可以阅读git的官方教程。vscode和Markdown的使用自己百度就好啦。。。

做完上面的这些你就可以在本地使用vscode编写自己的文档,并将文档同步到github。下面介绍如何将文档同步到gitbook上,并生成一本书。下面就开始吧。。。

对了这里还要提一下,gitbook可以添加一个.gitbook.ymal的文件文件的使用方法可以查阅gitbook的网站文档

这里我们先创建一个gitbook账号,这里推荐直接使用自己的github账号登陆gitbook。我们按照gitbook的网站文档中的步骤创建一个organization,然后再在organization下创建一个space。
图片描述

然后按照网站文档建立和GitHub上的仓储进行关联。
图片描述

图片描述

按照提示关联自己所需要的仓储就好。

写在最后

gitbook官方文档对.gitbook.yaml文档的模板如下所示。该文件需要放在你GitHub仓储的根目录下,然后通过该文档的设置,使用相对路径指定gitbook下的根目录。这里给出我翻译的书qmake-learn其仓储位置是github qmake-learn

# Root directory to locate the content
# Default is the root directory of the repository.
root: ./

# Files to use as SUMMARY/README.
# (Relative to <root> directory)
structure:
  readme: README.md
  summary: SUMMARY.md

# Redirect urls to specific files (relative to the <root> directory)
redirects:
  previous/page: new-folder/page.md

这里给出我翻译的书qmake-learn其仓储位置是github qmake-learn。其实gitbook中也提供了一些其他的服务和设置。比如将你所写的书的网址绑定到自己的域名当中。自定义书的logo,更改书的网址。具体的使用方法可以看一下网站文档,以及自己摸索一下。

这里还要说一下,由于gitbook是国外的网站要像流畅的在上面写书,还是要。。。。。不过浏览文档没什么问题。

查看原文

赞 1 收藏 0 评论 6

晨心 关注了用户 · 2018-05-24

StephenTian @stephentian

NO BB,show me the code

关注 13862

晨心 关注了用户 · 2018-04-23

toBeTheLight @tobethelight

熟练掌握 TS(0.5/1)
学习经济学(1/1)
学习数学知识(0/n)
学习编译原理(0/1)
文笔更好一些(1/1)

关注 26528

晨心 关注了用户 · 2018-04-23

wmaker @wmaker

保持节奏。

关注 2677

晨心 关注了用户 · 2018-04-23

守候 @chen93

一个web前端新手,正在web前端的路上打拼的小伙子。
在社区希望能和大家相互学习,相互鼓励,帮助。在这里我也把在工作中遇到的点滴,学习到的知识分享,希望能帮到大家,我也会不断的拼搏奋斗。
以后有所成就的我,一定会感谢现在努力奋斗的自己。

微信公众号:守候书阁 ,欢迎大家关注

在广州工作也几年了,什么时候能有个女朋友啊

关注 11003

认证与成就

  • 获得 3 次点赞
  • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2018-04-23
个人主页被 424 人浏览