by kevin
19.
七月 2020 10:59
>
新鲜 斑头雁之迷 斑头雁(bar-headed geese)冬季生活在印度中部,夏季生活在哈萨克斯坦或蒙古。每年,它都要从印度飞到蒙古,然后再飞回来。从印度到蒙古,斑头雁必须越过世界最高的喜马拉雅山脉,现在已知这些鸟类的飞行高度可以达到8500米。这是如何做到的?8000米以上的高度,氧气极为稀薄,人类呼吸非常困难。但是,斑头雁可以顺畅地呼吸,这就是它们能飞越喜马拉雅山的主要原因:它们的肺远比人类的肺强大高效,即使在那样的高度,身体也能得到足够的供氧。鸟类的肺事实上,所有鸟类(蜂鸟,鸵鸟,鸽子)都有超高效的肺部。人类和其他哺乳动物的肺,跟它们一比,看起来都很低级。人类和哺乳动物的呼吸,进出都是同一个口,嘴和鼻子同时用于呼气和吸气。但是,鸟类不这样,呼吸的进口和出口是分开的,有两个口,气体在体内永远是单方向流动,空气被吸收氧气后,不会再次经过肺部,这样的效率更高。而且,鸟类的骨头里面有气囊和中空的空间,可以储存空气,进一步使得呼吸更容易。 恐龙的肺 鸟类是如何获得这样强大的肺呢? 答案很简单,它们从恐龙那里继承来的。鸟类的祖先是恐龙!恐龙的肺也是高效的,所以它们的体积才会变得这么大!它们的肺可以支持庞大身体的供氧。 大气含氧量的变化 恐龙的肺的进化,与地球环境的变化密切相关。 几亿年前,陆地上刚刚出现植物,这时地球大气的氧气含量很高,超过了30%。相比之下,今天空气里的氧气含量只有21%。 由于氧气太多,使得呼吸效率低下的昆虫,可以繁殖得很大。蜻蜓的翼展能达到1米左右,蜈蚣长2米多,青蛙等两栖动物像饭桌一样大。 氧气太多就容易发生燃烧,也容易与腐烂植物里面的碳元素结合,产生二氧化碳。因此时间一长,地球大气的氧气含量就开始下降了,从石炭纪(3亿年前)30%的高点,快速下降到二叠纪(2.5亿年前)的12%左右。地球上百分之九十五的生命体,由于无法适应氧气含量的下降而死亡,这是地球历史上最大的生物灭绝事件。 还活着的5%的生命体,必须适应低含量的氧气,才能生存下去。恐龙就是在那个时候出现的,慢慢进化出了高效的肺系统。 后来,空气的含氧量又开始回升,达到20%以上。恐龙由于具有强大的肺,体积就越长越大。而且,它们空心的骨头,也有助于减轻整体重量。 鸟类从恐龙演化而来,具有同样的肺系统,专门适应低含氧量的环境,这就是为什么它们能飞越珠穆朗玛峰的原因。 科学家在海拔6700米的安第斯山脉的山顶,发现了老鼠。这是已知生活区域最高的哺乳动物。这些老鼠吃什么,目前还是一个迷,那个高度没有植物,氧气只有海平面的一半。 学习 如何不靠运气变得富有 https://github.com/taosue/how-to-get-rich-without-getting-lucky/ 资源分享 雷· 布雷德伯里 :雨一直下 https://www.sohu.com/a/337866552_771944 言论 创建一家大型互联网公司的最佳方法,就是帮助人们去做他们想做的事情,并使事情变得容易10倍。 唯一不适应远程工作的是中层管理人员。 基层员工对于在家工作感到很高兴,只要把活做好就可以了。高层管理人员只需要对销售和产量数字负责。中层管理人员的不适应在于,他们的职责是直接监控基层员工,最常用的判断方法是通过是否坐在座位上等迹象,来判断工作量和工作是否勤奋。 创业公司不要专注于创造产品,而要专注于解决问题。 创新型的创业公司,一开始的目标用户应该是对新产品最有兴趣的那2%的人群,并设法与剩下的那 98%的人建立一座桥梁,把那些人推向未来。
by kevin
4.
七月 2020 09:12
>
新鲜 美国生态学家16年前做了一个实验,说服哥斯达黎加国家公园,允许一家果汁公司将12000吨桔子皮,倾倒在一块贫瘠的土地上,卡车整整运送了1000次。 16年后,他们重新访问这块土地,发现那里已经是一片郁郁葱葱的森林了,跟旁边的土地形成巨大的对比,地面生物量(以树木的木材量计算)增加了176%。生态学家认为,这对如何回收食品工业的生产残余物,有很大的启示意义。 工具 一个开源桌面软件,隔一段时间(默认25分钟)就跳出一个提示,提醒你离开电脑运动一下。 https://hovancik.net/stretchly/downloads/ 资源分享 宫崎骏动画图片 http://www.ghibli.jp/info/013251/ 言论 互联网的行为模式就是"游牧"。没人在网上有固定住所,网上也没有故乡。我们在互联网上都是游牧民族。 几乎一切罪恶都扎根于未来,感恩是在回顾过去,爱着眼于现在,恐惧、贪财、色欲和野心在眺望着未来。 能解释为愚蠢的,就不要解释为恶意。 计算机科学与计算机无关,就像天文学与望远镜无关。-- Edsger Dijkstra
by kevin
31.
八月 2019 20:08
>
最近想要对svn提交的日志进行管理。 考虑到使用bat命令进行正则校验感觉比较麻烦,而且灵活性也不好,所以选择python来实现。 首先添加svn钩子pre-submit 1: Setlocal
2: set sd=D:\Repositories\hooks
3: set py="D:\Program Files\Python37\python" %sd%\pre-commit.py %1 %2
4: for /F %%i in ('%py%') do (set r=%%i)
5: echo %r% 1>&2
6: if %r%==1 (
7: exit 1
8: ) else (
9: exit 0
10: )
11: Endlocal
上面的代码调用了pre-commit.py,具体代码如下
1: import sys, os, re
2:
3: if(len(sys.argv)<3):
4: print(1)
5: exit()
6:
7: repos = sys.argv[1]
8: txn = sys.argv[2]
9: svnserver = os.environ["VISUALSVN_SERVER"]
10: svnlook = "\"" + svnserver + "bin\\svnlook.exe" + "\""
11: logcmd = ("\"{0}bin\\svnlook.exe\" log \"{1}\" -t \"{2}\"").format(svnserver, repos , txn)
12: loghandler = os.popen(logcmd)
13: log = loghandler.read()
14: loghandler.close()
15: if(not log):
16: print(1)
17: exit()
18:
19: mr = re.match("^\\d+\\s.*", log)
20: if(mr == None):
21: print(1)
22: else:
23: print(0)
24: exit()
by kevin
17.
八月 2019 11:15
>
最近使用svn碰到的一些情况,记录一下。 说明一下: 服务的:VisualSVN-Server 客户端:TortoiseSVN 1. 高版本客户端提交的日志,低版本的客户端查看不了。 svn客户端升级之后,最好还是svn clear一下。 2. 高版本的客户端提交的日志导致低版本服务端的钩子无法正常运行。 大概的原因是,高版本的客户端提交的日志可能包含一些分隔符(比如换行符),导致服务端无法正常调用钩子。
by kevin
18.
三月 2019 18:42
>
最近,碰到一些网页屏蔽了复制功能。写个简单的解决办法。 1. 下载google浏览器(或者360极速浏览器) 2. 再网页上点击鼠标右键,点击弹出菜单中的“检查” 3.在下图左边的小窗口中,找到body,点击body;在右边的小窗口中,找到-webkit-user-select 把前面的勾去掉。
by kevin
25.
十月 2018 11:31
>
string appConfigFile = Assembly.GetEntryAssembly().Location;
Configuration appConfig = ConfigurationManager.OpenExeConfiguration(appConfigFile);
AppSettingsSection appSettings = (AppSettingsSection)appConfig.GetSection("appSettings");
var config = UploadConfig;
appSettings.Settings["KEY"].Value = "VALUE";
appConfig.Save();
ConfigurationManager.RefreshSection("appSettings");
留一份代码,只是为了以后使用ctrl+C、ctrl+V大法。
by kevin
25.
五月 2017 17:49
>
在Oracle 11g 中默认的profile启用了密码过期时间是180天。 Oracle中如何查看客户端的IP? 缺省从 v$session 中不能直接获得客户端 IP,可以在数据库中创建一个追踪客户端IP地址的触发器: create or replace trigger on_logon_trigger after logon on database
begin
dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));
end;
常用的显示客户端信息的sql:
select v.USERNAME, v.STATUS, v.SCHEMANAME, v.OSUSER, v.PORT, v.TERMINAL, v.PROGRAM, v.TYPE, v.MACHINE, v.CLIENT_INFO from v$session v
order by v.MACHINE,v.TERMINAL;
综合v$process和v$session查看连接情况
Oracle常用的包引用
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/toc.htm
by kevin
21.
九月 2016 23:08
>
首先,看看netstat 都有什么选项
1: C:\Users\Administrator>netstat -help
2:
3: 显示协议统计和当前 TCP/IP 网络连接。
4:
5: NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]
6:
7: -a 显示所有连接和侦听端口。
8: -b 显示在创建每个连接或侦听端口时涉及的可执行程序。
9: 在某些情况下,已知可执行程序承载多个独立的
10: 组件,这些情况下,显示创建连接或侦听端口时涉
11: 及的组件序列。此情况下,可执行程序的名称
12: 位于底部[]中,它调用的组件位于顶部,直至达
13: 到 TCP/IP。注意,此选项可能很耗时,并且在您没有
14: 足够权限时可能失败。
15: -e 显示以太网统计。此选项可以与 -s 选项结合使用。
16: -f 显示外部地址的完全限定域名(FQDN)。
17: -n 以数字形式显示地址和端口号。
18: -o 显示拥有的与每个连接关联的进程 ID。
19: -p proto 显示 proto 指定的协议的连接;proto 可以是下列任
20: 何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选
21: 项一起用来显示每个协议的统计,proto 可以是下列任
22: 何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
23: 或 UDPv6。
24: -r 显示路由表。
25: -s 显示每个协议的统计。默认情况下,显示
26: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6
27: 的统计;-p 选项可用于指定默认的子网。
28: -t 显示当前连接卸载状态。
29: interval 重新显示选定的统计,各个显示间暂停的间隔秒数。
30: 按 CTRL+C 停止重新显示统计。如果省略,则 netstat
31: 将打印当前的配置信息一次。
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
查看一个端口被哪个进程占用
C:\Users\Administrator>netstat -ano|findstr 800
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1392
TCP [::]:8080 [::]:0 LISTENING 1392
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
查看都有哪些程序使用了哪些端口
C:\Users\Administrator>netstat –abn
活动连接
协议 本地地址 外部地址 状态
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
无法获取所有权信息
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
RpcSs
[svchost.exe]
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
无法获取所有权信息
TCP 0.0.0.0:554 0.0.0.0:0 LISTENING
[wmpnetwk.exe]
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
by kevin
14.
八月 2016 14:52
>
之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了。现在在SQL Server 2008的Management Studio中增加了一个新特性,除了导出表的定义外,还支持将表中的数据导出为脚本。导出过程: 在SSMS2008(SQL Server Management Studio 2008)中的对象资源管理器中,右击需要导出数据的数据库,在弹出式菜单中选择“任务”下的“生成脚本”选项。 在脚本向导的选择脚本选项中,有以下重要选项可以选择: “编写数据的脚本”:是否导出数据库中的表数据。 “包含 If Not Exists”:此选项可以删除数据库中已存在的同名的数据库对象。 “编写创建数据库的脚本”:是否产生 Create Database 的SQL 脚本 “为服务器版本编写脚本”:选择要执行脚本的数据库版本。 然后下一步选择导出的对象,选择导出的表,最后完成时即可以看到由系统导出的表定义和表数据了。 1)另外有两个地方要注意。 一、CREATE DATABASE [DBNAME] (如果选择了“编写创建数据库的脚本”选项) 和 USE [DATABASE] 。 二、改数据库架构,一般本地是用dbo,所以按Ctrl+F键,选择替换窗口,把 dbo 替换成 [YOUR_SCHEMA] 至此脚本改造完成。 2)但是在实际的操作中,如果从08导出到低版本的sql中可能会有很多兼容性的问题,因此向低级版本导出脚本的时候 在“选择数据库”中,可以不勾选“为所选数据库中的所有对象编写脚本”复选框 在“选择脚本选项”中,注意把“为服务器版本编写脚本”中选择导出的数据库版本(2000,2005,2008) 3)导出的脚本如何很大,无法直接在SQL Server Management Studio直接打开运行,使用 sqlcmd 运行 Transact-SQL 脚本文件 (sqlcmd工具)。 运行脚本文件 打开命令提示符窗口。 在命令提示符窗口中,键入 sqlcmd -S myServer\instanceName -i C:\myScript.sql 按 Enter 键。 将此输出保存到文本文件中 打开命令提示符窗口。 在命令提示符窗口中,键入 sqlcmd -S myServer\instanceName -i C:\myScript.sql -o C:\EmpAdds.txt 按 Enter 键。
by kevin
3.
八月 2016 14:17
>
最近的开发中有一个功能,点击一个链接之后,要判断当前的用户是否登录,没有登录的话,需要弹出一个登录对话框,用户登录之后,再在新的窗口(标签)中打开链接指向的Url。 不多说,直接贴出代码: $(document).delegate("a", "click", function () {
var actionUrl = $(this).attr("href");
var ssoAction = function () { window.open(actionUrl, '_blank'); };
if (isLogin()) {
ssoAction();
} else {
popup.show({login:function () {
$.ajax({
type: "post",
dataType: "json",
url: "/Account/Login",
data: $("frmLogin").serialize(),
//发送方式改为同步,避免弹出页面被浏览器拦截
async: false,
success: function (oData) {
ssoAction();
}
});
});
}
return false;
});
重点:需要使用同步提交,使用异步提交,callback里面打开新窗口(标签),会被浏览器认为是恶意行为。