使用Java控制路由器获取公网IP

  不知道是公网IP不够用了,还是什么鬼原因,近期我这的联通ADSL拨号很大程度上获取的是一个10.开头的内网IP。虽说通常情况下无需关心,但跑PT,VPN等速度上大打折扣。投诉无果后只能自己写个脚本来自动更换IP。

  其原理很简单,模拟登录到路由器上检查WANIP是否是10.或0.开头,如是则断开重连,以此循环。代码是Java编写,无任何依赖,运行在树莓派上,24小时监视,在运营商完全分配内网IP之前还可以挣扎一阵子。有需要的朋友可以参考下。

  我这用的是TP-LINK WR720N路由器,设置了局域网IP为192.168.30.1 端口88,通过Chrome登录到路由器,可以在开发者工具中查看到Basic加密的Key,替换相应的位置即可。

查询IP的链接

http://192.168.30.1:88/userRpm/StatusRpm.htm

断开拨号的链接

http://192.168.30.1:88/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1

重新拨号的链接

http://192.168.30.1:88/userRpm/StatusRpm.htm?Connect=%C1%AC%20%BD%D3&wan=1

代码如下:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CheckIP {
	private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");

	public static void main(String[] args) throws Exception {
		do {
			String currentIP = getIP();
			if (currentIP.startsWith("10.") || currentIP.startsWith("0.")) {
				System.out.println(simpleDateFormat.format(new Date())
						+ " 检测到异常:" + currentIP);
				getHtml("http://192.168.30.1:88/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1");
				Thread.sleep(1000 * 1);
				getHtml("http://192.168.30.1:88/userRpm/StatusRpm.htm?Connect=%C1%AC%20%BD%D3&wan=1");
				Thread.sleep(1000 * 3);
			}
			Thread.sleep(1000 * 3);
		} while (true);
	}

	private static String getIP() throws Exception {
		String wanPara = getHtml("http://192.168.30.1:88/userRpm/StatusRpm.htm");
		if (null != wanPara) {
			wanPara = wanPara.substring(wanPara.indexOf("var wanPara"),
					wanPara.length());
			wanPara = wanPara.substring(0, wanPara.indexOf(");") + 2);
		}
		return getFirstIp(wanPara);
	}

	private static String getHtml(String address) throws Exception {
		URL url = new URL(address);
		URLConnection connection = url.openConnection();
		connection.setRequestProperty("Authorization", "Basic YWRtaW46d3Npa3Nr");
		connection.connect();
		InputStream inputStream = null;
		StringBuffer stringBuffer = new StringBuffer();
		inputStream = connection.getInputStream();
		BufferedReader bufferedReader = new BufferedReader(
				new InputStreamReader(inputStream));
		String line;
		while ((line = bufferedReader.readLine()) != null) {
			stringBuffer.append(line);
		}
		bufferedReader.close();
		inputStream.close();
		return stringBuffer.toString();
	}

	private static String getFirstIp(String packet) {
		Pattern p = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
		Matcher m = p.matcher(packet);
		if (m.find()) {
			return m.group();
		} else {
			return null;
		}
	}
}

编译

pi@raspberrypi ~ $ javac CheckIP.java

后台运行

pi@raspberrypi ~ $ nohup java CheckIP &

日志

pi@raspberrypi ~ $ tail -f nohup.out 

StarTech 3.5寸移动硬盘盒

  随着拍摄的照片越来越多,一个500G的移动硬盘和Macbook的256G空间已经快塞满了,于是再购置了一块3.5寸台式机硬盘。由于是连接到Macbook使用,必须要再加装移动硬盘盒。

  要是没有特别要求,那这事就简单了,市面上硬盘盒一大把,十几上百的都有。可偏偏符合我要求的就少之又少,主要要求如下:

  1. 支持Mac USB 3.0 (5 Gbit/s)
  2. 支持硬盘4T以上
  3. 支持硬盘SATA III (6 Gbps)
  4. 支持UASP协议
  5. 支持智能休眠,磁盘卸载,自动停转
  6. 稳定,可长时间运行
  7. 仅需要1个盘位

  好吧,这样一来,没多少可选的了。本来早在今年4月份就在JD一起下单买了希捷2T和数据巴士S320I,结果S320I唯独不支持Mac系列的USB 3.0,表现为读取缓慢,并且掉盘,极其严重的问题,导致丢失了好几百张照片。后来看说明书上的系统支持里面Mac那一栏居然写着一串小字,不支持USB 3.0,但购买的时候网上介绍都没特别说明,只是概括的说支持Mac电脑,看来是信息没有及时更新。后来在一台Windows主机上测试,一切正常。数据巴士的做工真是无力吐槽了,明明设计是免工具插拔的,结果硬盘塞进去,非得用蛮力才能拔出,检查一看是一个塑料卡脚太粗了,死死的卡在硬盘螺丝孔内,导致难以取出,无奈只好退货。后来官方客服说是芯片太老了,新款有几个是可以的,不过不打算再试了。

  最后在美亚上找了一款,也就是现在测试的StarTech.com HDD Enclosure with UASP (S3510BMU33B),支持USB 3.0,SATA III硬盘,有散热风扇。虽说也不确定是不是知名度很高的品牌,不过这小众需求压根也没大厂看得上。从startech.com官网看了下,还挺正规的,产品种类齐全,各种参数一目了然,价格也不贵,最重要的是明确支持Macbook USB3.0和UAPS协议,邮件客服响应速度也挺快的。直邮过来,正好今天收到了,迫不及待的开箱测试了一番。通过Blackmagic旗下的Disk Speed Test软件测速,顺序读写均能稳定在200MB/S,结果大大出乎意料,基本上是目前机械硬盘的极限速度了。而之前在Windows上测试S320I也才100多的水平,看来UASP协议还是有点用的,据说这个是为SSD硬盘准备的。

  接下来就是迁移照片了,我习惯在Lightroom中导入并管理照片,一般情况下都会保留相机原始的RAW文件,所以体积比较大。很简单直接将源路径的照片剪切到移动盘,再通过Lightroom的查找丢失照片选择新的目录,就可以完成迁移了。粗略算了下,从10年到今天共计16451张照片,167.54GB,也算是个不小的战绩了。

IMG_0170IMG_0174speed

时代的车轮

  再一次看到百度空间即将关闭的提示,不得不表示遗憾。

  2007年至2010年间,正好是整个大学生涯,在百度空间上纪录了不少的东西。大约150篇的文章,虽说都是些折腾的纪录,在现在看来也没多少技术含量。不过恰逢和朋友吹水聊天的时候,偶尔触及一些话题也能让人发出“当年如何如何”的感概时候,这时候如果能找到当时的文章就显得有理有据了,吹牛逼格瞬间高了几个档次。当然更大的价值还是在于自己。现在的问题是要关闭了,各种原因就不用说了,总归是人去楼空,时代变了。百度也算做了个好事,都备份到网盘了,只不过只能自己浏览。也罢,免的我写脚本导入到这个博客。

  作为混迹在互联网上近十多年的“老江湖”也遇到过不少的服务曾经红极一时,而后随着大势起起伏伏,转型的,倒闭的不计其数。最初用过pjblog程序搭建过一个博客,也写过不少心的。而后微软的asp渐渐淡出,接班人php一路红火起来,于是我也转到wordpress阵营。在那个还不需要备案的年代,虚拟主机满天飞,质量也良莠不齐。用现在角度来看就是野蛮生长状态。放纵下的自由竞争,同时也富裕了一大批“站长”们。

  我想这是为免费付出的代价,倒不是说如果一开始收费就能一直存在下去,或许用户早就跑了。而是即便有付费用户,但整体用户使用率下降,产生的信息交换越来越少,不足以维持高额的运营成本,势必要转型或关闭了。互联网用户都是实实在在的人,不断成长,从一个圈子转移到另一个圈子。人们只会对新事物才有好奇心,时代的车轮总是不断的向前滚动,谁能说得定呢。任何看似大众的事物都有可能变的小众,这也是我一直对“云”的看法。在时间的长河中,产品如何求的生存,但我想一定不能只靠“大众”。

  ”It was the best of times, it was the worst of times.”

手动对焦的一些体会

  话说使用Samyang 50mm这个头也有一段时间了,感觉非常不错,色彩很是让人惊艳,尤其是夜景,也完全没有之前担心的对焦不准。

  在单反上使用手动头一定要更换更为高精度的对焦屏,和接目增距镜。我这里使用的是Eg-S和EP-EX15。前者能让你看的更清楚焦点,后者延长了眼睛到相机的距离,可以以更正面的姿态来取景,不必当心鼻子碰到屏幕,轻松许多。其中也试过杂牌的取景放大镜,效果都不理想,还容易导致暗角,视野变窄,遮挡曝光指示器,无法构图等问题,不建议采用。

  关于合焦提示,个人觉得毫无必要,对于佳能单反机身去掉了机身合焦检测模块以及光圈联动杆,因此需要在镜头上贴一块电子芯片,来模拟一个镜头才能实现合焦提示,而这个技术往往是一个厂家的最为核心的竞争力,不可能做的很完美。这也就是为什么第三方自动对焦镜头都很容易跑焦的原因。

  大部分50mm镜头用的都是模拟佳能EF 50mm f1.4这个头,这样在机身JPG直出还可以带上该镜头的优化校准,同时EXIF也可以看到镜头。但不同的镜头这些细微的参数肯定是不同的,这也导致合焦提示不一定准确,所以是没必要的。更重要的原因是电影头的质量还是比同档次的拍照头高出许多,基本上看不出畸变。

  同理峰值对焦也只不过是根据反差度强弱计算出来的,和LV取景的自动对焦是同一个原理,精度不高,容易被非焦点的高反差欺骗,本来就看不清的环境,峰值也无济于事。峰值能看清楚的地方,OVF看的更清楚。这个是在我刷了魔灯固件后的一些体验。不过像富士和索尼的EVF取景放大这种功能还是很不错的。

  之所以要玩手动,我觉得意义在于抛开对焦点的束缚,虽说6D的对焦系统本来就很弱,但再往上的5D3,1Dx也都只是更密集的集中在中央,边缘对焦依然是弱项,而手动毫无畏惧。废弃了对焦点,自然测光系统也要改变,无法再用评价测光了(点动联测),改为平均测光或者中央重点吧,配合测光指示器相信自己的感觉与数码的宽容度。

  享受转动对焦环那种感觉,从模糊慢慢到清晰,对空间距离的判断也比较重要,比如确定拍摄物比较近的时候,迅速顺时针转,反之亦然。对镜头上的距离标尺要有一定的感知。Samyang 50mm这个头标尺范围是0.45m~3m,3m~∞。特定光圈下的超焦距范围心里也要有个底,这些都有助于提高对焦成功率和对焦速度。

  怎么样,原始的滋味不好受吧。

离不开的标头情怀

  不知从何时起,特喜欢用标头来拍照。对比了多款50mm定焦头后,以极大的风险入手了这枚Samyang 50mm,光圈为T1.5。之所以说有风险不过是因为没有自动对焦,失去新鲜感或许就压箱底了,好端端的玩什么手动,只能用情怀来解释了~。这是一枚用于电影拍摄的镜头,其结构和拍照的F1.4版的没多大区别,只不过光圈是无声调节的,详细资料可以看这里

  我一直觉得拍照应该是电影的一个分支,在一个连续的镜头中抽出一个画面。所以特地挑了这么一个镜头来折腾下。由于这枚镜头是全手动头,也没有镜头识别芯片,结构上非常简单,故无法使用机身的合焦提示,这就比较考眼力了。为此特意更换了6D的对焦屏,自带的是Eg-A II型,属于标准精度磨砂对焦屏,更换为超精度磨砂的Eg-S型,虽说裂像才是最佳选择,可惜会让6D的测光系统失效,故只稍微升级一点点,记得要在菜单中选新的对焦屏,不然测光不准。Eg-S会让取景器亮度降低不少,所以只适合大光圈镜头。室内试拍了一下,合焦还是不太理想,但效果比之前的Eg-A II好多了,虚实分明,可能是我个人近视眼缘故~~。只能拍完多检查下,但如果用LiveView取景就非常完美了。变焦环光圈阻尼非常合手,顺滑准确。过些天到户外再试试。

IMG_7433