centos下ppt转图片

一、ppt转pdf  通过libreoffice来实现。libreoffice参考:https://www.libreoffice.org/

1、安装libreoffice

2、ppt转pdf

这步报错:

3、安装libreoffice-headless

4、使用步骤2转换成功

二、pdf转图片 通过ImageMagick来实现。ImageMagick参考:http://www.imagemagick.org/script/index.php

1、安装ImageMagick

2、pdf转图片

输出可以指定路径

此命令会生成 name-0.jpg,name-1.jpg等等图片,数目由PDF页数决定。如果指定转某一页为图片,可以使用

name.pdf[i] 来指定页码, 注意页码是从0 开始的。如果想转第三页, 可以写成name.pdf[2]。

-resize 1200x 指定生成的像素大小,像素越多生成的图片越大,转化的时间越久
-density 120 参数指定密度
-quality 100 指定生成图片的质量

发表在 应用工具软件 | 留下评论

phantomjs 抓取、截图中文网站乱码的问题的解决

用phantomjs抓取html乱码的解决方案:

phantomjs –output-encoding=gbk test.js http://webscan.360.cn/index/checkwebsite?url=www.coding123.net

这两个参数可以指定编码 …

设置成 GBK 就可以了 …

或者

用phantomjs截图时中文乱码的解决方案:

用phantomjs去截取中文页面的网站可能会出现乱码的情况,也就是截图中中文的位置全是方框。
解决办法就是安装字体。
在centos中执行:
在ubuntu中执行:
这样再去截图中文的页面就不会出现一堆的方框了。
发表在 应用工具软件 | 标签为 | 留下评论

PhantomJS 基础及示例

概述

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.(http://phantomjs.org/

PhantomJS 是一个无界面的webkit内核浏览器,你可以把它当作一个没有界面的 Safari。

安装

目前 PhantomJS 的最新版本的2.0,官方文档中有提到说:如果在使用老版本时碰到一些难解的 bug ,可以升级到最新版试试。

windows

直接下载 phantomjs-2.0.0-windows.zip ,并解压,将 bin 文件夹中的可执行文件phantomjs.exe的路径添加到环境变量后(可能需要重启机器才能生效),就可以在命令行环境(cmd 或 cygwin )中使用 phantomjs 命令执行 js 文件了。

Linux

安装二进制文件包

可以在 Bitbucket 下载已经编译好的二进制文件安装包,不过目前 Linux 提供到 PhantomJS 1.9.8的安装包,最新的 PhantomJS 2.0还没有发布。
安装方式:

  1. 下载phantomjs-1.9.8-linux-x86_64.tar.bz2
  2. 进入安装目录,解压二进制文件

  1. 创建软链接mysql指向解压出来的文件夹,或将解压出来的文件夹重命名为phantomjs:

编译源码的方式

由于 WebKit 模块中有数千个文件,因此由源码编译 PhantomJS 会花费很长的时间,文档上说,开四个并行的进程进行编译工作,需要超过30分钟的时间,因此官方文档推荐直接下载和安装二进制文件。

具体的安装方法,这里就不再赘述,大家可以到官方文档上查看。

是否安装成功

我们可以使用下面的命令来查看 PhantomJS 是否安装成功:

命令运行 phantomjs xxx.js即可执行一个 PhantomJS 程序。

webpage 模块

webpage 是 PhantomJS 的核心模块,你可以通过以下方式,获得一个 webpage 模块的实例:

open()

打开一个 url 链接,并加载对应的页面,一旦页面加载完成,就会触发回调,你也可以使用page.onLoadFinished方法来监听页面是否加载完成。下面,我们来用 open() 方法打开腾讯课堂

上面的代码中,open() 方法接受了两个参数。第一个参数是要打开网页的 url(要记得加协议头哦!),默认使用 GET 方法打开,第二个参数是回调参数,网页加载完成后该函数将会执行,它的参数status表示网页是否打开成功,打开成功就是success,否则就是fail。要注意的是,只要收到服务器返回的结果,status参数就是success,即使服务器返回的是404或500错误。

我们也可以使用其他的http方法打开页面。

上面的代码是官方文档的事例,使用POST方法向服务器发送数据。open方法的第二个参数用来指定HTTP方法,第三个参数用来指定该方法所要使用的数据。

从PhantomJS 1.9开始,我们还可以使用json对象来对http请求进行更详细的配置。

evaluate()

在打开一个网页后,我们往往有对其进行操作的需求,例如模拟点击登陆按钮、获取某个DOM元素等等,也就是需要在页面中执行javascript代码,这时候我们就需要使用到evaluate()方法。

由于因为evaluate()方法相当于一个沙盒,在其中是无法访问evaluate()之外的变量的。那如何将我想要获取的dom元素的id传进evaluate呢?

从PhantomJS 1.6开始,我们可以将外部变量以如下的方式传给evaluate内部,需要注意的是,能传入evaluate方法内部的参数只能是简单的基本类型,例如数值、字符串、json对象等能被JSON序列化的类型,而无法接受更复杂的对象,它的返回值也同样如此。

由于open()方法打开的网页内部的 console 语句,和 evaluate() 方法中的 console 语句都不会执行,给我们开发调试带来了不便。这时可以采用 onConsoleMessage 回调函数,来打印出上面两种情况中的 console 语句中的信息:

其中 msg 是需要打印的信息,lineNum 和 sourceId 是 console.log 在文件中的行号以及这个文件对应的标识 id。

includeJs()

可以使用 includeJs()方法加载外部脚本,例如 jquery。

注意,由于includeJs是异步加载脚本,所以phantom.exit()需要放在page.includeJs()的回调函数中,否则phantomjs进程会过早退出。

render()

render() 可以将打开的网页截图并保存成本地图片,可以将指定的图片文件名作为参数传入,render 方法可以根据文件名的后缀将图片保存成对应的格式。目前支持PNGGIFJPEGPDF四种图片格式。

该方法的第一个参数是保存的文件名,第二个可选参数是一个 JSON 对象,format 指定图片格式, quality 指定0-100区间内的图片质量,必须是整数。

onResourceRequested

当页面去请求一个资源时,会触发 onResourceRequested() 方法的回调函数。回调函数接受两个参数,第一个参数requestData是这个HTTP请求的元数据对象,包括以下属性:

  • id: 所请求资源的id号,这个应该是phantomjs给标识的。
  • method: 所使用的HTTP方法(GET/POST/PUT/DELETE等)。
  • url: 所请求资源的URL
  • time: 包含请求该资源时间的一个Date对象。
  • headers: 该请求的http请求头中的信息数组。

第二个参数networkRequest包含以下方法:

  • abort(): 终止当前的网络请求,这会导致调用onResourceError回调函数。
  • changeUrl(newUrl):改变当前网络请求的URL。
  • setHeader(key, value):设置HTTP头信息。

onResourceReceived

onResourceReceived属性用于指定一个回调函数,当网页收到所请求的资源时,就会执行该回调函数。回调函数只有一个参数,就是所请求资源的服务器发来的HTTP response的元数据对象,包括以下字段。

  • id:所请求的资源编号,此编号phantomjs标识。
  • url:所请求的资源的URL
  • time:包含HTTP回应时间的Date对象
  • headers:响应的HTTP头信息数组
  • bodySize:解压缩后的收到的内容大小
  • contentType:接到的内容种类
  • redirectURL:重定向URL(如果有的话)
  • stage:对于多数据块的HTTP回应,头一个数据块为start,最后一个数据块为end。
  • status:HTTP状态码,成功时为200。
  • statusText:HTTP状态信息,比如OK。

需要注意的是,该方法收到的response对象是没有response.body的具体内容的。

可以利用正则表达式,来筛选出我们想要操作的一些响应资源。比如我想从淘宝教育的课程详情页跳转到购买页(在淘宝网中),可以从淘宝同学请求的资源url中筛选出带淘宝网商品详情页的商品id,然后用这个淘宝网商品id拼接成一个淘宝网的商品详情页url,再次使用open()方法打开这个url,就可以跳转到该课程的购买页中。

小栗子

动态获取淘宝商品详情页的商品交易量

相信大家都知道爬虫的基本方式无非是抓取页面中的 url,然后分析;但是页面中的 url 也些是静态的,有些事通过js动态生成的,故爬虫也分抓静及抓动之分。

因为淘宝商品详情页的交易量是异步拉取的,在异步数据还没有返回时,页面上交易量那一栏只是一个无意义的“-”。当异步数据返回后,才会显示出真正的交易量:

因此,

win7上执行命令:

win7上得到了交易量(由于是打开https协议头的网页,所以执行js文件时,需要添加"--ssl-protocol=any"参数)

PhantomJS不能做什么

  • PhantomJS是一个阉割版的webkit,不支持flash、webGL、video/audio、css 3-d,phontomjs不想背负操作系统强相关的特性,跨平台比较困难。
  • 如果使用Page模块的onResourceReceived()方法监听页面收到的请求资源,是无法得到该资源的response.body的,这也是目前PhantomJS最受开发者吐槽的点之一。

原文链接:http://ivweb.io/topic/560b402ac2317a8c3e08621c

发表在 应用工具软件 | 标签为 | 留下评论

mysql 查询当天、本周,本月,上一个月的数据

今天

昨天

近7天

近30天

本月

上一月

查询本季度数据

查询上季度数据

查询本年数据

查询上年数据

查询当前这周的数据

查询上周的数据

查询上个月的数据

查询当前月份的数据 

查询距离当前现在6个月的数据

发表在 应用工具软件 | 标签为 , | 留下评论

CentOS 7 使用certbot自动获取证书并配置nginx使用https

  • 前言
  • 第一步,安装并配置nginx
  • 第二步,安装certbot
  • 第三步,配置自动续期

前言

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。—– [百度百科]

https被苹果推荐使用,而小程序强制要求使用,但是购买一个https证书最便宜一年也要2000RMB一个域名,真心感觉贵,当然对于大公司而言只是小意思,小公司还是要变通一下,能省则省,通过百度了解到Let’s Encrypt,可以非常方便的安装证书,配置nginx,以及自动续期,关键是 完全免费 哦!

第一步,安装并配置nginx

  • 安装nginx

  • 修改配置文件

  • 简单配置一个域名的反向代理(配置文件中一定不要有中文,否则第二步的最后一步会失败)

第二步,安装certbot

  • 下载pip

  • 安装pip

  • 安装certbot

  • 安装certbot的nginx插件

  • 自动配置nginx输入以下命令后,会进行一些交互,具体的忘记了,大概是首先要求录入邮箱,然后是是否同意许可,再然后选择要添加证书的域名等,自己好好看看提示,不难理解

第三步,配置自动续期

  • 创建自动续期服务

  • 复制并黏贴以下内容,保存

  • 创建定时器

  • 复制并黏贴一下内容,保存(官方推荐一天两次执行,以确保证书可用,这里选择0/12点)

  • 激活定时器

  • 启动定时

发表在 操作系统相关 | 标签为 | 留下评论

Centos 6.5 中 supervisord 启动脚本

Supervisord是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效。可以将非Daemon的应用转为daemon程序。关于supervisord的安装和配置,在网上已经有很多现成的帖子,我这里就不重复了。

在centos和rhel的环境下,我们一般是用chkconfig来管理服务的启动停止、开机自启动等。下面我列出Supervisord的服务脚本。

1. 执行如下命令:

2.输入如下内容:

注意:该文件中的如下几个变量,都需要根据你实际的目录来改写。

PREFIX=/usr/local

SUPERVISORD=$PREFIX/bin/supervisord      ##supervisord   程序的安装路径

SUPERVISORCTL=$PREFIX/bin/supervisorctl  ##supervisorctl 程序的安装路径

PIDFILE=/var/supervisor/supervisord.pid   ##需要先创建/var/supervisor目录

LOCKFILE=/var/supervisor/supervisord.lock

OPTIONS=”-c /etc/supervisord.conf”   ##配置文件的路径

保存完毕之后,可以执行以下命令修改文件权限:

这样,supervisor就启动了。

3. 配置开机启动

执行以下命令:

可以以下命令查看是否成功

 

文章内容转载自:http://yunjianfei.iteye.com/blog/

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

ASP.NET 将 SQLDatareader 转换成 List

模型中的属性的数据类型支持基本类型(int string 等等)并且包括 枚举类型

模型中的属性名必须与reader中的列名一致,否则不一致的属性无法赋值.

下面是调用示例

 

发表在 CS架构后台语言 | 标签为 | 留下评论

SqlServer 2008 备份集中的数据库备份与现有的xxx数据库不同解决方法

问题描述

今天在配置一个 .net 站点时,导入以前的数据库备份文件,提示:sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法。

  • 数据库: Microsoft SQL Server 2008

问题重现

  • 新建一个数据库,名称与要恢复的数据库名称一致

  • 【数据库】上右键,【还原数据库】


  • 选择刚才新建的空数据库做为【目标数据库】,选择好【源设备】的文件路径,确定,错误重现,如下:

正确操作

  • 直接在【数据库】上右键,选择【还原数据库】
  • 在【还原数据库】界面,配置好【源设备】的路径,【目标数据库】里面自动会出现你需要还原的数据库的名称,选择它
  • 刚才添加的备份集,点击确定即可。

Tips

出现问题时百度,发现很多人遇到,有人提供如下方法,亲测有效:

注释:xxxx是你需要还原的数据库名称,xxxx.bak是你需要还原的备份文件。
上面方法执行成功后,只有部分的表结构已经还原,而且表中没有数据,这时就可以用系统默认的方法再用xxxx.bak文件还原一次数据库就大功告成了,必须要选中覆盖还原哦。

发表在 应用工具软件 | 标签为 | 留下评论

重新编译PHP7使其支持PostgreSQL

安装PostgreSQL

编译PHP增加PostgreSQL扩展

1、先看下之前编译的configure命令。

2、配置编译参数。在上面的configure命令后面加上--with-pdo-pgsql选项。

3、开始编译和安装。

4、安装完成后,检查PHP扩展。

输出里有pdo_pgsql,就表示PostgreSQL的扩展ok了。

发表在 操作系统相关 | 标签为 | 留下评论

ssh连接速度很慢的解决方案

问题:ping目标机速度很快,几乎是微秒级,但是ssh连接时却很慢,需要10几秒甚至更多

解决方案:ssh -v  desm(desm表示目标机的ip或者hostname)
查看终端的输出,看到底停在哪个地方:

此时可以修改本机的ssh_config文件(vim /etc/ssh/ssh_config)
找到GSSAPIAuthentication yes并将其改为GSSAPIAuthentication no
然后重启sshd服务,再看问题是否解决
如果依然存在,继续终端查看

如果停在上面所示的地方,那么,将目标机器的sshd_config的UseDNS yes(这是默认方式)修改为UseDNS no,然后重启目标机的sshd服务,再连,应该是很快的。
发表在 操作系统相关 | 标签为 | 留下评论