当前位置: 首页 > 编程日记 > 正文

ubuntu 系统设置bugzilla制

随着时间的推移。在大脑中形成的记忆总会慢慢的淡去。人的记忆力就是这样。所以最好的办法就是形成博客去记录下来,一方面给自己以后回想用。一方面也算是自己的一个积累。所以一旦选择了一个行业,最好不要轻 易转行,由于非常多知识须要不断的反复才干真正的掌握,而一个行业又须要非常多真正掌握的知识,有人称这是积累的过程。无论怎么说,不论哪个行业都不是熬几个 通宵就搞定的。

而你的积累也就变成想转此行别人的壁垒,你积累的越多,壁垒也就越高。

所以一旦选择。就要一直走下去,相信不久的将来你会看到不一样的曙 光,由于有非常多人在路上半途而废。我坚信这一点。 


我在ubuntu上安装bugzilla系统部署,也是一头雾水,如今能做的也就是从网络上借鉴各种大牛的教程然后加上自己的总结和实际操作中遇到的困难从而记录下来写成博客。

Bugzilla简单介绍
        
Bugzilla是一个共享的免费的产品缺陷记录及跟踪工具(Bug-Tracking System)

由Mozilla公司提供。创始人是Terry Weissman,開始时使用一种名为“TCL”的语言创建的,后用Perl语言实现。并作为Open source公布。它能够管理软件开发中缺陷的提交(new)。修复(resolve)。关闭(close)等整个生命周期。


Bugzilla特点
Bugzilla可以为你建立一个完好的bug跟踪体系。包含报告bug、查询bug记录并产生报表、处理解决bug、管理员系统初始化和设置四部分。Bugzilla具有例如以下特点:
1.基于Web方式,安装简单、执行方便快捷、管理安全。
2.有利于缺陷的清楚传达。

本系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的bug报告。 提供大量的分析选项和强大的查询匹配能力,能依据各种条件组合进行bug统计。当缺陷在它的生命周期中变化时,开发者、測试人员、及管理人员将及时获得 动态的变化信息,同意你获取历史记录,并在检查缺陷的状态时參考这一记录。
3.系统灵活。强大的可配置能力。Bugzilla工具能够对软件产品设定不同的模块。并针对不同的模块设定开发者和測试人员。

这样能够实现提交报告时 自己主动发给指定的责任人,并可设定不同的小组。权限也可划分。设定不同的用户对bug记录的操作权限不同。可有效控制进行管理。同意设定不同的严重程度和优 先级。能够在缺陷的生命期中管理缺陷。

从最初的报告到最后的解决,确保了缺陷不会被忽略。同一时候能够使注意力集中在优先级和严重程度高的缺陷上。


4.自己主动发送Email,通知相关人员。依据设定的不同责任人,自己主动发送最新的动态信息,有效的帮助測试人员和开发者进行沟通。

 

假设大家想对bugzilla系统具体了解。能够去官方站点查看。毕竟官网的东西我认为都是比較权威的。官方网址:

http://www.bugzilla.org/

 

我们从官方能够看到部署该系统的要求和方法:

http://www.bugzilla.org/requirements/


http://www.bugzilla.org/docs/4.4/en/html/



Requirements

Operating System

To install and run Bugzilla on your server, the core requirement is to have Perl installed. This means that Bugzilla can be installed on any platform where Perl can be installed, including Windows, Linux, and Mac OS X. Linux is highly recommended and is our 1st-class citizen operating system.

Hardware

The hardware requirements depend heavily on the size of the user base and on the number of bugs in your database. For small teams (up to a few tens of users) with few bugs (up to a few thousands bugs), any good machine will do the job pretty well. The important part is to have enough RAM (4 GB or more recommended) and a fast processor (for instance, 3 GHz). Such hardware is pretty common nowadays. A harddisk with 50 GB of free space is large enough.

Larger teams with several thousands of users and several hundreds of thousands bugs need more hardware. To give you an idea, the Bugzilla installation at Mozilla uses 8 servers: 3 webheads (12 GB of RAM each), 1 master database (35 GB of RAM), 3 slave databases (35 GB of RAM each), and 1 email relay. Moreover, mod_perl is enabled for improved performance. Note that it is designed for very high concurrent access, which is quite unusual, so your requirements are probably lower than that.

Software

Bugzilla needs a database server, a web server, and Perl. In all recommendations below, "Bugzilla requires version X" must be understood as "Bugzilla requires version Xor newer". In all cases, the newer, the better, as newer releases have more bug fixes, are still supported and still get security fixes. If you install the mimimum version mentioned below, the risk is that this version will reach End Of Life pretty soon and so can be unsupported at any time.

Perl:Bugzilla 4.4 and older require Perl 5.8.1 (or newer, see the previous paragraph), but Bugzilla 5.0 and newer will require Perl 5.10.1, and so we don't recommend Perl 5.8.x at this stage. Instead, you should install Perl 5.12 (thoughthis version already reached End Of Life) or newer, as these newer versions have some useful improvements which will make your life easier.Database Server:Bugzilla supports MySQL, PostgreSQL, Oracle and SQLite. We highly recommend MySQL and PostgreSQL, which have the best support from Bugzilla and are used daily by Bugzilla developers. Oracle hasseveral known issues and is a 2nd-class citizen. It should work decently in most cases, but may fail miserably in some cases too. SQLite is recommended for testing purposes only or for small teams.
If you install MySQL, version 5.0.15 is required by Bugzilla 4.x, but we highly recommend version 5.5 or newer. If you install PostgreSQL, version 8.3 is required.
Web Server:Bugzilla has no minimum requirements for its web server. We recommend to install Apache 2.2, though Bugzilla works fine with IIS too (IIS 7 or higher recommended). If you install Apache and you want improved performances, you can enable its mod_perl module.

通过以上了解我们知道须要预先安装一下几个软件:

  • Perl(V5.8.1以上)
  • 数据库引擎(Mysql/postgresql/Oracle)
  • Webserver
  • Mail Transfer Agent
  • Bugzilla压缩包的下载和Perl Moudles(Perl 模块)

详细过程例如以下:

一:

1.须要安装perl,首先就要知道这个perl是什么。干什么用的。

perl的前身是Unix系统管理的一个工具。被用在无数的小任务里。后逐渐发展成为一种功能强大的程序设计语言,用作Web编程、数据库处理、XML处理以及系统管理。在完毕这些工作时,同一时候仍能处理日常细小工作。这是它的设计初衷。Perl特别适合系统管理和Web编程。

实际上已经被用在全部Unix(包含Linux)捆绑在一起作为标准部件公布。同一时候也用在Microsoft Windows和差点儿其它全部操作系统。Perl 被称为“有用报表提取语言”(Practical Extraction and Report Language)。Perl是由拉里·沃尔(Larry Wall)设计的,并由他不断更新和维护的编程语言。简而言之,Perl像C一样强大。像awk、sed等脚本描写叙述语言一样方便。

2.Perl通常是系统自带 。假设没有或者版本号不符合要求,请自行安装,或者
apt-get install perl
用Perl -v查看perl版本号信息

perl的官方网址是:http://www.perl.org/

 

3.在命令终端输入命令:perl -v 查看安装的perl的版本号:


运行一下这个命令:sudo apt-get update 获得近期的软件包的列表。列表中包括一些包的信息,比方这个包是否更新过

我的perl的版本号为:5.14.2网上说的安装版本号要求为:5.8.1显然我的perl的版本号已经够用了。可是我还是

用命令apt-get install perl更新了一下。

 

二:安装Mysql

 

在终端输入命令:mysql -v  例如以下图所看到的:

 

依照提示继续输入命令:sudo apt-get install mysql-client-core-5.5  

安装命令:sudo apt-get install mysql-server(安装完毕的最后,会让你输入root管理员的帐号password。记住该password。此root非用户组中的root,而是mysql数据库的root管理员根帐号)


 

三、Webserver(apache2)

安装命令 : sudo apt-get install apache2

四、Mail Transfer Agent

安装命令: sudo apt-get install sendmail

五、下载bugzilla及安装Perl模块

下载链接:http://www.bugzilla.org/

将该文件解压缩到/var/www/文件夹下

sudo tar -C /var/www/ -xvf bugzilla-4.4.5.tar.gz

解压完成。该文件夹下将会有一个名为bugzilla-4.4.5的文件夹,将该文件夹改名为bugzilla并切换到/var/www/bugzilla/文件夹

sudo mv bugzilla-4.4.5  bugzilla & cd /var/www/bugzilla/

在bugzilla文件夹下有一个checksetup.pl的文件,执行该文件

sudo perl checksetup.pl

执行完成,会告诉你当前bugzilla还差那些perl模块须要安装,而且有提示安装命令。

这里我们仅仅须要安装必须的一些包就能够了,可选包能够不用安装。安装这些必须的包的命令一般为:

/usr/bin/perl   install-module.pl --all

这句命令将安装bugzilla所须要的一系列perl模块,基本上执行完成,安装bugzilla的前期准备工作都做的差点儿相同了。
当然也存在一些安装不上的情况,这时要自己安装,我安装时候存在YAML和DateTime 安装不成功,通过例如以下命令安装或到cpan上下载须要的模块安装

sudo /usr/bin/perl install-module.pl YAML

sudo /usr/bin/perl install-module.pl DateTime

这句命令将安装bugzilla所须要的一系列perl模块,基本上执行完成,安装bugzilla的前期准备工作都做的差点儿相同了。


事实上这个时候bugzilla差点儿相同能够算是安装好一大半了,剩下的就是一些配置的问题了。


六、配置

1、mysql的配置。

       bugzilla须要用mysql数据库来管理bugs,其默认的数据库名字为bugs。默认的数据库管理员帐号为bugs。默认管理员password为空,这些都是写在配置文件localconfig中的。所以我们须要加入一个bugs的mysql数据管理员用户,并创建一个名为bugs的数据库来保存bugzilla提交的bugs。

在终端输入:

mysql -u root -p(用mysql的root管理员登录mysql,以加入用户bugs),终端会提示输入password,即之前安装mysql时的最后输入的rootpassword。

进入mysql界面后

grant all on *.* to bugs@localhost identified by '';flush privileges;别忘最后的‘。'号)。这样我们就创建好了mysql的用户bugs,供bugzilla使用。

最后创建bugs数据库文件。

在mysql界面中输入:

CREATE DATABASE bugs;

2、apache2server的配置   

打开apache2的配置文件httpd.conf

sudo vi /etc/apache2/httpd.conf。在当中加入例如以下内容:

   <Directory "/var/www/bugzilla/">

        AddHandler cgi-script .cgi 

        Options +Indexes +ExecCGI +FollowSymLinks

        DirectoryIndex index.cgi

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

3、bugzilla的配置

改动/bugzilla/localconfig文件里的一句话:$webservergroup = 'www-data';

这里为什么填www-data呢,这是由我们安装好的apache2的环境变数决定的。该变数存在文件/etc/apache2/envvars中,文件的内容例如以下:

# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

这就是我们要填www-data的原因了。另外我们须要改动bugzilla文件夹的owner和groups。由于apache2环境变数决定是其是用www-data用户组来运行的。

改动的命令为:sudo chgrp -R root.www-data bugzilla。



最后在终端执行以下的命令:sudo perl checksetup.pl,执行完成bugzilla将会顺利的安装好,在安装的最后会让你输入bugzilla系统的管理员帐号和password,这个必须记好了。

七、启动bugzilla

重新启动apache2服务器和mysqlserver

sudo /etc/init.d/apache2 restart

sudo /etc/init.d/mysql restart

bugzilla的环境算是基本上搭建好了,接下来打开firefox就能够用了。

在地址一栏输入http://localhost/bugzilla就能够看到bugzilla的首页了,截图例如以下:



后面大部分的内容是參考了博客:http://blog.csdn.net/ocean181/article/details/7184961

在点击 open a new account 的注冊一个新用户的时候:

报了下面错误:

Software error:

No SASL mechanism foundat lib/Authen/SASL.pm line 78at /usr/share/perl/5.14/Net/SMTP.pm line 143

For help, please send mail to the webmaster (webmaster@localhost), giving this error message and the time and date of the error.



  • apt-get install libauthen-sasl-cyrus-perl libauthen-sasl-perl 

  • sudo /etc/init.d/sendmail restart



更新了以后再次去注冊创建一个用户的时候又报了一下一个错误:

An unexpected error occurred. This could be a temporary problem, or some code is behaving incorrectly. If this problem persists, please email this page to xxx@XXX.com with details of what you were doing at the time this message appeared.

URL: http://192.168.20.207/bugzilla/createaccount.cgi?login=xx%403XXX.com&token=1407149745-hvvkPJpqM65UnbQRJ5WWgBU3OYzz15fQ_ME0-UOlXIU

There was an error sending mail from 'xxx@XXX.com' to 'xx@XXX.com': Couldn't authenticate 'xxx@XXX.com:...'

Traceback:

 at Bugzilla/Mailer.pm line 174Bugzilla::Mailer::MessageToMTA(...) called at Bugzilla/Token.pm line 76Bugzilla::Token::issue_new_user_account_token(...) called at Bugzilla/User.pm line 2039Bugzilla::User::check_and_send_account_creation_confirmation(...) called at /var/www/bugzilla/createaccount.cgi line 37


在网上看了非常多的教程,也没有看到什么详细的解决方式。于是自己静下新来。从头又过了一边。

自己的又读了一边输出的错误日志信息:There was an error sending mail from 'xxx@XXX.com' to 'xx@XXX.com': Couldn't authenticate 'xxx@XXX.com:...'

 这里的意思是说无法认证:xxx@XXX.com。

所以在次返回:Administration->Parameters->Email->smtp_username

在这里有这样一段英文描写叙述:The username to pass to the SMTP server for SMTP authentication. Leave this field empty if your SMTP server doesn't require authentication.

意思就是说:username传递到SMTPserver进行SMTP认证。

将此字段留空。假设您的SMTPserver不须要身份验证。



于是看到这里我就不禁产生了几个疑问:什么是SMTP认证。SMTP认证有什么作用?

 SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇。它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP server就是遵循 SMTP 协议的发送邮件server。
SMTP 认证,简单地说就是要求必须在提供了账户名和password之后才干够登录 SMTP server。这就使得那些垃圾邮件的散播者无可乘之机。


添加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。



公司的邮件server是没有SMTP认证的。所以这里直接空着邮件就能够正常的发送出来了。




bugzilla 从3.4版后,改由jopqueue.pl来运行邮件通知功能。假设发现几天没有收到邮件了,就能够check一下该脚本的状态。看看是否在正常工作。

在bugzilla安装文件夹,运行指令:

./jobqueue.pl check
假设该脚本执行正常。通常会有例如以下提示:

[root@axdc-release /usr/local/www/bugzilla]# ./jobqueue.pl check
Configuration looks okay
jobqueue.pl running - pid 34479
0 jobs in the queue.
假设出现故障。通常会有例如以下提示:

[root@axdc-release /usr/local/www/bugzilla]# ./jobqueue.pl check
Configuration looks okay
No jobqueue.pl running - pid 34193
1304 jobs in the queue.
假设jobqueue.pl存在问题,首要做的是用 ps -aux | grep “jopqueue.pl"查看一下是否有该进程存在,假设有。请直接kill掉。

指令: kill [jopqueue.pl PID]

kill后,再运行jobqueue.pl启动指令:

./jobqueue.pl start

然后再运行几次check动作,看jobqueue.pl是否正常工作。正常的话 “xxx jobs in the queue”中的数字 “xxx”会是0或不断减小 。当然也能够通过能否接收到bugzillaserver发出的邮件来验证。



bugzilla 数据库操作相关总结:

1、本机登陆mysql:mysql -u root -p 

2、 远程登录mysql:mysql -h ip -u user -p
3、quit;//退出mysql操作 


要想知道每一个数据库的大小的话,过程例如以下:

1、进入information_schema 数据库(存放了其它的数据库的信息)

use information_schema;

2、查询全部数据的大小:

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;

3、查看指定数据库的大小:

比方查看数据库home的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home';

4、查看指定数据库的某个表的大小

比方查看数据库home中 members 表的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home' and table_name='members';

数据库经常使用命令总结例如以下:

create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 表的具体描写叙述
select 中加上distinct去除反复字段
mysqladmin drop database name 删除数据库前,有提示。


显示当前mysql版本号和当前日期
select version(),current_date;


 

 

 

版权声明:本文博主原创文章。博客,未经同意不得转载。

相关文章:

静态分析C语言生成函数调用关系的利器——cflow

除了《静态分析C语言生成函数调用关系的利器——calltree》一文中介绍的calltree&#xff0c;我们还可以借助cflow辅助我们阅读理解代码。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; cflow的说明和安装cflow是一款静态分析C语言代码的工具&#xff0c;通过…

我在MongoDB年终大会上获二等奖文章:由数据迁移至MongoDB导致的数据不一致问题及解决方案...

作者 | 上海小胖来源 | Python专栏&#xff08;ID:xpchuiit)故事背景企业现状2019年年初&#xff0c;我接到了一个神秘电话&#xff0c;电话那头竟然准确的说出了我的昵称&#xff1a;上海小胖。我想这事情不简单&#xff0c;就回了句&#xff1a;您好&#xff0c;我是小胖&…

注意String.Split的几个重载形式

String.Split应该是经常用到的一个函数了,经常的有下面两种形式 public string[] Split(char[] separator, StringSplitOptions options); public string[] Split(string[] separator, StringSplitOptions options); 1. 多数情况下我们会使用第一种,代码里可能这…

如何让猎头找到你

如何让猎头找到你

libev源码解析——总览

libev是个非常优秀的基于事件的循环库&#xff0c;很多开源软件&#xff0c;比如nodejs就是使用其实现基础功能。本系列将对该库进行源码分析。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 不知道是被墙了还是网站不再维护&#xff0c;它的官网&#xff08…

GPT-2仅是“反刍”知识,真正理解语言还要改弦更张

作者 | Gary Marcus译者 | 泓技编辑 | 夕颜出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】OpenAI的GPT-2正被广泛地讨论&#xff0c;无论是《纽约客》还是《经济学人》&#xff0c;我们都能看到有关它的话题。关于自然和人工智能&#xff0c;它想…

sap business one 笑谈

Sap Business .e 出生在以色列&#xff0c;生下来的时候父母给起了个小名叫SBO&#xff0c;据说他的亲生父母是SAP家庭里的一个重要成员&#xff0c;后来SAP家族里的长老认为SBO长得不错&#xff0c;挺好看的。毕竟SAP家族里生下来的儿子都是胖胖的&#xff0c;想要个瘦点长相好…

来51学院的第一天

【来51学院的第一天】转载于:https://blog.51cto.com/10801189/1703279

libev源码解析——监视器(watcher)结构和组织形式

在《libev源码解析——总览》中&#xff0c;我们介绍了libev的一些重要变量在不同编译参数下的定义位置。由于这些变量在多线程下没有同步问题&#xff0c;所以我们将问题简化&#xff0c;所提到的变量都是线程内部独有的&#xff0c;不用考虑任何多线程问题。&#xff08;转载…

《评人工智能如何走向新阶段》后记(再续16)

由AI科技大本营下载自视觉中国181.5种常见的机器学习方法。 &#xff08;1&#xff09;线性回归linear regression: 一种流行的回归算法&#xff0c;从样本特征的线性组合&#xff0c;linear combination中学习模型。 &#xff08;2&#xff09;负数几率回归&#xff0c;logis…

怎么样才能快速的把淘宝店铺推广出去

我来到淘宝近一个月了,目前顺利地得到了两颗心心.感触颇多.其中店铺的推广显得尤其重要&#xff0c;应很多淘友的提问&#xff0c;我把一些店铺推广技巧介绍如下,你如果觉得有益,就回一下贴,以示支持.在这里先谢谢了&#xff01;先看第一板斧&#xff1a;一、修练内功&#xff…

linux的ftp服务器

2019独角兽企业重金招聘Python工程师标准>>> ftp服务器在网上较为常见&#xff0c;Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件&#xff0c;这里详细介绍Linux ftp命令的一些经常使用的命令&#xff0c;相信掌握了这些使用Linux 进行ftp操…

使用Forms Authentication实现用户注册、登录 (二)用户注册与登录

从这一部分开始&#xff0c;我们将通过一个实际的完整示例来看一下如何实现用户注册与登录。在介绍注册与登录之前&#xff0c;我们首先介绍一下如何判断用户是否已登录&#xff0c;并未后面的示例编写一些基础代码。 判断用户是否已经登录首先&#xff0c;在Web站点项目中添加…

libev源码解析——调度策略

在《libev源码解析——监视器&#xff08;watcher&#xff09;结构和组织形式》中介绍过&#xff0c;监视器分为[2,-2]区间5个等级的优先级。等级为2的监视器最高优&#xff0c;然后依次递减。不区分监视器类型和关联的文件描述符的值&#xff0c;权限高的要优先于权限低的执行…

特斯拉AI团队招兵买马:“英雄不问出处”

2月3日&#xff0c;特斯拉创始人兼CEO埃隆•马斯克发布推特&#xff0c;贴出了Autopilot AI团队招聘人才的信息。马斯克在推特中表示&#xff0c;特斯拉AI团队将直接向马斯克回报&#xff0c;他几乎每天都会与团队保持沟通和交流&#xff0c;并透露团队base在德州奥斯汀。据特斯…

java中重载与重写的区别

最近了解一下重载和重写 一、重载(Overloading) &#xff08;1&#xff09; 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在&#xff0c;具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。 &#xff08;2&#xff09; Ja…

libev源码解析——I/O模型

在《libev源码解析——总览》一文中&#xff0c;我们介绍过&#xff0c;libev是一个基于事件的循环库。本文将介绍其和事件及循环之间的关系。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 目前ibev支持如下IO事件模型&#xff1a; select模型。对应文件是…

“数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力

之前有很多程序员读者向我们抱怨&#xff1a;1&#xff09;做算法优化时&#xff0c;只能现搬书里的算法&#xff0c;遇到不一样的问题&#xff0c;就不会了。2&#xff09;面试一旦涉及到算法和数据结构&#xff0c;如果数学不行&#xff0c;面试基本就凉凉了。3&#xff09;一…

VISTA中注册表项LEGACY_****的删除

在VISTA中如果你错误安装了某个驱动软件&#xff0c;而如果这个驱动安装软件考虑不周&#xff0c;无法卸载&#xff0c;那么你就麻烦了&#xff01;比如我的U盘以前一直使用优易U盘加密软件1.2来做一个隐蔽的U盘。某天我在VISTA上运行了这个U盘加密软件&#xff0c;这个软件运行…

nodejs这个过程POST求

下面是一个web登陆模拟过程。当我们问一个链接&#xff0c;你得到一个表格&#xff0c;然后填写相应的表格值&#xff0c;然后提交登陆。 var http require(http); var querystring require(querystring); http.createServer(function (request, response) {var responseStri…

FTP、HTTP断点续传和多线程的协议基础

使用FTP或HTTP协议的下载软件支持断点续传和多线程的协议基础是&#xff1a;FTP用的是REST和SIZE&#xff1b;HTTP用的是Range。1、FTP实现断点续传的协议基础REST&#xff08;有的服务器可能不支持此命令&#xff09;Syntax: REST positionSets the point at which a file tra…

libev源码解析——定时器原理

本文将回答《libev源码解析——I/O模型》中抛出的两个问题。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 对于问题1&#xff1a;为什么backend_poll函数需要指定超时&#xff1f;我们让其一直等待到有事件发生不是更好么&#xff1f; 答案是“必须要指定超…

AI颠覆经济世界作用被夸大?影响远比媒体头条报道更加复杂

来源 | The Gradient译者 | 刘畅编辑 | 夕颜出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 【导读】每天我们都听到有人声称人工智能将改变经济体系&#xff0c;造成大量的失业和垄断。但是&#xff0c;经济学家是如何看待的呢&#xff1f;在第三届AI经…

ArcGIS制图之Sub Points点抽稀

简介 Sub Points工具是 Esri 中国自主开发的一个插件&#xff0c;该工具优先考虑点在空间分布上的均匀合理性&#xff0c;并结合点数据中包含的 "优先级" 属性进行筛选。通过获取每个点在一定范围内拥有的相邻点的数目信息&#xff0c;得到地图中点密度的分布状况。抽…

libev源码解析——定时器监视器和组织形式

我们先看下定时器监视器的数据结构。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; /* invoked after a specific time, repeatable (based on monotonic clock) */ /* revent EV_TIMEOUT */ typedef struct ev_timer {EV_WATCHER_TIME (ev_timer)ev_tstamp…

谁说AI无用?疫情下,AI已经代替人类做了很多...

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;经历过无比漫长的十多天&#xff0c;疫情至今还没有任何退散的迹象&#xff0c;形势越来越严峻。百度实时大数据报告显示&#xff0c;截至2020年2月4日9时&#xff0c;新型冠状病毒累计报告确诊病例20471例…

关于CSS样式浏览器兼容问题的一些注意事项

CSS技巧1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字&#xff0c;就垂直居中了。缺点是要控制内容不要换行 2. margin加倍的问题 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决…

Ember.js 入门指南——查询记录

2019独角兽企业重金招聘Python工程师标准>>> store提供了统一的获取数据的接口。包括创建新记录、修改记录、删除记录等&#xff0c;更多有关Store API请看这个网址的介绍&#xff1a;http://devdocs.io/ember/data/classes/ds.store。 为了演示这些方法的使用我们结…

C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)

前言 录像功能是监控系统中最重要的功能之一&#xff0c;除了本文的功能实现外&#xff0c;还需要你自己考虑合适的存储策略&#xff1a;存储大小、时间段、存储盘符等。 注意 本系列文章限于学习交流&#xff0c;注重过程&#xff0c;由于涉及公司&#xff0c;所以不提供源代码…

疫情当下,你是在家里躺着刷抖音?还是在做这些?

2020年本来可以是很开心的一年没想到一开头就给了我们一个重重的一击疫情的出现让我们非常的恐慌新型病毒肺炎让我们无处可躲原来热闹的新年因为疫情让我们逼不得已只能待在家里走亲访友更是不可能的就连原来约好的相亲也泡汤了因为封城、封村、封小区、封路了而这些也只是为了…