Googler

开源,自由,平等,共享,包容,沟通

2009年3月18日星期三

重力大师 Gravity Master

 

 

2009年2月19日星期四

图解网络史

 

 

2009年1月21日星期三

北京时间 2009 年 01 月 21 日,美国第 44 届总统奥巴马宣布就职

 
美国东部时间中午 11:19,为谷歌地球工作的 GeoEye-1 卫星准时飞过美国华盛顿特区的国会山上空,拍摄下第一张反映奥巴马就职典礼的卫星图片。

这张照片将会同步到 Google Earth 和 Google Maps 上。

这张照片拍摄自 423 英里高的上空,最大显示精度为 0.5 米。



点击查看大图。
 

2008年12月29日星期一

mimeTeX 快速开始

 
(针对 mimeTeX 版本 1.70)





点击

  完整的 mimeTeX 手册
  下载 mimeTeX
  更多范例...

公告

  如果 LaTeX 已经安装在你的服务器上,请参阅 mathTeX,mimeTeX 是它的继承者。
  mathTeX 是基于真正的 LaTeX,并且比 mimeTeX 渲染更高清的图像。
  如果 LaTeX 在你的服务器上不可用,请继续使用 mimeTex。

目录

  (a) 介绍
  (b) 快速开始
  (c) 范例
  (d) 快速建立
  (e) GPL 许可

相关页面

  LaTeX 指南
  mimeTeX 修改日志
  mimeTeX 手册

快速开始摘要

  安装

    下载 mimetex.zip 然后输入 unzip mimetex.zip 和 cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi。
    现在只需要 mv mimetex.cgi 到你的 cgi-bin/ 目录,设置必要的权限,即可。

  用法

    想要查看图像:



    只需要写入:

<img src="/cgi-bin/mimetex.cgi?x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}">

(a) 介绍

  mimeTeX 基于 GPL 许可协议,让你很容易地嵌入 LaTeX 数学公式到你的页面。
  它解析 LaTeX 数学表达式,并立即发送出相应的 gif 图像,这要优于 TeX dvi。
  并且 mimeTeX 是一个完全分离出来的小程序,它不会以任何方式使用 TeX 及其字体。
  它仅仅是一个 cgi,你可以把它放在 cgi-bin/ 目录,并不需要其它的依靠。
  因此,mimeTeX 非常易于安装。
  并且使用同样也很简单。
  只需要放置一个 HTML <img /> 标签在你想要看见相应 LaTeX 表达式的文档中的位置上。
  例如

<img src="../cgi-bin/mimetex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt" alt="" border=0 align=middle>

会飞一样的立即产生相应的 gif 图像,在你放置 <img /> 标签的位置上显示



图像。
  mimeTeX 并不需要中间件 dvi 到 gif 的转换,当然也不会针对每个表达式创建分开的 gif 图像。
  但是如果你需要缓存图像,请查阅 mimeTeX 的 -DCACHEPATH=\"path/\" 编译选项。

mimeTeX 插件

  这里没有固定的需要像上面插图那样去重复书写笨重的 <img /> 标签。
  你可以写上自定义的标签,或者为 mimeTeX 写上封装了的脚本来简单地进行标记。

  例如,下面的 JavaScript 代码片段(基于 mathtran 的 mathtran_img.js)让你只需要键入 <img alt="mimetex:c=\sqrt{a^2+b^2}" />,就能在你想要看到的地方显示



图片,代码如下:

<script type="text/javascript">
<!--
// Create a namespace to hold variables and functions
mimetex = new Object();
// Change this to use your server
mimetex.imgSrc = "http://www.yourdomain.com/cgi-bin/mimetex.cgi?";
// Transform the whole document: add src to each img with
// alt text starting with "mimetex:", unless img already has a src.
mimetex.init = function () {
if (! document.getElementsByTagName) return;
var objs = document.getElementsByTagName("img");
var len = objs.length;
for (i=0; i<len; i++) {
var img = objs[i];
if (img.alt.substring(0,8) == 'mimetex:')
if (!img.src) {
var tex_src = img.alt.substring(8);
img.src = mimetex.imgSrc + encodeURIComponent(tex_src);
// Append TEX to the class of the IMG.
img.className +=' tex'; }
}
mimetex.hideElementById("mimetex.error"); }
// Utility function
mimetex.hideElementById = function (id) {
var obj = document.getElementById(id);
if (obj) obj.style.display = 'none'; }
// resolve a cross-browser issue (see CBS events)
mimetex.addEvent = function (obj, evType, fn, useCapture) {
if (obj.addEventListener) { //For Mozilla.
obj.addEventListener(evType, fn, useCapture);
return true; }
else if (obj.attachEvent) { //For Internet Explorer.
var r = obj.attachEvent("on"+evType, fn);
return r; }
}
// Initialize after entire document is loaded
mimetex.addEvent(window, 'load', mimetex.init, false);
-->
</script>

  告示牌、Wiki 等,也能够通过短小的脚本合成 mimeTeX 图像。
  例如,如果你使用 phpBB2,Jameson 贡献了下面典型的单行模板,让你键入 [tex]c=\sqrt{a^2+b^2}[/tex] 以获得同上面插图一样的



图像,代码如下:

#--------[open]-----------------------------------------------------
/includes/bbcode.php
#--------[find]-----------------------------------------------------
// Remove our padding from the string..
#--------[before, add]----------------------------------------------
$text = preg_replace('/\[tex\](.*?)\[\/tex\]/ie', "'<img src=\"/cgi-bin/mimetex.cgi?'.rawurlencode('$1').'\" align=\"middle\" />'", $text);

  如果你使用 phpBB3,模式甚至是不需要的。
  仅仅从管理员控制面板上点击相应的按钮,然后添加自定义的 BBCode 代码 [tex]{TEXT}[/tex],这些代码将被 HTML 替换为 <img src="/cgi-bin/mimetex.cgi?{TEXT}" align=middle />。

  类似的,PmWiki 也有 mimeTeX 插件,它让你只输入 {$f(x)=\int_{\infty}^xe^{-t^2}dt$} 来获得与上面相同的图像。
  其它一些包也有类似的 mimeTeX 插件,包括:

PackagePlugin
PmWikimimeTeX plugin
WikimediamimeTeX alternative
PunBBmimeTeX plugin
Movable TypemimeTeX plugin
WordPressmimeTeX plugin
JoomlamimeTeX plugin
MambomimeTeX bot

  注意

    如果你为 mimeTeX 编写属于自己的插件,请在编写 PHP 代码时不要使用 system() 函数,或其它任何外壳转码机制,只需要缓存图像即可。
    使用 mimeTeX 的 -DCACHEPATH=\"path/\" 编译选项来替代。
    system() 函数会提高安全问题,无论是真的还是大意使用,或者是因为系统管理员的意识。
    总之,我已经收到了很多电子邮件,由于系统管理员的安全意识,不必要的 system() 函数调用被禁止了,所以人们无法使用 mimeTeX。
    若 mimeTeX 按照上面的插图使用,自身只会有很小的风险,但是你自己需要对围绕它编写的插件或封装的脚本负责。

竖直对齐

  一个像这样的



图像看起来没有同样的



图像好,那是与它周围的文字和垂直对齐有关。
  与一些 HTTP 头字段一起,mimeTeX 也发送一个特别的 Vertical-Align:-nn 头字段,其中 -nn 是像素值(通常是如图所示的负值),它是 <img /> 标签中 style="Vertical-Align:-nn px" 属性所必须的,被用来渲染表达式。

  但是 mimeTeX 特殊的 Vertical-Align: 头字段是不被你的浏览器承认的,浏览器会忽略它。
  你不得不获取头字段,解释它,并且写出相应的 <img /> 标签。
  要完成这一切,可能的方式是使用脚本语言。
  本页面使用如下相当幼稚的 PHP 代码:

<?php
$mimetexurl = "http://www.yourdomain.com/cgi-bin/mimetex.cgi?";
function verticalalign( $expression ) {
global $mimetexurl;
// note: curl_init() stops at the first whitespace char in $url argument
$expression = ereg_replace(" ","~",$expression); // so remove whitespace
$url = $mimetexurl . $expression;
$valign = "0";
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HEADER, true );
$gif = curl_exec( $ch );
$errno = curl_errno( $ch );
curl_close( $ch );
if ( $errno == 0 ) {
$fields = explode("Vertical-Align:",$gif);
$vfield = trim($fields[1]);
$fldlen = strspn($vfield,"+-0123456789");
$valign = substr($vfield,0,$fldlen); }
return $valign;
}
function mimetextag( $expression ) {
global $mimetexurl;
$valign = verticalalign($expression);
$url = $mimetexurl . $expression;
echo ' <img src="',$url,'" ';
echo ' style="Vertical-Align:',$valign,'px" ';
echo ' alt="" border=0>', "\n";
}
?>

  现在,你可以在你想要看到图像



的地方写上代码

<?php mimetextag('\frac12\left(a^2+b^2\right)'); ?>

并正确地对齐。
  该代码两次调用 mimeTeX 来渲染表达式,一次是获取 Vertical-Align: 头字段来建立 <img /> 标签,接着再次渲染该标签。
  如果你是一个非常好的 PHP 程序员并且写了更好的代码,请将代码副本发送到我的电子邮件。

  如果你使用 mimeTeX 的 -DCACHEPATH=\"path/\" 编译选项,请以 % 开头作为 path/ 的前缀,并写出 -DCACHEPATH=\"%path/\" 来代替。
  开头的 % 将不会成为你缓存目录 path/ 的一部分,但是它会给 mimeTeX 发送信号,与每张图像一起缓存头字段。
  否则,Vertical-Align: 信息将会丢失,并且试图对齐缓冲的图像会失败。

不同的解决方案




原版英文:http://www.forkosh.dreamhost.com/source_mimetex.html
 

2008年12月24日星期三

Tablecloth 中文文档

 
  Tablecloth 是轻量的,它使用简单的方式将样式和行为添加到你的 HTML 表格元素中。
  在你的 HTML 页面中简单地添加两行代码,你就可以得到样式化和可活动的表格,你的浏览用户将会喜欢它。

概览

  表格通常被没有标准概念的开发者所滥用,并且在表格布局编码者和标准化之间已经形成了相关理论的课题。
  HTML 中表格的重要性是它们所扮演的角色 - 显示列表数据。
  Tablecloth 是只专门让表格的用法更适当的。
  利用基于表格的布局将引起更多头痛的问题,因为它会自己布局。
  在使用 Tablecloth 之前,请确认你没有使用表格在其它任何地方,除了列表数据。

特征

  Tablecloth 用来显示格式正确的表格,并将样式和行为应用在其上。
  它将搜索 HTML 源代码中的表格元素,并处理找到的每一个表格。
  对了,这里不需要硬编码类名和 IDs,Tablecloth 将会自动添加。
  然而,如果你愿意,你可以应用你自己的类名。

  01. 添加偶数或奇数类名到行。
  02. 为鼠标经过和移出状态添加经过和移出类名。
  03. 如果设置为 True,Tablecloth 将高亮显示行或列(或者两者都显示)。
  04. 如果设置为 True,Tablecloth 在鼠标点击时将添加选择状态;基于偏好选择行或列(或者两者都选择);不选择只需要在页面任何地方点击一下即可。
  05. Tablecloth 为你的升级留了余地;它可简单的进行编辑,在你点击表格单元格时,你可以使用你自己的代码。

用法

  使用 Tablecloth 你需要格式正确的表格。
  你的表格代码可能会像这样:

<table cellspacing="0" cellpadding="0">
<tr>
<th>Title</th>
<th>Title</th>
<th>Title</th>
<th>Title</th>
</tr>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
</table>

  下载 .zip 文件,解压并将名叫“tablecloth”的文件夹放在你的网站根目录下。
  添加下面两行代码到你的 <head /> 标签内:

<link href="tablecloth/tablecloth.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="tablecloth/tablecloth.js"></script>

修改

  外观修改在 CSS 文件 tablecloth.css 中进行。
  Tablecloth 允许你为表格元素(th 和 td)设计偶数或奇数行、经过、移出、点击和选择状态的样式。
  分别地,你可以选择是否高亮显示行、列或全部高亮,并且如果你可以让元素在点击时被选中。
  完成这些只需要修改 3 个变量(highlightRows、highlightCols、selectable),它们在 tablecloth.js 文件中可以被找到。
  设置值为 true 或 false。

官方网站:http://cssglobe.com/lab/tablecloth/