2012年7月14日星期六

Draw 9-patch的用法——入门级教学

Draw 9-patch是一个在android开发中非常好用的图像处理工具,它的想法很简单,将一张图片用四条线分成九个格子,就可以简单地控制它的大小和覆盖内容的位置。

这里有个android官方版的教程,写得简单明了,不过有些细节不够清楚。所以这里我把我的使用方法记下来。

1.在文件夹中打开android-sdks -> tools,找到文件夹中的一个叫做draw9patch的shell脚本文件,点击运行它。

2.你会发现这个程序的界面实在太简单了,所有的菜单里面的选项只有:打开一个9patch类型的图像,保存一个9patch类型的图像,退出。那么,要创建新的图像,你只能把你待处理的图片拖曳到这个程序的窗口里去。

3.为了方便操作,把下面的三个选项里“是否显示xxx”都给勾上,调整zoom到一个合适的视角。结果如下:

4.下面开始画线。在你拖进去的图片的边缘处,你会发现一些灰白相间的小格子,这就是画线的地方,鼠标单击就可以画黑线了。注意,这时候最好放大很多倍,可以看得比较清楚,细节如下:

5.按照步骤4在四周分别画上四条黑线,这样就把图片分成九份了。就是下图这个样子:


6.点击File -> Save 9-patch,然后就可以把这个图像保存成名为aaa.9.png的格式了。

7.将这个图像放在你的App project的res -> drawable的文件夹里,注意,在xml的文件中引用这个图像时id应为drawable/aaa,而不是aaa.9,所以,drawable文件夹里也不可以同时放aaa.9.png 和 aaa.png!

8.完成上述步骤后,你就可以把这个图像设为某个模块的背景,这个模块的内容就会显示在九部份中正中的那一个部分中了(如上图灰色部分)~

有趣得很吧~

Hack test Level 4-6 傻瓜的继续

刚过了前三关,再写写接下来三关,依然是基本知识。

Level 4:
1.如果继续按之前的做法,查看源代码,会发现什么也找不到。。。
2.其实呢,直接在浏览器设置里禁掉javascript就行了,以我的chrome为例方法如下:
工具->设置->高级选项->隐私设置->内容设置->JavaScript->不允许任何网站运行JavaScript.
3.设置好了之后再点击这一关中的Click here,就到第五关了,记得到第五关之后再设置回允许javascript哦。

Level 5:
1.查看源代码,找到如下语句:

if (pass=="SAvE-as hELpS a lOt") {
window.location.href="save_as.htm";
i=4;
}else {alert("Try again");
window.location.href="abrae.htm";}
2.都过到这里了,密码是什么就不用我多说了吧。

Level 6:
1.查看源代码,会发现密码其实隐藏在另一个javascript文件里,线索在此:
<SCRIPT SRC="psswd.js" LANGUAGE="JavaScript" type="text/javascript">
2.打开这个js文件,你会发现:

<!--
var pass;
pass=prompt("Password:","");
if (pass=="streetzkornerz") {
window.location="included.htm";
}else 
alert("Try again...");
//-->

3.呵呵,这是躲猫猫呢~

Hack-test Level 1-3 傻瓜攻略

最近发现一个挺好玩的网站,是一个给黑客们挑战通关的游戏,叫做测试黑客

网站说明上写一共有二十关,是测试大家网页技术用的。由衷地再次赞叹一下Geek们的世界是多么有趣,这下有的玩的了,o(∩∩)o...哈哈~

先说一下前三关是怎么过的,可以说是too simple, sometimes naive,如下:

Level 1:
1.鼠标右键,显示网页源代码。
2.Ctrl+F找到password,可以看到这样一行代码:
</font><font size="2" face="Tahoma">Password:</font><form name="a" action="javascript:check()">
3.现在可以看到这个action指向check()这个函数。
4.再次Ctrl+F找到function check(),发现是个判断语句如下:
function check() {
if (document.a.c.value == a)   {
    document.location.href="/"+document.a.c.value+".htm";
}
else  {
   alert ("Try again");

}
5.在这个函数上面找到a的值:
var a="null"; 
6.不用我多说了,这个null就是密码了。

Level 2:
1.解开第一关之后就又立即跳入了输入密码的框框,这个时候是解不了的,随便输个,错误,跳入Level 2的页面。
2.同样在源代码中找到password,这一次是一个prompt了:
pass=prompt("Please enter password!","");
if (pass=="l3l") { window.location.href="./"+pass+".htm";
i=4; }
3.这个太明显了,密码就是l3l,重刷一次Level 2的页面输入密码就可以了。 Level 3:
1.跟前两关步骤差不多,我们可以找到这样几行代码:
function pass()
{
var pw, Eingabe;
pw=window.document.alinkColor;
Eingabe=prompt ("Please enter password");
if (Eingabe==pw)
{
window.location.href=String.fromCharCode(97,98,114,97,101)+".htm";
}
else
{
alert("Try again");
}
}
2.那么关键就是这个
window.document.alinkColor
到底是什么。
3.我们需要打开这个html源码中的
<link rel="stylesheet" title="default" href="default.css" type="text/css">
css文件。
4.点击上面一行中default.css的链接,看见css的源码,我们就找到了这个alinkColor,原来你在这里:
a:link, a:visited, a:active
{
 text-decoration: none;
 color: 000000;
 font-size: 10px;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-weight: plain;
}
5.这样,密码就是黑色的代码#000000咯~

这样,前三关就完了。

2012年7月6日星期五

如何设置多个显示器的相对位置(适用Ubuntu)

X RandR是Ubuntu下一个非常好用的命令,用于一台主机连接的调节多个屏幕。

接好显示器后,首先在命令行里敲入:xrandr -q
就会显示出连接中的显示器,比如我的:

VGA1 connected 1600x900+1366+0 (normal left inverted right x axis y axis) 443mm x 249mm
   1600x900       60.0*+   60.0  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 294mm x 166mm
   1366x768       60.0*+
   1360x768       59.8  
   800x600        60.3  
   640x480        59.9  

根据以上的名称和位置模式等,就可以调整它们了。

先试试关掉其中一个:xrandr --output LVDS1 --off

再把它打开,放在另一个的左边:xrandr --output LVDS1 --auto --left-of VGA1

现在是可以在不同显示器之间自由拖曳窗口,两个显示器的位置是自动的,并不重叠。

如果要调整位置,可以根据上面显示的属性来设置,比如说:

xrandr --output LVDS1 --mode 1366x768 --pos 0x0 --output VGA1 --mode 1600x900 --pos 1200x0

因为第一个显示器的宽度是1366,第二个显示器的位置只向移了1200,现在就有重叠部分了。



2012年6月26日星期二

gnuplot的点线属性、划线、移动图例、标签属性、希腊字母等总结

常用gnuplot画图,一些小功能不用就忘了,过一阵子又翻回来找,实在麻烦,于是有了这个备忘录。

1.画图时设置点和线的属性。
画线:
plot 'xx/xx.dat' us(e) 1:2 ti(tle)"L=40 " w(ith)    l(ine)     l(ine)t(ype)    1    l(ine)c(olor)    7   l(ine)w(idth)    4
画点:
plot 'xx/xx.dat' us(e) 1:2 ti(tle)"L=40 " w(ith)   p(oint)    p(oint)t(ype)    1     p(oint)c(olor)    7    p(oint)w(idth)      4
括号内是全称,只需要敲缩写就可以了。数字代表了属性,详细请见附录中图1.
如果是画点和线,例如:
plot 'xxx/xx.dat' us 1:2 ti"L=40" w lp lt 1 pt 5 lc 7 lw 4
这里没有设置点的颜色和宽度了,默认和线一样——不然多难看。。。

2.划线,本身的划线似乎不太美观啊,可以用没有箭头的箭头——听起来好拗口。
set arrow from 0,0 to 10,0 nohead lt 2 lc 7 lw 1.2
其中0,0和10,0是坐标,nohead就是没有箭头啦,要画箭头就去掉这个,其他的参考1.

3.数据挡住了图例,怎么办?图例换个位置咯。
set key right/left bottom/top
或者设置成具体位置:
set key 10,10

4.设置标签的大小、字体和位置。
y轴的标签,设置罗马字体,大小为35:
set ylabel "y" font " Times-Roman,35"
图中插入标签,位置为2,1:
set label "a=0" at 2,1

5.希腊字母,这个不同于大多数软件使用英文注音,而是用英文单字代替。使用时需要加上{/Symbol },如下:
set ylabel "{/Symbol f}_{{/Symbol x}{/Symbol x}}"
上下标的使用方式倒是很大众。希腊字母与英文字母的转换见附录中图2.

附录:

图1(来源于http://pleione.asu.cas.cz/~nemeth/work/stuff/gnuplot/


图2 (来源于http://t16web.lanl.gov/Kawano/gnuplot/label-e.html


上图比较小,建议点击看大图!

2012年6月15日星期五

怎么知道国外主机空间是否被屏蔽及解决方案

买主机空间之前没有调查是不是被墙了,把做好的站点挂上去了才发现国内上不了,郁闷。。。

先写写经历吧。

1. 挂上网站后被人告知打不开,用国内的代理IP才发现确实被墙了……于是接下来首先确定是不是网站使用的主机的IP的原因。

2. 在System->Administration->Network Tools中选择Ping (Ubuntu下的,Windows下用cmd),Ping网站的域名,就知道IP地址了。

3. 在whois提供的信息里搜这个IP,得知这个IP上存放的为数众多的网站。(可以Ping它们确定一下。)

4. 用不同的代理去踩这些跟自己网站同IP的网站(直接用自己的Ping也可以),如果所有同IP的网站表现一致,恭喜你,这个IP因为host了某些某些人不喜欢的网站,它host的所有网站都被墙了。



然后关于解决这个问题:

1. 最好的方法当然是买独立IP,就不用担心受其他因素的牵连了。常用的买独立IP的地方有GoDaddyIxWebHosting,GoDaddy比较贵但是比较稳定,IxWebHosting很便宜不过不是很好用。

2. 不过如果没有太多预算,又不想浪费之前购买的空间呢,还可以尝试用CDN服务。这是个从你原地址中获取数据,再分配给用户的中介,由于是为了资源优化配置,所以还可以提高网页浏览速度。常用的提供CDN服务的比如CloudFlare,提供免费的服务,而且页面很简洁。再比如WebLuker,可以自己找找,多比较一下。一般提供CDN服务,只需要你注册,提供域名,它会给你分配一个Name Server (NS),你只需要在你的域名提供商的帐户上修改成它给你提供的NS就可以了。

参考文章:http://www.majijun.com/InterestingNetwork/godaddy.html
                    http://www.jsjgz.cn/article/20110222/1218.html

2012年6月10日星期日

Ubuntu下怎么知道自己电脑的硬件规格

试了几个不同的命令,感觉最好用的是:  sudo dmidecode

会分门别类地举出系统各个部分的所有信息。如果想看某一项,可以用

sudo dmidecode -t processor      (CPU核芯)
sudo dmidecode -t memory        (内存)
sudo dmidecode -t cache             (缓存)
sudo dmidecode -t system           (电脑型号、产商)
sudo dmidecode -t slot                 (插卡槽)
sudo dmidecode -t baseboard     (主板)
sudo dmidecode -t connector      (连接设备)
sudo dmidecode -t chassis           (机箱)
sudo dmidecode -t bios                 (BIOS)  

或者用数字表示,例如,查看内存的具体型号,可以用: sudo dmidecode -t 17

其他设备的编号如下:

1System
2Base Board
3Chassis
4Processor
5Memory Controller
6Memory Module
7Cache
8Port Connector
9System Slots
10On Board Devices
11OEM Strings
12System Configuration Options
13BIOS Language
14Group Associations
15System Event Log
16Physical Memory Array
17Memory Device
1832-bit Memory Error
19Memory Array Mapped Address
20Memory Device Mapped Address
21Built-in Pointing Device
22Portable Battery
23System Reset
24Hardware Security
25System Power Controls
26Voltage Probe
27Cooling Device
28Temperature Probe
29Electrical Current Probe
30Out-of-band Remote Access
31Boot Integrity Services
32System Boot
3364-bit Memory Error
34Management Device
35Management Device Component
36Management Device Threshold Data
37Memory Channel
38IPMI Device
39Power Supply
40Additional Information
41Onboard Device

最后的最后,补一个外接硬件的:lsusb