小程序动态修改页面的高度

背景 一个 tab 页面,每个页面的背景色是 #f4f4f4 数据都是动态的,数据会越来越多。当数据没有撑满屏幕的高度时,为了保证最外层的view的背景色是 #f4f4f4 。高度必须是屏幕高度的100%也就是100vh。如果数据撑开屏幕的高度的话,最外层view给高度可以是 auto 或者是 100% 。 实现 let that = this; wx.getSystemInfo({ success: function (res) { // 获取可用高度px let windowHeight = res.windowHeight; let tabsHeight, grounpHeight; console.log(res.windowHeight); let query = wx.createSelectorQuery(); query.select('#order-grounp').boundingClientRect(); query.exec(function (res) { // 获取order-grounp的高并赋值 grounpHeight = res[0].height; let query1 = wx.createSelectorQuery(); query1.select('#tabs').boundingClientRect(); query1.exec(function (res) { // 获取tabs的高并赋值 tabsHeight = res[0].height; console.log('tabsHeight' + tabsHeight); console.log('grounpHeight' + grounpHeight); if ((windowHeight - tabsHeight) > grounpHeight){ that.setData({ _height: '100vh' }) }else{ that.setData({ _height: '100%' }) } }); }); } })

July 9, 2018 · 1 min · 84 words · Norman Wang

MSDN API分享

声明一下:这个api是我抓包抓到的,因为平时经常给别人装机下载镜像,所以经常在这里下载。 获取资源列表id 请求URL https://msdn.itellyou.cn/Category/Index` 请求方式 POST 参数 参数名 类型 备注 id string 分类id id可选值: 描述 分类id 企业解决方案 aff8a80f-2dee-4bba-80ec-611ac56d3849 MSDN 技术资源库 23958de6-bedb-4998-825c-aa3d1e00d097 工具和资源 95c4acfd-d1a6-41fe-b14d-a6816973d2aa 应用程序 051d75ee-ff53-43fe-80e9-bac5c10fc0fb 开发人员工具 fcf12b78-0662-4dd4-9a82-72040db91c9e 操作系统 7ab5f0cb-7607-4bbe-9e88-50716dc43de6 服务器 36d3766e-0efb-491e-961b-d1a419e06c68 设计人员工具 5d6967f0-b58d-4385-8769-b886bfc2b78c 返回值 [ { id: "id值", name: "具体名字" } ] 获取资源列表语言id 请求URL https://msdn.itellyou.cn/Category/GetLang 请求方式 POST 参数 参数名 类型 备注 id string 语言id 返回值 { status: true, result: [ { id: "语言id", lang: "语言描述" } ] } 获取资源列表信息 请求URL https://msdn.itellyou.cn/Category/GetList 请求方式 POST 参数 参数名 类型 备注 id string 分类id lang string 语言id filter boolean 默认true 返回值 { status: true, result: [ { id: "资源具体id", name: "资源名字", post: "资源发布时间", url: "资源下载地址" } ] } 获取具体资源下载信息 请求URL https://msdn.itellyou.cn/Category/GetProduct 请求方式 POST ...

July 8, 2018 · 1 min · 146 words · Norman Wang

BilibiliVideoDownload v1.4.0 添加EP下载功能

BilibiliVideoDownload PC端下载bilibili视频(Material Design风格) 版本 v1.4.1 2018-09-15 输入URL即可获取视频详情 v1.4.0 2018-06-26 添加EP下载功能,使用nginx做反向代理 注:由于技术有限,目前av,ep下载的视频都是320p location /bangumi/ { proxy_pass https://www.bilibili.com; } v1.3.1 2018-06-16 修复弹幕获取失败,使用nginx做反向代理 location /comment/ { rewrite ^/comment/(.*)$ /$1 break; proxy_pass https://comment.bilibili.com; } v1.3.0 2018-05-14 用Vue.js重构 v1.2.1 2017-12-21 获取视频弹幕消息,去除视频背景 v1.2.0 2017-12-3 更换全新MDUI框架,添加视频背景,优化js代码 MDUI 是一套用于开发 Material Design 网页的前端框架 v1.1.3 2017-12-1 修复获取视频信息失败,由于9bl.bakayun.cn网站维护导致api失效,现已使用bilibili官方api接口,更稳定 v1.1.2 2017-11-11 修复下载地址错误,取消备用下载 v1.1.1 2017-11-10 修复视频格式显示错误 v1.1.0 2017-11-05 实现分P下载 注:由于api请求限制,目前只可以手动输入分p数获取分p下载链接。分p数为阿拉伯数字 v1.0.1 2017-10-24 优化了视频封面的获取方法 v1.0.0 2017-10-21 实现了基本功能 演示 演示地址 点击查看 实现的功能 获取视频直链 获取视频大小和时长 获取视频封面 获取视频标题up主名字 获取分p下载链接 获取视频弹幕信息 已知的问题 由于使用了国外(Images.weserv.nl)的图片缓存代理,封面获取较慢。用图片缓存代理是为了突破b站视频封面域名限制,直接调用会出现403 edge chrome正常,ff ie有问题 API接口 http://api.bilibili.com/view?type=jsonp&appkey=8e9fc618fbd41e28&id=AV号&page=1&callback=fn http://api.bilibili.com//playurl?aid=AV号&page=分P号&platform=html5&quality=1&vtype=mp4&type=jsonp&callback=fn&token=d3bd9275f0f2cda07f2406740db06c5d 感谢 Images.weserv.nl图片缓存代理 https://github.com/andrieslouw/imagesweserv

July 1, 2018 · 1 min · 84 words · Norman Wang

Express.js通过Sequelize.js连接MySQL数据库

创建连接 const Sequelize = require('sequelize'); const sequelize = new Sequelize('数据库名', '数据库账号', '数据库密码', { host: '主机名', dialect: 'mysql', port: '端口', operatorsAliases: false, timezone: '+08:00', // 时区,中国+8 pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } }); sequelize .authenticate() .then(() => { console.log('***数据库连接成功'); }) .catch(err => { console.error('数据库连接失败:', err); }); module.exports = sequelize; 建立模型 const Sequelize = require('sequelize'); const db =require('./db'); // 创建 model let 变量名 = db.define('表名', { 字段名: { type: Sequelize.STRING // string类型 } }); module.exports = 变量名 基本使用 增 模型名.create(data) .then(createRes => { res.json({ code: '1', msg: '创建成功', data: { result: createRes } }) } .catch(err => { console.log(err); }) 删 模型名.destroy({ where: {id: pid} }) .then(res => { console.log(res); }) .catch(err => { console.log(err); }) 改 模型名.update(data,{ where: {id: pid} }) .then(updateRes => { res.json({ code: '1', msg: '修改成功', data: { result: updateRes } }) }) .catch(err => { console.log(err); }) 查 // 查询一个 模型名.findOne({ where: {id: req.query.id} }) .then(respons => { res.json({ code: '1', msg: '查询成功', data: respons }) }) .catch(errors => { console.log(errors); }) // 查询多个 模型名.findAll() .then(respons => { res.json({ code: '1', msg: '查询成功', data: respons }) }) .catch(errors => { console.log(errors); }) 中文文档 点击查看 ...

May 16, 2018 · 1 min · 192 words · Norman Wang

微信小程序动态修改data里面的值

wxml <view> <block wx:for="{{test}}" wx:key="*this"> <button type='primary' size='mini' bindtap='chageval' data-id='{{item.id}}'>{{item.name}}</button> <text>{{item.val}}</text> </block> </view> js test: [ { id: 1, name: 'wangyu', val: '123' }, { id: 2, name: 'mayan', val: '456' } ] chageval(e){ var x = e.currentTarget.dataset.id; console.log(x); var str = "test[" + (x-1) + "].val"; this.setData({ [str]: 'aaa'+x }); }

April 27, 2018 · 1 min · 52 words · Norman Wang

Vue.js两个小技巧

Vue-cli代理跨域 在config下的index.js里面找到proxyTable 按下图修改(注:如果你要请求 www.baidu.com/search.php?kw=helloworld, 现在用过axios访问本地代理的时候就是访问/api/search.php?kw=helloworld) Vue引入非NPM模块 在build里面找到webpack.base.conf.js 在module.exports里面添加externals项,比如我要添加ecDo这个三方插件,前面相当于键,后面是值。切记值一定要与插件定义的变量一致,键可以随便填写 在index.html里面引入 在使用的页面导入即可

March 8, 2018 · 1 min · 10 words · Norman Wang

使用海外VPS搭建ShadowsocksR助你科学上网

注:本教程适合有一定计算机基础的朋友使用,小白先百度了解一下基础知识。切勿使用本教程做一切违反中国人民共和国相关法律法规之事! 购买VPS Bandwagon Host Bandwagon Host被国人称为搬瓦工,他们家的VPS有专门对国内网络连接速度优化,国人用的非常多。官网为 https://bwh1.net/cart.php 建议大家购买下面这两款: 这两个都是直连cn2线路,第一个只能年付,第二个可以月付。但是第二个更贵,因为配置更高,流量更多。(流量这里要补充一下,如果你用服务器搭建代理翻墙的话,流量是要减半的,意思是如果你买的是第一个,网页上写流量一个月500g,平时翻墙的时候就是250g,超出的话就会另收费。具体原因是你挂的代理访问google,请求是先发到你的代理服务器上面,然后代理服务器再请求google。它从goole服务器下载到网页,这是一部分流量,然后它还要把这个网页发给你,这就有产生了流量。总共花费正常情况的2被流量) Vultr Vultr也是一个老牌VPS厂商了,他家的也不错,VPS可以按小时收费,价格也可以。其实按小时收费的最好了,如果你的IP被封了,你可以删除实例,再重新创建一个,它就会给你重新分配一个IP。如果是按月收费或者是按年收费就像搬瓦工,IP被墙了,只能再花钱换IP了。官网:https://www.vultr.com/ 建议大家购买下面这两款: 机房位置吧,建议选择美国西海岸的。 DigitalOcean DigitalOcean老牌VPS厂商,本人就是用的他家的旧金山机房,配合谷歌BBR加速,YouTube 2K妥妥的,4K也可以。和Vultr一样支持按小时收费,价格和Vultr差不多。官网:https://www.digitalocean.com/ 建议大家购买下面这一款: 机房位置选择旧金山。 优化网络 网络是必须优化的,不优化效果会很不好,目前有两种较稳定效果好的优化方案。(以下的所有操作都在Debian 7/8 X64系统下均正常,强烈建议大家选择这款系统) 锐速(破解版) 这是一个TCP连接优化加速软件(不支持OpenVZ),因为官方破产,所以现在只能用用破解的锐速了。这个软件也是非常强大,不需要多余设置,一键安装,效果明显! 1. root用户连接上VPS 2. 执行 wget -N –no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder.sh && bash serverspeeder.sh 3. 等待一段时间安装成功后,重启vps #重启锐速 /serverspeeder/bin/serverSpeeder.sh restart #启动锐速 /serverspeeder/bin/serverSpeeder.sh start #停止锐速 /serverspeeder/bin/serverSpeeder.sh stop #查看锐速运行情况 /serverspeeder/bin/serverSpeeder.sh status 谷歌BBR算法 谷歌大佬的TCP-BBR是最新出来的一种TCP拥塞控制技术,和锐速差不多,不过这个加速效果个人测试强于锐速,免费,同样不支持OpenVZ。 1. root用户连接vps 2. 执行 wget -N –no-check-certificate https://softs.fun/Bash/bbr.sh && chmod +x bbr.sh && bash bbr.sh 3. 会提示输入内核版本,直接回车获取最新版本 4. 会出现一个对话框,选择no 5. 提示需要重启,输入y重启vps # 启动BBR bash bbr.sh start # 关闭BBR bash bbr.sh stop # 查看BBR状态 bash bbr.sh status 安装/配置 服务端 下载 // 依此执行下面三行代码 apt-get update apt-get install git vim -y git clone -b manyuser https://github.com/ToyoDAdoubi/shadowsocksr.git 配置 // 依此执行下面三行代码 cd shadowsocksr bash initcfg.sh vi user-config.json 按i进入编辑模式,并按如下配置 { "server": "0.0.0.0", "server_ipv6": "::", // 更改服务端口,建议4位 "server_port": 8388, "local_address": "127.0.0.1", "local_port": 1080, // 更改密码 "password": "m", "timeout": 120, "udp_timeout": 60, // 务必记住 加密方法(method) 协议(protocol) 混淆(obfs) "method": "aes-128-ctr", "protocol": "auth_aes128_md5", "protocol_param": "", "obfs": "tls1.2_ticket_auth_compatible", "obfs_param": "", "speed_limit_per_con": 0, "speed_limit_per_user": 0, "dns_ipv6": false, "connect_verbose_info": 0, "redirect": "", "fast_open": false } 开启 // 依此执行下面三行代码 cd shadowsocks chmod +x *.sh ./logrun.sh 查看日志 ./tail.sh 客户端 客户端配置方法都一样,填写你服务器的IP、刚才自己设置的端口、密码、加密方法(method)、协议(protocol)、混淆(obfs) ...

February 23, 2018 · 1 min · 189 words · Norman Wang

PHP学习 -- 文件上传

单文件上传 <?php header("Content-type:text/html;charset=utf-8"); /* * @param1 array $file , 上传文件的信息 * @param2 array $allow_type , 运行上传的mime * @param3 string $path , 存储的路径 * @param4 string &$error , 错误消息 * @param5 array $allow_format , 允许上传的文件格式 * @param6 int $max_size , 允许上传的最大值(必须比配置文件中的值小) */ function upload_single($file,$allow_type,$path,&$error,$allow_format = array(),$max_size = 2000000){ // 判断文件是否有效 if(!is_array($file) || !isset($file['error'])){ $error = '不是一个有效的文件'; return false; } // 判断文件上传路径是否存在 if(!is_dir($path)){ $error = '文件存储路径不存在'; return false; } // 判断文件上传过程是否出错 switch ($file['error']) { case 1: case 2: $error = '文件超出预设值'; return false; case 3: $error = '文件上传过程出错'; return false; case 4: $error = '没有选中要上传的文件'; return false; case 6: case 7: $error = '文件保存失败'; return false; } // 判断mime类型 if(!in_array($file['type'],$allow_type)){ $error = '请上传正确的文件类型'; return false; } // 判断文件后缀 $ext = ltrim(strrchr($file['name'],'.'),'.'); if(!empty($allow_format) && !in_array($ext,$allow_format)){ $error = '请上传正确的文件类型'; return false; } // 判断文件大小 if($file['size'] > $max_size){ $error = '当前文件超出大小,请不要大于' . $max_size . '字节'; } // 移动到指定目录 if(!is_uploaded_file($file['tmp_name'])){ $error = '错误,不是上传文件'; return false; } // 构造文件名字并上传 $fullname = strstr($file['type'],'/',true) . date('Ymd') . mt_rand(10000,99999) . '.' .$ext; if(move_uploaded_file($file['tmp_name'],$path . '/' . $fullname)){ return $fullname; }else{ $error = '文件上传失败'; return false; } } $file = $_FILES['img']; $path = 'upload'; $allow_type = array('image/jpg','image/jpeg'); $allow_format = array('jpg','jpeg','JPG','JPEG'); $max_size = 1048576; if($filename = upload_single($file,$allow_type,$path,$error,$allow_format,$max_size)){ echo $filename; }else{ echo $error; } <!DOCTYPE html> <html lang="en"> <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>单上传文件</title> </head> <body> <div> <form action="2.4.php" method="post" enctype="multipart/form-data"> <input type="file" name="img" /> <input type="submit" /> </form> </div> </body> </html> 多文件上传 <?php header("Content-type:text/html;charset=utf-8"); // 多文件一起上传 $fileName = $_FILES['img']['name']; $fileTmp = $_FILES['img']['tmp_name']; foreach($fileTmp as $key => $value){ if(is_uploaded_file($value)){ move_uploaded_file($value,'upload/' . $fileName[$key]); echo '文件上传成功'; }else{ echo '文件上传失败'; } } <!DOCTYPE html> <html lang="en"> <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> </head> <body> <form action="2.2.php" method="post" enctype="multipart/form-data"> <input type="file" name="img[]" multiple="multiple" /> <input type="submit" value="上传" /> </form> </body> </html>

February 1, 2018 · 2 min · 294 words · Norman Wang

PHP学习 -- 连接MySQL数据库

<?php // PHP连接MySQL数据库基本操作 // 1. 建立连接 // 默认端口3306 $link = mysqli_connect('localhost:3306','root','root'); // var_dump($link); // 2. 设定字符集 $res = mysqli_query($link,'set names utf8'); // var_dump($res); // 3. 选择数据库 $db = mysqli_query($link,'use wang'); var_dump($db); // 4. 数据操作 // 5. 关闭连接 // MySQL服务器的连接资源是有限的,不用了需要释放,但是脚本执行玩后会自动释放 $end = mysqli_close($link); var_dump($end);

January 22, 2018 · 1 min · 43 words · Norman Wang

MySQL学习 -- 字符集相关

基本语法 目的:实现客户端 中间层 服务端字符集统一,以遍存储汉字。 set names gbk; 查看系统保存的三种关系处理字符集 show variables like 'character_set%';

January 21, 2018 · 1 min · 12 words · Norman Wang