Archive for 五月, 2009

实现了一个SCAR的zotero translator

Posted on 五月 27th, 2009 in Program, RS | No Comments »

SCAR: Science of Cold and Arid Regions 是所里新办的一个期刊,看了几篇文章,打算摘录下来,zotero却不支持,需要自己再写一个转换器(translator),花了一下午的时间,终于搞出来了,暂时不支持搜索功能。
把下面的代码保存到zotero下的translator目录,给个名字,如SCAR.js,然后重新启动一下FIREFOX,应该就可以使用了。

{
"translatorID":"d5770df3-b41a-45cb-bb3a-261948c9af49",
"translatorType":4,
"label":"SCAR",
"creator":"Liangxu Wang<wangliangxu@gmail.com>",
"target":"http://www.scar.ac.cn/hhkxen/ch/reader",
"minVersion":"1.0",
"maxVersion":"",
"priority":100,
"inRepository":true,
"lastUpdated":"2009-5-27 22:33:00"
}

function detectWeb(doc, url) {
var articleRe = /view_abstract.aspx/;
var s = articleRe.exec(url);

if(s) {
return "journalArticle";
} else {
return "multiple";
}

return false;
}

function scrape(doc) {
var nsResolver = null;

var itemType = "journalArticle";
var newItem = new Zotero.Item(itemType);
Zotero.debug(itemType);

// 标题
var title = doc.getElementById('EnTitle').textContent;
Zotero.debug("Title:"+title);
newItem.title = title;

// 附件,网页快照
var snapName = title + " (SCAR)";
Zotero.debug(snapName);
newItem.attachments.push({document:doc, title:snapName, mimeType:"text/html"});
//Zotero.debug(doc);

//关键词
var keys=doc.getElementById('EnKeyWord');
var tags=keys.getElementsByTagName('u');
var i=0;
for(i=0;i<tags.length;i++){
newItem.tags.push(tags[i].textContent);
Zotero.debug("tag:"+tags[i].textContent);
}
//摘要
var abstract=doc.getElementById('EnAbstract');
newItem.abstractNote = Zotero.Utilities.trim(abstract.textContent);
// 出版社
newItem.publicationTitle = 'Sciences in Cold and Arid Regions';
newItem.ISSN='1674-3822';
newItem.url = doc.location.href;
//出版时间
var ref=doc.getElementById('ReferenceText').textContent;
if (ref.match(/,(\d+).+Sciences in Cold and Arid Regions,(\d+)\((\d+)\):(.+)\./))
{
newItem.volume=ref.match(/,(\d+).+Sciences in Cold and Arid Regions,(\d+)\((\d+)\):(.+)\./)[2];
newItem.issue=ref.match(/,(\d+).+Sciences in Cold and Arid Regions,(\d+)\((\d+)\):(.+)\./)[3];
newItem.pages=ref.match(/,(\d+).+Sciences in Cold and Arid Regions,(\d+)\((\d+)\):(.+)\./)[4];
newItem.date=ref.match(/,(\d+).+Sciences in Cold and Arid Regions,(\d+)\((\d+)\):(.+)\./)[1];
}
//作者
if (ref.match(/(.+),\d+\.+/))
{
authors=ref.match(/(.+),\d+\.+/)[1].split(',');
for(i=0;i<authors.length-1;i++) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[i], "author", true));
}
author=authors[authors.length-1].split('and');
for(i=0;i<author.length;i++) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(author[i], "author", true));
}
}
Zotero.debug("finished.");
newItem.complete();
}

function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = null;

if(detectWeb(doc, url) == "multiple") {
Zotero.debug("Enter multiple~");
// TODO: implement the multiple function.
} else {
var urls = [url];
}
Zotero.debug(urls);
// 下面对每条url进行解析
Zotero.Utilities.processDocuments(urls, scrape, function() { Zotero.done(); });
Zotero.wait();
}

也可以直接下载:scar.js

维度:数学漫步[Dimensions: a walk through mathematics]

Posted on 五月 25th, 2009 in Relax | 1 Comment »

这个一个采用了创作共用版权的数学科普电影:维度-数学漫步
官方网站:http://www.dimensions-math.org
影片带中文字幕,格式为MKV,建议使用VLC进行播放。(WINDOWS可以使用kmplayer播放)

花了约2个小时,看了这个CG电影,又重新发现了数学的魅力!
不过,关于纤维族的理论还是没看懂,对四维系统还是有点晕。但是学习了复数的由来及其应用,原来一直不知道。

球极投影应该了影片的各个部分,对作地理的人来说,也可以更好的理解投影。

geonetwork在ipv6环境下的问题

Posted on 五月 15th, 2009 in Computer, westdc | No Comments »

geonetwork在ipv6会遇到一些奇怪的问题,无法搜索,无法添加新的元数据,无法上传缩略图。若在客户端禁掉IPV6,就可以解决这些问题。但这不是解决问题的办法。

因此,临时的解决办法就是不让geonetwork判断IP地址(其判断是否局域网,而这个功能对我们来说,没有意义)。
wlx@wlxpc:~/Projects/geonetwork-2.2.0/src/org/fao/geonet/kernel$ svn diff
Index: AccessManager.java
===================================================================
--- AccessManager.java (版本 3883)
+++ AccessManager.java (工作副本)
@@ -322,11 +322,13 @@
String network = settMan.getValue("system/intranet/network");
String netmask = settMan.getValue("system/intranet/netmask");

- long lIntranetNet = getAddress(network);
- long lIntranetMask = getAddress(netmask);
- long lAddress = getAddress(ip);
+ // to avoid ipv6 problem
+ //long lIntranetNet = getAddress(network);
+ //long lIntranetMask = getAddress(netmask);
+ //long lAddress = getAddress(ip);

- return (lAddress & lIntranetMask) == lIntranetNet ;
+ //return (lAddress & lIntranetMask) == lIntranetNet ;
+ return false;
}

//--------------------------------------------------------------------------

也向geonetwork官方汇报了这个问题,看看官方要怎么解决。