白小姐资料一肖中特马博客https://www.hogsro.comQt.blogzh-CN 宝塔linux面板6.0+免费版启用waf防火墙 安吉做网站 https://www.hogsro.com/article/id/144.html 2019-04-11 00:51:16 https://www.hogsro.com/article/id/144.html

宝塔面板自从升级到6.0+免费版以后,宝塔官方为推广收费waf插件,将原本功能中的过滤器给屏蔽掉了,但其实过滤器的功能都完整的包含在了6.0的版本中。只需要简单几步即可启用原5.0中的过滤器。而这个过滤器事实上就是一个waf防火墙,并且源自知名的ngx_lua_waf。


一、启用隐藏的waf。

进入宝塔面板,软件管理,nginx设置,配置修改,http段中,删掉include luawaf.conf;前面的#号,保存一下。重启nginx,即可使用waf了。


二、查看和设置waf过滤规则。

进入面板,文件,根目录/www/server/nginx/waf中的三个文件。config.lua是waf的配置文件。init.lua是waf的初始化脚本。waf.lua是运行脚本。配置文件中几个配置名,从命名规则就很容易理解配置项是什么功能。我就不说了,图上的是我目前用配置规则。

1.jpg

过滤规则在根目录/www/server/panel/vhost/wafconf下面,文件名上就能理解每个文件对应的管控范围。建议用默认的吧,别改了,已经满齐全的了,如果你有更好的,可以在规则上补加。returnhtml这个文件是触发过滤器后的返回页面,为了防止千篇一律,可以个性化设置一下,html和css的基础就够了。


三、查看拦截日志。

日志是在根目录/www/wwwlogs/waf下面,可以下载到本地来看,也可以通过日志分析软件进行分析。白小姐资料一肖中特马这两天没吊事心血来潮翻了下拦截日志,随便取了几个IP百度了一下,发现怎么都是阿里云的IP。第一直觉就是过滤器获取了CDN的IP,因为白小姐资料一肖中特马博客是部署了CDN的,所以waf是没有获取到真实IP,拿到的全部是回源时候的CDN的IP。


四、修改过滤器的IP获取规则。

拿到的都是CDN的IP就没有太大意义了,所以必须拿到真实IP,所以得改造一下获取规则。在根目录/www/server/nginx/waf下面,找到init.lua文件,点编辑,第18行是IP=ngx.var.remote_addr。很显然,直接去拿remote_addr的IP来用了,那些被CDN代理后的IP全被隐匿了。白小姐资料一肖中特马从没写过Lua的脚本,所以大致看了一下整个文件的脚本,我看语法和ASP很类似,于是依葫芦画瓢,把函数getClientIp给改了一下,如下图。改完,就去翻了下菜鸟教程中的Lua语法,发现竟然没写错,这还真应了那句瞎猫碰见死耗子了。改完,保存后,7P群初中生说HTTP_X_FORWARDED_FOR这个应该取第一个IP吧,逗号分割的后面都是代理IP。也对,不过写完我就直接保存重启nginx后,测试了一下,好像是可以能获取到真实IP的,我也就懒得去改了,毕竟转换数组,还得去翻Lua的语法教程。算了,就这样吧。

2.jpg

好了,至此就可以完整的使用宝塔提供的这个隐藏福利了。


]]>
钉钉微应用开发免登流程 安吉做网站 https://www.hogsro.com/article/id/143.html 2019-03-28 14:46:02 https://www.hogsro.com/article/id/143.html

公司将办公协同基本上都搬到钉钉线上来了,偶有部门个性的功能,钉钉没有合适的应用可以解决,所以只能自己开发系统解决。钉钉企业内部应用分E应用和微应用,E应用说白了就是小程序,微应用是H5页面。如果公司内部系统全接口开发的,并且微信小程序有开发经验,E应用首选。内部系统是传统模式那就微应用吧。我们公司没有成体系的OA系统,所以就针对部分特殊需求单开吧,微应用更快。


一、申请企业内部应用。

先进钉钉开放平台https://open.dingtalk.com,进入应用开发栏目,微应用管理,创建企业内部应用,设置应用名称,logo、简介、应用首页,pc首页,后台地址,服务器信息等。企业内部应用是不需要钉钉审核的。如果是开发商,需要创建第三方应用,这个是需要钉钉审核的。内部应用创建完成后就会得到AgentId、AppKey和AppSecret。进入应用权限管理中社情对应的权限,默认开通的基础权限,如果需要审批、代办等权限需要在下面权限列表里面单独申请,不过还在不需要钉钉审核,即开即用。

二、钉钉免登流程。

钉钉的文档着实没体系,东一个链接西一个链接的。总结下来免登流程分四步:1、前端获取钉钉免登授权码code;2、后端获取access_token;3、使用授权码code和access_token换取用户userid;4、通过access_token和userid换去用户详情userinfo。

三、实现免登实现。

1、获取授权码code。

首先页面引入JSAPI。

carbon.jpg

其次调用JSAPI组件。

carbon1.jpg

2、后台获取access_token

access_token很简单,只要把AppKey和AppSecret传到接口地址上去,就能拿到。鉴于钉钉后端都是接口请求的,建议把curl提取出来做个函数,接口域名、路径、请求方式、传参全部参数化,调用统一的curl就好了。


3、换取userId。

首先把前台调用JSAPI组件的结果传到后台,我用AJAX干的。JSAPI组件初始化反馈的结果已经是一个标准的json格式,不用转换直接传后台就好。


再调用钉钉的获取userId接口获取userId,方法和获取access_token的方法一致,参数就是code和access_token。


4、换取userInfo。

调用钉钉获取userInfo接口获取userInfo,方法和前面一致,参数是access_token和userId。


四、注意事项。

授权码code是每次请求都不一样,单次请求的数据5分钟有效,所以没必要缓存,直接用一次调一次。access_token有效期7200秒,自动续期。缓不缓存根据需要自便吧


]]>
木婚五年,携手走进铁婚时间 安吉做网站 https://www.hogsro.com/article/id/142.html 2019-02-15 16:43:07 https://www.hogsro.com/article/id/142.html

自从有了娃儿,曾经从来没觉得时间过的快的我,总是感慨时间飞逝,一恍又是一年,如今小女已经四岁了,我俩也是朝着40岁的年龄直奔而去,按照我们老家习俗,36岁是个中年标志,过了36岁生日就真的是顶梁柱了,而36岁于我俩而言,也就是下一个春节的光景了。去年临时兴起写了一篇结婚纪念日的文,今年再更一篇怕是要变成了一年一更了,当然前提是博客没倒闭。


之前一直说吵架是我俩这几年的婚姻的主基调,加之婆媳关系不好,吵架更甚。去年婆媳终于不在一个屋檐下,相对来说吵架频次也确实降低了些,不过凶猛程度不降反升,甚至在2018年年末闹到轻生的田地,冷静下来,仍唏嘘不已。总结起来,吵来吵去无外乎每次同样的原因,最后又是同样的结局。之前看过一篇文章,关于男女相处之道,列举了最容易伤害对方的四种情形:1. 贬低对方。对方做错了一件事,你说:你真蠢,你怎么这么笨?2. 为自己辩解。要不是你起晚了,咱们也不至于吃不上午饭!3. 嫌弃对方。我都和你在一起了,你怎么还这么对我。4. 冷战。拒绝接受对方提出的协商条件,赌气不合作。而这些正是容易点燃怒火的引线,所以2019年再立flag,克制,沉默,反省,不轻言伤你,不妄言罪己。平等、尊重、真诚应该也是可以维持很好的夫妻关系。


虽然说再立flag,但是可以相见,未来还是会有争吵,特别是围绕着孩子教育问题。上次的一个幼儿试听课那老师说现在的社会经济环境导致了目前多数工薪家庭出现的一种普遍现象,家有儿女的同时,也有一个焦虑的妈妈,和一个缺失的爸爸。娃儿还没正式上幼儿园呢,我们已经因为教育里面开始有了冲突,比如关于要不要提前上托班的问题,媳妇主张要上,提前适应幼儿园的环境。而我不主张,我甚至不想让她去上幼儿园,因为国家规定一年级是从0基础开始教学,我只想让她多玩几年,有个无忧无虑的童年。即便将来,也不要上什么补习班、培训班,不要在人潮中迷失了她自己的天性。即便挤破头皮上了名校,花尽所有时间用来补习,她就能成材吗?大概率她会是如同你我一样,成为一个普通人,拿着一份能养活自己的薪水。虽说现在我能想的如此这般,可是再过一两个月就要开始幼儿园报名了,我有那魄力,能顶着世俗的眼光不让女儿上幼儿园吗?我肯定做不到,言行不一在自己这里就已经兑现,将来我们会因此而不吵架?是该认真的想想了。


预定的纪念品还没有送达,而此刻媳妇已经买好了晚上的《疯狂的外星人》电影票,如同对这个小家的付出,感谢有你,柴米油盐中我们一起,带着宝贝,共赴明天。写在结婚五周年的纪念日。


]]>
TP5.1接入阿里云短信服务(三) 安吉做网站 https://www.hogsro.com/article/id/141.html 2019-02-14 16:46:54 https://www.hogsro.com/article/id/141.html

自从上次TP升级后,一直也没有新用户注册,毕竟要验证手机号码,现在大家的隐私保护意识都很强大,也就是身正不怕影子斜,才敢大胆在我这种小站上注册,感谢大家的信任。那天看邮件,发现收到一个评论提醒,是响石潭医生的博客评论回复,才发现我的短信平台啥时候崩掉了,直接影响了大佬的到访。



查下停摆原因

先去查了下阿里云账户,看看是不是没钱了,用的是后付费的,用一条计费一条的这种。余额还有5块多钱呢,肯定不是这问题。那不是我应用的问题就是接口的问题了。简单调试了下我的应用,手机号,验证码都准确的传递到接口上了,不过接口没反应,既不反馈成功也不反馈失败,就是没拉起来。然后就去阿里云去看了下文档,是不是短信平台升级了,有个意外发现,SDK有新版,功能到是没有发现新增,但是SDK全部规范了。并且打了composer包,这就更好了,上次做的时候还是用的TP自定义扩展extend,这下可以直接用vendor了。

1.jpg

拉取阿里云核心依赖

切换到项目根目录,执行composer require alibabacloud/client命令,完成后,TP的vendor目录下就有了一个alibabacloud的扩展。接下来改造应用即可

2.jpg

使用阿里云OpenAPI Explorer生成需要的代码

如果,通过这个链接,进入阿里云OpenAPI Explorer界面,填写相关的短信模板签名,模板code,和模板变量。其中模板变量这里踩了一个坑,等下讲。右侧就自动生成了你需要的代码,拷贝其中的代码到你的控制器,稍加改造。

3.jpg

4.jpg

改造你的应用

首先当然是use这个扩展类库。原封不动的拷贝过来即可。

5.jpg


将AlibabaCloud::accessKeyClient的静态方法封装到自己的方法中,我这里就用上一版本的方法名了,给getAcsClient方法两个参数,一个手机号,一个验证码。下面的query请求数组将自动生成的用两个参数替代就好了,前面说我踩了个坑,我用模板里面的变量名称${code}传生成的代码,这里直接用了$num替换,报了一个Object {Message: "JSON参数不合法", RequestId: "EBA7EC8F-8484-45B8-A471-B9DB672C50F2", Code: "isv.INVALID_JSON_PARAM"}这样的错误,再回过头去看API错误码,发现原因,所以这里重新做下拼接就可以了。

6.jpg

7.jpg

然后改造下上一版中的发送短信方法就可以了,将$resp = static::getAcsClient()->getAcsResponse($request);改成$resp = $this->getAcsClient($data['mobiphone'],$num);将上一版中没用的json构造数据部分删除就妥了。


好了,水文结束,要下班了。


]]>
没有“年味”的春节 安吉做网站 https://www.hogsro.com/article/id/140.html 2019-02-13 16:18:28 https://www.hogsro.com/article/id/140.html

岁尾年终,紧赶着在年前两天放假了,休息了一天去买买买,又花了一天打扫房子和洗脸,收拾妥当,除夕当天赶着高速免费,早早的出发回家了。我家女儿习惯了睡懒觉,一般不到九十点钟是不会起床的,这天趁小家伙还在被窝,裹着毛毯直接在睡梦中给她抱车上了。一路还算不错,挺顺畅的到家,要论堵车,G50长兴林城段长年累月的肠梗阻,节假日不赶上都不正常。


禁止燃放烟花爆竹

耗时两个半钟头踏上了故乡的土地,脚还没沾到泥土就收到关于禁止燃放烟花爆竹的短信,措辞严厉,一副好像看谁都不爽的嘴脸。下午时分也收到了上海发来的外环内禁止燃放烟花爆竹的短信,措辞就好多了,至少大过年的还会祝个过年好。自从一些立法权限下放到地市级层面,浙北四线城市湖州就开始走在的作死的路上,满以为自己有着北京的政治地位,或者有着上海的经济基础,越是城市大,越是管理精细,浙北小城直接给你一刀切,管你呢,不让放就是不让放,不想想安吉48W人口,大部分还是传统的农业人口,安吉县还是一个传统的农业县。湖州也不过在浙江排名倒数的几位。不能因为大领导一句绿水青山,你下面就搞一刀切吧,这样的主政思维也是醉了。

1.jpg

2.jpg


提速降费在四五线城市的现状

过年了,老家的宽带也到期了,好巧不巧就过年这天到期,好吧,就去续费,700软妹币,一分不少,三年前是这价格,三年后还是这价格,关键是网速只有50M,三年前是20M。你就说坑不坑吧,感情国家这几年倡导的提速降费在大湖州硬是没有落地生根啊。三年前我上海这边小区800多一年的宽带费20M,三年后只有360块钱了,提速到了200M。因为老人不懂,还被营业厅忽悠了装个IPTV,NND,现在智能电视能装软件,能投屏,我要你个IPTV有鸡毛用?


初一凌晨的焦急

三十晚上守岁算是没正经守了,12点一过就去睡觉了,睡到后半夜,娃儿怎么这么烫,一摸,这肯定是发烧了,一顿翻箱倒柜找出两个温度计,电子温度计显示38.5,测了几遍,毕竟电子的误差大,用水银温度计量了一下腋下体温38.3,确实发烧了,问题是没有其它症状,从上海回来,娃儿的小药箱也没带,这大半夜的如果持续烧下去也不行,起床,初一的凌晨四点,奔向20公里开外的县人民医院。2年没回家,竟然单独建了一个儿科楼?急诊不错诶,好几个诊室,都不用排队,2年前在老急诊楼只有一个儿科急诊室。很大的进步。医生看了下,没啥大事,上呼吸道感染,喉咙有点红肿,备点美林,再开点蒲地蓝和豉翘就准备回家了。一想高速不是免费么,那我从安吉南上高速到安吉北下,就不用穿城区了,路上少些红绿灯多好,天还没亮,外面下着雨雾蒙蒙的,往云鸿路左转黑灯瞎火雾蒙蒙的,路口又宽,还有隔离栏,一没留意逆向了,丫丫个呸的,大初一的,要被扣三分罚200了。


所谓祸不单行,福无双至

经过早上那一折腾,初一一天没精神,年前就被H1N1流感病毒感染的我,咳嗽是更厉害了,这下好了感冒一下就感两年,爽呆了。下午跟着堂兄弟们去隔壁鄣吴给四叔拜年,啥都挺好的,临了被四叔家10多年的老狗给咬了一口,还好,习惯穿大头皮鞋的我,狗牙恁是没咬穿皮鞋,就是被咬的有点疼。这怕是戊戌年还没过完吧,己亥年初一还要来一下子,可真是“鸿”运当头啊。


买错的电影票

年前就跟媳妇说《流浪地球》肯定好看,于是初一就来订票,看初三晚上的,因为初一初二很忙嘛,也顾不上,电影院人也多,媳妇就在淘票票上搜索来着,淘票票这个有点问题,它定位只能到地级市,我们小县城并不能被单独定位出来,所以下面院线是湖州三县两区排一起的,需要在下面结果里面选影院。选对了影院,可是没有好位置了,都是边边角角的位置,上次被大黄蜂那个边角位置坑怕了,所以让媳妇果断选初四的,然后倒回去选日期,然后系统把默认的影院给重置了,变成里排名最前面的南浔的一家影院,然后看也没看,就付了钱,等收到确认短信后,傻眼了,票买在了100公里开外的湖州最东边,我可是在湖州最西边呀。赶紧进淘票票,发现这个还不能退不能改。只好先致电支付宝,支付宝提供了一个淘票票的客服电话,告知经过,软件为啥会自动重置选择的影院,淘票票客服还不错,答应先帮我们跟影院联系,看看能不能人工退票,毕竟跑100公里开外去看电影是件不现实的事情。结果算是惊喜,淘票票客服说已经协商好可以退票,并且补了一张15元的购票券给我们,似乎这有点受之有愧。妥妥的给客服五星好评。


看对的电影

经过重新购票,初四来到影院,影评就不写了,打小写作文最讨厌写观后感之类的题材。流浪地球的前半截剧情有点割断,据说是以为排片问题做了30分钟以上的删减。正好,这次娃儿看电影前半截有点闹,一会儿要上厕所,两会儿要上厕所,生物钟也是被这个春节给倒腾乱了。媳妇不辞辛苦的带着她跑了两趟卫生间,所以前半截正好她也错过了,事后问我前半截说的啥,我也没答出过一二三来。这几天看舆论上关于流浪地球的口碑吵翻了,豆瓣上那些诸如看到吴京就一星的,没看片就一星的,看到中国人拯救世界就一星的,尼玛让你爱个国就这么难?你Y天生就生了一副反骨?看着就挫气,算了,林子大了,什么鸟都有,这也是为啥中华五千年,无论哪个朝代总有奸臣总有逆子。

3.jpg


人生第一个十万公里

回上海的路上,不知不觉,发现破车已经被我开了十万公里了,刨去开其它车的里程,这算是一个明确的数据了,从此脱离新手行列,所谓三年新手司机,六年夹生司机,时间里程双重达标,开始进入老司机行列了,见的车祸多了,开车是越来越慢了,码表指针很久就超过130了。想一想,人生还有很多事没完成,特别是娃儿还没长大成人,真是碰了撞了还害了别人,三十多年来第一次如此这般的怕死。

4.jpg


最后,开工几天了,大家也都陆续开工了,祝大家新年工作顺利!

]]>
在上海外地牌照车辆异地年检流程 安吉做网站 https://www.hogsro.com/article/id/139.html 2019-02-04 01:28:49 https://www.hogsro.com/article/id/139.html

狗年最后一更,提前给大家拜年了,首先祝大家春节快乐,猪年大吉。这里要说的异地年检不单指满六年需要上检测线的车,同样6年以内的,无需上检测线的也可以在异地办理年检,申领年检合格标志。我的车还算运气好,刚买的那会儿遇上了6年免检,直接2年一换合格标就好,满6年又遇上可以直接异地年审,着实方便了不少。这次年检之前,我打了一下嘉定车管所的电话,确定了一下政策的准确性,被告知只要就近找检测点就可以了,百度一下离我最近的封浜检测站不足4公里。


首先准备好年检材料

年检需要带好你的驾驶证,行驶证,有效期内的交强险原件(副本),三角牌。去年检之前记得查一下自己的违章,违章需要先去处理掉。然后自行检查一下车辆灯光和刹车。我就是因为有个远光和刹车灯不亮导致耽误了点时间。说来也巧,上次打算去年检之前,刻意检查了一下,灯光和刹车都没问题,可是赶上了上海交警的机房搬迁,没办成,时隔一礼拜再去年检,远光爆了一个,刹车灯也爆了一个,悲催。


一、车辆尾气检测

到了检测站,直接开到小型车车辆尾气检测线上,到旁边小窗口取一个排放等级确认告知单,然后等排队轮到自己即可。检测员让你不要熄火,打开引擎盖。他们会在排气管上插一个检测棒,然后稳定油门在2500转持续数分钟,直到检测机上数据完成即可。然后会取得一个机动车排放污染物检测报告,一般私家车基本都会合格的吧,如果不合格需要去修理,八成是三元催化坏了。

2.jpg

1.jpg

3.jpg


二、车辆外观检测

从尾气检测线出来,到外观检测线,会拿出三角牌在车辆尾部进行拍照,车辆外观检查,主要是不能有占比过大的贴纸和拉花和更严重的擅自改色,如果占比过大的话会被要求去除后再来。然后就是查看灯光是否有不亮的情况。我就是因为两个灯泡烧了,去修了再次检测的。


三、安全性能检测

检测员会将你的车开到性能检测线上,分别测试前后轮制动性能,底盘检查。如果没有问题开到检测线最后部分会有一个灯光亮度检查,全部检测完成后会取得一个机动车安全技术检测报告。对了,如果你的刹车性能不合格,将会有点麻烦,先去修刹车,还不能换刹车片,如果换了刹车片,铁定不过,因为刹车片没有经过一定里程的磨合,刹车片和刹车盘之间的摩擦性能肯定无法达到检测标准。所以,如果你的刹车片比较薄的话,记得提前一点时间换掉。

4.jpg


四、缴费领取检测合格标志

拿到上述两个报告后,去大厅缴费窗口缴费,我这里是250块钱,然后去登记审核窗口交材料,需要把交强险副本和检车报告及行驶证提供给窗口,这里,我遇到了需要补拍照片的情况,其实我没搞懂这照片是干嘛的,一个是车辆前后的全景照,一个是驾驶位,放下车窗,手拉安全带的照片。补录照片后,就等着监测站将相关数据上传的车辆管理所,等车管所审核,审核通过后,就会核发年检合格标和打印行驶证有效检验日期了。对了,现在无需单独申领环保标志了,已经和年检合格标志合并了。

6.jpg

5.jpg


至此,全流程就办妥了,如果车辆没有太多问题,建议不要找黄牛,不能助长歪风邪气,并且现在检测站也不敢明目张胆让黄牛代办了,现在动不动就录音录像,传到有关部门,都是吃不了兜着走的事。好了,流程足够简单了吧,最后再次祝大家春节快乐!

]]>
两车剐蹭事故,对方逃逸怎么办? 安吉做网站 https://www.hogsro.com/article/id/138.html 2019-01-30 00:36:30 https://www.hogsro.com/article/id/138.html

没过年,今年就不算翻篇,最近运气差,回家路上还能被个二货给撞了。我下班从崧泽高架往嘉闵高架嘉定方向去,对方从崧泽高架往嘉闵高架闵行方向去,在匝道口,对方走在第一车道,我在第二车道,我车速比他快,在岔道的时候,正在超车,理论上对方应该早早的在距离匝道口150米处就应该变到第二车道,到了匝道口可以顺利右转,这货到了匝道口发现走错道了,不看反光镜直接打灯变道,我正在超车,一顿喇叭加油门顺道打了点方向让点位置,还是被二货把我后保险杠给撞上了,要不是那脚油门,得直接撞我整个侧面了,损失就大了。


等我超过他,发现我车身一晃,完犊子了,被对方刮到了,我就刹车停下了,二货在蹭了我以后完成了变道,结果直接右转道走了,留我自己在现场,妈的昏黄的路灯下也没看清车牌,只好打开双闪,后备箱找出三角牌,放好,打110,报警,简单描述下经过和具体位置,等出警,然后青浦的交警打电话过来问具体位置,因为这个地方正好青浦闵行交界的位置,描述了一下具体位置,挂了电话,闵行的交警打电话过来,再次重复了下事情经过和具体位置,告知我等在原地,交警马上过来,寒风中又等了5分钟,不见交警来,倒是又等来一通电话,告知我情况以记录,对方也不在现场,让我自行撤离现场,明天去闵行交警支队去处理。挂完电话匆匆收拾完就回家了。


到家后,第一件事就是讲行车记录仪的视频拷贝出来,导到电脑上,放大看车牌,不过盯盯拍的夜视效果并不好,应该说所有行车记录仪的夜视效果都不好,只能看清,大概是个银色的沪C*****的面包车,具体车牌就不写了,反复回看了下视频,确定自己无责。第二天请了半天假,去了漕宝路2008号的闵行交警支队。等开门后,填了自诉表,复印了交强险保单,驾驶证,行驶证。交到窗口,事情经过都没描述,大概是头一天晚上交警已记录过问题,也都没问我。告知处理的交警,对方逃逸,经过我查看行车记录仪视频是沪C*****这个车牌,最后一个字符不敢确定,交警说如果你的行车记录仪看不清楚,你也别指望高架上的监控能看清。经过交警在车辆库中查询,没发现这个车牌的车辆,再次打开视频,并请7P群里的小伙伴帮再次确认了下车牌,遴选了几组可能的车牌信息,经过比对,找到符合的车辆。交警说,90%就是他。然后就是交警给对方打电话,根据登记的电话信息,三个号码,有两个停机的,一个号码打通,没人接听。让我在边上等待过会儿再打,大概过了个把小时,还是没联系上。


这时候我只能请教交警后续该如何处理,万一对方一直联系不上,重点来了,交警告知,如果对方始终无法联系上,那么警方将会向对方的登记地址寄送法律文书(具体文件名没问,大概就是一个告知函之类的),如果对方接到警方文书,或者未送达,自警方寄送之日起,10日后,可以向警方查询。按照交警的工作规范,会直接认定为对方肇事逃逸,通知无责方来交警指定的评估机构进行车损评估(非保险公司定损),取得评估结果后,无责方可以向法院提起民事诉讼,追求对方的法律责任,同时警方会对对方驾驶证记12分并处罚金的处罚。


聊天的过程中,我开玩笑说,这似乎有法律漏洞啊,我们这种外地牌照,反正你们视频看不清,那我跑外地了,怎么办,交警说除了视频监控还可以调取安全卡口的视频,在合理时间段可能能排查出来,查出来后等文书会寄送到户籍地,通过两地联动,如果拒不配合的话,可能会被吊销驾驶证,将来重考驾驶证并不容易,还要来交警队接受其它方面的处理。法院判决肇事逃逸,还可能会影响到征信等问题,所以漏洞是不会有漏洞的,就是一件小事的处理代价比较大而已。


交警毕竟是用办公固定电话打的,有可能对方不接,我就向交警要来了对方手机号,我自己打,交警说上海本地人,一般打通都会来处理的,能联系上尽量联系。让我先发短信告知对方交警通知他来处理交通事故。然后尝试电话联系。我大概打了数个电话,又过了一个小时,终于打通了,电话甫一接通,我是没客气的就说你肇事逃逸,对方鸡鸡鸭鸭的说什么逃逸,然后我把电话给了交警,交警问了对方某某时间是否经过某某地方,待对方承认后,交警说你撞了别人逃逸,经过视频查证就是他。然后对方说我不知道啊,没撞到别人啊,交警说可以,我们就当你不知道,如果你知道撞了还跑掉就直接定逃逸责任了,现在我们就当你不知道,你现在去看下你的车右前位置是否有擦痕,然后过了会儿打电话过来,说确实有擦痕,问怎么办,交警说,你现在需要取得对方的谅解,配合对方把事故处理掉。他就问我,我想怎么处理这个事,我说怎么处理,你现在来交警队啊,该怎么处理怎么处理,对方说今天没空诶,我说行啊,我后面也没空,我就跟交警说追究你责任好了,对方思考再三说他马上过来,路程有点远,要点时间。好,我等。


差不多在交警中午临下班时刻,对方赶到了,交警说,事故不大,你变道撞了别人,你全责,他无责。你逃逸,现在对方比较好说话,也没要求警方追究你逃逸责任,现在开具事故责任单,你是否同意,你要不同意,那就出具你逃逸的责任认定。逃逸造成的损失,是进不了保险的。同意的话,全责责任可以走你的保险。拿到责任单后,马上给你保险公司打电话说交警责任已经订好了,你们自己协商去定损修车就好了。


事情到这里也就差不多了,对方平安保险,打了通电话,对方定损员估计也忙,说走快速理赔通道吧,用APP传了车损位置照片,驾驶证行驶证资料什么的,告知三天左右理赔金会下来,我的车定损500块钱,我也没异议,就保险杠一个面的油漆吗,差不多市场价400块钱的样子,定损500,我修车也够了,只是耽误了我的时间,请了半天假,扣的工资差不多都够这数了,算了,认倒霉吧,待离去的时候,对方说微信没钱,等保险公司把钱打给他后再转我,我也就好说话,说行,那就这样吧,基于对人的基本信任和与人方便自己方便的原则,甚至连对方欠条都没打就放对方走了,就加了个微信。


三天后的今天,联系对方给我转账,先是推脱说保险公司不知道有没有打,后是推脱说卡在他老婆那里,晚上查了再转我,晚上推脱说他老婆没回来,我倒是想看看明天给我啥借口。似乎我又遇到个厚颜无耻之人了,看吧后续得走保险公司渠道或者警方渠道追这笔钱了,要么保监会投诉平安不按规则操作,要么110报警对方赖账拒不赔钱,看来事情没这么快结束,这大过年的,让人生气。


30日又经过一天的催促等待,到晚上,我给对方发了一条最后通牒的微信,大意是我还说话你别以为我好欺负,如果明早我还收不到钱,我将采取其他措施来保障我的权益,由此造成的损失你自己承担。等到半夜十二点多,对方忍不住给我转账了。终于事了。


]]>
TP5.1多对多关联中间表批量写入失败 安吉做网站 https://www.hogsro.com/article/id/137.html 2019-01-11 14:21:40 https://www.hogsro.com/article/id/137.html

自从上次TP官方自爆了个安全漏洞后,火速就去做了升级,升级完我发现好几个问题,先是刚拉下来的框架就跑不起来,提示控制器不存在,反馈后流年竟然在线秒升级。后面又发现验证码加载不出来了,这个怪我,依赖没搞好,captcha扩展被删了导致的。再接着又发现paginate的query参数丢了,因为更新漏洞后,我发现参数获取方式变了,导致query参数被CDN给过滤了,没办法又去CDN做了下参数过滤排除解决。


然后过了两天我修改文章,发现文章标签又有问题了,选了多个标签,到最后就变成了一个,其他标签莫名都被删了,之前一直好好的,估计有是更新造成的。就去看了官方的更新日志,发现确实有更新多对多关联模型,这下好了,原本不更新没问题,修正了,反而有问题了,难道我之前的是将错就错么。

1.jpg


3.jpg


这个写入结果证明原本应该是多个ID的被写成一个了,就去翻了下belongsToMany的saveAll方法,翻来看去,也没发现啥问题,正常的将数据遍历后执行的save方法。没辙就去做了trace调试,明确的问题就是和预想的一样,不同的值被写成同一个了,那天流年在群里跟另外个小伙伴说做下跟踪调试,在model类431行查看下$this->exists结果,我顺道就去看了下我的,发现第一次写入的时候正常,后面写入都多了个主键,所以数据全写岔了。

2.jpg


4.jpg


对框架底层不熟,一时不知在框架上如何改起,二来下次等TP发版的时候应该就修复了,索性只在我业务层面改下算了,把原本saveAll方面改成遍历后调save方法写入算了(第一张图的注释部分)。


好了,水文结束,对了,似乎多个版本受影响,从5.1.28到5.1.32都有问题。


]]>
《大黄蜂》,写影评我不是认真的。 安吉做网站 https://www.hogsro.com/article/id/136.html 2019-01-07 01:21:20 https://www.hogsro.com/article/id/136.html

周末,因为点事情回了趟老家,来回奔波500公里,并且需要两天时间。第一天打算早早出门,结果晚晚出门,完成第一天任务后,去了小县城转转,毕竟小县城车让人在监控加持下蔚然成风,不得已,我又成了百度地图上的五星好司机。阴雨天气,想来也没啥可逛了,那九州广场自打开业,我这漂泊在外的游子也没像样的去逛过,索性去蹭空调了。三楼还是四楼有大片孩子玩的,逗留了两个小时就去吃晚饭了,吃完饭尚早,回酒店睡觉似又浪费,看个电影吧,拖着不到三岁的孩子怕搅了别人的雅兴,湿冷的江南冬夜,一不做二不休,就电影院,大不了娃儿吵了我们出来就是了,何况正在上映《大黄蜂》,何况自打孩子出生就没进过电影院了。

位置是没有好位置了,临时兴起购的票,边上就边上吧,正好万一孩子闹起来还能有个回旋的余地。开映前5分钟,购票取票验票一气呵成,给了两副3D眼镜,小伙子看着我们手上抱着孩子,犹豫要不要给孩子来一副(孩子是小号的眼镜),眼镜还在他手上,没等他开口,我就抓了过了,要。

坐定,边上确实有点不好,可见角度影响,我看荧幕的一侧总是灰蒙蒙的,这也就算了,该死的门口那荧绿色的安全出口还反光到了荧幕上,吐血三升。自打坐好,孩子倒是出奇的安静,戴上小眼镜,直愣愣的盯着荧幕,大概是没接触过这新鲜玩意,估计是捉摸这为啥不是放的汪汪队立大功。

IMG_20190105_162130.jpg


变形金刚番外篇

故事的梗概就是讲了赛博坦被打成废墟后汽车人来地球隐藏的背景。大黄蜂在一个废车场藏身,最后被女主给找到,并修复了他。经过一系列俏皮互撩互动后就是相互成就。典型的美帝商业片。用一个词来形容这部电影:人机情未了!


女主人公

一个刚刚年满十八周岁的跳水冠军。似乎是走到了职业瓶颈抑或受了什么打击,总之对跳水这件事,抗拒的不得了,在海边她那帮尖酸的朋友or同学面前,悻悻然走开,即使大黄蜂给了鼓励。另外一个背景是女主的爸爸挂了,在这个重组家庭,似乎并不那么和谐,总是看起来一副很独立的样子。我没看明白她那个弟弟到底是她亲的还是继父的。后来的剧情证明这个重组家庭还是很有人味的。


男主角

除了大黄蜂外,应该那俩都算吧,一个隔壁怂包,一个死脑筋的特工。先说隔壁怂包,从暗恋到最后修成正果(八字有一撇,一捺还没写),从初见大黄蜂的惊吓到营救大黄蜂的镇定,这算是个BUG吧,最后那阻挡增援部队的那种选择不知道是真怂还是假怂。死脑筋特工是个帅大叔,就他,演《海军陆战队》的那个肌肉男,百度的时候发现这货竟然能说流利的中文,我去。从开始不分立场的打击大黄蜂,到被霸天虎利用,有立场的打击大黄蜂,到不分立场打击所有外星人(汽车人和霸天虎),到最后被大黄蜂所救,送上的那一个敬礼,完成了敌友识别。你就这智商了,咋当的特工?


配角

女主角的弟弟,心好嘴笨,善良的主。女主角的继父,幽默负责,车技还不错,虽然那惊险的场面不是他能造出来的,但好歹因他而起。狂妄博士,先是想利用外星人找到对抗苏联的办法,结果被霸天虎利用,最后识破霸天虎谎言后,利用价值也就没了,下场就是变成圣伯纳犬的口水一样滴到地上。


幽默桥段

欢乐因素应该算是这部电影的最重要组成部分吧,毕竟要老少咸宜。据说电影的投资人是耐克家的公子,如果这电影拍不好他就会回家继承巨额财产,尼妹的继承巨额财产竟然是苦兮兮的差事。幽默主要是两块,一个是沙滩撩妹:大黄蜂又是摸头杀有是变乌龟(躲石头后面)。第二段就是大黄蜂在女主家试图偷看电视的拆家场面,那一系列风骚操作,这很憨豆。


核心意涵

这玩意一千个读者就有一千个哈姆雷特。从最后大黄蜂与那个红色的女霸天虎同归于尽后沉入水底的那一刻,女主才终于冲破了心中的魔咒,纵深一跃以堪比郭晶晶的水准压出水花,救起了大黄蜂(这特么到底谁救谁)。大黄蜂也因女主的努力和顽强找回了因失忆丢失的任务精神,算是完成了擎天柱交代的任务。


电影看到一半,我似乎发现我的小情人在我大情人的怀里睡着了,轻轻取下3D眼镜,这孩子马上把手捂到眼睛上,感觉很刺眼似的,又给她戴上,并横着抱起来,呼呼大睡,直到电影结束。这孩子第一次看电影就这样看一半睡一半,也没哭也没闹的就过去了,记下这属于她人生的第一次,以便将来说给她听。如果你也担心你家半大点孩子吵闹,不妨尝试一下,也可,只是音响声音太大似乎对娃儿鼓膜不好,无他。


整个电影把变形金刚系列电影中大黄蜂如何失声,如何变科迈罗的事情也都一并交代了。对了,最后加州大桥上那辆货柜车应该是擎天柱吧,如果不是别劈我,剧透结束,很显然这个把影评写成剧透的风格很白小姐资料一肖中特马。


]]>
如何组装一台电脑,攒机攻略。 安吉做网站 https://www.hogsro.com/article/id/135.html 2019-01-03 20:44:15 https://www.hogsro.com/article/id/135.html

话说年前,那台跟了我10年并且性能还没淘汰的电脑,终于在一次正常关机后,牺牲了。那天早上起来开电脑,点不亮,没任何反应,完了,最担心的事情发生了,毕竟这电脑有些年份了,一台电脑满打满算跑6年算是相当不错来的了,这台可是用了10年了。原先一直担心我组的RAID会挂掉,造成数据丢失,没想到的是主板挂掉了,彻底报废了。换主板是不可能的了,毕竟10年前的东西了,配件也算基本废了,不是接口不对,就是标准太老。唯独把刻录机拆下来复用了。

老电脑烧了也就烧了,毕竟数据是真重要啊,无奈就了外面有数据恢复能力的电脑店,拿去先检测一下,最终断定是南桥芯片烧了。那就恢复数据吧,在我的印象中RAID0如果磁盘坏了,数据铁定是找不回来了,微软也没办法。目前我这个磁盘肯定没坏,至少有恢复数据的基础。修理店老板倒是有工具,专门恢复阵列数据的PCIE卡和配套的软件。终于把我的数据都找回来了,浪费点票子。

话说回来,不是装电脑么,扯了这么多,算是前景提要了,谅解。组装一台电脑其实很简单,稍微有点动手能力的朋友都可以自己攒机。接来下我说说攒机的一些注意事项和操作方法,想到哪说到哪儿,可能没什么章法,见谅,全文约6000多字,全部看完需要花几分钟时间。


先上个我新电脑的配置单吧,后面我也好按照这个顺序来讲。CPU:酷睿I5-8500,主板:技嘉B360 HD3,内存:威刚XPG DDR4 2666 8G*2,固态:三星 970Evo,机械:酷鱼ST2000DM008 2T,显卡:影驰GTX1050Ti,电源:航嘉WD500K,机箱:金河田家悦7001B,显示器:三星S24E390HL。


关于选择配置的一些基本套路

首先就是要有预算,而不是看配件下单,土豪除外。有了预算以后,作为一个熟练的装机员基本可以评估出来配件的型号了,不是太熟悉配件行情的也可以评估出来配件的价格和型号选择范围了。为什么说能评估出价格范围呢,其实很简单,核心的三大件,外加显卡,其它配件价格影响影响因素小,举个例子,预算在5000元,第一个就要问的是否涵盖显示器,如果算显示器,那显示器没有特殊要求的,预算就减1000,剩下4000块钱,CPU,主板,内存,显卡四个大件平均在800一个,就可以圈定选择范围了。(这两年内存涨价有点离谱)。对于个人新手来说有了价格范围或者型号概念的话,剩下的就是工具了,推荐太平洋自助装机,在太平洋电脑网右上角有个按钮。或者采用京东的自助装机,在京东电脑板块,上面有个装机大师。京东的这个装机大师有个不好的就是配件选择方面,没货的就选不到,当然你如果想在京东买配件,没货选了也白选,像白小姐资料一肖中特马这种狂热的天猫死硬份子,坚决是不可能在京东购物的,毕竟二手东的名号不是随便叫的。


CPU的选择

CPU是一台电脑的大脑,大部分的运算都是需要CPU直接或间接(GPU承担了某些运算的一部分)的参与。目前用户层面桌面PC选择CPU也就两大厂商,Intel和AMD。两家厂商的特点我就不介绍了,大多数人都了解。我就提两个方面,用AMD的CPU可以搭一个3A平台(自行百度),选Intel特别要注意代际变化和兼容,不过好在主流的都是兼容的(上次公司电脑就把我坑到了,那是个非主流的机器)。这里就我的CPU来说下选择因素,首先Intel的产品定位,Intel分为高端的酷睿,中端的奔腾和低端的赛扬。酷睿又从I3,I5,I7,I9依次分级(前提是同一代级的),一般I3的双核是I7的4核中的两个,说白了就阉割了一半,I5四核是比I7效能略低的核心,I9土豪专用。博主的预算是不超过7K,含显示器,所以6000的主机来说,四大件占比80%的费用,CPU的选择范围就在1200元左右,而我估了一下主流的主板一半都在800多块钱,所以将400多的预算加到CPU上,CPU的价格到了1600左右,选择盒装产品,I5-8500直接进入首选范围。至于盒装和散片的概念请自行百度,早些年打磨散片坑人的奸商比比皆是,所以一直对散片无好感,另外盒装的散热风扇我是觉得足够用了,如果你是大型游戏的狂热份子,或者专业作图的,建议换个专业的散热器。另外有了型号了,其实接口就已经固定了1151的针脚。


主板的选择

选定了CPU后,主板的选择其实已经圈定了,选择合适的芯片组就好了。什么是芯片组?既然是组,那就不是一个芯片,通常我们说的芯片组是指南北桥芯片组合方案,例如说Z370,B360,H310这些,前面说AMD的时候讲到3A平台,其中一个A就是AMD的芯片组,例如X470芯片组。芯片组说了这么多具体啥用,主要是匹配不同的CPU和提供不同的扩展。前面说Z370、B360、H310其实都是intel300系列芯片组,其中Z370定位高端,B360中端,H310低端。举例来说:适配性方面,他们都支持8代酷睿,而如果你需要超频,那么只能选Z370,B360和H310是不支持超频的,扩展性方面,Z370支持三个M.2接口,B360支持两个M.2接口,而H310只支持一个M.2接口。对于我们普通用户,超频什么的是不可能的了,会玩超频的你肯定也不会看我这篇博文了,所以B360作为家用主流首选,价格更合适。说完芯片组,我们再来讲一下板型,你会经常看到为什么主板有大有小,这就是所谓的板型了,遵循的是ATX规范。主要分ATX大板,ATX小板。还有一种mini板。ATX大板就是标准的全尺寸主板,小板叫microATX。区别就是尺寸,尺寸大小又关系到插槽的多寡及散热和电磁干扰性。家用建议使用ATX大板,比如博主这块B360 HD3,当然对应的这个主要的小板型号是B360M-DS3H。说完板型,主板还有一个不得不提的所谓供电方案,主要是几相供电,简单理解就是供电相数越多,CPU越稳定,特别是需要超频的,供电相数太小会不成功哦。


内存的选择

作为普通用户选择内存第一要素,除了价格外,当然是容量。容量的选择是根据需求来的,随着系统和软件现在占用内存越来越大,现在跑个WIN10,8G起步。除了容量,内存我们还需要关注哪些指标呢?第一个是内存规格,我们通常说的DDR4、DDR3就是规格不同,买的时候看下主板支持的规格。第二个是频率问题,拿DDR4来说常见的有3200、2666、2400、2333。选择的时候,就高不就低,比如主板主持2400的内存,你可以选2400,2666这些大于2400的都可以,但是不建议买2333这样的了。如果玩内存超频的就另一种说法了。第三个需要注意的是所谓通道技术,也就是常说的内存双通道技术。例如现在要电脑配置8G内存,是选择单条8G还是选4G*2呢?理论上双通道模式下内存读写速度比单通道要快一倍,如果内存价格差距不是特别明显的情况下,双通道是首选,单通道最后考虑。现在很多主板都有四个内存插槽,有些主板做的人性化一点,四个内存槽的颜色是不同的,颜色一致的就组成双通道方案了,插内存的时候对应一下即可。7P组笛大佬说一般插1、3槽,我印象中只是习惯问题。如果四根槽默认支持的频率不同,优先选择高频率的两根。至于单通道没啥好说的,那啥,什么,你要插3根内存,你就当我放屁没说话好吧。最后对了,如果双通道的话,最好是同一品牌同一规格的内存,最最最最好是同一批次的。博主用的威刚,其实博主对OCZ恋恋不忘。


显卡选择

显卡关乎大家对显示性能的追求了,关于核显和独显的区别就不用科普了吧。我们来说说独显,它其实是分游戏显卡和专业显卡的。从芯片角度分,又有A卡和N卡的区别,A卡就是前面我说3A平台的最后一个A了,AMD的芯片方案,A卡公司在被AMD收购之前我们一般叫ATI显卡,就是A卡,另外一个就是NVIDIA显卡了,即N卡。如果说一定有什么区别,那么A卡在作图领域肯定比N卡牛逼,在游戏领域N卡绝对比A卡优化的要好。就这点区别了,如果对游戏要求不搞,经常做设计无论是平面还是3D设计,A卡会相对好些。如果追求大型3D游戏效果,那么N卡好一些。抛开这些,至于显存大小,显存位宽,显存频率,流处理器数量这些只要从指标数值就能判断出来,我就不说了。说点别的,比如玩个显卡交火,A卡的方案叫CrossFire交火技术,N卡叫SLI交火技术,玩这个需要综合看下主板和显卡的双向支持程度。比如楼主10年那台双卡交火性能,用硬件评测的话,性能仍然在主流位置。啥,你让我推荐品牌?这不太好吧,一般针对普通用户选择,我所认为的一线大厂,A卡的一线大厂是迪兰恒进和蓝宝石,N卡是影驰和七彩虹。博主这块显卡其实标配应该选GTX1060的,首选是预算我抠的比较紧,第二我对显示性能没多大要求,很多年不玩大型游戏了,所以选了个加强版的1050ti,价格比1060便宜,性能损失不是很大。


固态硬盘的选择

其实博主真的很多年不关注硬件了,固态硬盘这几年更新也很快,只要关注接口和读写速度就好了,M.2的硬盘肯定比SATA3的要来的快。固态硬盘的缺陷也很明显,读写次数的上限,老化速度,存储机制。固态的优势就是快,所以用来装系统和装软件不错,因为这些缺陷所以不建议用来保存数据。并且万一硬盘挂了,机械硬盘最差也好歹能开盘,固态就彻底嗝屁了。有个小技巧,固态硬盘不建议把数据塞满哦,因为存储机制的问题,最好用个百分之八九十就别装东西了,它不像机械硬盘能写到最后一根磁道。


机械硬盘的选择

这个就更没啥好说的了,就一句话,日立的盘说多了都是泪,希捷和西数随便选吧,除去价格,无非关注容量和缓存。西数早些年的绿盘事件,博主比较害怕,所以经博主的手装的机没有西数的东西。缓存越大越好,至于NCQ啊这种指标和其它新技术没啥可关注的,因为感官上你是体会不到的。


电源的选择

如果说CPU是大脑,那电源就应该是心脏,一个人心脏不好,这个人也好不到哪里去。电源的主要作用是将市电转换成各种电压、电流和功率指标的电力供给不同的配件。电源主要关注的指标通常只有功率,也就是说多少瓦来着,像B360的板子起码300W以上的电源带动。而我们所看到的电源功率通常是额定功率,实际功率是不足的,这里就会引入了一个指标叫转换效率,根据转换效率不同,为了更直观的了解电源,有个叫80PLUS的标准,通常有金银铜三个等级,除此外还有白牌80PLUS和铂金80PLUS,贵金属这东西你看哪个贵,就哪种80PLUS更好。如果计算一台电脑大概需要多少功率,还是回到四大件身上,简单而言,一个CPU预计需要90-120W的电力供应,主板需要50-100W的电力供应,一个显卡需要60-100W的电力供应,2根内存需要20-30W的电力供应,其他配件电力损耗就很小了,这样算下来差不多300W的实际消耗,那么额定功率按照80PLUS的转换标准,满载约要400W以上的电源。


显示器的选择

这个屏幕尺寸、分辨率、延迟、材质、接口类型,很多喜欢外设的朋友这个比我都专业,我就不说了,我就是比较喜欢三星的色彩还原度。


机箱和散热器的选择

那种花哨的亚克力材质,算了吧,追求杀马特风格的氛围灯,各种水冷炫技的搭配,不是我说的重点,我说的重点是有两个,一个是机箱尺寸,中塔机箱,标准机箱,小机箱,搭配你的主板的,别选错了。材质,主要集中在钢板厚度,镀锌涂层,和开孔方式。啥?这有啥用?因为隔离电磁辐射在电脑上最有效的就是镀锌钢板,材质越厚,镀锌涂层越厚,效果越好。机箱上的开孔是正六边形的孔最好。散热器的选择,如果不玩水冷,风冷方面,CPU盒装风扇我觉得够了,你可以适当搭配一个机箱后置12厘米的风扇负责抽风。这样散热就不是问题了,有些好的机箱风道设计的很好,再辅之以背板走线,即便是夏天没空调,散热也不是问题。


其实说了这么多,很多深层次的参数博主并没有提到,比如说CPU的纳米制程、缓存大小、超线程、虚拟化技术。因为这些对于普通用来说,不影响你选择配置,更多的和资深硬件玩家有关。


最后来手把手装机教学。

图片我拍的比较少,很多步骤自己一个人装机就忘了拍照了,我尽量把装机顺序讲清楚。装机之前的注意事项,首先你需要一把十字口螺丝刀。剩下工具都可以不用了,装机之前,特别是这大冬天,一定要除下静电,你穿个毛衣,满身静电去接触电子配件,保不齐就把那个电子管或者电容给击穿了。除静电办法先去洗个手,用手接触下金属的自来水管。或者大件的金属物体。


先来看看配件全家福。

1.jpg


装机第一步取出主板,除去外层的防静电袋。放置在一个平整的平面上,有些主板自带减震海绵,没有的话直接放桌子上就行,别有水就好了。

2.jpg


去掉CPU插槽保护盖,打开固定卡座,如图这样。

3.jpg


取出CPU,平稳放置在CPU插槽上,注意放置的位置,看一下CPU四个角,有一个角有一个三角形的标记,同样在主板CPU插槽上也有一个标志(标在卡座的金属上面的),两个标志对应起来,并且CPU和插槽均有缺口设计,防止放错,放上CPU卡住卡座就OK了。

5.jpg

4.jpg


插上盒装风扇,风扇底部和CPU接触部分已经预涂了散热硅脂,别用手去摸,将风扇四个脚对齐主板上CPU插槽周围的四个孔,用力按下风扇的插脚,听到咔哒一声就OK了,按的时候注意,对角用力。然后将CPU风扇的插头查到主板对应的CPU风扇插脚上,一般在CPU上方的位置,有个C_FAN的标志,并且带有防反插设计。插上就成功了。

6.jpg


接下来安装内存,将内存从包装中取出,打开内存插槽两端的卡扣(掰向两侧),在内存插槽上对应插上,内存和插槽有缺口设计,防反插。用两个大拇指在内存的两端均匀用力,直到内存插槽两端的卡扣自动卡到位。

8.jpg

9.jpg


然后装上固态硬盘,博主的是M.2口的固态硬盘,如果有多个M.2插槽,看下主板上是不是有标注不同的速率等级,优先选快的那个,基本都是靠近CPU的那个。说来也糗,博主这几年没装机了,到手的M.2硬盘因为被主板上的接口箭头误导,还以为要一个数据线。插好固态硬盘后,在尾部的螺丝拧松,把固态硬盘的半圆缺口卡进去拧上螺丝即可。


接下来我们要折腾机箱了,打开机箱两侧盖板,将主板轻轻放到机箱内部,看一下主板固定螺丝孔和机箱对应位置是否都有螺丝母座。比对完成以后,主板放一边,把没有没有螺丝母座的先拧上,就是图中这样的螺丝。把主板自带的一个金属挡板装到机箱上,用螺丝刀背部轻敲几下,知道四周都卡到位,注意,这个挡板四周很锋利当心割到手。然后装上电源,电源很简单,电源卡到电源卡座上,用四个螺丝在机箱外部固定就好了,然后把电源线全部从机箱内侧隔板上的空穿到另外一边,用于背板走线。如图这样的。

12.jpg

15.jpg

14.jpg


装好电源以后,再次把主板放置到机箱内部,把所有螺丝固定上,全部对角操作。不要用力拧太紧,免得把PCB板拧裂了,能固定不动即可。然后把显卡插槽对应的机箱挡板掰掉,用手来回掰一下就断开了


弄完以后我们装上机械硬盘、光驱(如果有的话)、显卡。机械硬盘在机箱前半截有对应的硬盘卡座,有些比较好的机箱,硬盘卡座是免螺丝的,塑料卡扣卡上就行,博主这个是上螺丝的。显卡插的时候和内存一样,先掰开后面的卡扣,然后插上显卡,手指在显卡两端用力知道卡扣到位,然后把显卡和机箱接触的技术卡座对应机箱上的螺丝孔,拧一个固定螺丝。这样就完成了所有配件的安装。

18.jpg


接下来就是重要的插线步骤了。插线主要是不同配件的供电接口是不同的,简单看一下你就懂,首先是最大的主板供电口,等下我在后面另配一个图片用来说明。然后就是CPU、显卡和机械硬盘的供电,几种插头不一样的。不会搞错。最后就是主板跳线的安插了,这个比较棘手一点,很多人搞不清。我们先来装AUDIO的插头,图中这个蓝色的,插到对应的插座上,主板上有标识。针脚有缺少,插头有实心,这也是防反插设计。再插黑色的这个USB对应的USB插座上,有些机箱有独立USB3.0接口的,记得插上。剩下就是电源开关重启按钮电源指示灯和硬盘指示灯的插头了,主板做的比较好的都用对应颜色标注了,实在搞不清的,翻一下主板说明书。电源插头一般是PW+-,电源指示灯是PWLED+-,重启插头是RES+-,硬盘指示灯HDD+-,这几种针脚因为有正负极,只要对着主板上标注的插上即可,如果主板因为印刷的问题,看不清或者没记录,那就翻一下手册或者官网上查下指南就行了。

19.jpg

20.jpg


在插线的时候记得根据插座在主板的位置,插线从机箱背板上不同的孔穿过来,多余的线就留在背板后面就好,插完内部各种线,接下来线束稍微整理一下,特别是CPU风扇的线,要预估下别被风扇叶片打到,如果过长可以打个圈圈留在那儿。然后就在外面接上键盘鼠标和显示器,通电看下能不能点亮吧。没问题就撞上机箱盖板完成了。


至于后面BIOS设置、硬盘分区、装系统不是本文探讨内容,这里就不讲了。这样就完成了整套电脑的硬件组装。前面大篇幅的硬件选择内容,可能有不准确的,都是基于博主自己的经验和喜好来的,仅供参考。


]]>
再见2018,你好2019 安吉做网站 https://www.hogsro.com/article/id/134.html 2018-12-31 22:00:28 https://www.hogsro.com/article/id/134.html

先来盘点一下去年立的flag,第一条就是保持8-10篇的月更。看看归档日志,别说达标了,竟然还有断更的月份。第二是完善这个博客系统,虽然赶着12月的时候把后端全部重构过了,前端重构还没开始,离完善似乎还远。第三,深度学习下TP5和PHP7,算了,简直无从谈起,额外的python更是在下半年直接中断了。第四,拖延症依然没有太大改观,在某些时刻倒是愈发严重了。最后,那个笑话成真了,糗。


来自白小姐资料一肖中特马博客的年终盘点

月更目标显然是没有完成。这一年博客总计更文76篇(含这篇)。上半年主要还是技术文,下半年就差不多“转型”生活博客了。这一年总共收到评论760条,当然这其中接近一半是我的回复。这一年总计收到留言14条,多数都是交换链接的留言。这一年总计有44位朋友在博客上通过手机号注册了账号(不包括我拉黑的3位)。这一年因为需要手机号来验证,阻挡了46位朋友的脚步(只计算点击了登陆按钮没绑定手机的用户)。这一年,博客系统大大小小改了37次。这一年博客总计有48055个访客,47240个IP访问,日均129个IP。这一年约100个关键词在百度前100名(若干个关键词稳妥的超越百度经验和行业龙头网站)。这大概就是白小姐资料一肖中特马博客这一年来的核心数据了。

QQ图片20181231210623.jpg

QQ图片20181231210648.jpg


博客的境况

双十一的时候下狠手花了2070买了阿里云2H8G5M的云服务器,把之前的三个一的突发给换了。12月的时候完成了从TP5.0到TP5.1的升级改造,并把前台做了大量缓存,mmTrix评测爬上92分,GTmetrix爬上A,C(C级这一个因素其实只是三个图片没有应用缩略图,懒得改了),myssl爬上A+。最近,在年终的最后两天,博客有幸被小志博客导航收录(PY交易)在2017年度内。

QQ图片20181231211415.jpg


博客之外的工作和生活

首先是产品经理身份,2018年7月重入职场,在一家传统企业从事互联网+的转型工作,传统企业远没有网络公司这边自由的时间和平等的对话,各种规章制度和职业等级及审批手续,有点恼人。经过数月的熟悉和介入,公司新业务这块正按部就班的步入正轨。其次是皮包公司这块,大量的工作都是搭档在做,大恩不言谢。

2018年的生活,依旧有吵闹,下次在结婚纪念日更文的时候再总结吧,女儿一天天长大,从咿咿呀呀到鹦鹉学舌,从一步三摇到健步快跑,慢慢的那假小子的发型如今可以扎起两条小辫了。不出3月,要开始在网上给她报名幼儿园了,看着似乎没变的模样,翻翻过往的照片和渐渐短小的衣服,道不是岁月催人老!


还是立一些flag吧,即便仍是无法完成

随行就市的做一些博客的更新,不能放弃的学习(这该死的互联网行业,技术的进步使人落伍),经营生活经营婚姻,育儿的路上还需披荆斩棘。别再偷懒了,出去运动一下吧,毕竟脂肪肝已经很严重了,别再拖延了,到手的活儿就地解决吧,毕竟拖到最后还是自己的事情。


最后祝各位新年快乐!2019,来了~


]]>
波轮洗衣机装不住水怎么办? 安吉做网站 https://www.hogsro.com/article/id/133.html 2018-12-15 13:36:38 https://www.hogsro.com/article/id/133.html

洗衣机莫名其妙罢工了,老婆也差点罢工了。这大冬天的手洗衣服着实有点冷,必须得修,本着自己动手丰衣足食的原则,说干就干。一般情况下洗衣机不存水,一直排水,肯定是物理管路的问题。而最大的可能就是下排水阀坏了,而排水阀故障主要是两个方面,要么阀体的密封橡胶圈坏了,要么电磁阀不回位。有这个基础常识就好办了,动起手来就有目的性了,无非就是一顿拆拆拆而已。


先来看个图吧,这是博主放了半天的水,只见上面放水,下面排水。这就算放一天也怕是放不满了。

1.jpg

先排查下故障原因。

前面说最有可能的就是排水阀坏了,如果阀体不回位,电路板故障也有可能。先给洗衣断电,拔下插头一分钟后再插上,重复注水程序。无果,指示灯什么的都正常,电路板故障概率比较低,那么久是排水阀的故障概率更高了,要么电磁阀坏了,要么就是电磁阀被什么给卡住了。从简单往复杂了干,那就拆拆拆吧。搬开洗衣机到宽敞点的地方来,拆开后盖,瞄一眼其实就发现问题了,电磁阀被卡出来。

▼这是洗衣桶的底部。

2.jpg

放大一点看到没,管路里面有个硬币。

3.jpg

排除故障取出硬币的过程。

先拆下下面的排水管,接着把电磁阀的阀杆拉到一边,这个需要点力气,常识掏出硬币,无果。只好去找一个钩子,我从铜包钢电缆中剪下一截,取出里面的张力铁丝,弄个弯钩,掏了半天,结果还是没掏出来,只好把洗衣机横向放倒,让硬币掉到口子边上,还是用手指掏出来的。这个就是那铁丝钩子。没起到作用。

4.jpg

5.jpg

最后掏出硬币,全部装回,试机,完成。告诫各位朋友,洗衣服的时候记得掏干净口袋里面的异物。好了我得去说说我家媳妇去。。。


]]>
七代的主板坑了八代的CPU 安吉做网站 https://www.hogsro.com/article/id/132.html 2018-12-13 15:36:15 https://www.hogsro.com/article/id/132.html

事情是这样的,天气冷了,电脑这东西说心肌梗塞就心肌梗塞了,上一周我自己的电脑南桥烧了,这周公司同事的电脑又烧主板了。传统生产型企业对电脑的要求足够简单,日常也就是office和ERP,所以除了我这个IT岗位外,其他部门的电脑配置就低不就高的原则来处理。行政部门给了预算,我写的配置单,采购下单买的配件,按部就班也就进行了。



组装过程顺风顺水

今天配件从某东来了,虽然我是强硬反东份子,但是公司的事嘛,我也不便说什么。某东还算快,隔天就到,当然没有我大天猫的电器城当天送的速度,检查了一下配件都齐全,型号也都对,那么二话不说,除了个静电后就来装机了,装CPU、插内存,背板走线,装主板,装硬盘,插线,一鼓作气干完了,噼里啪啦的拉来显示器接线通电。en.....,显示器没反应。

查找故障原因

先是怀疑内存没插好,换个槽,没反应。怀疑显示器或者信号线有问题,替换,没反应。尼玛,这就着急了,仔细看了下CPU风扇在转,主板灯亮。似乎没有故障现象。无奈,打主板厂商售后电话,告知现象,对方给的答复是插拔内存和CPU,我告诉他检查过了,不过CPU没去重插,就说稍后我再去试CPU,问对方,如果还是点不亮估计会是什么原因,该怎么办。厂商说那可能是质量问题,要退换货。无奈,打了某东的电话,报售后换货,对方告知要7天时间,瞬间崩溃。

找到奇葩的原因

网上没搜到有效信息,就去翻了下商品评论,大多数也都蛮不错了,在某东的相关问题里面看到有个说翻车了,点不亮,而另外一个人咨询是否支持9代CPU,我靠,我好像发现了什么,这种低配的板子会不会认代系CPU啊,马上又打厂家售后,厂家说,这款默认支持6代,现在7代也可以。尼玛我买的是8代的U,原因在这里。然后看到某东另外一块板子上面有一行小字:稳上非K8代酷睿。我买的那块板子没标,这下坑死了,顺道把采购同事也给坑了,又走退货流程,再走公司内部申购,补差价的流程,再下单,配件估计明天才会到了。


换了个支持八代U的板子,明天要是再点不亮,特么的我不能再吃攒机这碗饭了。尴尬,大写的~


]]>
网站有漏洞会受到什么处罚? 安吉做网站 https://www.hogsro.com/article/id/131.html 2018-12-07 13:19:28 https://www.hogsro.com/article/id/131.html

事情呢,说来也很简单,那天贸贸然又接到嘉定分局网安支队的电话,被告知博主某网站有漏洞,被利用了,上传了有非法信息的恶意页面。然后问博主这网站还要不要,如果不要了赶紧关掉,如果还要的话,那要抓紧时间整改,网警要上门检查并可能会有一定的处罚措施。emmmm....



事情呢就是这么个事情,所以上个图给大家看下,博主被处罚了啥?


关于计算机信息网络国际联网安全保护管理办法

原文我就不贴了,网上有现成的,大家可以去搜来看看。几个要点,我提炼一下,首先这个是公安部的部门规章,它的直接上位法主要是《中华人民共和国计算机信息系统安全保护条例》、《中华人民共和国计算机信息网络国际联网管理暂行规定》。公安机关根据这个办法来管理互联网安全这块的工作,现在都是各网安支队、网安大队的事情。其次,这个办法的主要内容有三大方面,一个是发布信息规范的“九不准”,一个是黑客行为“五不允许”,一个是信息保密。


安全保护责任

这个简单理解就是涉网单位负责制,谁的网络产品谁负责,比如服务器安全由服务器运营者负责,网站由网站运营者负责。负责的措施就是各种技术保护、信息管理、应急处理、安全教育、通报公安等方面的工作,细化下来有很多措施,大家可以去看下。


违法责任

前面说的九不准、五不允许、信息保密,一旦违反,或者未尽到安全管理责任的将由公安机关给予警告,有违法所得的,没收违法所得,对个人可以并处5000元以下的罚款,对单位可以并处1.5万元以下的罚款;情节严重的,并可以给予6个月以内停止联网、停机整顿的处罚,必要时可以建议原发证、审批机构吊销经营许可证或者取消联网资格;构成违反治安管理行为的,依照治安管理处罚法的规定处罚;构成犯罪的,依法追究刑事责任。处罚划重点:最轻的是警告,它属于行政处罚,就像博主这次的这个,一般是初犯。严重的就会被罚款和停机整顿了。


]]>
记一次马虎大意造成的熊掌号不收录的SEO事故 安吉做网站 https://www.hogsro.com/article/id/130.html 2018-11-27 13:34:05 https://www.hogsro.com/article/id/130.html

双十一的余温还没结束,说好不剁手的,结果双十一还是没经得起阿里云的诱惑,2核8G5M的服务器2070,割割肉,买。11月9号开开心心的把网站数据转移到新服务器上,然后这些天看着服务器负载低的可怕,就连装软件CPU都跑不满,又着实开始心疼钱了,这真是改不了的穷人属性。



最近本职工作之余一直忙着存量客户的备案真实性问题,也没撸码也没啥技术问题学习的,11月后更的两篇水文,一直没见百度收录,就挺奇怪的,排查了一下,之前程序多有调整,不知道什么时候把推送给注释了,就手给改了过来,再次手动提交了三个链接,过了两天百度反馈的结果是抓取失败1类错误,导出错误结果是404,网页无法访问。就尝试了一下常规的排查。


我首先看了下之前的收录链接,通过百度出来的链接是否能正常访问,点击访问一切正常。也就没怎么当回事了,毕竟我做的是佛系道系SEO。想想估计可能提交的时候服务器偶然宕机了吧,于是又耽搁了下来,这两天在阿里云买的域名VIPDNS到期了,通知我续费,就把域名解析点开了,想查下免费的DNS和收费的DNS有啥区别。其实问题就在这里,只是这个时候我还是没联想起来。


前天,我的SSL到期了,更换SSL的时候,原本想通过断开CDN,用A记录解析后通过宝塔自动拉取SSL的,结果在看解析记录的时候发现握艹,我的解析记录条数都已经两页了呀,好奇看了一下每条解析记录,翻到第二页的时候,发现我解析搜索引擎线路的时候是直接回源到主机IP的,而这个熟悉的IP我已经到了哇,从T5突发性能的茅草屋搬到别墅豪宅了,靠,一瞬间想起为啥百度索引反馈是404了,蜘蛛被我自己引到坑里了。然后我百度site了一下,好家伙,快照只剩25个了,赶紧把搜索引擎线路解析到新主机上,做好这一切,又手动提交了一下最新的三篇水文。静待今天百度反馈的结果了。


还好,今天早上再次site的时候,快照已经恢复了,再晚个几天,我怕是要被百度K站了。最后,告诫下有换服务器的小伙伴们,你们域名如果做了搜索引擎线路回源的话,一定要记得去改过来。


]]>
如何防止Access数据库被下载? 安吉做网站 https://www.hogsro.com/article/id/129.html 2018-11-22 02:41:41 https://www.hogsro.com/article/id/129.html

最近负责网络安全的各相关部门到处在追查各种漏洞,这不一个客户的老网站被扫描出了一个漏洞,漏洞详情是存在数据库文件泄露安全风险。需要及时处理。我就去翻了一下客户的程序,有几年了,并且是放置在客户的物理服务器上的,八成是相关的目录权限也没有做,估计客户那边也没有懂服务器的人,只好从不操作服务器配置的角度入手解决这个问题。


Access数据库因其是一个独立的文件,无需额外的部署,和ASP搭配便捷,往往作为ASP的标配。如果不巧mdb的数据库路径被扫描出来了,只需要通过浏览器就可以把数据库下载到本地,这就是安全隐患了。


防下载第一步给Access设置密码

给access设置密码主要是为了增加数据库被下载后的打开难度。通过以独占方式打开mdb文件,在数据库工具菜单中设置数据库密码给access设定一个高强度的密码。

QQ图片20181122015954.png


防下载第二步改文件名

改文件名,重要的是将文件名加上各种符号,特别是#好,可以做到很好的阻断,不过道高一尺魔高一丈,把#号使用urlencode转换成%23,就阻断效果就失效了。这只能算是组合措施中的一部分动作。


防下载第三步改文件扩展名

通常access数据库的扩展名是默认的mdb,被扫描的时候,别人肯定也是有针对性的扫描。那么将扩展名换一个能起到防扫描的目的,一般我们把mdb改成asa或者asp,以达到被iis解析的目的,这样也能阻止被直接下载。


防下载第四步修改数据库连接

上面三步做了调整以后,那对应的数据库连接文件也需要修改,由于连接有采用ODBC的,有采用OLEDB的,根据实际情况,修改连接字符串,加入连接密码。如果数据库被下载了,还需要下载连接文件,事实上增加了破解难度。


防下载第五步检查MIME映射类型

一般情况下,做好上述措施后即可测试下mdb是否仍会被下载,博主今天遇到的就是通过数据库路径访问后,发现浏览器加载出了数据库的内容,虽然是乱码的,这还是不行。所以再IIS配置里面查找下asa的映射,如果服务器上的程序无需指定解析asa的文件,建议直接删除对应的映射即可。当然还有修改映射的方式,也可以实现相同效果。


]]>
SEO中网页标题该怎么写? 安吉做网站 https://www.hogsro.com/article/id/128.html 2018-11-20 16:02:16 https://www.hogsro.com/article/id/128.html

写这篇文章缘起于那天沈独秀那个西北汉子转发的百度优化指南。指南内容主要是将关于网页标题搜索规范的问题论述。网页标题这里是特指html中的title标签,搜索引擎索引网页后用于展现的主体往往也是title的内容,由此可见优化好标题的重要性。本文尝试从若干个角度来总结一下百度优化实践中关于页面标题的书写技巧。



关于网页标题中使用符号

百度的优化指南中详尽描述的网页标题中使用的各种情况,那天沈独秀大汉说到首页标题中使用分隔符的问题。例如本博客首页使用的标题:白小姐资料一肖中特马博客 | 记录编程香港正版四不像图的学习博客。这里我使用的是竖线,并在竖线两边各留了一个空格。百度的建议是将多个短横线---,竖线|,下划线_,破折线—— 统一修改为一个短横线。不过我认为,用竖线、下划线和破折线都不打紧,如果你的网页有一段时间了,并且被百度正常收录,建议不要修改了。以后新增的页面可以建议直接使用短横线。下表是百度提供的关于符号使用建议,仅供参考。

未标题-1.jpg


写好各种类型页面的标题

1、首页标题。

首页是一个网站的入口,最重要的当然是表明网站身份,就像人的身份一样,首先肯定是网站名,公司网站建议使用公司全称,或者约定的简称。如果单单是网站名称似乎不足以说明身份,好比有些公司名字和经营的业务很难联想起来,那么就需要使用一个修饰短句。名称和短句之间使用短横线分割。如果很难找到修饰短句也可以使用主营的关键词来修饰,但是切记关键词不能多个,最好就使用一个关键词。

2、栏目页标题。

栏目或者是频道这样一个概念,标题上第一位体现栏目名称或者频道名称,后面使用短横线连接它的上级栏目。如果一定要强调逻辑归属,还可以在后面继续补上站点名称。在企业网站优化的过程中,我建议只要两级就可以了,如果栏目层次不深的话,上级栏目可以直接用站点名称替换。三层深度应该在我们优化过程中算一个分界点,别太深了,不好。

3、主体内容页面。

内容页是最终的落地页面,用户访问要查看的信息都在最终页面上显示,内容页的标题建议使用这篇文章的标题作为网页标题,后面也可以陆续跟上栏目名称和站点名称。还是那句话,层次别太深。


标题撰写原则

首先是实事求是,正如百度说的,你明明不是官网,非得在官网上写上官网,这不是技术问题了,而是诚信问题。

第二不要挂羊头卖狗肉,页面的主题和标题风马牛不相及,纯粹是给蜘蛛喂料,这样也会招致惩罚。

第三杜绝功利,比如您公司从事很多业务,只需要将主要的一项业务提炼出来作为修饰标题的短句,或者作为关键词修饰,切不可关键词堆砌,所谓贪多嚼不烂就是这个道理了。

第四模拟人工检索,通常我们在取页面标题的时候,特别是最终的内容页面,可以尝试站在访问者的角度来模拟用户可能会搜索的词,或整句,将词或者句子有机的整合在页面标题中,提升搜索的契合度。


SEO实际上是一门摸石头过河的学问,搜索引擎也是通过层出不穷的优化手法中去调整算法。只要不是很明确的作弊行为,搜索引擎的宽容度还是不错的,所以并非一定要按照建议去修改你的存量网页,更多的是要将增量的内容按要求来做。


]]>
科鲁兹、英朗等雪佛兰别克系更换车钥匙壳 安吉做网站 https://www.hogsro.com/article/id/127.html 2018-11-13 23:44:42 https://www.hogsro.com/article/id/127.html

双十一原本不想凑热闹,无奈女儿的洗衣皂没了,要买。老婆不知道听谁说的小孩要补DHA,得买。然后拿着车钥匙去车上找东西,把钥匙给按破了,得买。于是说好不剁手的双十一,还是没忍住。车钥匙经过六年的折腾,也没带个套,按来按去,终于抗不牢了,按键破掉了,话说换个钥匙壳这种小事还是自己动手比较好,淘宝一搜就来了,如果你也需要,可以点击这里



▼看看原厂钥匙被虐的惨况。

1.jpg


▼这个是淘宝买来的钥匙壳和拆装工具。

2.jpg


先拆新壳。

新壳拆起来也很简单,电池盖拔下来(后面有图),然后前后盖用力掰开缝,然后从尾部金属吊扣处纵向一掰就开了。拆开好的配件放一边。

3.jpg


拆原车钥匙机械部分。

下图这里有个插销,将钥匙和转轴连接在一起的,使用赠送的小铳子,对这插销,一顿敲,插销就出来了,老虎钳一拔就能下来,如图。

5.jpg

6.jpg


拆原车钥匙电池盖。

前面新钥匙壳的电池盖一样的拆法,钥匙按出来后,电池盖一抠就开了。

7.jpg


拆原车钥匙前后盖。

这部分是比较难拆的,方法其实和拆新壳的方法一致,只是原厂的这个卡的太紧了,不得以,我拿螺丝刀撬的缝,撬完后,强硬掰开。


组装钥匙及转轴。

方法就拆的方法一致,要注意,把钥匙头插入转轴后,看下插销眼,插销眼是不是一个圆形孔,如果有部分遮挡,就要使用赠送的三角锉刀给钥匙的卡槽打磨一下,否则待会儿用插销就卡不进去了。


组装转轴于钥匙壳的连接。

看下弹簧上有个小的短柄,钥匙后盖上有个对应的卡槽,短柄对牢卡槽,然后逆时针转两圈,扣上前后盖就搞定。转一圈,弹簧力度太小,两圈正好。如图。

8.jpg

9.jpg


拧上后台螺丝,贴好车标。

自己购买的这个钥匙壳前后盖加了一道螺丝固定,原车钥匙是没有的。拧上螺丝后在螺丝位置贴上车标即可,搞定,这次我把赠送的套套给带上了,显然带套很不爽。

10.jpg


]]>
忆五爷爷二三事。 安吉做网站 https://www.hogsro.com/article/id/126.html 2018-10-23 16:28:25 https://www.hogsro.com/article/id/126.html

五爷爷是我爷爷亲弟弟,排行老五,故称五爷爷,他于10月20日以98岁高龄仙逝了。周末的时候博主赶回老家奔丧,不过五爷爷这个年龄过世,在我们当地属于喜丧了,就是把丧事当做喜事来办。原本应该是个很热闹的场面,只是安吉县这两年出了一系列拍脑袋的不得人心的政策(不得燃放爆竹,不得请道士做法,不得请洋鼓洋号奏唱,总之一切出发点都是与人民为敌,与中华五千年的传统为敌。),也就导致丧礼现场冷冷清清。五爷爷是那种典型的经过旧时代和新时代的双重社会经历的人。博主出生的时候,五爷爷已经是老年人了。再加上这些年我一直漂泊在外,接触的也少了,所以接下来回忆的小事大概都是发生在博主10到20岁之间的事情,具体年月属实记不清了。


冬日池水净浣衣

那年冬天,江南的环境,池塘里早上还是会结起一层薄薄的冰,我们乡下洗衣服通常是在自家门口肥皂打好搓好,然后拎着洗好的衣服到池塘里面进行清水。去池塘洗衣服这种事情乡里乡亲的都像商量好了的似的,阳光还没穿透薄雾,池塘边已经站满了人。十来岁的我,朝冰上扔石头还是我那年龄段的乐趣。不多时便看到五爷爷拎这一大桶衣服来到河边,二话没说卷起裤管直接下到了水里,麻溜的洗起衣服来。这可是数九寒天,并且五爷爷已经是70多的高龄,既不是冬泳运动爱好者又没经过抗寒训练,那时候差不多把我都惊到了。这得交代下背景,一般洗衣做饭这种都是女人们的活,而五奶奶属于那种花脚猫的类型,喜欢到处跑,并且家务是干的比较少的,五爷爷有四个儿子两个女儿,他老两口那时候是不跟儿女生活在一起,自己单独烧小灶的。


桐油火撩蛇缠腰

一年春上,各种病菌滋生的时节。我上学上的好好的,突然腰疼,坐都不坐不起来,后腰上一阵刺痛,伸手一抹,全是水泡。向老师请假去了街上的合作医疗,医生说你这是得了蛇斑疮,打两针抗菌消炎的药后,你得找乡下土方子看。蛇斑疮是我们乡下的叫法,学名带状疱疹,有些地方叫蛇缠腰,各种叫法不同,但是有通用的一类说法就是,这水泡要是围着腰身长满一圈的话会死人的。吓的我妈赶紧带我找土方子。不知道是谁说的五爷爷手上有这个病的土方,我们赶紧去到五爷爷家。五爷爷说用桐油点着火燎水泡很快就好。只见他手拿一张祭祀用的黄表纸,卷成烟卷形状,沾满桐油,点着后就在我后腰处烟熏火燎,烟火触及皮肤的时候又是好一阵刺痛。反复几次后,让我回家休息,第二天再来,大概是经过了三五次这样的熏烤后,蛇斑疮奇迹般的好了。


迎春纳福写春联

听父亲说五爷爷年轻的时候是私塾的教书先生,改革开放后还做生产队的队长和村会计。除了写的一手好字,那算盘打的是飞快。那些年每逢年底腊月天街头都是各家写字好手搭桌写对联售卖。不像现在的春联都是印刷厂批量出来的,选来选去,也就几幅对子而已。年底我们这群孩子们早早的放了寒假,几个小伙伴便在五爷爷家帮着他裁纸,研墨。等到上街的时候,只见得五爷爷笔下生风,各种吉祥寓意的对子跃然纸上。而一些特定意义的对联,我们那边有这样一个习俗,一年中家中有人过世,过年的时候是不贴红色对联的,第一年是贴黄色的对联,第二年是贴绿色的对联。对联上的字也是有讲究的,不同平常人家那种迎春纳福的寓意。所以这样的对联更需要人工手写,买是买不到的。所以有很多需求这样对联的人家来买对联,通常需要跟五爷爷说下大致情况,他会根据主人家的要求来写对子。这里神奇就神奇在爷爷从不用翻书,各种类型的不论特定意义还是通用纳福的数千副对子,五爷爷总是手到擒来,似乎所有的对联都像是刻在他脑海中一样,写出来也是对仗工整分厘不差。


长寿秘诀

虽然五爷爷98岁过世了,其实如果不是前年摔了一跤,身体状况每况愈下,在这个国庆假期又不小心摔了一跤,造成大脑中有血块,他最少还能活好几年的。至于长寿的秘密?除了心态好以外,似乎并没有特别的秘密,也就是普通一日三餐,去年的时候还能一顿喝个三两白酒,烟不离手,那可是97岁高龄,前年清明节的时候,青团还能一顿吃11个,即便是我们这样的年轻人怕是也没这个饭量。一定要说有什么秘方,那可以告诉你,喝浓茶,他的茶杯满满一杯茶通常只见茶叶不见水。要想长寿你就看着办吧,哈哈。


]]>
驾驶证到期如何更换? 安吉做网站 https://www.hogsro.com/article/id/125.html 2018-10-20 22:52:48 https://www.hogsro.com/article/id/125.html

一晃6年过去了,驾照临近到期了,12123APP上显示可以进行到期换证操作了,抽了个周六的时间,去把驾驶证给换一下。换证之前得先确保所有的违章扣分全部处理完毕才行。然后找个就近的受理驾驶员证件业务的交管部门去办理就可以了。 当然博主这种行程十几万公里“老司机”(双关),已经连续几年没有违章了,保险起见临出门还是在12123上查了下确保没有违章才出的门。 



办理地点和时间

上海嘉定的驾驶员管理中心是在塔新路999号恒通驾校那里。他们工作时间是周一到周六,早上8点半到下午16点半。中午时间也可以去的。不放心的话,去之前不妨打个电话69160900。具体地址看下百度地图。从塔城中路过去到塔新路,就在那个路口,过红绿灯后有路牌100米右转进园区,红绿灯处有路牌写着嘉定交警支队驾驶员管理中心。然后别听导航的,今天我用百度地图导航,盲目的把我带到前面掉头,然后停在了马路对边,然后自己再次掉头进的园区。


办理流程

换证业务在四楼,但是你不需要先去四楼,可以直接去地下一层,在拍照体检处,做登记,走到最里面,出示身份证,交费25元办理拍照。然后拿着照片及给你的申请表,到外间交费50元,填写申请表,然后完成体检。

体检完成后带着表格和剩余照片到四楼导办台取号,有个交警在那儿的,告知换证即可。领到号后在右侧办理大厅等候叫号。

叫到号后,将材料交给窗口(一般是三号窗口),身份证、照片、驾驶证、申请表这几项给窗口,经过他们内部处理好以后,拿着给你的材料到旁边四号窗口等待即可。等制证完成交费10元工本费,领取新证。

总计收费85元,所有环节都有发票提供,如需报销的,记得收好发票。


关于驾照期限

C1驾照如果你在第一个6年期限内,每个记分周期内均没有被扣满12分,那么这次换证后,你的驾驶证有效期就变成了10年期的证件,博主拿到手的已经是10年证了。接下来在这10年中,每个记分周期都不被扣满12分的话,十年后再次换证就会变成长期有效的证件了。如果是大客大货类驾照驾驶员每年体检那是另外一回事。


]]>
海豚云管家是什么? 安吉做网站 https://www.hogsro.com/article/id/124.html 2018-10-18 14:13:05 https://www.hogsro.com/article/id/124.html

事情起因是本人在淘宝上购买了一件商品,卖家通过韵达公司发货。今天下午接到一陌生电话,告知小区快递柜被塞满,送货上门而我家又没人,改约晚上派送。我让对方把快递放到我们家的水表间,对方强调目前小区丢件严重,公司规定必须将快递送到客户手上,我心想,这快递公司还不错,对方说改个时间再次派送并询问了家里何时有人,答复对方晚上6点半有人,对方满口承诺6点半派送。直到晚上回家才发现白天这只是骗局的起点。


事发现场经过

到了晚上7点,送货来人并非之前的快递员,我以为快递公司换派送员了,就没有多想,在拿到快递后,对方强调双十一来临,快递柜爆满,为了代收快递他们负责在客户家门上安装一个智能锁,智能锁带有一个方便袋,在客户家中没人的时候,快递员可以将快递放入袋中,以便投递。并宣称是免费产品。没有多想就让对方安装了,我原以为对方安装的东西是韵达公司提供的,经过关注的公众号和安装过程,事后我确认,对方并非韵达公司员工,所安装的所谓智能锁也并非韵达公司产品,而是一个叫海豚云管家的产品。很显然这个负责安装的人就是海豚云管家的地推人员了。


违规的操作

等装完了,对方也走人了,我扒拉最后两口饭,细想这事儿不对呀,对方地推人员是如何拿到我的快递的?有这么几种可能,这个海豚云管家的公司和韵达的基层网点达成了某种合作,韵达私自将快递交给了这些人。第二种地推人员与快递小哥私自交好,获取的用户快递。第三种地推人员以兼职身份送快递,干着本职的推广产品工作。当然也不排除这家公司和快递总部达成的某种合作。但是不论何种情况,快递公司将客户的快递私自交给第三方这种行为都是违规的。根据邮政法第三十五条的规定,除法律另有规定外,邮政企业及其从业人员不得向任何单位或者个人泄露用户使用邮政服务的信息。很显然,这里韵达公司不仅泄露了我的个人信息,并且将我的快递交给了不相关的人。后经与海豚云管家的沟通得知他们与快递公司有所谓的合作关系,而这并不能成为这家公司接触到我快递的理由。


真市场假需求

经过这事,简单分析了下他们的商业模式和运作手法。商业模式其实也很简单,第一,他们自己经营快递业务,与快递公司合作,就等于是做了快递的代收点的概念,赚取的是配送费。第二,他们的系统带有一个微商城,通过这个商城上进行购买操作赚取的是商品利差。第三绑定的公众号这里媒体的完成导流及广告分发操作赚取的流量费。除此之外或许还有其他更多的赚钱方式。为什么这里我会说是真市场假需求呢,主要是从他们这个产品特点来看的,如图

QQ图片20181018140310.jpg

这就是他们的所谓智能硬件产品。一个智能锁下面挂着一个加铝箔的无纺布袋。通过拉链及拉环与智能锁连接。当快递员把快递放入袋中后,挂上拉环,用户通过公众号内的微商城上的开锁按钮近距离蓝牙通信开锁。第一个伪需求,首先是这个储物袋,并不是很大,并且仅仅通过连个拉环连接,粘门上的是通过双面胶,所以必然的结果是无法承受大件和重件。关于防盗,因为我电话中是让对方把快递放我们家水表箱的,对方表示被盗的概率很大,我们小区的安保措施一向比较好,如果水表箱中的快递能被偷,那么挂在门上的这个布袋不但容易被偷(刀片轻轻一划就开,或者干脆用力一拉就能下来)并且还太显眼,至少放水表箱不是明面上的,所谓不怕贼偷就怕贼惦记,放在门上的安全系数大为降低。项庄舞剑意在沛公,这个海豚云管家宣传的放心代收的服务,其实并没有什么卵用,也没他们宣传的那么好为用户考虑,他们真正考虑的是他们自己,通过高频的使用开锁服务,简单高效的展是了他们的自有商城,诱导用户在他们商城消费才是他们的目的。这里有个小小的现实,就想淘宝京东都逃脱不了假货的存在,拼多多更是假货泛滥,那么这样的小公司,品控如何大家不妨自己想象。


信息的自我泄露

忘了一提,在使用他们的服务,你还可以邀请你的家人也同步使用这个产品,在产品设置上面加入家人的手机号进行授权操作,现在,对用户的精准画像到了到了什么程度?家庭地址,家庭成员,如果外加经常购买他们的商品还能获取消费习惯这些相当精细的隐私数据,一旦泄露怎么办,这个风险大到不可想象。


经过一番思考,果断向邮政总局投诉了韵达公司,其次要求对方自行拆走他们的设备,退出微信群,取消公众号关注,删除对方客服微信,即便如此我的信息还是多了一个泄露渠道,记录下这些告诫自己下次别再着了类似的道,共勉!


]]>
博客启用新logo啦 安吉做网站 https://www.hogsro.com/article/id/123.html 2018-10-17 14:36:07 https://www.hogsro.com/article/id/123.html

最近光顾博客的朋友应该发现博主换了个LOGO,之前的墨绿色的云朵白小姐资料一肖中特马换了个图形并且换了颜色风格。去年新版上线的时候纠结没有logo怎么办,打算直接把博客名放上去就算了,联想到用的阿里云主机,广告全名云计算,干脆画个云朵放上去。这就成了之前一直用的那个版本。小插曲,去年年底的时候,沉淀小朋友还帮我画过一个过年喜庆版的LOGO,因为没有图形,所以我也没上线过,同样得感谢下沉淀了。


缘起豪车安排

说起现在这个LOGO的设计者,得提下我们的橘总监,一个高级设计狮,好好的公司设计总监不做,嫌带徒弟麻烦外加遇到一个抠门二货老板,索性辞职回家专职带娃,这个操作就厉害了。刚认识他的时候,群里发车,送了辆“豪车”给他(一个梗)。简单交流后,有一天橘总监发我一个设计好的logo。中国风,又符合博客名寓意,非常棒,只是一句话:和我现在这个博客风格不搭呀。遂搁置许久。


死缠烂打

最近橘总监终于熬过了老婆月子期。终于有事没事的折腾点事了,平时带带娃的间隙,又抽筋把其他几个小伙伴的logo给设计了一遍,一看机会来了,软磨硬泡,死缠烂打,拜托再让他帮我重新设计一个能符合现在风格的。这时候什么人活一张脸树活一张皮的概念早扔下水道了。架不住我三天两头的马屁加乞讨,又帮我设计了一个。不过得说回来,你要是跟他不熟,千万别开口,闭门羹是小意思,被喷就事大了。


LOGO寓意

这是一个符合江南园林风格的透花窗,如果你逛过苏杭一代的经典园林应该会多见这样的六边形。还有包括八边形的,圆形的,四叶型的各式的嵌在白墙黑瓦院墙上的。白小姐资料一肖中特马三个变化的字正好充当了透花窗的格栅。叠影效果更加立体,搭配浅绿。配上部分模糊的字体,有点近远焦的感觉。Copyright中西结合,完美。


对了,如果你有设计方面的需求,可以直接找他。小钱钱到位,设计包您满意。怎么找到橘总监?点这龙砚庭


]]>
三清山游记 安吉做网站 https://www.hogsro.com/article/id/122.html 2018-10-10 06:20:15 https://www.hogsro.com/article/id/122.html

时光总如白驹过隙,转眼间七天的黄金周已经结束了。话说七天假期窝在家不出门感觉算是浪费了,于是乎假期打算出去走走,预计了三到四天的行程,候选群里渣渣大佬们的家乡,包括笛大佬老家湖南张家界,滑稽大佬的老家古城西安,橘总监的老家福建厦门,小王老师的老家江苏南京,牛逼初中生的老家江西上饶。最终两个原因促成我们选择了江西上饶三清山婺源这条线。一是路途比较近,与我们浙江接壤,翻过衢州就到,单程500公里左右,二是相对而言人不是爆棚。最终老婆大人拍板,去江西。


行前小酌

国庆高速免费,一年就这一个比较适合出门的黄金周,所以人多是必然的,为了防止堵车这种尴尬的事情,作为老死机加夜猫子双重优势,果断选择后半夜出门,凌晨到达目的地,这样能显著避开那些驾照新手以及横冲直撞的旅游大巴。1号这一天,我们选择窝在上海,本地逛逛,让开第一波堵车高峰。正好顾村公园搞了一个啤酒节的小活动,还能免个门票,索性去了离家不远的顾村呆了一天,啤酒节的表演没看进去,倒是觉得旁边的水上表演还是挺有意思的,可能我这种土鳖没有玩过这种项目所以才觉的好玩吧。游荡了一天,饭点临了,我们一行三对夫妻三个娃儿,一顿炭火蛙锅祭了五脏庙。一天下来最终的成果也就是给老婆同事夫妻拍了一些照片罢了,顺道收获了一幅疲惫的躯壳到家。

1.JPG

千里驱车

鉴于第一天太累,2号在家窝了一天,收拾打包行李,预计下午能打个瞌睡,晚上好赶路,结果杂事忙完也没睡成,上半夜又略为兴奋导致没睡成。时间拨到半夜11点,准时出发。上了嘉闵高架或许是过节了车子都涌出上海,空荡荡的高架路,轻快的音乐响起,后座的老婆孩子很快就睡着了。不紧不慢的途径嘉兴服务区、西湖服务区、建德服务区,话说这年龄确实大了,一路竟睡意肆起,每到一个服务区短则眯了一刻钟,长则睡了一个时辰。等到常山服务区,东方鱼肚白已然泛起。后座娘俩也跟着起来,洗洗漱漱。等阳光从清晨薄雾中洒了下来,我们也正式到了八省通衢的地界,下了高速,换了国道县道乡道盘山公路终于到达山脚,时间走到了上午八点半。比我原本预计凌晨六点到达晚了两个多小时,再次感叹了岁月不饶人。

2.jpg

警车伏笔

车到山脚,有交警指挥车辆沿旅游公路路边停靠,搁在平时是可以直接开到景区,如今假日高峰,只能停在山脚换乘转运大巴前往景区。停妥车,路边倒卖登山杖和帽子的商贩就围了过来,三句两句不需要也就打发了,根据交警的指示,步行300米有换乘点,看着大巴就在前面,也没多想就赶了过去,这下埋了个隐患,直接造成我们下山后,愉快的达成了一次乘坐警车的体验。


始于足下

旅游大巴七弯八绕的算是把我们带到了景区山脚,随着人流走到了售票处,排了很长队伍,买了两张票,还不错,可以移动支付。当然也可以不用排队,直接微信扫码付,不过微信自助购买后是刷身份证进去的,貌似我们这样两个人要买两次也挺麻烦的,索性就排队买了票。售票处顺便给了一个号码纸,用于索道叫号用的,看到一群人排队,没搞清楚规则自然也跟着傻傻的排队,等队伍很长了,哪晓得前方工作人员大喊没号的不要排队,有号的根据叫号依次过来,等我明白这一刻,我们已经过了一百多号了,匆匆挤到最前面,把号给了工作人员,换回一句来了这么晚啊,也就顺利的进到索道候车厅了。等坐上缆车,恐高症的我,全程手心冒汗,两腿打颤,挨到了索道山顶,原本以为索道直接给我们带到山顶了,我俩带着半大点的孩子心想也不是很累,结果这才是真正的山脚,最开始以为停车处是山脚,到了景区以为索道起点是山脚,等下了缆车才发现前面都错了。接下来可谓苦行苦修之旅了。所以有的时候人呐,太自以为是总是要吃点亏的。

3.JPG

退堂鼓响

既来之则安之,扛着孩子,爬吧,拾级而上,没走几段台阶就气喘吁吁了,看着匆匆上山的人们,各色的行头,有小步快跑的壮小伙,衣着靓丽的美少女,岁月留痕的夕阳红,当然也不乏我们这样带着娃儿的中年油腻大叔。健步如飞的,拄着登山杖的,手牵手蜜语甜言的,大包小包带着帐篷的,欢声笑语夹杂着孩子哭闹声的,人流从人挤人前脸贴后背到稀稀疏丈外三两人,距离是越拉越大,山是越爬越高。顺着人流,我们走的西海岸的观光道,在岔口,我们的目标是三清宫,地图上看挺近的,自以为我们走了大半,休息处的三个小伙子从阳光海岸那边转过来这边下山,他们说我们走了三分之一还不到,直接吓得我夫妻二人心生退意,毕竟扛着走路蹒跚的半大点孩子是个体力活,孩子还不像背在身上的负重。此刻,我这个主心骨对老婆说,半途而废不是我们的作风,一定要去见见这山上的三位神仙。


三清福地

这里不得不提一下这次的旅游地——三清山。作为道教圣地名山又是世界地质公园,三座主峰犹如道家三清列坐群山之巅,而起于两晋时代的三清山,在道教史上有着十分重要的地位,唐元两朝,中国道家文化发展极为鼎盛,三清山和江西龙虎山一并成了道家圣地。而此次我们要前往的三清宫就源于唐朝的三清观,在明代扩建成为三清宫。供奉着道家三清,玉清元始天尊、上清灵宝天尊、太清道德天尊。而我们此行爬山的目标就是见见这三位道家真神,朝拜真神的路注定艰苦的。

5.JPG

凉心开水

经过相当长的台阶跋涉,我们到了最后一个一段平缓栈道前的补给站,最开始我们预估错误,误认为索道是上到山顶的。所以水和干粮我们带的并不多,经过这一消耗,到这我们就物资紧缺了。时间也到了晌午时分,饥肠辘辘,背包里带着泡面,到了补给站一般景区都有开水供应。结果一口被回绝,开水没有,只有买我们的泡面才给泡,单独要开水,10元一杯,再问泡面25元一碗,其实已经有了心理准备,景区加高山,双重因素还是着实被这价格吓了一跳,足足10倍的价差。最后明着挨宰吃了个透心凉而已。吃完,继续前行,果然是一段修在悬崖峭壁上的平缓栈道,没有了台阶,缓步上升,孩子也从我二人怀抱中下来,跌跌撞撞的自顾自的走了起来。


路遇善人

一路苦累咬着牙也就置身山中了,我家娃儿,约莫是走走抱抱累了,加上小孩子的新陈代谢旺盛,招致山中蚊子叮咬,正在牙牙学语的年龄,一个劲的叫痒痒痒痒,于是就给她挠挠,业已寒露时节,不曾想山上还有蚊虫,我俩也忘了带上止痒驱蚊药膏之类的,而一位下山的游客爸爸,带着他十几岁的儿子,正好经过身边,听到娃儿叫痒痒,迅速从他儿子背包中拿出一罐止痒青草膏递给我们,让我们给孩子擦擦,效果还真是立竿见影,作为不识货的我,还以为是紫草膏,还是老婆大人识货,一眼认出这进口高级产品,在千声万谢后告别那对父子后,我们接着又朝山顶走去。自从有了孩子,遇到需要帮助的时机就多了,也是如此才发现芸芸世界还是好人更多。

6.JPG

山间呐喊

正如前述,孩子正在牙牙学语阶段,悬崖栈道对着山间谷底,说话间似乎都能听见回声,便在孩子面前对着山谷喊了一嗓子啊声,孩子迅速跟进,学着喊叫。稚嫩的嗓音听的游客是一阵欢笑,我父女俩到是乐此不彼。老婆抱怨了一句,一路上就你这个爸爸在干叫,不等话落,女儿又接上了,路人神补刀,还有你女儿。又是一阵笑声。喊着或许喊动了对面山崖的游客,有人喊,天王盖地虎,正常思路我跟了一句宝塔镇河妖。哪知跟这帮孩子有好大的代沟,对面给补了一句,小鸡炖蘑菇,尴尬不已。

7.JPG

三清道观

到了山顶,又是一顿下坡,走到山的另外一面,半山腰,终于到了三清福地,三清宫就建在此处,山门见证了岁月长。山门前有一个略大的广场,好多带着帐篷的在此休整,他们大都打算在山上过一夜后再下山的。景区很大,其实一天是逛不完了,我们上午9点进山,下山是晚上6点,我们也只是逛了一半的景区。所以不想太累,又能欣赏美景,夜宿山上也是不错的选择。在到三清门前,孩子在我肩膀睡着了,我只能扛着她,进了山门,进了道观,自睹三清,也不曾叩拜敬香,一是抱着孩子不便,二是道教礼数不懂,我二人更多的算是半个佛教徒,所以本着不知者不罪,也就匆匆看了看三清的真容,便退了出来。

8.JPG

下山之路

稍事休整,已近下午三点时分,看了一眼地图,寻道阳光海岸这条路线就下山去了。有道是上山容易下山难,经过五个多小时的上山路,下山,小腿肚子直打颤,心中叫苦不迭。太阳西斜,凉意袭来,怕孩子着凉,白天气温高,也没带保暖衣物,山中美景也顾自不暇,只想着能在天黑之前下山。一路仍是形色人等,有搀着健硕老人的,有因路线之争的面红耳赤的,有恐高扶着栈道崖壁不敢走吊桥的,也有我们这样抱着背着熟睡娃儿的。经过一处临崖玻璃栈道休整后,我让她俩原地休息,我拍几张照片,老婆怕时间太晚,就跟我说她俩在前面先走,而我却没听到这句话,造成我拍完照片,没见到娘俩,可急坏了我,赶紧快步追到前面,且看到山下相当长的栈道上也没她俩身影,又着急忙慌的往回走,怕是错开了。结果回头再找一遍还是没见到,确信老婆孩子肯定在前面,等再次往前赶的时候,两条腿不听使唤了,下一级台阶,膝盖腿肚子酸疼酸疼。好在她俩在前面等我。在此之前我夫妻二人轮流抱孩子的,此之后,全靠老婆一人抱孩子了,不得不承认,在爬山的时候,老婆的脚力确实比我厉害的太多。我这一身肥膘算是白长了。

9.JPG

队伍绵长

路经一线天等景观,终于下到山脚,傍晚时分,索道处都是下山的人,等着排队做缆车,一眼不见尽头的队伍,如潮的涌动。维持秩序的特警说我真是佩服你们这些带着孩子上山的,别人拄着登山杖一趟下来都累的半死,我们也只好谦虚的说还好还好,还是有不少带孩子上山的。聊的起劲了,特警们说起他们见过最狠的是怀孕六七个月的还要上山的。一波一波的梯次放人后,排了一个多小时的队,终于我们也在天刚刚撒黑的时候到了山脚售票处,又怕换乘大巴结束,马不停蹄的跑到换乘点,还是绵长的队伍,还是焦急的等待。我们所乘坐的2号线一直没有车来,经过调拨的1号线大巴最后把我们带下了山。


警车奇遇

坐上换乘大巴,心安不及一刻,一团阴影袭上心来,司机说提前跟我说你们要下车的位置,因为每个人停车位置都不尽相同。而我,根本不知道我把车停在哪里,原以为这班车会在我们早上上车的地方停下。外面又是黑不隆咚,司机原本准备掉头的地方因车上乘客吵嚷说还有好几公里,最后把我们所有人都带到了最外面的终点站。而这个前不着村后不着店的地方,离我停车的地方还不知道是几公里,我也不知道我们是坐过了还是没到,下车就彻底蒙圈了。无奈打了110,经过110指令调拨,当地三清山交警大队一位交警与我们联系,然后实在没好气的跟他一顿抱怨加训斥,最后那边说另外会安排同事跟我联系,过了几分钟另一位交警联系上我们,说他正在下班的路上,待会儿过来,让我们原地等待。不多久,见一辆警灯闪烁的警车从前方过来,让我们上车,大致说明了一下我们早上的停车时间,交警判断我们应该是坐过了,于是掉头沿路边寻找,路上聊起说你们停车的时候没有定位啊,我只好说早上停车的时候就在换乘点附近,所以压根也没想到这出,大概找了几公里,终于路边找到我的车,临下车交警听说我们要转道去婺源,交代说晚上天黑山路注意安全,我们道谢后下了车。这里得再次感谢三清山交警大队的王翰飞警官,要不是他下班了还来接我们,我们怕是得在山上找车找几小时了。


善恶有别

转道去婺源的路上,已经晚上快八点了,我们之前在景区胡乱吃了些,可是孩子晚上还有一顿奶粉小家伙是必喝的,娃儿也是饿的前胸贴后背了,老婆不忍心说我去路边人家讨点开水泡奶粉。这大山里一是人家少,二是这大半夜的去敲门,我是觉的不太方便,我就说等等,过了一会儿我看到有客栈,路边停车,我说这里去要开水吧,对方店老板以为我们是网上订他们家客栈的游客,走到跟前道明缘由,二话不说帮我们倒了开水,我们说给她钱,人家不收,我们原本去婺源住宿,索性就问了下房间情况,被告知不好意思被定完了,让我们前面去看看还有很多酒店客栈。辞别后继续前行,到了另一面的山脚集镇,自己也饿了,就找了个可以停车的饭店门口准备饱餐一顿。点了几个菜,贵就算了,可以理解,关键是不给发票,走哪都要发票的我此刻顿时受了刺激,没好气的一转话锋:那我打税务部门电话了你不给我发票的话,哪知那老板娘也是社会经验丰富,你打吧,爱打不打,我们只有收据。作罢,怏怏而走,一想回头我找主管部门投诉不得留点证据啊,就转头对那老板娘说收据就收据吧,对方也是一脸不情愿的开了张收据,这特么连章也没有,老板娘你好歹给我敲个章啊,更加一脸的不情愿。临出门我又拍了下店名,打算回来投诉呢,这不,这几天忙着还没来得及。


计划有变

在饭店与其他客人交流得知,他一早在婺源只有十几分钟的车程堵车两个多小时,直接把我老婆吓的实在不想去了,再说秋天的婺源风景没有春景那般的美,一天下来浑身酸痛,老婆说我们回去吧,太累了,再三跟她确认想法后,打道回府。


]]>
上海最新2018年办理居住证全攻略 安吉做网站 https://www.hogsro.com/article/id/121.html 2018-09-04 01:54:32 https://www.hogsro.com/article/id/121.html

先交代一下这两个月断更的原因,博主迫于生活压力,另谋了一份差事,目前一人干两份工作,事情有点多,每天忙完工作就只想睡觉,我原本每天只需5小时睡眠的,现在来看,5小时都无法保证了,所以断更成了必然。各位博友的催更均以看到,抱歉没有及时回复大家。

今天本文题材是因为娃儿明年该上幼儿园了,根据经验,外地生源在上海上幼儿园需要居住证积分之类的,所以提前把居住证给办了,因为政策有所调整,所以网上并没有合适的办理攻略,博主收集了一些零碎的信息后,就去尝试办理了。


一、办理居住证政策调整。

1、2018年1月新政调整最重要的是删除了两个条件,一是不再需要提供劳动合同;二是不再需要提供社保证明。

2、2018年7月新政调整最重要的是房屋租赁合同需要做网签备案。


二、办理地点和所需时间

需要跑三个地方,第一是社区居委会;第二住房租赁服务中心;第三是街镇社区事务受理服务中心。


三、办理流程详解

1、本文介绍的是租赁房屋居住证办理过程,如果是自有房屋居住证办理更简单一些。租赁房屋办理过程需要约房东一起,需要房东提供房产证(不动产权证)和身份证。


2、先去社区居委会咨询办理上海市居住证事宜,他们会告知你所在区的办理流程和材料。主要是咨询一下你所在社区是否对房屋租金有要求。博主今天碰到有个家伙办网签跑了三趟没办成的,就是在社区对租金要求卡住了。为啥有租金要求这个事,后面再说。


3、与房东一起前往你所在区的住房租赁服务中心。嘉定的在平城路1055号1楼人才服务中心那里。到了服务中心先取号(嘉定的号取了没实际作用),然后在旁边自助复印机上复印房东身份证、房产证、承租人身份证,因为后续还需要,建议多复印几份。然后直接在吧台上领取《上海市住房租赁合同网签申请书》,按照模版进行填写。(如图)

1.jpg

注:如果房东房产证上的产权人有多个人的话,还需要同时填写委托书和承诺书。这两个材料吧台上都有。只有一个名字的,这两个就无需填写。另外申请书上如果家人也要一同办理居住证的话在居住使用人栏,填上家人姓名和身份证号。

填写好以后,将材料和对应复印件交与工作人员,他们审核无误后,告知你在旁边等候叫名字。叫到名字的时候,会给你三份网签合同,与房东分别都进行签字。签完后,服务中心当场收走一份,带着另外两份网签合同前往社区居委会。


4、在居委会填写居住证申请表,并提供相关材料复印件。这里需要说明的是,除了承租人以外,家人要办理居住证的还需提供亲属关系证明,例如夫妻提供结婚证,未成年子女需要提供户口本和出生证明。然后根据网签合同上的租金缴纳对应的房屋租赁税(理论上这个属于房东出,不过实际操作中这个都是房客出。这里就提到前面关于租金要求的事了。在社区允许的范围内,和房东约定的租金越低缴纳的税也就越少。年租金3W以内,缴纳3.5%的税。例如月租金1000元,那就需要缴纳420块钱的税)。


5、在居委会办理完成后,带上所有材料前往街道社区事务受理中心。在综合窗口先填一张房屋租赁备案登记申请表,并提供网签合同原件一份和材料复印件。办理完成后会出具房屋租赁备案通知书。


6、带上通知书和之前办理的材料在同一个地方人口管理窗口办理居住登记。办理完成后会出具居住登记凭证。拿到居住登记凭证半年后再到这里来办理卡证。


好了,大致的办理流程就是这样了。博主今天早上顺序颠倒了,先是直接去的房屋租赁服务中心办理的网签,网签办完有直接去了街道社区事务受理中心办理的房屋租赁备案登记,办完后去办理居住登记被告知需要去社区居委会填写申请表。还好在居委会顺利办妥后又跑了一趟街道社区事务受理中心。


]]>
TP5框架下验证码自动刷新的问题 安吉做网站 https://www.hogsro.com/article/id/120.html 2018-07-20 16:36:18 https://www.hogsro.com/article/id/120.html

这其实又是一篇初级水文,一转眼7月已经到下旬了,看着归档数据上的数字心里有点惊吓。因为博主的前端很菜,菜到需要经常记录函数来帮助自己学习前端。本文应用场景很简单,就是验证码验证失败进行error回跳的时候并没有执行刷新,因为TP5的error方法执行的跳转地址默认是javascript:history.back(-1);所以,页面并没有刷新,验证码也就没有刷新操作。



通常页面上载入验证码我们是通过这样来实现的:<img src="{:captcha_src()}" onclick="this.src='{:captcha_src()}?'+Math.random()" />,这个时候我们点击验证码会执行onclick函数,刷新验证码。而error回跳并不会执行onclick函数,所以验证码也就无法刷新了。


解决办法也很简单,先写这样一段js函数。

未标题-1.jpg

然后把我们的验证码加上id属性id="vcode"。最后在body中onload一下上面的函数名即可<body onload="refresh()">


水完了,捂脸逃。PS,我是标题党,因为这不是TP5的锅。


]]>
一款大气简洁typecho主题(OVERFLOW主题) 安吉做网站 https://www.hogsro.com/article/id/119.html 2018-07-06 02:27:39 https://www.hogsro.com/article/id/119.html

最近小伙伴们都是异常给力,都在上线自己的主题。此出题作者雨落泪尽,一个不折不扣的大学生,一个未来的教育工作者,一个直来直去的小伙伴。认识他应该也是在进boke112群不久,和另外一个小伙伴沉淀都是在读学生,都是叫我大叔的年纪。雨落这家伙总是想在我这儿占点便宜,却总是被我倒打一耙吃个闷亏。比如他父亲节文章下我的留言。比如我有个不到2岁的女儿,这家伙总说自己还小可以做我女婿,于是将计就计让他先叫声爸爸,哈哈,坑死这家伙。



言归正传,这款主题的特点。

overflow是一款单栏的自适应typecho主题,简约是其最大的特点。主题自带了常见的必要功能,例如采用aos页面动画库,丝滑享受,你值得拥有。首页文章缩略图,支持随机图片显示(内置24张精选图片)。卡片式友链布局。自带归档页面模板。支持代码高亮等等。


效果预览。

这个主题效果就是雨落泪尽的博客站:https://1000yun.cn/

归档页面效果预览:https://1000yun.cn/archives.html

友情链接效果预览:https://1000yun.cn/links.html


说这么多都不是重点。

重点是这款主题是免费的,免费的,免费的。一款良心主题收费无可厚非,如果良心主题并且免费的话,你考虑下要不要入手呢?


如何获取这款主题?

由于主题作者不知道想了个什么心思,要求给他发邮件,并且还没提供邮箱,我勒个去,咋办?简单,去他网站发个评论,就能收到评论回复邮件了,那就是那小子的邮箱。


未标题-2.jpg


]]>
上海市住房公积金在线考核试题 安吉做网站 https://www.hogsro.com/article/id/118.html 2018-07-06 02:00:22 https://www.hogsro.com/article/id/118.html

家里领导全职带娃了,所以得把她的社保和公积金转移过来,由于我们之前一直没开户,所以最近才来办这个事情。原本想着还挺简单的事情,没想到七搞八搞还挺复杂的,特别是这个公积金平台,原以为最简单,没想到竟然最复杂了。作为新开户的企业,第一次上网操作,竟然要评定操作能力,进行测试,不通过就不能进入系统。考试有两次机会,需要达到80分才能通过。如果两次不通过,就需要参加线下培训,这么忙哪有时间参加线下,所以得看下线上的培训视频。


第一次我匆匆看了下公积金的操作流程就去答题了,没想到竟然只有70分,题目50道,限时1小时,判断和选择题。第二次考试前就想在网上搜这试题和答案了。强大的度娘竟然没找到这类试题,没办法只能硬着头皮火速把培训视频过了一遍。接着就来答题。这次为了保险起见,我把所有试题边做边记录下来了,怕万一再不过要去线下培训就对着这些试题选择性的去听。还好,最终考了86分,通过了。现把试题全部分享出来,如果有需要的同学,请自行去找答案,找到后再去测试。因为我没有做满分,所以也不知道具体哪题做错了,所以我的答案就不贴了。


1\住房公积金年度基数调整,月缴存额的上下限按照年度基数调整的文件规定实施。

2\单位基本住房公积金账户和补充住房公积金账户可以建立在不同的区。

3\单位有员工要办理住房公积金账户的转移,本单位原先在黄浦区缴存住房公积金的,可以在徐汇区办理员工转出手续。

4\单位至单位住房公积金账户所在地的公积金中心管理部为员工办理住房公积金账户封存手续,应提供一式一联的《上海市住房公积金(补充住房公积金)封存清册》和终止劳动关系的证明材料。

5\住房公积金缴存基数年度调整是每年的6-10月份进行的。

6\开户或启封时工资基数输入错误,单位应该办理“年度基数调整”业务。

7\直联汇缴操作完成后,进入“直联业务管理”,若操作结果显示异步交易成功,可选中该条记录,点击“支付结果查询”获取支付结果。

8\单位可通过公积金网上业务办理系统多次为同一职工操作补缴业务。

9\网上下载《上海市住房公积金汇缴变更清册》可以使用。

10\职工已有住房公积金账号在其他单位,可以再新建一个账号。

11\启封时,单位未按规定的工资基数为职工填报住房公积金缴存基数的,可以进行修改。

12\城镇户籍职工与单位终止劳动关系时,单位存在欠缴住房公积金的情况下可以办理集中封存。

13\住房公积金缴存基数按照个人上一年度月平均工资每年调整一次的工作叫住房公积金年度“基数调整”。

14\单位因合并、分立、撤销、破产或者解散而终止的,应当自发生之日起30日内办理账户的注销手续。

15\《上海市住房公积金汇缴变更清册》为一式二联的表单,需要加盖单位公章。

16\住房公积金年度基数调整,如果员工上一年度月平均工资没有变化的,可以不要调整。

17\单位应当至单位住房公积金账户所在地的建行公积金网点办理首次汇缴。

18\员工住房公积金末次汇缴到六月份要离开公司,必须在住房公积金年度基数调整完成以后再办理员工住房公积金账户的相关处理业务。

19\单位为员工补缴12个月之内的住房公积金,可以直接到建行公积金业务网点操作。

20\若单位使用转账支票办理住房公积金的汇缴手续,应该在单位账户所在区的建行公积金业务网点办理。

21\单位为员工补缴住房公积金超过12个月的,以下不需要提供的材料___。

22\单位至单位住房公积金账户所在地建行公积金网点办理汇缴时,若当月公积金汇缴人员没有变动的,单位需要提供___。

23\员工在上海正常缴纳住房公积金以后,原先外地缴纳的公积金可以转移到上海的个人账户中的情况下。本人可以带好       到上海市公积金管理中心业务网点申请通过全国住房公积金异地转移接续平台办理异地转移接续业务。

24\以下哪项信息无法通过单位公积金网上业务办理系统直接完成变更?

25\通过单位公积金网上业务办理系统为职工办理待销户停缴,职工年龄需要到达法定退休年龄,即男性满___,女性满___。

26\以下哪项不是职工查询个人住房公积金账号的渠道?

27\单位为在职职工补缴住房公积金超过十二个月,需要到以下哪个网点审核___。

28\通过单位公积金网上业务办理系统下载职工账户明细信息,最多只能下载到____的单位账户明细信息。

29\职工账户转入补缴单位后___个月以内(从转入之日的次月计算)可申请网上补缴业务。

30\职工住房公积金账户仍在原单位的住房公积金账户内,但原单位已联系不到,如何将职工住房公积金账户转入新单位?

31\全程网页版操作年度住房公积金基数调整,只要是___即时操作成功。

32\单位新进一名职工,该职工账户在“市公积金管理中心住房公积金集中封存专户”,需要为其缴纳当月公积金,应该做什么业务?

33\个人住房公积金账户转移至新单位,新单位应及时办理启封手续,并按规定为职工缴存住房公积金。个人住房公积金账户转移至新单位超过___未启封的,账户自动恢复正常缴存。

34\单位应当于发放工资之日起___内办理住房公积金的汇缴手续。

35\职工与单位终止劳动关系后,职工尚未找新工作,原单位应如何办理业务?

36\职工本月到达法定年龄退休,单位需要操作何业务。

37\公积金月缴存额计算方式为___?

38\如何为没有住房公积金账户的新职工建立个人住房公积金账户?

39\单位5月缴交了4月份的住房公积金,那么在下载职工账户明细信息时时间区间应选择为:

40\住房公积金年度基数调整必须是单位汇缴完当年___月份的住房公积金以后可以操作。

41\住房公积金热线电话号码为_____。

42\单位至单位住房公积金账户所在地建行公积金网点办理汇缴时,若当月公积金汇缴人员有变动时,单位必须提供___。

43\2017年度职工本人和单位住房公积金的缴存比例各是多少?

44\职工从本单位离职,若提供下家单位的住房公积金账号,本单位该为其操作什么业务?

45\单位补充公积金账户的设立,应该在___办理审核。

46\单位经办人至单位住房公积金账户所在地建设银行业务网点为新录用职工办理将职工个人公积金账号从封存专户转移至本单位的手续时,应提供何种材料?

47\通过单位公积金网上业务系统可操作___类型的补缴业务。

48\职工本月离职后去外地工作,以后还准备重新回上海工作,单位该操作何业务。

49\在单位公积金网上业务办理系统中,单位想要查询职工信息应点击?

50\通过单位公积金网上业务系统办理待转出停缴时,停缴期限按月设置,自停缴审核通过之日的次月起计算,停缴期限不超过___。


]]>
TP5.1中validate验证场景规则重置 安吉做网站 https://www.hogsro.com/article/id/117.html 2018-07-06 01:42:07 https://www.hogsro.com/article/id/117.html

半个多月没更了,主要是最近确实太忙了,除了项目要做,还有很多杂活要干,这不以前的存量客户都要挨个做公安备案了。外加最近去跑社保和公积金开户的事情,有点跟不上节奏,今天水文是强行逼着自己写的,原本这时候我应该在撸我的系统更新,暂时先放放,水两篇文章再说。在系统升级到TP5.1的时候发现原本使用的场景验证中的重置规则竟然失效了,翻了下手册发现,用法有变,遂记录下来,免得自己忘了。


验证场景复现。

例如在用户登录和修改信息的时候,使用到密码字段,通过定义password字段为require和min规则,限制password的必填和最小长度。

未标题-1.jpg

然后定义两个场景,一个是登陆场景(login),一个是修改场景(edit)。如果在登录控制器中直接使用scene('login')场景,就会出现密码最小长度的验证信息。作为安全角度来说,密码最小长度只在修改时需要,而在登录场景中最好不提示。这时就需要对password的规则在场景中重置。

未标题-2.jpg

TP5.0验证场景规则重置。

在5.0中,系统提供直接在场景中使用数组重置规则。如图这样既可。

未标题-3.jpg

TP5.1验证场景规则重置。

而在5.1中这个方法却失效了,如果需要重置规则,需要使用按手册上的重新定义一个场景方法。使用场景scene关键字加上场景名为方法名,通过remove或者append方法移除或追加规则。例如本例中的规则可以写成如图所示。

未标题-4.jpg


这样就完成了场景规则的重置操作。其实非常简单,主要是5.0升级到5.1的综合代价还是挺大的,因为官方5.0还在维护中,建议系统比较大的,且5.0印记比较深的程序还是别轻易升级到5.1的好。


]]>
一款简洁优雅的wordpress主题(Vmeng主题) 安吉做网站 https://www.hogsro.com/article/id/116.html 2018-06-18 10:43:31 https://www.hogsro.com/article/id/116.html

关于主题作者。狂放小朋友大概是博客群里面为数不多的让我敬佩的对象,小小年纪,各种技术玩的贼溜,认识他的时候应该是我进群不久,发现他似乎各方面都有涉猎。日头一长,竟然发现这是个未成年的小朋友,敬佩之心油然而生。回想一下我同他那个年纪估计还在满世界玩泥巴、掏鸟窝、捉虫子吧。即使是现在,对比之下,狂放小朋友的技术水平也比我高出很多。



关于Vmeng主题。

1、简洁的设计,优雅的体验

Vmeng采用三色(白+两个蓝+灰白背景)设计,页面简洁不失优雅。懿古今群主之前曾做个测评调查,关于主题选择方面,大多数博客新人毅然选择简洁明了的主题。


2、简便的扩展,强大的功能

作者在主题上开发了扩展函数,可以更简便的为主题扩充功能。这对于有一定开发能力的用户极端友好。


3、神奇的Instantclick,急速的加载体验。

Vmeng将Instantclick.js纳入主题,Instantclick.js预加载不用我说,在你点击切换的时候,程序已经默默为你加载好页面,只为那秒开。当然Instantclick有一定的流量开销,只在流量付费的情况存在。


4、系统小工具,万能百宝箱。

系统集成了一些常用的小工具,诸如短代码、标题导航、主题选项等博客刚需小工具,主题一经启用,它们随时为您服务。同时主题完美支持PHP最新7.2版本,完美使用Ajax翻页及评论,最前沿的环境适配,最畅快的使用体验。

e8295bb2gy1fseirjqdudj23342bcanx.jpg


如何购买这么牛叉的主题?

作者正在促销,原定价59元,如今只需39元。支持支付宝和微信付款。

主题购买及介绍页面:https://blog.iknet.top/post/vmeng.html

主题演示地址:https://vmeng.iknet.top/



关于云+社区:

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=20tuvjyv6rgkc

]]>
推荐几个vs code的常用插件 安吉做网站 https://www.hogsro.com/article/id/115.html 2018-06-14 00:18:32 https://www.hogsro.com/article/id/115.html

最近才用上vs code神器,之前一直是sublime一条道走到黑,前段时间sublime疯狂正版守卫行为,让我的sublime一下子回到了解放前。不得已,只得换,群里大佬安利了vscode。那就这个吧,下载下来,安装,第一件事情就是左下角设置颜色主题:monokai。接着当然是字体定义,之前安利过的Source Code Pro,monokai搭配Source Code Pro,简直黄金搭档,雀巢加伴侣。当然除了这些,插件必不可少,所以就在插件市场一番淘换,找了这么几款,个人觉的还不错,当然这些主要是针对PHP开发者的。


首先,sublime的快捷键得搬过来。

插件名:Sublime Text Keymap and Settings Importer。

评级:五星。

下载量:68W+。

截止目前五星满评,68W次的下载量,对于用惯sublime的用户来说,口碑于实用算是完美兼顾了。


其次,composer得有啊。

插件名:Composer。

评级:目前暂无评级。

下载量:5W+。

composer作为PHP的包管理器,这简直就是PHP的未来,没有composer的话,PHP拿啥去和别的语言抗衡,世界最好的语言地位怕是不保。


第三,格式化PHP代码。

插件名:phpfmt - PHP formatter。

评级:四星半。

下载量:20W+。

代码强迫症的福音。代码洁癖的良药。一键格式化PHP代码,让代码具有更好的可读性,应该是每个程序员的追求。


第四,让代码直接在IDE上跑起来。

插件名:Code Runner。

评级:四星半。

下载量:300W+。

这是一个可以直接跑各种语言的插件,几乎涵盖了市面上所有的语言。这么强大,怎么能不用?再看看300W+的下载量,着实在插件库中体量还是很大了。


第五,PHP的代码检查。

插件名:PHP Debug。

评级:四星半。

下载量:180W+。

一个撸码的,没有一个好点的debug工具,那还不如直接用记事本敲代码,你说呢?


第六,用以区分文件类型的Icon。

插件名:VSCode Great Icons。

评级:五星。

下载量:150W+。

这个插件的作用就是用不同的小图标区分不同的文件类型,很直观,墙裂安利。我直接截个图,你们看效果吧(宽度有限,没有截全,这是部分)。

未标题-1.jpg


第七,连接数据库必不可少的呀。

插件名:vscode-database。

评级:四星半。

下载量:18W+。

有时候,实在不想开phpMyAdmin或者Navicat,只想简单连接下测试下增删改查,不想去切换操作,那么有了这个插件就省力了。


第八,个人学习Python。

插件名:Python。

评级:四星半。

下载量:1200W+。

这个插件其实是PythonDebug,没想到的是,这个插件竟然有1200W+的下载量,可见现在的Python是有多火,要有多火有多火啊,哈哈,小伙伴们,空了Python学起来吧。


第九,个人所需的ASP。

插件名:Classic ASP Syntaxes and Snippets。

评级:五星。

下载量:2W+。

这没什么好说的,ASP毕竟落伍的玩意儿了,应该对大多数人来说都没啥用处。


第十,语言包扩展。

插件名:Chinese (Simplified) Language Pack for Visual Studio Code。

评级:五星。

下载量:64W+。

其实这个我也没搞懂啥情况,最开始是没有的,后来一更新就来了这么个玩意儿,程序原本就有简体中文版。插件说明里面是说这个语言包为 VS Code 提供本地化界面。啥意思没明白,这不还是汉化么,啥区别?


好了,就安利这些了,下次发现好玩的,再补充。


]]>
Python学习笔记十一(递归) 安吉做网站 https://www.hogsro.com/article/id/114.html 2018-06-11 02:14:46 https://www.hogsro.com/article/id/114.html

本次学习先回顾了前两天的lambda表达式,使用lambda表达式创建匿名函数。接着学习本次课程的内容:Python的递归。什么是递归,程序调用自身的编程方法叫递归。递归的两个条件,首先是需要调用自身。其次程序能够返回正确的返回值。递归在某些情况下能更简单有效的解决问题,在递归和迭代都能解决问题的情况下,也并非所有的情况都适合使用递归函数。



首先来看一个阶乘的例子。

1、使用迭代方法计算阶乘。

未标题-1.jpg

2、使用递归方法计算阶乘

未标题-2.jpg

通过上述的例子可以看出,递归调用了函数自身,最后成功返回了结果,显然递归的代码更加优雅。

再来看下使用递归计算斐波那契数列。

1、使用迭代方法计算结果。

未标题-3.jpg

2、使用递归方法计算结果。

未标题-4.jpg

通过上述的例子递归方法更加明确。但此时如果计算的位数持续增加,那么递归的效率将急剧递减,因为递归一层一层的返回数据成倍的增加了运算量,而此时迭代算法反而效率更高,所以在计算类似问题的时候需要综合考量效率和性能。

最后使用递归计算汉诺塔步骤。

汉诺塔游戏是一款古老而经典的益智游戏,使用递归算法将很好的指明游戏的具体操作步骤,从而更加快速的通关。

未标题-5.jpg


]]>
Python学习笔记十(lambda表达式) 安吉做网站 https://www.hogsro.com/article/id/113.html 2018-06-07 01:20:23 https://www.hogsro.com/article/id/113.html

lambda是一个表达式,并不像def一样定义一个复杂的函数,很简洁的一个代码块。通常被用来创建匿名函数。lambda的好处也很明显,首先省去了函数的定义过程,直接返回需要的数据,因为是创建的匿名函数也就不用考虑函数名了,通过lambda表达式可以简化代码,使代码具有更友好的可读性。



首先看一下lambda表达式的语法。

语法也很简单,lambda [arg1 [,arg2,.....argn]]:expression 提供过lambda关键字,跟上参数后加冒号后跟上函数体。举个例子(如图):

未标题-1.jpg

其次略微复杂的例子。

使用lambda表达式和内置函数编写两个略微复杂的例子。

1、利用filter过滤函数输出0-9之间的奇数,如图:

未标题-2.jpg

可以看的出来,利用lambda只用了一行代码就输出了0-9之前的奇数,而常规的def自定义函数需要定义函数体后调用转换,显然lambda表达式具有更强的可读性。


2、利用map映射函数输出序列加工后的新序列,如图:

未标题-3.jpg


好了,明天学习Python的递归方法。


]]>
Python学习笔记九(变量作用域及内置函数和闭包函数) 安吉做网站 https://www.hogsro.com/article/id/112.html 2018-06-06 01:59:30 https://www.hogsro.com/article/id/112.html

在上次的学习中,初步认识了Python的自定义函数方式及变量参数。那么编程中的局部变量和全局变量应该是大多数语言的标配。Python中如果定义局部变量和全局变量的呢?在编程思想中无论是面向对象还是面向过程,都逃不开函数,函数中嵌套函数,这样的典型函数式编程对内嵌函数和闭包函数的支持是如何操作的呢?



1、变量作用域。

局部变量是指在程序中只在特定过程或函数中可以访问的变量。而全局变量是在程序块中任意位置创建拥有更长生命周期的变变量。

未标题-1.jpg

由于全局变量的特殊性,所以不建议修改全局变量,避免因全局变量修改而造成未知的错误。在确保正确的情况下一定要修改全局变量可以使用global关键字。

未标题-2.jpg

2、内嵌函数。

Python中的内嵌函数即在自定义函数中再定义个函数。例如可以解决函数中需要反复调用的部分。内嵌的函数在外部无法直接访问。如图中出错的部分。

未标题-3.jpg

3、闭包函数。

闭包的概念,在Python中一个内嵌的函数可以访问它外部的变量,且外部函数返回内嵌函数的调用,这样就形成了一个闭包函数。同样如果在外部直接调用闭包的内嵌函数,也会报错,如图:

未标题-4.jpg


]]>
Python学习笔记八(函数的定义和参数) 安吉做网站 https://www.hogsro.com/article/id/111.html 2018-06-04 01:24:29 https://www.hogsro.com/article/id/111.html

本次学习内容同样先回顾下上次学习的序列。然后学习今天的自定义函数部分。在编程中无论是面向过程还是面向对象,函数都是不可或缺的存在。什么是函数?这个问题在任何语言中的答案几乎一致,函数是一段组织好的,可以重复使用的完成单一或关联功能的代码。定义一个函数,可以大大增加代码的复用。模块化的封装让程序逻辑更加明确易读。


1、定义函数。

使用def关键字加上函数名来定义,后面括号可包含或不包含参数,再跟上冒号。

2、返回数据。

return关键字,这个没什么可说的。

未标题-1.jpg

3、函数文档。

函数文档类似于注释,它占据函数一行,可以通过__doc__属性打印出来。

未标题-2.jpg

4、关键字参数。

关键字参数是用来指定实参为具体哪个参数的方式。

未标题-3.jpg

5、默认值参数。

默认值参数是在函数调用过程中未指定参数调用默认值。

未标题-4.jpg

6、收集参数。

python中未知个数的参数可以通过在参数前加*号来收集参数。收集参数实质为一个元组。

未标题-5.jpg


]]>
Python学习笔记七(序列操作) 安吉做网站 https://www.hogsro.com/article/id/110.html 2018-06-01 01:30:41 https://www.hogsro.com/article/id/110.html

本次学习内容是首先是回顾下昨天的format格式化函数。接着上一次格式化字符串操作的后续课程,序列的操作。什么是序列?序列是有列表、元组、字符串构成,它们之间有很多共同点,首先都能通过索引得到每一个元素,并且索引都是从0开始。其次是他们都可以通过分片来获取部分元素的集合。第三,他们有很多共同的操作符。



序列操作的内置方法。

1、list方法,将序列转换为列表。

未标题-1.jpg

2、tuple方法,将序列转换为元组。

未标题-2.jpg

3、str方法,将序列转换为字符串。

未标题-3.jpg

4、len方法,返回序列的长度。

未标题-4.jpg

5、max方法,返回序列的最大值。

6、min方法,返回序列的最小值。

7、sum方法,返回序列所有元素及start参数的综合。

未标题-5.jpg

8、sorted方法,对序列进行升序排列。

9、reversed方法,对序列进行翻转。

未标题-6.jpg

10、enumerate方法,返回序列的index和value组成的元组。

未标题-7.jpg

11、zip方法,返回序列各参数组成的元组。

未标题-8.jpg


]]>
Python学习笔记六(格式化字符串) 安吉做网站 https://www.hogsro.com/article/id/109.html 2018-05-31 02:51:24 https://www.hogsro.com/article/id/109.html

一周一更的Python学习楞是被我变成了一月一更,这种进度等于是前期白学了,接下来要强迫学习进度了,力争6月底前完成基础部分的学习。今天的主要内容是回顾上次关于列表和元组的相关内容。然后学习字符串的格式化操作。这里主要单独强调学习Python新增的一个format格式化函数。%格式化内容作为早期的格式化方法通过两个表格来扩展下阅读作为记录。


什么是format格式化函数

Python从2.6开始提供了一种格式化字符串的函数format(),它显著增强了字符串格式化的能力。通过{}和:来代替以前的%。format函数可以接受不限个数的参数,并且位置可以不按顺序来进行格式化字符串。


1、位置参数格式化

未标题-1.jpg

2、关键字参数格式化

未标题-2.jpg

3、混合参数。需要主要,混合参数中,位置参数必须放在关键字参数前面。

未标题-3.jpg

4、输出{},避免{}被作为参数符号。

未标题-4.jpg

5、冒号作为格式化开始位置

未标题-5.jpg

6、多种类型的数字格式化

51.jpg

7、python字符串格式化符号

52.jpg

8、格式化操作符辅助指令

53.jpg


]]>
Bootstrap弹出框中插入图片 安吉做网站 https://www.hogsro.com/article/id/108.html 2018-05-24 09:00:40 https://www.hogsro.com/article/id/108.html

一时心血来潮,给博客增加一个打赏功能,看了下大家的打赏按钮,主要分两种,一种是两端是赞和分享中间是打赏的按钮形式,另外一种是孤单的一个打赏按钮。原本想用第一种的,发现我的博客没规划文章赞赏,也懒的做分享,放弃了改用第二种方案。刮了下@滑稽沈的,打算扒一个下来,看到代码的时候想起来,这些主题都不是bootstrap的呀,扒完HTML还得自己写样式,还不如我直接写呢。所以有了这篇水文,话不多说开干。


首先准备html

bootstrap官方文档中弹出框实例演示中,我需要向上弹出的。拷贝实例代码,我们都知道bootstrap的组件都是通过data-属性驱动的,其中data-content即弹出内容。默认只能弹出文字。图一是手册上的实例代码,图二是我页面上的结构,需要说明的是组件需要通过按钮触发,可以使用button也可以像我一样使用span加个button属性也可。另外删除data-container属性和data-content属性,后面我们通过传入参数触发。

未标题-1.jpg

未标题-2.jpg

初始化弹出层组件

为什么要初始化,Bootstrap官方给出的理由是由于新能的原因,工具提示和弹出框的接口需要手动初始化。所以根据手册上的提示,直接拷贝初始化代码即可,手册中的代码是对当前页面上的所有相同组件一起初始化,当然你也可以单独初始化某一个组件,方法就是使用jquery的属性操作即可。我偷懒就不改了,直接照搬,如图。

未标题-3.jpg

向组件传递参数

根据手册给定的参数表,我们需要这几项,图中被圈中的参数。其中animation淡入淡出,container弹出层所在的页面元素。content弹出内容,html弹出层中嵌入html代码。图二中content参数请自行修改,我这个是ThinkPHP的模版调用。

未标题-4.jpg

未标题-5.jpg

修改CSS

在bootstrap.css中搜索popover,拷贝整段,修改必要的参数,可以按照自己的需求修改。我这里主要是修改宽度高度和投影及距离。

未标题-6.jpg


好了,这样就完成了弹出层嵌入图片的操作。demo如本文下面的打赏按钮。


]]>
百度烽火计划升级,推出烽火算法2.0 安吉做网站 https://www.hogsro.com/article/id/107.html 2018-05-22 03:07:56 https://www.hogsro.com/article/id/107.html

一年前,百度针对移动搜索后退操作被劫持到非百度站点曾推出过一个烽火行动计划,用于打击非法劫持。这个烽火行动计划最开始是非常有限的应用场景,即针对劫持百度自身流量问题的站点进行打击,确保百度自身流量的正常稳定。而近期推出的烽火算法2.0是在之前行动计划上扩充的打击范围。



什么是烽火行动计划

2017年初,用户在手机百度上进行关键词搜素,浏览完成后回退到百度搜索页面,某些恶意站点会对用户劫持的一个伪造的百度或者是特定的页面。这就很尴尬了,一来没有达到用户的使用目的,二来劫持了百度自身的流量。所以百度顺应推出烽火行动计划用于打击劫持百度流量的恶意行为。此为烽火算法1.0。四天前,百度在搜索资源平台公告推出延续之前行动计划的烽火算法2.0。

烽火算法2.0新增的打击范围

和烽火算法1.0一致,百度仍然打击恶意劫持百度自身流量的行为,这个也很好理解。而这次升级后的算法新增了一项:未经用户允许的恶意窃取用户手机号码等隐私数据的行为。这个举动就绝了,平时我们手机号有很多泄露渠道,其中一条非常不起眼且不易被捕捉到的泄露途径就是用户访问恶意网站,网站通过脚本获取的用户的信息。最明显的就是比如你访问过一些投融资平台、教育平台,而不多久就会接到这些平台的推销电话,但显然你并没有刻意留下注册信息,这种就是恶意采集的了。

违规惩罚措施

百度公告上说已经发现上述两类行为的一律永久封禁。也就是所谓的K站了,这对SEO来说无疑是致命的,之前我们也说过其它算法百度还有给改正的机会。而这个就是高压线了,一碰就死。

如何防止被算法命中

其实只要不违规,方法也很简单,反劫持最好的办法就是https,另外检查代码千万不要有恶意指向代码和窃取信息代码。站长不去刻意触碰这方面就不用太担心。而那些注重营销的企业站要留意的,很多页面上带有在线客服功能的网站,相当多的在线客服工具均有获取用户手机号功能,如果还要吃SEO这碗饭,记得及时下线相关功能。


]]>
ASP防止XSS跨站脚本攻击 安吉做网站 https://www.hogsro.com/article/id/106.html 2018-05-21 01:14:47 https://www.hogsro.com/article/id/106.html

我的ASP的程序,一直以来只注重SQL注入攻击的防御,一直认为XSS跨站没有SQL注入那么严重,直到最近被攻破了,不得已,必须的修补。如何防御XSS跨站脚本攻击,最重要的就是要过滤掉用户输入的风险字符,和SQL注入类似,只是一个针对的是数据库,一个针对的是HTML脚本。



什么是XSS跨站脚本攻击?

理解SQL攻击的话,理解XSS攻击就简单多了。SQL攻击是用户输入的危险字符未经过滤被当做sql语句执行了。而XSS攻击就是用户输入的危险字符未经过滤被当做html或者script脚本执行了。XSS攻击用于构造钓鱼页面、获取用户输入信息、挂马等违法操作。


ASP之防御XSS

1、防御代码。

代码是我在网上找来后修改的。原版应该也流传了很久了吧。具体我就直接贴图了,惯例文末附压缩包。

未标题-1.jpg

2、引入文件。

将文末压缩包中的文件解压到适当的目录。在需要进行防御的页面使用<!--#include file="safe.asp"-->引入。注意你自己的文件路径。如果全站防御的话,建议在公共文件上进行嵌套,比如conn连接文件。


防御代码下载safe.rar


PS.这两天在恶补漫威系列电影,有点沉迷其中,各位大佬见谅!


]]>
解决ThinkPHP升级5.1后输出字符被转义的问题。 安吉做网站 https://www.hogsro.com/article/id/105.html 2018-05-13 11:16:47 https://www.hogsro.com/article/id/105.html

最近给博客升级框架,由于从5.0过渡到5.1要修改的地方还蛮多的,加上之前一些代码在实际运行中略显低效,索性就把后端重构一下。把一些关键部位调整到位后刷新页面,发现原先用于输出备案信息的地方被转义输出成字符串了,印象中TP模版输出默认是使用htmlspecialchars函数的,既然能原样输出字符串,所以和后端改造的关联不大。



使用raw方法不进行转义输出。

TP最近升级的很是生猛,只好去翻下手册了,在模版章节,使用函数部分,TP给了这样一个说法:为了避免出现XSS安全问题,默认的变量输出都会使用 htmlentities 方法进行转义输出。如果不想被转义,那只需要在变量后面加上raw方法即可,如:{$anji|raw}

除了raw方法,TP还给了一个配置方法,在template.php配置中添加一项'default_filter' => 'htmlspecialchars',这样也可以将htmlentities 换成 htmlspecialchars过滤。


使用htmlspecialchars_decode把预定义的实体转为字符

上述使用raw方法输出后的内容,由于写入的关系,有可能不转义输出的结果是变成了预定义的实体字符,如果要继续达到被html解析的普通字符效果,还需要在将实体字符转换成普通字符,前述我们在配置文件中定义得利htmlspecialchars过滤,那么就需要使用htmlspecialchars_decode函数进行转换。如{$anji|raw|htmlspecialchars_decode}


htmlentities()和htmlspecialchars()的区别。

一直用htmlspecialchars函数,htmlentities别说用了,一点印象都没有(汗,还是手册看少了)。特地去翻了下手册,htmlentities就是将所有字符转换为HTML实体,也就是全部转义输出。而htmlspecialchars是把预定义的字符转换为HTML实体。htmlspecialchars字符包括连接符(&)、双引号(")、单引号(')、小于(


PS.刚刚升级PHP版本和Mysql版本,卡不出来了,就差点删库跑路了,笑~


]]>
一个充满魔幻功能的wordpress主题(Dragon主题) 安吉做网站 https://www.hogsro.com/article/id/104.html 2018-05-08 02:06:08 https://www.hogsro.com/article/id/104.html

近日,友龙笑天将其自用WP主题刀劈斧凿,精修淬炼后售出。一众人等纷纷道贺。龙每日承嘲承讽,然龙沥血呕心,毅不言弃,持梳理以恒,孜修正不倦,终不负皇天,历时数月,梗阻变通途。此贺,敬之锲而不舍也。




龙笑天下其人

生于荆楚,成于百越,其人名誉boke112群组。余识其时不足半岁尔。初于手机验证功能,一来二去遂识矣。久之,见之甚固,覆旧有之荆楚民之印象。或正为此固而成今时之Dragon。


Dragon主题

概括起来就是你想要的功能都有,你不想要的功能也有。能把博客玩成社交系统、商城系统于一身的主题,对追求极致的你,值得拥有。

来盘点下Dragon三大主要的功能。

1、当然是最基础的文章系统,没有这个那就不能称之为一个博客了,文章评论龙大佬更是细心的为你准备了多重小工具。。

2、用户系统,龙大佬几乎集成了市面上大多数的第三方登录。在此基础上还能付费升级成会员系统。并且用户系统上能实现关注、粉丝、收藏等社交系统的主要功能。

3、商城系统,能实现完善的商品交易支付和积分功能。这对于一个非专业的商城来说,完全能满足您对于虚拟及闲置物品的售卖操作。


更多的关于主题的介绍,请访问主题官方地址:https://www.ilxtx.com/dragon.html


如何更低成本的获取这么强大的主题

如果本Dragon主题恰好满足您的需求,希望购买此款主题的话,您可以通过主题官方渠道商城购买:https://www.ilxtx.com/store/wordpress-theme-dragon.html 有个小技巧,使用本站特约优惠码可以享受八二折优惠哦。优惠码怎么使用?在订购页面优惠码处输入ANJI6620180508即可。如图:

未标题-1.jpg


点击立即付款就能看到折扣后的价格咯。

未标题-2.jpg


等等,这还不算,如果你订购完成后,注册登录本站,完成实名认证,本站还能帮你额外抹零哦。

]]>
PHP7新特性之两个小小语法糖。 安吉做网站 https://www.hogsro.com/article/id/103.html 2018-05-05 02:13:55 https://www.hogsro.com/article/id/103.html

想起写下这篇原本是因为群里龙大佬说PHP7下count有问题,顺道就讽了他一句。其实我自己也没有详细了解下PHP7到底在哪些方面做了修改。所以空了就翻了翻手册,看到几个比较简单又很常用的特性就搬来水一文。标题中的语法糖本文中仅限一处,原本是不想写之的,想想标题过于简单,怕是要被度娘嫌弃,还是编造个略长的吧。



先来说下龙大佬提到的count函数。

count在7.2下约束了使用范围,直白的说就是在能进行count的地方进行count,否则会抛出异常。直接截官方手册的图如下。

未标题-2.jpg

第二,合并了比较运算符<=>

原本的比较运算符是独立的<、>、=。返回的是一个布尔值。而在PHP7中对三个比较运算进行了合并,直接采用了<=>进行比较运算,返回的一个整型,也很好记-1,0,1。这样,我们在实际程序中可以直接用switch来执行动作了。

未标题-3.jpg

第三,??语法糖

??非常类似三元运算符。作用也很简单,在三元运算符中使用isset判断并返回变量的替代方法。

未标题-4.jpg

第四,intdiv()整除函数。

作用就是返回两个参数的除法运算后的整数部分。

未标题-5.jpg

还有其它的新特性,下次用到的时候再更。


]]>
Python学习之IDLE清屏快捷键。 安吉做网站 https://www.hogsro.com/article/id/102.html 2018-05-01 17:12:35 https://www.hogsro.com/article/id/102.html

在学习python过程中,随着命令越敲越多,又或者想要截屏而屏幕上敲错的不想截进去,对IDLE进行清屏必不可少的。奈何Python自带的IDLE没有清屏命令啊,在软件上点了一圈没看到,只好在网上搜索下IDLE清屏,还不错,网上各路大神都说可以通过Python脚本来扩充下IDLE,实现自定义的清屏功能。话不多说,看下怎么来操作(扩展的脚本作为附件放在文末了)。


首先当然是扩充脚本。

下载文末压缩包中的清屏脚本,放到Python的安装目录下。具体位置是在Lib下的idlelib。直接将脚本扔进去。清屏脚本是大神写好了,如图所示:

未标题-1.jpg

第二设定配置。

有了脚本,还的把脚本加载的IDLE上。开启配置:还在上述同一个目录下,有一个config-extensions.def的配置文件。用文本编辑器打开,在后面不上这样一段。

未标题-2.jpg

第三,重启你的IDLE。

看,在你的Options菜单下是不是多了一个Clear Shell Window Ctrl+L 选项。通过单击或者Ctrl+L快捷键就可以完成清屏操作了。


对了,这仅仅是清屏,你在清屏定义的变量什么的,都还存在哦。脚本在此下载:ClearWindow.rar

]]>
Python学习笔记五(列表和元组) 安吉做网站 https://www.hogsro.com/article/id/101.html 2018-04-30 01:54:51 https://www.hogsro.com/article/id/101.html

最近这段时间是一年中最忙的时候,学习进度严重耽误,距离上一次更新Python的学习进度又已经一个月过去了,“佩服”我自己。趁着假期,继续学习我的Python,顺道把之前的几次学习内容回顾一下。本次学习笔记的内容主要是Python列表和元组。什么是列表(list),简单的可以理解为数组,但是比数组的范围要大,Python的列表就是一个大染缸,什么乱七八糟的元素都能往里面装。好了,废话不多说,直接动手敲码,概念一千遍,不如敲码来一遍。



一、列表元素类型。

前段里面提到列表是个大染缸,所以列表元素可以输整数、浮点数、字符串、对象、列表。如图就是一个包含多种元素类型的列表。

未标题-1.jpg

二、向列表中添加元素。

1、append方法。参数为待添加的元素,该方法只能添加一个元素。

2、extend方法。参数为待添加的元素列表,该方法可以一次性添加多个元素。

3、insert方法。第一个参数为待添加元素所在的位置,第二个参数为元素

未标题-2.jpg

三、获取列表元素。

采用元素索引(下标)的方式获取元素内容

未标题-3.jpg

四、删除列表元素。

1、remove方法。参数为元素内容(需要确保元素内容在列表中存在,否则会抛出异常)。

2、del语句。del后面跟上待删除的列表元素,如只跟列表名,将会删除整个列表。

3、pop方法。参数为元素索引。不添加参数则为列表堆栈中的最后一个元素。

未标题-4.jpg

五、列表分片。

采用列表[:]形式。参数为分片起始位置和终止位置(不含)。分片实际上是拷贝列表的全部或者片段。

未标题-5.jpg

六、列表操作符。

1、比较操作符,> < 比较操作。

2、逻辑操作符,and、or逻辑操作。

3、连接操作符,+号用于列表的连接。(不建议使用+号扩充列表元素)

4、重复操作符,*号用于列表的重复。

5、成员操作符,in,not in 判断是否包含

未标题-6.jpg

七、列表的内置操作符。

1、count方法,作用是统计参数在列表中出现的次数。

2、index方法,返回参数所在的位置。可选参数为位置范围(起始位置和终止位置)。

3、reverse方法,作用是反转列表。

4、sort方法,作用是对列表进行排序。(默认参数是reverse=False升序,可以改成reverse=True进行降序)。

未标题-7.jpg

八、元组,元组即受限制的列表。

1、通常使用小括号元组。

2、只有一个元素的元组,需要使用逗号进行明确。

3、更新元组和上述拼接列表方式一致。

4、删除元组使用del语法。(通常python自带回收机制,无需人工销毁)。

未标题-8.jpg


好了,下次更新字符串的相关操作。


]]>
被方正字体投诉侵权说起 安吉做网站 https://www.hogsro.com/article/id/100.html 2018-04-27 00:26:34 https://www.hogsro.com/article/id/100.html

事情还得从几年前的订单说起。在早些年,还没有日益强调版权,著作权的时候,网络上各种免费的资源算是取之不尽用之不竭,所以在网站开发过程中,很多前端的内容都可以在网上找到很合适的素材,这就包括其中的字体。这天,一老客户给我发消息说,他们公司邮箱收到一封关于网站侵权的内容,让我看下,他们很莫名其妙。于是乎我就让客户把邮件转发给我了。打开一看,好家伙这不是去年前年就已经出现的幺蛾子么。在此之前,这些合法却不合情的做法被众多批评之下已然偃旗息鼓,没想到今年又开始了?是业绩压力大了吗,又出来收取保护费了?


说归说,毕竟是侵权这种事,还是要认真对待的,就看了下对方描述的侵权事实,看下图。

2.jpg

也就是说对方公司认定我们使用的对方的一个特定字体,仅2个汉字使用了相关字体。而对方发了一堆关于裁判文书证明侵权的严重性如何如何,却在字里行间处处透露希望和我们和解的意思,所谓和解就是买他们的授权。再看看这个坑爹的授权价格。

3.jpg

还是不舍得在自己腿上狠狠割一刀。简单心里计算了下,获取授权的成本,打官司的成本,这完全不对等啊。那么又不想挨这一刀,只好跟客户说,我们停止使用相关内容,删除侵权部分(其实这里我并没细究,我以为对方说的侵权是事实,后面跟公司美工了解到,并没有采用对方的字体,而是相近字体,也就是说侵权事实根本不存在)。其实当初的配图也确实难看,还不如删了那行字,所以干脆就删掉了。其实在前年的幺蛾子发生的时候,我们公司已经在这方面加强了管理。轻易不使用第三方的内容。


这件事来看,随着国内法律法规的越来越完善,各位在日常建站过程中,还是谨慎使用相关的版权作品,不能一时疏忽造成更大的损失,而方正公司这种先养鱼后放水的作风,还是遭人鄙视的。所以如果大家遇到被字体公司维权的事情,还是要认真对待的,避免事态扩大。


对了,说了半天,推荐下站酷字体吧,免费可商用的,非常棒。


]]>
ThinkPHP5下实现Auth鉴权访问。 安吉做网站 https://www.hogsro.com/article/id/99.html 2018-04-21 00:12:33 https://www.hogsro.com/article/id/99.html

其实这算是一篇水文,最近有点忙有点累,记得没两天更文的今天一看已经过去一周了,刚好新项目上需要使用Auth来控制权限操作,恰巧ThinkPHP最近官方把5.1更新的有点频繁,从5.1.6一口气接二连三的更新到了5.1.11,导致项目没有框架更新的快,汗,丢人。写这篇水文的缘由是升级框架后,莫名发现之前运行正常的Auth报了个奇怪的错误。



在复制粘贴之前做好的Auth类的时候发现了一个错误,如下图所示。

0.jpg

就去翻了下手册和更新记录,原来TP从安全角度对数组查询条件进行了修改。好吧,那只需改下Auth类中的查询条件即可。

11.jpg

整个类文件其实是源自TP3的,移植到T5下,被我修改过了一些内容,代码太长就不截图了,源码直接附在文末压缩包了,如有需要请自行下载。下面简单介绍下如何使用。

集成扩展类

老生常谈的内容了,在extend目录下建一个author目录,把文末压缩包的中类文件丢进去,如果你自定义的其它目录名称,请修改下类文件中的命名空间。

自定义调用函数

多数情况下鉴权会在控制器中方法上应用,但偶尔保不齐要应用在视图上,这样为了前后台都方便调用,在common.php中自定义一个调用函数,如下图。

2.jpg

自定义一个config项

在上图上可以看到其中config助手函数,这里是为了方便过滤超级管理员的,免得每次超级管理员操作还要是查询权限,浪费资源。直接将管理员ID放到自定义配置项中,return一个true回去,方便快捷。

3.jpg

调用鉴权函数

一般写在方法的顶部,由于我们采用的是自定义的函数形式,所以这里不用考虑实例化了。直接贴图。

4.jpg

好了这样就完成了在ThinkPHP5下的Auth鉴权操作。关于权限表怎么弄的?看类文件前面那超级一大串的注释。

附件:Auth.rar


]]>
克服拖延症大作战。 安吉做网站 https://www.hogsro.com/article/id/98.html 2018-04-13 03:49:39 https://www.hogsro.com/article/id/98.html

站长自从把办公室退租后,在家SOHO,由于一边需要带女儿,一边工作,工作效率与日俱下。以前轻微的拖延症如今已似病入膏肓。把客户项目拖的时间越来越长,耽误了客户也耽误了自己。在不停的自责和后悔中,心理压力是与日俱增。很多时候压迫的我喘不过气来,原本急性子,加上心理压力,易怒且不易控制,越来越滑向危险的边缘。



拖延症的危害。

如何克服拖延症首先要认清拖延症的危害。直接危害是,工作没完成,影响事物或者合同的正常推进,还可能带来经济损失。见解的危害更大,心理压力增加,睡眠质量降低,身心疲惫,很有可能罹患抑郁。这些征兆时刻在侵蚀着你的肉体。说不定哪天真的就像玩笑说的猝死。


克服拖延症。

我们说减肥要管住嘴迈开腿。我总结了一下克服拖延症最重要的是启动手,开动脑。

1、行动起来。所谓万事开头难,做起来,路子就宽了,很多时候我们并不是工作做不下去,而是不想开头,比如站长就是这样的人,一件事就是拖着不想干,但真干起来了,也干脆利落。

2、约束时间。比如番茄工作法,用起来。站长还买了个定时闹钟,在规定的时间内要心无旁骛的认真工作。知道闹钟响起才可以适当休息。

IMG_20180413_015106_1.jpg

3、排除干扰。现在的手机真是太害人了,刷个新闻都是精准推送,你看了一条感兴趣的,无数这类的信息就扑面而来。这技术太先进也不见得是好事。如果刷了100条新闻只有一条是你爱看的,我想每个人就不会持久刷下去了。所以在工作的时候手机最好能关机,不能关机的也要扔到一边。

4、劳逸结合。在连续工作了特定的时间后,需要适当休息,减缓压力恢复体力,才能为下一个时间段集中精力工作开个好头。休息好了,再次回到第一条进行下一个循环。

5、坚持方法。通过对上述行为的自我锻炼,坚持数月半年的,我相信要不了多久应该就可以克服拖延症了。

站长的自我总结,虽然我还在和拖延症大作战的路上,希望这些信息可以给拖延症患者带来希望。


]]>
Ajax处理success回调函数返回的json数据。 安吉做网站 https://www.hogsro.com/article/id/97.html 2018-04-13 01:41:44 https://www.hogsro.com/article/id/97.html

站长最近在项目中用调用一个分类的子数据,由于表单要填写的数据较多,为了实现无刷新的选择操作,就使用ajax做了异步查询。查询的结果因为是多条数据,一直以来动用ajax查的都是单数据,还第一次使用多数据,惭愧。TP5中查询的结果已经是一个数组对象,如果直接return回去,那么success函数获取的是一个对象,对象操作的结果还是要再一次转换成数组,讲起来都觉得麻烦,别说操作了。最好是直接返回字符串或者json。


开始做的时候想着,直接用PHP把数组处理好,返回给前端就好直接用了,所以对查询结果进行json编码,这个很简单,利用PHP内置json操作函数json_encode对array进行编码操作,然后return回去即可。原本想着直接使用返回的json数据去遍历填充页面了,万万没想到,折腾好大一会儿没成功。使用alert弹了下返回的data,完整的显示是一个json呐,为毛就遍历不到呢。

不得已,去翻了前端基础宝典w3school.com.cn上的关于jquery.ajax的手册部分。找到原话这样描述:

未标题-1.jpg

好家伙,虽然datatype定义的是json,这最后不还是个字符串吗?不过需要声明的是json原本就是字符串,只是是一种特殊格式的字符串而已。

既然是字符串的话,只能先把json字符串转换为JavaScript对象了。站长的JavaScript基础一直处于渣渣水准,所以接着翻w3school的手册。在json章节中找到了这段:

未标题-2.jpg

这就简单了,现在只需将success返回的data丢到eval函数中就完事了,所以站长就匆匆写下这句var dataObj = eval("("+data+")");就操作后续重写html的事情了。待把功能昨晚,准备关闭网页的时候,看到手册下半部分竟然有个json解析器。这是个嘛玩意儿?好奇心驱使就去看了下:

未标题-3.jpg

咦,这文字里面只提到json解析器,可并没有描述json解析器长什么样子啊?(手册也有不完善的地方)点到亲自试一试后终于见到了真容。JSON.parse()

未标题-4.jpg

那么依葫芦画瓢,var dataObj = JSON.parse(data);就妥了。简单测试了一下两种方法,都可以实现。

至于前图中提到的潜在风险,你自己去体会吧。


]]>
My97DatePicker日期控件自定义脚本日期在ThinkPHP5下面报错 安吉做网站 https://www.hogsro.com/article/id/96.html 2018-04-07 02:54:19 https://www.hogsro.com/article/id/96.html

最近一个项目又牵扯到日期限定的操作,在thinkPHP5下集成My97DatePicker过程中报了一个未定义变量:D的错误。一般性载入没问题,只有在自定义脚本日期上报错。很显然是冲突造成的。





问题场景复现。

使用My97DatePicker自定义脚本日期,做一个时间段的选择,起始时间为今日起,终止时间为未来某一天。两个日期选择框,对应两条规则,第一起始日期不能为过去的日期。第二起始日期不能大于终止日期。两条规则一限定就构成了一个选择范围。原本心想很简单,翻开My97DatePicker的demo,一顿拷贝,然后上述两条规则一定义,原本以为就这样完事了,如图:

未标题-1.jpg

页面一刷新,傻眼了,竟然报了一个未定义变量:D 的错误。


问题原因及查找。

第一反应未定义变量这是PHP的错误啊,博主写程序从来不会写单字母的变量的,所以问题肯定是刚刚的时间控件的问题。不过My97DatePicker是个纯js程序,哪来的PHP报错。于是就去查了下ErrorException(runtime目录下的temp目录中)。发现My97DatePicker中关于$dp.$D没有被正确编译,而是把D解析成了一个变量,看到这样的编译结果,顿时就明白了原因。如图:

未标题-2.jpg

很显然,因为ThinkPHP5的模版语法采用的是单花括号,而不是更常见的双花括号。TP5将$dp.$D解析成了变量,从而造成了这部分内容没有变My97DatePicker的js接管。


解决办法。

解决办法也很简单,如果仔细看过TP5的手册的话,在模版章节中关于变量输出中有这样一句话:{和$之间不能有任何空格,否则标签无效。

未标题-4.jpg

关于$dp.$D在My97DatePicker的demo中也给出了解释。

未标题-3.jpg

有了上面两个解释就好办了,只要使{$dp.$D}这个标签无效,就能达到目的,那么只需将#f{$dp.$D}中的{和$之前敲一个空格就妥了。最终效果如图:

未标题-5.jpg

再次刷新页面,就可以看到My97DatePicker空间被正常加载了,无任何错误。


]]>
宝塔面板下升级到PHP7.2,无法查看phpinfo的解决办法。 安吉做网站 https://www.hogsro.com/article/id/95.html 2018-04-02 18:09:29 https://www.hogsro.com/article/id/95.html

自从建站后没多久,就把PHP的版本升级到7了,后续有升级到7.2了,一直也没关注过phpinfo的信息,今天小伙伴在群里说我草,phpinfo都看不到,我大概想了一下,好像宝塔的安全设置有个关于phpinfo显示开关的,我去找了一下,并没有发现相关开关,估计是我记错了。那这问题总得解决呀。



方法一:使用phpinfo()函数。

太easy了吧,就不说了,在PHP文件里面写个phpinfo()函数,扔到服务器上,访问下这个文件就能看到了不是。这就跳过了。

方法二:解决宝塔面板的小BUG。

首先,我们得去查一下宝塔上php的配置参数,关于函数禁用的内容,别把phpinfo给禁用了,那怎么也不可能输出内容了。如图中确保这里面没有phpinfo,当然你也可以在上面配置文件里面找到disable_functions,看看有没有phpinfo。

未标题-1.jpg

第二,开启短标签支持,因为我们并不保证宝塔在输出phpinfo的时候是通过完整标签写的。并且这个一般也是标配,如图,不解释。

未标题-2.jpg

第三,最关键的问题,查找配置文件的BUG。本文的web服务器是nginx,apache是同样的道理,后面解释。我们先找到面板左侧文件,然后依次选择 根目录 > www > server > panel > vhost > nginx 目录。这时我们就能看到一个phpinfo的配置文件了,如图:

未标题-3.jpg

选择编辑,打开后我们其实哪怕你不懂代码,也能发现问题在哪儿了。没错最下面竟然没有7.2的配置文件。

未标题-4.jpg

那这就简单了,直接复制一份localtion,71改72即可。如图:

未标题-5.jpg

apache同样的道理,只是路径和nginx是同级而已 www > server > panel > vhost > apache。如图:

未标题-6.jpg

好了,至此就修复完毕。再次点击软件面板上的PHP7.2的设置,看下phpinfo是不是就出来了。其实折腾这么多也没必要,毕竟方法一分分钟就妥了。

未标题-7.jpg


]]>
使用无线网卡连接网络,默认网关不可用的解决。 安吉做网站 https://www.hogsro.com/article/id/94.html 2018-04-02 01:36:47 https://www.hogsro.com/article/id/94.html

工作原因不得不使用台式机,最近挪了窝,不高兴在家横七竖八的拉网线,索性就用了一个USB的免驱无线网卡,通过这个小东西进行联网。而这几天发现网络三番两次的掉线,通过系统修复,提示默认网关不可用,系统自动修复好了以后,但凡网络流量大一些,就会再次掉线,气死我了,总这么修复也不是个办法啊。着手解决它,修复步骤如下。



更新驱动程序。

第一步当然是安装网卡对应的驱动程序。前面博主也说了,这个小东西其实是免驱的,win7能自动驱动,插上就能用,奈何架不住破玩意儿频繁掉线,所以就去水星的官网去下载了一个对应型号的驱动,安装了一下,等于是替换了系统自带的驱动程序。

放弃DHCP,绑定IP和网关。

根据系统提示,默认网关不可用,第一个要处理的就是网关问题。而家里的wifi为了给移动设备使用都是开着DHCP的。所以当时无线网卡插电脑上的时候,根本没想到这一出,直接就DHCP获取了IP就上了,搁我以前搭局域网的风格,必须全部使用静态绑定IP操作(XP时代局域网互访头搞大了),估计现在是年纪大了,能偷懒就偷懒的。好了不废话了,桌面 -> 网络 -> 右键属性 -> 更改适配器设置 -> 无线网络连接 -> 属性 -> Internet 协议版本 4 -> 属性。根据你自身局域网环境设置IP,对了,在点Internet 协议版本 4的时候顺手把Internet 协议版本 6去掉勾选。为了IP不冲突不重启,直接设置成当前DHCP分配的IP地址。子网掩码点下,默认网关使用路由器地址,如图:

未标题-1.jpg

怎么查看当前IP和默认网关?你可以在连接状态里面查询,也可以在cmd命令中输入 ipconfig /all 查看。下面的DNS,我用的阿里云的公共DNS 223.5.5.5 和DNSPOD的公共DNS 119.29.29.29 。为啥不用114.114.114.114?劫持怕了,为啥不用谷歌的8.8.8.8?墙外的花再香,墙内也只能闻到却摘不到啊。

由于我们采用了静态IP绑定的操作方式,这里我们要多做一步,点击上图中的高级,切换到WINS选项卡,启用TCP/IP上的NetBIOS。如图:

未标题-1.jpg


接着做ARP绑定。

什么是ARP?不说了,简单的就是将ip地址和MAC物理地址进行绑定。主要的作用其实是防止ARP广播攻击的。当年的ARP攻击可是让360出尽了风头。我们这里做ARP绑定主要是为了稳定连接。防ARP攻击的作用请忽略。操作办法:进入路由器管理界面,高级管理 -> 网络参数 ->IP与MAC绑定。各品牌路由器略有差异,请自行查找对应设置的位置。找到当前的电脑名,点击绑定即可,如图:

未标题-2.jpg

好了,这样就完成了静态绑定。再去测试下网络连接和下载动作(高吞吐)吧,个人发现我右下角的连接信号明显提高了。再也不会频繁掉线了。

最后如果这些依然无效

1、那么有可能是信号干扰的问题。你看下你的是否是用的2.4G的频段。如果设备不支持5G频段的话,建议更换无线网卡和路由器。

2、如果你的是mini的无线网卡插在电脑后面的USB上,去摸摸看温度怎么样,换到前面板的USB或者USB-HUB上,或者干脆换个位置,离路由器信号好点的地方。

]]>
熊掌号文章校验未通过 1 类错误的原因分析及使用技巧。 安吉做网站 https://www.hogsro.com/article/id/93.html 2018-03-30 02:31:08 https://www.hogsro.com/article/id/93.html

半夜更文,纯粹是为了更文而更文。最近撸一个项目代码,有点烦躁,导致博客断更超过一周了,虽然自定的月更目标完成了,但这么长时间断更还是不合适的。

百度熊掌号平台最近又双叒叕改版了,首页巨幕更是夸张的提醒将来为熊掌号导流将占据总搜索流量的80%。可见熊掌号作为内容分发平台对标今日头条,雄心很大。这不,这两天头条被逼的取消新手期来抢占内容创作者了。


校验未通过1类错误

大家使用熊掌号经常会发现某些文章明明是自己原创却得不到熊掌号的青睐,还被熊掌号给了一个校验未通过1类错误的提示。如图:

未标题-1.jpg

通过百度给定的提示,主要就是落地页体验不佳。要么是样式问题,比如不适合阅读,行距重叠,文字图片重叠等。要么是广告占据的篇幅或者广告自身的移动化不符合移动体验。

由于博主页面并没有挂广告,所以问题还是在样式问题这块比较明确,但是通过阅读,发现文章自身并没有明确的阅读障碍。只好对比下已收录的和没收录的文章区别。唯一不同的是收录的文章没有代码,而校验不通过的文章中都嵌入了代码片段。由于代码和高亮插件的关系,导致代码片段部分出现了横向滚动条。如图:

未标题-4.jpg

好吧,这确实是移动体验不佳。这也是从而导致熊掌号校验未通过。知道这个原因就好办了,上次博主在文章中提到,今后页面上代码部分直接截图(偷懒不想折腾高亮插件)。

文章收录,却不显示图片

另外一种情况是文章确实被熊掌号收录了,但是jsonld中推送的图片却被熊掌号舍弃了。如图:

未标题-5.jpg

这个问题其实百度在另外一个场合讲过了(SEO指南),主要是图片符合3:2的比例。图片主体清洗,没有影响观瞻的大幅水印和杂质。比如博主这篇:nginx下301跳转到https出现不安全连接的问题。由于当时做的封面图采用了一个半透明的背景,所以导致图片整体效果模糊,主体不突出。另外一种情况就是图片侵权风险或者被大量重复使用的图片,也会被熊掌号丢弃。找到原因,只要根据要求改造即可。

]]>
删除QQ内置浏览器,不再为误点烦恼。 安吉做网站 https://www.hogsro.com/article/id/92.html 2018-03-20 16:42:08 https://www.hogsro.com/article/id/92.html

事情得从好久之前说起,自从上次火绒说QQ推广管家和浏览器有流氓行为。就对QQ内置的浏览器耿耿于怀。今天boke112群主说不喜欢分享的链接被QQ内置浏览器打开。唉,谁说不是呢,都讨厌这个流氓的玩意儿。通过的QQ安全设置,取消使用QQ浏览器打开链接操作后,依然无效,就对这种流氓行为更加鄙视。于是花点时间着手删了这该死的内置浏览器。



先来看下标准的QQ内置浏览器界面。

1.png

查找QQ内置浏览器的安装位置。

原本我以为QQ把内置浏览器作为插件放在QQ安装目录的Plugin目录,打开没发现。只好动手自己找了,没有快捷方式查找之前,我们的先做个准备工作。打开任务管理器——查看——选择列,勾选映像路径名称。

2.png

这时候打开QQ窗口中的链接,就可以看到进程里面有出现MiniBrowser的进程了。右键映像路径选择打开文件位置。

3.png

删除内置浏览器前的准备。

找到浏览器的安装位置后(上一步右键直接定位的exe可执行文件),我们需要向上返回查看内置浏览器的整个目录。

4.png

5.png

为了删除做终极准备,解锁文件。

因为我们之前已经打开了内置浏览器,并且我们的QQ还在运行状态。第一步先关闭内置浏览器。QQ先别退,我们后面需要查找一个激活的钩子文件。

然后我们通过QQ管家的文件解锁功能(其它注入360安全位置等系统维护类软件均有类似功能,或者你懂手动解锁也可,比较复杂一点。),对整个QQ内置浏览器的目录进行解锁操作。

9.png

解锁过程一

7.png

解锁过程二

8.png

删他个片甲不留。

上一步系统解锁完毕后,就可以尝试删除了,你可以手动删除整个目录,也可以通过管家、360等进行文件粉碎。

删除完成后,QQ肯定直接报了一个崩溃错误。别急,这里面有我们要的信息。

10.png

处理QQ的报错和激活钩子。

进入QQ安装目录,找到上述错误信息中的minibrowser_shell.dll文件。为了保险起见,将该文件复制一份到别处,改个名字。让后将该文件直接删除或者粉碎。更加保险起见,直接原地新建一个minibrowser_shell.dll文件(什么,怎么新建动态链接库?直接建一个文本文件,改成一样的名字就好了)【这一步我没测试,或许直接删了就行。】


最后重新登陆下QQ,QQ不报错就完事了,这时候QQ聊天窗口中的分享的链接卡就无法直接打开了,如果你需要打开这个链接,那就右键选择复制链接,就好了。


]]>
ASP分页应用bootstrap分页组件。 安吉做网站 https://www.hogsro.com/article/id/91.html 2018-03-19 01:18:12 https://www.hogsro.com/article/id/91.html

鉴于虚拟主机的性能限制,或者为了更好更快的上线网站或者成本原因,有的时候需要使用asp来开发动态站,并且现在移动端的流量普遍大于PC段,又需要体验自适应的效果。所以bootstrap开发的asp站是一个很好的选择。原来一直使用自己的自定义的分页组件,在bootstrap下看起来有些奇怪,所以还是打算彻底把分页按照bootstrap的样式重新写一下。


先来看下最终要实现的分页效果。

1.jpg

首先,我们需要一个构造一个sub过程函数。

例如自定义一个pagecontrol的sub函数:Sub PageControl(pageCount,page),需要传入两个参数:pageCount总页数;page当前页。函数定义完成后,先行处理url原本的参数。这里直接贴代码,大意就是获取当前url的参数进行非page参数的筛选,不详细说了。

2.jpg

其次,嵌入bootstrap分页组件的ul部分。

bootstrap分页组件中的页码都是li标签,外面还有个nav和ul标签需要处理下(闭合标签就不贴了)。代码:

3.jpg

第三,处理上一页和下一页的页码。

这里就需要用到我们传入当前页(page)这个参数,上一页就是page-1,下一页就是page+1。有两种特殊情况,当前页为第一页时,page-1无效。当前页为最后一页时,page+1无效。通过bootstrap定义的disabled禁用状态处理这两个特殊状态。

4.jpg

5.jpg

第四,处理页码主体部分。

我们将页码主体分成两种情况,一是总页数在10页以内的,全显页码。二是总页数在10页以上的显示部分页码和缩略符。简单的一个if判断,不贴了。

10页以内全显示很简单(pageCount<=10)。如图:

6.jpg

处理大于10页的页码,又分三种情况,当前页靠前,只在后面出现缩略符;当前页靠后,只在前面出现缩略符;当前页在中间部分,两头出现缩略符。但无论何种情况,开头两页和结尾两页要始终显示的。所以先把开始两页和结尾两页显示出来,如图:

7.jpg

8.jpg

接着处理当前页码靠前,后面出现缩略符和当前页码靠后,前面出现缩略符的情况。直接贴图了。

9.jpg10.jpg

最后就是中间最常见的情况了,当前页码在中间位置,前后各有缩略符的情况。如图。

11.jpg

第五,页面上调用Sub函数。

call一下就行了,传两个参数。其中当前页参数,记得给个默认值,url上没有页码参数,当前页就为1。

12.jpg

好了,一个完整的分页过程函数就这样了。按照以上思路,拼合起来就行了。如需完整源码,点此下载


]]>
Python学习笔记四(条件和循环) 安吉做网站 https://www.hogsro.com/article/id/90.html 2018-03-15 01:35:19 https://www.hogsro.com/article/id/90.html

写在开头:今天催更小伙伴们,突然发现自己的python学习笔记竟然一个月没更了,按照每月总更8篇计算,每月应更2篇左右的python学习笔记,也不知是杂文更的太多了还是自己偷懒了,这样的学习进度太慢了。刚才打开IDLE,竟然连两次回车运行程序都给忘了,年级大了是该补补脑子了。另说明一下,从本月处,本博客的代码部分将不再贴源码,而采用截图形式上传。篇幅大的源码会考虑在文末采用压缩包方式上传。为啥?因为该死的熊掌号但凡页面有源码高亮的就提示内容不符合规范,熊掌号只抓取不收录,悲催。


if条件语句。

没什么好说的,直接贴图。有几个点需要注意,python是通过缩进控制条件块的,和PHP的if else就近原则不同,这也就是python不会出现悬挂else的问题。另外在多重条件下,python的else if 简写成了elif。

基本if else语句

02.jpg

if elif else条件语句

03.jpg

三元运算表达式

4.jpg

上述语句可以修改为

5.jpg

while循环语句。

while循环语句也没什么可说的,所有语言都是一个套路。直接贴图:

6.jpg

for循环语句。

for循环与PHP的for循环有区别。python的for语句格式:for 目标 in 表达式。

7.jpg

break、continue、assert语句。

break为退出当前循环,它不管你当前的循环条件是否满足,主动退出循环。

continue是跳过本轮循环剩下的部分,进行下一轮循环,而break是跳出整个循环。

assert为断言,即该关键词后面的条件为假时,抛出AssertionError错误。应用场景比较多的是在程序代码检查的时候。


明天更数组部分。


]]>
五联疫苗全国断货,接种过部分五联苗的要选择替代方案。 安吉做网站 https://www.hogsro.com/article/id/89.html 2018-03-12 15:04:06 https://www.hogsro.com/article/id/89.html

上次打预防针后原本预约今天打五联苗的。医院说五联苗从2017年9月就处于限制供应了,2017年底已经全部断货了。没辙只能打电话回老家,咨询老家医院和疾控中心,老家医院说也已经断货了,疾控中心说还有小批量,需要当地医院打报告来要,只能是已经接种过的孩子使用。再次找到医院,准备托关系去申请一支,因为我家的就差一针了。然后亲戚说算了,直接打四联替代吧,他自己的二胎也是打的四联。既然这么说就作罢了。



2018年7月23日更新

鉴于近期众所周知的疫苗爆雷事件,大量朋友百度搜索疫苗关键词进入本站,现就大家关心的几个问题给出解释。

1、首先本次事件导火索是狂犬疫苗造假事件,涉世企业为吉林长春长生生物科技股份有限公司。

如果您的孩子或者家人被狗咬伤后注射过狂犬疫苗,请及时关注当地卫生防疫部门的公告。看看是否有补救措施。一般被狗咬伤后,要求即时去当地卫生防疫部门注射狂犬疫苗。

2、对家长来说最关心的还是由狂犬疫苗引发出来的百白破疫苗造假事件。百白破疫苗是必须接种的一类疫苗,通常免费接种的是国产疫苗,也就是本次事件中您急需关注的问题。请注射了免费国产百白破疫苗的家长及时了解您当地卫生防疫部门的公告,公告当地使用了涉事企业疫苗的一般需要进行补种。

3、如果您的孩子和博主家一样,注射的是进口巴斯德的五联疫苗(百白破+脊灰+B型流感),那么将无需担心,不受本次事件影响。

4、如果您家孩子注射的四联疫苗或者三联疫苗,请查询疫苗生产厂家,如果和新闻中的几个涉事企业相同,请及时咨询当地卫生防疫部门。

什么是五联疫苗?

五联疫苗是一种联合疫苗,为进口疫苗,并且是自费的,自费价格在500-700之间不等,各地略有不同。五联苗为是法国巴斯德公司生产的,含有脊灰、百白破、和b型流感嗜血杆菌疫苗的联合体。这种疫苗能减少宝贝的接种次数和痛苦,正常情况下接种12剂变为五联的4剂。

五联疫苗为什么会断货?

据各大地方媒体的新闻报道可见,五联苗已经在全国出现断供。断供原因主要是生产商全球仅一家:法国巴斯德;2、国内对五联苗的信任度非常高,随着二胎的到来,缺口更大。3、最重要的一点国家食药监拒签了8个批次的五联苗,拒签原因未知。所以市场上的断供就明显加快了。根据医院和各地疾控中心的反馈,最快也要到今年9月份才有供应,全面恢复估计要持续到几年11月。

怎么选择替代方案?

1、如果你的宝贝还没接种过五联苗,那最好了,直接按照脊灰+百白破的顺序接种即可。

2、如果已经接种部分五联苗,那建议通过脊灰+四联苗补充接种最稳妥。


]]>
百度熊掌号折腾手记(二)chrome控制台报警告性错误。 安吉做网站 https://www.hogsro.com/article/id/88.html 2018-03-12 00:32:51 https://www.hogsro.com/article/id/88.html

自从上次部署完熊掌号之后,就没在管过了,发的几篇文章有收录的有没收录的。前两天小伙伴们在博客112群里说页面加了熊掌号后会在chrome中报警告性错误。网上也都没有搜到合适的解决办法。这对于我们这些有强迫症的人来说简直比要命还难受。所以着手把这问题解决了。



首先看下具体错误信息。

A parser-blocking, cross site (i.e. different eTLD+1) script, https://ae.bdstatic.com/msite/static/sdk/main.d797d0d5.js...

错误大意就是利用document.write()跨站脚本被重构了。根本的解决办法就是修改js中的document.write。只可惜这个是百度的脚本,根本无从改起。

当时好奇我就看了下https://msite.baidu.com/sdk/c.js?appid=1585053022069870这个c.js的内容。通过部分可读信息发现这个就是加载一个粉丝关注功能。那么我记得粉丝关注不是必须选项。百度原话是(强烈推荐)。也就是说,可以不用这个关注代码。

通过阅读熊掌号页面改造说明,熊掌号后期可能会审核关注代码。那么既做到保留关注代码,又不想用百度的内置JS,最好的办法就是自己排一个关注代码模块。说干就干。

1、删除熊掌号ID声明。就是诱发报错的那段js。下图中方框内部分。

QQ图片20180312001703.png

2、排版自己的关注样式。我是按照文章中部样式自己排的,由于不同的站采用的程序或者主题不同,所以这个还需要自己动手去做一个。我这里就不发了,没有参考意义。如果你是用bootstrap前端框架,可以给我留言,我把我排好的发你。

关于这样修改后是否影响熊掌号正常使用。

这里做下说明,第一个是收录问题,这个实际上是通过API接口提交的,和上述删除的js无关。第二个是熊掌号的结构化展现功能,这个是jsonld代码负责处理的,也和那个js无关。那段js纯粹就是加载通用的粉丝关注功能代码。所以可以放心大胆的删除。


好了,通过上述操作后,就没有警告错误了。


]]>
Source Code Pro字体使用感受 安吉做网站 https://www.hogsro.com/article/id/87.html 2018-03-11 16:24:29 https://www.hogsro.com/article/id/87.html

很久之前一直使用系统自带的Courier New的等宽字体。用习惯了也没觉的有什么。偶尔一次看到Adobe出了一款新的等宽字体,就好奇尝试了一下,这一用就放不下了,特别Source Code Pro对字母o和数字0的处理、字母l和数字1的处理,很明显一眼能分辨,而Courier New可能还需要仔细看一下。为了区别这两种字体,我在sublime text3下分别载入这两种字体,渲染出来的效果截图比对。


首先来配置一下Courier New字体。

菜单栏->preferences->settings。输入"font_face":"Courier New",为了观察区别,两种字体将同时使用同一字号10pt。输入"font_size": 10,

01.png

截图看下Courier New渲染出来的效果。

02.png

再来重新配置下Source Code Pro字体,看下Source Code Pro渲染的效果。

03.png

从上面两个图中明显可以看出,Source Code Pro对字母O、L和数字0、1分别做了特异化处理。数字0中间补点,小写字母L做了头尾延伸。这样在满满的代码界面,一眼就能分辨,对程序员绝对是更加友好。


最后字体打包放在这里了:Adobe等宽字体.zip


]]>
爱普生LQ-630K打印错位修复。 安吉做网站 https://www.hogsro.com/article/id/86.html 2018-03-08 00:31:24 https://www.hogsro.com/article/id/86.html

今天下午好好的公司打印发票的爱普生LQ-630K针式打印机出故障了,导致打印发票上半部分文字分离错位,下半部分整体超出票据边界了。打印过程中打印头频繁撞击机体两侧,最后打印头在一侧卡死,彻底歇菜了。由于去年下半年有过发生类似情况,当时以为是色带问题,更换色带后解决,没想到时隔不到两个月再次出现这个故障。必须从头检查下这个问题了。


来看下打印错位的效果。

IMG_20180307_194341.jpg


首当其冲的怀疑对象肯定是驱动问题。

年前由于刚换过色带,所以没把怀疑对象放在色带上面,最近电脑总是莫名卡顿,所以立刻怀疑是驱动有问题,先将打印机驱动删除,重新安装驱动,经测试,打印依旧异常。可以断定驱动没问题。

第二,检查色带和走纸轮。

不得已再次拆开色带,通过手动卷色带轴查看色带是否卡死、色带滚动是否正常。年前刚换的新色带,很显然问题不在它身上。然后在看走纸轮,大致推动了下几个走纸轮,也是一切正常。

第三,检查导轨和皮带。

在检查走纸轮的时候,手上不小心碰到了导轨,一看,咦咋黑乎乎的,正常情况下导轨上应该是黄油啊。回想了下,这台打印机有五六个年头了,导轨上的黄油早就干了,字车反复与导轨摩擦产生了一些碎屑和色带上的墨粉挥发造成导轨上有污垢。那么显然,打印头撞击侧壁的原因很可能就是导轨不顺畅,通过手动推动打印头,有点发涩的感觉。就好像拧门把手,拧不动松手再用力,一下拧开的效果,打印头一次无法滑动到位,第二次在一下就撞在了侧壁上。同时检查下皮带,主要是看看松紧和是否缺齿。

IMG_20180307_173740_HHT.jpg

修复过程:

1、用毛巾或者餐巾纸擦拭导轨,设法把纸巾穿到导轨后面,把这个导轨包裹起来擦拭。并多次移动打印头,将整个导轨擦拭到位。看图,擦出来的黑色物质。

IMG_20180307_173750_HHT.jpg

2、使用酒精棉球将导轨彻底清理干净。不要留水渍。

3、对导轨上适量的黄油。什么,你不知道什么是黄油?好吧,去门口修车店去讨要一点,一丁点即可。当然,如果你附近没有这样的店,或者磨不开脸面或者备点自用,那么可以淘宝买,比如这样的

未标题-1.jpg

博主觉得放家里常备就很不错,偶尔需要润滑的地方抹一点。链接我都给你找来了。点击这里查看

下面这个就是博主直接去修车店讨要来的黄油。

IMG_20180307_174948_HHT.jpg

4、反复滑动打印头,直到导轨上的黄油均匀。打印头推动顺滑。

5、装上色带后,建议将打印机恢复出厂设置。方法:电源关闭状态下,同时按住打印机上的三个键,打开电源,灯亮松手。

如果你的打印机不是以上三种情况,记得检查下最后一项,线路连接。

第四,检查数据线连接和接口。

如果打印机放置很久没移动过,务必检查下USB数据线,电脑端和打印机端都拔插一下。长时间金属接头有锈蚀导致接触不良或者偶然造成的接头松动。


]]>
nginx下301跳转到https出现不安全连接的问题 安吉做网站 https://www.hogsro.com/article/id/85.html 2018-03-06 15:34:07 https://www.hogsro.com/article/id/85.html

群里小伙伴上次变更域名后,将老域名通过301跳转到新域名(参看:宝塔面板操作多个域名做301跳转)后,落下了一个后遗症:开启强制SSL后,通过输入老域名或者外部链接到老域名,会出现301不生效,浏览器加载一个您的链接不是私密连接的对话页面。这就尴尬了,既要保证正常跳转,又需要强制SSL连接,通过重新配置nginx的301跳转来改造下。


先上一张图,就是上面提到的不是私密连接

1.jpg


正题,配置方法(以宝塔面板为例)。

第一步删除上次的老域名的301跳转代码

注意server_name中只保留新域名的主域和www二级,然后删除下发的301跳转。

第二步复制整个server,粘贴到下面

1、server_name中写老域名(如本测试的数据ce.anji.net)

2、删除整段强制SSL

3、添加上301跳转内容

2.jpg

3.jpg


全部完成后,保存,清除浏览器缓存后再试试看吧,通常能即刻生效,如果无效果,尝试重启下nginx即可。

]]>
PHP对数组进行排序操作 安吉做网站 https://www.hogsro.com/article/id/84.html 2018-03-03 01:38:59 https://www.hogsro.com/article/id/84.html

昨天别人问了我一个问题,瞬间把我给问懵了。事情是这样的,问我给到一个既定数组,现在让我实现下将数组元素从低到高升序排列。第一个反应是直接使用ksort之类排序函数操作(一时脑子浆糊,这系列函数每次都要翻手册,实际上是asort)。告诉我,不能使用内置函数,需要自己写一个。好吧,这么大的坑,有简单的不用,要来个复杂的。当时写了个简单实现的方案,没多想,晚上闲着没事就想了下效率问题。最近对程序运行效率始终保持敏感。就想测试下各方法效率到底相差多少。

首先需要一个测试的数组,给定100W元素的数组。

第一问题就来了,如何快速有效的生成包含100W元素的无序数组?

其实当时我是想生成一个值为1-100W之间的随机数的。又脑子浆糊没想到啥简单办法,就将就使用下不重复的数据吧,不影响后续进行排序操作。简单办法:

$arr=range(1,1000000,1);
shuffle($arr);

生成了既定数组后,就是排序操作了,这里应用下ThinkPHP5的debug函数,计算下脚本时间。

一、使用asort进行排序操作。

debug('begin');
asort($arr);
debug('end');
dump(debug('begin','end').'s');

输出结果:string(9) "0.711041s"。耗时0.7秒完成了百万数据的排序操作,asort在PHP7的效率还是非常高的。

二、自定义比较排序。

debug('begin');
$length=count($arr);
    for($i=0; $i<$length-1; $i++){
	for($j=$i+1; $j $arr[$j]){
	      $temp = $arr[$i];
	      $arr[$i] = $arr[$j];
	      $arr[$j] = $temp;
	   }
    }
}
debug('end');
dump(debug('begin','end').'s');

for的效率还真是底下,两层for就干脆别提了,意料之中的脚本超时,于是将既定数组缩小的1W。再次运行脚本,输出结果:string(9) "7.845449s"。1W数据竟然高达7秒。

三、冒泡排序。

$length=count($arr);
    $temp =0;
	for($i=0;$i<$length;$i++){ 
	   for($j=0;$j$arr[$j+1]){ 
	          $temp=$arr[$j];
	          $arr[$j]=$arr[$j+1];
	          $arr[$j+1]=$temp; 
	       } 
	   } 
}

运行结果:string(9) "9.343535s"。没想到冒泡竟然也如此低下。但凡两层for的都太低效了。印象中冒泡不能这么低啊,网上搜了下关于冒泡的改进方法。

四、改进版的冒泡排序。

$length = count($arr);
    $flag = TRUE;
	for($i = 0;($i < $length - 1) && $flag;$i ++){
	   $flag = FALSE;
	   for($j = $length - 2;$j >= $i;$j --){
	      if($arr[$j] > $arr[$j + 1]){
	         $temp=$arr[$j];
	         $arr[$j]=$arr[$j+1];
	         $arr[$j+1]=$temp; 
	         $flag = TRUE;
	      }
	 }
}

输出结果:string(9) "8.566490s"。比直接冒泡的提高了不到1秒。

通过简单测试看来还是通过PHP底层运算来的高效和简便。在不能使用内置函数的时候,如果基础知识不稳固,还是蛮吃力的。

]]>
百度熊掌号折腾手记 安吉做网站 https://www.hogsro.com/article/id/83.html 2018-03-01 01:23:31 https://www.hogsro.com/article/id/83.html

熊掌号出来有一段时间了,白小姐资料一肖中特马博客早早的就申请好了熊掌号。久久没有启用,放置了一段时间后,第一次启用熊掌号,发现博客程序中对缩略图定义的尺寸不符合要求,另外考虑到和百度的粘性太大会否影响其它搜索引擎的问题,所以第一次使用无图版的上线一天,思考再三,无图版的没有数据流的样子,并不妥当,就干脆下线了。经过前段时间对博客前台的panel模块进行改造后,把文章封面图处理成百度要求的300*200的尺寸后,近期重新上线了熊掌号。接下来简单说一说熊掌号的接入操作。


首先是熊掌号的内容要求

一是url规范。这个其实很简单,一是要求页面必须有对应的手机版或者是自适应页面,不能是单纯的PC页。白小姐资料一肖中特马博客是采用bootstrap的自适应页面,所以这里不是问题。

二是只能接受正常页面,这里需要注意的是状态码为200的文章页。栏目页首页这些就不要了,其它404页面这些都是没用的。


重点关注下页面改造要求

1、添加熊掌号的ID声明。一段JavaScript脚本,丢到head里面去就行了

2、关注功能代码。根据你网站的位置和风格自行选择吧,白小姐资料一肖中特马博客是选择文章段落间的。具体请看本博客的文章页面。

3、添加href的对应标签。这个就是针对PC页面和手机页面url不一致的。白小姐资料一肖中特马博客是自适应页面,所以pc页面url和手机页面url一致。

4、添加json_ld数据。这个将样本整个拷贝到你的页面中。

        {
            "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
            "@id": "https://www.hogsro.com/article/id/{$articles.id}.html",
            "appid": "1585053022069870",
            "title": "{$articles.art_title}",
            "images": ["https://www.hogsro.com__UPLOADS__/{$articles.art_img|str_replace=',','',###}"],
            "description": "{$articles.art_description}",
            "pubDate": "{$articles.art_date|date="Y-m-d H:i:s",###|str_replace=" ","T",###}",
            "upDate": "{$articles.art_date|date="Y-m-d H:i:s",###|str_replace=" ","T",###}",
            "lrDate": "{$articles.art_date|date="Y-m-d H:i:s",###|str_replace=" ","T",###}"
        }

这里解释下,{}是ThinkPHP5的输出标记,{}中的这些源内容实际上是TP5控制器返回给视图页面的,而并非你现在看到的变量或者字符串。image中选择不填,就是无图形式。1张图就是白小姐资料一肖中特马博客这种形式,还可以是三张图的。description建议你选择和页面description一致。下面三个时间记得处理中日期和时间的分隔使用字母T而不是默认的空格。所以这里白小姐资料一肖中特马博客使用函数进行了一个替换操作。

5、做好上述操作后,将你网站的某个文章页地址复制到校验工具url栏中,右键你网页查看源代码,ctrl+a全选后复制到校验工具的代码框中。点击校验即可。如果没有通过百度会给出提示,参照提示处理即可。


最后就是自动推送的改造

白小姐资料一肖中特马博客是采用ThinkPHP5.0的程序开发的,所以在网站后台添加文章的时候,需要做一个推送方法,将当前发布的文章链接推送给百度,百度就能即时抓取了。直接上代码:

private function toBaiduSiteMap($id)
    {
        $urls = array(
            'https://www.hogsro.com/article/id/'.$id.'.html',
        );
        $api = 'https://data.zz.baidu.com/urls?appid=1585053022069870&token=1gdDlQQ1XVSlxGzg&type=realtime';
        $ch = curl_init();
        $options =  array(
            CURLOPT_URL => $api,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => implode("\n", $urls),
            CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
        );
        curl_setopt_array($ch, $options);
        $result = curl_exec($ch);
        return $result;
    }

在发布文章获取自增ID后将ID传入这个方法即可完成推送。这里需要留意下百度的一个大坑。当时没留意,就看下了成功返回示例,就去判断了下success参数。而推送反馈中根本没有这个参数,而是success_realtime参数。看图,从这里可以看出百度的文档是多毛糙。

未标题-1.jpg


完成这些内容后,你的百度熊掌号就正式上线了。上线后及时更新内容,关注搜索指数等,指数超过300就过了新手期了。


]]>
走过丝婚四年,步入木婚时代。 安吉做网站 https://www.hogsro.com/article/id/82.html 2018-02-26 01:21:32 https://www.hogsro.com/article/id/82.html

我俩原是小学同学,相识也有二十多年了,后来由于爱人休学了一年,在初中时候我们就错开了年级,直到毕业后很多年,似乎也都记不起对方的模样,或许我们都是太平凡,在同学中都不出众出彩吧。在媒人安排的相亲撮合下,我们各自在自己的情感世界兜兜转转后又回到了起点,就这样,我们再次相识了。

匆匆岁月,一晃已走过婚姻四个年头,这些年差不多都在争争吵吵中度过,夸张点说不亚于三天一小吵,五天一大吵。我俩就像刺猬一样,发起怒来互相刺痛着对方。好起来的时候也是同年轻小情侣一般如胶似漆,这就是所谓的相爱相杀吧。

四年间,女儿小年糕现今已逾两周岁,随着她的到来,我俩从开始的过度关注对方造成的争吵转到了对女儿抚养和教育理念的争论。依然是过着小事小吵大事大吵的日子。

这些都不是要命的,要命的是天下最难处的婆媳关系。都说男人要两头劝或者两头哄,当自己,老婆,老妈三个急脾气凑一起的时候,哄和劝早就没了效果,换个方式我强势一些,希望震住两方,在急脾气面前,俨然也是不奏效。形容自己是老鼠钻在风箱那实在是太轻描淡写了。

吵架吵多了,就麻木了。夫妻吵架床头吵床尾和,没有隔夜仇。次数多了,想想其实我们争吵的这些在柴米油盐中没有一丝一毫意义。每次吵完,总是忏悔,没有下一次了。而每次急脾气上来了,又开启死循环模式。寻寻觅觅,尝试着生活中的相处之道,或许是我的嘴巴太笨,有心哄,无话说,陷入尴尬的境地。

过年那天我俩互相发了个红包,老婆发的红包留言是:希望2018新的一年我俩少吵点架。这正月十五还没过完,就已经吵了一场,嗨,如同魔咒,紧紧的缠着我俩。如同梦靥,挥之不去的心苦。

春去秋来,希望时间能磨平我们的锋芒,寒来暑往,希望生活能沟通我们的内心。丝婚缠绕,木婚硬实,我们还有银婚和金婚在将来,我们的爱能经得起平淡的流年,能抗的住蹉跎的岁月。

反省自身,寻找共鸣,写在结婚四周年的纪念日。


]]>
小米4手机更换电池复活记 安吉做网站 https://www.hogsro.com/article/id/81.html 2018-02-25 23:18:03 https://www.hogsro.com/article/id/81.html

过年那天,手机也忙坏了,竟然自爆了(电池持续发热,熔芯了)。这大过年的没手机,春晚红包也抢不到啊,悲剧。将就先把淘汰下来的iphone5s拿来应急,这个原本是女儿的动画专用播放机。过完年,大年初二看到小米官网说春节不打烊赶紧下单新买了小米6。慢腾腾的手机一直到正月初六才拿到,还是自己到顺丰网点去取的,再一次悲剧。初七快递应该都正常了网购了小米4的电池,今天拿到货,开始动手自行更换手机电池。


电池和更换工具

在淘宝上搜索小米4电池,选了销量最高的那家,如你懒的去搜,链接我给你找来了,可以点击这里快速前往购买。店家送了工具,收到货后包含这些。

01.jpg

上图中包含充电线,充电头,两把螺丝刀,一个撬棒,一块3M双面胶,一个吸盘,电池,钢化膜。

更换步骤一:取下手机后盖。

使用吸盘吸住后盖边角位置,用力一拉即可。我的手机由于是电池膨胀了,所以后盖自动胀开了,无需吸盘。

02.jpg

拆开后盖后看下是这个样子的。原装电池和新电池的比较,可以看到,新电池比原装电池多了80毫安。

04.jpg

更换步骤二:拆下手机中盖。

螺丝主要集中在顶部,底部还有两颗,总共10颗小螺丝,下图中的中部红色框中的三个螺丝不用拆,是固定闪光灯的。拆螺丝的小技巧:1、先对角。2、全部拧松,3、店家送的螺丝刀非常棒,用手心压住螺丝刀,两个手指拧螺丝刀中部,拿到手可以自己观察下,非常好用。

03.jpg

拆开中盖后,是这样的。

05.jpg

更换步骤三:揭开原装电池上的封皮。

原装电池上面有一层封皮,在一侧可以直接拉开,拉开后就能看到两条排线。就是因为这两条排线走线是在电池背部,所以电池不能直接硬拆,拉断排线就不好办了。

06.jpg

更换步骤四:取下电池。

首先使用撬棒将两条排线从插头上撬下来,非常容易。然后使用撬棒撬电池。由于电池背面使用了双面胶粘在手机上,并且这双面胶的强度非常大,直接使用撬棒比较费劲,小技巧:先用吹风机热风预热一下,然后用力拉上一步骤中揭开的封皮,使得电池和手机之间出现一些空隙,然后将撬棒塞入,稍微用点力就成功了。如图所示:

07.jpg

取下的电池可以看到后面有一圈背胶。

08.jpg

更换步骤五:安装新电池。

首先在新电池的背面粘上店家送的双面胶。揭开后将电池安装到电池仓中,然后将两条排线插到位后,对电池用点力,使得双面胶粘牢。

10.jpg

更换步骤六:进入recovery设置。

装入电池后,手机会进入recovery模式,使用音量上下键选择菜单,电源键进入菜单。如果你想保留数据的话,千万别选错了哦。

09.jpg

11.jpg

12.jpg

13.jpg

请忽略我女儿的百日照。

更换步骤七:接上电源试充电。

开机后,尝试给手机充下电,看看充电功能和电池是否正常。没问题后再组装中盖。

14.jpg

更换步骤八:组装中盖和后盖,更换完成。

再把之前的十颗小螺丝拧上。小技巧:先全部拧上,别拧紧。然后对角拧紧螺丝。最后盖上后盖,手动更换电池完成。

写在最后。

小米还有多款手机都能自主更换电池,如果你的电池爆了,或者续航能力急速下降,而手机过了质保期,不妨自己动手更换下电池了。换了新电池,简直就是换了个新手机,续航和流畅度杠杠的


]]>
宝塔面板操作多个域名做301跳转 安吉做网站 https://www.hogsro.com/article/id/80.html 2018-02-24 22:04:47 https://www.hogsro.com/article/id/80.html

都知道在网站更换域名的过程中为了保住收录和排名,就需要通过搜索引擎提供的改版工具来进行操作。而其中最重要的就是对老域名进行301永久重定向获得搜索引擎的收录更新。实现301有很多方法,可以通过web服务器进行操作,也能通过程序头部书写301跳转代码进行操作。其实目的和效果都是一样的,怎么简单怎么操作。

事情得从今天群里小伙伴在年前购置了双拼域名说起,备案完成后,年后来折腾更换域名。小伙伴前两天从原来的vesta面板被我们忽悠入了宝塔的坑。今天提到要将原域名做301跳转到新域名上。宝塔原本就提供301的功能,也没多想,直到小伙伴说会造成重定向死循环,如图所示:

01.png

好吧,既然这样,就的从宝塔自身看看能不能解决。本文环境(宝塔linux面板、nginx服务器、原域名17shiji.com、新域名hogsro.com)。


首先进入面板网站管理页,点对应的站点设置。添加绑定原域名。如图所示:

02.png


完成后点击301重定向页面,完成新主域名到www二级域名的重定向操作。访问域名输入主域名,目标url输入www的二级域名。点击启用301复选框会在目标url后补加后缀,如图所示:

03.png


完成后点击配置文件,找到#301-START的配置项。会看到一条这样的配置语句:

if ($host ~ '^hogsro.com'){ return 301 https://www.hogsro.com$request_uri;     }  

这时候,我们需要手动增加配置了,因为宝塔提供的301重定向只能操作一个域名的重定向,多个域名无处可添。

复制这个if语句,在大括号后面粘贴。将红色部分的主域名更换为原域名,多个域名就重复几次。如图所示:

04.png


保存后,经过这样一番操作后,清理下本地浏览器缓存后,就尝试下输入原域名吧,看看有没有成功实现301重定向。


]]>
ThinkPHP使用数组条件进行查询之同一字段多个条件 安吉做网站 https://www.hogsro.com/article/id/76.html 2018-02-21 21:57:02 https://www.hogsro.com/article/id/76.html

对同一表中多个字段的查询,在thinkPHP中使用数组条件进行查询,有三个好处,第一可以批量设置多个查询字段,第二可以设置多个查询条件,第三结构化你的代码,让代码更具可读性。数组条件查询有简单数组查询、数组表达式查询,一般使用$map保存数组条件。




简单数组条件查询

例如需要查询user表中用户名(username)为“xifengli”并且状态(status)为正常(1)的数据。

$map['username'] = 'xifengli';
$map['status'] = 1;

这样就写好了数组。代入where条件。

Db::name('user')->where($map)->select();


数组表达式条件查询

例如需要查询user表中用户名(username)中包含“xifengli”字符的并且状态为不在黑名单(0)的数据的数据

$map['username'] = ['like','%xifengli%'];
$map['status'] = ['<>',0];

上面两种属于基础类型,描述的是多个字段的并列条件。现在的问题是同一字段的并列条件和或者条件如何处理,也就是本文标题中的同一字段多个条件。


同一字段多条件表达式查询

例如现在需要查询用户表中状态为不在黑名单并且状态不为临时(2)的用户。

$map['status'] = array(['<>',0],['<>',2],'and');

又例如现在需要查询用户表中状态为不在黑名单或者状态为正常(1)的用户。

$map['status'] = array(['<>',0],['=',1],'or');


好了,上面三种情况就是ThinkPHP常用数组条件查询。

]]>
好看的皮囊千篇一律,善良的灵魂独具一格 安吉做网站 https://www.hogsro.com/article/id/75.html 2018-02-20 23:02:36 https://www.hogsro.com/article/id/75.html

初二上海晴天,出去浪了一天,初三阴天,接着浪,带着孩子去逛万达,打算让小家伙在咕叽咕叽里面嗨一天,所以早早的出门。万恶的万达停车费贼贵,停一天的话,最少得40块钱,好吧,我就绿色出行,反正公交站在小区门口,终点站直接在万达。早上拾掇完毕匆匆出门。带了公交卡,卡着时间上了车,“滴,请去充资”,麻蛋好久不用公交卡,么有余额了。魔都不比我大杭州,公交还不能扫码付。尴尬一番只好跟司机说,我到终点站后补票,司机没说话我就当默认同意了,安心的坐到后排。

和老婆大人聊着这尴尬的话题,早知道身上揣点零钱了,悲剧。这时候又上来一帅哥带着儿子,看年纪于我一般大,于是就问了下帅哥有零钱吗?换我两枚好付了公交车钱,帅哥来了句,我们都是公交卡,把车上其他乘客一下给代表了。唉算了,终点站再说吧。

这时候前两排位置上一女乘客回头跟我打招呼,说我有硬币,伸手就递了过来,我赶忙起身边道谢边接过硬币就走到她身边,美女,您支付宝借我扫下,我转账给你。美女连着两句不用了,属实让我更加尴尬了,我再一次强调将这个钱通过手机转给她,美女看着我们带个2岁不到的娃儿,说就当给宝宝的。只好谢过将硬币投入投币机,再次道谢后坐了下来。

美女并不漂亮,或者是很一般,扔在人堆里绝对不见人影的那种。但是主动出手帮助别人的那一刻,她所放出的光芒足够照亮整个车厢了。世上多数人都是好人,但好人再上一层,善人却不多。网络常说某某人自带光环,美女自带善良的光环在这个春节足够温暖。

记下这个经历,假使网站一直能坚持做下去,留待将来给女儿看,教她学会做一个善良的人。


]]>
岁月如歌,大年初一写在《如歌岁月》栏目开设之际 安吉做网站 https://www.hogsro.com/article/id/74.html 2018-02-16 22:15:54 https://www.hogsro.com/article/id/74.html

当你看到这篇文章的时候,或许你对博主的日常有了一丝了解的兴趣。在这样一个定位于技术类博客之下,这些不相干的内容实则不合放在网站的台面之上,所以博主将这些琐碎的文字都藏在这个栏目之内,页面上将不会直观的展示本栏目中的任何内容,栏目内的文章不参与首页展示;也不计入推荐、热门、热评、归档、订阅等模块。博主既想将这些不经意间流露的情感与人分享,又不想颠覆网站最初的定位,采取了一种犹抱琵琶半遮面的态度。在栏目开设的时候,一度曾想将这个栏目中的内容对搜索引擎屏蔽,所有来路只会是本站中的唯一隐藏入口。思来想去,毕竟现在连文章也不存在,或许将来某篇中的三言两语能对其它人有一些作用,屏蔽搜索这事儿也就作罢了。

为什么会开设这样一个栏目?

最主要还是为了记录一些有意义的流水账吧,好记性不如烂笔头嘛,譬如时间长了可以回想下几年来的思想转变;偶然兴起可以拿捏的几许文字;陪孩子成长中的酸甜苦辣和一些与己有着非同含义的流水日记。那次在银色乐航网站上留下了几缕拙语,乐航兄不嫌,建议我可以在自己博客上开更一些此类内容。我当时的想法是建站初衷,想把博客做成自己的爬坑指南,做一些纯粹的技术性内容。关于生活类的前几天尝试开设了一个二级域名用来专门做这些,担忧自己的精力无法同时维护两个站,还是把这些略微有点意义的事记录在这个站上吧,为了不违背建站初衷,也就有了上述关于本栏目隐藏深处的做法。

关于网站名称和栏目名称的一些由来。

“白小姐资料一肖中特马”拆开,先说下“里”字。里在江南吴语环境中,通常是指里弄,一些小街小巷。正如本博客在万千独立博客城市之中形如里弄之姿,博客虽小也是自己的一方天地。“”还有一层故乡的意思,桑梓故里,撇不去的一生之根。博主魔漂一族,如蝼蚁般安身这广厦之间,时常希望归去,奈何生活所迫,祈愿所不能及,于是乎把故乡的一切搬进了电子的世界。域名anji实则为浙北小城安吉。西枫本没有这个地名,只是博主的小村子在“西”和“枫”两个村子的更里面,名称过于俗气,倒也不是说博主嫌弃村名,只是将村名两字放在网上搜索的话,大抵是无法准确找到本博客了。干脆也就结合了临近两村村名加之这个富有含义的“里”字用做了博客名。

如歌岁月就不解释了,相对于岁月如歌,博主更喜欢倒装的如歌岁月。用起伏的曲调修饰不完美的人生更切合一点意境。岁月如歌但觉一路徜徉,谁人又是一帆风顺的境遇呢?

写在大年初一的上海,祝所有访问本站的朋友春节快乐,狗年旺旺旺!

]]>
JS控制批量选择/取消复选框 安吉做网站 https://www.hogsro.com/article/id/73.html 2018-02-16 01:15:15 https://www.hogsro.com/article/id/73.html

场景应用:在后台分页输出查询数据(如文章、评论),往往需要进行批量删除/审核等操作。后端程序需要读取操作的ID集合进行批量处理。而前端批量选择传入ID是最方便的使用方式。而批量传入通过使用复选框的[]方式传入数组给后端就是最便捷的办法了。直接上代码:


使用复选框,首先放置单条数据的复选框。

<input name="id[]" type="checkbox" id="id[]" value="{$v.id}">//注意后面的[],数组形式

其次,处理当前页一个总的全选/取消复选框

<input type="checkbox" name="allbox" onclick="CheckAll()">//点击执行checkall函数

第三就是CheckAll函数

function CheckAll(){ 
  for (var i=0;i<eval(form1.elements.length);i++){ 
    var e=form1.elements[i]; 
    if (e.name!="allbox") e.checked=form1.allbox.checked; 
  } 
}

最后别忘了外层套一个form标签。

这样就完成的前端页面的整个全选/取消操作模式。数据传入后台后的批量处理可以参看:单数据和批量数据的删除操作。

写在最后。

今年大年初一,白小姐资料一肖中特马在这里给所有访问者朋友拜年了,祝大家在新的一年生活如意,事业顺利,博客访问量节节攀升。

]]>
Python学习笔记三(常用运算符) 安吉做网站 https://www.hogsro.com/article/id/72.html 2018-02-14 02:59:55 https://www.hogsro.com/article/id/72.html

2017年年终确定的从2018年开始学习一门新的语言。随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了。博客今天更新第三篇学习记录,关于Python的运算符的使用,运算符包括算术运算符、比较运算符、赋值运算符和逻辑运算符。所有学习过程为自学,自学内容来源于网络教程,包括但不限于视频教程、文字教程、源码等。


算术运算符

假设:a=5,b=3

未标题-13.jpg

比较运算符

假设:a=5,b=3

未标题-14.jpg

赋值运算符

未标题-15.jpg

逻辑运算符

假设:a=5,b=3

未标题-16.jpg

运算符优先级

QQ图片20180214022020.png


]]>
SEO中不可忽视的h1到h6的应用 安吉做网站 https://www.hogsro.com/article/id/71.html 2018-02-09 00:04:24 https://www.hogsro.com/article/id/71.html

那天在群里有位SEO大拿,于是我吵吵着让大佬帮我看下我的博客优化还能怎么搞,他回我说我的博客缺少h1标签。从这里拉开了话题。着重聊了些h1标签的内容,其实也都是老生常谈。因为当时重建这个博客的时候就考虑到优化因素在内,所以今天抽空将我所理解的h1到h6的使用记录下来,也是于大佬们探讨。



h系列标签是什么?

h标签是html中常用的元素,通常都是用于定义页面中的标题,也就是说h标签的含义非常明确,就是做标题,无他,所以h标签不像p标签或者span标签那样呈现的是页面结构属性,一般认为它呈现的是目录属性。

h标签又细分为h1、h2、h3、h4、h5、h6六种规格。层级关系依次递减,相对于搜索引擎来说,它们圈定的标题重要性也同样依次递减。如何科学规范的使用h标签是做SEO的基础学问。


h系列标签的样式如何处理?

h标签在使用的时候,由于默认加载的样式通常无法满足页面设计。样式需要被重置,可以在样式表中定义h系列标签的样式。有两个问题需要注意:1、h系列标签不能使用align属性。2、h系列标签的着重是递减关系,所以自定义的字号需要递减,以免误导搜索引擎。


h系列标签的使用。

1、h系列标签的递减关系存在,所以在页面应用是不能颠倒使用顺序,例如h6标签防止在h1标签的前面。它们是一个纵向层级关系。也因此,不同等级的h标签不要出现在同一行内。h1标签内容具有唯一性,所以不同页面的h1标签内容最好是不相同的,在html页面嵌套使用中要注意这点。

2、所有h标签仅包含文字内容,不要将图片等其它类型资源包含在h标签内。

3、h标签内部是标题,这就限定了它内部应该是一个完整的句子,不能是词语,更有甚者在里面堆砌关键词。

4、h1标签作为重点,它仅能在当前页面出现一次,并且只能出现在body标签内部。越接近body越好。一般作为当前文档的主标题使用。那它和title有什么区别?title是在head中,title的内容通常显示在浏览器的标签上,它的作用更多的是提供机器使用和识别。而h1则不同,它是完完整整针对访问者的。只需记住title的内容可以直接套用h1标签的内容。而h1标签的内容则不能完全引用title的内容。

5、h2通常作为副标题使用,作为h1的注解,一般意义上h2标签在页面中同样最好仅使用一次。

6、h3到h6标签作为段落标题、小节标题在使用数量上则没有限制了,仅需遵守不要颠倒次序即可。


本站h系列标签的使用情况。

首先本站并没有使用h1和和标签,最大的层级是h3标签,大家可以看到本文的标题使用的是h3,且未定义任何样式,仅受父级元素约束。h3标签内的文本使用文章标题,且没有添加本站的关键词“安吉网站建设”。本页面title的内容是套用h3标签内容后补加了网站名称白小姐资料一肖中特马博客,正如上面所说h1和title的关系。本文段落间小标题使用的是h4标签,且h4的样式被深度定制,以利于阅读。


最后说了这么多,其实都是老生常谈的内容,并没有新鲜花样。主要还是告诉大家h系列标签的两个重要使用原则:审慎原则和层级原则。


]]>
以关联表中的count计数作为主表的排序依据(进阶版) 安吉做网站 https://www.hogsro.com/article/id/70.html 2018-02-06 01:52:38 https://www.hogsro.com/article/id/70.html

上一篇文章在最后提到“在foreach循环中嵌套查询,这是非常耗费资源的”。当时考虑到本站应用场景简单,查询仅为百位数量级,性能损失忽略不计,就图简单没有深入去重写程序。今天得空,改造了下程序,通过操作数组来达到避开在遍历中使用count查询的目的。



先来通过thinkPHP的debug函数来测试下昨天的程序性能。

public function tagslst($num)
    {
        debug('begin');
        $tagRes=Db::name('tags')->select();
        foreach ($tagRes as $key => $value) {
            $tagsnum=Db::name('art_tag')->where('tags_id',$value['id'])->count();
            $tagsRes[$key]=array('sort'=>$tagsnum,'id'=>$value['id'],'tag_name'=>$value['tag_name']);//构造键名为sort,键值为count计数的新数组
        }
        foreach ($tagsRes as $k => $v) {
            $sort[]=$v['sort'];
        }
        array_multisort($sort, SORT_DESC, $tagsRes);//按tags数多少重新排序数组
        $tagsRes=array_slice($tagsRes,0,$num);//返回指定部分数据
        debug('end');
        dump(debug('begin','end').'s');
        dump(debug('begin','end','m').'kb');die;
        return $tagsRes;
    }

测试结果:运行耗时0.05s,内存占用112k。如图:

未标题-1.jpg

尝试颠倒查询顺序,通过内置数组函数进行计数。

上一篇是正常思维,通过查询tag表中的id在关联表中做count查询查询,最后以count依据截取需要的部分内容返回给控制器。缺陷在上一篇中提到,将第一步结果遍历后,代入count计数,有多少条数据就要查询多少次数据库,这个性能损失非常大。

今天换个思路来实现相同的目的。首先通过查询中间表中的tags_id列,将查询结果通过array_count_values函数做一个计数操作(关键就在这里,通过使用数组来计数达到避开循环中使用count查询。后续对这个数组截取需要的部分在tag表中使用in查询,返回最终查询结果即可。代码如下:

public function tagslst($num)
    {
        debug('begin');
        $tagidRes=Db::name('art_tag')->field('tags_id')->select();
        foreach ($tagidRes as $key => $value) {
            $tagids[]=$value['tags_id'];
        }
        $tagids=array_count_values($tagids);
        arsort($tagids);

        $tagids=array_slice($tagids,0,$num,true);
        
        foreach ($tagids as $k => $v) {
            $tag_idRes[]=$k;
        }

        $map['id']=['in',$tag_idRes];
        $tagRes=Db::name('tags')->where($map)->select();
        foreach ($tagRes as $key => $value) {
            foreach ($tag_idRes as $k => $v) {
                if($value['id']==$v){
                   $tagsRes[$k]=$value; 
                }
            }
        }
        ksort($tagsRes);
        debug('end');
        dump(debug('begin','end').'s');
        dump(debug('begin','end','m').'kb');die;
        return $tagsRes;
    }

同样,也使用debug函数测试下相应的性能数据。得到结果如下:

未标题-2.jpg

和前面的数据进行对比可见,耗时节约70%内存消耗减少50%以上。性能提升还是非常明显的。性能提升的关键在用PHP数组内置函数去代替了count计数查询,第二是截取需要的部分进行最后的数据查询。

]]>
以关联表中的count计数作为主表的排序依据 安吉做网站 https://www.hogsro.com/article/id/69.html 2018-02-05 01:01:12 https://www.hogsro.com/article/id/69.html

标题场景例如本站右侧标签云,主要的排序依据是tag标签出现的次数。由于数据库设计时,将tag标签独立,并没有作为article文章表的一个字段。通过一个中间关联表(art_tag)来对应文章表(article)和tag表(tags)之间的映射关系。通过查询tags表中的数据,以art_tag表中的映射数量进行排序操作。



先来看下三个表结构涉及的字段。

1、文章表(article):文章ID(id)

2、标签表(tags):标签ID(id)、标签名(tag_name)

3、中间表(art_tag):序号(id)、文章ID(article_id)、标签ID(tags_id)

注:在本例中实现本站右侧标签排序并未用到文章表。

业务目标的实现。

业务目标即:对art_tag表中的tags_id进行count计数作为tags表查询的排序依据。这其中牵扯到两次查询,首先查询tags表,第二是需要对art_tag表中对应的tags_id做count查询。

直接上代码:

public function tagslst($num)
    {
        $tagRes=Db::name('tags')->select();
        foreach ($tagRes as $key => $value) {
            $tagsnum=Db::name('art_tag')->where('tags_id',$value['id'])->count();
            $tagsRes[$key]=array('sort'=>$tagsnum,'id'=>$value['id'],'tag_name'=>$value['tag_name']);//构造键名为sort,键值为count计数的新数组
        }
        foreach ($tagsRes as $k => $v) {
            $sort[]=$v['sort'];
        }
        array_multisort($sort, SORT_DESC, $tagsRes);//按tags数多少重新排序数组
        $tagsRes=array_slice($tagsRes,0,$num);//返回指定部分数据
        return $tagsRes;
    }

上述语句中构造了一个包含sort为键名,count计数为键值的新数组。通过PHP内置函数array_multisort做了一个降序排列,然后通过内置函数array_slice取出部分数据返回给控制器用于内容输出。

本例性能缺陷分析。

如果数据量过大,第一步查询没有限定数量,后续有在foreach循环中嵌套查询,这是非常耗费资源的。本例中tag数量有限的(最多百位数量级),所以性能耗损忽略不计。如果你需要在大数量级中应用类似查询,那等待的就有可能是脚本超时咯。所以当时在做的时候,一时没有好的办法,就没有深入去研究重写。

]]>
解决php_network_getaddresses: getaddrinfo failed错误的奇怪思路 安吉做网站 https://www.hogsro.com/article/id/68.html 2018-02-01 01:41:28 https://www.hogsro.com/article/id/68.html

标题上面的思路其实是没有思路。问题的最终解决也是通过砍掉功能解决的,问题的原因或许来自于长城防火墙,是想解决而无法解决的问题。

那天一个做外贸的客户说,他们自己在美国购买了一个主机,希望我们帮她把网站部署到海外,方便客户访问。通过客户提供的主机信息大致检查了下环境,确认没问题后就答应了下来。着手帮客户迁移网站数据。迁移完成后,检查了下前台,各页面功能显示正常,因为比较忙,麻痹了下没登录后台看一下。问题在交付给客户后的两天客户告知后台登录不上了。

接到客户消息,赶紧尝试登录后台,发现确实无法登录成功。只好打开项目的调试模式,上传后,再次登录,看到错误提示为php_network_getaddresses: getaddrinfo failed。这个错误还蛮少见的,字面意思就是请求网络地址失败。这个错误本身并没有什么,只是有多个内置函数均能触发此问题。

由于网站前台这两天一直访问正常,唯独后台报错,出错的位置还是登录模块。都不用仔细想就知道肯定是登录请求IP对应的实体地址上造成的。因为登录模块只有一个file_get_contents可能触发此问题。所以排查保险起见,关了这部分功能,再次尝试登录,成功了。

现在的问题是file_get_contents请求的网络地址是国内的ip138呀,难不成ip138挂了?就顺手访问了一下ip138一切正常。这肯定是网络层了。在主机上ping了下ip138,果然不通。又尝试ping了几个国内常用站,都能正常,唯独ip138不行,应该是被墙掉了。

最后没辙,这就是个后台日志功能,原本和客户业务没什么关联,也是无关紧要的东西,最后跟客户说因为网络的关系,就把这个地址请求给关掉了。

]]>
win2003环境下,解决网页上FLV格式的视频无法播放的问题 安吉做网站 https://www.hogsro.com/article/id/67.html 2018-01-30 01:52:43 https://www.hogsro.com/article/id/67.html

一个客户的网站从原来虚拟主机换到一个win2003的云主机上,转移数据,配置环境全部妥当后,发现网页上原来的FLV格式的视频全成一片空白了,不是播放不了,而是播放控件都没有加载出来,白茫茫一片。开始我以为是因为浏览器的问题,没有安装flash插件。当时我再次登录原虚拟主机的地址后发现,视频正常。就排除了这个疑问。


原因分析

那么这个究竟是怎么回事呢,其实之前的博文里面有一篇MIME类型对照表(博文:https://www.hogsro.com/article/id/10.html)。在win2003系统中对应的IIS6对MIME类型的验证做了增强操作。没有认证的扩展名系统是无法提供显示的。所以搞清楚这个原因后就好办了,在IIS里面添加MIME映射关系就好了。

操作步骤

1、打开IIS管理器,找到对应网站,点击右键=》属性=》HTTP头=》MIME类型

未标题-1.jpg

2、在弹出的对话框中点击新建。扩展名输入:.flv。MIME类型输入:flv-application/octet-stream 或者 video/x-flv 点击确定后关闭IIS设置。

未标题-2.jpg


设置好以后,就去浏览器上刷新看看吧,flv格式的视频就可以正常播放了。如果网站上出现这种比较特殊的无法打开的内容,不妨去看一下MIME的映射哦。

]]>
关于ICP备案你所不了解的那些事 安吉做网站 https://www.hogsro.com/article/id/66.html 2018-01-27 02:36:16 https://www.hogsro.com/article/id/66.html

原打算这篇文章是写成正常的网站备案指导步骤的,在写的过程中,我发现其实各大IDC厂商的的帮助信息都已经非常明确具体了,甚至细分到每个省区有不同的细则都标识的很清楚,所以我觉得就没有必要常规套路写该如何操作ICP备案了。刚巧那天群里讲到变更备案是新旧域名各一个备案尾号还是在原来基础上的争论。根据多年的备案操作经验,本文将介绍一些和正常备案相关但又不是直接教你改如何备案的一些相关信息供您参考。

首先我们来讲ICP备案的前世今生。

ICP备案最早要追溯到2005年,当年工信部(那时候分管网络这块的还是信息产业部)出台了一则部门规章《非经营性互联网信息服务备案管理办法》,并随之配套搭建一个备案系统(miibeian.gov.cn)。当初备案没有现在的企业侧系统,都是在信产部网站上做直备操作的。在当时报备的时候还没有强制执行,大多数的网站都根据规定自行报备,一般也就是知名企业站做了备案,更多的个人站长都没有备案的,因为没有备案也能访问。

随着时间推移,到了2008年,网络的发展,违法违规信息泛滥,网上到处是黄赌毒内容,病毒木马横行(还记得发生在2007年的熊猫烧香病毒吗),03年到08年中国网络黄金5年,国内网络安全环境极其恶劣,于是信产部、公安部、中宣部等几个部门开了几个联席协调会议,着力落实网站备案制度(就是网络版实名制),对未履行备案的网站进行关闭。这段时间网站其实还是可以先打开,后备案的,更多的小IDC厂商没有认真落实,仍然有大量未备案网站在网络上运行。

到了2009年信产部要求,没有备案的网站一律关停,谁接入谁负责。没有履行备案管理责任的企业将遭到处罚,那年开始,网站备案开始成了标配。国内存量网站的大量报备导致信产部的备案系统一度瘫痪了很久。

2010年工信部的备案系统在修修补补后仍然心有余而力不足,无法有效的管理备案信息。在当年6月工信部启动了备案系统的一次大规模升级行动。主要是完成中央部委——省区——企业三级报备系统(二期系统)。也就是我们现在通过企业端口进行备案的第一版。为了配套新系统的使用,工信部还启用了一套新域名(miitbeian.gov.cn)。各IDC企业也在之后的的三个月内自行开发的企业侧备案系统也陆续调试上线(经历过的人都知道,那年备案断断续续停了好久)。同年工信部还要求各存量备案网站完成备案新版核验(太低估存量网站了),这个核验最后一直陆陆续续到2012年差不多才全部完成。

在接下来的2011、2012、2013年,工信部系统有多次进行升级改造。直到2014年工信部备案系统(三期系统)正式上线,网站备案才算彻底完成电子化、便捷化、规范化的应用。

其次我们来看下备案号的含义。

先来看看第一个备案号长啥样。ICP备04000001号-1,没错第一个备案号就是工信部备案系统自身的。这个备案号有啥含义呢?

第一个汉字简单明了,代表备案主体所在省区。

后面的ICP备几个字代表的是非经营性ICP备案,区别于ICP经营许可证(ICP证)。

后面8位数字是主体备案号,其中前两位是初次报备年份,比如备案系统自己的备案号就是04年的。比如说白小姐资料一肖中特马博客的备案号 浙ICP备17054138号-1,就是2017年初次报备的。文章前面不是说备案是从2005年开始的吗,没错,那是对公众的,在此之前还有一段非正式化的备案管理。

最后一个-1又是什么意思呢?这个其实是副号。这个是在2010年二期系统上线后才有的。为了管理同一个备案主体的多个网站,就有了这么一个设计。那是不是每一个域名就对应一个副号呢,其实不是的,这里存在一个误解,正确的理解是一个副号就表示是一个网站,而我们做网站的都知道,同一个网站可以对应多个域名。比如工信部的备案系统,就有两个域名(前文提到的一期系统的miibeian.gov.cn和二期系统的miitbeian.gov.cn)这两个域名对应同一个网站(备案系统),公用一个副号-1(京ICP备04000001号-1)。而备案系统的备案主体是工业和信息化部,工信部的备案主体下面有多个网站,比如工信部的门户网站(miit.gov.cn)备案号为京ICP备04000001号-2。这里门户站用的副号就是-2。所以大家在做备案的时候,如果是多个域名对应同一个网站的应该在核验单域名栏把所有域名都填上。或者网站运营后期新增加的域名通过变更备案操作(有群里小伙伴说可以新增网站来操作,对应的会增加副号。其实这是一个美丽的误会,也就是你这样操作后,管局误将你新增的域名的网站当做一个新的完全一样的网站操作了,这是不规范的)。

第三2017年末又出备案新政。

2017年年底,工信部备案系统又双叒叕升级了,为了进一步提高备案的真实性,工信部在备案抽查的基础上对新增备案采取短信验证码来上报了。具体是大家通过企业侧备案系统提交资料后,企业侧备案初审通过后,工信部会向报备者的手机发送短信验证码,用户收到验证码后48小时内登陆备案系统填写验证码,相关备案信息才会被省管局进行审核。目前试点地区为天津、甘肃、西藏、宁夏、海南、新疆、青海。按照工信部之前的升级动作,保守估计最快在2018年下半年就会全国推开此项备案新政。所以还没备案的小伙伴赶紧备案吧,备案只会越来越严。

]]>
分享一个基于Jquery的图片放大镜效果 安吉做网站 https://www.hogsro.com/article/id/65.html 2018-01-25 23:20:31 https://www.hogsro.com/article/id/65.html

图片放大镜效果一般都使用在商城的产品最终展示页面,通过放大商品的局部,让消费者更加直观的查看商品信息。而通常我们看到的放大镜是在缩略图的上使用放大镜,而加载的图像是原图。这样的放大效果没有失真并且更清晰。而这和物理意义上的放大镜相差甚远。生活上我们使用的放大镜通过是对原物进行放大观看,放大后的效果是失真的。一直需要一个这种接近真实意义的放大镜效果。在网上找到这个基于Jquery的放大镜效果分享一下。

首先是引入Jquery文件jquery-1.2.6.min.js和CSS样式表。其次在需要放大的图片上添加属性jqimg,属性值和src值一致,也就是在原图上放大的

<img src="images/img01.jpg" jqimg="images/img01.jpg" width="350" height="350">


然后在后面添加Jquery操作代码

$(function(){			
	   $(".jqzoom").jqueryzoom({
			xzoom:400,
			yzoom:400,
			offset:10,
			position:"right",
			preload:1,
			lens:1
		});
	})


最后在页面底部引入操控功能代码zzjs.js

具体需要的样式可以自行在样式表中修改,放大尺寸比例可以在操作代码里面自行调整。

最后附上完整的文件压缩包Jquery放大镜.rar


]]>
Python学习笔记二(变量和字符串) 安吉做网站 https://www.hogsro.com/article/id/64.html 2018-01-21 12:59:07 https://www.hogsro.com/article/id/64.html

2017年年终确定的从2018年开始学习一门新的语言。随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了。博客今天更新第二篇学习记录,关于Python的变量和变量中字符串的使用,所有学习过程为自学,自学内容来源于网络教程,包括但不限于视频教程、文字教程、源码等。



无需声明类型的变量。

1、Python的变量在使用时无需声明变量类型。

2、变量在使用的时候要先行赋值,赋值后的变量才能被创建,与PHP有所区别。

3、变量名可以包含字母、数字、下划线,但不能使用数字开头。

4、变量名区分大小写。对Python来说,大小写是完全不同的变量。

字符串的操作。

1、字符串使用引号,单引号或双引号都可以,单不能混用。与PHP一致。

2、转义符\的使用。如str=let' go!

str='let\' go!'

3、原始字符串r的使用。如

str=r'C:\Program Files\ATI\CIM'

QQ图片20180121124234.png

4、长字串的三重引号的使用。如

QQ图片20180121124955.png

学习中涉及函数类知识。

1、BIF内置函数(built in function)

2、内置函数help。如

help(print)

3、内置函数input。用来输出提示语及接受用户输入数据

4、内置函数dir。不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。

]]>
解决Chrome不兼容li标签中的文本溢出自动隐藏的问题 安吉做网站 https://www.hogsro.com/article/id/63.html 2018-01-20 14:35:34 https://www.hogsro.com/article/id/63.html

一般情况下对文章列表的调用,通常使用ul循环li标签。受页面模块宽度的的限制,一般需要对li进行文本内容溢出隐藏处理,实现更加合理的排版。经过测试在li标签中使用text-overflow: ellipsis; white-space: nowrap; overflow: hidden;组合属性后,多数浏览器可以正常渲染。仅仅在Chrome下面无效。

尝试通过对li追加display:inline-block;或者display:block;变成块级元素后,li标签的list-sytle属性又失效了,成了一种顾此失彼的状态。

解决方法一

通过对li转成块级元素后,原list-style属性通过html页面插入圆点图标或者圆点字符来实现。另或通过输出行号12345这种自定义样式来达到目的。

解决方法二

雅兮网同学给了一个曲线救国的办法。通过对li标签内的a标签追加display:inline-block;属性。并设定一个宽度width或者最小宽度min-width,将组合属性text-overflow: ellipsis; white-space: nowrap; overflow: hidden;放入a标签。从而实现文本溢出自动隐藏。Chrome下还需要补充vertical-align: top;或者vertical-align: middle;来达到li标签和a标签在同一行内问题。根据现实效果需要,还可能需要对li定义行高问题。


]]>
TP5中paginate方法丢失url参数的问题 安吉做网站 https://www.hogsro.com/article/id/62.html 2018-01-18 23:43:13 https://www.hogsro.com/article/id/62.html

一个简单的应用场景。现在需要在后台对用户产品数据进行搜索,可以对产品名称使用模糊检索,也可以使用产品类别进行分类搜索。因为搜索条件是两个表单项,所以简单了区分搜索条件,增加一个radio字段用来判断用户输入的是什么数据,从而执行不同的sql语句。



场景复现

假定radio字段为way,产品名称为product_name,产品类别为为type_id。设定way等于1执行产品名称模糊查询。否则执行类别查询。用变量$data接收表单数据$data=input('param.');。如果paginate方法只使用每页几条的单一参数,代码如下:

未标题-11.jpg

通过两个查询,可以分别按要求查出所需数据。但是问题出现了,当点击页码翻页时候,程序报错,提示未定义数组索引: way。地址栏信息只有默认的翻页参数?page=2

问题原因及解决办法

其实原因很简单,就是当翻页的时候,因为通过post接收的way参数丢失了。thinkPHP官方为paginate方法提供了额外的query参数,用来实现翻页地址参数保留。

thinkPHP手册提供的所有参数:

主要的分页参数如下: 参数
list_rows 每页数量
page 当前页
path url路径
query url额外参数
fragment url锚点
var_page 分页变量
type 分页类名

手册说明并不是很详细,看paginate类源码可以看到query参数支持数组。具体使用直接贴代码

未标题-12.jpg

通过添加query参数后,再次点击页码翻页,就不会报错了,再看地址栏就会多出参数way。当然还有其它方法可以解决这个额外参数的问题,只是个人觉得query参数是最方便的了。

]]>
Python学习笔记一(Hello World) 安吉做网站 https://www.hogsro.com/article/id/61.html 2018-01-15 23:44:55 https://www.hogsro.com/article/id/61.html

2017年年终确定的从2018年开始学习一门新的语言。随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了。博客从今天开始会陆续更新下Python的学习记录,所有学习过程为自学,自学内容来源于网络教程,包括但不限于视频教程、文字教程、源码等。



一、下载安装Python

本文是基于windows平台的学习过程。先下载Python,Python的官网:https://www.python.org/ Downloads for windows 下载最新版3.6.4.(python3与python2略有差异。初学当然直接学习最新版了)。

安装过程如果不选择安装位置,就直接一路next吧。

二、初见Python之Hello World

输出一句hello world 应该是学习每门语言的第一个演示程序吧。

启动Python自带的简洁开发环境IDLE,开始菜单,搜索输入 IDLE,就能打开了。在>>>提示符后输入print("Hello World")回车,第一句python程序完成。

未标题-1.jpg

三、Python初级语法基础

1、print函数用于输出内容。类似PHP的echo

2、#用来注释

3、每行语句后不需要分号(;),与PHP有差别

4、单引号、双引号用法一样,与PHP有差异。

5、+号可以作为运算符或者连接符

6、*号可以作为运算符或者作为返回次数

未标题-2.jpg


]]>
UEditor上传图片功能无法使用,提示:后端配置项没有正常加载,上传插件不能正常使用! 安吉做网站 https://www.hogsro.com/article/id/60.html 2018-01-14 16:44:36 https://www.hogsro.com/article/id/60.html

事情还得从元旦那回说起。话说2017年最后一天启用CDN内容分发服务后,网站也就更新了几篇文章而已,昨天按计划开更内容,写了一半准备插图的时候,就爆了。硬生生的不让我插入图片啊,俗话说字不如表,表不如图。一张图能解决很多文字才能表达清楚的意思,并且简单直白粗暴。



故障详情,UEditor报配置错误。

点击单图上传按钮,选择需要的图片以后,编辑器中就一直是一个loading的状态,文章中无法插入需要的图片了。尝试使用多图上传功能,点开后就出现了错误信息:后端配置项没有正常加载,上传插件不能正常使用!如图:

QQ图片20180113213823.png

初步排查了下错误原因,我看了下本地程序,一起正常,前面是点击单图上传出现loading状态的,这个有两种可能图片上传了,拉取不到,二是图片没有成功上传。FTP看了下服务器上的文件,很显然,图片并没有被上传。

查找出错原因,尝试排除故障。

回想了下,之前发布文章的时候功能一直正常,最近更新系统也都没有牵扯到文章系统的改造,而UEditor是个集成环境,没有做二次开发,只在使用的时候自定义了一些配置,并且配置当时调试正常,最近也没有变更配置。

那么最大的可能就是在我启用CDN之后出现的故障了,原因前面也提到启用CDN以后一直没有更新带图的博文。在没有确定是否是CDN造成的准确判断之下,我尝试断开了CDN,直接解析了域名,待生效后登录后台,发现插图功能恢复,最终验证了猜测。

既然是CDN造成的,无非就是因为回源的问题。之前做过将博客的后台系统全部回源了,而UEditor只出现在后台上,并没有出现在前台。我就在想,也许是因为我把UEditor作为插件使用的,而我在静态资源路径配置方面,和后台视图路径并非一致。接下来我就把UEditor的路径在阿里云CDN里面回源了,刷新后CDN缓存后再次尝试添加图片依然无效(这之前把域名解析切回到了CDN上)。然后又接着将UEditor的配置文件ueditor.config.jsconfig.json等需要加载的做了文件回源。做完这一切之后,后台依然没有鸟我,还是报错。

阅读UEditor源码找到坑之所在。

联想到之前QQ互联的坑,加上编辑器其它功能都完好,唯独上传功能异常,果断判断问题应该出现在参数被过滤的原因上。

通过阅读UEditor的PHP版上传原代码,绕了个小弯,先去看了Uploader.class.php这个文件,这个上传类要先读取配置项目$config,果断将$config加到阿里云CDN的过滤参数中,再次尝试,依然没有解决。然后就去看了下ueditor.config.js文件,在顶部看到这样一句:服务器统一请求接口路径。serverUrl: URL + "php/controller.php"。如获至宝,迅速点开controller.php文件,看到$action = $_GET['action'];,并且下面通过switch来判断数据内容的,也就是说这个$action才是被统一调用各种参数的公共名称。所以最后将action写到CDN的过滤参数中(实则是过滤参数保留),问题解决。

]]>
Ajax出错并返回整个页面html的问题 安吉做网站 https://www.hogsro.com/article/id/59.html 2018-01-13 23:22:32 https://www.hogsro.com/article/id/59.html

有这样一个例子在thinkPHP视图页面执行一个给评论点赞的功能,为了强化用户体验,一般都采用ajax异步请求后台处理点赞数据,成功后页面执行局部更新后的数据即可。前台通常会用到jquery,通过执行jquery的ajax方法更加简单方便的完成任务请求。



简单描述下问题出现场景

tinkPHP在应用路由后的视图页面执行ajax,并没有正常放回数据。以下代码描述了一个获取评论ID,到ajax请求的过程。根据后台处理规则,cmthot方法会返回一个更新的后点赞数据(data)返回到前台。

function uphot(o){
        var cmtid=$(o).attr("cmtid");//获取评论ID
        $.ajax({
            type:"post",
            dataType:"json",
            data:{cmtid:cmtid},
            url:"{:url('cmthot')}",//请求地址
            success:function(data){
                $('#hot'+cmtid).html(' '+data);
            },
        });
    }

这是就会出现这种情况,后面没有正常返回点赞数据,报错了。通过alert(data)可以看到这样的情景。

未标题-1.jpg

再来看下后台处理的部分

public function updatehot()
    {
        if(request()->isAjax()){
            $cmtid=input('cmtid');
            $cmthot=model('comment')->cmthot($cmtid);
            return $cmthot; 
        }else{
            $this->error('非法请求');
        }
    }

在上述代码中通过控制器将ajax获取的评论ID丢到模型(模型代码就不贴了)去处理后拿到的新增后的点赞数返回给前台。前台(前述代码)通过.html重写了新的数据。

发现问题的根源出自路由

为了排错,当时就把ajax改成了a链接直接提交。返回的结果一切正常,也就是说后台控制器和模型均正常,没有错误。问题应该还是在ajax上。

因为这个操作方式我在网站后台经常使用,按说也没有错误,再次到后台相同功能处比对。后台类似功能一切正常。

为了找出问题出现的原因,就比较了下网站前后台的差异。唯一明显的就是前台为了用户体验动用了路由,精简了url。而后台使用iframe框架,url固定是框架页面的地址,所以当时就没有使用路由。

找到不同点再来差错就方便了,第一段代码中请求的地址,因为被路由了,所以并不存在,这里需要补上路由后的地址,所以在补上斜杠即可。url:"{:url('/cmthot')}",

最终就因为一条斜杠造成返回一页的html,所以还是要仔细。

]]>
如何让网站打开变快?暨网站速度优化指南。 安吉做网站 https://www.hogsro.com/article/id/58.html 2018-01-07 12:52:02 https://www.hogsro.com/article/id/58.html

网站打开速度一向是网站运营者和SEO工作者关注的重要指标。百度在网站优化白皮书中也提到需要注重网站访问速度。2017年更是退出了针对移动端访问推出闪电算法(博文:百度闪电算法的功能及解读)。算法的核心就是页面在移动端首屏加载需要控制在2s以内。随着网络的发展,带宽资源的扩充,现在已经很少碰到网页一等就是十几秒尴尬的情景了,虽说如此,但是还有很多站点加载速度超过5秒。本文尝试从多个角度来简单解释提升网站速度的方法。

网站内容层面的优化

1、图片的优化。一个网站上的配图是必不可少的,配图通常能更加直观的表达文章的意图。图片当然是越小加载越快,在必要的环节生成缩略图至关重要,比如产品列表页面。页面结构上必须的图片由于无法通过程序生成的,可以通过PS线下处理,合适的尺寸大小、容量大小、分辨率。通常在PS里面存储为web所用格式即可解决。

2、文字的优化。文字优化几乎没什么可说的,最重要的就是字体的选择。因为如果将正文的字体设置成了个性字体,而访问者没有相关字体就多了一步替换为系统默认字体的过程。另外就是类似google字体被墙的解决,采用国内缓存或者本地缓存。

3、多媒体的处理。非视频音频站点,尽量不要使用多媒体素材。确需使用的,那么关闭自动播放;用图片替代视频起始界面是一个可靠的选择。

网站程序的优化

程序优化方面的内容非常之多,一个资深的程序员和前端工程师写出来的内容比初学者做内容更加精简和优雅。

1、页面脚本的处理。用新版标准替换老版标准(如html5替换4和4.01);mete的合理声明(如charset=UTF-8);JS的引入合并和加载顺序(如最后加载);尽量不使用iframe(框架如今有多种替代方式);排版标签的正确闭合及合理使用(如正确闭合div直接关系到页面布局是否错乱);样式效果替换图片效果(如border-radius);MIP或AMP的应用;预加载的的使用(如InstantClick)等等。

2、后端程序的优化。针对你采用的语言合理使用(如博文:PHP代码优化的40条建议);应用层面的逻辑错误排除(如死循环,内存溢出);程序的效率提升(如博文:rand()随机的效率问题);缓存的使用(如redis)。框架程序的选择(原生的当然更快,框架牺牲了运行效率提升了开发效率);

web环境的优化

1、数据库的优化。情侣搭配(PHP搭Mysql、C#搭Mssql);数据库调优(缓冲区大小、连接数等);数据表的合理设计(字段类型选择、关联表处理、存储过程等)。

2、web环境的优化。操作系统(根据语言选择合理linux、windows);web服务器的选择(效率方面nginx > apache > iis,当然如果你用C#那么还是windows+IIS为标配了);底层程序的版本选择(如PHP7比PHP5提升的成倍效率,7.2比7.0大幅提升的效率等)。

服务器硬件环境的选择

速度方面购买或租用的硬件服务器 > 云服务器 > VPS > 虚拟主机。硬件服务器的选择按下不表,如今对中小网站最适用的莫过于ECS这类的云服务器了,主要关注的指标为CPU核心数,内存大小,带宽大小(独享),我们仅需关注常规指标即可,至于云服务器自身的稳定性及优化也不是我们所能控制的了的,那是云计算厂商的事情了。VPS选择参照云服务器选择,虚拟主机简单到差不多可以理解为越贵越好了,别问我同等空间大小的30元、50元一年的虚拟主机怎么样?

网络的优化

内容分发网络CDN的使用;HTTP/2的使用(仅适用于https的加密网络);解析线路的设置(使用CDN,此条也可以忽略,诚然如上述你使用租用的服务器,那么BGP机房的选择也是一个要素)。

其它方面的优化

诸如Gzip的使用;抗攻击的安全配置;去除代码中的注释(含代码压缩)等各种优化手段和技巧的使用请自行研究探索

写在最后的说明

有这样一个超现实的笑话:如果有钱,这些都不是问题,如果没钱,或许上述问题都是问题。

上述介绍的优化手段,每一条拉出来都能细讲成一篇长长的技术文章。本文仅从概念上的进行说明,具体技术如何应用后面分别再讲。总之,网页速度的优化是一项综合从前端到后端到运维的一系列综合措施。应用得当维护到位,将大幅提高网站加载速度。

]]>
thinkPHP5模版页面volist循环offset不能使用变量 安吉做网站 https://www.hogsro.com/article/id/51.html 2018-01-03 02:22:38 https://www.hogsro.com/article/id/51.html

有这样一个应用场景:当volist循环需要排除前面几个数据的时候,我们通常使用offset来操作。而假设前面要排除的数据是根据当前页面占位符来确定的,而需要排除的数据量就是个变量了。



官方手册说明

支持输出查询结果中的部分数据,例如输出其中的第5~15条记录

{volist name="list" id="vo" offset="5" length='10'}
{$vo.name}
{/volist}

根据手册,上述场景只需要将offset的值设置成$number这样一个变量,按说就能实现必须的效果了。然后当你尝试将offset设置成变量时,输出的内容没有按照预想的发展,而是从第一条记录开始输出,直到length的长度为止。就像根本没有设置offset一样。

此时如果尝试手动将offset设置成固定数值时,就能实现排除效果。而这个说明在官方手册上并没有标注。

同样length也没有说明其使用规则。经过测试length可以使用变量来限定数据条数。

]]>
启用CDN后,QQ互联登录出现异常的问题。 安吉做网站 https://www.hogsro.com/article/id/45.html 2018-01-01 00:05:24 https://www.hogsro.com/article/id/45.html

博客群里的网友都说网站真实IP没隐藏有巨大的被D风险。隐藏网站真实IP最简单的办法就是做内容分发网络,用户在访问网站的时候是访问就近的CDN节点,ping出来的IP也是CDN节点IP,有效阻断了对源站服务器IP的探测。

网上有很多免费的CDN可供使用,如百度云加速,但是普遍存https不支持或者收费。并且多数CDN都提供了一定量的抗D清洗服务。只不过都很低,在真实DDOS攻击下,瞬间就荡然无存了。真正有用的也就是隐藏真实IP这一个功能了。

折腾配置CDN

下午没事开始折腾CDN,网上找了一圈也没合适的,群里推荐的上海云盾,流量限制50G,目前限时免费阶段。尝试注册了一下,发现需要实名认证提交后,3个工作日审核,审核通过才能使用。接着有看了下百度云加速,发现免费版本不能支持https,需要购买专业版以上才能使用,最低的专业版1190一年。所以放弃了。鉴于网站部署在阿里云CDN上,就在阿里云上看了下CDN的产品介绍。可惜,自从12月1号就进入商业收费模式了。不想再另寻CDN了,其它服务商肯定也是要认证的,这大放假的肯定没人,所以就直接阿里云CDN吧。支付120元500G一年的量另加https的请求包50元,不知道被攻击一次,被消耗的量算不算在内了。

发现QQ授权登录异常

晚上吃完饭准备来改造登录后修改用户名和添加用户网站信息这块功能。发现点击QQ登录后,无法正常跳转到登陆后的界面,卡在callback地址上不动了。虽然我知道是CDN造成的,但是没明白问题出在哪儿,就正常逻辑开始排查代码。先把站点调试模式(TP5的app_debug)关了,然后再次登录,看到错误信息3001。这个错误码是我自己定义的改造后的qqconnect错误码。

查错并解决

查源码Oauth.php(原Oauth.class.php)发现问题出在防CSRF攻击的state上。再次尝试登录,看了下地址栏callback后的code参数和state参数一切正常。也就是说授权动作执行完成了。那么问题就出在这个比对问题上了,我是通过TP5的助手函数input获取的state。尝试dump了一下state和code。都显示为空,没有获取到地址栏上的参数,无法和程序中的state变量比对,造成的错误。以为是助手函数的问题,又原本请求了一次,还是没有,最后使用原生$_GET也还是没有请求到内容。

冥想了一下,地址栏上的信息是被构造出来的,那么我访问的数据是CDN节点缓存给我的,地址栏的数据没有和我源站产生交互,突然想到下午在折腾CDN配置的时候的参数过滤问题了。阿里云的CDN有保留参数回源的设置,并且我还在后台测试的时候传输的ID和分页参数添加过了。天呐,这是有多蠢,竟然忘了这一出。迅速进入阿里云CDN控制面板,在域名管理里面,过滤参数中设置好保留的code和state两个参数。刷新页面后重新使用QQ登录,就一切正常了。未标题-1.jpg

]]>
写在2017岁末的盘点,你好2018! 安吉做网站 https://www.hogsro.com/article/id/44.html 2017-12-30 19:57:43 https://www.hogsro.com/article/id/44.html

2017年,生活差不多是乱了章法,工作也是原地踏步。好在女儿一天天的健康长大,coding水平有了小小的前进。没有目标的2017,倒是也完成了一些小目标,却也差点迷失了方向。2018只有两个字:坚持。坚持或许未来还是没有起色,不坚持未来更是不可期。

你好,2018。定个小目标,先写它篇小博文。


坚持每月8-10篇的博文更新

博客从11月底建立,主要还是记录工作学习过程中遇到的问题和撰写一些成熟的解决方案。今后还会遇到更多的问题,各种坑还是要靠自己去爬,正如建立博客的目的,做好一个自己的爬坑指南。目前搜狗和360收录正常,百度仅有首页,博文更新需要长期的坚持。虽然没有科技资讯类博文那么多内容可写,但是遇到的坑坑洼洼还是比较多的,原来就是爬过就过了,也没刻意记下来,即便是只言片语,所以今后将理论问题和实际问题一并记录下来,坚持每月更新8到10篇博文。

完善Qt.blog博客程序

自用的Qt.blog系统从9月份开始开发,11月份雏形完成。接下来在更博的过程中,继续完善博客程序,计划内的开发要逐步完成,并将一些学习的技术和经验在博客上构建实现。待到框架出正式版后,博客功能型的程序要基本完成,进入整版重构阶段。以此为基础开发全新的CMS内容管理系统。公司那个老掉牙的东西真的是需要更新换代了。

深度学习thinkPHP5和PHP7

从写原生到进入框架,2017完成了thinkPHP和Laravel的入门。2018将主要精力放在深度学习thinkPHP上,从业务应用层面到thinkPHP源码层面,从业务实现到效率提升的转变。

随着PHP进入7.0时代,PHP的运行速度是大幅提升。在巩固已有的知识基础上,学习和应用PHP新的一些特性,并学习PHP底层运行机制和原理。

除此之外碎片化的时间需要学习linux运维和互联网大规模应用的相关技术,了解互联网的发展趋势和方向,包括机器学习,AI人工智能。尝试学习一门新的语言Python。

克服拖延和节省不必要的时间开支

拖延症一直是我的噩梦。耽误了正事,还挤压了睡眠。一切从克服拖延症开始。番茄工作法用起来,要不然我的番茄闹钟都浪费了。节约不必要的时间开支,什么刷朋友圈,读公众号,看新闻,看快手。通通都去死吧,哥没时间,哥要工作学习,还要陪伴女儿成长。

最后一个笑话

2018年新年计划:搞定2017年那些原定于2016年完成的安排;不为别的,只为兑现2015年时要完成2014年计划的诺言。

明年年终再写计划的时候,要像程序一样从这个死循环里面跳出来。

]]>
阿里短信通知的接入与实现(二)暨云通信短信平台API接口调用 安吉做网站 https://www.hogsro.com/article/id/43.html 2017-12-28 15:31:33 https://www.hogsro.com/article/id/43.html

事情变化太快,上线还不到一个月的注册短信验证功能就遇到了平台搬家的尴尬。阿里云发了一个邮件通知。原淘宝短信和阿里云市场短信将迁移到云通信平台,自2018年1月22日期,原平台将被停用,这之前是平台迁移期,需要用户抓紧迁移。也就是阿里云给大家留了一个月的窗口期。

具体接入操作,根据阿里提供的demo接入还是很方便快捷的。


首先,申请AccessKey

登录云通信平台控制台申请AccessKey,并添加短信签名和短信模版。关于短信签名和短信模版在上一篇文章中已经提到过,就不赘述了。(https://www.hogsro.com/article/id/37.html)AccessKey建议使用子账号。根据平台提示操作即可。

2.png


其次,下载SDK和DEMO。

3.png


解压后我们需要的文件如图:

4.png


第三,将文件导入thinkPHP中完成应用的开发。

1、将两个文件放入到thinkPHP建议的第三方扩展extend目录下。建立一个为Aliyun的目录,将Api和Core放入。

5.png


2、命名空间的问题,如果你是采用跟我一样的目录形式,那么Api和Core内文件的命名空间就不用调整了,默认就是写好的,如果自定义了其它目录名称,请修改响应的命名空间。


3、引入文件并载入短信平台节点。

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

Config::load();


4、拷贝demo文件(SmsDdemo.php)中的静态方法(getAcsClient)

public static function getAcsClient() {
        //产品名称:云通信流量服务API产品,开发者无需替换
        $product = "Dysmsapi";

        //产品域名,开发者无需替换
        $domain = "dysmsapi.aliyuncs.com";

        // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
        $accessKeyId = "yourAccessKeyId"; // 这里填你申请的AccessKeyID

        $accessKeySecret = "yourAccessKeySecret"; // 这里填你申请的AccessKeySecret

        // 暂时不支持多Region
        $region = "cn-hangzhou";

        // 服务结点
        $endPointName = "cn-hangzhou";


        if(static::$acsClient == null) {

            //初始化acsClient,暂不支持region化
            $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

            // 增加服务结点
            DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

            // 初始化AcsClient用于发起请求
            static::$acsClient = new DefaultAcsClient($profile);
        }
        return static::$acsClient;
    }


5、开发自身应用的方法。

public function setcode()
    {

        $mobiphone=input('mobiphone');//接收的用户手机号
        $num=rand(100000,999999);//生成六位随机数
        session('code',$num);//将随机数写入session
        session('mobiphone',$mobiphone);//写入获取的手机号
        session('codetime',time());//写入当前时间
        //忽略下面这行,这个是上一版中使用urlencode转字符操作的,这版中采用的是json格式
        //$ParamString=urlencode('{'."code".':'."$num".'}');
       
        $request = new SendSmsRequest; //实例化
        $request->setPhoneNumbers($mobiphone);//必填-短信接收号码
        $request->setSignName("白小姐资料一肖中特马博客");//设置签名名称
        //必填-短信模板Code
        $request->setTemplateCode("你自己的模版code");
        //选填-假如模板中存在变量需要替换则为必填(JSON格式)
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "code"=>$num
        ), JSON_UNESCAPED_UNICODE));

        //选填-发送短信流水号(业务逻辑没有相关功能就注释掉)
        //$request->setOutId("1234");
        //发起访问请求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);
 
        //通过调用acsResponse的成员属性code判断是否发送成功。
        if ($acsResponse && $acsResponse->Code == 'OK') {
            return 1;//成功
        } else {
            return 2;//失败
        }
    }


这样就完成了整个短信平台的接入。如果存在比较难的地方,那相信是很多人没理解命名空间的问题。

]]>
thinkPHP升级到5.0.13导致update更新出错的问题 安吉做网站 https://www.hogsro.com/article/id/42.html 2017-12-24 09:55:08 https://www.hogsro.com/article/id/42.html

话题还得从tinkPHP群消息说起,双十二那天,群内通知官方发布了5.0.13版本。刚好那几天在折腾redis缓存。官方文档中说5.0.13是一个集合诸多改进的版本,redis缓存驱动使用serialize替换了原先的json序列化。而博主的程序初始版本还是在5.0.10的基础上搭建了,后面在博客发布的时候更新到了5.0.11。想着官方已经发布了5.0.13,已经跨版了,就折腾起来。

折腾之前看了下官方升级指导,发现从5.0.11可以无缝升级的5.0.12,并且5.0.12可以无缝升级到5.0.13.所以也就信心满满的去折腾升级了,拷贝了下think核心中的success和error的跳转模版、paginate的分页类(被我修改过)。其它文件直接覆盖了。更新好以后就去点了几个页面,完全正常,添加了条测试信息也无误,也就直接更新到服务器上去了。

更新完成后,当我去写博客的更新日志的时候,问题来了,直接报错了个致命错误。

[8] ErrorException in Builder.php line 114
 未定义数组下标: 0  

未定义数组下标,当时没反应过来是我的待写入数据的问题,因为之前一直是正常的。也就没多想,就去看了下builder.php的源码,114行的代码就是官方更新日志里面关于inc和dec关键字修复的问题。和5.0.12版本对比发现也只是多了个switch判断。似乎问题也不在这里,这下就陷入了僵局。

因为是数组下标的问题。问题最大的可能还是出在我的应用层面上,和框架底层关系不大。没办法,只好从头检查了一遍应用逻辑,从前端表单开始,到后台接收。尝试静态写入数据,发现一切正常,只好打印了下input接收的数据。粗看之下没问题,等等,怎么成了个input的接收的数组里面嵌套了一个一维数组,看起来像是一个二维数组,但不是一个真正的二维数组。复现当时的情况如下:

array(12){
["aaa"]=>string(10) "aaa"
["bbb"]=>string(10) "bbb"
["xxx"] => array(1) {
    ["xxx"] => string(46) "yyy"
  }
 ["ccc"]=>string(10) "ccc"
}

看复现的这个数组,正常待写入的数据应该是一个一维数组,键名为字段名,键值为数据。这里xxx键名对应的键值又是一个同名的数组。至此终于发现这个问题,因为待写入的值又是一个一维数组,所以就无法找到下标了。现在这个问题就简单了,xxx是我从数据库读出来的数据,find以后是一个一维数组,虽然使用了field限定单一字段,但是我忘了将数据从这个只有一条数据的数组中提出。造成了这里嵌套了一个一维数组。更新后的待写入字段

array(12){
["aaa"]=>string(10) "aaa"
["bbb"]=>string(10) "bbb"
["xxx"] => string(46) "yyy"
["ccc"]=>string(10) "ccc"
}

这样就一切正常了,至此问题解决,最后忠告,逻辑层面还是需要仔细再仔细。

]]>
宝塔面板下phpMyadmin曝502错误,无法正常使用 安吉做网站 https://www.hogsro.com/article/id/41.html 2017-12-19 21:09:47 https://www.hogsro.com/article/id/41.html

前几天修改博客界面,由于本地只有很少几篇测试文章,对内容溢出的测试不完全,虽然复制了一堆无用的内容在里面进行测试。今天就想到把服务器上的数据和本地同步一下。

自从有了宝塔面板,就不需要敲命令了,方便了不少。轻车熟路的打开面板,找到phpMyAdmin,点开,我X,竟然502 Bad Gateway错误。

第一个反应是面板中的phpMyAdmin服务器停止了,打开看了一下,正常。然后就去查看的phpMyAdmin的路径和nginx的配置是否一致,nginx中root  /www/server/phpmyadmin;和安装路径一致。监听端口也没错。然后就只能认为是phpMyAdmin文件损坏了,卸载重装。问题依旧。

这个我就不明白了。博客运行正常,说明服务器的基础环境都没问题。由于在面板中phpMyAdmin是通过端口访问的,那么有可能是端口问题了,先查看下面板中的安全选项,看下了phpMyAdmin对应的端口是放行的。联想到之前的邮件发送端口有可能被阿里云给封掉的原因,恶意揣测了下该不是我这个端口也被封了吧,进入阿里云控制台,发现在安全组中入站方面是放行的。为了那万分之一的可能,还是把相关的端口给删了重新再设置一遍。依然没有解决。

这个时候只能想象下是我操作了什么内容后造成的这种现象了。因为早上看到PHP7.2提升了底层安全性和提升性能。thinkPHP前几天也发布了5.0.13版本。所以上午带娃的空隙就把PHP升级到7.2,把框架从5.0.11升级到5.0.13了。从这之后好像phpMyAdmin就无法使用了,虽说是这之后,但是我真的不肯定,因为上一次使用phpMyAdmin还是刚部署博客的时候,中途一直没用过。只好死马当活马医了,尝试将PHP版本切回7.0,依然无效。可能也不是错在这里,又切回到7.2了。

最后去宝塔论坛查找,似乎也没有人遇到类似情况。吃过晚饭,没事继续一顿乱点,天,竟然在面板上软件管理上的phpMyAdmin栏找到设置按钮,点开,竟然还有PHP版本选择。果断点击PHP7.2。终于正常了。可以访问了,不过就是纳闷,既然是PHP版本的问题,为啥我之前切换到7.0的时候没有生效了,再次测试将PHP切换到7.0,这个设置也选择7.0,还是无效。不知道是否是面板本身的BUG。对我来所已经是无解了,不过好在7.2版本下能正常使用了。

2018-01-21更新

如果你没有做上述版本升级或者软件安装之类的工作,那你只需在软件管理——phpMyAdmin——设置——服务。选择重启。然后将设置中PHP版本,再次点击一下你当前对应的PHP版本。即可正常使用。

]]>
百度云观测报警服务器异常信息泄露 安吉做网站 https://www.hogsro.com/article/id/39.html 2017-12-15 15:38:29 https://www.hogsro.com/article/id/39.html

早些年一直使用百度云观测系统。后面随着不分时段不分轻重的报警短信后就暂停使用了这个服务。随着新版博客的建立,又重新添加了百度云观测。

从11月底运行,云观测一直提示系统安全,未发现问题。直到前天一条莫名的短信提醒报网站存在安全漏洞,具体的是底等级的风险服务器异常信息泄露。

以下是报警信息详情:

很莫名,之前几周运行的好好的,这几天也没改程序,咋就好好的出状况了,虽然这在安全风险里面不算漏洞的漏洞,但是对强迫症的博主来说还是有点难受。

仔细回想了一下,应该是我在10号的是后调试后台配置参数之后造成的。那么根据云观测的提醒,服务器异常信息也就是网站出错的情况下会暴露服务器的相关设置信息问题。

首先要解决的就是程序运行出错报错的机制。thinkPHP的调试模式关掉。config里面:'app_debug' => false,

二、关闭PHP的错误提示。最简单的就是在php.ini中将display_errors的值改成项目的OFF。

1、如果你使用宝塔面板这样的服务器管理软件,你可以直接在软件程序设置里面找到对应的开关项,如图

QQ图片20171214173418.png

2、如果你使用虚拟主机的话,也可以通过使用ini_set('display_errors','off');来操作。

三、如有SEO方面的需要,还是扔一个404页面吧,更友好一点。

]]>
解决thinkPHP的success跳转到iframe最外层的问题 安吉做网站 https://www.hogsro.com/article/id/38.html 2017-12-05 15:35:00 https://www.hogsro.com/article/id/38.html

首先是thinkPHP的success跳转,例如

$this->success('修改成功','Login/index');

根据场景定义,修改成功调跳转到Login控制器的index方法,index方法是登陆界面及表单的处理。由于当前操作是在iframe内部,执行跳转动作后依旧会在iframe内部完成index模版的加载,这就造成了当前后台并没有完全退出,即使已经执行了清除session或cookie的操作。

这时就只需要在iframe上执行一个小脚本就可以实现了。



]]>
阿里短信通知的接入与实现。 安吉做网站 https://www.hogsro.com/article/id/37.html 2017-12-03 22:19:50 https://www.hogsro.com/article/id/37.html

随着《网络安全法》的出台,有关部门对互联网用户的管理逐步切换到实名制状态,这其中就包括用户评论留言功能需要遵循后台实名前台自愿的原则,未实名的用户将被禁止评论。白小姐资料一肖中特马博客严格按照相关规定,对用户进行实名制核验。
1512314134649204.jpg

现在的实名制方式最直接的莫过于通过身份证信息联网公安网络进行核验。这就存在两个问题:
1、用户是否愿意在小网站上上传身份证件?
2、小网站如何与公安网络连接核验?
直接的结果是这样的实名制方式在小网站是彻底行不通。那么只有采取间接实名制方式进行操作。间接实名制有两种方式,一是通过实名制的手机进行核验。二是通过银行卡信息进行核验。

对于小网站来说,绑定手机号无疑是最简单有效的方式。因为手机号的实名制工作已经推行多年。

本文将介绍如何通过手机验证码的方式进行手机的绑定。


首先,需要准备短信平台。也就是可以下行或者上行短信的API接口。本站采用的是阿里云的短信平台,原因只有一个,可以按条付费。使用多少就付多少钱。但多数平台是采用短信包形式的,也就是一个固定条数的短信包,在固定期限内用完,好处就是如果用量大,单价会更低一些。

 1、申请阿里云短信:阿里云->云通信->短信服务->免费开通。个人和企业均可,个人开通的话限制更多一些,比如只有一个短信签名,不能发送营销短信等等。开通成功后将获得AppKey、AppSecret、AppCode。

 2、需要设置短信签名和短信模版。短信发送是按固定格式发送的,也就是签名+模版形式。
进入控制台,找到云服务。找到短信服务,点击设置
未标题-1.jpg

 进入设置后,先设置短信签名。一般就是网站名称。比如本站短信签名:白小姐资料一肖中特马博客。签名用途选择自有产品或业务名。证明文件,个人用户可以不用上传。备注就描述下使用场景,比如本站备注为注册会员绑定手机号发送验证码功能。
未标题-2.jpg

 模版设置。模版名称任意取一个吧。主要是下方的短信内容这一块。就是写一下发送到用户手上的短信模版。例如本站:您的验证码为${code},验证码10分钟内有效,如非本人操作,请忽略。注意:这里不要写短信签名如果【白小姐资料一肖中特马博客】短信签名会在系统发送的时候自动调用的。另外就是变量采用变量格式编写。比如验证码,本站就写为${code}。申请说明和前面的短信签名的备注一样就好了。
未标题-3.jpg

 这些都设置完成后等待阿里云审批吧,一般一个工作日内会完成审批。


接下来就是短信接入部分了,前端部分这里就不说了,主要是一个表单,输入手机号点击获取验证码,可以通过jquery操作。为了方式短信被恶意用来做短信炸弹,需要对发送短信按钮进行倒计时操作,具体实现方式可以通过jquery.cookie来实现,不明白的可以网上搜一下,有很详细的相关教程。这里我们主要来说下后台API的接入。根据我们使用的白小姐资料一肖中特马(本站为PHP),我们采用appcode简单认证来实现,拷贝demo代码到项目中适当修改

public function sendcode()
    {
        $mobiphone=input('mobiphone');//获取接收人手机号
        $num=rand(100000,999999);//随机数字作为验证码
        session('code',$num);//验证码写入session
        session('mobiphone',$mobiphone);//用户手机号码写入session
        session('codetime',time());//验证码发送时间写入session
        //关键部分,API接口获取的模版变量。参数传递为{“no”:”123456”},我们在平台
        上定义的为code,后面的是验证码。使用urlencode转换一下
        $ParamString=urlencode('{'."code".':'."$num".'}');
        $host = "https://sms.market.alicloudapi.com";
        $path = "/singleSendSms";
        $method = "GET";
        $appcode = "你自己的AppCode";
        $headers = array();
        array_push($headers, "Authorization:APPCODE " . $appcode);
        $querys = "ParamString=$ParamString&RecNum=$mobiphone&SignName=白小姐资料一肖中特马博客&TemplateCode=你自己的模版CODE";
        $bodys = "";
        $url = $host . $path . "?" . $querys;

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);//这里有个小坑,关掉header头信息
        if (1 == strpos("$".$host, "https://"))
        {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
            $data=curl_exec($curl);
            $arr=json_decode($data,true);
            if($arr['success']==true){
                return 1;
            }else{
                return 2;
            }
    }

这就完成的短信发送操作了。后面将对验证码进行站内处理

public function bind()
    {
        if(request()->isPost()){
            $path=cookie('path');
            $data=input('param.');//接收表单数据
            //三条信息比对。
            if($data['mobiphone']!=session('mobiphone')){
                $this->error('不能更换手机号绑定');
            }
            if($data['code']!=session('code')){
                $this->error('短信验证码不正确');
            }
            if(time()>(session('codetime')+600)){
                $this->error('验证码已超时,请重新获取');
            }

            $edit=Db::name('user')->where('id',session('uid'))->update(['mobiphone'=>$data['mobiphone'],'email'=>$data['email'],'status'=>1]);
            if($edit){
                $this->success('实名认证成功',$path);
            }else{
                $this->error('实名认证失败');
            }

        }else{
            $this->error('非法请求');
        }
    }

由于本人采用thinkPHP框架操作,相关函数仅供参考,根据您自己的程序环境自行定义。

至此,一个完整的短信验证码就开发完成了。最重要的就是解决了实名制的问题。

]]>
uploadifive参数fileType不能正常解析 安吉做网站 https://www.hogsro.com/article/id/36.html 2017-12-02 00:32:16 https://www.hogsro.com/article/id/36.html

鉴于html5已经是主流,flash终究是快湮灭了。所以现在上传也从uploadify更换成了uploadifive了,价值5美刀。在上传的过程中经常需要限制上传文件的类型,就需要用到参数fileType,于是就看下了官方手册上的介绍,文档上的对fileType参数定义的类型是string,且不是必须参数。经过拷贝demo的代码,发现根本无效,任何文件类型还是能够被上传。结果耗时3小时15分钟,翻遍国内外技术网站,最终确认uploadifive的fileType参数是个BUG,官方文档也标错了。经过反复测试,要想实现文件格式限制效果,需要使用json类型数据进行配置,才能实现参数正常解析。

官方demo:

$(function() {
    $('#file_upload').uploadifive({
        'fileType'     : 'image/*',
        'uploadScript' : '/uploadifive.php'
    });
});


正确方式:

$(function() {
    $('#file_upload').uploadifive({
        'fileType'     : 'image|rar|docx',
        'uploadScript' : '/uploadifive.php'
    });
});
]]>
百度UEditor自动伸展的调整 安吉做网站 https://www.hogsro.com/article/id/35.html 2017-12-01 01:13:51 https://www.hogsro.com/article/id/35.html

昨天将后台编辑器从kindeditor更换为百度UEditor后,没注意一个细节。今天修改文章的时候才看到,原来UEditor会自动长高,也就是说随着文章长度的增加,滚动网页后,编辑器内部并没有出现滚动条,而是页面上出现了滚动条,由于后台采用fix的布局,这就很尴尬了,遮挡了必要的页面内容外,我的提交按钮也被滚动的无影无踪了。

修改方法是在配置文件ueditor.config.js中将自动长高关闭,默认是true,大概280行的位置autoHeightEnabled。

个人的其它配置修改:

1、初始化宽度和高度,92行initialFrameWidth,宽带改成了自适应的100%。

2、文字字数限制改成了5W,254行maximumWords。

3、启用自动保存及保存间隔,100行enableAutoSave,保存间隔设置成了3W毫秒。

]]>
IPv6终于要全面铺开了,地球上的每一粒沙子都将获得一个IP地址 安吉做网站 https://www.hogsro.com/article/id/34.html 2017-11-29 10:57:51 https://www.hogsro.com/article/id/34.html

11月26日中办国办发布了《推进互联网协议第六版(IPv6)规模部署行动计划》。根据计划部署,2018年年底,中国IPv6将拥有2亿用户,2020年达到5亿用户。到2025年中国IPv6的规模将达到世界第一。

我们现在通常说的IP地址是指以IPv4协议产生数字地址。IPv4的设计容量是有限的,当初设计的时候是2的32次方,约42亿个地址。当初规划的时候,全球人口不过40多亿,差不多人手一个IP地址。当初的设想是绰绰有余,谁也没想到,互联网的发展超出了绝大多数人的想象,除了固定PC,现在人手一个手机,外加一大堆网络设备和物联网产品。IPv4早就应付不过来了,资源已经枯竭。

现在我们使用的多数个人网络通常都是不是固定的IP,动态随机分配的。更有甚者,宽带运营商给一整个小区才一个公网IP,小区内都是分配的内网IP,然后给我们的上网服务造成了莫大的障碍,比如远程连接无法使用。

哪些现在IPv6来了,IPv6什么概念?它设计了约2的128次方的有效资源池,这个容博主算下。。。。。。大概无数个,反正数不清,比较形象的一个说法就是IPv6可以为地球上的每一粒沙子都分配一个IP地址。这么大的容量,我们将彻底告别内网时代,所有人都可以直接畅游在公网上,物理网设备将迎来爆发式的增长。

同时IPv6采用更是大幅提升了安全性,采用加密协议产生数据。还记得我们经常打开网页莫名奇妙的弹出广告吗?投诉网站,网站说我们没加广告呀,其实是中间环节的DNS被劫持了,在你和网站通信的链路上给你强制加载了广告。IPv6实现后,这个几乎就不可能了。

好了,就说这么多,期待IPv6早日规模化实现吧。

]]>
最简单的基于jquery的ajax请求教程 安吉做网站 https://www.hogsro.com/article/id/33.html 2017-11-28 17:09:03 https://www.hogsro.com/article/id/33.html

上一次文章提到ajax异步请求的简单教程。那是基于原生JavaScript实现的。本次是基于jquery的ajax异步请求教程。

首先是$.ajax发起ajax请求,

type是请求类型,可以是post,可以是get。

dataType是数据类型,预期服务器返回的数据类型。可以是json、xml、html、script等等

data是请求的变量和变量值。

url是异步处理的地址

success是返回后的数据。

看代码:


               $.ajax({
                type:"post",
                dataType:"json",
                data:{cateid:id},
                url:"{:url('cate/ajaxlst')}",
                    success:function(data){
                     alert(data);
                     },
                });





]]>
单数据和批量数据的删除操作 安吉做网站 https://www.hogsro.com/article/id/32.html 2017-11-28 16:51:03 https://www.hogsro.com/article/id/32.html

通常对某条数据的删除和某一批数据的删除分别采用两个成员方法。这样太累赘了一些,为了使用批量删除的成员方法,就需要构造单数据的结构。这里以ID为数组作为例子

前端批量删除通常获取的是id[],和其它数据一起接收后通常是一个二维数组。而单数据删除传入的往往是一个id的一维数组。这时候就需要将一维数组构造成一个二维数组以供后面使用。直接贴代码:

$data=input('param.');
        if(count($data) == count($data,1)){ //判断是否为一维数组
            $data=array('id'=>array(),'id'=>array($data['id'])); //将当前一维数组构造成二维数组
        }


后面就可以直接使用这个二维数组来统一处理了。

]]>
百度闪电算法的功能及解读 安吉做网站 https://www.hogsro.com/article/id/31.html 2017-11-28 16:26:35 https://www.hogsro.com/article/id/31.html

在10月初的时候,百度上线了“闪电算法”,见字知意,闪电算法只针对一个参数那就是网站访问速度。更细化一点的是百度本次提出的是针对移动端的访问速度。

算法核心内涵:移动页面的首页加载时间需要在2秒内完成,2秒内能完成的站点将获得流量倾斜,超过3秒的将被打压。

所谓流量倾斜直白点就是排名更好一点。超过3秒可能完全找不到快照。而如今的网络访问早就从传统的PC端进入了移动端。如果想要通过搜索引擎获得流量的话,那么闪电算法简直就是掌握名门的利剑。

如何使网页加载更快,站长觉的抛开MIP(百度在本次算法中提及的技术,下次另讲)技术之外,那么要从这些地方下手:

1、网页尽可能少的使用图片,能用文字和线条展示的绝不用图。

2、网页编码要没有错误,一旦有错误,浏览器在执行的时候将会被严重拖延时间。

3、后台程序逻辑不能有错误,进入死循环那就神仙也救不了了。

4、最起码开发一套基于移动端的定制版面吧,别把PC版面缩小就拿来用了。

5、放弃原始的虚拟主机,最起码也要用个云虚拟主机。

6、使用CDN服务。


]]>
百度惊雷算法11月20日上线 安吉做网站 https://www.hogsro.com/article/id/30.html 2017-11-28 13:06:02 https://www.hogsro.com/article/id/30.html

百度于11月20日上线了惊雷算法,是搜索引擎诸多算法中最近新上线的,目的在于打击页面点击流量欺骗行为。

百度官方解读主要是两个方面:

1、惊雷算法严厉打击通过刷点击,提升网站搜索排序的作弊行为,同时综合考虑站点质量、历史数据等各纬度特征,针对作弊行为绝不姑息;
2、惊雷算法上线后,依靠刷点击提升搜索排名的效果将不再生效,以往刷点击行为将进行打压。

博主解读,首先我们说点击行为肯定是对一个站的优化有影响的,当某一个网站上线,有很多大量的用户点击行为,至少说明了一点,这个网站的受众面很广,知晓度高,更加接近优质站点。比如当初12306上线,瞬间就提高到很高的权重比。那么我们优化过程中就有不守规矩的同学使用大量的伪请求造成网站被大量访问的效果,从而达到欺骗搜索引擎的目的。其次,官方说对以往刷点击行为进行打击,言外之意就是遏制增量打击存量,所以有过刷点击行为的站点暂时没有被处罚不代表今后被处罚,可能处罚的大棒还没有落到你的头上。

]]>