Day 3983 Excel 无法打开同名文件的原因及解决方法

在使用默认方式(直接双击xls(x)文件)打开两个文件名相同的工作簿时,Excel 会给出以下提示(图为 Excel 2010版本):

经查证,微软官方曾经在这里做出如下解释:

这是一个我们经常从客户那里听到的疑问。

答:因为会在关联单元格计算时产生歧义。试想有一个单元格中包含如下公式:='[Book1.xlsx]Sheet1′!$G$33,然后又同时打开了两个名叫Book1.xlsx的工作簿,那么 Excel 是无法判断你到底指的是哪一个工作簿的。

解决方法有二:

1、将其中一个工作簿文件改名。

2、启动 Excel 的另一个实例(原文链接),方法为:

i. 在开始菜单中找到 Excel(或者直接找到 Excel.exe 也可以),按住 Alt 点击菜单项(或双击exe文件)启动
ii. 在新开的 Excel 窗口中打开之前无法打开的工作表,注意不要直接去双击文件或在工作簿上按回车,那样还是在之前打开的Excel中打开文件,需要在新开的窗口中手工打开,或将文件拖进新开的 Excel 窗口里。

第二种方法的原理是:Excel 属于 MDI(多文档界面)的设计,也就是可以在同一个主窗口下打开多个文档,证据就是:以通常形式打开的多个工作簿,只要在一个下面按下 Alt+F4,那么所有的工作簿都会退出。猜测同名文件检测也是基于此达成的,所以只要启动一个新实例(可以理解为打开了另一个版本的Excel),就与之前打开的实例无关,也就不存在同名文件检测的事情了。

Day 3947 Chrome清除指定域名下的缓存

有时需要清理Chrome缓存,但又不想为了一个站点去搞掉所有网站的缓存,按照该帖子的提示,可以如此操作:

1、按F12(或Ctrl+Shift+I,或者去菜单里点击)在要清理缓存的页面打开 Developer Tools(开发者工具)。

Empty cache for specific domain in Chrome

2、鼠标左键按住地址栏旁的刷新按钮,会弹出一个菜单,拖动选择第三项 Empty Cache and Hard Reload(中文版为:清空缓存并硬性重新加载,感谢石櫻燈籠在评论中指出)。

3、等待刷新即可。

此方法“不一定确定能刷新特定域下的缓存”(原帖原话),但应该能满足需要做这个操作场景的需求。

没有弹出这个菜单的原因可能有二:1、必须先打开 Developer Tools;2、该页面尚无缓存,无法清除。

Day 3920 服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限

因为一些原因,在办公机上装了一台 Mac OS X 10.6 的虚拟机,并且因为需要与宿主机 Windows 7 交换大量文件,所以使用了 SMB 共享。

某日,在复制文件的进程中,在复制了1万个左右的文件后,共享突然断开,再连接亦无法成功,多次重启双方机器也没有效果,OS X 给出如下错误信息:

SMB Share failure between OS X 10.6 & Windows 7, figure 1

点击『好』后 Finder 继续给出错误信息:

SMB Share failure between OS X 10.6 & Windows 7, figure 1

根据错误代码-41进行搜索,有些提到是 Norton Secutiry 的原因,但是宿主机并没有安装这个软件;另一篇帖子则提出问题应当出在宿主机 Windows 端,于是想到去翻系统日志,果然发现了奇怪的东西:

SMB Share failure between OS X 10.6 & Windows 7, figure 3

按照此方向去搜索,虽然因为时间紧,没有挖到官方的详细说明,不过按照以下方式进行修改、并重新启动宿主机和虚拟机已证实有效:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache

将DWORD(32位)项LargeSystemCache的值修改为:1

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size

将DWORD(32位)项Size(如没有则新建)的值修改为:3

由于宿主机版本为消费级的 Windows 7,而非服务器系统,推测是消费级系统中对共享文件的限制较低,在进行大量或大尺寸文件的SMB共享时超出了上限,因而导致问题的发生。

Day 3833 某个应用导致.***文件的默认应用设置出现问题,因此已将它重置为……

最近将家里的台式机系统更新成了Windows 10,在这之前因为听说Windows 10的小bug不断,踌躇了很久,终于还是觉得为自己在单位维修电脑多增加一点经验好,于是做了一次干净安装。

用了一周多,小问题是不少,好处也不少,最明显的是开关机速度、待机/恢复速度大幅提升,应用程序运行效率也有明显提高,这是题外话。

但是有一个颇为恼人的问题:系统总是无法固定某个扩展名的打开方式,有时甚至不知道做了什么操作,就会弹出这样一个提示:

继续阅读 “Day 3833 某个应用导致.***文件的默认应用设置出现问题,因此已将它重置为……”

Day 3699 Oracle 11g 密码过期

某个项目从2014年至今已经快两年了,一直拖拖拉拉没有做完,相关的APP、服务端也都乱七八糟的,真是被坑了。

早上领导突然说要看这套项目的情况,于是从抽屉底扒拉出我们部门配发的唯一平板电脑:南都PAI F8(就是某山寨配置却售价¥800的东西)。安装APK后尝试下载数据,连不上,开后台也打不开,寻思是数据库又掉线了,远程过去重启Oracle 11g和服务端,居然也不行,最后去扒log发现这么一句:

java.sql.SQLException: ORA-28001: the password has expired

上网查了一下,Oracle 11g默认的密码有效期是180天,你说这得多久没人管这个项目了吧。

总之处理方法如下:

1.以Oracle或sysdba登录DB系统,首先查询当前有效期:

select * from dba_profiles where profile=’DEFAULT’ and resource_name=’PASSWORD_LIFE_TIME’;

输出没有复制,总之可以看到LIMIT字段值为180,意为密码有效期是180天。

2.修改有效期为无限:

alter profile default limit password_life_time unlimited;

修改后再次执行第一步的查询,LIMIT应变为:UNLIMITED。

3.对用户密码进行修改,否则用户仍然会处于密码已过期状态:

alter user USERNAME identified by NEWPASSWORD;

如果用户被锁住:alter user USERNAME identified by NEWPASSWORD account unlock;

说点题外话:写题目的时候发现已经需要用五位数了,倒查了一下发现今年2月22日是我在这世上的第10000天,艾玛怎么这么二……

Day 3652 Minecraft Residence 扩展已有领地

原文来自:http://betteringame.com/page/articles.html/_/mcarticles/how-to-expand-an-existing-residence-r10

简单叙述步骤如下:

  1. 首先选择已有的领地:(main是领地的默认区域名,注意与子领地不是一个概念)

    /res select residence 领地名称 main

  2. 查看一下当前领地的范围和花费,记下当前领地大小和所需金钱

    /res select cost

  3. 扩展领地,这个步骤可能有点费解:例如原有领地是一块50×50的领地,想以东北角为起点向北扩展50格、向东扩展30格,那么首先需要走到东北角顶格,然后面向北面,输入命令:

    /res select expand 50(服务器会提示 扩张 北面(50) 或类似的信息)

    再面向东面,输入:

    /res select expand 30(服务器提示:扩张 东面(30)

  4. 查看扩展后的领地范围和花费:此时提示的土地花费为扩展后的领地总价值,而扩展时实际的花费需要做减法,例如:扩张前土地花费1000,扩张后花费3000,那么实际需要消费的游戏币就是:3000-1000=2000

    /res select cost

  5. 合并领地范围并支付扩展费用:

    /res area replace 领地名称 main

  6. 如果只想向一个方向扩展领地,有快捷方式将3、4、5步合并进行,
    方法是面向需要扩展的方向直接使用以下命令(直接扣钱!慎用!)

    /res expand 扩张大小

Day 3620 支付宝商户创建交易提示BUYER_ENABLE_STATUS_FORBID

由于支付宝规定一个支付宝账户只能为一个主体开立收付款业务,所以为单位新开的网站新建了一个支付宝账户,并申请了即时到账接口,用于网站销售的收款。

办理很顺利,将所有材料提交后,连带打款验证在一天内就办完了,但是在测试的时候发生了一个奇怪的问题:

alipay_buyer_enable_status_forbid

问题在于:此时我尚未登录任何支付宝账户,所以认定是支付宝方面的问题。

不过通过与支付宝方面的技术进行协调排查,发现问题实际出在:这个网站的CMS系统会将用户在个人信息中填写的Email作为buyer_email参数发送出去,而我测试用的账户中,Email填写的是[email protected],而这个账号在支付宝方面是被屏蔽了的。

更换其它Email后,交易创建即告成功,可以正常进行付款。

Day 3611 中间人攻击式饭否消息过滤代理

这个东西的最初设计目标是:在不对某些人取消关注(加黑名单也会取消关注)的情况下,通过中间人攻击(不是唬人,其实本质就是篡改返回结果)为不支持消息过滤的饭否客户端(实际上,没有任何一款饭否客户端和官方界面有这个功能,据本人所知的唯一途径是Chrome插件Fanatic,但也只能对饭否网页版起作用)提供相应功能。

由于没有一款客户端支持自定义API地址,所以采取的方式是:在本地用hosts将API所在主机(api.fanfou.com)重定向,然后在目标服务器接受解析,等于欺骗一下客户端,让它以为连接的是官方的API服务器。

此外,既然是中间人攻击,那么其实想对返回结果做什么都可以,本来除了过滤特定人之外还想加入更多功能,可是写完就懒了。

代码写得很面条很烂,请多包涵。

使用方法(以Apache 2.4.4 + PHP 5.3为例):

1、将文件内容另存为UTF-8无BOM格式,文件名为index.php(或任何目标服务器支持的默认文档名)

2、确认PHP开启cURL扩展,Apache开启了Rewrite扩展,修改httpd-vhosts.conf(或Apache虚拟主机配置文件所在处):

<VirtualHost *:80>
    ServerName api.fanfou.com
    DocumentRoot "文件所在路径"
</VirtualHost>
<Directory "文件所在路径">
    Order Allow,Deny
    Allow from All
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    #-f的含意是将请求的路径当作文件来看待,由于-f会检测文件是否真实存在,所以!之
    RewriteRule ^(.*)$ index.php?reqf=$1 [QSA]
    #QSA == Query strings appended,即将原始Query String内容原样转发
</Directory>

3、配置主机,将api.fanfou.com绑定到刚刚配置的Apache服务器上。

4、在要使用该代理的客户端上,配置hosts文件,将api.fanfou.com指向文件所在的主机。 继续阅读 “Day 3611 中间人攻击式饭否消息过滤代理”