BoxCore

Start


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 搜索

Windows下共享WiFi

发表于 2018-02-12 | 分类于 linux | | 阅读次数
1
2
3
4
netsh wlan set hostednetwork mode=disallow # 关闭
netsh wlan set hostednetwork mode=allow ssid=CMCC_free key=abc654321
netsh wlan stop hostednetwork
netsh wlan start hostednetwork

使用htpasswd设置web密码

发表于 2018-02-08 | 分类于 linux | | 阅读次数

网页验证密码可以通过nginx的ngx_http_auth_basic_module模块进行配置,但生产账号和密码则需要用到htpasswd这个工具

一、安装htpasswd

1
2
3
yum -y install httpd-tools # centos安装
htpasswd -c /usr/local/nginx/passwd $USER_NAME

二、使用

htpasswd支持的参数如下:

  • -c: 创建一个加密文件
  • -n: 不更新加密文件,只将htpasswd命令加密后的用户名密码显示在屏幕上
  • -m: 默认htpassswd命令采用MD5算法对密码进行加密
  • -d: htpassswd命令采用CRYPT算法对密码进行加密
  • -p: htpassswd命令不对密码进行进行加密,即明文密码
  • -s: htpassswd命令采用SHA算法对密码进行加密
  • -b: htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
  • -D: 删除指定的用户

2.1 htpasswd密码配置

利用htpasswd命令添加用户: htpasswd -bc ./.passwd username pass
在原有密码文件中增加下一个用户: htpasswd -b ./.passwd onlyzq pass
利用 htpasswd 命令修改密码: htpasswd -D .passwd username 或指定密码 htpasswd -b .passwd username pass
用htpasswd命令删除用户名和密码: htpasswd -D .passwd username

2.2 在nginx中启用密码访问

1
2
3
4
5
6
7
8
server {
listen 80;
server_name localhost;
... ...
auth_basic "Please input password";
auth_basic_user_file /usr/local/nginx/passwd;
...
}

Resilio Sync使用

发表于 2018-02-07 | | 阅读次数

一、安装

1.1 linux下安装rslsync

1
2
3
4
5
6
# centos
rpm --import https://linux-packages.resilio.com/resilio-sync/key.asc
yum update
yum install resilio-sync
ll
rslsync --webui.listen 0.0.0.0:8888

Linux文件操作命令之获取当前目录

发表于 2018-02-05 | | 阅读次数

readlink

readlink– help
用法:readlink【选项】… 文件输出符号链接值或权威文件名。

  • -f, --canonicalize 递归跟随给出文件名的所有符号链接以标准化,除最后一个外所有组件必须存在
  • -e, -- canonicalize-existing 递归跟随给出文件名的所有符号链接以标准化,所有组件都必须存在
  • -m, -- canonicalize-missing 递归跟随给出文件名的所有符号链接以标准化,但不对组件存在性作出要求
  • -n, --nonewline 不输出尾随的新行
  • -q; quiet,
  • -s, --silent 缩减大多数的错误消息
  • -v, --verbose 报告所有错误消息
  • --help 显示此帮助信息并退出
  • --version 显示版本信息并退出
1
2
3
SHELL_FOLDER=$(dirname $(readlink -f "$0")) #最佳方案
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
SHELL_FOLDER=$(dirname "$0") # 不一定是绝对路径

PHP CURL使用

发表于 2018-02-01 | 分类于 php | | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:111.222.333.4', 'CLIENT-IP:111.222.333.4')); // 伪造IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.test.com"); // 伪造来源
curl_setopt($ch, CURLOPT_PROXY, "http://111.222.333.4:110"); // 使用代理访问
curl_setopt($ch,CURLOPT_ENCODING , "gzip"); // 解开gzip网页文件
function gunzip($zipped) {
$offset = 0;
if (substr($zipped,0,2) == "\x1f\x8b")
$offset = 2;
if (substr($zipped,$offset,1) == "\x08") {
# file_put_contents("tmp.gz", substr($zipped, $offset - 2));
return gzinflate(substr($zipped, $offset + 8));
}
return "Unknown Format";
}
$headers_enabled = 1;
curl_setopt($c, CURLOPT_HEADER, $headers_enabled)
$ret = curl_exec($c);
if ($headers_enabled) {
# file_put_contents("preungzip.html", $ret);
$sections = explode("\x0d\x0a\x0d\x0a", $ret, 2);
while (!strncmp($sections[1], 'HTTP/', 5)) {
$sections = explode("\x0d\x0a\x0d\x0a", $sections[1], 2);
}
$headers = $sections[0];
$data = $sections[1];
if (preg_match('/^Content-Encoding: gzip/mi', $headers)) {
printf("gzip header found\n");
return gunzip($data);
}
}
return $ret;

参考

  • Decode gzipped web page retrieved via cURL in PHP
  • curl_setopt

PHP INI配置

发表于 2018-02-01 | 分类于 php | | 阅读次数

ini_set相关

配置时区

  • 配置文件:date.timezone = Asia/Shanghai
  • php文件中配置:date_default_timezone_set('Asia/Shanghai'); 和 ini_set('date.timezone','Asia/Shanghai');;

Awesome PHP

发表于 2018-01-31 | | 阅读次数

操作类

DB操作类

  • PHP Mysqli 操作类

网络工具

  • php Ping 检查

开源系统

  • WeMall商城: wemall7.0 开源系统,基于thinkphp5开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。同类的用node.js开发的如wemall

Awesome API

发表于 2018-01-31 | | 阅读次数

API标准

API测试工具

  • RAP2: 阿里妈妈前端团队出品的开源接口管理工具RAP第二代 http://rap2.taobao.org

Linux之文件查找find

发表于 2018-01-30 | 分类于 linux | | 阅读次数

一、find基础说明

find [dir] [param] [match]

  • -print0 : 不换行输出内容,也可以理解\0 是定界符

二、find使用

2.1 使用文件名查找文件

1
2
find -name "MyCProgram.c" #
find -iname "MyCProgram.c" # 忽略大小写查找

2.2 使用mindepth和maxdepth限定搜索指定目录的深度

1
2
3
find / -maxdepth 2 -name passwd
find / -maxdepth 3 -name passwd
find / -mindepth 3 -maxdepth 5 -name passwd

2.3 在find命令查找到的文件上执行命令

// 搜索后 {}将会被当前文件名取代

find -iname “MyCProgram.c” -exec md5sum {} \;

2.4 相反匹配

find -maxdepth 1 -not -iname “MyCProgram.c”

2.5 使用inode编号查找文件

列子:

1
2
3
4
5
6
7
touch "test-file-name"
touch "test-file-name " //注意有空格
ls -i1 test* //查看两个文件
find -inum 16187430 -exec mv {} new-test-file-name \; # 重命名特殊的文件名
find -inum 804180 -exec rm {} \; # 使用inode编号来删除那些具有特殊符号的文件名

2.6 根据文件权限查找文件

找到当前目录下对同组用户具有读权限的文件,忽略该文件的其他权限

find . -perm -g=r -type f -exec ls -l {} \;

找到对组用户具有只读权限的文件

find . -perm g=r -type f -exec ls -l {} \;

找到对组用户具有只读权限的文件(使用八进制权限形式)

find . -perm 040 -type f -exec ls -l {} \;

2.7 找到home目录及子目录下所有的空文件(0字节文件)

1
2
3
find ~ -empty
find . -maxdepth 1 -empty
find . -maxdepth 1 -empty -not -name ".*" # 只列出当年目录下的非隐藏空文件

2.8 按照文件大小进行查找

1
2
3
4
5
6
7
find . -type f -exec ls -s {} \; | sort -n -r | head -5 # 查找5个最大的文件
find . -type f -exec ls -s {} \; | sort -n | head -5 # 查找5个最小的文件
find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5
find ~ -size +100M //查找比指定文件大的文件
find ~ -size -100M //查找比指定文件小的文件
find ~ -size 100M //查找符合给定大小的文件

2.9 按照文件类型进行查找

1
2
3
4
5
find . -type s //只查找socket文件
find . -type d //查找所有的目录
find . -type f //查找所有的一般文件
find . -type f -name ".*" //查找所有的隐藏文件
find -type d -name ".*" //查找所有的隐藏目录

2.10 通过和其他文件比较修改时间查找文件

显示在指定文件之后做出修改的文件。下面的find命令将显示所有的在ordinary_file之后创建修改的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ls -lrt
-----------------------------------
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all
----------------------------------
find -newer ordinary_file
----------------------
.
./everybody_read
./all_for_all
./no_for_all
----------------------

2.11 给常用find操作取别名

若你发现有些东西很有用,你可以给他取别名。并且在任何你希望的地方执行。
常用的删除a.out文件。
alias rmao=”find . -iname a.out -exec rm {} \;”
rmao

删除c程序产生的core文件。

alias rmc=”find . -iname core -exec rm {} \;”
rmc

2.12 用find命令删除大型打包文件

find / -type f -name .zip -size +100M -exec rm -i {} \;”
//用别名rm100m删除所有大雨100M的
.tar文件
alias rm100m=”find / -type f -name *.tar -size +100M -exec rm -i {} \;”
alias svnadmin=”/usr/local/subversion/bin/svnadmin”

2.13 查找某个字符串在目录下出现次数

1
find <directory> -type f -name "*.php" | xargs grep "<strings>"

是你要找的文件夹;如果是当前文件夹可以省略-type f 说明,只找文件-name “*.c” 表示只找C语言写的代码,从而避免去查binary;也可以不写,表示找所有文件是你要找的某个字符串

2.14 [重要]删除空文件或者目录

删除空目录:

find . -type d -empty | xargs -n 1 rm -rf

删除空文件:

find . -name “*” -type f -size 0c | xargs -n 1 rm -f

参考文档

  • 妈咪,我找到了!15个实用的Linux find命令示例

读书《PHP实战》

发表于 2018-01-25 | 分类于 books | | 阅读次数

Preview

Content

第一部分:工具和概念

第一部分中的几章循序渐进,从 PHP 面向对象编程的具体细节讲到面向对象应用程序设计这个更抽象的主题。

  • 第 1 章介绍并讨论了 PHP 和敏捷实践的利弊。
  • 第 2 章和第 3 章解释 PHP 面向对象编程的机制和语法。尽管对象和类是难以分割的东西,但是第 2 章主要关注对象的特性,而第 3 章则重点关注类。
  • 第 4 章讨论了对象和类的概念好在哪里,它们如何与现实世界产生联系,以及如何区分面向对象设计的优劣。
  • 第 5 章讨论最基本的类的关系一继承、关联和组合,以及程序设计中接口的作用。
  • 第 6 章开始我们正式探索面向对象设计,将面向对象理论作为设计的指导思想。
  • 第 7 章介绍设计模式再现常见设计问题的解决方案,并且描述一些最常见的问题。
  • 第 8 章介绍设计原则和模式在处理日期和时间时的另一种应用。

第一部分 工具和概念

第1章 PHP与现代软件开发

1.1

作者写这本书时是php5.3版本,而现在php版本已经到7.2了,所以里面有不少东西是“过时”的,最大的特点是他在描述php的优点和缺点时,更加凸显出php社区变化之快。至少现在看,里面有不少观点是不可苟同的了。对于此我这边来整理下我所理解的PHP缺点:

  1. 缺少类型安全
    由于php的松散类型,导致了php写程序的时候要做很多安全的判断,不然就当韭菜了,典型的一个例子如, 在编程的时候不应该使用如下的这段代码:
    1
    2
    3
    if(intval($a)>1000) {
    mysql_query("select * from news where id=".$a)
    }

这个时候$a的值有可能是1002 union…..

不像c、java那样需要严格定义好类型的php,注定写代码的时候多留点心眼咯!

另外有其他缺点补充的欢迎评论区说明!

1.2

先引用问中的一段话把:

本节将简略介绍敏捷开发[^xp]和面向对象设计中最重要的思想。我们将介绍设计模式、重构和单元测试,了解它们的工作原理以及如何互相配合,并能开始看到如何在 PHP 中实现它们。

虽然有点不太通顺,但这句话感动了我,让我有看下去的冲动了!作者先是权衡了【敏捷开发】和 普通开发的思路,但这些都不是最解决问题的理想方法。他承诺了一句: 我们开出的成功处方是将最佳方法与最好的软件工具相结合,而在我们看来,最好的软件工具就是 PHP。下面我们看一下 PHP 5 是如何与方法论联系起来的。。好,让我们拭目以待!

敏捷开发的一些基本元素之间的彼此依赖关系如下:

图 1-6 敏捷开发的一些基本元素之间的彼此依赖关系

ch1相关参考

  • 浅析C++中的is-a和has-a关系(公有继承、包含、私有继承)
  • Is-a

第2章 PHP中的对象


[^xp]敏捷方法论【如极限编程(Extreme Programming, XP)】尝试着用这样的方式来解决这个问题:只进行较少的前期设计,确保一直能够对设计进行更改,并使用重构(refactoring)这样一套系统的过程来不断改善代码的结构。
[^TDD]TDD(test-driven development,测试驱动开发)或测试先行开发(test-first develop- pment)

1…789…26
Zack Hwang

Zack Hwang

Go

257 日志
42 分类
76 标签
RSS
Links
  • 小白博客
  • 我的书单
© 2018 Zack Hwang
由 Hexo 强力驱动
主题 - NexT.Muse
又拍云