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

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/
 

2008年12月21日星期日

公元 2008 年 05 月 12 日,中国四川汶川 8.0 地震

 
余震地点示意图(2008 年 05 月 25 日)


台湾专家分析的四川强震成因


四川汶川 5.12 特大地震


空中看地震后的汶川县映秀镇

 

2008年12月19日星期五

Iconize Textlinks with CSS 0.5 中文文档

 
用 CSS 展示超链接提示

如果链接带我到外链、打开窗口或者链接到文件(就像到另一个 HTML 页面),我喜欢使用小的靠近链接的图标来显示。
这里给出了怎样实现它的一种方法,并且支持 IE7、Firefox 和 Safari。

下载 ZIP

图像

首先,找到一些好看的 GIF 小图标(或更好的,或你自己创建它们),用来显示。
最好它们全部都是相同的大小(下面的都是 14 x 16 像素的),并且背景都是透明的。

链接到弹出窗口
链接到外部站点
表示一个邮件链接
链接到 PDF 文件
链接到 Word 文件
链接到 Excel 文件

范例 1 - 链接到 PDF 文件 - HTML

就像这个例子,我们开始链接到 PDF 文件。
看一看下面的 HTML 代码:

<a href="files/holidays.pdf">View Holidays</a>

链接产生的效果如下:

注意,这里没有“类”“ID”等东西辨别该链接来自哪里。
我们唯一知道它引导我们到 PDF 文件的原因是在 href 属性值最后几位的“.pdf”。

使用一些支持 IE7、Firefox 和 Safari 的 CSS 选择器,你可以应用样式声明到以标签属性为基础的值中。

范例 1 - 链接到 PDF 文件 - CSS

如果我们应用样式到上面的 HTML 代码:

a[href $='.pdf'] {
padding-right: 18px;
background: transparent url(icon_pdf.gif) no-repeat center right;
}

我们将得到像下面这样的:

它是怎么工作的?

上面的 CSS 规则将寻找所有 href 属性中以“.pdf”结束的 a 标签,然后给予该链接右侧一些额外的填充以让出足够的空间,来将小的 PDF 图标固定为背景图像。
美元符号表示结束。
因为 HTML 的 href 有一个“files/holidays.pdf”值,它将匹配上面的 CSS 声明,一个小的 PDF 图标将被显示在靠近链接的位置上。

范例 2 - mailto: 链接

足够简单。
现在,什么是 mailto: 链接呢?
看看下面的 HTML 代码:

<a href="mailto:billg@microsoft.com">Contact Me</a>

并应用下面的样式:

a[href ^="mailto:"] {
padding-right: 20px;
background: transparent url(icon_mail.gif) no-repeat center right;
}

注意规则中的脱字符号(^)。
脱字符号和等号表示“以什么开始”。
规则将寻找所有 href 属性以“mailto:”开始的 a 标签,然后给予链接右侧一些额外的填充,用来显示小的邮件图标的背景图像。

下面是显示的结果:

范例 3 - 链接到弹出窗口

开发者以一个非常标准的 Web 流行行为来区分标记 - 在链接中使用一些像“popup”的值来替代“类”或“ref”属性。
就像:

<a class="popup" href="help.html">Help Page</a>

使用同样的“类”或“ref”来显示我们的小图标。

a[class ="popup"] {
padding-right: 18px;
background: transparent url(icon_popup.gif) no-repeat center right;
}

规则将寻找所有 class 属性被设置为“popup”的 a 标签,然后给予链接右侧一些额外的填充,来显示弹出图标的背景图像。

寻找多个值中的一个

但是,如果我们的 class 或 ref 属性中有多个值呢?
链接如下 HTML 代码:

<a class="popup specialstyle" href="help.html">View Help</a>

现在,class 属性不等于“popup”,而被替代为“popup specialstyle”。
因此,规则将无法工作。
它看起来好像被空格所分隔。
你可以使用如下:

a[class ~="popup"] {
padding-right: 18px;
background: transparent url(icon_popup.gif) no-repeat center right;
}

波浪线(在大多数键盘的左上角被找到,需要 shift 键)和等号一起表示“寻找以空格分隔单词组出来的该单词”。
它将完美地尝试去匹配多个值中的一个。

摘要

这些选择器都不是新的,并且在这里提及的内容远远不够全面。
在 IE7 中有什么新的?因此我挑选了一些能在 IE7 和其它流行的浏览器中能够工作的 CSS 选择器,并且我知道它们在上面的效果中都是有用的。
如果它能帮助你查阅代码和使用一些图片进行显示,你可以 下载 ZIP(它包含了一些样例)。

原版英文:http://www.askthecssguy.com/2006/12/showing_hyperlink_cues_with_cs_1.html
 

SyntaxHighlighter 1.5.1 中文文档

 
概览
SyntaxHighlighter 概况

介绍

SyntaxHighlighter 背后的想法是,在不依赖任何服务器端脚本的情况下,允许在页面上插入着色的代码片段。

它为谁设计?

主要的目的是在于博客。
然而,我曾经看见一些源码站点使用它,主要用来显示源代码。

它不为谁设计?

SyntaxHighlighter 不是为那些寻找有能力编辑高亮代码的。
SyntaxHighlighter 不允许你编辑源代码,它现在不允许,将来也不打算允许。

性能

SyntaxHighlighter 使用正则表达式解析文本。
它并不是非常快,实际上,它是很缓慢的。
如果你尝试高亮显示几行代码,它将不会出现问题。
尝试高亮显示 10KB 左右的文本将会失败,因为 JavaScript 会执行一个漫长的时间。

HighlightAll 函数
dp.SyntaxHighlighter.HighlightAll()。

dp.SyntaxHighlighter.HighlightAll()

这是一个全局性的函数,它将找到网页上的所有代码块并转换为高亮显示的代码块。

参数

function dp.SyntaxHighlighter.HighlightAll(name, [showGutter], [showControls], [collapseAll], [firstLine], [showColumns])

name必须<pre /> 和 <textarea /> 元素使用的名字
showGutter可选打开或关闭全部已处理代码块的边沟
showControls可选打开或关闭全部已处理 <pre > 元素的控制
collapseAll可选打开或关闭全部已处理 <pre > 元素的折叠;如果 showControls 参数为 false,该值将被忽略
firstLine可选允许从线数开始的地方指定第一行;如果你想举例说明代码块位于相关的文件,这是很有用的
showColumns可选在第一行显示行列

任何值传送给 HighlightAll 调用将会覆写相应的配置选项。

剪贴板
复制到剪贴板。

复制到剪贴板

版本 1.5 建立了“复制到剪贴板”功能,可以用于所有支持 Flash 的浏览器。
它使用了 1x1 Flash 视频来复制代码到用户的剪贴板。

启用该功能,你必须设置 ClipboardSwf 变量为本地的 clipboard.swf 文件。
这些操作必须在调用 HighlightAll 函数之前完成。

<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>

编程语言
支持的编程语言列表。

支持的编程语言

这里是一个支持的编程语言及它们的别名的列表。

编程语言别名
C++cpp, c, c++
C#c#, c-sharp, csharp
CSScss
Delphidelphi, pascal
Javajava
Java Scriptjs, jscript, javascript
PHPphp
Pythonpy, python
Rubyrb, ruby, rails, ror
SQLsql
VBvb, vb.net
XML/HTMLxml, html, xhtml, xslt

查阅用法页面以了解怎样使用别名。

特征
特征摘要

SyntaxHighlighter 特征

  01. 100% 客户端脚本,与服务器无关
  02. 多种编程语言的支持
  03. 简单使用和部署,只需要复制文件和连接它们到你的模板
  04. 多浏览器支持
  05. 非常轻量,压缩过的核心库只有 11KB,可添加你需要的任何 Brushes

Brushes
Brushes。

它们是什么?

Brushes,是我编制的为自己的编程语言调用高亮显示脚本的条款。
SyntaxHighlighter 使用模块化的方法,由核心库 shCore.js 和许多像 shBrushXml.js、shBrushCss.js 等的组成。

它们是怎样工作的?

每个 Brush 描述了一套特殊语言的规则。
规则基于关键字、正则表达式和 CSS 样式。
大多数语言都是用同样的语法并且以同样的方式进行解析,只要你提供一些基本的规则,如解析字符串、注释等。

你可以自定义编写一个完整的 Brush 并实现你自己的解析。
例如 shBrushXml.js。
它提供了对 XML/HTML 代码的格式化,这不同于 C# 或 Java 的样式。

用法
怎样使用 SyntaxHighlighter。

放置代码

放置你的代码到页面上并被包围在 <pre /> 标签中。
设置 name 属性为 code,而 class 属性设置为你希望使用的编程语言的别名。

<pre name="code" class="c-sharp">
... 一些代码 ...
</pre>

注意: 一个重要的事情要特别注意是开头的三角括号 <。它必须全部被替换为与 HTML 等价的 &lt;。操作失败的话,它不会打破页面,而会打破源代码的显示。

一个替代 <pre /> 的是使用 <textarea /> 标签。
它不会出现上面 < 字符的问题。
最主要的问题是它看起来效果没有 <pre /> 标签好,因为 JavaScript 一些时候不能工作(例如在 RSS 聚合中)。

<textarea name="code" class="c#" cols="60" rows="10">
... 一些代码 ...
</textarea>

扩展配置

这里给出一种方法来传递一些配置选项给代码块。
它由冒号分隔参数。

<pre name="code" class="html:collapse">
... 一些代码 ...
</pre>

让它工作起来

最后,要让所有东西适当的渲染在页面上,你必须给该页面添加 JavaScript 代码。

<link type="text/css" rel="stylesheet" href="css/SyntaxHighlighter.css"></link>
<script language="javascript" src="js/shCore.js"></script>
<script language="javascript" src="js/shBrushCSharp.js"></script>
<script language="javascript" src="js/shBrushXml.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>

对于最理想的效果,放置这些代码在你页面的最后。
检查 HighlightAll 函数以获得更多关于功能方面的详情。

<pre /> 和 <textarea />
关于 <pre /> 和 <textarea /> 的技术详情。

问题描述

使用 <pre /> 最基本的问题是无法向里面简单地复制和粘贴代码。
特别是把这些应用在 XML/HTML。

<pre /> 的问题是,浏览器会解析它里面的 HTML 代码,而在 <textarea /> 中的代码却不会被解析。
例如:

<pre><b>Hello</b></pre>

将会渲染 Hello,就像:

<textarea><b>Hello</b></textarea>

将会渲染:

<b>Hello</b>

如果你尝试使用 innerHTML 属性从 <pre /> 中取得 HTML,它将不会像你最初提供的 HTML 文件。
然而使用 <textarea />,属性值将返回你原先提供的内容。

结论

它让我想到了最后一点。
使用 <textarea />,你可以复制和粘贴源代码而不需要任何装饰修改。

使用 <pre />,你必须确认你的源代码不会被认为是 HTML,意思是你必须替换每个开头的三角括号 < 为 HTML 编码版的 &lt;。这足够让 <pre /> 标签良好工作。

Blogger 模式
Blogger 模式

Blogger 有一个恶劣的习惯,它会替换所有新行为 <br /> 标签,这让它不能提交代码为片段。

按照“Blogger 模式”准备的 1.5.1 版本环境,启用时需要在调用 HighlightAll() 函数之前调用 BloggerMode() 函数,如下面的例子:

dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');

备选方案
SyntaxHighlighter 备选方案。

客户端

  http://dean.edwards.name/my/examples/star-light/

服务器端

  http://qbnz.com/highlighter

痕迹
SyntaxHighlighter 在 Web 上的使用痕迹。

  Yahoo Developer Network
  Aptana

配置
代码块的配置选项。

配置选项

这些选项允许你单独设置文本选项。

nogutter将不显示边沟
nocontrols将不在顶部显示控制按钮
collapse将去除默认的块
firstline[value]将以 value 作为开始行计数,默认 value 是1
showcolumns将在首行显示行列数

这些选项将一起通过别名传递,并以冒号(:)为分隔符。

<pre name="code" class="html:nocontrols:firstline[10]">
... 一些代码 ...
</pre>


官方网站:http://code.google.com/p/syntaxhighlighter/
 

2008年12月15日星期一

Claroline 1.8.x 安装说明

 
  在你首次访问 Claroline 1.8.x 时(http://localhost/claroline1811/),将被提示一下信息:

WARNING ! SYSTEM UNABLE TO FIND CONFIGURATION SETTINGS.
If it is your first connection to your Claroline platform, read thoroughly INSTALL.txt file provided in the Claroline package.

警告!系统不能找到配置设置。
如果这是你第一次连接你的 Claroline 平台,请完全地阅读 Claroline 提供的 INSTALL.txt 文件。

  下面是对该文件的中文翻译。

Claroline 1.8

  感谢你下载 Claroline 1.8。
  该文本将通过 Claroline 1.8 基本的安装和操作来引导你。
  请确保在继续安装之前,你已经完全地阅读过。

目录

  1. 必要条件
  2. 安装步骤
    2.1 安装新的 Claroline
    2.2 在先前的 Claroline 版本上进行更新
  3. 发现并修复故障
  4. 管理

1. 必要条件

  a. 安装 Claroline 1.8 在计算机上,无论是本地还是远程,你的机器都需要以下操作系统之一:

      Linux / BSD / Unix (*)
      Windows (9x, Me, NT4, 2000, XP, Vista)
      MacOS X

    (*) 我们在 Debian、Ubuntu 和 Mandrake 发行版上彻底地进行了 Claroline 的测试,但其它 Linux 发行版也应该能够工作。
      我们已经收到用户在 Red Hat 和 Suse 上工作的明确的反馈信息。
      在遇到其它 Linux 发行版上工作的任何问题时,请不要犹豫,直接告知我们。

  b. 一个 Web 服务器(我们推荐 Apache,但其它的同样也能工作)。

  c. PHP 脚本语言(版本 4.3.10 及以上),配置一下模块:mysql, zlib, preg。
    大多数的 PHP4 编译发行版已经提供了以上模块。
    无论如何,Claroline 安装脚本将检查它们的存在。

    如果 PHP 设置没有配备:safe_mode = off,有些用户将会遇到问题。

  d. MySQL 数据库服务器(版本 4.0 及以上),外加通过帐号和密码登录来允许管理和创建至少一个数据库。

    Claroline 能够被安装于两种模式:“单一数据库”和“多数据库”。
    在“多数据库”模式中,Claroline 将为每个已经创建的课程创建一个新的数据库。
    该模式有时更适合于管理有着庞大数量的课程站点的平台。
    但是它意味着数据库账户将允许使用 Claroline 来创建和管理多个数据库。
    Claroline 默认设置将安装在“单一数据库”主机上。
    如果你想使用 Claroline 在“多数据库”模式,你必须在安装时特意地选择该项。

      警告:如果你使用“单一数据库”安装选项,它将被推荐只使用名为 Claroline 的数据库。
         如果你对其它应用程序共享了该数据库,在两个数据库的表名之间将发生干扰,会导致严重的问题。

  e. Claroline 被移动到或被解压到的 Web 目录需要 Web 写访问权限。
    在本地的 Windows 机器上,这不是个问题。
    远程地,你需要被允许通过 FTP、Telnet 或其它任何方式使用 CHMOD 命令(更改文件属性)。

  f. 邮件传输代理(MTA),这不是完全必须的。
    如果你没有提供 MTA,Claroline 一些功能将被悄悄地保留下来。
    大多数 Linux 发行版提供了 MTA(Sendmail, Qmail, PostFix...)。
    在 Windows 机器上,默认没有提供 MTA 功能。
    你可以修改 php.ini 文件来重定向邮件到一个 MTA 可用的其它机器上,或者安装 MTA 在 Claroline 服务器上。
    Windows 上有一些免费使用的 MTA(Mercury, Blat, Netmail95, WMailto, Hamster...)。

2. 安装步骤

  2.1 安装新的 Claroline

  a. 下载“claroline1811.tar.gz”。
    Windows:下载“claroline1811.zip”。

  b. 打开 Shell,来到下载目录并输入:tar -zxvf claroline1811.tar.gz。
    Windows:解压“claroline1811.zip”。

  c. 无论如何,通过 FTP 或移动将“index.php”文件和“claroline”目录放到你 Web 服务器的站点上(无论是 Web 根目录还是子目录)。
    “index.php”应该保留它原来的位置,即在“claroline”目录外面。

    Windows:如果你在本地使用 easyphp(),只需要拖放“index.php”文件和“claroline”目录到 C:\Program Files\easyphp\www\ 目录下即可。

  d. 该目录对于 everyone 要可读、可写和可运行:chmod ugo+w claroline1811/。

  e. 打开 Web 浏览器并来到:http://www.mydomain.org/mysite/mydir/claroline/install/。
    Windows:本地的 easyphp,打开:http://localhost/claroline/install/(不要忘记最后的 /)。

  f. 跟着下面的指导:

    Windows:如果你使用 easyphp 进行工作,MySQL 的帐号和密码应该保留为空。

  2.2 在先前的 Claroline 版本上进行更新

    更新工作只能从 Claroline 1.5.x、Claroline 1.6.x、Claroline 1.7.x 进行。
    更老的 Claroline 版本更新到 Claroline 1.8.x 之前,首先需要更新到 Claroline 1.5.x。

    在更新操作前,我们郑重推荐你完整备份先前的 Claroline 目录和数据库。
    如果你不确定怎样完成该操作,请询问你的主机提供商以获得建议。

  a. 下载“claroline1811.tar.gz”。
    Windows:下载“claroline1811.zip”。

  b. 打开 Shell,来到下载目录并输入:tar -zxvf claroline1811.tar.gz。
    Windows:解压“claroline1811.zip”。

  c. 使用新的“index.php”文件和“claroline”目录替换先前的内容。

      警告:在安装新的 Claroline 之前不要删除先前的目录。
         你将失去你先前的配置文件(例如“claro_main.conf.php”)。
         使用“copy”命令简单地将新的内容替换旧的目录。
         那样的话,新版本的文件将覆盖旧文件,并且完整保留其它的。

  d. 打开 Web 浏览器并来到:http://www.mydomain.org/mysite/mydir/claroline/admin/upgrade/upgrade.php。
    Windows:本地的 easyphp,打开:http://localhost/mydir/claroline/admin/upgrade/upgrade.php。

  e. 跟着下面的指导。

3. 发现并修复故障

  假设 Web 安装无法进行:

  如果必要,来到 http://www.claroline.net/ 并在支持论坛上提出问题。
  无论如何,如果这里已经对你的问题进行了解答,请查阅先前的消息。

4. 管理

  访问 Claroline 管理章节,打开 Web 浏览器并来到:http://www.mydomain.org/mysite/mydir/claroline/admin/。

欧洲,比利时,布鲁塞尔 2008 年 07 月 23 日

官方网站:http://www.claroline.net/
 

2008年12月6日星期六

NO.002 - 程序员.二进制运算规则

 
运算规则
加法(逢二进一)0 + 0 = 10 + 1 = 11 + 0 = 11 + 1 = 0(有进位)
减法(借一当二)0 - 0 = 00 - 1 = 1(有借位)1 - 0 = 11 - 1 = 0
乘法0 * 0 = 00 * 1 = 01 * 0 = 01 * 1 = 0
除法0 / 0 = 00 / 1 = 01 / 0 = 0(无意义)1 / 1 = 1

 

NO.001 - 程序员.数制及转换

 
一、基本概念

  01. 编码

  采用少量的基本符号,选用一定的组合原则,以表示大量复杂多样的信息。
  基本符号的种类和这些符号的组合规则是一切信息编码的两大要素。
 
  02. 进位记数制

  如果只用 r 个基本符号表示数值,则称为 r 进制(radix-r number system);r 称为该数制的基数(radix)。

    特点

    每一种数制都有固定的符号集;
    每一种数制都是用位置表示法(即处于不同位置的数符所代表的值不同,与它所在位置的权值有关)。

  03. 权

  各种进位记数制中的权值就是基数的某次幂。

  对任何一种进位记数制表示的数都可以写成按权展开的多项式之和。

  04. 进位数制公式

    Nr =

二、相关图表

  01. 计算机常用进位数制的表示

进位制二进制八进制十进制十六进制
规则逢二进一逢八进一逢十进一逢十六进一
基数r=2r=8r=10r=16
数符0,10,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
2i8i10i16i
表示符BODH

  二进制数中的一个 0 或 1 称为 1 比特(bit)。

  02. 二进制与八进制的对应关系

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

  03. 二进制与十六进制的对应关系

二进制十六进制二进制十六进制
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F

三、数制转换

  01. 二进制数 → 十进制数

  将二进制数的每一位数乘以它的权,然后将所得的全部值相加。

    (100110.101)2
   = 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3
   = 32 + 0 + 0 + 4 + 2 + 0 + 0.5 + 0 + 0.125
   = (38.625)10

  02. 十进制数 → 二进制数

    a. 整数部分,除 2 取余;小数部分,乘 2 取整;然后合并。

    (37403.2134)10
   => 整数部分推导
   => 37403/2 = 18701 余 1 ↑
   => 18701/2 = 9350 余 1 ↑
   => 9350/2 = 4675 余 0 ↑
   => 4675/2 = 2337 余 1 ↑
   => 2337/2 = 1168 余 1 ↑
   => 1168/2 = 584 余 0 ↑
   => 584/2 = 292 余 0 ↑
   => 292/2 = 146 余 0 ↑
   => 146/2 = 73 余 0 ↑
   => 73/2 = 36 余 1 ↑
   => 36/2 = 18 余 0 ↑
   => 18/2 = 9 余 0 ↑
   => 9/2 = 4 余 1 ↑
   => 4/2 = 2 余 0 ↑
   => 2/2 = 1 余 0 ↑
   => 1/2 = 0 余 1 ↑(最终商为 0 时,逆序开始合并)
   => 1001001000011011
   => 小数部分推导
   => 0.2134*2 = 0.4268 整 0 ↓(顺序开始合并)
   => 0.4268*2 = 0.8536 整 0 ↓
   => 0.8536*2 = 1.7072 整 1 ↓
   => 0.7072*2 = 1.4144 整 1 ↓
   => 0.4144*2 = 0.8288 整 0 ↓
   => 0.8288*2 = 1.6576 整 1 ↓
   => 0.6576*2 = 1.3152 整 1 ↓
   => 0.3152*2 = 0.6304 整 0 ↓(需要提前设定转换精度)
   ......
   => 0.00110110...
   => 合并
   => (1001001000011011.0011011)2

    b. 把一个十进制数写成按二进制数权的大小展开的多项式,并按权值从高到低一次取各项的系数。

    (37403.2134)10
   =

  03. 二进制数 → 八进制数

  从小数点起,把二进制数每 3 位分成一组,然后写出每一组的等值八进制数,顺序排列起来就得到所要求的八进制数。

    (100101001001011101.11010100101)2
   = 100,101,001,001,011,101.110,101,001,100
   = 4 ,5 ,1 ,1 ,3 ,5 .6 ,5 ,1 ,4
   = (451135.6514)8

  04. 八进制数 → 二进制数

  将 1 位八进制数用 3 位二进制数表示。

    (6254172.117002)8
   = 110,010,101,100,001,111,010.001,001,111,000,000,010
   = (110010101100001111010.00100111100000001)2

  05. 十进制数 → 八进制数

  整数部分,除 8 取余;小数部分,乘 8 取整;然后合并。

    (38947164.183593)10
   => 整数部分推导
   => 38947164/8 = 4868395 余 4 ↑
   => 4868395/8 = 608549 余 3 ↑
   => 608549/8 = 76068 余 5 ↑
   => 76068/8 = 9508 余 4 ↑
   => 9508/8 = 1188 余 4 ↑
   => 1188/8 = 148 余 4 ↑
   => 148/8 = 18 余 4 ↑
   => 18/8 = 2 余 2 ↑
   => 2/8 = 0 余 2 ↑(最终商为 0 时,逆序开始合并)
   => 224444534
   => 小数部分推导
   => 0.183593*8 = 1.468744 整 1 ↓(顺序开始合并)
   => 0.468744*8 = 3.749952 整 3 ↓
   => 0.749952*8 = 5.999616 整 5 ↓
   => 0.999616*8 = 7.996928 整 7 ↓
   => 0.996928*8 = 7.975424 整 7 ↓
   => 0.975424*8 = 7.803392 整 7 ↓
   => 0.803392*8 = 6.427136 整 6 ↓
   => 0.427136*8 = 3.417088 整 3 ↓(需要提前设定转换精度)
   ......
   => 0.13577763...
   => 合并
   => (224444534.13577763)8

  06. 八进制数 → 十进制数

  将八进制数的每一位数乘以它的权,然后将所得的全部值相加。

    (674261.173)8
   = 6*85 + 7*84 + 4*83 + 2*82 + 6*81 + 1*80 + 1*8-1 + 7*8-2 + 3*8-3
   = 196608 + 28672 + 2048 + 128 + 48 + 1 + 0.125 + 0.109375 + 0.005859375
   = (227505.240234375)10

  07. 十进制数 → 十六进制数

  整数部分,除 16 取余;小数部分,乘 16 取整;然后合并。

    (92476318.16298)10
   => 整数部分推导
   => 92476318/16 = 5779769 余 14 => E ↑
   => 5779769/16 = 361235 余 9 => 9 ↑
   => 361235/16 = 22577 余 3 => 3 ↑
   => 22577/16 = 1411 余 1 => 1 ↑
   => 1411/16 = 88 余 3 => 3 ↑
   => 88/16 = 5 余 8 => 8 ↑
   => 5/16 = 0 余 5 => 5 ↑(最终商为 0 时,逆序开始合并)
   => 583139E
   => 小数部分推导
   => 0.16298*16 = 2.60768 整 2 => 2 ↓(顺序开始合并)
   => 0.60768*16 = 9.72288 整 9 => 9 ↓
   => 0.72288*16 = 11.56608 整 11 => B ↓
   => 0.56608*16 = 9.05728 整 9 => 9 ↓
   => 0.05728*16 = 0.91648 整 0 => 0 ↓(需要提前设定转换精度)
   ......
   => 0.29B90...
   => 合并
   => (583139E.29B9)16

  08. 十六进制数 → 十进制数

  将十六进制数的每一位数乘以它的权,然后将所得的全部值相加。

    (4DA561B.FE13A)16
   = 4*166 + D*165 + A*164 + 5*163 + 6*162 + 1*161 + B*160 + F*16-1 + E*16-2 + 1*16-3 + 3*16-4 + A*16-5
   = 4*166 + 13*165 + 10*164 + 5*163 + 6*162 + 1*161 + 11*160 + 15*16-1 + 14*16-2 + 1*16-3 + 3*16-4 + 10*16-5
   = 67108864 + 13631488 + 655360 + 20480 + 1536 + 16 + 11 + 0.9375 + 0.0546875 + 0.000244140625 + 0.0000457763671875+0.0000095367431640625
   = 81417755 + 0.9924869537353515625
   = (81417755.9924869537353515625)10

  09. 二进制数 → 十六进制数

  从小数点开始,每 4 位二进制数为一组,将每一组用相应的十六进制数符来表示。

    (1101010111000111110.110101011011001101)2
   = 0110,1010,1110,0011,1110.1101,0101,1011,0011,0100
   = 6 ,A ,E ,3 ,E .D ,5 ,B ,3 ,4
   = (6AE3E.D5B34)16

  10. 十六进制数 → 二进制数

  将 1 位十六进制数用 4 位二进制数表示。

    (AEF34B.2CD9)16
   = 1010,1110,1111,0011,0100,1011.0010,1100,1101,1001
   = (101011101111001101001011.0010110011011001)2

  11. 八进制数 → 十六进制数

  八进制数 → 二进制数 → 十六进制数

  将 1 位八进制数用 3 位二进制数表示;从小数点开始,每 4 位二进制数为一组,将每一组用相应的十六进制数符来表示。

    (7126534.1762354)8
   = 111,001,010,110,101,011,100.001,111,110,010,011,101,100
   = (111001010110101011100.0011111100100111011)2
   = 0001,1100,1010,1101,0101,1100.0011,1111,0010,0111,0110
   = 1 ,C ,A ,D ,5 ,C .3 ,F ,2 ,7 ,6
   = (1CAD5C.3F276)16

  12. 十六进制数 → 八进制数

  十六进制数 → 二进制数 → 八进制数

  将 1 位十六进制数用 4 位二进制数表示;从小数点开始,每 3 位二进制数为一组,将每一组用相应的八进制数符来表示。

    (A013F2.C9DB)16
   = 1010,0000,0001,0011,1111,0010.1100,1001,1101,1011
   = (101000000001001111110010.1100100111011011)2
   = 101,000,000,001,001,111,110,010.110,010,011,101,101,100
   = 5 ,0 ,0 ,1 ,1 ,7 ,6 ,2 .6 ,2 ,3 ,5 ,5 ,4
   = (50011762.623554)8

四、规律总结

  01. 非十进制数 → 十进制数

  将 r 进制数的每一位数乘以它的权 ri,然后将所得的全部值相加。

  02. 十进制数 → 非十进制数

  整数部分(除 r 取余)和小数(乘 r 取整)部分分别转换,然后再合并。
 

2008年12月5日星期五

NO.000 - 程序员.计算机系统概述

 
一、计算机系统的组成

计算机系统┬硬件系统┬主机┬CPU ┬运算器
     │    │  │   └控制器
     │    │  └内存储器(主存储器)
     │    └外部设备┬输入设备
     │         ├输出设备
     │         └外存储器(辅助存储器)
     └软件系统┬系统软件
          └应用软件

  01. 计算机硬件

  基本的计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成。

  中央处理单元(Central Processing Unit,CPU):运算器、控制器。
  运算器:对数据进行加工处理,完成算术和逻辑运算。
  控制器:从主存中取出指令并进行分析,控制计算机的各个部件有条不紊地完成指令的功能。

  存储器(记忆设备)。
  内部存储器(Main Memory,MM,内存/主存):速度高、容量小,临时存放计算机运行时所需的程序、数据及中间结果。
  外部存储器(外存):容量大、速度慢,长期保存信息。
  寄存器:CPU 中的记忆设备,临时存放指令、数据及运算结果。
  与内存储器相比,寄存器的速度要快得多。

  主机:CPU 和主存储器的有机结合。

  输入/输出(或 I/O)设备:置于主机之外,是计算机系统与外界交换信息的装置。
  所谓输入/输出都是相对于主机而言的。
  输入设备:把信息转换成二进制形式输入到计算机的存储器中。
  输出设备:把运算处理结果按照人们所要求的形式输出到外部存储介质上。

  02. 计算机软件

  计算机软件:指为管理、运行、维护及应用计算机所开发的程序和相关文档的集合。

二、计算机的类型

  现代计算机所使用的关键元器件是超大规模集成电路。

  01. 按计算机的工作能力

    巨型机、大型机、小型机、微型机(台式计算机(desktop)、膝上型电脑(laptop)、笔记本电脑(notebook)、工作站(workstation)、掌上型电脑、个人数字助理(Personal Digital Assistant、PDA))。

  02. 按功能是否专一

    通用计算机、嵌入式计算机。

  03. 按计算机处理信息的特征

    单指令流单数据流计算机(SISD)、单指令流多数据流计算机(SIMD)、多指令流单数据流计算机(MISD)、多指令流多数据流计算机(MIMD)。

三、应用领域

  数值计算、数据(或信息)处理、实时控制(或过程控制)、人工智能、计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助管理(CAM)。
 

2008年12月2日星期二

2008年12月1日星期一

NO.009 - HFS.菜单.虚拟文件系统菜单

 

原版英文:http://shisanfeng.blogspot.com/2008/12/no008-hfs.html
 

NO.008 - HFS.菜单.主菜单

 
菜单项

  其它选项

  上传

  开始/退出

    自动关闭

  虚拟文件系统

  限制

  Flash 工作按钮

  托盘图标

  IP 地址

  允许连接

  动态 DNS 更新器

  URL 编码

  更新

  保存选项

原版英文:http://www.rejetto.com/wiki/index.php/HFS:_Main_menu