首页
微语
统计
友链
留言
memos
圈子
图床
推荐
相册
网站监控
VPS监控
Search
1
实现typecho微信时光机功能的图文教程
47,898 阅读
2
为Typecho添加webp解析
43,565 阅读
3
Memos备忘录,记录瞬间想法
27,981 阅读
4
emlog数据成功迁移到typecho
27,828 阅读
5
Jasmine - 简约、美观的博客主题
26,558 阅读
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
排行榜    
登录
/
注册
Search
标签搜索
wordpress
发布
插件
免费
教程
typecho
EMlog
PHP
代码
CSS
华为
图片
代码修改
安装
评论
手机
诺基亚
微信
文章
智能
Chen'mo
累计撰写
1,269
篇文章
累计收到
378
条评论
首页
栏目
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
页面
微语
统计
友链
留言
memos
推荐
相册
网站监控
VPS监控
搜索到
346
篇与
的结果
2020-06-11
优雅的破解网页内容禁止选中以及复制的问题
我们在优雅的使用浏览器查询我们需要的资料的时候,难免会遇到一些网站有无法复制内容的问题,这些网站一般是通过JS的方式实现禁止内容复制的,所以我们可以简单的使用浏览器控制台命令来从新打开内容复制。首先,我们需要分析一下如何实现禁止复制粘贴。实现禁止复制粘贴// 禁止右键菜单 document.oncontextmenu = function(){ return false; }; // 禁止文字选择 document.onselectstart = function(){ return false; }; // 禁止复制 document.oncopy = function(){ return false; }; // 禁止剪切 document.oncut = function(){ return false; }; // 禁止粘贴 document.onpaste = function(){ return false; };解决禁止复制粘贴既然我们知道了实现的方式,那我们就可以直接按下F12打开浏览器的控制台,然后点击控制台输入以下代码即可// 开启右键菜单 document.oncontextmenu = function(){ return true; }; // 开启文字选择 document.onselectstart = function(){ return true; }; // 开启复制 document.oncopy = function(){ return true; }; // 开启剪切 document.oncut = function(){ return true; }; // 开启粘贴 document.onpaste = function(){ return true; };文章来源:https://eas1.cn/201.html
2020年06月11日
1,645 阅读
0 评论
0 点赞
2020-06-07
Typecho 评论中嵌入图片
有时发表评论需要添加图片,Typecho本身支持在评论中开启嵌入图片,但是还需要手工补全<img src= />来实现图片插入,比较麻烦。其实可以学习 v2ex 自动把图片后缀的文件自动转换为图片链接。首先在functions.php中添加转换函数function parseComment($comment) { $size = auto; $comment = preg_replace(array('#(http://([^\s]*)\.(jpg|gif|png|JPG|GIF|PNG))#', '#(https://([^\s]*)\.(jpg|gif|png|JPG|GIF|PNG))#'), '<img src="$1" alt="评论" style="width:' . $size . '; height:' . $size . '" />', $comment); return $comment; }如果你的主题有评论自定义,那么请找到 threadedComments 函数,在里头把$comments->content();修改为echo pareseComment($comments->content);没有的话你还要参照Typecho官方文档自定义评论才行。
2020年06月07日
9,618 阅读
1 评论
0 点赞
2020-05-24
浏览器野史 —— UserAgent 列传【转载】
某天,我做一个小项目,需要判断一下浏览器类型。简单的呀。控制台敲下:navigator.userAgent浏览器回应:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36天,这串是啥?你怎么连话都说不清楚?我对 UserAgent 并不陌生,但明明一个单词就可以说清楚的事情,却是这么掏心掏肺的回答。怪可怜的,一定有冤情。后来我查阅了很多资料,发现历史非常的精彩。大事年表1990年: Nexus ( WorldWideWeb )诞生1993年1月23日:Mosaic 诞生1994年12月:Netscape ( Mozilla )诞生1995年4月:Opera 诞生1995年8月16日:Internet Explorer 诞生2002年9月23日:Firefox 诞生2003年1月7日:Safari 诞生2008年9月2日:Chrome 诞生一、盘古开天地很久很久之前,上古大神 Berners-Lee 发明了 WorldWideWeb ,即万维网。同时,李大神也发明了第一款浏览器。真是具有跨时代意义的工具呀,好伟大呀,人们在想,叫什么好呢?但大神就是大神,大神内心的想法又岂是尔等凡人能够肆意揣摩?万万没想到,李大神说,我这浏览器,也叫 WorldWideWeb !不行么?行行行。虽然李大神起名字这么拽,但他后来发觉,还是得赋予一点承上启下的历史意义,就改名成“Nexus”。值得注意的是,这浏览器,居然是可以兼容 Unix 跟 Microsoft DOS 的。它在当时流行的各种电脑上跑得飞起,应用也越来越广,被称为“杀手级应用”。杀手级…你们看互联网一开始就是这么的腥风血雨。但这个浏览器,还不支持图片的显示,这是出现 UserAgent 的导火索。二、唐尧虞舜93 年,伊利诺大学的 NCSA 组织认为,浏览器无图无真相,这不好。因而他们发明了第一款可显示图片的浏览器。真是具有跨时代意义的工具呀,好伟大呀,人们在想,叫什么好呢?但大神就是大神,大神就是连起名字都让你惊心动魄。NCSA 组织说,它能显示图片,偏偏我们就要叫它“马赛克( Mosaic )”!不行么?行行行。但有人就问了,Nexus 不显示图片,Mosaic 能显示,你们让 html 提供者怎么写代码?你们是不是想逼死选择困难症患者?有没有考虑过天秤座的感受?因而 UserAgent 就诞生了。Mosaic 将自己标志为 NCSA_Mosaic/2.0 (Windows 3.1) ,大家该怎么写代码就怎么写,但请求会带上这个信息,服务器就知道该不该返回能显示图片的 html 。UserAgent 君,出生时跟我们设想的一样简单,仅仅标明了自己是什么浏览器,在什么系统运行,以及各自的版本号。新旧浏览器们像彬彬有礼的君王,商议和让位是为了更好的繁荣。但风雨欲来。三、楚汉争霸像刘邦一样,走出来一个搅局的小流氓。当然他还是很有志向的,他的目标,就是战胜霸主 Mosaic。后来,他还真的做到了。如今,所有现代浏览器的 UserAgent 里都有它的标志,就像汉朝之后,我们都称为“汉”人。一群很有天赋的程序员,一起缔造了它的辉煌。真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?但大神就是大神,大神就是让你永远也猜不到他们想了个什么名字。大神们说,叫 Mozilla,不行么?行。但什么意思呢?含义有二。其一,哥斯拉( Godzilla )谐音,诚然是一头野心勃勃的怪兽;其二,”Mosaic Killa”之意, Killa 是俚语中 Killer 的拼法,即“马赛克的终结者”,赤裸裸的挑战。惊呆了的 Mosaic 小心翼翼的念着 Mozilla 这发音:“Mo…摸咋了?”勃然大怒,“摸你妹!”鉴于 Mosaic 当时的权势,Mozilla 改名成 Netscape Navigator (网景航海家)。小怪兽突然变成有点文艺小清新的名字,郁闷得很,但内心的血液沸腾着。虽然叫大名叫网景,但它把 UserAgent 偷偷设置成 Mozilla/1.0 (Win3.1) 。还是摸咋了?咬我?四、宋元之战很快, NetScape 战胜了 Mosaic ,成为了新的霸主,因为其更优的展示。NetScape 最先支持了 html 框架显示,就是简单的 table 布局,内外边距之类,仅仅这点就将 Mosaic 抛诸身后。区别这两个浏览器,还是用的 UserAgent 。如果是 UserAgent 里含有“Mozilla”字样,那就发送支持框架的页面,否则,就发送不含框架的页面。NetScape 帝国日益庞大,歌舞升平,一切风平浪静,直到微软的铁骑挥军南下。微软发布了一款跟系统强绑定的浏览器,真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?不用想了,就是 IE 。这命名也相当简单粗暴, Internet Explorer ,直接把这工具的用途拍在你脸上。连说明书都可以免了。IE也是支持 html 标准框架的,但由于前面的历史原因,人们只会给 UserAgent 里含有“Mozilla”字样的浏览器发送含框架的页面。但这点小事能难倒我大微软? IE 呵呵一笑,把自己的 UserAgent 改成 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95) 。看,我这里也有 “Mozilla” 字样,也能收到含框架的页面了!当然,这个小流氓行为,跟后来把 IE 和 Windows 捆绑一起销售的大流氓行为比起来,根本不为足道。后面的故事我们也知道了, IE 把 NetScape 干掉了。但它的身体上,却永远的烙上了“Mozilla”的印记。五、康乾盛世看过奥特曼的都知道,怪兽被打败了会再回来。别忘了 NetScape 曾拥有一批大神们,失败后,他们围绕着浏览器排版引擎 Gecko (壁虎)成立了非正式组织 Mozilla 。小怪兽再次出发。大神们发明了另一款优秀的浏览器,它在插件拓展和开发调试领域做出的贡献,绝对可以载入互联网历史。真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?但大神就是大神,大神就是即使你知道了 Mozilla 的命名都是野兽,却还是猜不到是什么。Mozilla 说,我们浴火重生,叫 Phoenix (凤凰)!不行么?真不行。刚推出就被人告了,原来已经有一家公司叫做“凤凰科技”。Mozilla 瀑布汗,改名叫 Firebird (火鸟)!还不行么?我们得原谅一下他们的取名,虽然现在看来满满的山寨感,可放在那个时代, Firebird 这名字很炫酷。就像你当初的 QQ 昵称叫赤炎天使感觉依然良好一样。但是,他们发现,业内有个数据库系统,也叫的 Firebird …泪流满面的 Mozilla 感慨重生好难呀。最后才决定叫Firefox (火狐)。基于 Gecko 引擎的 Firefox 非常优秀,为了告诉大家,我使用了这个引擎,它标志自己的 UserAgent 为 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0 。这时候的 UserAgent ,虽然长了点,但它并不混乱,准确的标明了系统,排版引擎,浏览器名称等信息。虽然 IE 这时已经占有了很大的市场份额,但基本停步不前;而 Mozilla 经过一段时间的修生养息,Firefox 在业内广受好评,得到了快速的发展。时值 2003 年, web2.0 的浪潮前夕,浏览器的发展达到了空前的盛世。然而所谓否极泰来,盛极则衰。涅槃的 Firefox 迎来盛世,却又恰恰由于盛世,决定了 UserAgent 纠结的命运。六、师夷长技前面说到,微软靠 Windows 系统捆绑IE销售。而 Windows 自然也有它的对手,Linux 。一个技术快速发展的时代,系统的世界里也是战火纷飞。 Linux 系统自从有了可视化界面,也需要浏览器呀。桌面系统 KDE 的缔造者们就发明了一个。真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?但大神就是大神,大神就是讲究先从文字上占据压垮你的气势。先有 Navigator 航海家,再有 Explorer 探索者,咱就叫 Konqueror ( Conqueror 的变体)征服者吧。行行行。我已懒得理这帮大神…可是,问题来了。 Konqueror 使用 KHTML 排版引擎,即使它们认为自己跟 Gecko 引擎一样优秀,但用户不买单。你 UserAgent 里没有“Gecko”字样,我就不给你经过优良排版的 html。结果, Konqueror 思来想去,做了一个艰难但很萌的决定,把 UserAgent 写成 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) …这就是现代浏览器里 like Gecko 这一萌词的由来。就这样,伟大的排版引擎 KHTML 为了获得更好的资源,师夷长技。这并没什么不好,却造成了 UserAgent 的越发混乱。KHTML 与 Gecko 这一对,永远卿卿我我比翼双飞在 UserAgent 里面了。那个满含深意的“like”,有人觉得翻译成“像”,但也有人觉得应该是“喜欢”…七、世界大战首先是 IE 冷静下来了,他觉得,你们不带这么玩的?就我年少时不懂事,首先改了个 Mozilla 字样,后面追究这历史我岂不是成了罪魁祸首?我改还不行吗?在 IE6 ,它明确自己 UserAgent 为 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) 。除去已经注定不可抹去的“Mozilla”字样,其余信息简洁,准确,清晰。但事态已经不可收拾。Opera 给这狂躁的世界添了一把火。它觉得,易容术非常炫酷呀。Opera 直接在菜单提供了 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51 , Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 , Opera/9.51 (Windows NT 5.1; U; en) 三个选择项。第一个是易容成 IE ,第二个是易容成火狐,第三个才是自己,选谁就是谁!其实这并不是一件坏事。因为 Opera 是站在能够让用户通过选择,去获得更好的浏览体验的基础上的。你提供选择,或是不提供,混乱的 UserAgent 还是在这,不离,不弃。再者,这对网页的开发者有极大的好处,在某些情况,你不必同时打开几个不同的浏览器去调试。到目前,最新的 Chrome 浏览器更加炫酷,能够支持近 40 种不同的 UserAgent ,甚至你还可以自定义。当然这是后话。与此同时,苹果公司依靠内核 WebKit ,开发出 Safari ,命名 UserAgent 为 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 。有人就会问了,不是 Webkit 内核吗,怎么还有 KHTML, like Gecko ?注意,内核 Webkit 包含了一个排版引擎叫 WebCore ,而 WebCore 是 KHTML 衍生而来的。也就是说, WebCore 是 KHTML 的儿子,子承父业,基因差不多。为了能够正常排版, safari 只能这么写。后来, google 也开发了自己的浏览器 Chrome ,其内核也是 Webkit ,但它设定 UserAgent 为 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 。Safari一看,不对劲啊!你怎么也在后面写有 Safari ? Chrome 呵呵一笑,你懂的。因此,请让我一口气说完下面这一段:Chrome 希望能得到为 Safari 编写的网页,于是决定装成 Safari , Safari 使用了 WebKit 渲染引擎,而 WebKit 呢又伪装自己是 KHTML , KHTML 呢又是伪装成 Gecko 的。同时所有的浏览器又都宣称自己是 Mozilla 。这就是整个 UserAgent 世界大战的格局…八、军阀混战将目光聚焦到国内,更是狼烟四起,混乱不堪。大家都知道,浏览器是互联网的入口,这块肥肉谁也不想丢。因而一个接一个的“国产”浏览器进入斗兽场。360 ,百度, QQ , UC ,搜狗,猎豹,遨游,世界之窗…你能说出一大堆。连淘宝,酷狗, hao123 都有浏览器,不信你搜。注意我前面“国产”两个字必须加上双引号,因为这个 made in china 并不纯。国人并没能像远古大神一样,硬生生发明一个内核出来,我们更擅长“微创新”。利用 Trident ( IE 的内核),包装一下皮肤,美化一下,就可以说:完美兼容利用 Webkit ,包装一下皮肤,美化一下,就可以说:极速浏览把两个内核都包起来,就可以说:智能双核是微创新!读书人的事,能叫偷吗?在这插播一下,浏览器的“双核”,并不是你听说手机双核电脑双核那回事。再多个核,速度也不会更快,当然这么说,会显得很厉害的样子。德艺双馨,智勇双全,名利双收,才貌双绝,夫妻双双把家还,你看带“双”字的词都很牛的。但我上面的叙述,的确有夸张的成分。浏览器的诞生,肯定不仅仅是包一下皮肤那么简单,国内的工程师们,也苦心研究做了许多工作。如果要说优化策略,我可以再写一篇超级长的文章。优化无止境,路漫漫其修远,向同行们致敬。只是我非常讨厌那些不把事实说清楚,纯粹靠文案去忽悠人的产品…话说回来,这么多国产浏览器,总得靠不同 UserAgent 标志自己呀。大家自动分为两个阵营:使用 Trident 内核的,在 IE 已有 UserAgent 后添加自己的名称;使用 Webkit 内核的,就在 Chrome 的 UserAgent 后面添加。前者像 QQ 浏览器: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.7.26717.400) 。后者像猎豹: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER 。当然双核浏览器诚然就是墙头草,切换内核时 UserAgent 也需要跟着变化。如此的混战格局,这厢的 IE 和 Chome 想必也是醉了。九、国共内战适者生存是不变的生存法则,国产浏览器们经过一段时间的用户筛选,自然优胜劣汰。时值 2010 年,真正还在运营和更新的浏览器数量慢慢下降,用户集中在几家表现更优异的厂商手中。就在这时,好看的故事来了—— 3Q 大战爆发。有人说,腾讯电脑管家的推出是导火索。其实这场仗,大家都忍了好久,推不推出,都一定会在某个事件后爆发。 360 浏览器是奇虎的重量级产品,用户量众多, 2009 年它推出一个功能:过滤其它网站的广告。诚然民众们都很喜欢。可是其他互联网公司肯定就不乐意了,用户看不到更点击不到广告,这钱还怎么赚?因而在 3Q 大战爆发后,腾讯的一个手段就是:如果你使用 360 浏览器,就不能访问 QQ 的网站(单单 QQ 空间就有巨大的用户量),也直接反攻 360 的最大收入来源。一个艰难的决定背后,往往是需要无数种的技术战略支撑的。企鹅判断用户是否使用 360 浏览器,依靠的就是 UserAgent 里是否有“360SE”的字样。战报传来:号外, 360 浏览器上不了 QQ 空间!已经买了黄钻的杀马特贵族急了呀!只能换浏览器了呀!感覺侢乜卟哙噯嘞呀!2011年11月3日,腾讯网站封杀 360 浏览器2011年11月4日,360 浏览器访问量仅为昨日一半2011年11月5日,360 浏览器访问量几乎为 0有人说,腾讯就这么快赢了?恰恰相反,360 浏览器通过一次强制的自动升级,又可以访问 QQ 的网站了。 360 的工程师们在 5 日使用了伪装术——把“360SE”字样从 UserAgent 中去掉!意思就是, 360 浏览器的 UserAgent 跟 IE 完全一样,你根本判断不出来(因而访问量为 0 )。就怕流氓有文化!企鹅傻眼了,总不能把大微软的 IE 也一并给禁了吧…这场土匪遇恶霸的耍流氓大战,最终通过法律而化解。企鹅在技术侧拿 360 没办法,而 360 则得到了一个跟 IE 一样的身份证。在这场内战中,受伤的除了广大网民们,其实还有令人心疼 UserAgent 君,以往让它越长越长就算了,这次长了还得阉割掉,真心 dan 疼呀。十、明日边缘看到这里,大家会明白一个道理:如果未来不出现一款霸主级别的浏览器(或内核), UserAgent 应该不会有大变化了。不过,这道理并不全对。别忘了,移动侧也是有浏览器的。在早期能上网的手机里,内置了各手机厂商自研的浏览器。这些浏览器并不需要像 PC一样的复杂设计,可以访问 wap 网页就足够了。因而它们的 UserAgent 命名,怎么简单怎么来,就直接叫 诺基亚 3100 Nokia3100/06.01 (UCWEB 3.3B) , PHILIPS755 ObigoInternetBrowser/2.0 这样,有甚者连浏览器叫什么都不带 TCL-3199 , 三星 E618 SEC-SGHE618 。这样任由发展下去,一种要历史重演,往日重现的即视感压迫而来。web 世界的联合国 —— W3C 组织,站在明日边缘,面对着历史和未来,终于发话,它制定 UserAgent 标准,以后都得按这规范去起名字。详细请阅 User Agent Accessibility Guidelines 。至此,命运坎坷的 UserAgent 终于逐步走向规范。 W3C 大法好,有人说你怎么不早点来拯救世界呀!其实 W3C 一直在努力,但规范的制定,到推广至大家认可并执行,是一条漫长的道路,需要时间,也需要实践。W3C 组织,在制定 web 标准这件工作之外,再我看来,还有两个身份:1、和事佬;2、背黑锅。和事不成,就得背黑锅。是的就是这样。彩蛋那么,我们的故事接近尾声。还有一些有趣的小彩蛋。Chome 28 开始,与苹果正式分道扬镳,采用 Blink 内核,但它的 UserAgent 并不改变。淘宝封杀微信打开淘宝页面,靠的就是微信内置浏览器 UserAgent 里的 MicroMessenger 字样。其实微信也可以像当初 360 一样把 UserAgent 去掉,但微信并不这样做。360 出招之时留有后招。也许,它一开始就想到了腾讯会告他们对于 UserAgent 的欺瞒,因而它其实提供了设置项。默认设置是“保持跟 IE 一样的 UserAgent ”,但用户也可以不勾选。只是这选项比较隐蔽,而且你重启浏览器后…又会变回默认设置。如果没有这个小小的设置,结果大家可以自行想象。微软又玩新花样了,在泄露版 IE11 中,去掉了以往的 MSIE 字样。初步猜测此举是为了使现有的 CSS hack 失效,避免过去网页设计师对 IE 差别对待的情况再度发生。但又会引发其他问题啊亲。注:本文转载自 Litten 的文章“浏览器野史 UserAgent 列传 (上) (下)” ,内容二合一,特此注明!
2020年05月24日
7,822 阅读
0 评论
0 点赞
2020-05-24
JavaScript脚本引用CDN失效时自动加载本地脚本
使用该方法可以防止CDN抽风时资源加载出错导致影响页面的问题。方法一以jQuery为例<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script> if (typeof jQuery == 'undefined') { document.write(unescape("%3Cscript src='/js/jquery.min.js'%3E%3C/script%3E")); } </script>方法二<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script>window.jQuery || document.write(unescape("%3Cscript src='/js/jquery.min.js'%3E%3C/script%3E"))</script>
2020年05月24日
2,674 阅读
0 评论
0 点赞
2020-05-24
导航栏下拉至一定高度后固定在顶部的特效
js要引入jquery文件:<script type="text/javascript"> $(function(){ var nav=$("#header"), //得到导航对象 win=$(window), //得到窗口对象 doc=$(document);//得到document文档对象。 //防止页面滚动到60px以下F5刷新后导航不显示 if(doc.scrollTop()>=60){ $('#header').addClass('fixnav'); }else{ $('#header').removeClass('fixnav'); } //滚动到60px以下导航显示 win.scroll(function(){ if(doc.scrollTop()>=60){//判断滚动的高度 $("#header").addClass('fixnav');//固定导航样式类名 }else{ $("#header").removeClass('fixnav'); } }) }) </script>然后在css文件里面增加这个属性(其他一些样式自行添加):.fixnav { position: fixed; top: 0px; left: 0px; width: 100%; z-index: 999; }
2020年05月24日
1,543 阅读
0 评论
0 点赞
2020-05-23
宝塔/BT面板内存占用MySQL频繁崩溃自动重启方法
按理说,512M内存的VPS跑Centos,装个宝塔面板不会有问题的,网友的512M VPS安装宝塔面板后仅跑了一个WordPress新站就因内存不足而MySQL频繁崩溃。记得曾经512M内存用军哥的LAMP包跑好几个小流量站一点压力也没有,看来还是越纯净的越好。 针对宝塔面板因内存过小MySQL频繁崩溃问题,首先在宝塔面板计划任务中添加“释放内存”任务,时间可以设置为每天凌晨的3点左右。然后添加MySQL监控任务,当监控到MySQL挂掉时就重新启动MySQL。添加的Shell脚本如下:pgrep–xmysqld&>/dev/null if[$?–ne0];then bash/www/server/panel/script/rememory.sh /etc/init.d/mysqldstart fi如果你的VPS可以添加虚拟内存Swap,也可以通过添加Swap来解决内存不足的问题。
2020年05月23日
2,097 阅读
0 评论
0 点赞
2020-05-16
jQuery 侧边栏固定 theia-sticky-sidebar.js
现在很多网站都使用了两栏或者多栏的设计,theia-sticky-sidebar.js是一款jquery滚动固定侧边栏插件。该jquery滚动固定侧边栏插件在页面向下滚动时,可以将左侧或右侧侧边栏固定在页面中。它特别适合于多列布局的页面,并能和bootstrap或Foundation配合使用。使用方法在页面中引入jquery、ResizeSensor.min.js和theia-sticky-sidebar.min.js文件。<script src="path/js/jquery.min.js" type="text/javascript"></script> <script src="path/js/ResizeSensor.min.js" type="text/javascript"></script> <script src="path/js/theia-sticky-sidebar.min.js" type="text/javascript"></script>Theia Sticky Sidebar滚动固定侧边栏插件使用CSS Element Queries这个库来检测侧边栏高度的变化,以此来重新计算侧边栏的位置。ResizeSensor.js正是用来完成这个任务的。你也可以不引入ResizeSensor.min.js文件,Theia Sticky Sidebar滚动固定侧边栏插件仍然会正常工作,但是不会自动检测侧边栏的高度。 HTML结构页面的HTML结构应该类似下面的样子:<div class="wrapper"> <div class="content"> <div class="theiaStickySidebar"> ... </div> </div> <div class="sidebar"> <div class="theiaStickySidebar"> ... </div> </div> </div>内部的div.theiaStickySidebar是可选的,但是建议这样组织HTML结构。如果你不是这样组织的,插件会自动为你添加这样一个div。如果你的侧边栏放置有广告或iframe,那么你最好安装上面的HTML结构来组织HTML代码。 配置参数Theia Sticky Sidebar滚动固定侧边栏插件的可用配置参数有:containerSelector:侧边栏的父容器元素。如果没有指定直接使用侧边栏的父元素。additionalMarginTop:可选值。指定侧边栏的顶部margin值,单位像素,默认为0像素。additionalMarginBottom:可选值。指定侧边栏的底部margin值,单位像素,默认为0像素。updateSidebarHeight:是否更新侧边栏的高度。默认为true。minWidth:如果侧边栏的宽度小于这个值,将恢复为正常尺寸。默认值为0。(该选项用于响应式设计)defaultPosition:侧边栏必须是非static的定位方式。默认为relative定位方式。namespace:绑定事件的命名空间。默认为TSS。Theia Sticky Sidebar滚动固定侧边栏jquery插件的github地址为:https://github.com/WeCodePixels/theia-sticky-sidebar
2020年05月16日
3,243 阅读
0 评论
0 点赞
2020-05-06
handsome主题用py脚本发送时光机以及采集舔狗日志
handsome目前有微信发送和google浏览器发送时光机 本人技术有限写了个py发送的脚本# -*- coding: utf-8 -*- import requests import hashlib key = '11111111' #时光机验证编码 s = requests.Session() def getmd5(s): return hashlib.md5(s.encode('utf-8')).hexdigest() date = { "action": "send_talk", "time_code": getmd5(str(key)), "cid": "146", #时光机cid "token":"crx", #识别浏览器还是微信改成其他的不显示 "content": "来自py脚本", #发送文字 "msg_type": "text", "mediaId": "1" } url = 'https://cdn.529i.com/' req = s.post(url=url,data=date) print req.text采集舔狗日志到handsome时光机全自动采集舔狗日志到handsome时光机#!/usr/bin/python # -*- coding: utf-8 -*- import requests import hashlib url = "https://v1.alapi.cn/api/dog" #舔狗api payload = "format=text" headers = {'Content-Type': "application/x-www-form-urlencoded"} response = requests.request("POST", url, data=payload, headers=headers) dog=response.text key = '121111' #时光机验证编码 s = requests.Session() def getmd5(s): return hashlib.md5(s.encode('utf-8')).hexdigest() date = { "action": "send_talk", "time_code": getmd5(str(key)), "cid": "146", #时光机cid "token":"crx", #识别浏览器还是微信改成其他的不显示 "content": dog, #发送文字 "msg_type": "text", "mediaId": "1" } url = 'https://cdn.529i.com/' req = s.post(url=url,data=date) print(req.text)链接:https://www.529i.com/archives/761.html
2020年05月06日
2,362 阅读
0 评论
0 点赞
2020-04-21
emlog指定分类id使用指定的文章模版的方法
折腾生命在于折腾,越是折腾学得越是多,于是在看论坛的时候,发现了论坛有人建议这个,emlog 指定的分类文章使用指定的文章详情模版 的方法。 其实2个步骤就可搞定,第一步,在模板文件echo_log.php中写入如下代码(ps:最好先把原echo_log.php重名[如log.php],在把原echo_log.php文件清空后加入如下代码)<?php $id = "1";//指定分类idif($sortid == $id){require_once View::getView('log1');//调用文章模板log1.php(此文件必须存在,否则为空白页)}else if($sort == "$log"){require_once View::getView('log');//除上面指定的分类id外,其他文章模板调用log.php}?>第二步,创建刚刚在第一步中调用的那个文件即可(ps:必须创建log.ph,log1.php)如果要实现多个分类调用的不同文章模板的话,把上面第一步中的代码用else分开调用,示例代码<?phpif($sortid == "1"){require_once View::getView('log1');//分类id为1的调用文章模板log1.php(此文件必须存在,否则为空白页)}else if($sortid == "2"){require_once View::getView('log2');//分类id为2的调用文章模板log2.php(此文件必须存在,否则为空白页)}else if($sort == "$log"){require_once View::getView('log');//除上面指定的分类id外,其他文章模板调用log.php}?> 另一个更简单的方法:在模板文件echo_log.php的顶部 ?>的前面,加入以下代码if($sortid==1){include View::getView('log_id');exit;}其中$sortid==1, 是要设以下那个模板文件的分类ID,多个分类使用||,例:$sortid==1 || $sortid==2 getView('log_id')中的log_id就是以上该类要使用的模板文件名,注意模板文件名不要加.php 不同作者也可以使用此方法,只需要把其中的sortid改为author即可。 本代码在5.3.1版本上测试正常,如发现有问题请在本页留言反馈。原文地址:https://www.shuyong.net/iemlog/531.html
2020年04月21日
1,175 阅读
0 评论
0 点赞
2020-04-21
新浪、百度短链的生成
1、百度短链(dwz.cn)生成dwz.cn就是短网址的首拼音缩写,由百度提供服务。优点:稳定,毕竟是大公司开发。有数据报表:https://dwz.cn/console/report缺点:网址必须百度收录了才可以生成。>>正规生成:①.申请apikey申请网址:https://dwz.cn/console/userinfo需要开通开发者,跟着提示走就可以了。②.接口代码常用的语言都有:https://dwz.cn/console/apidoc然后HTTP调用即可生成。抓包生成:百度短网址的官方生成地址:https://dwz.cn/生成的时候直接可以抓包:https://dwz.cn/admin/v2/create参数就一个:{"url":"你要生成的URL"}这里就不过多讲解。2、新浪短链(t.cn)生成主要讲解新浪短链,直接上代码。//链接要做urlencode编码 const u = encodeURIComponent("你要转码的长连接"); $.ajax({ url:"https://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long={%u}".fmt({u}), dataType:'jsonp', success:function (data) { if(data && data.code ===1 ){ var url = data.data.urls[0].url_short; outShortInfo(url);//输出短链方法 }else{ layer.msg('生成失败',so.defn); } } });直接 jsonp 调用,source直接使用2849184197即可,是官方的key,放心使用。就一个参数url_long=你生成的URL,注意这里要做urlcode编码。urlcode编码在线工具:https://www.sojson.com/encodeurl.html四、短链的解码每一个短链服务一般自己会对应一个解码服务,我懒得对接,而且现在的短链鱼龙混杂,所以我就直接写了一个通用的。直接上代码。import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.HeadMethod; import org.apache.commons.httpclient.params.HttpParams; /** * 短链 解析成长链 * @param url * @return */ public static SOMap parse(String url){ HttpClient client = new HttpClient(); HttpMethod method = new HeadMethod(url); try { HttpParams params = client.getParams(); params.setParameter(AllClientPNames.HANDLE_REDIRECTS, false); client.executeMethod(method); String aurl = method.getURI().getURI(); if(StringUtils.equals(url,aurl)){ method.releaseConnection(); method = new GetMethod(url); params = client.getParams(); params.setParameter(AllClientPNames.HANDLE_REDIRECTS, false); client.executeMethod(method); aurl = method.getURI().getURI(); return SOMap.success().push("url",aurl); } method.releaseConnection(); return SOMap.success().push("url",aurl); } catch (IOException e) { Header headers = method.getResponseHeader("Location"); if(null == headers || null == ( url = headers.getValue())){ return SOMap.error("解析失败,确认链接是否存在"); } } return SOMap.success().push("url",url); }其实就是通过 http 请求,获取301、302后的url,有利有弊,使用了2种方式获取,其他的语言模仿写就可以了。里面的SOMap为我的封装,其实就是一个map,我为了方便链式变成继承了LinkedHashMap。另外AllClientPNames.HANDLE_REDIRECTS = "http.protocol.handle-redirects"。版权所属:SO JSON在线解析原文地址:https://www.sojson.com/blog/330.html
2020年04月21日
1,990 阅读
0 评论
0 点赞
2020-04-19
Typecho非插件实现首页隐藏单个或多个分类的文章
思路大概是:在模板中添加设置项->欲隐藏的分类ID(用英文逗号分割取多个)在index.php重新给文章列队(置顶文章同理)。最后通过分类与文章的关系(typecho文章分类是另外一个表)进行分类筛选。以下是index.php加入的代码://首页隐藏某分类文章 if($this->options->cidId && $this->is('index')){ $this->row = []; $this->stack = []; $this->length = 0; $order = ''; //清空文章队列 $db = Typecho_Db::get(); $restPostSelect = $this->select('table.contents.cid', 'table.contents.title', 'table.contents.slug', 'table.contents.created', 'table.contents.authorId','table.contents.modified', 'table.contents.type', 'table.contents.status', 'table.contents.text', 'table.contents.commentsNum', 'table.contents.order','table.contents.template', 'table.contents.password', 'table.contents.allowComment', 'table.contents.allowPing', 'table.contents.allowFeed','table.contents.parent')->where('table.contents.type = ? and table.contents.status = ? and table.contents.created < ?', 'post','publish',time())->group('table.contents.cid'); $restPostSelect = $restPostSelect->join('table.relationships','table.relationships.cid = table.contents.cid','right')->join('table.metas','table.relationships.mid = table.metas.mid','right')->where('table.metas.type=?','category'); $cidId = explode(',', $this->options->cidId);//分割文本 foreach($cidId as $i => $cid) { $restPostSelect->where('table.relationships.mid != '.intval($cid))->group('cid'); } $endSelect = $restPostSelect->order('table.contents.created', Typecho_Db::SORT_DESC); $rest_posts = $db->fetchAll($restPostSelect->order('table.contents.created', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize)); foreach($rest_posts as $rest_post) { $this->push($rest_post); } $this->setTotal($this->getTotal()-count($cidId));//重新设置文章数 }在functions.php同样要加模板设置: $cidId = new Typecho_Widget_Helper_Form_Element_Text('cidId', NULL, NULL, _t('首页列表不显示的分类ID'), _t('在这里填入欲隐藏的分类ID,使用半角逗号“,”填入多个,如:1,2,留空不显示')); $form->addInput($cidId);
2020年04月19日
3,771 阅读
0 评论
0 点赞
2020-04-18
改造 typecho 上传地址 URL
前言typecho 附件上传我是一直看着难受usr/uploads/2020/04/xxxxx.jpg太长了于是我直接修改了上传部分将其规范为usr/uploads/xxxxx.jpg这样来说好处是避免目录套目录看着舒服修改方法打开 var/widget/upload.php 大约在84行处备份后替换 uploadHandle 函数即可代码public static function uploadHandle($file) { if (empty($file['name'])) { return false; } $result = Typecho_Plugin::factory('Widget_Upload')->trigger($hasUploaded)->uploadHandle($file); if ($hasUploaded) { return $result; } $ext = self::getSafeName($file['name']); if (!self::checkFileType($ext) || Typecho_Common::isAppEngine()) { return false; } $path = Typecho_Common::url(defined('__TYPECHO_UPLOAD_DIR__') ? __TYPECHO_UPLOAD_DIR__ : self::UPLOAD_DIR, defined('__TYPECHO_UPLOAD_ROOT_DIR__') ? __TYPECHO_UPLOAD_ROOT_DIR__ : __TYPECHO_ROOT_DIR__); //创建上传目录 if (!is_dir($path)) { if (!self::makeUploadDir($path)) { return false; } } //获取文件名 if (isset($file['tmp_name'])) { $fileName = time(). '.' . $ext; $path = $path . '/' . $fileName; //移动上传文件 if (!@move_uploaded_file($file['tmp_name'], $path)) { return false; } } else if (isset($file['bytes'])) { $fileName = time(). '.' . $ext; $path = $path . '/' . $fileName; //直接写入文件 if (!file_put_contents($path, $file['bytes'])) { return false; } } else { return false; } return array( 'name' => $file['name'], 'path' => (defined('__TYPECHO_UPLOAD_DIR__') ? __TYPECHO_UPLOAD_DIR__ : self::UPLOAD_DIR) . '/' . $fileName, 'size' => $file['size'], 'type' => $ext, 'mime' => Typecho_Common::mimeContentType($path) ); }我比较喜欢在23行处修改usr/uploads 目录
2020年04月18日
4,131 阅读
1 评论
0 点赞
2020-04-08
Chevereto - 首页加入上传图片总数量统计
第一种方法在文件/app/themes/Peafowl/views/index.php 合适位置加入以下代码:<div id="home-cover" data-content="follow-scroll-opacity"> <?php G\Render\include_theme_file('snippets/homepage_cover_slideshow'); ?> <div id="home-cover-content" class="c20 fluid-column center-box padding-left-10 padding-right-10"> <?php CHV\Render\show_banner('home_before_title', (function_exists('get_list') ? get_list()->sfw : true)); ?> <h1><?php echo CHV\getSetting('homepage_title_html') ?: _s('Upload and share your images.'); ?></h1> <h1>本站共托管 <?php $stats = CHV\Stat::getTotals(); echo $stats['images'] > 999999 ? $stats['images'] : number_format($stats['images']); // Will output the total n° images ?> 张图片</h1>第二种方法:1、新建文件--保存为 count.php<?php error_reporting(0); $con = mysql_connect("localhost", "数据库用户名", "数据库密码"); if (!$con) { die('Could not connect: ' . mysql_error()); } $db_selected = mysql_select_db("tu",$con); $sql = "SELECT * FROM chv_images"; $result = mysql_query($sql,$con); echo mysql_num_rows($result); mysql_close($con); ?>2、放在 app/themes/Peafowl/views/index.php 文件中的合适位置<?php $data = file_get_contents('https://网站域名/count.php'); ?> <p>本站已托管图片 <?php echo $data ?> 张</p>第一种方法,两个div分别添加的代码建议分开写,刚开始搞了半天没搞懂问题出在哪里orz来源:https://www.yunloc.com/984.html
2020年04月08日
1,199 阅读
0 评论
0 点赞
2018-08-29
Freekan-3.8.5-去广告版本下载&安装教程
Freekan是前几个月很火的无数据库影视播放系统,可以免费观看各大电影站的VIP会员内容(其实也是依赖于解析接口),这里分享一个最新版本的Freekan源码,同时把原来源码的广告都去除了。Demo地址:http://movie.molijx.com源码下载地址:https://www.lanzous.com/i1renaf安装教程0. 准备环境 需安装PHP7.0以上版本 安装nginx 1. 下载并解压源码源码下载之后,解压到网站目录下,假设当前目录为:/www/wwwroot/movie.molijx.com/2. 添加域名并修改nginx配置notice:安装freekan必须添加域名(ip也行),然后修改nginx配置假设你已经添加了域名,然后添加以下配置到你的nginx配置文件中,设置伪静态if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } 3. 访问并安装使用建议 因为Freekan本身没有使用数据库储存影视数据,因此打开首页、列表页等都会较慢,如何选择服务器?在服务器运行 curl http://www.360kan.com/ 看看速度,如果打开很慢,那么放弃这个服务器吧 带宽问题。实际上Freekan就是个爬虫网站,而且是实时爬虫网站,如果流量较大的话,对服务器的带宽就有一定要求,最好可以有10M以上带宽 玩玩还行,流量大了的话可能会GG 文章来源:https://abbeyok.com/2018/08/29/freekan-3-8-5/
2018年08月29日
6,181 阅读
0 评论
0 点赞
2018-07-24
闲置小鸡挂机好项目:一路赚钱
最近撸了好些VPS小鸡,闲置着没啥用,推荐挂个一路赚钱回回血。大半年来,都没怎么认真挂过,其实收入也还算可以。对于我等小白,其它挖矿项目不会弄。这个直接微信提现还是挺方便的。先上一路赚钱注册地址:点击我AFF》》》》》》之前的博客上也有推荐过,https://cmsblog.cn/it/994.html。安装方法:# 获取安装脚本wget --no-check-certificate https://www.yiluzhuanqian.com/soft/script/mservice_19.3.1.sh -O mservice.sh #执行脚本开始挣钱sudo bash mservice.sh 22368这个22368就是我自己注册的ID,换成你自己的ID就可以赚钱了。如果提示flag needs an argument: -dev_name 错误,直接在运行一次 sudo bash mservice.sh 22368 ylzq 即可。因为它占用CPU非常高,所以有些VPS不让挖矿,最好不要上,以免封号。删除方法:一、删除定时任务:sudo crontab -l -u root 2>/dev/null | grep -v mservice | sudo crontab -u root二、停止服务对于ubuntu以及centos 7的用户service YiluzhuanqianSer stop对于centos 6的用户sudo pidof mservice | xargs kill -9三、删除程序目录rm -rf /opt/yilu/如果填错了ID,看官方解决方法:四、修改id和设备名如果上面不小心写错了id,会导致后台看不到收益,可以通过下面的方式修改。如果没有错误,可以跳过。sudo /opt/yilu/mservice -user_id 10014 -reg_device -dev_name zq01通过上面的命令可以修改用户id和想要上报的名称。这里我将用户id修改为10014,设备名称修改为zq01。请根据需要自行修改。设备名称也可以在用户后台修改。修改之后需要重启下进程才能生效。# 针对Ubuntu以及Centos 7sudo pidof mservice | xargs kill -9 && service YiluzhuanqianSer start# 对于Centos 6sudo pidof mservice | xargs kill -9 && nohup /opt/yilu/mservice > /dev/null 2>&1 &
2018年07月24日
2,495 阅读
0 评论
0 点赞
2018-07-23
64M NAT小鸡安装apache2+php5+sqlite+typecho博客建站
刚接触NAT小鸡,一开始比较蒙B,不晓得端口怎么映射的。折腾好久,现记录一下具体安装过程。以Debian8为例安装,64M内存就只能装个apache2+php5+sqlite这个组合了。开通ANT小鸡后,获得内网IP地址,比如我的:10.0.1.137访问:http://myserver.group/ports.php 得到SSH登陆端口及应用范围端口。修改登陆SSH端口:apt-get updateapt-get upgradeapt-get install apache2 php5 php-pear php5-gd sqlite3 php5-sqlite修改apache2默认80端口为11378vi /etc/apache2/ports.confvi /etc/apache2/sites-available/000-default.conf 重启apache2:service apache2 restart访问nat1.xbber.cn:11378 应该就可以打开apache2的默认主页了。如果没看到默认主页说明安装出错,先百度问题在进行下一步。接下来安装typecho博客就简单了。cd /usr/wwwwget http://typecho.org/downloads/1.1-17.10.30-release.tar.gztar -zxvf 1.1-17.10.30-release.tar.gzcd buildmv * /usr/www/chmod +R 777 /usr/www/usr接下来就可以访问之前的域名nat1.xbber.cn:11378就进入typechor的安装页业了。最后一步绑定域名,去掉端口显示。因为sfdbv.cn提供了域名绑定功能美滋滋的玩起来。欢迎大家测速:64m.ihaow.cn
2018年07月23日
5,736 阅读
0 评论
0 点赞
2018-07-22
debian版本apache开启伪静态功能
使用apt-get安装的apache情况:文件及目录 作用/etc/apache2/apache2.conf apache主配置文件/etc/apache2/mods-available 可用模块目录/etc/apache2/mods-enabled 有效模块目录(apache启动加载)/etc/apache2/sites-enabled 有效host配置文件启用伪静态功能加载模块ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load设置host允许重写vi /etc/apache2/sites-enabled/000-default <Directory /home/data/wordpress> Options FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory>将AllowOverride这一个配置项修改为all,默认为None编写重写规则回到网站主目录,编辑.htaccess文件,具体规则根据实际应用情况设置。重启apache/etc/init.d/apache restart
2018年07月22日
1,665 阅读
0 评论
0 点赞
2018-06-17
ss-panel魔改版搭建
最近折腾了下怎么搭个55R,方便朋友们使用。一直用的宝塔面板,所以参考下面这文章https://www.so6.org/post-59.html项目地址:https://github.com/sendya/shadowsocks-panel/releases搭好后部分截图。后端节点项目地址:https://github.com/Acris/shadowsocks-rm基本上可以粗糙的使用了。
2018年06月17日
1,137 阅读
0 评论
0 点赞
2018-06-13
一键搭建 MTProxy,快速连接 Telegram 的代理
简介MTProxy 是在新版本 Telegram 中内置的代理程序。博主试用了一下,觉得体验还不错。于是写成一键脚本分享给大家。特色MTProxy 由于内置在TG内部,占用小,耗电量小。其他代理软件可能电量消耗情况会比较严重。由于内置于TG之中,所以直接复制代理链接( tg:// 格式 )粘贴在TG内或者直接在浏览器中打开即可使用,无需配置额外的代理客户端。截图安装教程运行脚本:wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/MTProxy-Bash/master/install.sh && bash install.sh然后复制生成的TG代理链接,直接在本地浏览器中打开就好了,TG会自动启动并且询问是否使用此代理服务器。卸载教程直接运行脚本:wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/MTProxy-Bash/master/uninstall.sh && bash uninstall.shGithubhttps://github.com/FunctionClub/MTProxy-Bash
2018年06月13日
8,524 阅读
0 评论
0 点赞
2018-06-03
第二期:6.2-6.12阿里云服务器99元/年1H2G 1M 40GSSD,仅限新用户
阿里云第二期活动又来了。活动时间:2018年6月2日-2018年6月12日第一期:活动时间 2018年3月28日-2018年4月13日要上车的抓紧。仅限新用户,三年279元,非常实惠。活动网址:https://cmsblog.cn/go/aliyun
2018年06月03日
1,667 阅读
0 评论
0 点赞
1
...
3
4
5
...
18