[置顶] 如何获取访问密码

本博客采用与微信小程序关联的方式增加了文章密码查询功能。具体方式如下:

1、扫码关注小程序(无需授权)

gh_11d136296ec9_258.jpg

2、输入文章ID

如链接:https://iwonmo.com/archives/1332.html 则文章id为:1332 文章末尾均有提示

3、密码查询

WechatIMG1 1.jpeg

注:对于恶意获取访问密码的请求会自动封禁IP造成无法访问的后果,密码为动态密码,也请您不要轻易删除小程序。另:删除小程序重新添加查询为无效。

[置顶] 一些网站

PHP

PhpBug:https://bugs.php.net/

Zend Framework:https://www.phpfans.net/manu/ZF/

JavaScript

JavaScript图表:https://echarts.baidu.com/examples/

mescroll 下拉控件:http://www.mescroll.com/

Promises:http://wiki.commonjs.org/wiki/Promises

正则工具:https://regexr.com/

ini解析:https://github.com/iwonmo/IniFormat

胶水JS:WASM:http://webassembly.org.cn/

Android

Apk在线反编译:http://www.javadecompilers.com/apk/

Adb:http://adbshell.com/downloads

AI

TensorFlow 国内:http://www.tensorfly.cn/tfdoc/get_started/introduction.html

TensorFlow 官网:https://tensorflow.google.cn/

Numpy:https://www.numpy.org.cn/

游戏

Cocos 引擎:http://docs.cocos.com/creator/manual/zh/

单片机

元器件:https://www.alldatasheetcn.com/

Arduino Mini:https://store.arduino.cc/usa/arduino-pro-mini

Google Chromium PC Frame

nw.js:https://nwjs.io/

Electron:https://electronjs.org/

cef:https://bitbucket.org/chromiumembedded/cef/src/master/

设计学习

doyoudo:http://www.doyoudo.com/



PS/2焊盘引脚

微信图片_20200116171611.png

关于焊盘引脚实际就是颠倒过来,例如插座如下图:

未完待续:关注下方微信小程序获取访问密码 (文章ID:1685)提交后刷新页面

电路板最小系统制作

由于这个板子是以前一直焊废,所以画来测试的,没想到成功了。这也让我找到了以前为什么老是失败的原因:焊枪温度过高,导致芯片损坏。这次换了个低温度的焊枪,一次成功。(有一次是芯片问题,无法稳定ICSP)。有人问我做来干嘛,实际我也不知道,后续应该会依据这个板子在画一些其他的电路做一些小的试验吧。

电路图:

屏幕快照 2020-01-11 上午1.11.28.png

未完待续:关注下方微信小程序获取访问密码 (文章ID:1664)提交后刷新页面

cropper.js 视频截图

3336.gif

Cropper是一个裁剪图片的插件,稍微修改也可以用到视频上。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="css/cropper.css">
    <script src="jquery.min.js"></script>
    <script src="js/cropper.js"></script>
    <style>
        img {
            max-width: 100%;
        }
        body {
            margin: 0;
            padding: 0;
        }
        .fg {
            height: 240px;
            width: 320px;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <!-- muted 加上静音 防止噪声 -->
    <video muted id="videos" width="320" height="240" controls="controls" autoplay="autoplay" loop="loop">
        <source src="movie.ogg" type="video/ogg">
    </video>
    <div>
        <img id="image" src="1.png">
    </div>
    <button>裁剪</button>
    <canvas width="320" height="240"></canvas>
</body>
<script>
    $(".btn").click(function () {
        ctx.clearRect(0, 0, 1000, 1000);
        $data = $('#image').cropper('getCropBoxData', true);
        console.log($data);
        ctx.drawImage(video, $data.left, $data.top, $data.width, $data.height, 0, 0, $data.width, $data.height);
    })
</script>
<script>
    var canvas = document.querySelectorAll('canvas')[0];
    var ctx = canvas.getContext('2d');
    var video = document.getElementById('videos');
</script>
<script>
    var $image = $('#image');
    $image.cropper({
        viewMode: 3,
        aspectRatio: 16 / 9,
        crop: function (e) {
            video.play();
        }
    }); 
    var cropper = $image.data('cropper');
</script>
</html>

注意这里有一个1.png这是一张透明图片。另外JS也需要修改。

var TEMPLATE = '<div class="cropper-container" touch-action="none">' 
+ '<div style="display: none" class="cropper-wrap-box">' 
+ '<div class="cropper-canvas"></div>' 
+ '</div>' 
+ '<div class="cropper-drag-box" style="display: none"  ></div>' 
+ '<div class="cropper-crop-box">' 
+ '<span class="cropper-view-box"></span>' 
+ '<span class="cropper-dashed dashed-h"></span>' 
+ '<span class="cropper-dashed dashed-v"></span>' 
+ '<span class="cropper-center"></span>' 
+ '<span class="cropper-face"></span>' 
+ '<span class="cropper-line line-e" data-cropper-action="e"></span>' 
+ '<span class="cropper-line line-n" data-cropper-action="n"></span>' 
+ '<span class="cropper-line line-w" data-cropper-action="w"></span>' 
+ '<span class="cropper-line line-s" data-cropper-action="s"></span>' 
+ '<span class="cropper-point point-e" data-cropper-action="e"></span>' 
+ '<span class="cropper-point point-n" data-cropper-action="n"></span>' 
+ '<span class="cropper-point point-w" data-cropper-action="w"></span>' 
+ '<span class="cropper-point point-s" data-cropper-action="s"></span>' 
+ '<span class="cropper-point point-ne" data-cropper-action="ne"></span>' 
+ '<span class="cropper-point point-nw" data-cropper-action="nw"></span>' 
+ '<span class="cropper-point point-sw" data-cropper-action="sw"></span>' 
+ '<span class="cropper-point point-se" data-cropper-action="se"></span>' 
+ '</div>' 
+ '</div>';

这里主要是增加了display:none。隐藏掉一些控件自带的背景。

CSS也需要修改 .cropper-bg 去掉background-image属性。

php 昨天 上周 上月

昨天

$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;

上周

$array = ["7","1","2","3","4","5","6"];
$time=date("w",time( ));
$beginYesterday=strtotime(date('Y-m-d',strtotime('-'.($array[$time]+6).' day')));
$endYesterday=$beginYesterday+604800-1;

上月

$beginYesterday= strtotime(date('Y-m', strtotime('last month')));
$endYesterday=strtotime(date("Y-m-d 23:59:59", strtotime(-date('d').'day')));


注意:date_default_timezone_set

复位电路

复位电路图

屏幕快照 2019-12-06 下午8.42.27.png

5V的电压下来以后,经过电容到达电阻。此时电阻两端的电压接近5V,电容近似0V,由于电阻和REST引脚并联,根据并联分流不分压原理,所以此时REST也是5V是一个高电平的电压。随着时间的推移(这个时间非常快)电容开始充电,电容两端的电压在不断增大,根据串联分压原理,电阻两端的电压则不断减小。所以REST引脚又变成了低电平的电压,达到复位目的。当左侧开关按下,电容被短接,电容两端电流为0,这个的原因是因为开关和电容此时相当于并联,并联分压,而开关的电阻和理想导线的电阻趋近于0但又不是0这点要注意,由于左侧开关电路的电阻很小,根据V=RI,所以电流非常大,接近于最大。而根据并联分流原理,所以此时电容的电流非常小,接近于最小,所以可以近似的认为电容两端为电流为0,电流经过电阻,所以此时的电阻两端电压又无限接近于5V,并联不分压原理,此时REST又是一个高电平,注意这些操作进行的时候电容是在放电状态(电容充满后会进行放电)当开关打开,电容又开始充电,然后还是一个高电平,经过充电结束,电阻变成低电平,趋近0V,所以又达到复位目的。一般充电时间非常短暂,但是也需要达到REST引脚的复位时间才可以,这个需要看具体的芯片手册REST上规定的复位时间。这个时间可以通过调整电容与电阻来进行时间调整。有时候会再接一个二极管,这是为了当5V不再供电的时候,电容的电压能够得到立马释放,防止REST进行复位。