王新阳

wangxinyang

SQLyog、phpMyAdmin、Navicat 三大常用MySQL数据库管理工具

1,SQLyog是一个易于使用的、快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,简单便捷。

2,phpmyadmin是一个用PHP编写的,可以通过互联网控制和操作MySQL。通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制/删除数据等等。 管理 MySQL-server 以及单一数据库的 PHP 程序,对于不熟悉 MySQL 命令列指令的人来说,是很方便的管理工具。

3,navicat是一个强大的MySQL数据库管理和开发工具,从8.0发展至今,一直都是开发人员的利器,和web版本的phpmyadmin相比,速度快,操作方便等优势严重胜出。

https://www.pw88.com/teach/oracle/250.html

WINDOWS服务器C盘清理

@echo off
echo 正在清除系统垃圾文件,请稍等......

del /f /s /q  C:\WINDOWS\Temp\*.*
del /f /s /q  C:\WINDOWS\system32\wbem\Logs\*.*
del /f /s /q  "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\*.*"
del /f /s /q  C:\WINDOWS\system32\config\systemprofile\Local Settings\Temp\*.*
del /f /s /q  "C:\WINDOWS\Driver Cache\i386\*.*"
del /f /s /q  C:\WINDOWS\SoftwareDistribution\Download\*.*
del /f /s /q  "C\WINDOWS\ServicePackFiles\*.*"
del /f /s /q  "C:\Documents and Settings\Administrator\Cookies\*.*"
del /f /s /q  "C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\*.*"
del /f /s /q  "C:\Documents and Settings\Administrator\Local Settings\Temp\*.*"
del /f /s /q  "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS\*.*"

echo 清除系统垃圾完成!
echo. & pause

以上保存为.bat文件运行即可

另外
C:\WINDOWS\system32\LogFiles
C:\inetpub\logs\LogFiles\W3SVC1
也会有大量的网站访问日志文件,可视情况删除。

有的服务器以下目录会包含大量npm开头的 .exe文件,不知道是怎么生成的。试过一次C盘备份后删除之,重启一切正常。  不明所以……
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp

nginx环境中CodeIgniter的配置

nginx官方给出的配置方法:https://www.nginx.com/resources/wiki/start/topics/recipes/codeigniter/

但是我试了并没起作用,最终使用下面方法解决:

	if (!-e $request_filename) {
		rewrite ^/admin\.php /admin.php last;
		rewrite ^.*$ /index.php last;
	}

幸亏CI是单入口,几行就行了。

原理:当访问的文件或目录不存在(!-e $request_filename)时,重定向到某个php文件。所以上面方法虽然简单,但是也要注意到url中不能有对应路径的真实文件或目录才可以。

电子相册

电子书、电子杂志参考
官网 https://www.fliphtml5.com/

云展网企业宣传册制作:https://www.yunzhan365.com/
https://book.yunzhan365.com/pteyi/dckd/mobile/index.html
https://book.yunzhan365.com/rvdk/vggc/mobile/index.html

photoswipe兼容手机版,支持拖动、缩放

https://photoswipe.com/

https://github.com/dimsemenov/photoswipe

fancybox 不支持拖动、缩放


使用jquery.qrcode.js生成二维码-支持中英文混合输入

官网:https://larsjung.de/jquery-qrcode/
github:https://github.com/lrsjng/jquery-qrcode
演示:https://larsjung.de/jquery-qrcode/latest/demo/

<div id="qrcodeTable"></div>
<img id="logoimg" src="logo.png">
<script>
$('#qrcodeTable').qrcode({
    // render method: 'canvas', 'image' or 'div'
    render: 'image',

    // version range somewhere in 1 .. 40
    minVersion: 1,
    maxVersion: 40,

    // error correction level: 'L', 'M', 'Q' or 'H'
    ecLevel: 'L',

    // offset in pixel if drawn onto existing canvas
    left: 0,
    top: 0,

    // size in pixel
    size: 200, //二维码尺寸

    // code color or image element
    fill: '#000', //二维码颜色

    // background color or image element, null for transparent background
    background: '#fff', //背景色

    // content
    text: '汉a字',

    // corner radius relative to module width: 0.0 .. 0.5
    radius: 0,

    // quiet zone in modules
    quiet: 2, //可理解为css的padding,大小为quiet*6像素

    // modes
    // 0: normal 无文字、无logo
    // 1: label strip
    // 2: label box 显示文字
    // 3: image strip
    // 4: image box 显示logo
    mode: 4,

    mSize: 0.1, //logo尺寸
    mPosX: 0.5, //logo位置
    mPosY: 0.5,

    label: 'hello', //使用文字代替logo
    fontname: 'sans',
    fontcolor: '#000',

    image: null, //$('#logoimg')[0]
});
</script>


<script>
$('#qrcodeTable').qrcode({
    render: 'image', //canvas|image|div
    size: 200, //二维码尺寸
    text: '汉a字',
    quiet: 2, //可理解为css的padding,大小为quiet*6像素
});
</script>

encodeURI、encodeURIComponent、escape

encodeURI(string) 把字符串作为 URI 进行编码,编码后为utf-8格式

decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码

<script>
var s = encodeURI('http://www.baidu.com/s?wd=你好');
document.write(s+'<br>');  //http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD
s = 'http://www.baidu.com/s?wd='+encodeURI('你好');
document.write(s+'<br>');  //http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD
document.write(decodeURI('http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD'));  //http://www.baidu.com/s?wd=你好
</script>

在使用url进行参数传递时,经常会传递一些中文名的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端javascript的encodeURI函数编码的URL,结果就不一样。

javaScript中的编码方法:

escape() 方法:

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( ) 

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

decodeURIComponent -- 解码encodeURIComponent函数编码的字符串

m3u8/TS视频下载方法

1、通过浏览器控制台的network找到m3u8文件地址并下载

2、打开迅雷,用记事本或nopetad等打开下载的m3u8文件》全选》复制》迅雷会自动识别其中的ts文件地址,批量下载

3、随便找个视频合并软件合并下载的ts文件。我用的M3U8 Downloader合并视频,也可以用它下载,但是迅雷下载更快。

一个200M大小的视频几分钟完成。

linux/centos+nginx添加网站

1、新建网站目录并上传程序

2、添加新网站的配置文件
/usr/local/nginx/conf/vhost/domain2.conf

3、在nginx.conf中添加对新网站配置文件的调用:
include vhost/domain2.conf;
或者自动加载所有网站的配置:
include vhost/*.conf;

4、重启nginx
在nginx/sbin目录执行 ./nginx -s reload


参考:

Nginx的启动、停止与重启 https://www.cnblogs.com/codingcloud/p/5095066.html
xshell常用命令大全 https://www.cnblogs.com/qq350760546/p/7890680.html
nginx新建网站 https://bbs.aliyun.com/read/3189.html
nginx新建网站 https://www.cnblogs.com/eco-just/p/8964108.html

iscroll仿系统滚动插件

http://caibaojian.com/iscroll-5/

https://segmentfault.com/a/1190000003113280

https://blog.csdn.net/amyloverice/article/details/79383712

http://www.jq22.com/jquery-info13446

CDN https://www.bootcdn.cn/iScroll/

最简单的js日历

<meta charset="utf-8">
<div id="calendar"></div>
<script>
/**
 * edgesun@126.com
 * 20190207
 */
function myCalendar(YEAR,MONTH){
	function isLng(num){return /^(0|([1-9]\d*))$/.test(''+num);}
	var myDate=new Date(), today={year:myDate.getFullYear(), month:myDate.getMonth(), date:myDate.getDate(), ymd:''}; //当前日期
	today.ymd = today.year+ (today.month<9?'0':'')+(today.month+1)+(today.date<10?'0':'')+today.date;
	if(isLng(YEAR) && isLng(MONTH)){
		if(YEAR<2010 || YEAR>2037){alert('不能再翻啦~');return;}
		if(MONTH>11){alert('参数month应该为0到11的整数');return;}
		myDate.setFullYear(YEAR, MONTH, 1);
	}else{
		YEAR = today.year;
		MONTH = today.month;
	}
	
	var PrevNext=[[0,0],[0,0]]; //依次为上一月的年、月,下一月的年、月
	if(MONTH==0){
		PrevNext = [[YEAR-1,11],[YEAR,1]];
	}else if(MONTH==11){
		PrevNext = [[YEAR,10],[YEAR+1,0]];
	}else{
		PrevNext = [[YEAR,MONTH-1],[YEAR,MONTH+1]];
	}
	
	myDate.setDate(1); //当前显示月的第一天
	var weekday=myDate.getDay()?myDate.getDay():7; //当前显示月的第一天是星期几(星期天重置为7,即每周最后一天)
	myDate.setMonth(MONTH+1);
	myDate.setDate(0);
	var totalDays = myDate.getDate(); //当前显示月的总天数
	var html='<table width="100%" border="1" cellpadding="5" cellspacing="0"><thead><tr><th onclick="myCalendar('+PrevNext[0][0]+','+PrevNext[0][1]+')">上个月</th><th colspan="5">'+YEAR+'年'+(MONTH+1)+'月</th><th onClick="myCalendar('+PrevNext[1][0]+','+PrevNext[1][1]+')">下个月</th></tr><tr><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th><th>星期日</th></tr></th><tbody>';
	var n=0, ymd='';
	for(var i=1; i<=42; ++i){
		if(i%7==1) html+='<tr>';
		if(i>=weekday && i<totalDays+weekday){
			++n;
			ymd=''+YEAR+(MONTH<9?'0':'')+(MONTH+1)+(n<10?'0':'')+n;
			html+='<td'+(ymd==today.ymd?' style="background-color:#ddf;"':'')+' data-date="'+ymd+'">'+n+'</td>';
		}else{
			html+='<td></td>';
		}
		if(i%7==0){
			html+='</tr>';
			if(i>=(totalDays+weekday-1))break;
		}
	}
	html+='</tbody></table>';
	document.getElementById('calendar').innerHTML=html;
}

myCalendar();
</script>
2024-12-05 星期四 农历冬月初五