The Way of the great learning involves manifesting virtue, renovating the people, and abiding by the highest good.
2009年2月28日星期六
Knuth 教圣经
在听说 Donald E. KNUTH (中文名字叫高德纳) 的 The Art of Computer Programming 以前, 我曾悲观地怀疑朗道 (Лев Давидович Ландау) 或许是我们这个时代最后一个百科全书式的学者(如果能这么说的话).
高德纳的《计算机程序设计艺术》計劃出版七卷,该书自第三卷于二十世纪七十年代初版以来,一直沒有下一卷的進展。因此他自1990年起就停止使用电子邮件(高德納自1975年就開始使用電子郵件[3])以专心撰写余下的四卷。最新消息是,第四卷將至少出成4A、4B、4C三本,目前已有部分草稿釋出。
在计算机科學以外,高德纳亦著有關於聖經的書藉 3:16 Bible Texts Illuminated (1991), ISBN 0895792524 。被視為计算机科學家少有的作品。
Source: Wikipedia.
这就是 Knuth 的那本 3:16 Bible Texts Illuminated:
是 Knuth 业余在查经小组教学的成果. 要在几个月的时间里, 学习一本圣经自然不是什么容易的事情, 要系统地研读每一卷恐怕时间上并不允许, 而如果只是摘寻章句, 又如何统其大义? 作为一个数学家, Knuth 把整本圣经当作母体, 采取分层抽样(stratified sampling)的方法, 把每一卷的第3章16节作为样本. 第一次看到这本书的时候我以为题目里少了个“John”, 其原因就是约翰福音 3:16 太有名了, Knuth 写道:
My proposal was to study Chapter 3, verse 16 of every book in the Bible. Of course, I have to admit that this suggestion loaded the dice a bit, since John 3:16 is perhaps the most famous verse of all. You might say that my choice of verse 3:16 revealed a certain lack of faith, since I enriched the sample by making it better than truly random selection. Perhaps I was secretly afraid that the whole Bible class would turn out to be a dud, so I needed to make sure that I could at least get the Gospel message across. On the other hand, my choice of 3:16 affected only one data point; the 3:16 rule didn’t cause any significant bias at all, except with respect to the study of John’s gospel. And the fame of John 3:16 is actually a plus, because it makes the selection rule easy to remember.
. . .
Chapter-and-verse designations weren’t part of the Bible until long after the words were written, and no theological significance was attached to the numbers when they were assigned. Therefore verse 3:16 has no special reason (except, of course, in the gospel of John). That is exactly what we want, for stratified sampling. . . . (Foreword)
在旧约 39 卷, 新约 27 卷中, 一共有 59 节 3:16, 所以掐头去尾, 全书一共由 59 个部分组成, 每部分四页, Knuth 先用一页的篇幅介绍书卷的背景, 紧接着是一页经文的书法, 然后就是两页经文的解说. 据他在前言里说, 这次树木森林兼顾的尝试在查经班取得了意想不到的成功.
本书由 Knuth 的 TeX 和 METAFONT 排版.
Update: 3:16 Bible Texts Illuminated 主页
The text found in chapter 3, verse 16, of most books in the Bible is a typical verse with no special distinction. But when Knuth examined what leading scholars throughout the centuries have written about those verses, he found that there is a fascinating story to be learned in every case, full of historical and spiritual insights. This book presents jargon-free introductions to each book of the Bible and in-depth analyses of what people from many different religious persuasions have said about the texts found in chapter 3, verse 16, together with 60 original illustrations by many of the world's leading calligraphers.
The result is a grand tour of the Bible -- from Genesis 3:16 to Revelation 3:16 -- a treat for the mind, the eyes, and the spirit.
2009年2月27日星期五
Super Mario Kart: Most Influential Video Game in History
Super Mario Kart has the longest legacy and the biggest impact on video games in history, according to Guinness World Records which compiled a list of the top 50 consoles games of all time.
Tasked with selecting the best console games of all time, contributors of this year's Gamer's Edition reviewed hundreds of releases to compile a list of the top 50 titles ranked on their initial impact and lasting legacy.
Tetris ranks in at number two, according to the list, and the original Grand Theft Auto is in the number three spot. Where does Super Mario Bros. turn up? Way down at number 17, beneath Grand Theft Auto: San Andreas.
Guinness World Records Editor-in-Chief, Craig Glenday, said of the selection process: "We knew this would be a complex task so we invited a crack team of industry experts to form a judging panel - and the result is a "top 50" list of games ranked both on their importance and on how fun they are to play."
I would love to know who was on their team, because their picks are just friggin insane.
The team said they picked Super Mario Kart for the top spot because it is the best-selling racer on the SNES, the GameCube and the DS. Tetris, a good choice for number two, was selected because it is available on at least 50 different gaming platforms. And Grand Theft Auto holds the record for the most controversial series of games.
The full list, shown here, appear in the newly-released Guinness World Records 2009 Gamer's Edition.
Look over that list and then tell us what your top ten picks would have been. Keep in mind this is being judged on a game's initial impact and lasting legacy, not necessarily how fun they were.
1. Super Mario Kart
2. Tetris
3. Grand Theft Auto
4. Super Mario World
5. Zelda Ocarina of Time
6. Halo
7. Resident Evil IV
8. Final Fantasy XII
9. Street Fighter II
10. GoldenEye
11. Super Mario 64
12. Tomb Raider
13. Metal Gear Solid
14. Call of Duty 4
15. Sonic the Hedgehog 2
16. GTA San Andreas
17. Super Mario Bros
18. Zelda: A Link to the Past
19. Gran Turismo
20. Final Fantasy VII
21. Pro Evolution Soccer 4
22. The Orange Box
23. Lego Star Wars Complete Saga
24. Tekken 2
25. Wii Sports
26. Pokemon Red/Blue
27. Guitar Hero
28. Project Gotham Racing 4
29. Super Mario Galaxy
30. Resident Evil
31. Ico
32. Chrono Trigger
33. Gunstar Heroes
34. Soul Calibur
35. Advance Wars
36. Ridge Racer
37. Super Metroid
38. Castlevania: Symphony of the Night
39. GTA Vice City
40. BioShock
41. Star Wars: Knights of the Old Republic
42. The Legend of Zelda: Link's Awakening
43. God of War
44. Sega Rally Championship
45. Starfox 64
46. Elder Scrolls IV: Oblivion
47. WarioWare Inc
48. Saturn Bomberman
49. Crash Bandicoot
50. Outrun 2
Emacs as Your IDE
This is a no-frills listing towards using Emacs as a development environment. C-x means CTRL-x. M-x means ALT-x (or ESC and then x).
You can press the TAB key almost anywhere for autocompletion. Wherever you input text, use M-p and M-n to traverse up and down the history list.
C-u is the numeric-prefix operator. To go up by 10 lines, for example, one would say C-u 10 C-p.
Stuck!
- Exit Emacs: C-x C-c
- Cancel command: C-g
File Handling
- Open a file: C-x C-f (Remote file: /user@host:path/to/file via ftp)
- Change to a directory: C-x d
- Save file: C-x C-s
- Save as: C-x C-w
- Close a file (kill buffer): C-x k
- Reload file: C-x C-v
- Change to another open file: C-x b
- List all open files (buffers): C-x C-b
- Maximise a window: C-x 1
- Switch to the other window: C-x o
Editing
- Start marking: C-
(Use arrow keys to select region) - Cut: C-w
- Copy: M-w
- Paste: C-y (previous: M-y)
- Undo: C-x u
- Delete word: M-d
- Complete word: M-/
- Open a new line: C-o
- Kill upto end of line: C-k (Is appended to clipboard)
- Indent current line to GNU C standard:
- Toggle read-only: C-x C-q
- Paragraph-ise current region: M-q
- Spell-check current word: M-$ (whole file: M-x ispell)
Search/Replace
- Search forward: C-s (Press C-s to search again)
- Search backward: C-r
- Search and replace: M-%
- List occurrences: M-x occur
- Run grep: M-x grep
- Reg-ex search: C-M-s
[XKCD pays tribute to Emacs]
Navigation
- Beginning of file: M-<
- End of file: M->
- Beginning of line: C-a
- End of line: C-e
- Previous word: M-b
- Next word: M-f
- Previous matching bracket: C-M-b (if it doesn't work, try ESC followed by C-b)
- Next matching bracket: C-M-f (or ESC C-f)
- Outline mode: C-u 1 C-x $ (C-x $ to revert)
- Go to line: M-g (or M-x goto-line)
The arrow area is so far away!? - Previous line: C-p
- Next line: C-n
- Previous character: C-b
- Next character: C-f
- Page Up: M-v
- Page Down: C-v
Vertical Copy
Sometimes you will need to copy a vertical patch of data, e.g. one column in a table. First press C-Registers
- To save the current location in register a: C-x r
a - To jump to the location in register a: C-x j a
- To list saved registers: C-x r l
Symbol Lookup
Assuming CODEDIR to be the top-level source directory, first update your ~/.bashrc like so:alias mktags='cd $CODEDIR && etags `find $CODEDIR -name "*.[h|c]"` && cd -'
Then run:
source ~/.bashrc mktags
When Emacs asks for the TAGS file, specify $CODEDIR/TAGS.
- Go to function/variable definition: M-. (M-* to return)
- Next definition of the tag: C-u M-. (e.g. same method in multiple classes)
- Search for occurrences of symbols: M-x tags-search (M-, to search forward)
- Find symbols as reg-exps: M-x find-tag-regexp
- Autocomplete symbol: M-
Compilation and Debugging
- Compile: M-x compile
- Stop compilation: C-c C-k
- Go to next error: C-x `
- Go to source line giving the error: C-c C-c
- Debug with GDB: M-x gdb
- Insert breakpoint: C-x
- Run a shell command: M-! (C-u M-! to insert output)
- Open a shell: M-x shell
(setq compile-command "gmake -f Makefile.gnu all")
Comparing Two Files
- Start a diff session: M-x ediff
- Next match: n
- Previous match: p
- Copy from file A to B: a
- Copy from file B to A: b
- Save file X: wX
- See diff output: D
- Ignore whitespace differences: ##
- Compare directories: M-x ediff-directories
Keyboard Macros
- Begin recording: C-x (
- End recording: C-x )
- Execute macro: C-x e
Go to the first prototype, and say:
C-x ( C-a externThen say C-u 50 C-x e to replace 50 prototypes.C-n C-x )
Perforce CVS Integration
Get p4.el and then follow these steps.$ emacs -batch -f batch-byte-compile p4.el
Put the p4.el in some directory, say /home/foo/bar. Then edit your ~/.emacs as follows:
(setq load-path (cons "/home/foo/bar" load-path)) (load-library "p4")
You should see a P4 menu in Emacs, and you can do CVS operations from within Emacs now.
Symbol Lookup with cscope
Download cscope program, and xcscope.el and cscope-indexer from an OSS repository. Save the xcscope.el onto some directory in Emacs' load-path. Edit your ~/.emacs as follows:(require 'xcscope)To add a directory ~/foo to your load-path, use the following directive in .emacs file, making sure it appears before the "require xcscope" directive:
(setq load-path (cons "~/foo" load-path))
Place cscope-indexer in your $PATH. You can then use these keystrokes while browsing C source code:
- Index files: C-c s I
- Find global definition: C-c s d
- Find symbol definition: C-c s s
- Find this file: C-c s f
- Find functions calling this function: C-c s c
- Find functions called by this function: C-c s C
- Find this pattern: C-c s e
- Find this text string: C-c s t
- Find files including this file: C-c s i
Java
cscope can be used to browse Java symbols too. Use these commands at the top-level directory to create the index:find . -name "*.java" > cscope.files cscope -bThen add this line at the bottom of xcscope.el to load cscope-mode whenever a Java file is opened:
(add-hook 'java-mode-hook (function cscope:hook))
File Operations
Operations such as move, copy, delete etc. are available in the directory editor: M-x diredCalculations
- Built-in calculator: M-x calculator
- Change input base: i (b | o | h)
- Change output base: o (b | o | h)
More Help
- Built-in tutorial: C-h t
- Info reader: C-h i
Nervous Breakdown
Get therapy from a psychiatrist: M-x doctor2009年2月26日星期四
LinuxDNA Supercharges Linux with the Intel C/C++ Compiler
Exciting news from the LinuxDNA project, which earlier this month successfully compiled a recent Linux kernel with the Intel C/C++ compiler (ICC). This is not just a compile without errors, this is — for the most part — a fully bootable, compatible Linux kernel that can boot into a full Linux system. The full system is based on Gentoo Linux, and utilizes kernel version 2.6.22.
The project's goal is to be able to maintain an Intel-compiler-compatible kernel source along side the current kernel. A few remaining issues that need to be resolved before moving to 2.6.23 and beyond are under investigation.
One might ask: Why compile the kernel with something besides gcc?
The answer: Performance.
Earlier work at compiling the Linux kernel with ICC found that ICC provided up to a 40% boost in performance. Ingo A. Kubblin, a German developer that worked on the original ICC porting project in 2004, gave the following quote:
This early work was based on version 8 of ICC; current efforts are using versions 10.1 and 11.
The Intel compiler often produces faster code as the result of two major optimizations: IPO (Inter Procedural Optimization) and PGO (Profile Guided Optimization). IPO is a heuristics based optimization mechanism, while PGO uses several code stages, first to build code with special modifications that analyse code use, and then a recompile of the code for better execution based on that usage. As PGO is based on usage patterns, it can custom design an optimized kernel for a specific purpose: HPC, DCC, gaming, servers, etc. Although, PGO is also available in gcc, ICC is generally regarded as producing a superior result.
Among the contributors to LinuxDNA are:
- LuYi Cheng: A Chinese kernel hacker responsible for the code becoming fully operational.
- Feilong H: An Intel employee who laid the groundwork for needed patching.
- An unnamed kernel hacker at Broadcom who contributed advice and technical assistance.
- Claude Tyler McAdams: Hacker & spokesperson.
Currently, closed source drivers will not install out of the box, though the developers believed this issue should be easily fixable.
LinuxDNA is an Open Source project that aims to bring a compatible, current kernel source to the high-performance Intel Linux compiler.
2009年2月25日星期三
Comeau C/C++TM 4.3.10.1 Compiler
Command Line Options
Templates
Using export'd Templates
Namespaces
"Environment" Issues
Predefined Macros
Pragmas
Pre-compiled Headers
Language Dialects
C++ Dialects
Features Accepted
Anachronisms
Normal Extensions
cfront 2.1 Extensions
cfront 2.1/3.0 Extensions
C Dialects
ANSI C
K&R/pcc
SVR4 Extensions
MS (C and C++) Extensions
A word about dialects and modes
Download docs as compressed cpio file or as zip file file. (c)© 1988-2008 Comeau Computing, EDG. All rights reserved. Comeau Computing91-34 120th StreetRichmond Hill, NY 11418-3214http://www.comeaucomputing.comsupport@comeaucomputing.com/* the end */
Free, as in Virtual Infrastructure
Response to our announcements has been extremely positive, from our partner Microsoft to our channel partners and resellers, and many many customers and users. There are the expected nay-sayers too, but someone had to drink the only thing that you get free from our competitor - VMware koolaid.
That said, I wanted to explain why we've made this change and why it is so important for Citrix and the XenServer crew:
Times are tough, and they are probably going to get tougher. Now is a good time to dramatically ease the cost of adoption of virtualization, and a good time for Citrix to make a very significant contribution to the well-being of its customers.
There are about a million servers running XenApp / Terminal Services. With the incredible work that the XenServer team has put in optimizing for this workload, we can state with great confidence that just about every one of those workloads is a good candidate for consolidation. We want to help our customers save money and gain agility. Including XenServer as a supported component of the XenApp product, and therefore as an entitlement for our 220,000+ XenApp customers is the best way to accelerate this trend.
The Xen footprint in the enterprise to date has been predominantly delivered as a component in Enterprise Linux. But the Linux management tools for Xen are pretty weak or non-existent. We want anyone using Xen in Linux in the enterprise to start using XenServer instead. You'll get better performance, greater reliability and fantastic management, with full Linux and WIndows support, absolutely free
We know that when we get into deals head to head with VMware, we tend to win. XenServer's reputation for performance, ease of use and functionality at an incredible price, has led us to victory recently in major enterprise accounts such as Tesco PLC, where XenServer runs complex mission critical software systems. To grow the XenServer business faster, we want to get more value to customers, sooner, and get them to demand fulfillment of the upgrade functions in Citrix Essentials, in a more scaleable fashion. Hence, having the complete resource pooling, shared storage and dynamic infrastructure control in the free platform allows us to make the product that much more compelling out of the box, and encourages customers to want to purchase both support and additional features
There is a wealth of cloud/MSP vendors that today use Xen in Linux to virtualize their infrastructures and enable them to become VM-agile. There is no reason why every such cloud should not use XenServer, and in so doing also offer hosted Windows VMs, with all the features of dynamic hot-plugging etc.
Simplifying the XenServer product line with XenServer and Essentials allows us to develop a powerful market partnership with Microsoft for server virtualization - framing a key aspect of our ongoing partnership in virtualization
That's about it really. Changing the dynamics, adjusting to the reality of the market. Aiming to win more share with a direct appeal to our end cutomer, and strong value propositions for our channel partners to deliver.
See you in Cannes
citrix宣布它的企业虚拟化平台XenServer将免费供用户使用,包括其中的所有工具。XenServer的最大亮点是XenMotion,允许用户将虚拟机从一台机器实时迁移到另一台机器,无需让服务器下线;它的多服务器管理功能也相当出色。VMware中的相同功能可是要价五千美元的。Citrix还宣布了新的产品:Citrix Essentials for Hyper-V和Citrix Essentials for XenServer。在Citrix宣布免费声明之后,VMware将如何回应值得关注。
Windows Live SkyDrive (initially Windows Live Folders)
The service currently offers 25 GB of free personal storage, with individual files limited to 50 MB.[1] Optionally, an ActiveX-based tool can be installed to allow drag-and-drop uploading from Windows Explorer. Up to five files can be uploaded each time if the tool has not been installed.
Contents[hide]
1 History
2 Features
2.1 Windows Live Photos
2.2 Favorites sharing
2.3 Windows Live Spaces integration
2.4 RSS feeds
3 See also
4 References
5 External links
//
[edit] History
On its launch, Windows Live Folders (as it was then) was provided as a limited beta available to a few testers in the United States.[2] On August 1, 2007, the service was expanded to a wider audience. Shortly after, on August 9, 2007 the service was renamed Windows Live SkyDrive and made available to testers in the United Kingdom and India.[3] As of May 22, 2008, Windows Live SkyDrive is available to 62 countries and regions.[4][5]
In late 2008 the capacity of an individual SkyDrive account was upgraded from 5 GB to 25 GB.
[edit] Features
[edit] Windows Live Photos
Main article: Windows Live Photos
Windows Live Photos is a part of SkyDrive that allows users to upload photos and let other users access them via a web browser. It displays the user's uploaded photos in albums (folders in SkyDrive). It provides the same basic functionality as SkyDrive such as the ability to move, copy and delete files and folders and uses SkyDrive's storage space.
Additionally, Windows Live Photos allows users to add "People tags" to their photos, integrating with Windows Live People. Stored photos can be downloaded into Windows Live Photo Gallery or as a ZIP file, while retaining the "People tags" metadata in the images. Users may also view the EXIF metadata such as camera information for the photos. Photos can be viewed in a full-screen slide show using Silverlight.
[edit] Favorites sharing
SkyDrive integrates with Windows Live Toolbar to enable the sharing of bookmarked web links between users. Links to websites are stored in a folder within SkyDrive. It is expected that this feature will replace the existing Windows Live Favorites.
[edit] Windows Live Spaces integration
SkyDrive provides integration with Windows Live Spaces to allow users to add a module to their space displaying their publicly shared folders. Windows Live SkyDrive also displays navigation links to different parts of Windows Live Spaces, including Windows Live Events.
[edit] RSS feeds
It is possible to subscribe to RSS feeds of the content of public folders. The feeds contain preview images of the added files — either a thumbnail of an image or an icon representing the file type — and links to the file download pages.
[edit] See also
Windows Live Sync (formerly Foldershare)
Windows Live
2009年2月22日星期日
Making TeX Work
by NormanWalsh
ISBN: 156592-051-1 (out-of-print)
Version 1.0.1
Updated: Fri, 23 Aug 2002
Copyright © 1994 O'Reilly & Associates, Inc. All rights reserved.
Table of Contents
- Forward to the SourceForge Edition
- Preface
- I. An Introduction to TeX
-
- 1. The Big Picture
- 2. Editing
- 3. Running TeX
- 4. Macro Packages
- II. Elements of a Complex Document
-
- 5. Fonts
- 6. Pictures and Figures
- 7. International Considerations
- 8. Printing
- 9. Previewing
- 10. Online Documentation
- 11. Introducing MetaFont
- 12. Bibliographies, Indexes, and Glossaries
- III. A Tools Overview
-
- 13. Non-commercial Environments
- 14. Commercial Environments
- 15. TeX on the Macintosh
- 16. TeX Utilities
- A. Filename Extension Summary
- B. Font Samples
- C. Resources
- D. Long Examples
- E. GNU Free Documentation License
-
- 0. PREAMBLE
- 1. APPLICABILITY AND DEFINITIONS
- 2. VERBATIM COPYING
- 3. COPYING IN QUANTITY
- 4. MODIFICATIONS
- 5. COMBINING DOCUMENTS
- 6. COLLECTIONS OF DOCUMENTS
- 7. AGGREGATION WITH INDEPENDENT WORKS
- 8. TRANSLATION
- 9. TERMINATION
- 10. FUTURE REVISIONS OF THIS LICENSE
- How to use this License for your documents
- Bibliography
List of Figures
- 1.1. The Letters g and h inside their boxes.
- 1.2. Example figure produced by both TeX and troff
- 1.3. A high-level view of TeX
- 1.4. High-level view of TeX including more detail
- 1.5. TeXing a More Complex Document
- 2.1. Extension setup in Multi-Edit
- 2.2. LaTeX as a compiler in Multi-Edit
- 2.3. Editing a file with MicroEMACS
- 2.4. Microsoft Windows online help for LaTeX
- 2.5. Editing a TeX document with epm under OS/2
- 2.6. Edit settings control word delimiters
- 2.7. Spellchecking a document with amSpell
- 2.8. TeXShell
- 2.9. TeXPert
- 2.10. 4TeX
- 2.11. PMTeX
- 2.12. TeXit
- 4.1. Sample page
- 4.2. Plain TeX Input
- 4.3. LaTeX2e Input
- 4.4. LaTeX Input File
- 4.5. AMSTeX Input File
- 4.6. AMS sample page
- 4.7. Lollipop Input File
- 4.8. TeXinfo Input
- 4.9. TeXinfo sample page
- 4.10. Online documentation produced by MakeInfo
- 4.11. Caffeine by ChemTeX
- 4.12. The ChemTeX Source for Caffeine
- 4.13. A lithium cation rendered by ChemStruct
- 4.14. The ChemStruct Source for the Lithium Cation
- 4.15. A little Mozart…
- 4.16. The MusicTeX Source for Figure
- 5.1. fi as two characters and as a ligature
- 5.2. We unkerned and kerned
- 5.3. The Computer Modern Roman letter R at 150pt: (a) from a 5pt design; (b) from a 17pt design
- 5.4. How TeX uses a virtual font
- 6.1. An example diagram in Plain TeX
- 6.2. A parallelogram in LaTeX
- 6.3. A figure created with (a) epic, and (b) eepic
- 6.4. Several bezier curves created with the LaTeX bezier style
- 6.5. Sample diagrams using PiCTeX
- 6.6. An XYPic diagram
- 6.7. An DraTeX diagram
- 6.8. A PostScript bounding box example
- 6.9. An example of an encapsulated figure
- 6.10. Another example of an encapsulated figure (resized and rotated)
- 6.11. Editing an image with xfig
- 6.12. Editing an image with idraw
- 6.13. Editing an image with tgif
- 6.14. An example of bitmap editing an icon
- 6.15. A text mode screen dump.
- 7.1. Character mapping example
- 7.2. Poor Man's Japanese
- 7.3. \jemtex sample
- 7.4. Arabic text typeset with ArabTeX
- 7.5. Hebrew
- 8.1. Resolution of the bitmap and the device changed simultaneously
- 8.2. Resolution of the bitmap changed while device held constant
- 8.3. Previewing and printing with emTeX
- 9.1. How Previewing with xdvi Works
- 9.2. Previewing with xdvi
- 9.3. How Previewing with xtex Works
- 9.4. Previewing with xtex
- 9.5. Previewing with Ghostview
- 9.6. Previewing with emTeX's dviscr
- 9.7. Previewing with emTeX's dvipm
- 9.8. Previewing with dvivga
- 9.9. Previewing with ArborText's Previewer
- 9.10. Previewing with TurboTeX dvideo (using limited selection of fonts)
- 9.11. Previewing with Personal TeX's Previewer
- 9.12. Previewing with dvimswin
- 9.13. Previewing with dviwin
- 9.14. Previewing with TurboTeX's wdviwin
- 9.15. Previewing with Y&Y's DVIWindo
- 9.16. DVIWindo preview much enlarged
- 9.17. Previewing with dvgt under Tektronix 4010 emulation
- 10.1. TeXinfo sample page
- 10.2. Online documentation produced by MakeInfo
- 11.1. A figure eight created with MetaFont
- 12.1. Editing an article entry with \program{bibview}
- 12.2. Editing an article entry with \program{xbibtex}
- 12.3. Editing an article entry with \program{bibdb}
- 14.1. The PCTeX menu system
- 14.2. PCTeX For Windows editing and previewing a LaTeX document
- 14.3. PCTeX For Windows TrueType font metric builder
- 14.4. Editing a document with Scientific Word
- 14.5. Preview of the Scientific Word document shown in Figure
- 15.1. Editing, previewing, and typesetting in Textures
- 15.2. Alpha editing the fonts chapter from this book
- 15.3. \program{BBEdit} editing the fonts chapter from this book
- 15.4. \program{Excalibur} spellchecking the fonts chapter from this book
- 15.5. The \program{Hyper\BibTeX} view of a bibliographic database
List of Tables
- 1.
- 1.1. Special Characters in Plain TeX
- 1.2. How to Typeset Special Characters
- 2.1. aucTeX Math Operators in Mathematics Minor-mode
- 2.2. TeX Modes of Interaction
- 3.1.
- 5.1. Standard Weight and Width Designations
- 5.2. Weight and Width Are Combined to Form Series
- 5.3. Standard Abbreviations of Font Shape
- 5.4. User-level Font Selection Control Sequences in NFSS2
- 5.5. Encoding Schemes Supported by NFSS2
- 5.6. Default Fonts
- 5.7.
- 6.1. Graphics Manipulation Packages
- 6.2. Graphics Editing Packages
- 7.1. Standard Control Sequences for Symbols from Other Character Sets
- 7.2. New Control Sequences Proposed by TWGMLC
- 7.3. Language Switch Macros Proposed by TUG
- 8.1. Common DVI Drivers
- 8.2. Other \protect\dvilaserhp Utilities
- 8.3. Other \protect\dvilaserps Utilities
- 8.4. Other dvipsone Utilities
- 9.1. Common Previewers
- 9.2. TeX Preview Utilities
- 9.3. DVIWindo Utilities
- 11.1. Some Popular MetaFont Fonts on the CTAN Archives
- 12.1. Types of Entries with Required and Optional Fields
- 13.1. Summary of the \protect\emTeX Distribution
- 13.2. Fonts Libraries Available for \protect\emTeX on CTAN
- 13.3. Other \protect\emTeX Executables
- 13.4. The Beta Test Files for \protect\emTeX
- 14.1. TurboTeX Programs
- 14.2. Turbo\protect\TeX \protect\MF Programs
- 15.1. Summary of the \protect\cmactex Distribution at CTAN
- 15.2. Summary of the \protect\oztex Distribution at CTAN
- 15.3. Font Tools in the BSR package
- 16.1. The Public Doman DVI Driver Family
- 16.2. RTF Translators
- 16.3. Additional Scripts in PS Utils
- B.1. The Computer Modern Roman Font Encoding
- B.2. The Computer Modern Math Italic Font Encoding
- B.3. The Cork Font Encoding
- B.4. The Adobe Standard Font Encoding
List of Examples
- 1.1. An Example of a TeX Document
- 1.2. A typical bibliography database entry
- 2.1. A Simple Driver File
- 2.2. Local Variables in an Emacs Buffer
- 2.3. A Contrived Error
- 2.4. Revision Control Macros for TeX Documents Using RCS}
- 3.1. The Document BADFONT.TEX
- 5.1. Font-shape Declaration with NFSS2
- 5.2. Font-shape declaration with NFSS2 (simplified)
- 5.3. The PStoTeXfont script
- 6.1. The Input for the Plain TeX Diagram
- 6.2. The LaTeX Input for
- 6.3. The epic Input for
- 6.4. The Input for
- 6.5. PiCTeX Input for
- 6.6. The XYPic Input for
- 6.7. The DraTeX Input for
- 6.8. Converting Encapsulated PostScript to a Bitmap with Ghostscript
- 6.9. Script for Inserting a Captured Text Screen
- 7.1. {A Sample Multilingual Document Using English and French}
- 10.1. TeXinfo Commands
- 11.1. The Code for the Figure Eight
- 12.1. A Sample BibTeX entry
- 12.2. A Tib style database entry
- D.1. MakeTeXPK.pl
- D.2. MakeTeXTFM.pl
- D.3. dvidxx.btm
- D.4. makepk.btm
- D.5. enc-afm.pl
- D.6. TeXtoXfont
- D.7. PStoXfont
- D.8. txt2verb.pl
计算机图书排版的八卦
Source: http://blog.youxu.info/2008/10/13/trivia-about-computer-typesetting/
大 家都知道, 计算机科学家超级爱动手自己开发工具, 而且对美有超乎常人的需求. Knuth 爷爷当年觉得自己辛辛苦苦的好书被排版成地摊上的厕纸一样, 一怒之下自己搞出了红遍大江南北的 TeX. 从此整个世界都清净了. 排版是计算机科学家研究的一个很好玩的领域, 这篇文章就谈谈我所知道的关于排版的八卦.
先说 Knuth 爷爷的吧. 首先, 是在设计 TeX 的过程中, 这位老爷爷研究了很多著名的字体, 成了名动一时的字体专家, 据说和乔布斯并称为加州最懂字体设计的两个搞IT的 (我瞎说的). 研究字体之余, 他就研究收集各大书法家的作品, 然后这位老爷爷又是一个基督教徒, 所以干脆用它的收藏出了一本书, 叫做 <3:16>. 这本书特别牛逼, 是一本用计算机科学研究上帝存在的. 而且发挥计算机科学的小幽默, 取圣经每章的第3节第16小句, 还证明了这个和随机一样好.
还是克爷爷, 写完TeX之后不过瘾, 要写本书来冲冲喜, 于是写出了极其牛B名字的 The TeXbook. 一语双关, 表现了牛人一贯的狂妄. 写完这个他又想写写自己的字体和绘图系统设计(metafont 系统) 所以干脆出了五卷书, 行话称作ABCDE, 也是用名字来表明: 看, 基本的入门书, 你非看不可.
跑题一下: Knuth 爷爷最喜欢让人家看到他提出的名字就腿发软. 比如他提出了一个叫做 Literate Programming 的东西, 并且很不怀好意的对 Dijkstra 说, 小样, 当年你说 structured programming 的时候我非要用 goto, 结果人家都说我是 unstructured programming (没结构的编程), 现在我要提出一个叫做 literate programming 的东西, 你要是不跟着我混, 人家就会叫你 illiterate programming (没文化的编程). 在这么邪恶的名字下, 全世界程序员只好个个听这个老头的话, 乖乖的使用文档和程序融为一体的”有文化的”编程习惯.
其实克爷爷属于斯坦福家族的. 在70-80年代, 世界上还有一个NB的研究机构: 贝尔实验室. 贝尔实验室自己也开发了自己的排版工具: Troff. 开发者是著名的K, 就是 K&R 里面的那个K. 这个 Troff 也是一个牛到极点的排版软件, 比如说, 当年那些科学家都对出版社的排版不满意, 所以都威胁出版社说: 我自己来排版, 你们只管印刷就行了. 就是因为这帮科学家开了这个传统, 所以后来出版商遇到想自己排版的, 都用巨崇拜的眼光打量着你.
说到 troff, 以下大名鼎鼎的书都是用 troff 排版的:
Advanced Programming in the UNIX Environment
The AWK Programming Language
The C Programming Language
Compilers: Principles, Techniques, and Tools
Computer Networks, 3rd Ed.
Computer Networks And Internets, 3rd Ed.
The Design and Implementation of the 4.4BSD Operating System
Effective TCP/IP Programming
The Elements of Programming Style, 2nd Ed.
Internetworking With TCP/IP Volume 123
More Programming Pearls
The Practice of Programming
Software Tools
Unix Network Programming
The UNIX Programming Environment
Programming in C++
所以说, troff 排版的无烂书. 当然, TeX 家族也不是吃素的, SICP, TAoCP, CLRS 都是用 TeX 搞出来的. 陶哲轩也说, 鉴别民科文章第一步就是看是不是用TeX排版的. 可见排版排得专业, 也是好文章的一个先决条件.
我觉得可以把以上的结论概括成 徐氏排版定理, 如果一本书, 不是以上所说两个软件排版的, 又不是 O’Relly 出版的, 那是好书的概率也就不怎么大了. 作为一个作者来讲, 一定要记得用 troff 或者 latex 排版 :)
troff 和 latex 都是一脉相承的, 理念也差不多, 所以牛B的开发人员两头都在玩, 比如一个叫做 Werner Lemberg 的牛人, 就是 troff 的开发人员, 同时还跑到 TeX 那里开发了支持中日韩的 CJK 包. (大家都知道, 软件的中文支持从来都不是中国人开发的)
史上最牛的程序员 Bill Joy 同学据说用了一个周末就写出了 vi, 所以大家都怀疑, 他用了半个小时的时间写了 BSD 上的 troff. 他写的这个程序, 被SUN用着, 一直用到今天.
最 后强行插播一条广告: 我最近要写一本小册子, 叫做 Motifs in Computer Science (原名叫 Meta Ideas in Computer Science). 一定保证用 LaTeX+Troff+reStructuredText 排版, 按照我的 Troff/Latex 排版无烂书结论, 这本书也不是太烂. 欢迎捧场.
再补充一则八卦: 话说当年 PDP-11小型机特别贵, 但是贝尔实验室的科学家又想要用. 怎么办呢? 于是, 他们发挥了科学家爱忽悠的能力, 去和经理说: 你看, 我们文档的排版很烂吧(当年还是打字机时代), 你们投资一下搞一个小型机回来, 我们保证给你们开发一个在这个机器上用的文档排版系统. 经理一听, 大笔一挥说: 买之!. 科学家一听都乐了, 哈哈, 我们有新玩具了. 然后, 他们就开始在 PDP11 上开发 UNIX 了. 经理也不懂, 看他们搞的好玩, 就不时来问问: 老大们, 排版系统怎么样了? 贝尔的科学家一边敷衍敷衍, 一边继续搞 UNIX 和 C 语言. 等这两样都搞好了, 瞬间就写了一个排版软件, 就是 nroff. 经理可乐了, 说, 哎, 我们终于投资有回报了啊. 科学家也乐了, 因为若干年之后, C 和 UNIX 红遍大江南北, 因此两人拿下图灵奖. 所以说, 做研究这东西, 一定要先把基金忽悠过来, 然后想干啥干啥, 最后结果反而超出预料. (贝尔实验室的人居然研究宇宙背景辐射拿诺贝尔奖, 这种宽松宽容的基础研究在其他地方是很难遇到的).
The Multi-Principal OS Construction of the Gazelle Web Browser
19 Feb. 2009
Web browsers originated as applications that people used to view static web sites sequentially. As web sites evolved into dynamic web applications composing content from various web sites, browsers have become multi-principal operating environments with resources shared among mutually distrusting web site {\it principals}. Nevertheless, no existing browsers, including new architectures like IE 8, Google Chrome, and OP, have a multi-principal operating system construction that gives a browser-based OS the exclusive control to manage the protection of all system resources
among web site principals.
In this paper, we introduce Gazelle, a secure web browser constructed as a multi-principal OS. Gazelle's Browser Kernel is an operating system that exclusively manages resource protection and sharing across web site principals. This construction exposes intricate design issues that no previous work has identified, such as legacy protection of cross-origin script source, and cross-principal, cross-process display and events protection. We elaborate on these issues and provide comprehensive solutions.
Our prototype implementation and evaluation experience indicates that it is realistic to turn an existing browser into a multi-principal OS that yields significantly stronger security and robustness with acceptable performance and backward compatibility.
Publisher: Microsoft