如何在图片中加入压缩文件

简单来说就是利用copy命令。
copy /b src.jpg + src.rar dest.jpg
其中,src.jpg与dest.jpg显示的图像是一样的,当你将dest.jpg的后缀修改为rar,dest.rar解压的内容与src.rar的内容一致。

原理:
图片格式,例如jpg,bmp都是文件头设置好文件的类型以及文件长度,所以其后面的冗余不会被读出。 rar格式很特别,它运行时是先寻找rar文件的起始位置(因此可以排除开头的冗余),然后读取其后的所有data作为文件体。 所以图片在前,rar在后,则他们可以独立的读取出来。

分类至 杂项
0条评论

composer命令介绍之install和update及其区别

composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?

分类至 PHP
0条评论

命令行技巧:使用 find 和 xargs 查找和处理文件

find 是日常工具箱中功能强大、灵活的命令行程序之一。它如它名字所暗示的:查找符合你指定条件的文件和目录。借助 -exec-delete 之类的参数,你可以让它对找到的文件进行操作。

在命令行提示系列的这一期中,你将会看到 find 命令的介绍,并学习如何使用内置命令或使用 xargs 命令处理文件。

分类至 Linux
1条评论

linux增加虚拟内存

1. 建立虚拟内存

找一个较大的空间

df -h

建立swap文件,大小2G

dd if=/dev/zero of=swapfile bs=1024000 count=2000

2. 启用虚拟内存

将swap文件设置为swap分区文件

mkswap swapfile

激活swap,启用分区交换文件

swapon swapfile

注意:insecure permissions 0644, 0600 suggested.

chmod 600 swapfile

分类至 Linux
0条评论

移动端调试vConsole

平时web开发时,在手机上,如果是要看控制台信息,都需要alert弹窗,这样很不友好.还会阻拦进程。

通过vConsole.js 重写console方法,实现了类似于微信小程序的移动端调试效果。

具体使用方法也很简单

<script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script>
<script>
    // init vConsole
    var vConsole = new VConsole();
    console.log('Hello world');
</script>

vConsole 项目地址:https://www.npmjs.com/package/vconsole 

分类至 杂项
0条评论

PHP 运算符“...”

PHP 5.6.x 以后的版本增加了“...”运算符,功能如下。

1. 使用 ... 运算符定义变长参数函数

现在可以不依赖 func_get_args(), 使用 ... 运算符 来实现 变长参数函数

<?php
function f($req, $opt = null, ...$params) {
    // $params 是一个包含了剩余参数的数组
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
?>

以上例程会输出:

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2
$req: 1; $opt: 2; number of params: 3

2. 使用 ... 运算符进行参数展开

在调用函数的时候,使用 ... 运算符, 将 数组 和 可遍历 对象展开为函数参数。 在其他编程语言,比如 Ruby中,这被称为连接运算符。

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);
?>

以上例程会输出:

6

3. PHP 7.4 打包内部数组

PHP 7.4.0 使用 ... 可以打包内部数组,跟 es6 的语法很像:

<?php
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>

 

分类至 PHP
0条评论

【干货】Chrome插件(扩展)开发全攻略

我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处。本文所有涉及到的大部分代码均在这个demo里面:https://github.com/sxei/chrome-plugin-demo ,大家可以直接下载下来运行。

另外,本文图片较多,且图片服务器带宽有限,右下角的目录滚动监听必须等到图片全部加载完毕之后才会触发,所以请耐心等待加载完毕。

分类至 杂项
0条评论

JS 逗号操作符

逗号操作符  对它的每个操作数求值(从左到右),并返回最后一个操作数的值。

示例代码:

var x = 1;

x = (x++, x);

console.log(x);
// 输出: 2

x = (2, 3);

console.log(x);
// 输出: 3

另一种用法:

var obj = {
  fun: function () {
    console.log(this === window, this === obj);
  }	
};

obj.fun();
// 输出: false true

(0, obj.fun)();
// 输出: true false

var test = obj.fun;
test();
// 输出: true false

上面的代码中,(0, obj.fun)();等同于var test = obj.fun; test();,前者可以少引入一个临时变量。

参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comma_Operator

分类至 JS/CSS
0条评论

解决 SheetJS 日期时间类型显示多出43秒的问题

最近在优化后台数据导出功能,把原先后台生成 Excel 的功能(PhpExcel太吃内存),改用 ajax 加载每页数据然后前端 JS 生成 Excel。

找到一个前端生成 Excel 的类库 SheetJS:https://github.com/SheetJS/js-xlsx,以及一篇使用介绍的博文:https://www.cnblogs.com/liuxianan/p/js-excel.html

在导出日期时间的数据列时,想当然的使用了 Date 类型,然后设置显示格式为 yyyy-mm-dd hh:mm:ss。可是最终结果却显示有偏差,莫名比原来的值多了43秒。

搜索了一下这个问题,发现早有人在 github 上提出来:https://github.com/SheetJS/js-xlsx/issues/1470。细看 SheetJS 官方的 README.md,其实这不算是一个 BUG,而是因为 Excel 采用了不同的时间显示方式,跟时区有一定关系。

解决这个问题最快的办法就是,遇到日期时间的数据列,直接使用 String 类型导出就好,不要用 Date。

但是这样会有一个问题,String 列无法像 Date 列一样做筛选。

那有没有一个完美的解决方案呢?有两个办法。

第一种:根据时区判断,在导入的日期时间值上减去差值。如我们的北京时间要减去43秒,最终显示到 Excel 上就不会有偏差了。

第二种:一个变通的方法,使用 Excel 公式拼接日期和时间,跳过时区的转换过程。如原始值 2019-08-12 14:50:10,用公式拼接:=DATEVALUE("2019-08-12")+TIMEVALUE("14:50:10")

分类至 JS/CSS
0条评论

error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

前段时间把服务器的 OpenSSL 升级了到 1.1.1c 版本,今天安装 Composer 的时候报错了!

报错的指令为:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

PHP 的错误日志记录如下:

PHP Warning:  copy(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in Command line code on line 1
PHP Warning:  copy(): Failed to enable crypto in Command line code on line 1
PHP Warning:  copy(https://getcomposer.org/installer): failed to open stream: operation failed in Command line code on line 1

经检查,报错是因为无法验证 CA 证书。

分类至 PHP
0条评论