advanced
robots.txt
中文名:一行代码,让客户侧设备远离搜索引擎魔爪
为了让搜索引擎更好地为我们服务,大家都对SEO有所耳闻吧。然而有时候,卖给客户的设备,并不希望搜索引擎能够搜索到……
历史
我们的设备不应该暴露在搜索引擎头条,但是这个真的出现过,我们公司同事内部发出来的,以及在某些漏洞信息平台上… 客户该不该让某些设备暴露在公网,我们先不予讨论,本文讨论的是:设备暴露在公网之后
robots.txt
我们需要告诉搜索引擎,不要爬我。robots.txt 早已是业界规范,更多信息: http://www.robotstxt.org/
nginx
1 | location = /robots.txt {return 200 "User-agent: *\nDisallow: /\n";} |
一行代码,需要放在合适的位置即可,配置好的示例:https://23.106.155.32/robots.txt
总结
针对有些设备被搜索引擎搜索到,可能给客户造成一定影响,特写此文,让我们的设备更专业。
ssh party
SSH你是不是每天都在用,ssh可是一大家,今天开派对,首先清点下:
1 | ssh # 双击Tab |
有没有惊呆,居然有这么多。。。
man
派对开场是man老师介绍了下出场的各位,这一大家果然各个身怀绝技啊。如果有什么不懂的,大家私下询问man老师吧,man老师为人好的没话说,除了讲一口地道的英语……
- ssh vs sshd 黄金组合
- ssh-keygen 私钥公钥对了,生成修改,不容小瞧
- ssh-agent 私钥认证
- ssh-add 添加私钥认证
- ssh-copy-id 添加自己的公钥到指定主机,需要开启密码登录(首次)
- ssh-import-id 在线批量添加公钥
- sshfs fisesystem,通过ssh挂载文件
- ssh-askpass 界面询问密码
例:首先生成公钥对,ssh-copy-id将公钥拷贝到某台机器上;ssh-add将私钥添加到agent,此处需要输入一次密码,然后再次使用私钥无需输入密码。在Linux下,私钥默认仅当前用户有读写权限,不符合这个权限的私钥是不被认可的。
添加同事公钥:$ cat ~/.ssh/pub/id.pub | ssh 10.7.14.39 'cat >> ~/.ssh/authorized_keys'
修改私钥密码:$ ssh-keygen -f .ssh/id_xxx -p
.ssh
- authorized_keys 默认认证公钥文件,可修改
- known_hosts 保存的hosts认证
- rc 登录ssh是,会自动执行这个脚本。
- config 如下:
1 | cat ~/.ssh/config |
首先是配置开启共享的长链接,默认设置4小时,好处是第二次连同一台设备基本秒连,还有scp已链接设备速度也会大大加快。支持通配符配置不同用户,不同端口,使用不同密钥,配置好后,只需要ssh ip 即可登录。
config 插曲
1 | cat .pip/pip.conf |
- pip 启用了cache,第二次装同样的包,virtualenv虚拟环境装包,能快多少快多少
- git 配置了默认用户,操作习惯,还有全局ignore,默认使用代理。
END
在这一家人的协助下,只要是网络可达的ip,只需要ssh ip 就可以登录,cssh 同时多个ip还可以一起登录,==为不折腾而战!== 注:对应配置windows下都有,xshell等工具密钥需要导出也是安全措施的一种。
chrome apk
chromeos-apk:Run Android APKs on Chrome OS, OS X, Linux and Windows. 把安卓应用放到PC玩,有没有心动呢?然后一个不好的消息是,越不标准的应用越容易崩溃,比如某信和某宝。
npm
Node.js 火了,npm和Node.js的关系,借用官方的话说:
“The npm command-line tool is bundled with Node.js. If you have it installed, then you already have npm too. If not, go download Node.js. ”
先装Node.js,这个不是不是本文重点,此处略过。
chromeos-apk
主角出场了:$ npm install chromeos-apk -g
,用法很简单,$ chromeos-apk /path/to/file.apk
,执行成功后会在当前目录生成一个文件夹,名字如com.app.android
,根据我的经验需要加上--name com.xxx.android
就是根据生成的文件夹名,我还习惯加上--scale
参数。
APK
下载APK当然选择Google Play,配合下载的网页APK Downloader 即可下载谷歌市场应用,有人要为什么这么挑,因为这里的应用更加标准。举个简单的例子,你的微信经常会提醒更新,后台下载APK文件,而我去微信里面点击检查更新,会打开应用市场,这是看得见的区别。(如果还有问题,可以参考我2015-12-18的盟盟汇文章)
ARChon runtime
Download the runtime根据你的系统下载对应的版本,解压到某个目录。
chrome
建议使用最新的稳定版,打开chrome扩展页。开启开发者模式,点击load unpackkd extension,先加载前面解压的运行环境整个文件夹,然后加载你转换的APK的文件夹,然后点击运行… 大家都有民生的银行卡,我用民生的手机银行客户端为例,如图:
END
跟大牛有肉吃,至于问我为什么要这么大费周章,没人喜欢折腾,真的…… 只是,以前手机内存小,庙太小,容不下大神,再加上安卓那令人发指的唤醒链,有些应用不想往手机装。最后还有个原因是我用Linux,Linux下出名的通讯问题大家都听过吧,可惜是鹅厂应用太不标准了!!!
android feast
我的设备我做主,我的地盘我是老大……
SDK
adb(Android Debug Bridge),Win下面一般装个驱动,下载exe就可以,稍微全一点的下载个androidSDK。Ubuntu下几条命名就可以$ apt-get install ubuntu-device-flash phablet-tools
注:我的识别稍有问题,连手机前后执行两次lsusb
,连手机后多出来的一行:”Bus 003 Device 008: ID 29a9:701a”,主要是找这个ID,还是上代码吧:
1 | cat ~/.android/adb_usb.ini |
adb
有了,fastboot
也有了,fastboot是标准的安卓刷机工具,然而你在中国,标准很多时候是标准不可用。
YunOS
我爸在家就看个电视,过分么? 广电总局敛财,YunOS作伥,然后仅以此部分献给我的两个周末。
后门是什么:我爸说,后门就是我看电视的应用默默的都被更新掉了。我要不要感谢下,让我爸都对后门理解的如此深刻。
闲话少叙,那个时候网上有个流传的压缩包,里面有个bat,我就下载打开瞅了瞅,GET新技能:
1 | adb connect 0.0.0.0:5555 |
原来电视盒子可以用adb远程连接,pm是package manage,我就adb连上盒子,然后把升级等乱七八糟的该block的block掉,用电脑直接adb install了几个apk应用。电视又可以正常看了…
GET OUT
看了大约5天吧,一点都不消停,真是的… 害我连着两礼拜回家。
这回是很多应用都没有了,但是当贝市场还在,先看电视。第二天习惯性的先去盒子的官网看了看,厂家在云盘放出了ROM和刷机工具,这下没什么顾虑的了……
直接root,然后统统给我滚出去,电视淘宝什么鬼,走了您勒,不送。我尝试装了第三方桌面,自带的也没放过,然后果然被玩坏了……
软件问题都不是问题,双公头USB线,懒的出去买,快递太慢,直接自己动手,旧的线找两根剪断按颜色接上,找来以前用的带指示灯的充电头两个,测试了下(一个插上家用电源,另一个充电头灯正常亮表示没有问题,USB线是四根,两根电源两根数据,灯亮表示电源的两根没有错)。
然后正常刷机,下载rom稍微久点,刷机不足五分钟。
ROOT–>UNINSTALL–>INSTALL 两个市场,两三点播,两三直播,找了找没有设计用来替换的桌面,作罢。该滚的都滚了,以后永不升级,我的地盘我做主。
结果是:电视猫转换成了系统应用,整个默认桌面都是空荡荡的,装了个第三方桌面,唯一不足是home键没绑定,止戈为武,鸣金收兵。
JianGuo
“第三方预装应用都能卸载”,我真的想相信这句话,结果大家都知道,我想多了。只好要得可口自己动手,毕竟最近学习了不少新技能。
开启开发者模式,常用的命令如下:
1 | adb shell ps |
local shell权限不够,需要连上电脑,开启USBDebug,可以成功hide不想要的拉圾,如搜狗广告输入法。锤子以前内置触宝输入法,后面升级到2.5.0后内置了与之匹配的250输入法,我为此升级付出的代价是使用省电模式一天多。
中立
我不粉也不黑,但我想说点啥。。。
安全中心不安全:锤子的安全中心,平心而论是下了功夫的,从短信联系人位置信息到联网,都可以直接管,然而有一条,锤子家的不管,锤子家的权限全开。锤子家定制的权限全开,搜狗输入法加个后缀变成定制的,权限全开,安全中心管不着。
我想说的是,三权独立有点大,但一个小小手机敢不敢不这样……清理好玩么:左手清理右手充电宝,好玩么?安卓的诱导安装和唤起链我不想说,搜狗输入法我确定取消了启用,然而一次又一次被活动在后台,清理是为了测试唤醒么?
农历是中文:中文外强制隐藏农历,多么鸡肋的设计… 要看农历的你还怕他看到地道的,谷歌英文日历农历就很地道,好的需求SE是多么的重要~
jar 甜点
最后给大餐加点料,View and control your android device on PC。 adb devices
显示连接到设备后,从github上下载上述jar,然后java -jar androidscreencast-0.0.5.1S.jar
除了慢点,功能都有了,看到的java大牛,让梦想飞起来吧~
END
手机慢,电池不够用么? 这年头电池很不错了,谁能告诉我,明明能作出好东西,为什么没有真正做出来几个好东西…
django advanced
本文记述我在使用Django时遇到的两个问题,两次被坑的过程,也是两次进步的过程。
qs[m:n].update()
业务我就不多说了,给queryset(总数可能有十万之多)中的部分(以万记)更新某个字段(或者说分配到某个订单),由于要保证互斥,同时希望序列号连续(对应实体的东西,方便分取)所以使用select_for_update()
,当然任何使用锁的地方应该确保尽可能少锁,同时尽快释放。
问题出来了,如此多的数据,如果循环更新,锁的时间将会比较长,可是Django不支持切片后更新。办法:
1 | qs = Models.objects.filter(...).select_for_update().order_by("id") |
qs.distinct().aggregate()
相信熟悉SQL的同学对distinct一定不陌生,加上MySQL后端,就出了这个问题。由于冗余条件的存在,所以qs里面出现了重复数据,这里就不赘述了。(注:当时使用的是Django==1.5.8,django不支持distinct(field)) So:
1 | qs = Models.objects.filter(...) |
没错,就是多操作了一步。解决方法就是这么简单,可是这个重复数据并不总是有,让我头疼了好一阵子,不过还是被我给揪出来了。
总结
第二个问题环境:MySQL数据库后端 + Diango<1.6。当然如今我们都升1.7了,不过我还是记录下。
advanced linux
本文介绍几个Ubuntu进阶的操作。
先晒晒我信攥的电脑
- CPU:E3-1231 V3 (3.4GHz*8 志强四核八线程)
- 内存:Kingston 8G (骇客神条 1866MHz)
- 主板:ASUS B85-PLUS R2.0
- 显卡:NVIDIA GeForce GT 730
CPU,内存没得说,显卡很一般,Linux用完全足够了,如果想超频主板可用Z97K,我不超频也足够了
显卡驱动
志强CPU不集成GPU,所以需要独立显卡,显卡驱动是避免不了的。更多关于显卡的介绍,推荐
官方闭源驱动
官网按型号下载驱动,然后进入命令行(tty1-6),关闭Xorg,sh
装驱动,然后启动Xorg。
1 | sudo service lightdm stop |
包管理器直接装
sudo apt-get install nvidia-331 nvidia-prime nvidia-settings
331是我装时候仓库中最新的。
装完后,不测试下?
工具: glxgears
奇怪,人家都说是评分多少万,为啥我的几乎定在60FPS? 原来是设置里开了,垂直同步,取消后评分正常。
GRUB2 引导
(Ubuntu 14.04下)grub引导选项主要是由/boot/grub/grub.cfg控制的,不过这个文件是自动生成的,我们一般编辑/etc/default/grub,然后通过命令sudo update-grub
应用改动。
常用选项
- 启动顺序
GRUB_DEFAULT
默认是0 - 延时时间
GRUB_TIMEOUT
就是显示grub菜单的时间(单系统默认不显示,开机按Shift即可。) - 想开机进命令行修改
GRUB_CMDLINE_LINUX_DEFAULT="text"
- 添加内核参数
GRUB_CMDLINE_LINUX=""
添加你想加的参数,如reboot=a
无论修改什么,都别忘了修改后更新grub!
新内核
说到内核,你知道你的内核版本么?还记得命令uname -r
吧。
编译内核
我编译过内核,那是因为第一次主板有问题,关机后自动重启,我由于设备教新,所以怀疑驱动等问题。按照wiki我尝试修改了CPU选项和电源选项,不过后来确认是主板问题,跑华硕售后,确认主板有问题,然后换了主板。我不敢大言不惭教大家编译内核,我想说的是新内核源里就有,用新内核不一定需要自己编译。还有我想说的是编译过程比较久,我3.4GHz*8的主频,需要1h这么久。
装新内核
就不教大家装包了,大家都会。不过我想提醒大家的是,装新内核时有几个包需要统一装,不要漏了哪个。
apt-get install linux-headers-x.xx \
linux-headers-x.xx-generic \
linux-image-x.xx-generic \
linux-image-extra-x.xx-generic```
四个包,x.xx是版本号,自行替换。
目前源里版本更新到3.16.0-31了,Linux内核最新版本已经到4.0了,告诉大家个好消息,4.0版本以后,Linux再也不要求大家重启了,厌倦了Windows反复重启的可要牢记哦。
## 总结
最后再次提醒大家修改grub设置后,不要忘记update-grub哦。