Posted on

php爬虫采集填坑

大多数早期的个人站长应该都听说过火车头采集器这款软件吧?当年做个人网站和seo的风潮正兴,但是没有内容是个大问题,而且个人站长主要专注于运营,对技术关注度不高,于是火车头这类傻瓜式的采集软件才会兴起。

现在各类编程语言都可以写爬虫来采集内容入库,好处是定制化程度、效率和灵活度比较高。这次用php来采集,主要使用了snoopy这个类、preg函数和正则表达式。

1.出现乱码问题,使用mb_convert_encoding转换为utf-8

2.snoopy类的用法,

include "Snoopy/Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->fetch("http://url");
$out = $snoopy->results;

3.正则表达式

推荐《正规表达式必知必会》

Posted on

卫星天线方位角、仰角、极化角的javascript算法实现

var Radian=Angle*(Math.PI/180);     //角度转换为弧度

var Angle=Radian*(180/Math.PI);    //弧度转换为角度

double x = atan(tan(LongitudeOfSatellite - LongitudeOfReceivStation) / sin(LatitudeForReceivStation));
x=180 - RadianToAngle(x) ; //方位角

double a = cos(LongitudeOfSatellite - LongitudeOfReceivStation) * cos(LatitudeForReceivStation);
double b = 1.0f - powf(a, 2.0f);
b=sqrt(b);
a=a - 0.1512695;
double x =(a / b);
x=atan(x);
x=RadianToAngle(x); //仰角

double x = atan(sin(LongitudeOfSatellite - LongitudeOfReceivStation) / tan(LatitudeForReceivStation));
x=RadianToAngle(x); //极化角,逆时针为负

Posted on

树莓派安装lede当无线路由器

下载
进入
http://downloads.lede-project.org/releases/17.01.4/targets/brcm2708/
bcm2708是给第一代的,bcm2709给第二代,bcm2710就是给RPi3的
http://downloads.lede-project.org/releases/17.01.4/targets/brcm2708/bcm2710/lede-17.01.4-brcm2708-bcm2710-rpi-3-ext4-sdcard.img.gz
写入sd卡
在win下使用win32diskimager把下载的img文件写入到sd卡中
配置网络
wan口使用pppoe拨号,wifi使用内置无线网卡
安装ss
进入system-software  搜索shadowsocks-libev-mbedtls

Posted on

laravel的虚拟机Homestead安装

1,安装virtualbox和vagrant
2.下载homestead的box.
官方的命令 vagrant box add laravel/homestead 不建议使用
因为直接使用vagrant下载太慢,所以建议用下载工具下载
3.下载homestead配置
git clone https://github.com/laravel/homestead.git Homestead
在cmd下运行init.bat
4.生成一对rsa密钥,在Homestead.yaml文件中指定公钥
5.安装homestead.box
新建一个homestead.json文件

{
"name": "laravel/homestead",
"versions": [{
"version": "2.1.0",
"providers": [{
"name": "virtualbox",
"url": "file://homestead.box"
}]
}]
}

接着运行命令:
vagrant box add homestead.json
启动虚拟机:
vagrant up

Posted on

virtualbox安装macOS Sierra开发环境

1.安装virtualbox
2.下载macOS 10.12 Sierra Final by TechReviews.vmdk
新建虚拟机,使用下载好的虚拟硬盘文件,内存选择4g以上,cpu选择2核,去掉软驱,显存设置为128mb。
使用管理员权限打开cmd,输入下面命令

cd “C:\Program Files\Oracle\VirtualBox\”
VBoxManage.exe modifyvm “MacOS” –cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata “MacOS” “VBoxInternal/Devices/efi/0/Config/DmiSystemProduct” “iMac11,3”
VBoxManage setextradata “MacOS” “VBoxInternal/Devices/efi/0/Config/DmiSystemVersion” “1.0”
VBoxManage setextradata “MacOS” “VBoxInternal/Devices/efi/0/Config/DmiBoardProduct” “Iloveapple”
VBoxManage setextradata “MacOS” “VBoxInternal/Devices/smc/0/Config/DeviceKey” “ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc”
VBoxManage setextradata “MacOS” “VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC” 1

然后启动虚拟机,开始安装系统

Posted on

支付宝接口研究

我自己要做一个支付接口,于是看看业内的最佳实践支付宝是怎么做的。
1.商户系统用get或者post方式请求支付宝api
2.用户在支付宝系统上支付完成后,get请求商户url,同时post请求商户url,返回异步参数
3.商户系统还可以通过支付宝api查询支付情况
所以支付宝接口接受一次输入,有2次输出,还提供一个查询api。

Posted on

php中的pdo用法

1.设置DSN(数据源名称)

$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

2.执行queries

$stmt = $pdo->query('SELECT name FROM users');
while ($row = $stmt->fetch())
{
    echo $row['name'] . "\n";
}

3.预防sql注入

2种写法:

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ? AND status=?');
$stmt->execute([$email, $status]);
$user = $stmt->fetch();
// or
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email AND status=:status');
$stmt->execute(['email' => $email, 'status' => $status]);
$user = $stmt->fetch();

 

Posted on

mysql基础

1.关系数据库优点:

比普通文件的数据访问速度快。
更容易查询并提取满足特定条件的数据
有专门的内置机制处理并发访问。
可以提供对数据的随机访问。
具有内置的权限系统。
表格:关系数据库由关系组成,这些关系通常称为表格。
列:表中的每一列都有唯一的名称,包含不同的数据。每一列都有一个数据类型。
行:每一行代表一条记录。
键:标识每一个特定记录的方法。
模式:数据库整套表格的完整设计称为数据库的模式。它是数据库的设计蓝图。
关系:外键表示两个表格数据的关系。
三种基本关系:一对一、一对多、多对多。

2.设计数据库

考虑建模的实际对象:当创建一个数据库时,我们经常为现实世界的实体和关系建立模型,并且存储这些实体对象与关系的信息。
避免保存冗余信息:1.空间浪费。2.导致数据更新不一致
使用原子列值:每一行的每个属性只存储一个数据。
选择有意义的键。
考虑要询问数据库的问题。
避免多个空属性的设计。
表格类型的总结:
1.描述现实世界的简单表。这些表也可能包含其他简单对象的键,他们之间有一对一或一对多的关系。
2.描述两个现实世界对象的多对多关系的关联表。

Posted on

安装laravel

1,安装composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

移动到PATH目录:

mv composer.phar /usr/local/bin/composer

2.安装laravel

composer global require "laravel/installer"

设置环境变量:

echo $PATH
export PATH=$PATH:/home/ubuntu/.config/composer

新建一个laravel程序:

laravel new blog