mailcap
Tencent === Trash
,微云下载的文件总是用gedit打开,firefox如是说。有谁能想到,腾讯微云下载的文件有着一样错误的Content-Type: "application/octet-stream"
The Way to fix it
Ubuntu 下,命令行执行:
1 | echo 'application/octet-stream; nautilus --no-default-window --no-desktop %s; test=test -n "$DISPLAY"' >> ~/.mailcap |
其实就是向家目录下.mailcap
文件追加上述命令单引号内中的内容。(文件不存在则新建)
reason
微云下载文件时,HTTP Response headers,中使用了不是Trash不可能使用的Content-Type: "application/octet-stream"
,这是什么鬼文件,系统说他不认识,你试试gedit吧。
上面的解决方法是,application/octet-stream
类型的文件用nautilus打开(在文件夹中显示),之所以没有定义到确定的应用,因为我常用的有zip和pdf两种,只好折中使用nautilus了。
总结
firefox中下载的文件总是用gedit打开,我气愤不止一次了。我用Linux,为什么用QQ,因为有人用QQ,为什么是微云,因为有用QQ发的文件,我只好借用微云,然后浏览器下载下来。
感谢IRC: Cork
tuple change?
在python中元组tuple是不能改变的,列表和字典是可以改变的。
change
1 | In [1]: l = [1, 2] |
总结
上述,元组的项目是列表,改变了列表。元组有没有改变,自己掂量吧…
push -f
不要用root用户,不要用force参数,这都是老生常谈的话题了。
权利越大,责任越大,可是总是有人使用…
git push -f
实话是说,使用force闯祸了…
git提交的多了,难免有些错误想要去掉,干净的提交履历确实好看,也更容易表明做了些什么。
一行代码,第一次改错了,push到master分支了,就一行。(就一行,唯一的一行,所以唯一的一次没有另开分支。)
所以我就回退了一个版本,重新修改force提交了,按说也没有多少问题,可是CI(持续集成),拉到了那个错误提交的版本,然后无法拉到其它更新的版本了…
FiX IT
首先我想的是,恢复出那个版本。习惯性的新开分支,锁定到第一次错误提交后的那个版本,然后修改,然后pull request。那个版本出现了,不是孤立的了,可是CI仍然不能拉到更新的版本。。。
reset
重新来,新开分支,reset
一堆修改,然后pull request。“改或者不改,CI的版本就在那里,不增不减。”
哎
最后,我大师出马了。。。危难时刻还是有大师好啊…
总结
自我总结,本次Fix失败,主要原因是一直新开分支,采用了错误的方法。丢失了原本该有的胆识,不过话说回来,master分支搞错是会死人的。(虽说git仓库还是容易恢复,不易于被恶意破坏)解铃还须系铃人,force闯的祸,应该用force去修复
,最后感谢大师。
Which fm
身为程序猿,带耳机早已成为习惯,什么歌曲真心无所谓,只是带耳机的同时,和外界相对隔离起来。
Radio/fm
Linux 下有款软件:Guayadeque,自带好多电台,我的是1.2W+,如果不够我再提供个网址shoutcast,如此多的电台,不怕没有我爱听的。
jing.fm
jing 据说是一款小众的电台,据说刚要发展就被抄袭的电台。所以我还是觉得支持下小众。
jing 传说的强项之一就是,自然 话语言搜索,我尝试了下工作
,编程
之类的没有结果,然后试了下coding
和debug
这两个奇葩分别对应一两首奇葩歌曲,这是耍我么???
jing有个很严重的毛病,至少我是这么认为,经常性自己暂停!
kugou.com
- kugou.fm 打开内容是奇葩的 douban.fm (此处指 kugou.com –> 电台)
电台就那么99个,同样的电台同样是重复,只有99个电台,总是重复。
你重复,我只好换了。
douban.fm
经常莫名的插播广告,声音广告那种。点击不再播放,会误杀一首歌曲。
我评价:垃圾货一个!整个douban都是。
fm.baidu.com
我是骨粉,从来没觉得百度好过。百度的电台实在不咋地,给你看一个品质设置,故意给你看个低品质。
一副自以为很牛的样子,牛到谷歌搜的都是百度搜索的自页面,牛到打开页面都是百度转码的符合手机的版本。
俺浏览器支持手机,也是俺的错么。百度统计,会在左上角爆出百度的ico。
借用我家大师的话:百度===垃圾中的战斗机
@2014-11-03,用百度音乐盒听几首新歌,然后弹窗了个百度音乐人广告,点击空白不消失,点击ESC也不行,丫的想去地狱么?你当我不会关闭标签页么!
@2014-11-03,MD fm也来广告了,能嵌入弹窗推广,你丫还有什么不能,终生不用!!!
另,百度的一键存到百度云没有了,默认都在云音乐,so批量下载没有了,不是会员别想来。。。
总结
戴上耳机,听着Radio,Coding…
bash
my bash
声明
本文不是介绍bash的,当然也不含有bash历史,本文写的很随意,如果你不喜欢这些,请移步。
有高见,欢迎来IRC: /join #zh-cn
PS1
整一个个性的提示符PS1
,我的提示符:^_^:~$
export PS1=”[\e[00;37m]\n[\e[0m][\e[00;34m]^_^[\e[0m][\e[01;31m]:[\e[0m][\e[00;36m]\w[\e[0m][\e[01;33m]\$[\e[0m][\e[00;37m] [\e[0m]“
点击上面的提示符 or bashrcgenerator,定制一个属于自己的提示符吧。
使用该提示符,将生成的代码复制粘贴到~/.bashrc
文件即可。(其实是export
一个常量PS1
,所以有必要放在PS1
赋值的后边,以便生效。)
唤醒历史命令补全
将下述代码复制粘贴到~/.bashrc
文件,然后输入部分命令再使用上下键试试。
bind ‘“\e[A”: history-search-backward’
bind ‘“\e[B”: history-search-forward’
控制命令$?
;
: 组合多个命令,按循序执行。&
: 使命令开启一个子Shelll并在后台执行。&&
: 前面命令成功后,执行后边命令。||
: 前面命令执行失败后,执行后边的命令。
重定向
>
: 重定向输出。(新建,会覆盖)>>
: 重定向追加输出。(追加,会新建)<
: 重定向输入,一般从文件读入等。<<
:<< "str"
,重定向输入,遇到str
自动结束。|
: 管道,不解释了。*****
五星级。
- 标准输入(stdin):代码为0,
0< or 0<<
- 标准输出(stdout):代码为1,
1> or 1>>
- 错误输出(stderr):代码为2,
2> or 2>>
- eg:
COMMAND &>/dev/null &
orCOMMAND 1>/dev/null 2>&1 &
# 重定向输入,并后台运行。
.bashrc at Ubuntu
1 | alias ga='git add' |
经过一番折腾,激活了git的自动完成,有自动完成的别名才有意义。
MySQL notes
MySQL 备忘,已经用到的一些命令,方式信马游缰。一句话总结:那些我用到的MySQL语句。
MySQL
1 | $ mysql -u root -p |
New db
Create database
1
create database db_name;
Add user
1
2insert into mysql.user(Host,User,Password) \
values("localhost","user_name",password("user_password"));Show user
1
select user,host,password from mysql.user;
Add permission
1
2
3grant all privileges on db_name.* to \
user_name@localhost identified by 'user_password';
flush privileges;Show permission
1
show grants for user_name@'localhost';
Alter character (utf-8)
1
alter database db_name default character set = utf8;
Recommend create
1
CREATE database db_name DEFAULT CHARACTER SET utf8;
Other
foreign_key_checks
一对好基友 1
2
3set foreign_key_checks = 0;
$_do_some_command;
set foreign_key_checks = 1;show databases
1
show databases;
use databases
1
use db_name;
truncate table
清空表中所有内容,结构不变化: 1
truncate table table_name;
drop table
销毁表,结构不复存在: 1
drop table table_name;
update
1
update db_name.table_name set column_name = new_value where id>0 and your_where
id>0 我是被那个safe update逼的。
End: 本文仅总结了我用到的一些语句。
注:代码命令中含有_
的,很多时候是需要你修改的。但也有不是的,如set xx_xx = 0
,你需要修改0 or 1
。
and & or
Python 的bool运算 and & or,但运算结果不是单纯的False或者True,无疑结果是对的。一句话总结:用最少的运算,保留更多的信息,保证正确的结果。
Documentation
Operation | Result | Notes |
---|---|---|
x or y | if x is false, then y, else x | 运算是短路的 |
x and y | if x is false, then x, else y | 运算是短路的 |
关于短路
print None and None[0]
没有报错,正常打印出None。(None[0]
会报TypeError
错)
bool ? x : y
运算
由于python的bool运算保留了更多信息,所以可以实现上述三目运算。
三目运算
三目运算是这样的,可是存在一个误区!bool and x or y
误区,当x为假时,永远返回y。
修正上述误区:((test and [x]) or [y])[0]
采用了x
为假时,[x]
为真(避免上述误区),然后[0]
索引求值。
还有种简洁的写法:(y, x)[bool]
其中x,y是反的,用bool
索引求值。
上面涉及了两个值,网上还有三个或更多值的,我就不多少了,也不建议去搜。ugly
!
技巧VS陷阱
我认为,这个既算不上技巧,也不能称为陷阱。
python实现三目运算还是用x if bool else y
,从看着到结果都比较顺眼。当然适当的使用and & or保留值的特性也是可以的,主要是你要明白你写的是什么。
写代码,自己要明白,还要让看的人明白。
(看的人也要知道自己看的是python)