# 随便翻翻 & Men Lists & Words Lists

## Words List 01

### KML - Keyhole Markup Language

Keyhole Markup Language (KML) is an XML notation for expressing geographic annotation and visualization within Internet-based, two-dimensional maps and three-dimensional Earth browsers. KML was developed for use with Google Earth, which was originally named Keyhole Earth Viewer. It was created by Keyhole, Inc, which was acquired by Google in 2004. KML became an international standard of the Open Geospatial Consortium in 2008. Google Earth was the first program able to view and graphically edit KML files. Other projects such as Marble have also started to develop KML support.

### WKT - Well-known text

Well-known text (WKT) is a text markup language for representing vector geometry objects on a map, spatial reference systems of spatial objects and transformations between spatial reference systems. A binary equivalent, known as well-known binary (WKB) is used to transfer and store the same information on databases, such as PostGIS, Microsoft SQL Server and DB2. The formats were originally defined by the Open Geospatial Consortium (OGC) and described in their Simple Feature Access and Coordinate Transformation Service specifications.

### Compose key

compose-key

ä  ã  ǎ  ā  á  ă  å
®  ©  ™  «  »  …  “  ” ‘ ’
x² + y² = ½
20 °C
a · b
ß § ø đ æ ¡ ¿ ¥

how to do this?

• set up compose key:

dpkg-reconfigure keyboard-configuration
• CAPS + ' + a $$\to$$ á, or CAPS + a + ' $$\to$$ á

### MOOC

MOOC（Massive Open Online Course，大规模在线公开课）已经引发教育的革命。一根网线便可以让贫民窟连接上世界最顶尖学校的最牛老师，在家里和全世界做同学分享学习经验，合作完成作业不再是梦想。而你却还不知道 MOOC 是什么吗？

xMOOC 一词之所以被创造出来, 是为了与早期理想主义者们基于 connectivism 理念的 cMOOC 相区分。这里我只介绍以 Coursera, edX, Udacity 为代表的 xMOOC.

But I want to say:

Focus on what you really want to do, and Using the “If … Then …” method to achieve it

### BSoD - Blue Screen of Death

Blue Screen of Death 指的是微软 Windows 操作系统在无法从一个系统错误中恢复过来时所显示的屏幕图像。

### Forge

But I made him smarter. Sharper.

I inspired him to rise to my level.

I forged the man of my dreams.

### Artifact (software development)

An artifact is one of many kinds of tangible by-product produced during the development of software. Some artifacts (e.g., use cases, class diagrams, and other UML models, requirements and design documents) help describe the function, architecture, and design of software. Other artifacts are concerned with the process of development itself—such as project plans, business cases, and risk assessments.

In end-user development an artifact is either an application or a complex data object that is created by an end-user without the need to know a general programming language. Artifacts describe automated behavior or control sequences, such as database requests or grammar rules, or user-generated content.

Artifact 的词源是拉丁语 arte + factum，arte 是「艺术」或者「技能」的意思， factum 则是「做、造」的动名词形式，artifact 的意思其实就是「用技艺制造（出来的东西）」，所以这个词经常可以翻译为「（手）工艺品」。但它的意义其实不限于此——我们日常所说的「（手）工艺品」一般是指英文的 handicraft，也就是「手制品」。一切手制品其实都是用技艺制造出来的，故而可以说一切 handicraft 都是 artifact，但反过来不行。

Artifact 一词强调的物体属性其实是非自然——一块一万年前的燧石不是 artifact，但一只原始人使用的石斧就是了（此时不应将其翻译为「手工艺品」而是「手工制品」，因为「工艺品」在中文里面暗示这个东西带有一定的艺术欣赏价值，但古人使用的工具并不是拿来当摆设的）。登月时看到月球上的陨石坑不是 artifact，但如果看到一块表面光滑的六面体黑色方形石碑，那就得叫 artifact——即便它显然不可能是（已知的）人类所造。哪怕某种东西是看不到摸不着的，但只要它不是自然形成，也可以算是 artifact，比如互联网。这个意义通常很难翻译，中文里面没有完全对等的概念，只能视乎语境称为「人造物」或者「非自然产物」，如果「非自然」的属性并不重要，那也可以简单地叫做「制品」或者「产物」。

They’re usaully referring to something you create, usually as a side effect, to help you accomplish something. Perhaps a diagram, a design document,a GUI prototype, http://en.wikipedia.org/wiki/Artifact_(software_development) has more insight.

(感觉这个解释就挺清楚。Artifact 是一些辅助自己开发的工具。)

(Note, In many software tools, an artifact have a much more narrow meaning, meaning a file/library/executable that’s produced when you build/compile something)

### LBS - Location Based Service

LBS are used in a variety of contexts, such as health, indoor object search, entertainment, work, personal life, etc.

### Canonical

canonical /kəˈnɒnɪk(ə)l/
1. 牧师礼服

fickle

### jQuery

jQuery is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML. It was released in January 2006 at BarCamp NYC by John Resig. It is currently developed by a team of developers led by Dave Methvin. Used by over 80% of the 10,000 most visited websites, jQuery is the most popular JavaScript library in use today.

### AJAX

Ajax (also AJAX; /ˈeɪdʒæks/; an acronym for Asynchronous JavaScript and XML) is a group of interrelated web development techniques used on the client-side to create asynchronous web applications. With Ajax, web applications can send data to, and retrieve data from, a server asynchronously (in the background) without interfering with the display and behavior of the existing page. Data can be retrieved using the XMLHttpRequest object. Despite the name, the use of XML is not required (JSON is often used instead. See AJAJ), and the requests do not need to be asynchronous.

### JSON

json

JSON (/ˈdʒeɪsɒn/ jay-soun, /ˈdʒeɪsən/ jay-son), or JavaScript Object Notation, is an open standard format that uses human-readable text to transmit data objects consisting of attribute–value pairs. It is used primarily to transmit data between a server and web application, as an alternative to XML.

Although originally derived from the JavaScript scripting language, JSON is a language-independent data format, and code for parsing and generating JSON data is readily available in a large variety of programming languages.

### deprecated

deprecated /'dɛprə,ketɪd/

### conjunction

conjunction 结合；[语] 连接词；同时发生

hexadecimal ,hɛksə'dɛsɪml

### diacritical

diacritical

A diacritical mark is a “glyph” added to a letter. (à _ á)

### TIY

Try It Yourself, seen from W3C School

### mandatory

mandatory
• ['mændət(ə)rɪ]
1. 受托者（等于mandatary）

Mandatory Must do

### DOM - Document Object Model

The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents. Objects in the DOM tree may be addressed and manipulated by using methods on the objects. The public interface of a DOM is specified in its application programming interface (API). The history of the Document Object Model is intertwined with the history of the “browser wars” of the late 1990s between Netscape Navigator and Microsoft Internet Explorer, as well as with that of JavaScript and JScript, the first scripting languages to be widely implemented in the layout engines of web browsers.

（这个音发“道穆”，我以前老以为是“杜穆”……）

### MIME -Multipurpose Internet Mail Extensions

MIME is an Internet standard that extends the format of email to support:

• Text in character sets other than ASCII
• Non-text attachments
• Message bodies with multiple parts
• Header information in non-ASCII character sets
• Although MIME was designed mainly for SMTP protocol, its use today has grown beyond describing the content of email and now often includes describe content type in general, including for the web (see Internet media type) and as a storage for rich content in some commercial products
• The content types defined by MIME standards are also of importance outside of email, such as in communication protocols like HTTP for the World Wide Web. HTTP requires that data be transmitted in the context of email-like messages, although the data most often is not actually email.

### Ogg

Ogg is a free, open container format maintained by the Xiph.Org Foundation. The creators of the Ogg format state that it is unrestricted by software patents and is designed to provide for efficient streaming and manipulation of high quality digital multimedia.

“Ogg” is derived from “ogging”, jargon from the computer game Netrek, which came to mean doing something forcefully, possibly without consideration of the drain on future resources.

The Ogg container format can multiplex a number of independent streams for audio, video, text (such as subtitles), and metadata.

groove

### wrap

wrap [ræp]
• wrap up 包起来 ; 席卷而去 ; 伪装 ; 包好
• Bubble wrap 气泡布 ; 泡沫包装 ; 外包装气泡膜 ; 气泡纸
• Wrap around 残响波干扰 ; 折回现象 ; 环绕 ; 围住

### NaN - Not A Number

In computing, NaN, standing for not a number, is a numeric data type value representing an undefined or unrepresentable value, especially in floating-point calculations. Systematic use of NaNs was introduced by the IEEE 754 floating-point standard in 1985, along with the representation of other non-finite quantities like infinities.

Two separate kinds of NaNs are provided, termed quiet NaNs and signaling NaNs. Quiet NaNs are used to propagate errors resulting from invalid operations or values, whereas signaling NaNs can support advanced features such as mixing numerical and symbolic computation or other extensions to basic floating-point arithmetic. For example, 0/0 is undefined as a real number, and so represented by NaN; the square root of a negative number is imaginary, and thus not representable as a real floating-point number, and so is represented by NaN; and NaNs may be used to represent missing values in computations

### Always be the worst musician in a band

always-be-the-worst-musician-in-a-band

A jazz musician friend of mine told me this:

If you are not the worst musician in in your band, you should immediately switch bands.

I work at Spotify. I feel like a piece of shit programmer almost every day. I didn’t at my last workplace. So I left and started at Spotify.

When the time comes when I no longer feel like a piece of shit programmer here, I’ll quit and move on to a place that can once again make me feel like piece of shit.

This strategy has worked out really well for me during my career.

（这个观点很有意思。）

### Power Amplifier

An audio power amplifier is an electronic amplifier that amplifies low-power audio signals (signals composed primarily of frequencies between 20 - 20 000 Hz, the human range of hearing) to a level suitable for driving loudspeakers and is the final stage in a typical audio playback chain.

### OTS - Over-The-Shoulder Shot

In film or video, an over the shoulder shot (also over shoulder, OS, OTS, or third-person shot) is a shot of someone or something taken from the perspective or camera angle from the shoulder of another person. The back of the shoulder and head of this person is used to frame the image of whatever (or whomever) the camera is pointing toward. This type of shot is very common when two characters are having a discussion and will usually follow an establishing shot which helps the audience place the characters in their setting. It is an example of a camera angle.

（我就说我比小璇璇知识丰富多了～）

### Cranberry

cranberry

Cranberries are a group of evergreen dwarf shrubs or trailing vines in the subgenus Oxycoccus of the genus Vaccinium. In some methods of classification, Oxycoccus( 酸果蔓属) is regarded as a genus in its own right. They can be found in acidic bogs(沼泽) throughout the cooler regions of the northern hemisphere.

### feat.

Just featuring. This is used when there is an invited artist on a track.

It is not restricted to music. It was used on film and show billboards. You could also translate this (depending on context, select as many options as appropriate) by with the (exceptional/gracefully acknowledged/reciprocated/just-passing-by/I-just-so-love-this-guy/requested-by-the-management/i-lost-a-stupid-bet/this-is-my-brother-in-law) participation of to use a latin-derived word.

（这个在唱片里很多，feat. edition，常见的还有 “acoustic”, live, remix）

### Bog

A bog is a mire that accumulates peat, a deposit of dead plant material—often mosses, and in a majority of cases, sphagnum moss. It is one of the four main types of wetlands. Other names for bogs include mire, quagmire and muskeg; alkaline(碱性的) mires are called fens. They are frequently covered in ericaceous shrubs rooted in the sphagnum moss and peat. The gradual accumulation of decayed plant material in a bog functions as a carbon sink.

Bogs occur where the water at the ground surface is acidic and low in nutrients. In some cases, the water is derived entirely from precipitation(沉淀), in which case they are termed ombrotrophic (rain-fed). Water flowing out of bogs has a characteristic brown colour, which comes from dissolved peat tannins. In general the low fertility and cool climate results in relatively slow plant growth, but decay is even slower owing to the saturated soil. Hence peat accumulates. Large areas of landscape can be covered many metres deep in peat. Bogs have distinctive assemblages of plant and animal species and are of high importance for biodiversity, particularly in landscapes that are otherwise settled and farmed.

versatile

excerpt
1. 摘录，引用

### 时区（Time Zoon)

Time Standards
• GMT » Greenwich Mean Time
• UTC » Coordinated Universal Time
• DST » Daylight Saving Time (br. Summer Time)
• CST
• Central Standard Time (USA) UT-6:00
• Central Standard Time (Australia) UT+9:30
• China Standard Time UT+8:00
• Cuba Standard Time UT-4:00
• configure on debian: dpkg-reconfigure tzdata

### NAS - Network-Attached Storage

Network-attached storage (NAS) is file-level computer data storage connected to a computer network providing data access to a heterogeneous group of clients. NAS not only operates as a file server, but is specialized for this task either by its hardware, software, or configuration of those elements. NAS is often manufactured as a computer appliance – a specialized computer built from the ground up for storing and serving files – rather than simply a general purpose computer being used for the role.

### LSB - Linux Standard Base

The Linux Standard Base (LSB) is a joint project by several Linux distributions under the organizational structure of the Linux Foundation to standardize the software system structure, including the filesystem hierarchy used in the GNU/Linux operating system. The LSB is based on the POSIX specification, the Single UNIX Specification, and several other open standards, but extends them in certain areas.

### Wake on LAN

Wake-on-LAN (WOL) is an Ethernet computer networking standard that allows a computer to be turned on or awakened by a network message.

The message is usually sent by a program executed on another computer on the same local area network. It is also possible to initiate the message from another network by using subnet directed broadcasts or a WOL gateway service. Equivalent terms include wake on WAN, remote wake-up, power on by LAN, power up by LAN, resume by LAN, resume on LAN and wake up on LAN. In case the computer being awakened is communicating via Wi-Fi, a supplementary standard called Wake on Wireless LAN (WoWLAN) must be employed.

### DMI - Desktop Management Interface

The Desktop Management Interface (DMI) generates a standard framework for managing and tracking components in a desktop, notebook or server computer, by abstracting these components from the software that manages them. The development of DMI marked the first move by the Distributed Management Task Force (DMTF) into desktop-management standards. Before the introduction of DMI, no standardized source of information could provide details about components in a personal computer.

DMI exposes system data (including the System Management BIOS (SMBIOS) data) to management software, but the two specifications function independently.

DMI is commonly confused with SMBIOS, which was actually called DMIBIOS in its first revisions.

### Semaphore (programming)

In computer science, particularly in operating systems, a semaphore is a variable or abstract data type that is used for controlling access, by multiple processes, to a common resource in a parallel programming or a multi user environment.

A useful way to think of a semaphore is as a record of how many units of a particular resource are available, coupled with operations to safely (i.e., without race conditions) adjust that record as units are required or become free, and, if necessary, wait until a unit of the resource becomes available. Semaphores are a useful tool in the prevention of race conditions; however, their use is by no means a guarantee that a program is free from these problems. Semaphores which allow an arbitrary resource count are called counting semaphores, while semaphores which are restricted to the values 0 and 1 (or locked/unlocked, unavailable/available) are called binary semaphores.

### RandR

The X Resize, Rotate and Reflect Extension (RandR) is an X Window System extension, which allows clients to dynamically change X screens, so as to resize, rotate and reflect the root window of a screen. The initial X11 design did not anticipate the need for dynamic resizing and it was necessary to restart the X display server to bring about the changes. However, XFree86 has, since its first release, supported changing the screen resolution on the fly without changing the desktop size. RandR extension framework brought the ability to change display characteristics without restarting the X session. The extension framework allows laptops and handheld computers to change their screen size to drive external monitors at different resolutions than their built in screens

## Word List 02

### Meme

A meme (/ˈmiːm/ meem) is “an idea, behavior, or style that spreads from person to person within a culture.” A meme acts as a unit for carrying cultural ideas, symbols, or practices that can be transmitted from one mind to another through writing, speech, gestures, rituals, or other imitable phenomena with a mimicked theme. Supporters of the concept regard memes as cultural analogues（类似物） to genes in that they self-replicate, mutate, and respond to selective pressures.

The gene has its cultural analog, too: the meme. In cultural evolution, a meme is a replicator and propagator—an idea, a fashion, a chain letter, or a conspiracy(共谋) theory. On a bad day, a meme is a virus.

（你不能说 meme 是流言蜚语，因为它是中性词。它更像是地方特色、风俗，roman’s way of living。有道上的翻译是“文化基因”，很好。）

### tentative

tentative
• Tentative standard 试行标准 ; 暂行标准 ; 试用标准 ; 假设标准
• tentative data 试验数据 ; 推测数据
• tentative specification 暂定规范 ; 暂行规格 ; 试验规范 ; 暂行规范
• Tentative Schedule 试验性时间表 ; 临时计划表
• tentative palpation 初持
• tentative cuts 试切创
• Tentative species 暂定种
• Tentative portion 暂定区间
• tentative modality 试探性情态

### TMI - Too Much Information

TMI

way more than you need/want to know about someone.

• John: I have mad chafing on my balls.
• Frank: uh, TMI

### plasma

Plasma (from Greek πλάσμα, “anything formed”) is one of the four fundamental states of matter (the others being solid, liquid, and gas). It comprises the major component of the Sun. Heating a gas may ionize its molecules or atoms (reducing or increasing the number of electrons in them), thus turning it into a plasma, which contains charged particles: positive ions and negative electrons or ions. Ionization[,aɪənɪ'zeʃən] can be induced by other means, such as strong electromagnetic field applied with a laser or microwave generator, and is accompanied by the dissociation of molecular bonds, if present. Plasma can also be created by the application of an electric field on a gas, where the underlying process is the Townsend avalanche.

animistic

### sic

The Latin adverb sic (“thus”; in full: sic erat scriptum, “thus was it written”) added immediately after a quoted word or phrase (or a longer piece of text), indicates that the quotation has been transcribed exactly as found in the original source, complete with any erroneous or archaic spelling or other nonstandard presentation.

The notation’s usual purpose is to inform the reader that any errors or apparent errors in the transcribed material do not arise from errors in the course of the transcription, and the errors have been repeated intentionally, i.e., that they are reproduced exactly as set down by the original writer or printer.

It may also be used as a form of ridicule or as a humorous comment, drawing attention to the original writer’s spelling mistakes or emphasizing his or her erroneous logic. Sic is generally placed inside square brackets “[ ]”, and traditionally in italics, as is customary when printing a foreign word. It is sometimes placed in parentheses “( )” instead, though this is less than optimal, as brackets are meant to signify that something was added to a quote.

### FYI - For Your Information

FYI is a common abbreviation of “For Your Information” (or interest, in some interpretations).

“FYI” is commonly used in e-mail, instant messaging or memo messages, typically in the message subject, to flag the message as an informational message, with the intent to communicate to the receiver that he/she may be interested in the topic, but is not required to perform any action. It is also commonly used in informal and business spoken conversations.

Among Internet Standards, FYIs are a subset of the Request for Comments (RFC) series.

The following description is taken from FYI, the FYI on FYI:

The FYI series of notes is designed to provide Internet users with a central repository of information about any topics which relate to the Internet. FYIs topics may range from historical memos on “Why it was done this way” to answers to commonly asked operational questions.

### Long tail

In statistics, a long tail of some distributions of numbers is the portion of the distribution having a large number of occurrences far from the “head” or central part of the distribution. The distribution could involve popularities, random numbers of occurrences of events with various probabilities, etc. A probability distribution is said to have a long tail, if a larger share of population rests within its tail than would under a normal distribution. A long-tail distribution will arise with the inclusion of many values unusually far from the mean, which increase the magnitude of the skewness(n. 歪斜) of the distribution. A long-tailed distribution is a particular type of heavy-tailed distribution.

### Tic-tac-toe

Tic-tac-toe (or Noughts and crosses, Xs and Os) is a paper-and-pencil game for two players, X and O, who take turns marking the spaces in a 3×3 grid. The player who succeeds in placing three respective marks in a horizontal, vertical, or diagonal row wins the game.

### Wacom Digitizer

Wacom Digitizer

Wacom(和冠): a Brand

### Grigori Rasputin

Rasputin was a healer, a man of God and an equal rights activist. For nearly a century, Grigory Rasputin, spiritual advisor to Russia’s last Tsar and Tsarina, has been unjustly maligned ([mə'laɪn], 污蔑) simply because history is written by the politically…

### Han Solo

Han Solo is a character in the original trilogy of the Star Wars universe. He is portrayed by Harrison Ford. He and his co-pilot, Chewbacca, become involved in the Rebel Alliance against the Galactic Empire. Over the course of the Star Wars franchise, he becomes a chief figure in the Alliance and succeeding galactic governments. Star Wars creator George Lucas described the character as “a loner who realizes the importance of being part of a group and helping for the common good.

### Cassandra

[kə'sændrə]

In Greek mythology, Cassandra (Greek Κασσάνδρα, also Κασάνδρα; ), also known as Alexandra or Kassandra, was the daughter of King Priam and Queen Hecuba of Troy. She had the power of prophecy and the curse of never being believed. A common version of her story is that Apollo gave her the power of prophecy in order to seduce(诱惑) her, but when she refused him, he gave her the curse of never being believed. In an alternate version, she fell asleep in a temple, and snakes licked (or whispered in) her ears so that she was able to hear the future. The connection between snakes and knowledge is a recurring theme in Greek mythology, though sometimes it brings an ability to understand the language of animals rather than an ability to know the future. She is a figure of both epic tradition and of tragedy.

### Wheel

The term Wheel was adopted by Unix users in the 1980s, due to the movement of operating system developers and users from TENEX/TOPS-20 to Unix. Modern Unix implementations generally include a security protocol that requires a user be a member of the wheel user privileges group in order to gain superuser access to a machine by using the su command.

Big Wheel / Big Wheels:

A person with a great deal of power or influence, especially a high-ranking person in an organization, e.g. “She’s a big wheel at IBM.”

### Hymn

A hymn /him/ is a type of song, usually religious, specifically written for the purpose of praise, adoration or prayer, and typically addressed to a deity(神) or deities, or to a prominent figure or personification. The word hymn derives from Greek ὕμνος (hymnos), which means “a song of praise”. Collections of hymns are known as hymnals or hymn books.

RMS 写的自由软件之歌（The Free Software Song）就是一首 Hymn，而 RMS 则是 Saint in the Church of Emacs，ST. IGNUCIUS。

### omnivore

An omnivore /ˈomnɪvɔər/, meaning ‘all-eater’ (Latin, omnes, omnia, meaning “all” or “everything” and vorare meaning “to devour”), is an animal that can derive its energy and nutrients from a diet consisting of a variety of food sources that may include plants, animals, algae and fungi.

Omnivores often are opportunistic, general feeders which lack carnivore or herbivore specializations for acquiring or processing food, but which nevertheless consume both animal protein and vegetation.

RMS 说自己是个什么都吃的人，用的就是 omnivore 这个词。

## Words List 03

### Red tape

Red tape is an idiom that refers to excessive regulation or rigid conformity to formal rules that is considered redundant or bureaucratic and hinders or prevents action or decision-making. It is usually applied to governments, corporations, and other large organizations.

One definition is the “collection or sequence of forms and procedures required to gain bureaucratic approval for something, especially when oppressively complex and time-consuming”. Another definition is the “bureaucratic practice of hair splitting or foot dragging, blamed by its practitioners on the system that forces them to follow prescribed procedures to the letter”.

### Predicate (grammar)

There are two competing notions of the predicate in theories of grammar. The first concerns traditional grammar, which tends to view a predicate as one of two main parts of a sentence, the other part being the subject; the purpose of the predicate is to modify the subject. The second derives from work in predicate calculus (predicate logic, first order logic) and is prominent in modern theories of syntax and grammar. In this approach, the predicate of a sentence corresponds mainly to the main verb and any auxiliaries that accompany the main verb, whereas the arguments of that predicate (e.g. the subject and object noun phrases) are outside the predicate. The competition between these two concepts has generated confusion concerning the use of the term predicate in theories of grammar.

integerp, numberp -> t, nil

;; float must have a dot followed by a zero
(integerp 3.) ; returns t
(floatp 3.)   ; returns nil
(floatp 3.0)  ; returns t

“谓词演算”的“谓词”就是这个 predicate。很多黑客喜欢用 “you-want-black-coffee-p” 这种蛋疼的句式来表一般疑问。另一面，很多中国人老想着用流畅的语法来表达自己，其实这中 hyphen seperated 形容词也很常用。很切可以说得很长。而且这种句子用英文说起来很有意思，比如：我是一个「天天吃-大盘鸡-从不厌烦」的人。

### IMO - In My Opinion

as I see it and in my opinion; in my view

### SCM - Software configuration management

In software engineering, software configuration management (SCM) is the task of tracking and controlling changes in the software, part of the larger cross-discipline field of configuration management. SCM practices include revision control and the establishment of baselines. If something goes wrong, SCM can determine what was changed and who changed it. If a configuration is working well, SCM can determine how to replicate it across many hosts.

The acronym “SCM” is also expanded as source configuration management and software change and configuration management. However, “configuration” is generally understood to cover changes typically made by a system administrator; management of source code undergoing software development is considered separately (see revision control).

### Editor war

Editor war is the common name for the rivalry between users of the Vi (Vim) and Emacs text editors. The rivalry has become a lasting part of hacker culture and the free software community.

Many flame wars have been fought between groups insisting that their editor of choice is the paragon of editing perfection, and insulting the others. Unlike the related battles over operating systems, programming languages, and even source code indent style, choice of editor usually only affects oneself.

Vim 是最棒的。Emacs 其次。其它不需要排名次。

### Shebang

Shebang 的名字来自于 SHArp 和 bang，或 haSH bang 的缩写，指代 Shebang 中 #! 两个符号的典型 Unix 名称。 Unix 术语中，井号通常称为 sharp，hash 或 mesh；而叹号则常常称为bang。也有看法认为，shebang 名字中的 sh 来自于默认 shell Bourne shell 的名称，sh，因为常常使用 shebang 调用之。

### name suffix

A name suffix, in the Western English-language naming tradition, follows a person’s full name and provides additional information about the person. Post-nominal letters indicate that the individual holds a position, educational degree, accreditation, office, or honor.

• Post-nominal letters
• bachelor’s degree (A.B, B.A., B.S., B.E, B.F.A., B.Tech., L.L.B, B.Sc., etc.)
• master’s degree (M.A., M.S., M.F.A., LL.M, M.L.A., M.B.A., M.Sc., M.Eng etc.)
• professional doctorate (J.D., M.D., D.O., Pharm.D., etc.)
• academic doctorate (Ph.D., D.Phil., LL.D, Eng.D., etc.).
• Honorary
• Esquire
• Professional
• Religious orders
• Ordering
• Generational titles

### post nominal letters

Post-nominal letters, also called post-nominal initials, post-nominal titles, or designatory letters, are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute. An individual may use several different sets of post-nominal letters, but in some regions it may be customary to limit the number of sets to one or just a few. The order in which these are listed after a name is based on the order of precedence and category of the order. Post-nominal letters are one of the main types of name suffix.

### De-facto

De facto (/dɨ ˈfæktoʊ/, /deɪ-/, Latin: [deː ˈfaktoː]) is a Latin expression that means “concerning fact”. In law, it often means “in practice but not necessarily ordained by law” or “in practice or actuality, but not officially established”. It is commonly used in contrast to de jure (which means “concerning the law”) when referring to matters of law, governance, or technique (such as standards) that are found in the common experience as created or developed without or contrary to a regulation. When discussing a legal situation, de jure designates what the law says, while de facto designates action of what happens in practice. It is analogous and similar to the expressions “for all intents and purposes” or “in fact”.

### Quotation mark glyphs

Different typefaces, character encodings and computer languages use various encodings and glyphs for quotation marks. This article lists some of these glyphs along with their Unicode code points and HTML entities.

• Quotation marks in English
• English curved quotes, also called "book quotes" or "curly quotes"
• Typewriter quotation marks
• ”Good morning, Dave,” said HAL.
• ‛‛Good morning, Dave,’’ said HAL.
• ‛Good morning, Dave,’ said HAL.
• Good morning, Dave,'' said HAL. (in $$\TeX$$)
• Quotation marks in electronic documents
• smart quotes (“…”)1
• dumb quotes ("…")

### DWIM - Do What I Mean

DWIM (“Do What I Mean”) computer systems attempt to anticipate what users intend to do, correcting trivial errors automatically rather than blindly executing users’ explicit but incorrect input. The term was coined by Warren Teitelman in his DWIM package for BBN Lisp, part of his PILOT system, some time before 1966.

Teitelman’s DWIM package “correct(ed) errors automatically or with minor user intervention”, similarly to a spell checker for natural language.

Teitelman and his Xerox PARC colleague Larry Masinter later described the philosophy of DWIM in the Interlisp programming environment (the successor of BBN Lisp):

Although most users think of DWIM as a single identifiable package, it embodies a pervasive philosophy of user interface design: at the user interface level, system facilities should make reasonable interpretations when given unrecognized input. …the style of interface used throughout Interlisp allows the user to omit various parameters and have these default to reasonable values…

DWIM is an embodiment of the idea that the user is interacting with an agent who attempts to interpret the user’s request from contextual information. Since we want the user to feel that he is conversing with the system, he should not be stopped and forced to correct himself or give additional information in situations where the correction or information is obvious.

Critics of DWIM claimed that it was “tuned to the particular typing mistakes to which Teitelman was prone, and no others” and called it “Do What Teitelman Means” or “Do What Interlisp Means.”

### 乞题

Examples:

• 男人体力最好，因为女人体力没那么好。
• 美国人都很有钱（未提供理由支持前提）
• 美国人都很有钱，美籍教师彼得当然也很有钱啰！
• 本例的前提“美国人都很有钱”比结论“美籍教师彼得很有钱”显然更可疑、更需要证明，这使得不同意结论的人极可能也不会同意前提，因此这个论证非常可能会乞题。

### Modus operandi

Modus operandi (plural modi operandi) is a Latin phrase, approximately translated as “method of operation”. The term is used to describe someone’s habits of working, particularly in the context of business or criminal investigations. In English, it is often shortened to M.O.

The expression is often used in police work when discussing a crime and addressing the methods employed by the perpetrators. It is also used in criminal profiling, where it can help in finding clues to the offender’s psychology. It largely consists of examining the actions used by the individual(s) to execute the crime, prevent its detection and/or facilitate escape. A suspect’s modus operandi can assist in his identification, apprehension, or repression, and can also be used to determine links between crimes.

## Words List 04

### QWAN - Quality without a Name

For Christopher Alexander, it is most important to think about the people who will come in contact with a piece of architecture. One of his key values is making these people feel more alive. He talks about the “quality without a name” (QWAN).

More generally, we could say that a good system should be accepted, welcomed and happily embraced as an enrichment of daily life by those who are meant to use it, or - even better - by all people it affects. For instance, when discussing a street café, Alexander discusses the possible desires of a guest, but also mentions people who just walk by.

The same thinking can be applied to technical devices such as telephones and cars, to social structures like a team working on a project, or to the user interface of a computer program. The qualities of a software system, for instance, could be rated by observing whether users spend their time enjoying or struggling with the system.

Another possible value is the efficiency of a system, regarding a specific task. Here the happiness of the participants is less important, as long as they do their job. In software engineering, design patterns usually help to create object-oriented code that is easy to read, maintain, modify and reuse. By focusing on the impacts on human life, we can identify patterns that are independent from changing technology, and thus find “timeless quality”.

### Narcissus

In Greek mythology, Narcissus (/nɑrˈsɪsəs/; Greek: Νάρκισσος, Narkissos) was a hunter from the territory of Thespiae in Boeotia who was renowned for his beauty. He was the son of a river god named Cephissus and a nymph named Liriope. He was exceptionally proud of what he did to those who loved him. Nemesis noticed and attracted Narcissus to a pool, wherein he saw his reflection and fell in love with it, not realizing it was merely an image. Unable to leave the beauty of his reflection, Narcissus died. Narcissus is the origin of the term narcissism, a fixation with oneself.

### Comic Sans

Comic Sans MS, commonly referred to as Comic Sans, is a sans-serif casual script typeface designed by Vincent Connare and released in 1994 by Microsoft Corporation. It is a casual, non-connecting script inspired by comic book lettering, intended for use in informal documents and educational materials.

The typeface has been supplied with Microsoft Windows since the introduction of Windows 95, initially as a supplemental font in the Windows Plus Pack and later in Microsoft Comic Chat. Describing it, Microsoft has explained that “this casual but legible face has proved very popular with a wide variety of people.”

The typeface’s widespread use, often in situations for which it was not intended, has been criticized.

### 黑长直

“黑长直”，ACG 界用语，泛指黑色长直发，是日本动漫游戏常见人设，萌属性之一。带有黑长直属性的女性往往都会具备温柔贤淑、善解人意等东方传统特征，而与之同时也可能会附加腹黑、傲娇、女王等其他属性，常常能激发出旁人强烈的爱慕之情。

• 其一，黑长直是指黑色长直发。
• 其二，黑长直是指黑丝、长直腿。
• 其三，黑长直是指黑丝、长腿、直发。

### ACG - Animation, Comic, Game

ACG 文化的发源地是日本，以网络方式传播流入世界各国，在中国存在对于动漫产业的歧视，也包含本国的动漫产业，还停留在发展阶段等原因，导致ACG 文化在中国沦为流行文化的悲惨地步，由于中国二次元宅界的日语水平不高现象普遍存在，流入中国的ACG文化在翻译阶段，含义就被严重扭曲，随着流行的传播，已完全失去了它本来的姿态。ACG为英文 Animation、Comic、Game 的缩写，是动画、漫画、游戏的总称。为华人地区常用的次文化词汇。

### Emoji

Emoji (絵文字 or えもじ; Japanese pronunciation: [emodʑi]) are the ideograms or smileys used in Japanese electronic messages and webpages, whose use is spreading outside Japan. Originally meaning pictograph, the word emoji literally means “picture” (e) + “character” (moji). The characters are used much like ASCII emoticons or kaomoji, but a wider range is provided, and the icons are standardized and built into the handsets.

Although originally only available in Japan, some emoji character sets have been incorporated into Unicode, allowing them to be used elsewhere as well. As a result, some phones such as the Windows Phone and the iPhone lines allow access to the symbols without requiring a Japanese carrier. Emoji have also started appearing in emailing services such as Gmail

### Here document

In computer science, a here document (here-document, heredoc, hereis, here-string or here-script) is a file literal or input stream literal: it is a section of a source code file that is treated as if it were a separate file. The term is also used for a form of multiline string literals that use similar syntax, preserving line breaks and other whitespace (including indentation) in the text.

Here documents originate in the Unix shell, and are found in sh, csh, ksh, Bash and zsh, among others. Here document-style string literals are found in various high-level languages, notably the Perl programming language (syntax inspired by Unix shell) and languages influenced by Perl, such as PHP and Ruby. Other high-level languages such as Python and Tcl have other facilities for multiline strings.

The most common syntax for here documents, originating in Unix shells, is << followed by a delimiting identifier, followed, starting on the next line, by the text to be quoted, and then closed by the same identifier on its own line.

$tr a-z A-Z << END_TEXT one two three END_TEXT Output: ONE TWO THREE # 这个不算，这是 here string$ tr a-z A-Z <<< 'one two three'

Output: ONE TWO THREE

$tr a-z A-Z <<< 'one two three' Output: ONE TWO THREE perl: my$var = <<EOF;
...
...
...
EOF

### panchromatic

panchromatic

pan + chromatic 全色(全色影像什么的)

### Truth or Dare? 真心话大冒险

Truth or Dare? is a party game requiring at least three players. Players are given the choice between answering a question truthfully, or performing a “dare”, both of which are set by the other players. The game is particularly popular among adolescents and children, and is sometimes used as a forfeit when gambling.

The game has existed for centuries, with at least one variant, Questions and Commands, being attested as early as 1712.

### Intrusive Thoughts

intrusive-thoughts-wikipedia

Intrusive thoughts are unwelcome involuntary thoughts, images, or unpleasant ideas that may become obsessions, are upsetting or distressing, and can be difficult to manage or eliminate. When they are associated with obsessive-compulsive disorder (OCD), depression, body dysmorphic disorder (BDD), and sometimes attention-deficit hyperactivity disorder (ADHD), the thoughts may become paralyzing, anxiety-provoking, or persistent. Intrusive thoughts may also be associated with episodic memory, unwanted worries or memories from OCD, posttraumatic stress disorder, other anxiety disorders, eating disorders, or psychosis. Intrusive thoughts, urges, and images are of inappropriate things at inappropriate times, and they can be divided into three categories: “inappropriate aggressive thoughts, inappropriate sexual thoughts, or blasphemous religious thoughts”.

### Saint Sebastian

Saint Sebastian (died c. 288) was an early Christian saint and martyr. It is said that he was killed during the Roman emperor Diocletian’s persecution of Christians. He is commonly depicted in art and literature tied to a post or tree and shot with arrows. This is the most common artistic depiction of Sebastian; however, according to legend, he was rescued and healed by Irene of Rome. Shortly afterwards he criticized Diocletian in person and as a result was clubbed to death. He is venerated in the Catholic and Orthodox Churches.

The details of Saint Sebastian’s martyrdom were first spoken of by 4th-century bishop Ambrose of Milan (Saint Ambrose), in his sermon (number 22) on Psalm 118. Ambrose stated that Sebastian came from Milan and that he was already venerated there at that time. Saint Sebastian is a popular male saint, especially among soldiers.

### OGC (符号)

OGC 是从网络聊天之表情符号中延伸出，初时意指男性自慰之表象，其中 O 为人体头部， G 为上下两侧为左右手，中间则一横为男性生殖器官，C 则表示为双脚。

• oec：代表左撇子在自慰之意象。
• O3>C，代表女性自慰（3 为胸部、> 为双手，也作 O8>COB>C）。

### G.I. - Government Issue

G.I. is a noun used to describe the soldiers of the U.S. Army and airmen of the U.S. Army Air Forces — and occasionally for U.S. Marines and shorebound sailors — and also for general items of their equipment.

The term G.I. has been used for a long time as an initialism of “Government Issue” or “General Issue”, but it originally referred to “galvanized iron”, as used by the logistics services of the Armed Forces of the United States.

The letters “G.I.” were used to denote equipment made from galvanized iron, such as metal trash cans, in U.S. Army inventories and supply records.

### Krypton

Krypton (from Greek: κρυπτός kryptos “the hidden one”) is a chemical element with symbol Kr and atomic number 36. It is a member of group 18 (noble gases) elements. A colorless, odorless, tasteless noble gas, krypton occurs in trace amounts in the atmosphere, is isolated by fractionally distilling liquefied air, and is often used with other rare gases in fluorescent lamps. Krypton is inert for most practical purposes.

### Krypton (comics)

Krypton is a fictional planet in the DC Universe and the native world of Superman. In some stories, it is also the native world of Supergirl, Krypto the Superdog, and Power Girl (albeit an alternate universe version in her case, designated “Krypton-Two”). Krypton has been portrayed consistently as having been destroyed just after Superman’s flight from the planet, with exact details of its destruction varying by time period, writers and franchise. Kryptonians were the dominant species on Krypton.

The planet was created by Jerry Siegel and Joe Shuster, and was first referred to in Action Comics #1 (June 1938). The planet was given its first full-fledged appearance in Superman #1 (Summer 1939).

## Words List 05

### OP, ED

op-ed

Izumi Sakai 有很多著名的好听的 OP/ED。

### 去 “IOE” - 去 IBM, Oracle, EMC

Related: 淘宝阿里巴巴上演去Oracle事件

### BNF - Backus Normal Form

In computer science, BNF (Backus Normal Form or Backus–Naur Form) is one of the two main notation techniques for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols; the other main technique for writing context-free grammars is the van Wijngaarden form. They are applied wherever exact descriptions of languages are needed: for instance, in official language specifications, in manuals, and in textbooks on programming language theory.

Many extensions and variants of the original Backus–Naur notation are used; some are exactly defined, including Extended Backus–Naur Form (EBNF) and Augmented Backus–Naur Form (ABNF).

A BNF specification is a set of derivation rules, written as

<symbol> ::= __expression__

BNF’s syntax itself may be represented with a BNF like the following:

<syntax>         ::= <rule> | <rule> <syntax>
<rule>           ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end>
<opt-whitespace> ::= " " <opt-whitespace> | ""
<expression>     ::= <list> | <list> "|" <expression>
<line-end>       ::= <opt-whitespace> <EOL> | <line-end> <line-end>
<list>           ::= <term> | <term> <opt-whitespace> <list>
<term>           ::= <literal> | "<" <rule-name> ">"
<literal>        ::= '"' <text> '"' | "'" <text> "'"

### Extended Backus–Naur Form

EBNF is a code that expresses the grammar of a formal language. An EBNF consists of terminal symbols and non-terminal production rules which are the restrictions governing how terminal symbols can be combined into a legal sequence. Examples of terminal symbols include alphanumeric characters, punctuation marks, and white space characters.

The EBNF defines production rules where sequences of symbols are respectively assigned to a nonterminal:

digit excluding zero            = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
digit                           = "0" | digit excluding zero ;
twelve                          = "1", "2" ;
two hundred one                 = "2", "0", "1" ;
three hundred twelve            = "3", twelve ;
twelve thousand two hundred one = twelve, two hundred one ;
natural number                  = digit excluding zero, { digit } ;
integer                         = "0" | [ "-" ], natural number ;

more examples

letter = "A" | "B" | "C" | "D" | "E" | "F" | "G"
| "H" | "I" | "J" | "K" | "L" | "M" | "N"
| "O" | "P" | "Q" | "R" | "S" | "T" | "U"
| "V" | "W" | "X" | "Y" | "Z" ;
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
symbol = "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">"
| "'" | '"' | "=" | "|" | "." | "," | ";" ;
character = letter | digit | symbol | "_" ;

identifier = letter , { letter | digit | "_" } ;
terminal = "'" , character , { character } , "'"
| '"' , character , { character } , '"' ;

lhs = identifier ;
rhs = identifier
| terminal
| "[" , rhs , "]"
| "{" , rhs , "}"
| "(" , rhs , ")"
| rhs , "|" , rhs
| rhs , "," , rhs ;

rule = lhs , "=" , rhs , ";" ;
grammar = { rule } ;

### Definite clause grammar

A definite clause grammar (DCG) is a way of expressing grammar, either for natural or formal languages, in a logic programming language such as Prolog. It is closely related to the concept of attribute grammars / affix grammars from which Prolog was originally developed. DCGs are usually associated with Prolog, but similar languages such as Mercury also include DCGs. They are called definite clause grammars because they represent a grammar as a set of definite clauses in first-order logic.

A basic example of DCGs helps to illustrate what they are and what they look like.

sentence --> noun_phrase, verb_phrase.
noun_phrase --> det, noun.
verb_phrase --> verb, noun_phrase.
det --> [the].
det --> [a].
noun --> [cat].
noun --> [bat].
verb --> [eats].

### Pseudocode

Pseudocode is an informal high-level description of the operating principle of a computer program or other algorithm.

It uses the structural conventions of a programming language, but is intended for human reading rather than machine reading. Pseudocode typically omits details that are not essential for human understanding of the algorithm, such as variable declarations, system-specific code and some subroutines. The programming language is augmented with natural language description details, where convenient, or with compact mathematical notation. The purpose of using pseudocode is that it is easier for people to understand than conventional programming language code, and that it is an efficient and environment-independent description of the key principles of an algorithm. It is commonly used in textbooks and scientific publications that are documenting various algorithms, and also in planning of computer program development, for sketching out the structure of the program before the actual coding takes place.

No standard for pseudocode syntax exists, as a program in pseudocode is not an executable program. Pseudocode resembles, but should not be confused with skeleton programs, including dummy code, which can be compiled without errors. Flowcharts and Unified Modeling Language (UML) charts can be thought of as a graphical alternative to pseudocode, but are more spacious on paper.

### MVC - Model View Control

MVC 模式（Model-View-Controller） 是软件工程中的一种软件架构模式，把软件系统分为三个基本部分：模型（Model）、视图（View）和控制器（Controller）。

MVC 模式最早由 Trygve Reenskaug 在1978年提出，是施乐帕罗奥多研究中心（Xerox PARC）在 20 世纪 80 年代为程序语言 Smalltalk 发明的一种软件设计模式。 MVC 模式的目的是实现一种动态的程式设计，使后续对程序的修改和扩展简化，并且使程序某一部分的重复利用成为可能。除此之外，此模式通过对复杂度的简化，使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组：

• （控制器 Controller）- 负责转发请求，对请求进行处理。
• （视图 View） - 界面设计人员进行图形界面设计。
• （模型 Model） - 程序员编写程序应有的功能（实现算法等等）、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

### 鸟笼效应

“鸟笼效应”是一个很有意思的规律，人们会在偶然获得一件原本不需要的物品的基础上，自觉不自觉的继续添加更多自己不需要的东西。

1907 年,詹姆斯从哈佛大学退休,同时退休的还有他的好友物理学家卡尔森。一天,两人打赌。詹姆斯说:“我一定会让你不久就养上一只鸟的。”卡尔森不以为然:“我不信！因为我从来就没 有想过要养一只鸟。”没过几天,恰逢卡尔森生日,詹姆斯送上了礼物——一只精致的鸟笼。卡尔森笑了:“我只当它是一件漂亮的工艺品。你就别费劲了。”从此以后,只要客人来访,看见书桌旁那只空荡荡的鸟笼, 他们几乎都会无一例外地问:“教授,你养的鸟什么时候死了？”卡尔森只好一次次地向客人解释:“我从来就没有养过鸟。”然而,这种回答每每换来的却是客人困惑而有些不信任的目光。无奈之下,卡尔森教授只好买了一只鸟,詹姆斯的“鸟笼效应”奏效了。实际上,在我们的身边,包括我们自己,很多时候不是先在自己的心里挂上一只笼子, 然后再不由自主地朝其中填满一些什么东西吗？

### Over-the-top content

Over-the-top content (OTT) refers to delivery of video, audio and other media over the Internet without a multiple system operator being involved in the control or distribution of the content. The provider may be aware of the contents of the Internet Protocol packets but is not responsible for, nor able to control, the viewing abilities, copyrights, and/or other redistribution of the content. This is in contrast to purchase or rental of video or audio content from an Internet service provider (ISP), such as pay television video on demand or an IPTV video service, like AT&T U-Verse. OTT in particular refers to content that arrives from a third party, such as NowTV, Netflix, WhereverTV, NetD, Hulu, Crackle, WWE Network, RPI TV or myTV, and is delivered to an end user device, leaving the ISP responsible only for transporting IP packets.

### Literate programming

Literate programming is an approach to programming introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated.

The literate programming paradigm, as conceived by Knuth, represents a move away from writing programs in the manner and order imposed by the computer, and instead enables programmers to develop programs in the order demanded by the logic and flow of their thoughts. Literate programs are written as an uninterrupted exposition of logic in an ordinary human language, much like the text of an essay, in which macros are included to hide abstractions and traditional source code.

Literate programming tools are used to obtain two representations from a literate source file: one suitable for further compilation or execution by a computer, the “tangled” code, and another for viewing as formatted documentation, which is said to be “woven” from the literate source. While the first generation of literate programming tools were computer language-specific, the later ones are language-agnostic and exist above the programming languages.

A good example: Sacha Chua’s Emacs Dotfiles

### WTFPL

The WTFPL (Do What the Fuck You Want to Public License) is a permissive way of licensing intellectual property rights, most commonly used as a permissive free software license. It is essentially no different from dedication to the public domain. The original Version 1.0 license, released March 2000, was written by Banlu Kemiyatorn who used it for Window Maker artwork. Sam Hocevar, a French programmer who was the Debian project leader from 17 April 2007 to 16 April 2008, wrote version 2.0. It allows for redistribution and modification of the software under any terms – licensees are encouraged to “do what the fuck [they] want to”. The license was approved as a GPL-compatible free software license by the Free Software Foundation.

### Chinese language

Chinese (汉语 / 漢語; Hànyǔ or 中文; Zhōngwén) is a group of related but in many cases mutually unintelligible language varieties, which forms one of the branches of the Sino-Tibetan language family. Chinese is spoken by the Han majority and many other ethnic groups in China. More than one billion people, or about one-fifth of the world’s population, speak some form of Chinese as their first language.

• Language codes:
• ISO 639-1 zh
• ISO 639-2 chi (B)
• zho (T)
• ISO 639-3 zho – inclusive code
• Individual codes:
• cdo – Min Dong
• cjy – Jinyu
• cmn – Mandarin
• cpx – Pu Xian
• czh – Huizhou
• czo – Min Zhong
• gan – Gan
• hak – Hakka
• hsn – Xiang
• mnp – Min Bei
• nan – Min Nan
• wuu – Wu
• yue – Yue
• och – Old Chinese
• ltc – Late Middle Chinese
• lzh – Classical Chinese
• Glottolog sini1245
• Linguasphere 79-AAA

### Closure (computer programming)

In programming languages, a closure (also lexical closure or function closure) is a function or reference to a function together with a referencing environment—a table storing a reference to each of the non-local variables (also called free variables or upvalues) of that function. A closure—unlike a plain function pointer—allows a function to access those non-local variables even when invoked outside its immediate lexical scope.

The concept of closures was developed in the 1960s and was first fully implemented in 1975 as a language feature in the Scheme programming language to support lexically scoped first-class functions. The use of closures is associated with functional programming languages such as Lisp and ML. Traditional imperative languages such as Algol, C and Pascal do not support returning nested functions as results from higher-order functions. Many modern garbage-collected imperative languages support closures, such as Smalltalk (the first object-oriented language to do so), OCaml, Python, Perl, Ruby, JavaScript, Go, Dart, Scala, Swift, C#, Rust, Julia and C++ since C++11.

### UGC - User-generated content

User-generated content (UGC) refers to a variety of media available in a range of modern communications technologies. UGC is often produced through open collaboration: it is created by goal-oriented yet loosely coordinated participants, who interact to create a product or service of economic value, which they make available to contributors and non-contributors alike.

### If and only if

IFF: if and only if. ↔ ⇔ ≡

In logic and related fields such as mathematics and philosophy, if and only if (shortened iff) is a biconditional logical connective between statements.

In that it is biconditional, the connective can be likened to the standard material conditional (“only if”, equal to “if … then”) combined with its reverse (“if”); hence the name. The result is that the truth of either one of the connected statements requires the truth of the other, i.e., either both statements are true, or both are false. It is controversial whether the connective thus defined is properly rendered by the English “if and only if”, with its pre-existing meaning. There is nothing to stop one from stipulating that we may read this connective as “only if and if”, although this may lead to confusion.

### Axiom

An axiom, or postulate, is a premise or starting point of reasoning. As classically conceived, an axiom is a premise so evident as to be accepted as true without controversy. The word comes from the Greek ἀξίωμα (āxīoma) ‘that which is thought worthy or fit’ or ‘that which commends itself as evident.’ As used in modern logic, an axiom is simply a premise or starting point for reasoning. Axioms define and delimit the realm of analysis; the relative truth of an axiom is taken for granted within the particular domain of analysis, and serves as a starting point for deducing and inferring other relative truths. No explicit view regarding the absolute truth of axioms is ever taken in the context of modern mathematics, as such a thing is considered to be an irrelevant and impossible contradiction in terms.

### Per se

per-se

through itself, also “by itself” or “in itself”.

Without referring to anything else, intrinsically, taken without qualifications etc. A common example is negligence per se. See also malum in se.

### Moore method

The Moore method is a deductive manner of instruction used in advanced mathematics courses. It is named after Robert Lee Moore, a famous topologist who first used a stronger version of the method at the University of Pennsylvania when he began teaching there in 1911.

The way the course is conducted varies from instructor to instructor, but the content of the course is usually presented in whole or in part by the students themselves. Instead of using a textbook, the students are given a list of definitions and theorems which they are to prove and present in class, leading them through the subject material. The Moore method typically limits the amount of material that a class is able to cover, but its advocates claim that it induces a depth of understanding that listening to lectures cannot give.

### e.g. & i.e.

eg & ie

exempli gratia (e.g.), usually shortened in English to “for example” (see citation signal). Often confused with id est (i.e.).

Exempli gratia (e.g.) and id est (i.e.) are commonly confused and misused in colloquial English. The former, exempli gratia, means “for example”, and is used before giving examples of something (“I have lots of favorite colors, e.g., blue, green, and hot pink”). The latter, id est, means “that is”, and is used before clarifying the meaning of something, when elaborating, specifying, or explaining rather than when giving examples (“I have lots of favorite colors; i.e., I can’t decide on just one”). In British style, the stops may be omitted: “I have lots of favourite colours, eg blue, green and hot pink”. “I have lots of favourite colours; ie I can’t decide on just one”

### Abuse of notation

In mathematics, abuse of notation occurs when an author uses a mathematical notation in a way that is not formally correct but that seems likely to simplify the exposition or suggest the correct intuition (while being unlikely to introduce errors or cause confusion). Abuse of notation should be contrasted with misuse of notation, which should be avoided.

A related concept is abuse of language or abuse of terminology, when not notation but a term is misused. Abuse of language is an almost synonymous expression that is usually used for non-notational abuses. For example, while the word representation properly designates a group homomorphism from a group G to GL(V) where V is a vector space, it is common to call V “a representation of G”. A common abuse of language consists in identifying two mathematical objects that are different but canonically isomorphic. For example, identifying a constant function and its value or identifying to $$\mathbb R^3$$ the Euclidean space of dimension three equipped with a Cartesian coordinate system.

The latter uses may achieve clarity in the new area in an unexpected way, but it may borrow arguments from the old area that do not carry over, creating a false analogy.

## Words List 06

### CC 协议

Creative Commons，简称 CC 协议，中国大陆正式名称为知识共享，台湾正式名称为创用CC。是一个非营利组织，也是一种创作的授权方式。此组织的主要宗旨是增加创意作品的流通可及性，作为其他人据以创作及共享的基础，并寻找适当的法律以确保上述理念。

Licensees may copy, distribute, display and perform the work and make derivative works based on it only if they give the author or licensor the credits in the manner specified by these.

Licensees may distribute derivative works only under a license identical to the license that governs the original work. (See also copyleft.)

Licensees may copy, distribute, display, and perform the work and make derivative works based on it only for noncommercial purposes.

Licensees may copy, distribute, display and perform only verbatim copies of the work, not derivative works based on it.

CC 协议标志

See Creative Commons License for more.

### Trinitron

trinitron

Trinitron was Sony’s brand name for its line of aperture grille based CRTs used in television sets and computer display monitors. One of the first truly new television systems to enter the market since the 1950s, the Trinitron was announced in 1968 to wide acclaim for its bright images, about 25% brighter than common shadow mask televisions of the same era. Constant improvement in the basic technology and attention to overall quality allowed Sony to charge a premium for Trinitron devices into the 1990s.

### LOL

It’s original definition was “Laughing out loud” (also written occasionally as “Lots of Laughs”), used as a brief acronym to denote great amusement in chat conversations.

Now, it is overused to the point where nobody laughs out loud when they say it. In fact, they probably don’t even give a shit about what you just wrote. More accurately, the acronym “lol” should be redefined as “Lack of laughter.” （变成了讽刺，感觉有点像 “呵呵”）

Depending on the chatter, its definition may vary. The list of its meanings includes, but is not limited to:

1. “I have nothing worthwhile to contribute to this conversation.”
2. “I’m too lazy to read what you just wrote so I’m typing something useless in hopes that you’ll think I’m still paying attention.”
3. “Your statement lacks even the vaguest trace of humor but I’ll pretend I’m amused.”
4. “This is a pointless acronym I’m sticking in my sentence just because it’s become so engraved into my mind that when chatting, I MUST use the meaningless sentence-filler ‘lol.’”

（完全就是 “呵呵”。。。）

• See: lmao, lmfao, rofl, lawl, heh, haha, lolol, and 120 for similarities.
• Statement: Sorry if I’m not too cheery, my best friend just died yesterday.
• Worthless Reply: lol
• Statement: The golden ratio is truely an intersting aspect of not only mathematics, but art as well.
• Worthless Reply: lol
• Statement: … And then he says, “Your mom goes to college!”
• Worthless Reply: lol
• Statement: Hey, are you doing anything tonight? You could come over to my house and play some Unreal Tournie…
• Worthless Reply: lol, ok

### Voice-Over

Voice-over (also known as off-camera or off-stage commentary) is a production technique where a voice—that is not part of the narrative (non-diegetic)—is used in a radio, television production, filmmaking, theatre, or other presentations. The voice-over may be spoken by someone who appears elsewhere in the production or by a specialist voice actor. It is pre-recorded and placed over the top of a film or video and commonly used in documentaries or news reports to explain information.

### Conan Show

Conan is a late-night talk show airing each Monday through Thursday on TBS in the United States. The hourlong show premiered（首次公演） on November 8, 2010, and is hosted by writer, comedian and performer Conan O’Brien. The program’s host previously starred on NBC’s Late Night with Conan O’Brien for 16 years, then presented The Tonight Show for seven months until Jay Leno’s return to his version of The Tonight Show due to the 2010 Tonight Show conflict.

### Ellen Show

The Ellen DeGeneres Show, often shortened to Ellen, is an American television talk show hosted by comedian/actress Ellen DeGeneres. Debuting（/de'bju/ 初次登台） on September 8, 2003, it is produced by Telepictures and airs in syndication, including stations owned by NBCUniversal, in the United States and Canada. For its first five seasons, the show was taped in Studio 11 at NBC Studios in Burbank, California. It later moved to Stage 1 on the nearby Warner Bros. lot. Since the beginning of the sixth season, Ellen has broadcast in high definition. The show has won 36 Daytime Emmy Awards as of 2013. It was announced on March 11, 2013 that the show had been renewed through 2017, which would extend the show through its 14th season.

### Mark I

Mark I often refers to the first version of a weapon or military vehicle, and is sometimes used in a similar fashion in civilian product development. In some instances, the Arabic numeral “1” is substituted for the Roman numeral “I”.

“Mark”, meaning “model” or “variant”, can itself be abbreviated “Mk.”

### Publish or Perish

Publish or perish” is a phrase coined to describe the pressure in academia to rapidly and continuously publish academic work to sustain or further one’s career.

Frequent publication is one of few methods at scholars’ disposal（安排） to demonstrate academic talent. Successful publications bring attention to scholars and their sponsoring institutions, which can facilitate continued funding and an individual’s progress through their field. In popular academic perception, scholars who publish infrequently, or who focus on activities that do not result in publications, such as instructing undergraduates, may find themselves out of contention for available tenure-track positions. The pressure to publish has been cited as a cause of poor work being submitted to academic journals.

## Men List 01

### Yoshitomo Nara

Yoshitomo Nara (奈良美智 Nara Yoshitomo, born 5 December 1959 in Hirosaki, Japan) is a Japanese artist. He lives and works in Tokyo, though his artwork has been exhibited worldwide. Nara has had nearly 40 solo exhibitions since 1984. He is represented in New York City by Pace Gallery, in Los Angeles by Blum & Poe and in London by Stephen Friedman Gallery.

### Yoko Ono

Yoko Ono (オノ・ヨーコ 小野 洋子 Ono Yōko), born February 18, 1933, is a Japanese artist, singer-songwriter, and peace activist. She is the second wife and widow of John Lennon and is also known for her work in avant-garde art, music and filmmaking

Dropping out of the graduate track program in philosophy at Tokyo’s Peers School, Ono moved to New York in 1953 joining her immediate family who were already there. After some time at Sarah Lawrence College, she became involved in New York City’s downtown artists scene, collaborating and working with members in and around the Fluxus group. An independent artist in her own right before meeting Lennon, both the media and the public were critical of her for years. She was repeatedly criticized for her influence over Lennon and his music, and blamed for the breakup of the Beatles: The couple’s early years coincided with the band’s final ones. Her experimental art was also not popularly understood, and, after Lennon’s death, her disagreements with Paul McCartney received as much attention as her billboards and music releases, which the media usually advanced simply as attempts at self-promotion.

### Grace Hopper

Grace Murray Hopper (December 9, 1906 – January 1, 1992) was an American computer scientist and United States Navy rear admiral. A pioneer in the field, she was one of the first programmers of the Harvard Mark I computer, and developed the first compiler for a computer programming language. She popularized the idea of machine-independent programming languages, which led to the development of COBOL, one of the first modern programming languages. She is credited with popularizing the term “debugging” for fixing computer glitches(inspired by an actual moth removed from the computer). Owing to the breadth of her accomplishments and her naval rank, she is sometimes referred to as “Amazing Grace”. The U.S. Navy destroyer USS Hopper (DDG-70) is named for her, as was the Cray XE6 “Hopper” supercomputer at NERSC.

### The Everly Brothers

The Everly Brothers were American country-influenced rock and roll singers, known for steel-string guitar playing and close harmony singing. The duo, consisting of Isaac Donald “Don” Everly (born February 1, 1937) and Phillip “Phil” Everly (January 19, 1939 – January 3, 2014), were elected to the Rock and Roll Hall of Fame in 1986 and the Country Music Hall of Fame in 2001.

### Elvis Presley

Elvis Aaron Presley (January 8, 1935 – August 16, 1977) was an American singer, musician, and actor. Regarded as one of the most significant cultural icons of the 20th century, he is often referred to as “the King of Rock and Roll”, or simply, “the King”.

In November 1956, he made his film debut in Love Me Tender. … In 1973, Presley was featured in the first globally broadcast concert via satellite, Aloha from Hawaii. Several years of prescription drug abuse severely deteriorated his health, and he died in 1977 at the age of 42.

Presley is one of the most celebrated musicians of the 20th century. Commercially successful in many genres, including pop, blues and gospel, he is the best-selling solo artist in the history of recorded music, with estimated album sales of around 600 million units worldwide. He was nominated for 14 Grammys and won three, receiving the Grammy Lifetime Achievement Award at age 36, and has been inducted into multiple music halls of fame.

### Bob Dylan

Bob Dylan (/ˈdɪlən/; born Robert Allen Zimmerman, May 24, 1941) is an American musician, singer-songwriter, artist, and writer. He has been an influential figure in popular music and culture for more than five decades. Much of his most celebrated work dates from the 1960s, when he was an informal chronicler and a seemingly reluctant figurehead of social unrest. A number of Dylan’s early songs, such as “Blowin’ in the Wind” and “The Times They Are a-Changin’”, became anthems for the US civil rights and anti-war movements. Leaving behind his initial base in the culture of the folk music revival, Dylan’s six-minute single “Like a Rolling Stone” radically altered the parameters of popular music in 1965. His recordings employing electric instruments attracted denunciation and criticism from others in the folk movement.

## Men List 03

### Bill Joy

William Nelson Joy (born November 8, 1954) is an American computer scientist. Joy co-founded Sun Microsystems in 1982 along with Vinod Khosla, Scott McNealy and Andreas von Bechtolsheim, and served as chief scientist at the company until 2003. He played an integral role in the early development of BSD UNIX while a graduate student at Berkeley, and he is the original author of the vi text editor. He also wrote the 2000 essay “Why the Future Doesn’t Need Us”, in which he expressed deep concerns over the development of modern technologies. Some of his most notable contributions were the ex and vi editors and csh.

BBN had a big contract to implement TCP/IP, but their stuff didn’t work, and grad student Joy’s stuff worked. So they had this big meeting and this grad student in a T-shirt shows up, and they said, “How did you do this?” And Bill said, “It’s very simple — you read the protocol and write the code.

keywords: SUN, UNIX, TCP/IP, Berkeley, vi, csh,

### John D. Carmack

John D. Carmack (born August 20, 1970) is an American game programmer and the co-founder of Id Software. Carmack was the lead programmer of the Id video games Commander Keen, Wolfenstein 3D, Doom, Quake, Rage and their sequels. Carmack is best known for his innovations in 3D graphics, and is also a rocketry enthusiast and the founder and lead engineer of Armadillo Aerospace. In August 2013, Carmack took the position of CTO at Oculus VR.

### David Neil “Dave” Cutler, Sr

David Neil “Dave” Cutler, Sr. (born March 13, 1942) is an American software engineer, designer and developer of several operating systems including Windows NT at Microsoft and RSX-11M, VMS and VAXELN at Digital Equipment Corporation.

Cutler was also known for his disdain(蔑视) for all things Unix.

keywords: Windows NT, VMS, DEC, MS, Windows Azure, X Box

### Donald Knuth

Donald Ervin Knuth (/kəˈnuːθ/ kə-nooth; born January 10, 1938) is an American computer scientist, mathematician, and Professor Emeritus(名誉退休的) at Stanford University.

He is the author of the multi-volume work The Art of Computer Programming.(TAOCP). Knuth has been called the “father” of the analysis of algorithms. In addition to fundamental contributions in several branches of theoretical computer science, Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces.

As a writer and scholar, Knuth created the WEB and CWEB computer programming systems designed to encourage and facilitate literate programming, and designed the MIX/MMIX instruction set architectures. As a member of the academic and scientific community, Knuth is strongly opposed to the policy of granting software patents. He has expressed his disagreement directly to both the United States Patent and Trademark Office and European Patent Organization.

He is also the author of Surreal Numbers.

In 2006, Knuth was diagnosed with prostate(前列腺) cancer

(他怎么能在读博士期间就想好要写书，洋洋洒洒写了几十年。。。)

### Ken Thompson

Kenneth Thompson (born February 4, 1943), commonly referred to as ken in hacker circles, is an American pioneer of computer science. Having worked at Bell Labs for most of his career, Thompson designed and implemented the original Unix operating system. He also invented the B programming language, the direct predecessor to the C programming language, and was one of the creators and early developers of the Plan 9 operating systems. Since 2006, Thompson works at Google, where he co-invented the Go programming language.

Other notable contributions included his work on regular expressions and early computer text editors QED and ed, the definition of the UTF-8 encoding, his work on computer chess that included creation of endgame tablebases and the chess machine Belle.

### Rob Pike

Robert Pike (born 1956) is a Canadian software engineer and author. He is best known for his work at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs and Inferno operating systems, as well as the Limbo programming language.

He also co-developed the Blit graphical terminal for Unix; before that he wrote the first window system for Unix in 1981. Pike is the sole inventor named in AT&T’s US patent 4,555,775 or “backing store patent” that is part of the X graphic system protocol and one of the first software patents.

Over the years Pike has written many text editors; sam and acme are the most well known and are still in active use and development.

Pike, with Brian Kernighan, is the co-author of The Practice of Programming and The Unix Programming Environment. With Ken Thompson he is the co-creator of UTF-8. Pike also developed lesser systems such as the vismon program for displaying images of faces of email authors.

Pike is married to Renée French, and currently works for Google, where he is involved in the creation of the programming languages Go and Sawzall.

### Dennis M. Richie

Dennis MacAlistair Ritchie (September 9, 1941 – c. October 12, 2011) was an American computer scientist. He created the C programming language and, with long-time colleague Ken Thompson, the Unix operating system. Ritchie and Thompson received the Turing Award from the ACM in 1983, the Hamming Medal from the IEEE in 1990 and the National Medal of Technology from President Clinton in 1999. Ritchie was the head of Lucent Technologies System Software Research Department when he retired in 2007. He was the “R” in K&R C and commonly known by his username dmr.

Ritchie was found dead on October 12, 2011, at the age of 70 at his home in Berkeley Heights, New Jersey, where he lived alone. First news of his death came from his former colleague, Rob Pike. The cause and exact time of death have not been disclosed. He had been in frail health for several years following treatment for prostate cancer and heart disease. His death came a week after the death of Steve Jobs but did not receive as much media coverage. Computer historian Paul E. Ceruzzi said after his death: “Ritchie was under the radar. His name was not a household name at all, but… if you had a microscope and could look in a computer, you’d see his work everywhere inside.”

### Edsger W. Dijkstra

Edsger Wybe Dijkstra (Dutch pronunciation: [ˈɛtsxər ˈʋibə ˈdɛikstra] ( listen); 11 May 1930 – 6 August 2002) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.

Shortly before his death in 2002, he received the ACM PODC Influential Paper Award in distributed computing for his work on self-stabilization of program computation. This annual award was renamed the Dijkstra Prize the following year, in his honor.

Dijkstra was known for his habit of carefully composing manuscripts with his fountain pen. The manuscripts are called EWDs, since Dijkstra numbered them with EWD, his initials, as a prefix.

1. 提出 “goto 有害论”;
2. 提出信号量和 PV 原语;
3. 解决了“哲学家聚餐”问题;
4. 最短路径算法(SPF)和银行家算法的创造者;
5. 第一个 Algol 60 编译器的设计者和实现者;
6. THE 操作系统的设计者和开发者;

### Anders Hejlsberg

Anders Hejlsberg (born December 1960) is a prominent Danish software engineer who co-designed several popular and commercially successful programming languages and development tools. He was the original author of Turbo Pascal and the chief architect of Delphi. He currently works for Microsoft as the lead architect of C# and core developer on TypeScript.

Turbo Pascal 编译器的主要作者， Delphi 和 C# 之父，同时也是 .NET 创立者。

《Borland 传奇》里讲了他写的汇编是如何的牛逼轰轰，以及 Gates 怎么亲自去挖他到微软。

## 随便翻翻 01

Language agnostic

What’s your favorite “programmer” cartoon?

### 28 个 Unix/Linux 的命令行神器 | 酷 壳

28个Unix/Linux的命令行神器 | 酷 壳

• bash, vim, ssh
• 熟悉 bash 的作业管理，如： &, Ctrl-Z, Ctrl-C, jobs, fg, bg, kill, 等等。SIGQUIT, SIGINT
• filesystem, network basics, regexpr, fid, stream, pipe
• curl, wget, cut, paste, join, sort, uniq, awk, sed, split
• wireshark, dmesg, ldd
• dstat
• tmux

### 应该知道的Linux技巧 | 酷 壳

Try IRC

• Refs:
• Do It Yourself

### 说说你觉得最狂霸酷炫屌炸天的命令

• 以 sudo 的方式执行上次的命令，用于忘记加 sudo 的情况: sudo !!
• telnet towel.blinkenlights.nl Telnet 观看星球大战，IPV6 的话可以看到彩色版。（好长的故事，没有看完）
• sl 终端里开过一辆火车。
• bb 非常牛 B 的命令之一，是 aalib 的一个应用展示，在用户终端中用不停变换的字符组成一段视频，效果非常炫酷。
• aalib 这货让用户明白，没有什么是不能由 ASCII 来完成的。
• asciiquarium ASC II 水族馆。
• :(){:|:&};:, fork bomb. （不要乱试这个）

#!/bin/bash
./$0|./$0&

TODO: 这个 | 什么意思？

### Keen Team： 这群执著的人和那些纯粹的事

Keen Team： 这群执著的人和那些纯粹的事

1. 出名的都在安全公司，无名的都在自己的圈子，匿名的都在国家人才库
2. 团队为了准备比赛，‘闭关’了两个多月，每天夜以继日，工作时间超过 20 个小时，最终成功挑战了世界上最安全的操作系统。15 秒攻破 OS X，20 秒攻破 Windows 8.1，这些闪亮瞬间都是团队平时努力和专注的结果。”

### EMACS: The Extensible, Customizable Display Editor

EMACS: The Extensible, Customizable Display Editor

RMS 的论文（未读）

### Steve Yegge：编程的肮脏小秘密

Steve Yegge：编程的肮脏小秘密

### Peter Norvig：自学编程，十年磨一剑

Peter Norvig：自学编程，十年磨一剑

1. 你们着什么急？ (21 天系列之类）
2. 也不是 10 年， 是 10000 小时
3. 你想当程序员么？
• 沉醉于编程，编程是为了兴趣
• 在实践中学习
• 同其他程序员交流，多阅读其他人写的程序
• 读一个计算机科学专业, if you really want
• 做项目
• 至少学习半打编程语言
• 牢记“计算机科学”中包含着“计算机”这个词, which means you should know something about hardware
• 尽量参与语言的标准化过程, 有良好的意识，能尽快适应语言标准化的成果。
4. 所以尽管去书店大买 Java/Ruby/Javascript/PHP 书籍吧；你也许会发现他们真的挺管用。但是这样做不会改变你的人生，也不会让你在整体经验上有什么提高。24 小时，几天，几周，做一个真正的程序员？光靠读书可读不出来。你尝试过连续 24 个月不懈努力提高自己么？呵呵，如果你做到了，好吧，那么你开始上路了……

### How to be a Programmer

A Short, Comprehensive, and Personal Summary

### 对九个超级程序员的采访

1. 你们觉得对程序员最重要的事是什么？
• 沟通能力（写和说）。(Steve Yegge)
• 品味. It’s a thing I call “taste” (Linus Torvalds)
• 我不觉得只有一个，如果要我说一个的话，我说是“专注”。(Peter Norvig)
• 能为自己的直觉提供证据的能力。 (Tim Bray)
2. 关于编程，你们认为接下来的大事是什么？X-Oriented编程，Y语言，量子电脑 ？
• Web (Steve Yegge)
• 大规模的分布式处理 (Peter Norvig)
• 对付并行和复杂 (James Goslin)
3. 如果你有3个月学一个相对较新的技术，你会学什么？
• 我想把 Javascript 学得更好，然也当然也想学 flash. (Peter Norvig)
• 学习 3D渲染技术 （James Goslin）
• 安全，加密，数字签名，身份标识，等等。对我来说，从没学过这些东西对我来说是个很大的问题。 (Tim Bray)
4. 什么工具是你的最爱（操作系统，编程/脚本语言，文本编辑器，版本管理，shell，数据库，或其它没它你活不了的工具），为什么不是别的？
• Unix, Ruby, MySQL, Bash, Emacs, GIMP (Steve Yegge)
• Git, Micro-Emacs, Pine(Email-Reader) (Linus Torvalds)
• OS X, TextMate, Ruby, Subversion, MySQL (David Heinemeier Hansson)
• Not Windows, Mac, Linux。我喜欢 Python 和 Lisp. Emacs. (Peter Norvig)
• OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres。Mac并不见得有多好，但是它不需要很牛的技术，也不需要经常维护，这让我可以让我更专心得使用它。 (Dava Thomas)
• Unix/Linux, Python, vi+emacs, Firefox. (Guido Van Rossum)
• Unix, sam (一个非常简单的文本编辑器), 当然，一个好的C++编译器。 (Bjarne StrouStrup)
• Unix-like 的操作系统，像 Python 和 Ruby 的动态语言，像Java的静态语言（具体说来是Java API） Emacs, 还有, bash, whatever, NetBeans. (Tim Bray)
5. 你最喜欢的编程书是什么？
• Gödel, Escher, Bach: an Eternal Golden Braid SICP (Steve Yegge)
• The C Programming Language Operating Systems: Design and Implementation (Linus Torvalds)
• SICP (Peter Norvig)
• Quicksilver by Neil Stephenson (Guido Van Rossum)
• Programming Pearls byJon Bentley (James Goslin)
• The C Programming Language (Bjarne Stroustrup)
• Programming Pearls (Tim Bray)
6. 你最喜欢的和编程无关的一本书是什么？
• 1984 by George Orwell. (David Heinemeier Hansson)
• Guns, Germs & Steel by Jared Diamond (James Goslin)

## 随便翻翻 02

### 看看 9 种编程语言的发明者是怎么说的

1. Ryan Dahl：Node.js ==> 处理 I/O, Node 鼓励人们用非阻塞的模式
2. Guido van Rossum：Python ==> 必要时，要用高效的语言来取代之，比如 C 和 C++
3. Yukihiro Matsumoto ：Ruby ==> 让程序员更开心
4. Dmitry Jemerov：Kotlin ==> 开发更复杂，更高性，高频率交互的程序, 静态语言 Kotlin is for you
5. Martin Odersky：Scala ==> 将函数式和面向对象编程结合成一个包，给开发人员提供一个强大的语言，让人感觉他有很强的互补性
6. Bjarne Stroustrup：C++ ==> 在基础架构方面有无与伦比的优势
7. Lars Bak：Dart ==> With Dart 虚拟机，可以更快的运行和启动
8. Stefan Karpinski：Julia ==> 一种动态语言，非常简单的编程模型。但它有极高的效率
9. Rich Hickey ：Clojure ==> 为 JVM 发明一种动态的，函数式编程语言

### 心目中的编程高手系列

(很幽默，被百度百科收录了好几个）

-- Bill Joy MIT BBS 上说微软电话面试的一道题就是“Who do you think is the best
coder, and why?”。我觉得挺有意思的，也来凑个热闹。排名不分先后。

Bill Joy, 前任 Sun 的首席科学家，当年在 Berkeley 时主持开发了最早版本的 BSD。他

。据说他想看看自己能不能写个操作系统，就在三天里写了个自己的 Unix, 也就是 BSD

BBN在 Berkley Unix 里加上 BBN 开发的 TCP/IP 代码。但当时还是研究生的 B 伯伯怒了
，拒绝把 BBN TCP/IP 加入 BSD，因为他觉得 BBN 的 TCP/IP 写得不好。于是 B 伯伯出

。最令偶晕倒的是，B 伯伯硕士毕业后决定到工业界发展，于是就到了当时只有一间办公

John Carmack，ID Software 的 founder 和 Lead Programmer。上个月和一个搞图形的师

Vinci 就是“从 Vinci 来的 Leonardo”的意思。叫别人“Da Vinci”就不知所谓乐。嗯，扯

David Cutler，VMS 和 Windows NT 的首席设计师，去微软前号称硅谷最牛的 kernel 开

。他面试秘书时必问："what do you think of the word 'FUCK'?"，让无数美女刹羽而归
。终于有一天，一个同样火爆的女面对这个问题脱口而出："That's my favorite word"。

Donald E. Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛

Hejlsberg，或者学 Linux 不知道 Linus Torvalds 一样，不可原谅啊。:-) 为了让文章

86 年就 code freeze，还附带 2^n 美分奖励等等都是耳熟能详，偶就不饶舌乐。顺便说

，不失轻快跳脱。记得几年前读 Concrete Mathematics，时不时开怀大笑，让老妈极其郁

Ken Thompson，C 语言前身 B 语言的作者，Unix 的发明人之一 (另一个是 Dennis M.
Riche 老大，被尊为 DMR)，Belle(一个厉害的国际象棋程序) 的作者之一，操作系统Plan
9 的主要作者 (另一个是大牛人 Rob Pike, 前不久被 google 挖走了)。Ken 爷爷也算是

Bell Lab 里供大家日常使用。很快大家就发现 Ken 爷爷总能进入他们的帐户，获得最高

。原来，代码里的确有后门，但后门不在 Unix 代码里，而在编译 Unix 代码的 C 编译器

Rob Pike, AT&T Bell Lab 前 Member of Technical Staff，现在 google 研究操作系统
。罗伯伯是 Unix 的先驱，是贝尔实验室最早和 Ken Thompson 以及 Dennis M. Ritche

NASA用在航天飞机上。他还是两本经典，The Unix Programming Environment 和 The
Practice of Programming 的作者之一。如果初学者想在编程方面精益求精，实在该好好

Plan9，的主要作者。可惜的是，Plan9 并没有引起多少人的注意。罗伯伯一怒之下，写出

System Software Research is Irrelevant 里萧瑟地说现在没有人再关心系统研究的前沿

Dennis M. Ritchie 既然 Ken Thompson 是我的偶像，新闻组上人称 DMR 的 Dennis M.
Ritchie 自然也是，毕竟两人共同缔造了 UNIX，而 Dennis 几乎独力把 C 搞大 (当然，C

SmallTalk 得奖，所以就成了唯二的乐)。一个人一生能做出一个卓越的系统已经不易，
DMR 的 C 和 UNIX 长盛不衰近 30 年，至今生机勃勃，DMR 此生可以无憾的说。D 爷爷也

，但数据类型和执行方式都和 C 大大不同。说到语言，D 爷爷对后来人有非常中肯的建议
：抱着学习的目的来开发你自己的语言，不要冀望于它被众人接受。这个建议不光对语言

Bazaar 里阐述的一样，就是要消除自己对现有工具的不爽之处。谁知 D 爷爷无心插柳，C

。不过 D 爷爷更喜欢开 NASCAR，而 KM 独爱巨无霸。J D 爷爷自称心中不供偶像，如果

Edsger Wybe Dijkstra 对，就是 E.W. Dijkstra. 一提到 EWD，很多人就会想起找最短路

1959 年，他才把这个算法发表在 Numerische Mathematik 的创刊号上，权为捧场。:-)
EWD 在多个领域牛气冲天，端的是理论和编程两手硬的高手。只不过他的很多工作比较深

。于是经典就诞生乐：Notes on Structured Programming。戴爷爷从此被尊为结构化编程

1973 起，他的故事就在美国发生了。

Anders Hejlsberg，微软.NET 的首席架构师，编程语言设计和实现的顶尖高手。他一手做

http://java.mblogger.cn/iexploiter/posts/1505.aspx。Artima 上有 Anders 谈 C#的

## 随便翻翻 03

Popular Coding Convention on Github

• 不用 Tab 来缩进。推荐用 soft tab 即 4 个空格；
• 函数名后加空格，参数列表里除第一个参数，前面都加空格；
• 控制语句参考上一条，dowhilefor 后面都加空格；
• 遵循 80 字规范；
• 避免不必要的前缀，比如 int 型前加 i_
• Python 的引用语句，CSS 的 selector 语句，若有多项，都要一行一个；
• 避免无聊的多余空格 (extraneous whitespace), 如使用 Lambda 表达式，作为参数传递的函数少用空格；
• 不按照 = 来对齐，比如 int foo = 0;\ndouble bar = 1.0;，简单处理就行。
• 定义类用 MyFairLady，而不是 myFairLady

int function (int foo, int bar) {
double indent_with_4_spaces;
}

while (true) {
/* text within 80 chars */
}

import sys;
import numpy; # not import sys, numpy

div
p {
color : red;
}

/* No extraneous whitespace */
spam(ham[1], {eggs: 2})
/* With extraneous whitespace */
spam( ham[ 1 ], { eggs: 2 } )

class MyFairLady ... /* CamelCase with a capital first letter */
val myValue = ...
def myMethod = ...
var myVariable ...

### All Our Patent Are Belong To You | Tesla Motors

All Our Patent Are Belong To You | Tesla Motors

When I started out with my first company, Zip2, I thought patents were a good thing and worked hard to obtain them. After Zip2, when I realized that receiving a patent really just meant that you bought a lottery ticket to a lawsuit, I avoided them whenever possible.

The unfortunate reality is the opposite: electric car programs (or programs for any vehicle that doesn’t burn hydrocarbons) at the major manufacturers are small to non-existent, constituting an average of far less than 1% of their total vehicle sales.

Technology leadership is not defined by patents, which history has repeatedly shown to be small protection indeed against a determined competitor, but rather by the ability of a company to attract and motivate the world’s most talented engineers. We believe that applying the open source philosophy to our patents will strengthen rather than diminish Tesla’s position in this regard.

### 从《图灵的秘密》想到的

《编码：隐匿在计算机软硬件背后的语言》《逻辑的引擎》《复杂》，《图灵的秘密》

### 关于程序员学英语的经验

• 第一，既要看代码，也要读文档。
• x should be not more than five, x <= 5;
• x should be no more than five, x = 5;
• 最近的例子来自这句话

But as with any web-based system, atom-based solutions trade latency for scalability, making atom often inappropriate for very low-latency notifications。

这句话之所以难翻译，问题似乎在于，除去句子的主干，之前有一个But as…，之后又有一个making…。然而我最后发现，对这个句子有疑问的程序员其实根本没搞懂 trade…for… 的用法（翻译为“基于atom的解决方案需要权衡延迟性和扩展性”），如果明白它是“牺牲xx换取xx”之后，整个句子就相当好理解，也非常容易翻译了：

与所有基于 web 的系统一样，基于 atom 的解决方案为追求可扩展性，增大了延迟，所以 atom 往往并不合适用对延迟要求极低的提示。

• 第二，注意读音。
• 解决这个问题有一个非常好的办法，就是学习美国大学的公开课，耶鲁、斯坦福等学校的计算机系都放出了许多高质量的公开课，学习其中的一些精品课程，不但能夯实基础，还能顺带学会许多每天都要遇到，但不会或者读错的术语。
• 第三，锻炼英文表达。
• recognizable, usable words
• 即便答案近在咫尺（输入正确的关键词，Google 的第一条结果就是答案），但程序员就是一筹莫展——因为他不知道计算机的“嘟嘟”声是 beep，不知道搜“多线程”资料应该用 concurrency，也不知道
• “死机”是 system halt
• “黑屏”是 blank screen
• “（登录时）不停返回”是 infinite loop……
• 要解决这个问题，最好的办法是在阅读资料时多用心，记住这些说法；另一方面，没事的时候多浏览 stackoverflow 之类的网站，不要因为问题与自己无关而忽略，多留心这些问题到底是什么，是如何表达的。这样，在自己遇到问题时，才能迅速找到可能的解决方案，节省时间。

## 随便翻翻 04

### 5分钟让你 get 100 个 TED points!

5分钟让你get 100个 TED points!

1. A lot of people aspire to be productive so they can become happier, but happiness has been shown to lead to productivity, not the other way around.
2. You have three brain systems for love: lust, romantic love, and attachment. To develop more intimate relationships with your significant other, it’s important to invest in all three.
3. Taking time off can make you a lot more productive, because time away from your work lets you explore, reflect, and come up with better ideas.

### They never forget: The strange gift of perfect 记忆

They never forget: The strange gift of perfect记忆

### 【美好肉体】Crossfit女神 Jennifer Selter

【美好肉体】Crossfit女神Jennifer Selter

### Jiro Dreams of Sushi | 寿司之神

Jiro Dreams of Sushi | 寿司之神中文配音版

### 学习是一种能力

There are good study references, leave for later reading, make note here

1. 克服惰性(Overcoming Inertia)
2. 关注大牛(Watch the Pros)
3. 建立知识网(Let the Information Flow Begin)
4. 多听多看(Listen and Watch)
5. 行动起来(Time for Action)
6. 写博客(Blogging)
7. 感受技术的脉搏(Feel the Pulse)
8. 参加聚会以及会议(Meetups and Conferences)
9. 拥抱GitHub
10. 专注学习(Concentrated Learning)

But we should always keep in mind: from Internet, we can get the newest staff; but from good books, we can get things systemly, and in a short time.

Dont waste too much time, surfing (constant searching but no answer) the internet.

### 25 Celebrities Who Share An Uncanny Resemblance

25 Celebrities Who Share An Uncanny Resemblance

## Math List 01

### Variable (mathematics)

In elementary mathematics, a variable is an alphabetic character representing a number which is either arbitrary or not fully specified or unknown. Making algebraic computations with variables as if they were explicit numbers allows one to solve a range of problems in a single computation. A typical example is the quadratic formula（二项式）, which allows to solve every quadratic equation by simply substituting the numeric values of the coefficients of the given equation to the variables that represent them.

The concept of variable is also fundamental in calculus. Typically, a function y = f(x) involves two variables, its argument x and its value y. The term “variable” comes from the fact that, when the argument (also called the “variable of the function”) varies, then the value varies accordingly.

In more advanced mathematics, a variable is simply a symbol representing some data, which is commonly a number, but may also be any mathematical object such as a vector, a matrix or even a function. In this case, the original property of “variability” of a variable is not kept (except, sometimes, for informal explanations).

Similarly, in computer science, a variable is a name (commonly an alphabetic character or a word) representing some value represented in computer memory. In mathematical logic, a variable is either a symbol representing an unspecified term of the theory, or a basic object of the theory, which is manipulated without referring to its possible intuitive interpretation.

Here are other specific names for variables.
• A unknown is a variable in which an equation has to be solved for.
• An indeterminate (like ) is a symbol, commonly called variable, that appears in a polynomial or a formal power series. Formally speaking, an indeterminate is not a variable, but a constant in the polynomial ring of the ring of formal power series. However, because of the strong relationship between polynomials or power series and the functions that they define, many authors consider indeterminates as a special kind of variables.
• A parameter is a quantity (usually a number) which is a part of the input of a problem, and remains constant during the whole solution of this problem. For example, in mechanics the mass and the size of a solid body are parameters for the study of its movement. It should be noted that in computer science, parameter has a different meaning and denotes an argument of a function.
• Free variables and bound variables
• A random variable is a kind of variable that is used in probability theory and its applications.

Other notational usages. Some of the most common usages: (大赞!!!)

a, b, c, and d (sometimes extended to e and f) often represent parameters or coefficients.
a0, a1, a2, ... play a similar role, when otherwise too many different letters would be needed.
ai or ui is often used to denote the i-th term of a sequence or the i-th coefficient of a series.
f and g (sometimes h) commonly denote functions.
i, j, and k (sometimes l or h) are often used to denote varying integers or indices in an indexed family.
l and w are often used to represent the length and width of a figure.
n usually denotes a fixed integer, such as a count of objects or the degree of an equation.
When two integers are needed, for example for the dimensions of a matrix, one uses commonly m and n.
p often denotes a prime numbers or a probability.
q often denotes a prime power or a quotient
r often denotes a remainder.
x, y and z usually denote the three Cartesian coordinates of a point in Euclidean geometry. By extension, they are used to name the corresponding axes.
z typically denotes a complex number, or, in statistics, a normal random variable.
α, β, γ, θ and φ commonly denote angle measures.
ε usually represents an arbitrarily small positive number.
ε and δ commonly denote two small positives.
λ is used for eigenvalues.
σ often denotes a sum, or, in statistics, the standard deviation.

### Constant (mathematics)

Constant (mathematics)

Notable mathematical constants
• 0 (zero).
• 1 (one), the natural number after zero.
• π (pi), the ratio of a circle’s circumference to its diameter
• e, approximately equal to 2.718281828459045235360287…
• i, the imaginary unit such that i2 = -1.
• Square root of 2
• φ (golden ratio), ≈1.618, or algebraically

### Mathematical notation

Mathematical notation

Modern notation

The 18th and 19th centuries saw the creation and standardization of mathematical notation as used today. Euler was responsible for many of the notations in use today: the use of a, b, c for constants and x, y, z for unknowns, e for the base of the natural logarithm, sigma (Σ) for summation, i for the imaginary unit, and the functional notation f(x). He also popularized the use of π for Archimedes constant (due to William Jones’ proposal for the use of π in this way based on the earlier notation of William Oughtred). Many fields of mathematics bear the imprint of their creators for notation: the differential operator is due to Leibniz, the cardinal infinities to Georg Cantor (in addition to the lemniscate (∞) of John Wallis), the congruence symbol (≡) to Gauss, and so forth.

Computerized notation

TeX, LaTex, etc

### Bijection

Bijection

In mathematics, a bijection (or bijective function or one-to-one correspondence) is a function between the elements of two sets, where every element of one set is paired with exactly one element of the other set, and every element of the other set is paired with exactly one element of the first set. There are no unpaired elements. In formal mathematical terms, a bijective function f: X → Y is a one to one and onto mapping of a set X to a set Y.

A bijection from the set X to the set Y has an inverse function from Y to X. If X and Y are finite sets, then the existence of a bijection means they have the same number of elements. For infinite sets the picture is more complicated, leading to the concept of cardinal number (基数), a way to distinguish the various sizes of infinite sets.

A bijective function from a set to itself is also called a permutation (置换).

Bijective functions are essential to many areas of mathematics including the definitions of isomorphism, homeomorphism, diffeomorphism, permutation group, and projective map.

### Parallelepiped

Parallelepiped

In geometry, a parallelepiped is a three-dimensional figure formed by six parallelograms (the term rhomboid is also sometimes used with this meaning). By analogy, it relates to a parallelogram just as a cube relates to a square or as a cuboid to a rectangle. In Euclidean geometry, its definition encompasses all four concepts (i.e., parallelepiped, parallelogram, cube, and square). In this context of affine geometry, in which angles are not differentiated, its definition admits only parallelograms and parallelepipeds. Three equivalent definitions of parallelepiped are

• a polyhedron with six faces (hexahedron), each of which is a parallelogram,
• a hexahedron with three pairs of parallel faces, and
• a prism of which the base is a parallelogram.

The rectangular cuboid (six rectangular faces), cube (six square faces), and the rhombohedron (six rhombus faces) are all specific cases of parallelepiped.

“Parallelepiped” is now usually pronounced /ˌpærəlɛlɨˈpɪpɛd/, /ˌpærəlɛlɨˈpaɪpɛd/, or /-pɨd/; traditionally it was /ˌpærəlɛlˈɛpɨpɛd/ parr-ə-lel-ep-i-ped in accordance with its etymology in Greek παραλληλ-επίπεδον, a body “having parallel planes”.

Parallelepipeds are a subclass of the prismatoids (a polyhedron that has all of its vertices in two parallel planes).

### Probability mass function

Probability mass function

### Probability distribution

Probability distribution

• Probability density, Probability density function, p.d.f: most often reserved for continuous random variables.
• Probability mass, Probability mass function, p.m.f.: for discrete random variables.

Lemniscate

### Galois theory

Galois theory

In mathematics, more specifically in abstract algebra, Galois theory, named after Évariste Galois, provides a connection between field theory and group theory. Using Galois theory, certain problems in field theory can be reduced to group theory, which is in some sense simpler and better understood.

Originally, Galois used permutation groups to describe how the various roots of a given polynomial equation are related to each other. The modern approach to Galois theory, developed by Richard Dedekind, Leopold Kronecker and Emil Artin, among others, involves studying automorphisms of field extensions.

Further abstraction of Galois theory is achieved by the theory of Galois connections.

1. 对 Quadric Equation the Galois group of the polynomial x2 − 4x + 1 consists of two permutations: the identity permutation which leaves A and B untouched, and the transposition permutation which exchanges A and B. It is a cyclic group of order two, and therefore isomorphic to Z/2Z.
2. Consider the polynomial: the Galois group is isomorphic to the Klein four-group.

Congruent

### Quotient Space

Quotient Space

If two vectors v1, v2 in Linear Space X are congruent modulo Y (a linear subspace of X), then v1, v2 and all other vectors congruent with them form a linear space, denoted by X/Y or X mod Y. （我写的，没有语法错误把？）

In linear algebra, the quotient of a vector space V by a subspace N is a vector space obtained by “collapsing” N to zero. The space obtained is called a quotient space and is denoted V/N (read V mod N or V by N).

mod: modulo

Let X = R2 be the standard Cartesian plane, and let Y be a line through the origin in X. Then the quotient space X/Y can be identified with the space of all lines in X which are parallel to Y. That is to say that, the elements of the set X/Y are lines in X parallel to Y. This gives one way in which to visualize quotient spaces geometrically. （X 二维平面，Y 面上的一条直线（dim Y 还是 2），然后 X/Y 是所有的平行于那条直线的向量）

Another example is the quotient of Rn by the subspace spanned by the first m standard basis vectors. The space Rn consists of all n-tuples of real numbers (x1,…,xn). The subspace, identified with Rm, consists of all n-tuples such that the last n-m entries are zero: (x1,…,xm,0,0,…,0). Two vectors of Rn are in the same congruence class modulo the subspace if and only if they are identical in the last n−m coordinates. The quotient space Rn/ Rm is isomorphic to Rn−m in an obvious manner.

V 是 U，W 的 Direct Sum，然后有

• dim V = dim U + dim V，以及
• U = V/W

### Prime – Symbol

Prime – Symbol

The prime symbol ( ′ ), double prime symbol ( ″ ), and triple prime symbol ( ‴ ), etc., are used to designate several different units and for various other purposes in mathematics, the sciences, linguistics and music. The prime symbol should not be confused with the apostrophe （就是英文单引号 '）, single quotation mark, acute accent, or grave accent; the double prime symbol should not be confused with the double quotation mark（"）, the ditto mark, or the letter double apostrophe. The prime symbol is very similar to the Hebrew geresh, but in modern fonts the geresh is designed to be aligned with the Hebrew letters and the prime symbol not, so they should not be interchanged.

P.S. 曾经弄键盘布局的时候差不多把各种标点符号的英文都摸了个清（所以才有 Neo-Extended Programmer Dvorak

### ∂

The character ∂($$\partial$$) (html element: &#8706; or &part;, unicode: U+2202) or is a stylized d mainly used as a mathematical symbol to denote a partial derivative such as $$\frac{\partial z}{\partial x}$$ (read as “the partial derivative of z with respect to x”). The symbol was originally introduced by Legendre in 1786, but only gained popularity when it was used by Jacobi in 1841.

∂ is also used to denote the following:

• The Jacobian, $$\frac{\partial (x,y,z)}{\partial (u,v,w)}$$
• The boundary of a set in topology. （比如 Manifold of M is denoted as ∂M）
• The boundary operator on a chain complex in homological algebra.
• The boundary operator of a differential graded algebra.
• The Dolbeault operator on complex differential forms.

The symbol may be referred to as “del”, “dee”, “partial dee”, or “partial”. （读法）

### Annihilator

Annihilator

（我去。。。上次弄的这个图片把我自己吓一跳。。。）这是一个互相（Mutual）的说法。x，y annihilate 如果它们的 Scalar Product（x，y）= 0。

### Euclidean Space

Euclidean Space

Euclidean Structure 在线性空间的基础上定义了向量的 Inner Product（内积），也叫 Dot Product，Scalar Product。引入了 Norm 的概念，这样就能定义一个向量的长度（Norm，模），这个空间也就有个测度（Metric）。

## Words List 07 08 09

### Manifold

Manifold

$\int_{\partial \Omega}\omega=\int_\Omega \mathrm {d}\omega.$

### UTF-8

UTF-8 without BOM

The Internationally defined Standard ISO/IEC 10646, Universal Character Set (UCS) know as UTF-8 (Universal Character Set + Transformation Format—8-bit) is a variable-width encoding that can represent every character in the Unicode character set. It was designed for backward compatibility（后向兼容） with ASCII and to avoid the complications（ 并发症） of endianness（字节顺序） and byte order marks in UTF-16 and UTF-32.

UTF-8 has become the dominant character encoding for the World Wide Web, accounting for more than half of all Web pages. The Internet Mail Consortium (IMC) recommends that all e-mail programs be able to display and create mail using UTF-8. The W3C recommends UTF-8 as default encoding in their main standards (XML and HTML).

The official IANA code for the UTF-8 character encoding is UTF-8.

The UTF-8 BOM is a sequence of bytes (EF BB BF) that allows the reader to identify the file as an UTF-8 file.

Normally, the BOM is used to signal the endianness of the encoding, but since endianness is irrelevant to UTF-8, the BOM is unnecessary.

According to the Unicode standard, the BOM for UTF-8 files is not recommended:

P.S. GitHub 上新建的文档都是 UTF-8 without BOM 编码； Windows 系统上用记事本新建的文档都是 ANSI 编码（微软自家用）。建议使用 UTF-8 without BOM

Notes

• the International Organization for Standardization (ISO)
• the International Electrotechnical Commission (IEC)
• Byte Order Mark (BOM)
• Internet Assigned Numbers Authority (IANA) 互联网号码分配局

Refs

### Mutatis Mutandis

Mutatis Mutandis

Mutatis mutandis is a Latin phrase meaning “changing [only] those things which need to be changed” or more simply “[only] the necessary changes having been made”.

The phrase carries the connotation that the reader should pay attention to differences between the current statement and a previous one, although they are analogous. (For example, in writing about appropriate forms of dress in biblical times, the New Testament generally refers to females in considering immodesty and extravagance in dress; but, analogously, the same can be applied, mutatis mutandis [“changing only those things which need to be changed,” namely, the sex of the person referred to], to men also.) It can be understood as meaning “acknowledging the difference between the two” or (more succinctly（简便地）) as “acknowledging differences”. This term is used frequently in economics, philosophy, logic, and law, to parameterize a statement with a new term, or note the application of an implied, mutually understood set of changes. The phrase is also used in the study of counter-factuals, wherein the requisite change in the factual basis of the past is made and the resulting causalities are followed.

（这个“哦”显得有点娘炮。。。但是 That’s it）

### M3U

M3U

M3U is a computer file format that contains multimedia playlists. It originally was designed for audio files, such as MP3, but various software now uses it to play video file lists. M3U’s can also point a media player to an online streaming audio source. Numerous media players and software applications supports the M3U file format.

Phonetics 语音学

### AMS - American Mathematical Society

AMS - American Mathematical Society

The American Mathematical Society (AMS) is an association of professional mathematicians dedicated to the interests of mathematical research and scholarship, and serves the national and international community through its publications, meetings, advocacy（辩护） and other programs.

The society is one of the four parts of the Joint Policy Board for Mathematics (JPBM) and a member of the Conference Board of the Mathematical Sciences (CBMS).

The AMS was an early advocate of the typesetting program TeX, requiring that contributions be written in it and producing its own packages AMS-TeX and AMS-LaTeX. TeX and LaTeX are now ubiquitous（无所不在的） in mathematical publishing.

### Hash Mark

Hash Mark

Hash marks are short lines, running perpendicular to sidelines or sideboards, used to mark locations, primarily in sports.

### Number Sign

Number Sign

Number sign is a name for the symbol #, which is used for a variety of purposes, including (mainly in the United States) the designation（指示） of a number (for example, “#1” stands for “number one”). In recent years, it has been used for “hashtagging” on social media websites.

The term number sign is most commonly used when the symbol is used before a number. In the United States, it is sometimes known as the pound sign, and has been traditionally used in the food industry as an abbreviation for pounds avoirdupois（常衡）. Outside of North America the symbol is called hash and the corresponding telephone key is called the “hash key” (and the term “pound sign” usually describes the British currency symbol “£”). The symbol is defined in Unicode as U+0023 # number sign (HTML: # as in ASCII).

The symbol may be confused with the musical symbol called sharp (♯). In both symbols, there are two pairs of parallel lines. The main difference is that the number sign has two horizontal strokes while the sharp sign has two slanted parallel lines which must rise from left to right, in order to avoid being obscured by the horizontal musical staff lines.

### Exclamation Mark

Exclamation Mark

The exclamation mark or exclamation point is a punctuation mark usually used after an interjection or exclamation to indicate strong feelings or high volume (shouting), and often marks the end of a sentence. Example: “Watch out!” Similarly, a bare exclamation mark (with nothing before or after) is often used in warning signs.

The mark can also be used at the beginning of a word instead of at the end. For example, several computer languages use “!” for logical negation; e.g. “!A” means “the logical negation of A”, also called “not A”. There are many other specialized uses of this mark, such as in mathematics where it denotes the factorial operation.

In the Geek Code version 3, “!” is used before a letter to denote that the geek refuses to participate in the topic at hand. In some cases, it has an alternate meaning, such as G! denoting a geek of no qualifications, !d denoting not wearing any clothes, P! denoting not being allowed to use Perl, and so on. They all share some negative connotations however.

### Hashtag

Hashtag

A hashtag is a word or an unspaced phrase prefixed with the number sign (“#”). It is a form of metadata tag. Words in messages on microblogging and social networking services such as Twitter, Facebook, Google+, VK or Instagram may be tagged by putting “#” before them, either as they appear in a sentence, (e.g., “New artists announced for #SXSW2014 Music Festival”) or appended to it. The term “hashtag” can also refer to the hash symbol itself when used within the context of reciting a hashtag.

Hashtags make it possible to group such messages, since one can search for the hashtag and get the set of messages that contain it. A hashtag is only connected to a specific medium and can therefore not be linked and connected to pictures or messages from different platforms.

Because of its widespread use, the word was added to the Oxford English Dictionary in June 2014.

Notes

• 新浪微博使用 #tag#，而不是 #tag，这和中文的特殊性有关。

Render unto Caeser…

“Render unto Caesar” is the beginning of a phrase attributed to Jesus in the synoptic （对观福音书的）gospels（福音书）, which reads in full, “Render unto Caesar the things that are Caesar’s, and unto God the things that are God’s” (Ἀπόδοτε οὖν τὰ Καίσαρος Καίσαρι καὶ τὰ τοῦ Θεοῦ τῷ Θεῷ)

This phrase has become a widely quoted summary of the relationship between Christianity and secular（世俗） authority. The original message, coming in response to a question of whether it was lawful for Jews to pay taxes to Caesar, gives rise to multiple possible interpretations about the circumstances under which it is desirable for the Christian to submit to earthly authority.

CSL

YAML

CDN

Chi Rho

Chi Rho

### Moment

Kurtosis - Wikipedia, the free encyclopedia

Kurtosis Excess Kurtosis

A distribution with negative excess kurtosis is called platykurtic, or platykurtotic. “Platy-” means “broad”. In terms of shape, a platykurtic distribution has a lower, wider peak around the mean and thinner tails.

## Quotation List

### 对一切冷酷和独裁，我们的回答是生活

2014年4月17日在墨西哥家中去世，享年87岁。

## Math List 02

### Orthogonal Matrix

Orthogonal Matrix

In linear algebra, an orthogonal matrix is a square matrix with real entries whose columns and rows are orthogonal unit vectors (i.e., orthonormal vectors), i.e.

$Q^\mathrm{T} Q = Q Q^\mathrm{T} = I,$

where I is the identity matrix.

This leads to the equivalent characterization: a matrix Q is orthogonal if its transpose is equal to its inverse:

$Q^\mathrm{T}=Q^{-1}, \,$

An orthogonal matrix Q is necessarily invertible (with inverse $$Q^{-1} = Q^T$$), unitary ($$Q^{-1} = Q^*$$) and therefore normal ($$Q^*Q = QQ^*$$) in the reals. The determinant of any orthogonal matrix is either +1 or −1. As a linear transformation, an orthogonal matrix preserves the dot product of vectors, and therefore acts as an isometry of Euclidean space, such as a rotation or reflection. In other words, it is a unitary transformation.

The set of n × n orthogonal matrices forms a group O(n), known as the orthogonal group. The subgroup SO(n) consisting of orthogonal matrices with determinant +1 is called the special orthogonal group, and each of its elements is a special orthogonal matrix. As a linear transformation, every special orthogonal matrix acts as a rotation.

The complex analogue of an orthogonal matrix is a unitary matrix.

unitary-matrix

### Conjugate Transpose

Conjugate Transpose

Trace Diagram

### Matrix Decomposition

Matrix Decomposition

Incident Matrix

Vorticity

Fractal

e

### Cyclotomic Polynomial

https://en.wikipedia.org/wiki/Cyclotomic_polynomial

### Euler Phi Function

Euler Phi Function

## 随便翻翻 05

### 一些名词

• camelCase
• snake_case
• PascalCase
• CAPS_SNAKE_CASE
• Snake_Pascal_Case
• Param Block:
Block
• opening/closing braces on seperate line (Allman)
• opening/closing braces on same line as declaration (OTBS)

### GitLab 的故事 - Teahour.fm

GitLab 的故事 - Teahour.fm

• GitLab 的老大 Randx 原来英语很差，但是参与很多的 Issue 后英语变好了很多。四级到六级哈哈。
• Randx 的每个月都能发布一个版本，难得的坚持。
• Randx 有三个星期缺勤，两个星期生病；一个星期打游戏。

### 意志力是什么？

• 自我控制(self-control)，能控制内心冲突，抑制恶魔一方。
• 比方说跑马拉松时会肌肉酸痛、呼吸不顺、腹部疼痛等，此时内心就会出现想停下来舒缓痛楚的欲望，然而另一方面也希望可以完成全程马拉松好成就自己是个好汉，此时内心就产生了一个冲突。要继续跑还是要停下来？若能成功的抑制停下来舒缓不适的欲望，也就控制了这一次的内心冲突，马拉松得以继续跑下去。因此，完成一次马拉松=重复地对抗内心冲突、抑制想停止的欲望=意志力的展现。
• 用握力器测测你的意志力
• 意志力强，则减肥见效；减肥成功，意志力变更强
• 要提升意志力并不需要甚么特别的训练，只要可以每天规律地进行一些平常不做的事就可以了

## 豆瓣阅读

EDC（Everyday Carry)
1. 简单普及一些危险因素信息的对应标记，都是英文缩写：
• 有毒有害物质：GAS。
• 易燃易爆物质：EXPL。
• 化学物质：CHEM。
• 漏电：ELEC。
• 燃料泄露：FUEL。
• 可能垮塌：COLL。
2. 如果标志有危险信息，还可进的话，就说明危险因素已经被排除了。

## Men List: 02（音乐人特别版 01）

### Izumi Sakai 坂井泉水

Izumi Sakai 坂井泉水

Izumi Sakai (坂井泉水 Sakai Izumi), (February 6, 1967 – May 27, 2007), was a Japanese Pop singer, song writer, and member of the group Zard.

ZARD 的歌大多偏向轻快、激昂的曲风，且多为连续剧或动画的主题歌，像《SLAM DUNK》的 ED《My Friend》、《真·中华一番》（中华小当家/中华一番）的 OP，《无法呼吸》，被称作动漫歌曲界不朽的名作。 ZARD 也曾为《灌篮高手》、《名侦探柯南》等动漫/电视剧等演唱过主题曲。

### Maki Ohguro 大黑摩季

Maki Ohguro 大黑摩季

Maki Ohguro (大黒 摩季 Ōguro Maki?) is a Japanese pop singer and songwriter from Sapporo, Hokkaido.

In 1989, she passed the ‘3rd BAD’ audition. Her famous songs are “DA・KA・RA”, “Chotto”, and so on… Her second single “DA・ka・RA” sold 1.1 million copies and won the ‘Japan Record Grand Prix’ newcomer award of the year. Because of her rare public appearances, she was originally known as a phantom singer, like Izumi Sakai of Zard. “Anata Dake Mitsumeteru”, the ending theme for Slam Dunk（灌篮高手啊亲）, was the number 2 song for the month of January 1994, and is certified as a Million record, selling 1,087,160 copies.

### 玛莉特 Marit Larsen

Marit Larsen，原 M2M 女子组合的成员。在 2002 年 4 月解散后，Marion 在 2005 年出了其首张专辑 Here I Am， Marit 则在 2006 年出了其首张单飞专辑 Under The Surface，08 年推出了第二张专辑 The Chase。

Marit Elisabeth Larsen (born 1 July 1983) is a Norwegian singer and songwriter. She began playing violins at age of 5, and played it until the age of 8. She gained international fame during her teenage years as a member of the pop duo（二重唱） M2M with childhood friend Marion Raven. More recently she has pursued her own music career releasing her solo debut album, Under the Surface, in 2006. Her second album, The Chase, was released in Norway in October 2008. The third album, titled Spark was released in Norway, Denmark, Sweden, Finland on 18 November 2011 and Germany, Austria, Switzerland on 16 December 2011.

If A Song Could Get Me You，太喜欢这首歌了~

### M2M

M2M

M2M was a pop music duo formed by two Norwegians, Marion Elise Raven and Marit Elisabeth Larsen. They released three albums under Warner Music Norway: Shades of Purple, The Big Room, and The Day You Went Away: The Best of M2M, a greatest hits album released by their record label after they disbanded.

Raven and Larsen come from Lørenskog in the district east of Oslo. They had known each other since the age of five. Discovered by the Norwegian music producers Kenneth M. Lewis and Kai Robøle, the girls were signed to Atlantic Records in 1998. The name “M2M” was chosen from a contest held for fans to give a name to the band, having been previously known as Marion & Marit.

### The Eagles

The Eagles

The Eagles are an American rock band formed in Los Angeles in 1971 by Glenn Frey, Don Henley, Bernie Leadon and Randy Meisner. With five number-one singles, six Grammy Awards, five American Music Awards and six number one albums, the Eagles were one of the most successful musical acts of the 1970s. At the end of the 20th century, two of their albums, Their Greatest Hits (1971–1975) and Hotel California, were ranked among the 20 best-selling albums in the U.S. according to the Recording Industry Association of America. Hotel California is ranked 37th in Rolling Stone’s list of “The 500 Greatest Albums of All Time” and the band was ranked number 75 on the magazine’s 2004 list of the 100 Greatest Artists of All Time.

They are one of the world’s best-selling bands of all time, having sold over 150 million records[7]—100 million in the U.S. alone—including 42 million copies of Their Greatest Hits (1971–1975) and 32 million copies of Hotel California. They are the fifth-highest-selling music act and highest-selling American band in US history. No American band sold more records than the Eagles during the 1970s.

The Eagles released their self-titled debut album in 1972, which spawned three top 40 singles: “Take It Easy”, “Witchy Woman” and “Peaceful Easy Feeling”. Their next album, Desperado (1973), was less successful than the first, reaching only number 41 on the charts; neither of its singles reached the top 40. However, the album contained two of the band’s most popular tracks: “Desperado” and “Tequila Sunrise”. They released On the Border in 1974, adding guitarist Don Felder midway through the recording of the album. The album generated two top 40 singles: “Already Gone” and their first number one, “Best of My Love”.

It was not until 1975’s One of These Nights that the Eagles became arguably America’s biggest band. The album included three top 10 singles: “One of These Nights”, “Lyin’ Eyes” and “Take It to the Limit”, the first hitting the top of the charts. They continued that success and hit their commercial peak in late 1976 with the release of Hotel California, which would go on to sell over 16 million copies in the U.S. alone and over 32 million copies worldwide. The album yielded two number-one singles, “New Kid in Town” and “Hotel California”. They released their last studio album for nearly 28 years in 1979 with The Long Run, which spawned three top 10 singles: “Heartache Tonight”, “The Long Run” and “I Can’t Tell You Why”, the lead single being another chart-topping hit.

The Eagles disbanded in July 1980 but reunited in 1994 for the album Hell Freezes Over, a mix of live and new studio tracks. They have toured intermittently since then and were inducted into the Rock and Roll Hall of Fame in 1998. In 2007, the Eagles released Long Road Out of Eden, their first full studio album in 28 years and their sixth number one album. The next year they launched the Long Road Out of Eden Tour in support of the album. In 2013, they began the extended History of the Eagles Tour in conjunction with the band’s documentary release, History of the Eagles.

R.Kelly

### Leonard Cohen

Leonard Cohen

Leonard Norman Cohen, CC GOQ (born 21 September 1934) is a Canadian singer-songwriter, musician, poet, and novelist. His work has explored religion, politics, isolation, sexuality, and personal relationships. Cohen has been inducted into the American Rock and Roll Hall of Fame and both the Canadian Music Hall of Fame and the Canadian Songwriters Hall of Fame. He is also a Companion of the Order of Canada, the nation’s highest civilian honour. In 2011, Cohen received a Prince of Asturias Award for literature.

The critic Bruce Eder assessed Cohen’s overall career in popular music by asserting that “[he is] one of the most fascinating and enigmatic … singer/songwriters of the late ’60s … [and] has retained an audience across four decades of music-making … Second only to Bob Dylan (and perhaps Paul Simon) [in terms of influence], he commands the attention of critics and younger musicians more firmly than any other musical figure from the 1960s who is still working at the outset of the 21st century.”

The Academy of American Poets has commented more broadly on Cohen’s overall career in the arts, including his work as a poet, novelist, and songwriter, stating that “[Cohen’s] successful blending of poetry, fiction, and music is made most clear in Stranger Music: Selected Poems and Songs, published in 1993, which gathered more than 200 of Cohen’s poems … several novel excerpts, and almost 60 song lyrics … While it may seem to some that Leonard Cohen departed from the literary in pursuit of the musical, his fans continue to embrace him as a Renaissance man who straddles the elusive artistic borderlines.”

Cohen will release his 13th studio album, Popular Problems, on Columbia Records a day after his 80th birthday on September 22, 2014.

Leehom Wang 王力宏

Queen

Jason Chen 陈以桐

Katy Perry

## Men List: 04 (程序员特别版 02)

### Richard Stallman

keywords: Free Software, GPL, Emacs, GCC, GNU

### Julian Assange

keywords: WikiLeaks

### Linus Torvalds

keywords: Linux, Git

### Bill Gates

keywords: Windows, BASIC

Brian Kernighan

alan-kay

Steve Wozniak

## Men List: 05 (数学家特别版 01)

Leonhard Euler

David Hilbert

### Kurt Gödel

Kurt Friedrich Gödel (/ˈkɜrt ɡɜrdəl/; German: [ˈkʊʁt ˈɡøːdəl] ; April 28, 1906 – January 14, 1978) was an Austrian, and later American, logician, mathematician, and philosopher. Considered with Aristotle and Gottlob Frege to be one of the most significant logicians in history, Gödel made an immense impact upon scientific and philosophical thinking in the 20th century, a time when others such as Bertrand Russell, A. N. Whitehead, and David Hilbert were pioneering the use of logic and set theory to understand the foundations of mathematics.

### William Sealy Gosset

William Sealy Gosset

Ronald Fisher

Karl Pearson

Egon Pearson

John Wishart

Jerzy Neyman

Abraham Wald

Harald Cramer

### 柯尔莫哥洛夫（Andrey Nikolaevich Kolmogorov）

Andrey Nikolaevich Kolmogorov (Russian: Андрей Николаевич Колмогоров; (IPA: [ɐn'drʲej nʲɪkɐˈlajɪvʲɪt͡ɕ kəlmə'ɡorəf]), 25 April 1903 – 20 October 1987) was a 20th-century Soviet mathematician who made significant contributions to the mathematics of probability theory, topology, intuitionistic（直觉） logic, turbulence（湍流）, classical mechanics, algorithmic information theory and computational complexity.

## Men List: 06 (诺贝尔物理学奖 01)

Walter Cronkite

Gregor Mendel

Don Juan

### As An Emacs Newbie

Emacs 101

What is Emacs

Some Sites/Tutorials

Emacs Notes

Edit Tables

• table-insert, table-capture, table-release
• table-{insert, delete}-{row, column}
• table-generate-source, table-justify
+------------+---------+---------+--------+--------+
|My          |         |   First |Emacs   |Table   |
+------------+---------+---------+--------+--------+
|Tab         |         |      to |move    |forward |
+------------+---------+---------+--------+--------+
|   S-Tab    |this row |   to    |  move  |backward|
|            |   is    |         |        |        |
|            |justified|         |        |        |
|            |to center|         |        |        |
+------------+---------+---------+--------+--------+
|this col is |         | this col|        |the     |
|widened     |         |       is|        |newly   |
|            |         |justified|        |inserted|
|            |         | to right|        |row     |
+------------+---------+---------+--------+--------+
|            |new COL  |  now to |        |now to  |
|            |here!    |  insert |        |insert  |
|            |         |     col |        |row     |
+------------+---------+---------+--------+--------+
|            |         |         |        |        |
+------------+---------+---------+--------+--------+

Org-mode（Org-mode，让生活更美好）

Keyboard Macros

• start-kbd-macro, （鼠标移过来，左边有个链接）
• end-kbd-macro
• call-last-kbd-macro
• apply-macro-to-region-lines, name-last-kbd-macro
• recentf-open-files
• 一个完整的例子: 比如你想这样（左边变到右边）
start-kbd-macro                   *start-kbd-macro*
end-kbd-macro       ====>         *end-kbd-macro*
call-last-kbd-macro               *call-last-kbd-macro*

• file header to specify mode, etc
;; -*- mode: Lisp; fill-column: 75; comment-column: 50; -*-
• file header: first line for normal file, second line for script file(it has a shebang

• Comment
• comment-region, comment-box, line-comment-banner
• I rename this three to comment-{region, box, banner}
Misc (以后慢慢把 misc 里的移出来）
• evil-mode 太牛逼了~ 不配置的话，vim 确实方便点。
• C-h c(describe-key-briefly), C-h f(describe-function)
• goto-line, goto-char
• delete-trailing-whitespaces
• Insert Date
• Shadow Copy（强烈推荐），更牛逼的还有个 v cursor, 牛逼的我的眼都要瞎了
• C-x r s R and C-x r g R (think: register-set/register-get).
• eval-buffer, eval-region: 修改后配置后快速应用
• Line Numbers
• Zap To Char, M-z e
• yasnippet: 这完虐 VS 之类的 IDE 啊有木有
• Abbrev: 如果你觉得有些东西不好敲
• Bookmarks
• C-x k: Close File （我怎么老忘）。。。
• C-x C-+, C-x C--, C-x C-0, Zoom In/Out, Resume
toggle-case-fold-search
read-only-mode
Emacs Relative

I use this to edit almost all of my JianShu Posts now.

Emacs Chat
• Xah Lee (ErgoEmacs)

• Jānis Mancēvičs

• Tom Marble

• Iannis Zannos

• Magnar Sveen

• Sacha Chua (with Bastien Guerry)

• Bastien Guerry

• Carsten Dominik (author of org-mode)

• Print out a huge chunk of elisp code to read, and enjoy it.
• “We only use git
• “I’m sorry, I just use it(writing emacs lisp) as a way to relax, sometimes.”
• “It’s my hobby. Like others people would do wood knits or something”
• “I actually want my computer to work exactly as how I wanted.”
• Thomas Kjeldahl Nilsson

• Avdi Grimm (Org-mode, Ruby, etc.)

• John Wiegley

### Jamie Zawinski

Lisp hacker, early Netscape developer, and nightclub owner Jamie Zawinski, a.k.a. jwz, is a member of the select group of hackers who are as well known by their three-letter initials as by their full names.

“Ptthh, wrong!” and he’d walk away. So that was kind of getting thrown in the deep end. It was like the Zen approach – the master hit me with a stick, now I must meditate.

“Oh my god; now I’m trying to debug GDB, which I’ve never looked at before.”

We spent a long time talking about features. Well, not a long time, but it seemed like a long time because we were living a week every day. We stripped features, definitely. We had a whiteboard; we scribbled ideas; we crossed them out. This was a group of like six or seven people. I don’t remember exactly the number. A bunch of smart, egotistical people sitting in a room yelling at each other for a week or so.

In some ways, yeah. Programming is obviously much more rigid. But as far as the overall ability to express a thought, they’re very similar. Not rambling, having an idea in your head of what you’re trying to say, and then being concise about it. I think that kind of thinking is the overlap between programming and writing prose.

When I’m just writing the first version of the program, I tend to put everything in one file. And then I start seeing structure in that file. Like there’s this block of things that are pretty similar. That’s a thousand lines now, so why don’t I move that into another file. And the API sort of builds up organically that way. The design process is definitely an ongoing thing; you never know what the design is until the program is done. So I prefer to get my feet wet as early as possible; get something on the screen so I can look at it sideways.

We had to ship the thing even if it wasn’t perfect. We can ship it later and it would be higher quality but someone else might have eaten our lunch by then.

I always wish people would comment more, though the thing that makes me cringe is when the comment is the name of the function rephrased. Function’s called push_stack and the comment says, “This pushes to the stack.” Thank you.

You’ve got to say in the comment something that’s not there already. What’s it for? Either a higher-level or a lower-level description, depending on what’s most important. Sometimes the most important thing is, what is this for? Why would I use it? And sometimes the most important thing is, what’s the range of inputs that this expects?

Long variable names. I’m not a fan of Hungarian notation, but I think using actual English words to describe things, except for loop iterators, where it’s obvious. Just as much verbosity as possible, I guess.

I usually end up putting the leaf nodes up at the top of the file—try to keep it basically structured that way. And then usually up at the top, document the API. What are the top-level entry points of this file, this module, whatever? With an object-y language, that’s done by the language for you. With C you’ve got to be a little more explicit about that. In C I do tend to try to have a .h file for every .c file that has all the externs for it. And anything that’s not exported in the .h file is static. And then I’ll go back and say, “Wait, I need to call that,” and I change it. But you’re doing that explicitly rather than just by accident.

Sometimes. Normally I would think that someone who is a big fan of C++ templates—keep me away from that guy. But that might just be a snap judgment on my part. Maybe in the context they’ve used them, they actually work fine. Certainly with the folks I’ve worked with, ability to argue their point was important because we all ended up being a pretty argumentative bunch. With that environment, that helped a lot. That certainly doesn’t have anything to do with programming ability. That’s just interpersonal-dynamics stuff.

I know I ended up doing a lot of reading of code and asking questions. I think one thing that’s really important is to not be afraid of your ignorance. If you don’t understand how something works, ask someone who does. A lot of people are skittish about that. And that doesn’t help anybody. Not knowing something doesn’t mean you’re dumb—it just means you don’t know it yet.

So there were definitely times, especially early on, where I felt like, “Oh my god, I don’t know anything.” It would just be embarrassing—but that was just being insecure. Being the young kid around all these people with PhDs— “Aaah, I don’t know anything! I’m an idiot! How did I bluff my way into this?”

That just seemed bizarre and wrong. But I don’t know. Maybe it’s not wrong. Maybe that’s the caveman thoughts: “Back in my day, we programmed with a nine-volt battery and a steady hand!”

I actually haven’t read very many of those. The one I always recommend is Structure and Interpretation of Computer Programs, which a lot of people are afraid of because it’s Lispy, but I think does a really good job of teaching programming without teaching a language.

Seibel: Is there a key skill programmers must have?

Zawinski: Well, curiosity – taking things apart. Wanting to know what’s going on under the hood. I think that’s really the basis of it. Without that I don’t think you get very far. That’s your primary way of acquiring knowledge. Taking something apart and looking at it is how you learn to build your own. At least for me. I’ve read very few books about computers. My experience has been digging through source code or reference manuals. I’ve got a goal and, alright, to do this I need to know what this thing does and what this thing does. And I’ll just sort of random-walk through that until I find where I’m going.

## Foundations of Python Network Programming

The Building Blocks: Stacks and Libraries

## Geoprocessing with Python

Week 1: Reading Vector Data with OGR

• Open Source RS/GIS Modules

• OGR: supported many different vector formats

• Get all drivers:

for i in range(ogr.GetDriverCount()):
print ogr.GetDriver(i).GetName()

Driver is for Write especially, but we prefer read data with driver too.

import ogr
driver = ogr.GetDriverByName('PDF')
dataSource = driver.Open('test.shp', 0)
layer = dataSource.GetLayer()
layer.GetFeatureConut(), layer.GetExtent()
feature = layer.GetFeature(0)
dataSource.Destroy()
• The Working Directory

import  os, os.chdir('chang/dir/to')
• OGR API Refs PDF

Week 2: Creating Geometries and Writing Vector Data with OGR

point = ogr.Geometry(ogr.wkbPoint);     # Usage: point.AddPoint(x, y, z=0)

line = ogr.Geometry(ogr.wkbLineString)
line.SetPoint(0, 30, 30)

outring = ogr.Geometry(ogr.wkbLineRing)
# ...
outring.CloseRings()

polygon = ogr.Geometry(ogr.wkbPolygon)

print polygon.GetGeometryCount()
ring = polygon.GetGeometryRef(INDEX)
featureDefn = feature.GetDefnRef()
feateruDefn = layer.GetLayerDefn()
fieldDefn = feature.GetFieldDefnRef(0)
fieldDefn = featureDefn.GetFieldDefn(1)
#Create one from Scratch:
fieldDefn = ogr.FieldDefn('id', ogr.OFTString) # ogr.OFTInteger...
fieldDefn.SetWidth(4)

[datasource = [
layers = [
features obey featureDefn = [
geometry +
fieldDefns
]
]
]

Write to Shp file

dataSource = driver.CreateDataSource('new-shpfile.shp')
layer = dataSource.CreateLayer('new-layer', geom_type=ogr.wkbPoint)
layer.CreateField(fieldDefn)
featureDefn = layer.GetLayerDefn()
feature = ogr.Feature(featureDefn) # Create a new feature
feature.SetGeometry(point)
feature.SetField('id', 23)
layer.CreateFeature(feature) # Write the feature to the layer

Week 3: Filters and Simple Analysis of Vector Data

Attribute Filters

layer.GetFeatureCount()
layer.SetAttributeFilter()
layer.GetFeatureCount() # see, some features filtered out
layer.SetSpatialFilter(<geom>)
layer.SetSpatialFilterRect(min_x, min_y, max_x, max_y)

More Complicated Filters: SQL support refs,

caveats(警告): not all sql is supported

# 0/1 for True/False
geom1.Intersect(geom2)           # ==> 0 / 1 # 我理解的，Intersect是 A 和 B 是否 Intersect
geom1.Disjoint (geom2)           # ==> 0 / 1
geom1.Touches  (geom2)           # ==> 0 / 1 # TouchES，是 A TouchES B
geom1.Crosses  (geom2)           # ==> 0 / 1
geom1.Within   (geom2)           # ==> 0 / 1
geom1.Contains (geom2)           # ==> 0 / 1
geom1.Overlaps (geom2)           # ==> 0 / 1 # A & B overlaps, or A overlaps B, like
geom1.Equal    (geom2)           # ==> 0 / 1
geom1.Intersection       (geom2) # ==> geom_intersection
geom1.Union              (geom2) # ==> geom_union
geom1.Difference         (geom2) # ==> geom_difference
geom1.SymmetricDifference(geom2) # ==> geom_symmdiff
geom1.Buffer          (distance) # ==> geom_buffer
geom1.GetEnvelope             () # ==> Get extent as a list,
#     a.k.a (minX, maxX, minY, maxY)

Week 4: Projections and Functions

For Spatial Reference Objects, different ways to specify projections

• Well-Known Text (WKT)
• PROJ.4: e.g. +proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
• EPSG (European Petroleum Survey Group): e.g. 32612
• USGS,

see importFromUSGS() description at OGRSpatialReference: e.g.

(1, 12, (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 12)
• Getting a Layer’s Projects: spatialRef

import osr                      # first of first
spatialRef = osr.SpatialReference()
spatialRef.ImportFromEPSG(32612)
spatialRef.ImportFromProj4(<proj4_string>)
• Exporting a Projection

ExportToWkt()
ExportToPrettyWkt()
ExportToProj4()
ExportToPCI()
ExportToUSGS()
ExportToXML()
• Creating a coordinate Transform

coordinates transform? First, we need the spatial reference for the source and target.

sourceSR = osr.SpatialReference()
sourceSR.ImportFromXXXX() # same for targetSR
coordinateTrans = osr.CoordinateTransformation(sourceSR, targetSR)
• Projecting a Geometry

# PYTHONPATH, for modules
sys.path.append(new_path)

Glob: Lists files in a directory that match a pattern

import glob
glob.glob('./[0-9].\*')
glob.glob('\*.gif')
glob.glob('?.gif')
for fn in glob.glob('/shapfiles/\*.shp'):
print fn

Week 5: Reading Raster Data with GDAL

GDAL, supports about 75 raster formats:

• ArcInfo grids, ArcSDE raster, Imagine, Idrisi, ENVI, GRASS, GeoTIFF
• HDF4, HDF5
• USGS DOQ, USGS DEM
• ECW, MrSID
• TIFF, JPEG, JPEG2000, PNG, GIF, BMP
• see more: GADL Raster Formats
import gdal
# All gdalconst constants start with a prefix which minimizes
# the possibility of conflicts with other modules, import them:
from gdalconst import *

GDAL data drivers

• Register all drivers at once: gdal.AllRegister()

driver = gdal.GetDriverByName('HFA')
driver.Register()
dataset = gdal.Open('aster.img', GA_ReadOnly)
if dataset is None:
print 'Could not open file'
sys.exit(1)

Getting Image Dimensions

cols  = dataset.RasterXSize
rows  = dataset.RasterYSize
bands = dataset.RasterCount

Getting Georeference Info

adfGeoTransform[0]      # top left x
adfGeoTransform[1]      # w-e pixel resolution
adfGeoTransform[2]      # rotation, 0 if image is "north up"
adfGeoTransform[3]      # top left y
adfGeoTransform[4]      # rotation, 0 if image is "north up"
adfGeoTransform[5]      # n-s pixel resolution
# Coordinates are for top left corners of pixels
# unlike Imagine, which uses centers

file extension for the Arc/Info Binary Grid format, another df from Arc/info is ARC/INFO ASCII Grid format maybe means “Acr/info df(data format)”

geotransform = dataset.GetGeoTransform()
originX      = geotransform[0]
originY      = geotransform[3] # Good Design!!!
pixelWidth   = geotransform[1]
pixelHeight  = geotransform[5]

Computing Pixel Offsets

• xOffset = int((x – originX) / pixelWidth)
• yOffset = int((y – originY) / pixelHeight)
• (x – originX) / pixelWidth ~= 3.25 ==> 3

Week 6: Map Algebra and Writing Raster Data

Manipulating data with Numeric

compute NDVI on raster.img

NDVI = (NIR - RED) / (NIR + RED), NIR(band3), RED(band2)

data2 = band2.ReadAsArray(0, 0, cols, rows).astype(Numeric.Float16)
data3 = band3.ReadAsArray(0, 0, cols, rows).astype(Numeric.Float16)
mask = Numeric.greater(data3 + data2, 0) # not 0
ndvi = Numeric.choose(mask, (-99, (data3 - data2) / (data3 + data2)))

Creating a New Dataset

driver = inDataset.GetDriver()
outDataset = driver.Create(filename, cols, rows, 1, GDT_Float32)
# Space on disk is allocated immediately

Georeferencing a new data set

geoTransform = inDataset.GetGeoTransform()
outDataset.SetGeoTransform(geoTransform )
proj = inDataset.GetProjection()
outDataset.SetProjection(proj)

Writing to a raster data set

outBand = outDataset.GetRasterBand(1)
outBand.WriteArray(ndvi, 0, 0) # WriteArray(array, xoff, yoff)

Reading & writing by block

blockSize = 64
for i in range(0, rows, blockSize):
if i + blockSize < rows:
numRows = blockSize
else:
numRows = rows – i
for j in range(0, cols, blockSize):
if j + blockSize < cols:
numCols = blockSize
else:
numCols = cols – j
data = band.ReadAsArray(j, i, numCols, numRows)
# do calculations here to create outData array
outBand.WriteArray(outData, j, i)

Setting histogram

outBand.SetNoDataValue(-99)
histogram = outBand.GetDefaultHistogram()
outBand.SetDefaultHistogram(histogram[0], histogram[1], histogram[3])

Week 7: More Raster Processing

gdal.CreateAndReprojectImage( <source_dataset>, <output_filename>,
src_wkt = <source_wkt>,
dst_wkt = <output_wkt>,
dst_driver = <Driver>,
eResampleAlg = <GDALResampleAlg>)
import gdal, osr
from gdalconst import *
inFn = 'd:/data/classes/python/data/aster.img'
outFn = 'd:/data/classes/python/data/aster_geo.img'
driver = gdal.GetDriverByName('HFA')
driver.Register()
# input WKT
inDs = gdal.Open(inFn)
inWkt = inDs.GetProjection()
# output WKT
outSr = osr.SpatialReference()
outSr.ImportFromEPSG(4326)
outWkt = outSr.ExportToWkt()
# reproject
gdal.CreateAndReprojectImage(inDs, outFn, src_wkt=inWkt, dst_wkt=outWkt, dst_driver=driver, eResampleAlg=GRA_Bilinear)
inDs = None

GDAL & OGR utilities

• Installed with FWTools and available from the FWTools Shell

• ogrinfo

ogrinfo sites.shp
ogrinfo sites.shp sites
ogrinfo –al sites.shp
ogrinfo sites.shp -al -so -spat 46000 4590000 490000 4600000
• ogr2ogr

# Converts from one data type to another
# Converts shapefile to KML
ogr2ogr -f KML -dsco NameField=Name counties.kml ut_counties.shp

# Convert a KML file to a shapefile and reproject
ogr2ogr -f "ESRI Shapefile" -s_srs "EPSG:4326" -t_srs "EPSG:26912" counties_utm.shp counties.kml

# Copy just a subset of fields with –select
ogr2ogr -f KML -select name,state_name counties1.kml ut_counties.shp

# Can use some of the same switches as with ogrinfo, like
# Limit by attribute with –where
# Limit by spatial extent with –spat
# Use –append to append to an existing file
• gdalinfo

# Prints info about a raster data set
gdalinfo raster.img
# See the documentation for ways to suppress some of the info
• gdal_translate

# Convert from one data type to another
# Convert to full-sized jpg
gdal_translate -of jpeg aster.img aster1.jpg
# Make a much smaller jpg
gdal_translate -of jpeg -outsize 10% 10% aster.img aster2.jpg
# Only use the first band in the image
gdal_translate -of jpeg -outsize 10% 10% -b 1 aster.img aster3.jpg
# Re-order the bands
gdal_translate -of jpeg -outsize 10% 10% -b 3 -b 2 -b 1 aster.img aster4.jpg
# Subset the image
gdal_translate -of jpeg -projwin 458000 4658000 483000 4631000 aster.img aster5.jpg

# Build overviews (pyramids) for an image
# To build Imagine-style pyramids:
gdal_translate -of hfa -projwin 458000 4658000 483000 4631000 aster.img astersub.img
gdaladdo --config HFA_USE_RRD YES astersub.img 3 9 27 81
• gdalwarp

# Reproject images
gdalwarp -of hfa -t_srs EPSG:4326 -r bilinear aster.img aster_geo.img
• gdal_merge.py

# Python script to mosaic images
# Only works with some output formats (not jpeg or png, for example)
gdal_merge.py -o mosaic1.tif -of gtiff -co tfw=yes q0519ne.jpg q0520nw.jpg
# Mosaic and subset at the same time
gdal_merge.py -o mosaic2.tif -of gtiff -co tfw=yes -ul_lr 424600 4622700 430000 4620000 q0519ne.jpg q0520nw.jpg
# Make a reduced resolution mosaic
gdal_merge.py -o mosaic3.tif -of gtiff -co tfw=yes -ps 100 100 q0519ne.jpg q0520nw.jpg
# Mosaic lots of files at once
gdal_merge -o mosaic4.tif -of gtiff -co tfw=yes -ps 100 100 --optfile files.txt
# where files.txt has filenames, one per line, like: q2.jpg \n q3.jpg \n etc

## Improv Wisdom: Don’t Prepare, Just Show Up

• prologue
• the first maxim: say yes
• the second maxim: don’t prepare
• the third maxim: just show up
• the fourth maxim: start anywhere
• the fifth maxim: be average
• the sixth maxim: pay attention
• the seventh maxim: face the facts
• the eighth maxim: stay on course
• the ninth maxim: wake up to the gifts
• the tenth maxim: make mistakes, please
• the eleventh maxim: act now
• the twelfth maxim: take care of each other
• the thirteen maxim: enjoy the ride epilogue
1. The older Days

always go by the rules, use the recipe, follow the pattern, rehearse the script, copy the masters, etc.

Be short, follow the lines in everything.

As improvisers we discover that we don’t need this unrealistic guarantee to begin. The only real failure is not doing anything.

Why not explore, get moving on your life, kick-start your dreams, paint outside the lines?

they are can-do people, they improvise.

Improvisation ( [,ɪmprəvaɪ'zeʃən]即兴创作；即席演奏) is not the study of comedy.

An excellent manual on swimming is useless until you jump into the pool.

My aim is to nudge out of your comfortable poolside chair, guide you to climb onte the high board, and cheer you on as you dive into to the clear, crystal water.

Don’t over acting, it’s a tool should always be put into service with a healthy dose of common sense.

A successful life involves both planning and improvising.

“going with the flow”?

“Pisces Mortui Solum Cum Flumine Natant”. (Only the dead fish go with the flow“)

• …yes I said yes I will Yes. – James Joyce, Ulysses

• crazy to “yes” to everything,
• Saying yes (and follow through with support) prevent you from committing a cardinal sin - blocking.
• As we practice this affirmative response to life, positive things can happen.
• Try this: for one day say yes to everything. Set your own preferences aside. See what’s gonna happen
• don’t prepare

• Empty yourself of everything. – Lao Tse, Tao Te Ching
• We often substitude planning, ruminating, or list-making for actually doing something about our dreams.
• Instead of preparing an outcome, ready yourself, for whatever may come.
• Substitute attention for preparation. Then you will be working in real time.
• Not a big deal.
• just show up

• Stop talking. Start walking. – L.M. Heroux
• Shit off procrastination, laziness, fears
• Kick-start your life - walk, run, crawl, flaw, bicycle.
• Using Rituals
• create a simple ritual
• think of what will make the habit easy or more attractive to do.
• Set a time to do the preparatory ritual each day
• Focus on doing it faithfully.
• Showing Up for others
• Changing Location
• e.g. eat at different places. make a change
• Walk, run, bike, skip to the places that you need to be.
• Motivation is not a prerequisite for showing up.
• the fourth maxim: start anywhere
• the fifth maxim: be average
• the sixth maxim: pay attention
• the seventh maxim: face the facts
• the eighth maxim: stay on course
• the ninth maxim: wake up to the gifts
• the tenth maxim: make mistakes, please
• the eleventh maxim: act now
• the twelfth maxim: take care of each other
• the thirteen maxim: enjoy the ride epilogue

## ELisp Basics

message, nil, integerp, equal, string-equal, setq, if, let, progn, while, interactive

(print (format "yay %d" x))
(defun fun_name (params) "msg" body)

## Overview of Text-Processing in Emacs Lisp

point
point-{min, max}
line-{beginning, end}-position
region-{beginning, end}
{goto, forward, backward}-char
delete-{char, region}
insert

## Emacs Lisp Examples

How to Write a Emacs Major Mode for Syntax Coloring

## Inkscape Official Tutorials

• Basic tutorial
• Shapes tutorial
• Bitmap tracing tutorial
• Calligraphy tutorial
• Elements of Design tutorial
• Tips and tricks
• Interpolate

Basic tutorial

• The Basic Tutorial covers
• managing documents,
• shape tool basics,
• selection techniques,
• transforming objects with selector,
• grouping,
• setting fill and stroke,
• alignment, and
• z-order.

• This tutorial covers
• copy/paste,
• node editing,
• freehand and
• bezier drawing,
• path manipulation,
• offsets,

, and - text tool - The ultimate power tool of Inkscape is the XML editor

[Shapes tutorial(http://inkscape.org/doc/shapes/tutorial-shapes.html)

Rectangle: F4

Ellipse: F5

Star

Spiral

Conclusion

Inkscape’s shape tools are very powerful. Learn their tricks and play with them at your leisurethis will pay off when you do your design work, because using shapes instead of simple paths often makes vector art faster to create and easier to modify.

### Bitmap tracing tutorial

Brightness Threshold

Optimal Edge Detection

Color Quantization

After tracing, we Simplify

Calligraphy(书法) tutorial

1. There are three main styles of calligraphy:
• Western or Roman
• Arabic
• Chinese or Oriental This tutorial focuses mainly on Western calligraphy, as the other two styles tend to use a brush (instead of a pen with nib), which is not how our Calligraphy tool currently functions.

• Angle & Fixation
• fixed angle

• fixed angle
• Tremor
• Wiggle & Mass

Calligraphy is not only fun; it’s a deeply spiritual art that may transform your outlook on everything you do and see. Inkscape’s calligraphy tool can only serve as a modest introduction. And yet it is very nice to play with and may be useful in real design. Enjoy!

Elements of Design tutorial 1. Overview

• Elements of Design
• Principles of Design

Composition: make them together

## Learning IPython for Interactive Computing and Data Visualization

• Preface
• §1. Getting Started with IPython
• §2. Interactive Work with IPython
• §3. Numeric Computing with IPython
• §4. Interactive Plotting and Graphical Interfaces
• §5. High-Performance and Parallel Computing
• §6. Customizing IPython
1. Get the example code

§1. Getting Started with IPython

1. Packages (check all in one site: PyPI - Python Package Index)
• IPython
• Numpy
• SciPy
• Matplotlib
• Matplotlib-basemap
• NetworkX
• Pandas
• PIL - Python Image Library
• PySide (Python wrapper around Qt)
• PyQt(similar to PySide but with a different license)
• Cython( for using c code in python)

• Getting binary installers
• Windows
• OS X
• Linux
• Debian: sudo apt-get install ipython-notebook
• Fedora: sudo yum install python-ipython-notebook
• Using the Python packaging system: easy_install ipython # will be replaced by pip someday pip install ipython # recommended

• Optional dependencies for IPython
• pyzmq: needed for IPython’s parallel computing features, such as Qt console and Notebook
• pygments: highlight syntax in Qt console
• tornado: required by web-based notebook

# all in all:
easy_install ipython[zmq,qtconsole,notebook]
• Installing the development versions(for experienced users)

git clone https://github.com/ipython/ipython.git
cd ipython
python setu.py install # or: python setupegg.py develop
• Ten IPython essentials
• Running the IPython console: ipython %pinfo supper, or pinfo supper, or supper?: “object supper not found” appending ? or ?? to get information about var
• Using IPython as a system shell Ipython magic commands: with prefix %(can be omitted)
• Using the history recent past output: _, then __, then ___, that’s all. recent past input: _i, then _ii, then _iii, that’s all.
• Tab completion
• Executing a script with the %run command
• Quick benchmarking with the %timeit command

%timeit [x*x for x in range(100000)]
# output: 100 loops, best of 3: 6.33 ms per loop
• Quick debugging with the %debug command and: %pdb magic command to activate the automatic execution of the IPython debugger as soon as an exception is raised.
• Interactive computing with Pylab

%pylab # then we entered pylab session
x = linspace(-10., 10., 1000)
plot(x, sin(x)) # tah~
• Using the IPython Notebook

ipython notebook # run it in shell
# then go to 127.0.0.1:8080 in your browser
• Customizing IPython

ipython profile create # run it in a shell
# output: [ProfileCreate] Generating default config file: u'/root/.config/ipython/profile_default/ipython_config.py'
#         [ProfileCreate] Generating default config file: u'/root/.config/ipython/profile_default/ipython_notebook_config.py'
• Summary

#### §3. Numeric Computing with IPython

before we start this chapter: 1. run ipython notebook in console 2. Go to http://127.0.0.1:8888/ 3. Import notebook: Leaing_IPython/Chapter 03/9932_03_{01,02,03}.ipynb See how to do it, Pic 01, Pic 02 (my screenshots)

1. Code 1

x = array([1, 2, 3])
x.shape
x.dtype # => dtype('int32')
x = array([1, 2, 3], dtype=float64)
y = np.fromstring('1 2 5 10', dtype=int, sep=' ')
In[10]: print "good" # => good
In[11]: exec In[10] # => good

Blaze = Numpy + Pandas + SciPy + Numba + Theano

### TOC:

• Preface
• Networking Models
• Ethernet
• Internet Protocol
• Address Resolution Protocol
• Network Equipment
• Internet Control Message Protocol
• Subnetting and Other Masking Acrobatics

#### §1. Networking Models

Good Starting Point: Basic network architecture and construction How to: focuses on the practical TCP/IP model, using the OSI model as a reference point.

1. What is a Model
• A model is a way to organize a system’s functions and features to define its structural design.
• A design can help us understand how a communication system accomplishes tasks to form a protocol suite.

• Why Use Models

• OSI Models
• four parts:
• Part 1 – The Basic Model
• Part 2 – Security Architecture
• Part 3 – Naming and Addressing
• Part 4 – Management Framework
• OSI—Beyond the Layers
• The architects of this model spent a lot of time thinking about and enumerating those items demanded at each layer and what is necessary to communicate with the layers immediately above and below.
• OSI/ITU-T Protocols, used in VoIP, etc

1. TCP/IP
• Introducing TCP/IP
• TCP/IP and the RFCs
• Application

Support flexibility (naming and length) in hostnames; Map domain names appropriately; Handle DNS errors. e.g.
• Transport

provides end-to-end communication services based either on TCP(connection-oriented) or UDP(connectionless)
• Internet

specify the use of IP, ICMP, and Internet Group Management Protocol. Operationally, this is a connectionless “best effort” protocol concerned with addressing, type of service, security, and fragmentation. It relies on upper-layer protocols for accurate delivery.

This is the network interface,  and includes framing and media access to communicate directly with the network to which it is attached.
• Physical

Typically, the network interface card or port defines the Physical Layer
• The Practical Side of TCP/IP
• Encapsulation

Encapsulation is the method by which the various layers interact and pass information up and down the protocol stack.
• Equipment

• Review Questions

Q: What is the name of the process by which an upper-layer protocol is wrapped up in a lower-layer protocol?
A: Encapsulation
Q: Name four communication models.
A: TCP/IP, OSI, SNA, Appletalk, Novell (IPX/SPX)
Q: What two documents specify the standardization of the OSI model?
A: ISO/IEC 7498 and ITU-T X.200
Q: How many layers are in the OSI and TCP/IP models, respectively?
A: 7, 5
Q: Name the layers of the OSI model.
A: Application, Presentation, Session, Transport, Network, Data Link, Physical
Q: Name the layers of the TCP/IP model.
A: Application, Transport, Internet, Data Link, Physical
• Lab Exercises
• Activity 1—Examining Encapsulation airmon-ng start mon0, then wireshark&, choose interface mon0, then start a new live capture
• Activity 2—Protocol Distribution
• Activity 3—Developing a Protocol/Architecture

#### §3. Git Branching

Some people refer to the branching model in Git as its “killer feature”. Unlike many other VCSs, Git encourages a workflow that branches and merges often, even multiple times in a day. Understanding and mastering this feature gives you a powerful and unique tool and can literally change the way that you develop.

1. What a Branch Is (better check this site yourself)

# Follow me, in bash(zsh has some trouble with the comments)
mkdir branching && cd branching && git init
git commit -m 'initial commit of my project'
git branch testing && git checkout testing # switch to branch:testing
echo "hello world from testing" > test.rb
git commit -a -m 'commit from testing'
git checkout master && echo "hello world from master" > test.rb
git commit -a -m "commit from master"

how it looks now? check me HEAD pointer to show your working branch Creating a new branch is as quick and simple as writing 41 bytes cost of a branch: 40 characters(SHA-1 checksum) and a newline

• Basic Branching and Merging
• Basic Branching

# cd branching
git checkout -b iss53 # same like: git branch iss53 && git checkout iss53
echo "hello world from iss53" > README && git commit -a -m "commit from iss53"
cat README #                                                          [0]
git checkout master && cat README #                                   [1]
git checkout -b hotfix && echo "added by hotfix" >> README
git commit -a -m "hotfix added that line" && cat README #             [2]
git checkout master && cat README #                                   [3]
git merge hotfix && cat REAMDE # fast forwarding                      [4]
# cat output [0], [1], [2], [3], [4], take some time to understand it, Git!
# git branch -d hotfix

how it looks now? check me

• Basic Merging

git checkout master
git merge iss53 # Auto-merging

how it looks now? check me

• Basic Merging Conflicts

git mergetool
• Branch Management

git branch # show all branches and current branch
git branch -v
git branch --merged
git branch --no-merged
• Branching Workflows
• Long-Running Branches
• More stable branches: farther down the commit history.
• It’s generally easier to think about them as work silos, where sets of commits graduate to a more stable silo when they’re fully tested
• Topic Branches

• Remote Branches remote branches pics
• Rebasing merge and rebase

• Summary

### Too Busy these days…

• §3: Tasklist I: Persistence
• §4: Tasklist II: Databases and AJAX
• §5: Entities and Relations
• §6: Building a Wiki
• §7: Refactoring Code for Reuse
• §8: Managing Customer Relations
• §9: Creating Full-Fledged Webapps: Implementing Instances
• §10: Customizing the CRM Application
• Appendix A: References to Resources
• Appendix B: Pop Quiz Answers

### TOC

• Preface
• §1. Preparing Your Working Environment
• §2. Knowing Your Data
• §3. Drawing Your First Plots and Customizing Them
• §4. More Plots and Customizations
• §5. Making 3D Visualizations
• §6. Plotting Charts with Images and Maps
• §7. Using Right Plots to Understand Data
• §8. More on matplotlib Gems

#### Preface

1. What this book covers
• installation recipes
• read & write common data CSV, JSON, XSL, or relational databases, etc
• drawing plots
• 3D Visualizations
• image processing, creating CAPTCHA test images
• advanced plotting techniques
• Gantt charts, box plots, whisker plots, and also explains how to use LaTeX for rendering text in matplotlib

• the example code
• Go Packt Publishing
• Or, my archive: Python…Cookbook_example code.zip

#### §2. Knowing Your Data

1. Importing data from CSV

import csv
csvfilepath='http://gnat-tang-shared-image.qiniudn.com/blog-ch02-data.csv'
f = open(csvfilepath)
print reader.next() # read the first line, maybe title
data = [row for row in reader] # read the other lines
print data
##### Write #####
with open(filename,'wb') as f:
writer = csv.writer(f)
for row in range(10):
writer.writerow([row + 1, '2012-01-%s' % (19 + row)])

For more, see Python CSV File API For larger text files, better use numpy.loadtxt(), or numpy.genfromtxt() (for better with missing data)

import numpy
data = numpy.loadtxt('ch02-data.csv', dtype='string', delimiter=',')
• Importing data from Microsoft Excel files pip install xlrd # Firstly, install relative module

# I have some trouble with xlrd.read(), this one doesn't work
import xlrd
from xlrd.xldate import XLDateAmbiguous
wb = xlrd.open_workbook(filename='ch02-xlsxdata.xlsx') # "on_demand=True"
ws = wb.sheet_by_name('Sheet1')
dataset = []
for r in range(ws.nrows):
col = []
for c in range(ws.ncols):
col.append(ws.cell(r, c).value)
if ws.cell_type(r, c) == xlrd.XL_CELL_DATE:
try:
print ws.cell_type(r, c)
from datetime import datetime
date_value = xlrd.xldate_as_tuple(ws.cell(r, c).value,
wb.datemode)
print datetime(*date_value)
except XLDateAmbiguous as e:
print e
dataset.append(col)
from pprint import pprint
pprint(dataset)

in the example code, another module openpyxl is used

from openpyxl import load_workbook
file = 'ch02-xlsxdata.xlsx'
ws = wb.get_sheet_by_name('Sheet1')
dataset = []
for r in ws.rows:
col = []
for c in r:
col.append(c.value)
dataset.append(col)
from pprint import pprint
pprint(dataset)
• Importing data from fixed-width datafiles. Using string & struct

import string
import random
ROWS = 1000000
# SAMPLE = string.ascii_lowercase
SAMPLE = '012345678901234567890123456'
F1 = 9
F2 = F1 + 13
F3 = F2 + 4
# assert F1 + F2 + F3 == len(SAMPLE)
for r in range(ROWS):
t = ''.join(random.sample(SAMPLE,len(SAMPLE)))
print t[0:F1], t[F1:F2], t[F2:F3]
### or this ###
import struct
import string
datafile = 'ch02-fixed-width-1M.data'
# this is where we define how to understand line of data from the file
mask='9s14s5s' # 9chars | 14chars | 5chars
with open(datafile, 'r') as f:
for line in f:
print 'fields: ', [field.strip() for field in fields]
• Importing data from tab-delimited files

with open(filename) as fr
with open(filename, 'wb') as fw
writer = csv.writer(fw, dialect=csv.excel_tab)
# 'r': reading, 'w': writing(truncate), 'b': binary, more robust
# 'r+', 'w+' and 'a+', updating
### work with dirty file ###
datafile = 'ch02-data-dirty.tab'
with open(datafile, 'r') as f:
for line in f:
# removed next comment to see line before cleanup
print line.split('\t'), "____dirty way"
# we remove any space in line start or end
line = line.strip()
# now we split the line by tab delimiter
print line.split('\t')

• Importing data from a JSON resource

import requests
url = 'https://github.com/timeline.json'
r = requests.get(url)
json_obj = r.json() # Error, list object is not callable... shit
repos = set() # we want just unique urls, so it's a set
for entry in json_obj:
try:
except KeyError as e:
print "No key %s. Skipping..." % (e)
from pprint import pprint
pprint(repos)
# this one works
# import json; json_obj = json.load('timeline.json')

Json RFC

• Exporting data to JSON, CSV, and Excel

# this is really fantastic
import os, sys, argparse, struct, json, csv
try:
import cStringIO as StringIO
except:
import StringIO
def import_data(import_file):
'''
Imports data from import_file.
Expects to find fixed width row
Sample row: 161322597 0386544351896 0042
'''
data = []
with open(import_file, 'r') as f:
for line in f:
fields = struct.Struct(mask).unpack_from(line) # unpack line to tuple
# strip any whitespace for each field
# pack everything in a list and add to full dataset
data.append(list([f.strip() for f in fields]))
return data
def write_data(data, export_format):
'''
Dispatches call to a specific transformer
and returns data set.
Exception is xlsx where we have to save data in a file.
'''
if export_format == 'csv':
return write_csv(data)
elif export_format == 'json':
return write_json(data)
elif export_format == 'xlsx':
return write_xlsx(data)
else:
raise Exception("Illegal format defined")
def write_csv(data):
'''
Transforms data into csv.
Returns csv as string.
'''
# Using this to simulate file IO,
# as csv can only write to files.
f = StringIO.StringIO()
writer = csv.writer(f)
for row in data:
writer.writerow(row)
# Get the content of the file-like object
return f.getvalue()
def write_json(data):
'''
Transforms data into json.
Very straightforward.
'''
j = json.dumps(data)
return j
def write_xlsx(data):
'''
Writes data into xlsx file
'''
from xlwt import Workbook
book = Workbook()
sheet1 = book.add_sheet("Sheet 1")
row = 0
for line in data:
col = 0
for datum in line:
print datum
sheet1.write(row, col, datum)
col += 1
row += 1
# We have hard limit here of 65535 rows
# that we are able to save in spreadsheet.
if row > 65535:
print >> sys.stderr, "Hit limit of # of rows in one sheet (65535)."
break
# XLS is special case where we have to
# save the file and just return 0
f = StringIO.StringIO()
book.save(f)
return f.getvalue()
if __name__ == '__main__':
# parse input arguments
parser = argparse.ArgumentParser()
parser.add_argument("import_file", help="Path to a fixed-width data file.")
parser.add_argument("export_format", help="Export format: json, csv, xlsx.")
args = parser.parse_args()
if args.import_file is None:
print >> sys.stderr, "You myst specify path to import from."
sys.exit(1)
if args.export_format not in ('csv','json','xlsx'):
print >> sys.stderr, "You must provide valid export file format."
sys.exit(1)
# verify given path is accesible file
if not os.path.isfile(args.import_file):
print >> sys.stderr, "Given path is not a file: %s" % args.import_file
sys.exit(1)
# read from formated fixed-width file
data = import_data(args.import_file)
# export data to specified format
# to make this Unix-lixe pipe-able
# we just print to stdout
print write_data(data, args.export_format)
• Importing data from a database sudo apt-get install sqlite3

import sqlite3, sys
if len(sys.argv) < 2:
print "Error: You must supply at least SQL script."
print "Usage: %s table.db ./sql-dump.sql" % (sys.argv[0])
sys.exit(1)
script_path = sys.argv[1]
if len(sys.argv) == 3:
db = sys.argv[2]
else:
# if DB is not defined
# create memory database
db = ":memory:"
try:
con = sqlite3.connect(db)
with con:
cur = con.cursor()
with open(script_path,'rb') as f:
except sqlite3.Error as err:
print "Error occured: %s" % err
import sqlite3, sys
if len(sys.argv) != 2:
print "Please specify database file."
sys.exit(1)
db = sys.argv[1]
try:
con = sqlite3.connect(db)
with con:
cur = con.cursor()
query = 'SELECT ID, Name, Population FROM City ORDER BY Population DESC LIMIT 1000'
con.text_factory = str # Create a new Unicode object from the given encoded string.
cur.execute(query)
resultset = cur.fetchall()
# extract column names
col_names = [cn[0] for cn in cur.description]
print "%10s %30s %10s" % tuple(col_names)
print "="*(10+1+30+1+10)
for row in resultset:
print "%10s %30s %10s" % row
except sqlite3.Error as err:
print "[ERROR]:", err
• Cleaning up data from outliers

import numpy as np, matplotlib.pyplot as plt
def is_outlier(points, threshold=3.5):
"""
Returns a boolean array with True if points are outliers and False otherwise.
Data points with a modified z-score greater than this value will be classified as outliers.
"""
# transform into vector
if len(points.shape) == 1:
points = points[:,None]
# compute median value
median = np.median(points, axis=0)
# compute diff sums along the axis
diff = np.sum((points - median)**2, axis=-1)
diff = np.sqrt(diff)
med_abs_deviation = np.median(diff)
# compute modified Z-score
# http://www.itl.nist.gov/div898/handbook/eda/section4/eda43.htm#Iglewicz
modified_z_score = 0.6745 * diff / med_abs_deviation
# return a mask for each outlier
return modified_z_score > threshold
# Random data
x = np.random.random(100) # value between 0 and 1
buckets = 50 # histogram buckets
x = np.r_[x, -49, 95, 100, -100] # Add in a few outliers
# Keep inlier data points
# Note here that
# "~" is logical NOT on boolean numpy arrays
filtered = x[~is_outlier(x)]
# plot histograms
plt.figure()
plt.subplot(211), plt.hist(x,        buckets), plt.xlabel('Raw')
plt.subplot(212), plt.hist(filtered, buckets), plt.xlabel('Cleaned')
plt.show()
from pylab import *
# generate uniform data points
x = 1e6*rand(1000), y = rand(1000)
figure()
# make scatter plots
subplot(211), scatter(x, y), xscale('linear'),  xlim([1e-6, 1e6])
# this time, make x axis logarithmic
subplot(212), scatter(x,y), xscale('log'), xlim([1e-6, 1e6])
show()
from pylab import *
# fake up some data
spread= rand(50) * 100, center = ones(25) * 50
# generate some outliers high and low
flier_high = rand(10) * 100 + 100, flier_low = rand(10) * -100
# merge generated data set
data = concatenate((spread, center, flier_high, flier_low), 0)
# basic plot, 'gx' defining the outlier plotting properties
subplot(311), boxplot(data, 0, 'gx')
# compare this with similar scatter plot
subplot(312)
center_1 = ones(70) * 25
scatter(center_1, spread_1), xlim([0, 50])
# and with another that is more appropriate for scatter plot
subplot(313)
center_2 = rand(70) * 50
xlim([0, 50])
show()
• Reading files in chunks

import sys
filename = sys.argv[1]
with open(filename, 'rb') as hugefile:
chunksize = 1000
# if you want to stop after certain number of blocks
# put condition in the while
while hugefile:
# if you want to start not from 1st byte, do a hugefile.seek(skipbytes)
# to skip skipbytes of bytes from the file start
start = hugefile.tell()
print "starting at:", start
file_block = ''  # holds chunk_size of lines
for _ in range(start, start + chunksize):
line = hugefile.next()
file_block = file_block + line
print 'file_block', type(file_block), file_block
# tell where are we in file
# file IO is usually buffered so tell() will not be precise for every read
stop = hugefile.tell()
print 'reading bytes from %s to %s' % (start, stop)
raw_input()
• Reading streaming data sources

import time, os, sys
if len(sys.argv) != 2:
print >> sys.stderr, "Please specify filename to read"
filename = sys.argv[1]
if not os.path.isfile(filename):
print >> sys.stderr, "Given file: \"%s\" is not a file" % filename
with open(filename,'r') as file:
# Move to the end of file
filesize = os.stat(filename)[6]
file.seek(filesize)
# endlessly loop
while True:
where = file.tell()
# try reading a line
# if empty, go back
if not line:
print "Holliday! take a nap"
time.sleep(1)
file.seek(where)
else:
# , at the end prevents print to add newline, as readline()
print line

os.stat(filepath):

posix.stat_result(st_mode=33279, st_ino=764, st_dev=2050L, st_nlink=1, st_uid=0, st_gid=0, st_size=91814, st_atime=1388984499, st_mtime=1383747999, st_ctime=1388912589)
• Importing image data into NumPy arrays

# "hello world" from Lena, Using SciPy
import scipy.misc, matplotlib.pyplot as plt
lena = scipy.misc.lena()
print lena.shape, lena.max(), lena.dtype
# => (512, 512) 245 int64(endian 64-bit long integer)
plt.gray(), plt.imshow(lena), plt.colorbar(), plt.show()
import numpy, Image, matplotlib.pyplot as plt
bug = Image.open('stinkbug.png')
arr = numpy.array(bug.getdata(), numpy.uint8).reshape(bug.size[1], bug.size[0], 3)
plt.gray(), plt.imshow(arr), plt.colorbar(), plt.show()
import matplotlib.pyplot as plt, matplotlib.image as mpimg, numpy as np
bugfile = 'stinkbug.png'
imgplot = plt.imshow(bug)
import matplotlib.pyplot as plt, scipy, numpy
bug = scipy.misc.imread('stinkbug1.png') # seems not work
bug = bug[:,:,0] # convert to gray
plt.figure(), plt.gray()
plt.subplot(121), plt.imshow(bug)
# show 'zoomed' region
zbug = bug[100:350,140:350]
plt.subplot(122), plt.imshow(zbug)
plt.show()

For large images we recommend using numpy.memmap for memory mapping of images.

• Generating controlled random datasets

from pylab import *; from numpy import *
def moving_average(interval, window_size):
'''
Compute convoluted window for given size
'''
window = ones(int(window_size)) / float(window_size)
return convolve(interval, window, 'same')
t = linspace(-4, 4, 100)
y = sin(t) + randn(len(t))*0.1
plot(t, y, "k.")
# compute moving average
y_av = moving_average(y, 10)
plot(t, y_av,"r")
#xlim(0,1000)
xlabel("Time"), ylabel("Value"), grid(True)
show()

import pylab' => pylab.show() from pylab import * => show()

import pylab, random
SAMPLE_SIZE = 100
# seed random generator, if no argument provided, uses system current time
random.seed()
# store generated random values here
real_rand_vars = []
for _ in range(SAMPLE_SIZE):
new_value = random.random()
real_rand_vars.append(new_value)
# create histogram from data in 10 buckets
pylab.hist(real_rand_vars, 10)
# define x and y labels
pylab.xlabel("Number range")
pylab.ylabel("Count")
# show figure
pylab.show()
log: $1. created three days ago, today is Friday, February 28 2014;$2. Thu Aug  6 18:28:19     2015;
• Protocol: The official procedure or system of rules governing affairs of state or diplomatic occasions.

• protocol, protocol suite
• architecture / reference model
• internetwork / catenet (“concatenated” network)
• bandwidth, capacity, latency
• packet switching
• multiplexing
• in a first-come-first-served (FCFS) fashion
• time-division multiplexing (TDM), static multiplexing
• virtual circuits (VCs)
• digital subscriber line (DSL)
• connection-oriented, connectionless
• datagram
• message boundaries (record markers)
• End-to-end argument, Fate Sharing (dumb network with smart end hosts)
• best-effort delivery
• mandate
• implementation architecture
• Open Systems Interconnection (OSI)
• ink-layer networks
• checkpointing
• protocol multiplexing
• protocol data unit (PDU), transport PDU (TPDU)
• demultiplexing (demux)
• intermediate system
• end-to-end protocols, hop-to-hop protocol
• multihomed (like a router)
• forwarding (unicast + broadcast + multicast)
• Internet Control Message Protocol (ICMP) (ICMPv4 + ICMPv6)
• Internet Group Management Protocol (IGMP)
• Datagram Congestion Control Protocol (DCCP)
• Stream Control Transmission Protocol (SCTP)
• Internet Assigned Numbers Authority (IANA)
• Uniform Resource Locators (URLs)
• p2p (the discovery problem)
• Denial-of-service (DoS)
• distributed DoS (DDoS)
• spoofing, zombie, bot, botnets, black/white hats
• Dynamic Host Configuration Protocol (DHCP)

#### 3 系统

uname -a # system information:all
getconf LONG_BIT # 查看系统是32位还是64位
file /sbin/init # uname -m
# 查看Ubuntu版本, LSB, Linux Standard Base
lsb_release -a # cat /etc/lsb-release doesn't work
lsmod # Show the status of modules in the Linux Kernel
lspci # list all PCI devices
lsusb # list USB devices, better choice: lsusb -v
ethtool eth0
ethtool -s eth0 wol g # activate Wake on LAN
dmidecode -t memory # 查看内存型号
free # check memory usage
ulimit -a
ipcs -l # provide information on ipc facilities
xrandr # primitive command line interface to RandR extension, about DISPLAY

### 5 进程

top # 动态显示进程执行情况
ps -AFL
w # better than who
xkill # select window to be killed
lsof # list open files
nohup

### 7 网络

arping IP地址 # 根据IP查网卡地址
nmblookup -A IP地址 # 根据IP查电脑名, I don't have that
ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}' # check your ip address lsof -i :80 # check you MAC address ifconfig eth0 | head -1 | awk '{print$5}' # or
cat /sys/class/net/eth0/address # I prefer ifconfig wlan0
# 立即让网络支持nat
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE
# 查看路由信息
netstat -rn
route -n
# 修改网卡MAC地址的方法
sudo ifconfig eth0 down #关闭网卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
sudo ifconfig eth0 up #然后启动网卡
whois baidu.com
traceroute baidu.com
dhclient # 重新从服务器获得IP地址, Dynamic Host Configuration Protocol Client
# 如何查看HTTP头
# 或 curl --head http://www.example.com
# curl - transfer a URL
python -m SimpleHTTPServer # 进入目录后运行, to share this folder, fantastic !!!

### 9 安全

# 检查本地是否存在安全隐患: rkhunter
# 如何安装杀毒软件: clamav
# Linux下可以使用的商业杀毒软件: kaspersky, avast, BitDefender
# 防止服务器被暴力破解ssh密码: denyhosts
# 查看系统
last # and, lastlog

### 11 用户管理

adduser, deluser # 但是最好不要真删除一个用户，把他的密码弄的登不进去就行
passwd， chfn
# 禁用/启用某个帐户
usermod -L/-U <userid>
passwd  -l/-u <userid>
usermod -G admin -a 用户名

### 13 中文

im-switch -c # switch input method
# check encoding
enca <file> # file <file>
# 转换文件名由GBK为UTF8
convmv -r -f cp936 -t utf8 --notest --nosmart *
iconv -f GBK -t UTF-8 gbkfile.txt -o utf8file.txt
iconv -f gbk -t utf8 $i > newfile # 转换 mp3 标签编码 # # 控制台下显示中文 # # lftp 登录远程Windows中文FTP # # 乱码 apt-get install poppler-data # PDF 乱码 # unzip 中文文件名乱码 apt-get install p7zip-full # install 7zip export LANG=zh_CN.GBK #临时在控制台修改环境为zh_CN.GBK，然后解压缩即可 7za / 7zr / 7z e doc.zip # unzip it # 查看具体字体名称 fc-match monospace #=>: LiberationMono-Regular.ttf: "Liberation Mono" "Regular" ### 15 影像 sudo apt-get install swfmill # decode swf # 如何保存串流视频(mms/rtsp) mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi foo.rmvb bar.avi # rmvb » avi mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi foo.vob bar.avi # DVD » avi ffmpeg2theora --optimize --deinterlace <film> # any format to ogv # CD 抓轨为 mp3 (有损)/Flac (无损) abcde -o mp3 -b abcde -o flac -b # 批量缩小图片到30% for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done # 批量转换jpg到png （通常都是png2jpg吧，省空间） for i in *.jpg; do convert$i echo $i | sed -e 's/jpg$/png/'; done
# text2img
convert -size 200x30 xc:transparent -font /usr/share/fonts/truetype/wqy/wqy-microhei.ttc -fill red -pointsize 16 -draw "text 5,15 '测试中文转为图片'" test.png # fantastic!
optipng, pngcrush, convert *.jpg out.pdf
# pdf2txt, pdf2png, jpg info(identify -verbose), mkv info(mkvtoolnix, mkvinfo)
# 抓取桌面操作的视频
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
# 命令行读出文本
espeak -vzh "从前有座山"
# 命令行抓屏, both two utils cant be used in tty1
scrot -s screenshot.png
gnome-screenshot

### 17 Nautilus - 就是 file explorer

# Ctrl+h
# Ctrl+l
# 特殊 URI 地址
* computer:/// - 全部挂载的设备和网络
* network:/// - 浏览可用的网络
* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录
* smb:/// - 可用的 windows/samba 网络资源
* x-nautilus-desktop:/// - 桌面项目和图标
* file:/// - 本地文件
* trash:/// - 本地回收站目录
* ftp:// - FTP 文件夹
* ssh:// - SSH 文件夹
* fonts:/// - 字体文件夹，可将字体文件拖到此处以完成安装
* themes:/// - 系统主题文件夹
##############################################
fc-list |grep 文 # installed fonts, in [~/.fonts] or [/usr/share/fonts]

### 19 工作区

# Ctrl + ALT + ←
# Ctrl + ALT + →
# 或者，将滚轮鼠标放在工作区图标上滚动

on the right: a bigger workspace switcher

### 21 数据库

# mysql的数据库存放路径: /var/lib/mysql
# 从mysql中导出和导入数据
# 忘了mysql的root口令怎么办
# 修改mysql的root口令

### 23 统计

# 统计最常用的10条命令
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10  works in bash, but not zsh # calc words frequency awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"\t"i}}' FILE_NAME | sort -rn

### 25 编译和打包

sudo apt-get install build-essential
./configure && make && make install
# get source
sudo apt-get source mysql-server
# 安装编译打包环境
sudo apt-get build-dep mysql-server
# 重新编译并打包Debian化的源码
dpkg-buildpackage -rfakeroot
# 获得源码并重新打包
apt-get source php5-cgi
#或手工下载源码后使用 dpkg-source -x  php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解开源码
sudo apt-get build-dep php5-cgi
cd php5-5.2.6.dfsg.1
dpkg-buildpackage -rfakeroot -uc -b

### 27 More

long command other command #=> back to long command

[==================================================](100%)
|---100----|---200---|---300---|---400---|----500--|

[>=================================================](100%)

[>=========>=========>=========>=========>=========](100%)

[>>========>>========>>========>>========>>========](100%)
[>>>>======>>>>======>>>>======>>>>======>>>>======](100%)

[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>](100%)

log: $1. Wed Jul 9 21:56:04 2014;$2. Fri Nov 28 23:50:03     2014;

### Misc

1. 阅读前须知
• 阅读顺序：乱序 + 逆序：按照兴趣来，引发疑问。
• 必读：章前开篇，章后总结。
• 思考: 5W1H
• What, Why, How (high level)
• Who, When, Where (low level)
• Effectiveness vs. Efficiency
• 所有的方法都有效
• 不是所有的方法都有效率
• 时间是宝贵的

• 阅读辅助: Online Practice

• glossary 把知识固定下来
• Maps, Chronology

• 一些观点
• 不要贪多，不要妄想
• 纵向思考
• Extraction of Key Words
• 硬技能， 软实力
• 要好玩。愿意“梅花香自苦寒来”那就苦着吧。

#### TOC

• 第一部份：Linux的規劃與安裝
• 第二部份：Linux檔案、目錄與磁碟格式
• 第三部份：學習Shell與Shell Scripts
• 第四部份：Linux使用者管理
• 第五部份：Linux系統管理員
• 第六部份：其他備份文章
                             第一部份：Linux的規劃與安裝

#### 第零章、计算器概论

1. 计算机硬件癿五大单元
• 输入单元
• 输出单元
• CPU 内部的 控制单元算数逻辑单元主存储器
• CISC: Complex Instruction Set Computer
• RISC: Reduced Instruction Set Computer

• 外围设备：打印机、显示器等
• 电脑分类：
• 超級電腦(Supercomputer)
• 大型電腦(Mainframe Computer)
• 迷你電腦(Minicomputer)
• 工作站(Workstation)
• 微電腦(Microcomputer)
• 单位转化

• Hz，Mbps，南北桥，南桥（快），北桥（慢）， CPU，内存，RAM，ROM，BIOS，VGA（显卡），PCI，硬盘，Cylinder，Track，Sector，IDE，SATA，编译器，作业系统（操作系统），Kernel，System Call，驱动，应用程序。

#### 第一章、Linux是什麼？

1. Linux就是一套作業系統
• Linux之前，Unix的歷史
• 1969年以前：一個偉大的夢想，Bell,MIT與GE的『Multics』系統
• 1969年：Ken Thompson 的小型 file server system (Unix的原型)
• 1973年：Ritchie 等人以C語言寫出第一個正式 Unix 核心
• 1977年：重要的 Unix 分支–BSD 的誕生
• 1979年：重要的 System V 架構與版權宣告， 可以在個人電腦上面安裝與運作了
• 1984年之一：x86 架構的 Minix 作業系統誕生
• 1984年之二：GNU 計畫與 FSF 基金會的成立
• 1988年：圖形介面 XFree86 計畫
• 1991年：芬蘭大學生 Linus Torvalds 的一則簡訊

• Linux
• Linux的核心版本
• 主、次版本為奇數：發展中版本(development)
• 主、次版本為偶數：穩定版本(stable)
• Linux distributions
• 各大Linux Distributions的主要異同：支援標準！
• Linux的優缺點

#### 第二章、如何正確有效的學習 Linux

1. Linux當前的應用角色
• 企业用作服务器，科学计算
• 个人桌面电脑，微型系统，嵌入式，手机，PDA

• 鸟哥的学习之路：从不得道到遇到好老师：Study Area(酷學園)

• 学习心态
• 假设服务器
• 学习 X Window 系统
• Shell Script

• 有心朝 Linux 作業系統學習者的學習態度
• 從頭學習 Linux 基礎
• 計算機概論與硬體相關知識
• 先從 Linux 的安裝與指令學起
• Linux 作業系統的基礎技能
• 務必學會 vi 文書編輯器
• Shell 與 Shell Script 的學習
• 一定要會軟體管理員
• 網路基礎
• 亲自动手操作很重要

• 發生問題怎麼處理啊？建議流程是這樣..
• 查资料
• man, info
• The Linux Documentation Project
• 注意错误的输出信息
• 与人讨论

• 成就感，提高学习信心

#### 第三章、主機規劃與磁碟分割

1. Linux與硬體的搭配

• File System
• Partion Table
• MBR
• WWW
• DHPC
• Proxy

#### 第四章、安裝 CentOS 5.x 與多重開機小技巧

• 磁盘分割
• 文件系统，ext2，ext3，ext4, vfat，Swap，LVM，RAID
• MAC，SSID，BSSID，ESSID
• SELinux（Security Enhanced Linux）

#### 第五章、首次登入與線上求助 man page

• X Window，Gnome，KDE
• tty1-6
• bash，ls，pwd，echo，date，cal，bc
• Tab 补全，c-c，c-d
• man，info，zsh
• less，more
• nano
• sync，reboot，shutdown，init，halt，poweroff
• passwd
                             第二部份：Linux檔案、目錄與磁碟格式

#### 第六章、Linux 的檔案權限與目錄配置

• -rwxd-lbc，chgrp，chown，chmod
• FHS
• absolute / relative path

#### 第七章、Linux 檔案與目錄管理

• cd，pwd，mkdir，rmdir

# 超萌大法：

yum install apt

# data

41 286 357 71 298 426 39 241 350 47 283 399 22 201 449 70 239 363 87 290 449 62 209 417 39 265 415 55 229 363 12 294 442 1 296 378 39 270 380 7 228 379 5 277 385 71 215 442 75 243 424 13 280 414 40 244 380 80 234 429 55 268 435 1 275 434 2 296 433 45 204 446 51 226 389 78 279 370 79 217 407 54 273 426 48 247 400 41 252 423 50 276 362 22 283 444

# code

#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
#include<math.h>

#define DONE NULL
#define THRESHOLD 0.01

enum {
N_CLUSTERS = 3,
MAX_ITERATIONS = 25,
MAX_DISTANCE = 100,
};

typedef struct _kmeans_t {
size_t n;
size_t k;
double *X;
double *C;
size_t *A;
FILE *ifp;
FILE *ofp;
} kmeans_t;

/* funcs */
void bye (void);

size_t belongs_to (double *c, size_t nc, double *v);

FILE *getifp (const char *fn);
FILE *getofp (const char *fn);

/* tasts */
void do_tasks (kmeans_t *km, ...);

void km_pipein (kmeans_t *km);
void km_init_clusters (kmeans_t *km);
void km_reassignment (kmeans_t *km);
void km_reclustering (const kmeans_t *km, double *c);
void km_loop (kmeans_t *km);
void km_pipeout (kmeans_t *km);
void km_freeall (kmeans_t *km);

/* main */
int main (void)
{
atexit (bye); /* we must say goodbye before we exit */

kmeans_t km = {
.n = 0,
.k = 3,
.X = NULL,
.A = NULL,
.ifp = getifp ("data2.txt"),
.ofp = getofp ("data-out.txt")
};

/* task to do */
km_pipein,
km_init_clusters,
km_loop,
km_pipeout,
km_freeall,
DONE
);

/* exit */
exit (EXIT_SUCCESS);
}

/* funcs */
void bye (void)
{
printf ("bye bye\n");
getc (stdin);
printf ("bye~\n");
}

size_t belongs_to (double *c, size_t nc, double *v)
{
size_t i;
size_t a; /* anchor */

for (i = 1, a = 0; i < nc; ++i) {
if ( fabs (*(c+i)-*v) < fabs (*(c+a)-*v) ) {
a = i;
}
}

return a;
}

FILE *getifp (const char *fn)
{
FILE *ifp = fopen (fn, "r");
if (NULL == ifp) {
fprintf (stderr, "cannot open %s for reading", fn);
exit (EXIT_FAILURE);
}
return ifp;
}

FILE *getofp (const char *fn)
{
FILE *ofp = fopen (fn, "w");
if (NULL == ofp) {
fprintf (stderr, "cannot open %s for writing\n", fn);
exit (EXIT_FAILURE);
}
return ofp;
}

/* tasts */
void do_tasks (kmeans_t *km, ...)
{
void (*task)() = NULL;

while (DONE != (
task = va_arg ( tasks, void(*)() )
)
) {
}
return;
}

void km_pipein (kmeans_t *km)
{
double tmp;
size_t n;

while (fscanf (km->ifp, "%lf", &tmp) == 1) ++(km->n);
rewind (km->ifp);

km->X = (double *) malloc (km->n*sizeof(double));
for (n = 0; n < km->n; ++n) {
fscanf (km->ifp, "%lf", km->X+n);
}
return;
}

void km_init_clusters (kmeans_t *km)
{
size_t k;

km->C = (double *)  malloc (km->k*sizeof(double));
km->A = (size_t *)  malloc (km->n*sizeof(size_t));

for (k = 0; k < km->k; ++k) {
*(km->C+k) = *(km->X+k);
}
return;
}

void km_reassignment (kmeans_t *km)
{
size_t n;

for (n = 0; n < km->n; ++n) {
*(km->A+n) = belongs_to (km->C, km->k, km->X+n);
}
}

void km_reclustering (const kmeans_t *km, double *c)
{
size_t n, k;

for (k = 0; k < km->k; ++k) {
*(c+k) = 0.0;
}

for (n = 0; n < km->n; ++n) {
*(c+*(km->A+n)) += *(km->X+n);
}

for (k = 0; k < km->k; ++k) {
*(c+k) /= (double)km->k;
}

return;
}

void km_loop (kmeans_t *km)
{
size_t n;
size_t k;
size_t i;

double diff;

double *c = (double *) malloc (km->k*sizeof(double));

km_reassignment (km);

/* loops */
for (i = 0; i < MAX_ITERATIONS; ++i) {
km_reclustering (km, c);
diff = 0.0;
for (k = 0; k < km->k; ++k) {
diff += fabs (*(km->C+k) - *(c+k));
}

if (diff < THRESHOLD) {
break;
}

km_reassignment (km);
} // end for

free (c);

return;
}

void km_pipeout (kmeans_t *km)
{
size_t n;
size_t k;

fprintf (km->ofp, "--overall:\n");
for (n = 0; n < km->n; ++n) {
fprintf (km->ofp, "%10sP[%2d]: %10.4lf, cluster: %4d\n", "",
n,
*(km->X+n),
*(km->A+n)
);
}

for (k = 0; k < km->k; ++k) {
fprintf (km->ofp, "%10sC[%2d]: center: %10.4lf\n", "",
k,
*(km->C+k)
);
}

return;
}

void km_freeall (kmeans_t *km)
{
fclose (km->ifp);
fclose (km->ofp);

free (km->X);
free (km->A);
free (km->C);

return;
}

# GCC 编译结果

--overall:
P[ 0]:    41.0000, cluster:    0
P[ 1]:   286.0000, cluster:    1
P[ 2]:   357.0000, cluster:    2
P[ 3]:    71.0000, cluster:    0
P[ 4]:   298.0000, cluster:    1
P[ 5]:   426.0000, cluster:    2
P[ 6]:    39.0000, cluster:    0
P[ 7]:   241.0000, cluster:    1
P[ 8]:   350.0000, cluster:    2
P[ 9]:    47.0000, cluster:    0
P[10]:   283.0000, cluster:    1
P[11]:   399.0000, cluster:    2
P[12]:    22.0000, cluster:    0
P[13]:   201.0000, cluster:    1
P[14]:   449.0000, cluster:    2
P[15]:    70.0000, cluster:    0
P[16]:   239.0000, cluster:    1
P[17]:   363.0000, cluster:    2
P[18]:    87.0000, cluster:    0
P[19]:   290.0000, cluster:    1
P[20]:   449.0000, cluster:    2
P[21]:    62.0000, cluster:    0
P[22]:   209.0000, cluster:    1
P[23]:   417.0000, cluster:    2
P[24]:    39.0000, cluster:    0
P[25]:   265.0000, cluster:    1
P[26]:   415.0000, cluster:    2
P[27]:    55.0000, cluster:    0
P[28]:   229.0000, cluster:    1
P[29]:   363.0000, cluster:    2
P[30]:    12.0000, cluster:    0
P[31]:   294.0000, cluster:    1
P[32]:   442.0000, cluster:    2
P[33]:     1.0000, cluster:    0
P[34]:   296.0000, cluster:    1
P[35]:   378.0000, cluster:    2
P[36]:    39.0000, cluster:    0
P[37]:   270.0000, cluster:    1
P[38]:   380.0000, cluster:    2
P[39]:     7.0000, cluster:    0
P[40]:   228.0000, cluster:    1
P[41]:   379.0000, cluster:    2
P[42]:     5.0000, cluster:    0
P[43]:   277.0000, cluster:    1
P[44]:   385.0000, cluster:    2
P[45]:    71.0000, cluster:    0
P[46]:   215.0000, cluster:    1
P[47]:   442.0000, cluster:    2
P[48]:    75.0000, cluster:    0
P[49]:   243.0000, cluster:    1
P[50]:   424.0000, cluster:    2
P[51]:    13.0000, cluster:    0
P[52]:   280.0000, cluster:    1
P[53]:   414.0000, cluster:    2
P[54]:    40.0000, cluster:    0
P[55]:   244.0000, cluster:    1
P[56]:   380.0000, cluster:    2
P[57]:    80.0000, cluster:    0
P[58]:   234.0000, cluster:    1
P[59]:   429.0000, cluster:    2
P[60]:    55.0000, cluster:    0
P[61]:   268.0000, cluster:    1
P[62]:   435.0000, cluster:    2
P[63]:     1.0000, cluster:    0
P[64]:   275.0000, cluster:    1
P[65]:   434.0000, cluster:    2
P[66]:     2.0000, cluster:    0
P[67]:   296.0000, cluster:    1
P[68]:   433.0000, cluster:    2
P[69]:    45.0000, cluster:    0
P[70]:   204.0000, cluster:    1
P[71]:   446.0000, cluster:    2
P[72]:    51.0000, cluster:    0
P[73]:   226.0000, cluster:    1
P[74]:   389.0000, cluster:    2
P[75]:    78.0000, cluster:    0
P[76]:   279.0000, cluster:    1
P[77]:   370.0000, cluster:    2
P[78]:    79.0000, cluster:    0
P[79]:   217.0000, cluster:    1
P[80]:   407.0000, cluster:    2
P[81]:    54.0000, cluster:    0
P[82]:   273.0000, cluster:    1
P[83]:   426.0000, cluster:    2
P[84]:    48.0000, cluster:    0
P[85]:   247.0000, cluster:    1
P[86]:   400.0000, cluster:    2
P[87]:    41.0000, cluster:    0
P[88]:   252.0000, cluster:    1
P[89]:   423.0000, cluster:    2
P[90]:    50.0000, cluster:    0
P[91]:   276.0000, cluster:    1
P[92]:   362.0000, cluster:    2
P[93]:    22.0000, cluster:    0
P[94]:   283.0000, cluster:    1
P[95]:   444.0000, cluster:    2
C[ 0]: center:    41.0000
C[ 1]: center:   286.0000
C[ 2]: center:   357.0000

# VS2010 编译

#### 注：

• 中文书名，差不多是中文书
• 英文书名，差不多就是英文书
• 图书（封面照片）顺序和我的 txt 目录文档顺序一致
• 我这不是全送人，当初是为了管理自己的财产。。。

#### 有几类我不需要的：

• 史记，红楼梦，这种古汉语的
• 走夜路，要放声歌唱，这种小清新的
• 中文的计算机类书籍
• 大学课本
• 其他

#### 有几类我还需要的：

• 英文原版书（我还要努力看完）
• 英文计算机类书籍
• 数学相关
• 考研相关（我还要考研。。。）

#### 一些说明：

• 做了笔记的书原则上不送
• 如果你不介意我撕掉几页或者涂掉写内容，第一条可以不考虑
• 教科书不受前两条限制

##### 还是在这里直接把目录贴出来吧：

（右侧缩进的书已经被人订了）（我把我不会送的也缩进掉，手机看起来可能比较麻烦，因为我缩进了 60 个字符，会很混乱）

【还可以送】                   【已预订】                     【我要留着的】
001: Algorithms
002: An-Integrated-English-Course-4
003: ArcGIS-Server-开发从入门到精通
004: ArcUser-Esri
005: A-Thousand-Splended-Suns
006: BEC-真题集
008: Common-Lisp
009: Communicating-English-in-Culture-文化交流英语-学生实用手册 (武大口语暑期辅导班专用教材）
010: C#入门经典
011: C程序设计
012: C语言程序设计
013: C++面向对象程序设计
014: Discrete-Mathematics-and-its-Applications
015: Eat-Pray-Love
017: Geographic-Information-System
018: GIS空间分析理论与方法
019: GIS设计与实现
020: Gone-With-The-Wind
021: GRE词汇精选
022: Introduction-to-Linear-Algebra
023: Mastering-Regular-Expressions
024: Open-GL-编程指南 （OpenGL 红宝书）
025: Pass-BEC-口试必备手册
026: Pattern-Classification
027: Structure-and-Implementation-of-Computer-Programs
028: The-Art-of-Public-Speaking
029: The-C-Programming-Language
030: The-Importance-of-Living （林语堂经典）
031: The-Kite-Runner
032: The-Lexus-and-the-Oliver-Tree
033: The-Little-Schemer
034: The-Lord-of-the-Rings
035: The-Tipping-Point
036: Twenty-Thousand-Leagues-Under-the-Sea （海底两万里英文版）
037: Understanding-Poetry
038: Visual-C++-面向对象编程教程
039: 一个人的村庄
040: 一九八四-Nineteen-Eighty-Four
041: 一本数学书
042: 万物有灵且有美
043: 世界如此险恶-你要内心强大
044: 中国近现代史纲要
045: 乌合之众-大众心理研究
046: 云计算
047: 全国计算机等级考试-三级网络技术
048: 全国计算机等级考试-四级网络工程师
049: 兄弟
050: 别停下追求的脚步
051: 动物性食品卫生学
052: 北大英文写作教程
053: 十天突破雅思口语
054: 十天突破雅思口语-必备掌中宝
055: 古代诗词名句赏析
056: 古文观止-鉴赏词典
057: 古汉语常用字字典
058: 史记
059: 启功体-硬笔书法-技法训练
060: 园丁集
061: 围城
062: 地图学原理
063: 地理信息系统原理
064: 大学国防教育
065: 大学基础物理
066: 大学物理学-学习辅导与习题解答
067: 大学物理实验教程
068: 大学生体质与健康
069: 大学生安全教程
070: 大学英语创意阅读
071: 大学英语听说2345
072: 大学英语阅读教程
073: 大学语文
074: 奥巴马演讲集
075: 奥普拉演讲访谈录
076: 如何阅读一本书
077: 学习ASP.Net2.0和AJAX
078: 学习OpenCV-中文版
079: 小小汉英词典-外研社
080: 弘一大师说佛
081: 影响你一生的47部电影
082: 思想道德修养与法律基础
083: 思维的乐趣
084: 标准日本语
085: 情商
086: 我为演讲狂
087: 截拳道断棍-基础入门
088: 把栏杆拍遍
089: 数字图像处理
090: 数字测图-原理与方法
091: 数学之美
092: 数学物理方法
093: 数学物理方法-学习指导
094: 数据库系统概论
095: 数据结构-C语言版
096: 新手学五笔打字
097: 新编大学英语
098: 暗时间
099: 朝花夕拾-野草
100: 柯林斯高阶英语学习词典
101: 概率论与数理统计
102: 概率论与数理统计-习题全解指南
103: 武汉大学学生手册
104: 毛泽东思想和中国特色社会主义理论体系概论
105: 沉思录-Meditation
106: 沉默的大多数
107: 测绘学概论
108: 浪潮之巅
109: 渴望之书
110: 现代文经典评读
111: 现代素描肖像
112: 环境学导论
113: 男女内参
114: 病隙碎笔
115: 百年孤独
116: 空间数据库
117: 精通Matlab-R2011a
118: 红楼梦
119: 线性代数
120: 网络地理信息系统-原理与技术
121: 置身于苦难与阳光之间
122: 美丽失败者
123: 美国种族简史
124: 美国英语口语词典
125: 美音-纠音-透析与突破
126: 考拉小巫的英语学习日记
127: 考研政治
128: 考研数学-习题
129: 考研数学复习全书
130: 考研词汇速记指南
131: 耻辱者手记 （有两本）
132: 肢体行为
133: 自由在高处
134: 英语中级听力2
135: 英语单词拼写攻略
136: 英语学习策略-从理论到实践
137: 英语电影欣赏
138: 英语词根词典
139: 英语词汇速记大全-词根-词缀记忆法
140: 莫言精选集
141: 西西弗神话
142: 计算机图形学
143: 计算机网络
144: 误差处理与可靠性理论
145: 误差理论与可靠性理论
146: 误差理论与测量平差基础
147: 走夜路-请放声歌唱
148: 跟卡耐基学人际交往
149: 跟卡耐基学当众讲话
150: 软件工程
151: 遥感原理与应用
152: 遥感图像解译
153: 钱学森 （钱学森那是很帅啊）
154: 钢笔字体学与练-楷行-毛泽东诗词
155: 阿勒泰的角落
156: 雅思倒计时-写作
157: 雅思口语
158: 雅思机经
159: 雅思词汇
160: 高中物理-基础知识手册
161: 高等数学-同济
162: 高等数学学习与提高
163: 高等数学-武大
164: 高级美语听力特训30天
165: 高级英语阅读
166: 鲁迅散文
167: 黑客与画家

##### 实况
➜  to-send  tree
.
├── 01-JiangJY-done （已收到）
│   ├── 一个人的村庄.png
│   ├── 一九八四-Nineteen-Eighty-Four.png
│   ├── 云计算.png
│   └── 百年孤独.png
├── 02-WangSY-done （已收到）
│   ├── local
│   └── 西西弗神话.png
├── 03-ChenYM-done（已收到）
│   ├── C#入门经典.png
│   ├── C程序设计.png
│   ├── C语言程序设计.png
│   ├── C++面向对象程序设计.png
│   ├── 世界如此险恶-你要内心强大.png
│   ├── 中国近现代史纲要.png
│   ├── 乌合之众-大众心理研究.png
│   ├── 古代诗词名句赏析.png
│   ├── 古文观止-鉴赏词典.png
│   ├── 古汉语常用字字典.png
│   ├── 史记.png
│   ├── 奥巴马演讲集.png
│   ├── 小小汉英词典-外研社.png
│   ├── 沉默的大多数.png
│   ├── 男女内参.png
│   ├── 红楼梦.png
│   ├── 美国种族简史.png
│   └── 阿勒泰的角落.png
├── 04-LiuYL-done （已收到）
│   ├── local
│   ├── 万物有灵且有美.png
│   ├── 动物性食品卫生学.png
│   ├── 把栏杆拍遍.png
│   ├── 环境学导论.png
│   └── 走夜路-请放声歌唱.png
├── 05-XueS-done （已收到）
│   ├── 奥普拉演讲访谈录.png
│   ├── 思维的乐趣.png
│   ├── 病隙碎笔.png
│   └── 莫言精选集.png
└── 06-LiuJT-done （已收到）
├── 地图学原理.png
└── 弘一大师说佛.png

6 directories, 41 files

log: $1. 2014-06-08;$2. 2014-06-09;

log: 1. 2014-06-09; 我不是三年前的我， 我不是两年前的我， 我不是一年前的我； 我比那过去更强 我不是一年后的我， 也不是两年后的我， 更不是三年后的我； 一想将来，浑身充满力量 #### Refs 简书上不能使用 MathJax 编辑公式，估计以后也没有。这是多么遗憾的事，我们不能在文中简单地使用： 第一个矩阵 --------- $$\begin{bmatrix} 1 & x & x^2 \\ 1 & y & y^2 \\ 1 & z & z^2 \\ \end{bmatrix}$$ 来书写一个矩阵。但是，只要我们想，总还是有方法，只不过要麻烦一点。比如你可以这样： 第二个矩阵 --------- ![][matrix] [matrix]: http://latex.codecogs.com/svg.latex?\begin{bmatrix}1&x&x^2\\1&y&y^2\\1&z&z^2\\\end{bmatrix} 就有：，一个矩阵出现了。 不过好累。。。不人性。。。你得把公式用 LaTeX 写出来，就像上面的【第一个矩阵】一样，把其中 $$符号里多余的空格删除，拷贝出来，在前面加上 http://latex.codecogs.com/svg.latex?，然后才能当成一个图片链接使用。 为节约人力，还可以用脚本简单处理，比如在我的 Git Bash 里（最近用瘟逗死）： cat formula.txt | tr -d ' \r\n' | clip formula.txt 是你的公式代码，tr 语句把其中的空格和换行去掉，然后传到剪贴板里，只等你粘贴。 这样简书里也能方便（有点牵强地。。。）书写公式了。 ### 公式示例： 01: 02: 03: 04: 05: 06: $\left{\begin{array}{ll}a_1x+b_1y+c_1z&=d_1+e_1\a_2x+b_2y&=d_2\a_3x+b_3y+c_3z&=d_3\end{array}\right.$ 07: $f\left(\left[\frac{1+\left{x,y\right}}{\left(\frac{x}{y}+\frac{y}{x}\right)\left(u+1\right)}+a\right]^{3/2}\right)$ ### 附：上文蛋疼的源码  --- #### Refs - [MathJax Basic Tutorial and Quick Reference][mathjax-guide] - ~~[Help: Displaying a formula (Wikipedia)][wiki-latex-math]~~ [mathjax-guide]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference [wiki-latex-math]: http://en.wikipedia.org/wiki/Help:Formula --- 简书上不能使用 MathJax 编辑公式，估计以后也没有。这是多么遗憾的事，我们不能在文中简单地使用： ~~~ 第一个矩阵 ---------$$ \begin{bmatrix} 1 & x & x^2 \\ 1 & y & y^2 \\ 1 & z & z^2 \\ \end{bmatrix} $$~~~ 来书写一个矩阵。但是，只要我们想，总还是有方法，只不过要麻烦一点。比如你可以这样： ~~~ 第二个矩阵 --------- ![][matrix] [matrix]: http://latex.codecogs.com/svg.latex?\begin{bmatrix}1&x&x^2\\1&y&y^2\\1&z&z^2\\\end{bmatrix} ~~~ 就有：![][00]，一个矩阵出现了。 不过好累。。。不人性。。。你得把公式用 LaTeX 写出来，就像上面的【第一个矩阵】一样，把其中$$ 符号里多余的空格删除，拷贝出来，在前面加上 http://latex.codecogs.com/svg.latex?，然后才能当成一个图片链接使用。 为节约人力，还可以用脚本简单处理，比如在我的 Git Bash 里（最近用瘟逗死）： ~~~ cat formula.txt | tr -d ' \r\n' | clip ~~~ formula.txt 是你的公式代码，tr 语句把其中的空格和换行去掉，然后传到剪贴板里，只等你粘贴。 这样简书里也能方便（有点牵强地。。。）书写公式了。 --- ### 公式示例： 01: ![][01] 02: ![][02] 03: ![][03] 04: ![][04] 05: ![][05] 06: ![][06] 07: ![][07] [00]: http://latex.codecogs.com/png.latex?\begin{bmatrix}1&x&x^2\\1&y&y^2\\1&z&z^2\\\end{bmatrix} [01]: http://latex.codecogs.com/png.latex?sh(x)=\frac{e^x+e^{-x}}{2}} [02]: http://latex.codecogs.com/png.latex?C_n^k=\frac{n(n-1)\ldots(n-k+1)}{k!} [03]: http://latex.codecogs.com/svg.latex?\begin{align}\sqrt{37}&=\sqrt{\frac{73^2-1}{12^2}}\\&=\sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}}\\&=\sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}}\\&=\frac{73}{12}\sqrt{1-\frac{1}{73^2}}\\&\approx\frac{73}{12}\left(1-\frac{1}{2\cdot73^2}\right)\end{align} [04]: http://latex.codecogs.com/svg.latex?\begin{array}{c|lcr}n&\text{Left}&\text{Center}&\text{Right}\\\hline1&0.24&1&125\\2&-1&189&-8\\3&-20&2000&1+10i\\\end{array} [05]: http://latex.codecogs.com/svg.latex?\mathbb{N,Z,Q,R,C} [06]: http://latex.codecogs.com/svg.latex?\left\{\begin{array}{ll}a_1x+b_1y+c_1z&=d_1+e_1\\a_2x+b_2y&=d_2\\a_3x+b_3y+c_3z&=d_3\end{array}\right. [07]: http://latex.codecogs.com/svg.latex?f\left(\left[\frac{1+\left\{x,y\right\}}{\left(\frac{x}{y}+\frac{y}{x}\right)\left(u+1\right)}+a\right]^{3/2}\right)  P.S. 据 log 说这篇文章在草稿里已经一个多月了。大部分还是刚才敲的，充分说明一鼓作气有多重要。 P.P.S. 作业部落支持的东西就很丰富：MathJax，脚注，目录，Tags，流程图，以及 Vim Emacs 编辑模式等。不过，它完全定位成了笔记本。 log:1. 2014-06-12; $2. Tue Jul 22 18:12:20 2014; Cold Turkey 是一种策略。比如你要戒烟，可以采用逐步过渡的方式（比如今天 20 支烟，明天 18，后天 15，逐步减为 0），大多数人认为这样更加自然，也很靠谱。Cold Turkey 是一种极端的戒断方式，从戒烟初始就完全摒弃，知道这种杜绝变得自然，不让你心还痒痒。 感觉我的表达能力有限，直接贴维基上的解释吧： Cold turkey” describes the abrupt cessation of a substance dependence and the resulting unpleasant experience, as opposed to gradually easing the process through reduction over time or by using replacement medication. Cold turkey method 是我比较喜欢的策略之一4，干脆、没有退路，背水一战！ 今天想到 Cold Turkey，是因为看了一篇文章：我节约时间的五大妙法，有人回复说，有个软件叫“Cold Turkey”。哈哈，这个软件名字很贴切。 我决定用这个方法把微博、豆瓣和 QQ 空间先戒了。 祈祷词 席慕容 我知道这世界不是绝对的好 我也知道它有离别 有衰老 然而我只有一次的机会 上主啊 请俯听我的祈祷 请给我一个长长的夏季 给我一段无暇的回忆 给我一颗温柔的心 给我一份洁白的恋情 我只能来这世上一次 所以 请再给我一个美丽的名字 好让他能在夜里呼唤我 在奔驰的岁月里 永远记得我们曾经相爱的事 ### XCAPE READEME.md XCAPE ===== xcape allows you to use a modifier key as another key when pressed and released on its own. Note that it is slightly slower than pressing the original key, because the pressed event does not occur until the key is released. The default behaviour is to generate the Escape key when Left Control is pressed and released on its own. (If you don't understand why anybody would want this, I'm guessing that Vim is not your favourite text editor ;) Minimal building instructions -----------------------------$ sudo apt-get install git gcc make pkg-config libx11-dev libxtst-dev libxi-dev
$mkdir xcape$ cd xcape
$git clone https://github.com/alols/xcape.git .$ make

Usage
-----
$xcape [-d] [-t <timeout ms>] [-e <map-expression>] ### -d Debug mode. Does not fork into the background. ### -t <timeout ms> If you hold a key longer than this timeout, xcape will not generate a key event. Default is 500 ms. ### -e <map-expression> The expression has the grammar 'ModKey=Key[|OtherKey][;NextExpression]' The list of key names is found in the header file X11/keysymdef.h (remove the XK_ prefix). Note that due to limitations of X11 shifted keys *must* be specified as a shift key followed by the key to be pressed rather than the actual name of the character. For example to generate "{" the expression 'ModKey=Shift_L|bracketleft' could be used (assuming that you have a key with "{" above "["). You can also specify ModKey in decimal (prefix #), octal (#0), or hexadecimal (#0x). It will be interpreted as a keycode unless no corresponding key name is found. #### Examples + This will make Left Shift generate Escape when pressed and released on it's own, and Left Control generate Ctrl-O combination when pressed and released on it's own. xcape -e 'Shift_L=Escape;Control_L=Control_L|O' + In conjugation with xmodmap it is possible to make an ordinary key act as an extra modifier. First map the key to the modifier with xmodmap and then the modifier back to the key with xcape. However, this has several limitations: the key will not work as ordinary until it is relased, and in particular, *it may act as a modifier unintentionally if you type too fast.* This is not a bug in xcape, but an unavoidable consequence of using these two tools together in this way. As an example, we can make the space bar work as an additional ctrl key when held (similar to [Space2ctrl](https://github.com/r0adrunner/Space2Ctrl)) with the following sequence of commands. # Map an unused modifier's keysym to the spacebar's keycode and make it a # control modifier. It needs to be an existing key so that emacs won't # spazz out when you press it. Hyper_L is a good candidate. spare_modifier="Hyper_L" xmodmap -e "keycode 65 =$spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default xmodmap -e "add Control =$spare_modifier"

# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"

# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space" Note regarding xmodmap ---------------------- If you are in the habit of remapping keycodes to keysyms (eg, using xmodmap), there are two issues you may encounter. 1. You will need to restart xcape after every time you modify the mapping from keycodes to keysyms (eg, with xmodmap), or xcape will still use the old mapping. 2. The key you wish to send must have a defined keycode. So for example, with the default mapping Control_L=Escape, you still need an escape key defined in your xmodmap mapping. (I get around this by using 255, which my keyboard cannot send). Contact ------- Find the latest version at https://github.com/alols/xcape The author can be reached at albin dot olsson at gmail dot com 这种变态的对齐应该是编辑器自动调整得把（总不能写好手动来吧。。。），谁知道怎么办到的？是 Vim，Emacs 里的什么操作？ Vim 里先 set tw=80（text width），再 gq$ 把接下来的一段自动 word wrap 到 80 个字符。

Refs

• http://vim.wikia.com/wiki/Automatic_word_wrapping

log: $1. Mon Sep 1 23:38:55 2014; done-唐氏大猜想 这次要把简书当微博使，占个位先。 说个认真的，人类进化史和科技发展史的的两大里程碑应该是口语和文字的消失，它们从远古走来伴随人类这么多年，想想就有点小激动。我死之前应该能看到新生的孩子都是“哑巴”。恩，这是唐氏猜想，License 是 GPL, 受 CopyLeft 保护。 恩，这就是唐氏大猜想的全部内容。想想就有点小激动。 log:$1. 2014-06-04;

Command Meaning Why
eps 浮点数最小间距 epsilon，ɛ

#### Happy Christmas

• 欢迎推荐

log: 2014-05-05, created this post;

【文】梁珊珊 【转录自】武汉大学图书馆，馆刊？

• 去掉重复的实现（要简洁，不是玩虐）
• 加粗只留下 **加粗**
• 列表只留下 *，去掉 -+
• 链接与图片的区别放到后面，比如这样：[text](url)[img]!(url)
• [a] and b 解析后变成 a and b 而不是 [a] and b ，这样我就可以：
# 一个在无法用 Sort 自动排好序的列表
| Key | Value |
| :---: | :---: |
| foo | fool |
| bar | barbaric |
| ![][ass] | shit... |

# 这个就可以排序了
| Key | Value |
| :---: | :---: |
| [foo] | fool |
| [bar] | barbaric |
| [ass]!(url) | shit... | # 后缀表达式多么好，注意这个图片。我觉得这个要求挺合理，UTC 时间的缩写都不是 CUT。。。
• 预留一些宏，在文章开头自定义
• MathJax 什么的，参考作业部落的功能吧，如果有网页编辑最好提供 Vim 模式（在网页里，Emacs 就算了）

log: $1. Fri Aug 29 00:57:59 2014; 首先這是一款鍵盤： 當然，作爲一個鍵盤控而不是鍵盤燈控，我才不 care 鍵盤長什麼樣。這款鍵盤的牛逼之處在於能定製（所以我現在用的是 Poker II）： 1. Open Source Design 2. No Upfront Tooling Costs 3. Fully Programmable Keys（這才是關鍵） 4. Dual Cherry MX / Alps Switch Compatibility 還可以直接產生中文……我的 Gat 輸入發 不是正好爲此而生的……還有 Dvorak……我使用的就是 Dovark 啊……所以這鍵盤簡直滿足了我對鍵盤的一切想法（除了我覺得空格鍵應該短一點）。 The Infinity earned its name from the infinite layers with which the keyboard can be programmed, making it more configurable than any other circuit board on the market. To program your keyboard, all you have to do is use the handy Infinity Configurator and select exactly where you want your keys to be. ## GitHub: kiibohd/controller # 題外話 Infinity 60% FAQ Does the Infinity 60% Kit have backlighting? Are there plans for backlighting? No, the Infinity 60% Kit does not support backlighting. No, There are no plans for the Infinity 60% to support backlighting. 一直覺得鍵盤燈很傻馬特（當然晚上確實有實際作用）。 Does the Infinity 60% Kit have NKRO? Yes. The Infinity 60% Kit has NKRO by default on most operating systems including Mac OSX. The 6KRO compatibility mode may be explicitly toggled via the firmware if needed. 6KRO is very sufficient for me. 這個是必須的。牛逼的是它可以從硬件上 toggle 這個特性…… Is the Infinity 60% programmable? How do I reprogram my Infinity 60% to a different layout? Yes, the Infinity 60% is fully programmable. Use the web configurator to download the hex files and flash it on to the keyboard or download and compile KLL on your own. TMK firmware is also compatible with the Infinity 60%. 順手我把自己的 DVPE Level1 給配置了一下： （我發縣“k”被唔達成了“p”，left hand upper row） What microchip does the Infinity 60% Kit use? The Infinity 60% Kit uses the MK20DX128VLF5 The datasheets can be found here and here. ### Refs 如果一个人说的东西你死活看不懂，除了讨论的内容涉及太多你不理解的概念之外，极有可能是对方没说清。 除此，智商，逻辑，思维不差太多的情况下，你好好说，人还能好好听不懂？ 年轻的时候老师叫我们多用排比：把一句话说成三句，会显得很有气势。我如获至宝。现在想想，那气势有点像吵架，我不禁要问：嗓门儿大就有理了？ 有些人写了 800 字也只说了我喜欢你。没有你也没有我，只有我喜欢你。还比不上这十来个字：我喜欢你，因为你是我男神。 把事物描述复杂很容易，只要堆砌各种花哨的无聊的有关无关的形容词，以及 @#$%…& 的动词。以及一些尤其让我难以理解的细节，比如 45 度仰望天空。45 度？？？

“Chalk，Name，Board（粉笔，名字，黑板）”。

（才 389 469 个字。）

log: $1. Wed Jul 16 22:01:30 2014; 中文舉例：這個人氣宇非凡 – 一看就不是傻逼。 英文舉例：This man is awesome–in a strange way. OpenGL to OpenSceneGraph Lookup Lookup table for helping people with converting OpenGL code to OpenSceneGraph code. OpenGL function OpenSceneGraph implementation glClear( GLbitfield mask ) osg::Camera::setClearMask(GLbitfield mask)osg::GraphicsContext::setClearMask(GLbitfield mask)osg::ClearNode::setClearMask(GLbitfield mask)osg::RenderStage::setClearMask(GLbitfield mask) glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) osg::Camera::setClearColor(const osg::Vec4& color)osgUtil::SceneView::setClearColor(const osg::Vec4& color) glClearDepth osg::Camera::setClearDepth(double depth) glClearStencil osg::Camera::setClearStencil(int stencil) State Attributes glAlphaFunc( GLenum func, GLclampf ref ) osg::AlphaFunc(ComparisonFunction func, float ref) glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) osg::BlendColor(const osg::Vec4& constantColor) glBlendFunc( GLenum sfactor, GLenum dfactor) osg::BlendFunc(GLenum source, GLenum destination, GLenum source_alpha, GLenum destination_alpha) glBlendEquation(GLenum mode) osg::BlendEquation(Equation equation) glClampColor(GLenum target, GLenum mode) osg::ClampColor(GLenum vertexMode, GLenum fragmentMode, GLenum readMode); glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) osg::ColorMask(bool red, bool green, bool blue, bool alpha); glMatrixMode( GL_COLOR ) osg::ColorMatrix() glCullFace(GLenum mode) osg::CullFace(Mode mode) glDepthFunc( GLenum func)glDepthRange( GLclampd zNear, GLclampd zFar )glDepthMask( GLboolean flag ) osg::Depth(Function func, double zNear, double zFar, bool writeMask) glFog( GLenum pname, GLfloat param )glFogv(GLenum pname, const GLfloat *params ) osg::Fog(); glFogf( GL_FOG_MODE, GLfloat param ) osg::Fog::setMode( Mode mode ) glFogf( GL_FOG_DENSITY, GLfloat param ) osg::Fog::setDensity( float density ) glFogf( GL_FOG_START, GLfloat param ) osg::Fog::setStart( float start ) glFogf( GL_FOG_END, GLfloat param ) osg::Fog::setEnd( float end ) glFogf( GL_FOG_INDEX, GLfloat param ) Color indexing not supported glFogfv(GL_FOG_COLOR, const GLfloat *params ) osg::Fog::setColor( const Vec4 &color ) glFogi(GL_FOG_COORDINATE_SOURCE, GLenum mode) osg::Fog::setFogCoordinateSource(GLint source) glFrontFace( GLenum mode ) osg::FrontFace(Mode face) glHint( GLenum target, GLenum mode ) osg::Hint(GLenum target, GLenum mode) glLight(GLenum light, GLenum pname, GLfloat param )glLightv( GLenum light, GLenum pname, const GLfloat *params) osg::Light(unsigned int lightnum) glLightfv( GLenum light, GL_AMBIENT, const GLfloat *params) osg::Light::setAmbient( const Vec4& ambient ) glLightfv( GLenum light, GL_DIFFUSE, const GLfloat *params) osg::Light::setDiffuse( const Vec4& diffuse ) glLightfv( GLenum light, GL_SPECULAR, const GLfloat *params) osg::Light::setSpecular( const Vec4& specular ) glLightfv( GLenum light, GL_POSITION, const GLfloat *params) osg::Light::setPosition( const Vec4& position ) glLightfv( GLenum light, GL_SPOT_DIRECTION, const GLfloat *params) osg::Light::setDirection( const Vec3& direction ) glLightf(GLenum light, GL_CONSTANT_ATTENUATION, GLfloat param ) osg::Light::setConstantAttenuation( float constant_attenuation ) glLightf(GLenum light, GL_LINEAR_ATTENUATION, GLfloat param ) osg::Light::setLinearAttenuation ( float linear_attenuation ) glLightf(GLenum light, GL_QUADRATIC_ATTENUATION, GLfloat param ) osg::Light::setQuadraticAttenuation ( float quadratic_attenuation ) glLightf(GLenum light, GL_SPOT_EXPONENT, GLfloat param ) osg::Light::setSpotExponent( float spot_exponent ) glLightf(GLenum light, GL_SPOT_CUTOFF, GLfloat param ) osg::Light::setSpotCutoff( float spot_cutoff ) glLightModel( GLenum pname, GLfloat param )glLightModelv( GLenum pname, const GLfloat *params ) osg::LightModel() glLightModelfv( GL_LIGHT_MODEL_AMBIENT, const GLfloat *params ) osg::LightModel::setAmbientIntensity(const osg::Vec4& ambient) glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GLint param) osg::LightModel::setColorControl(ColorControl cc) glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GLint param ) osg::LightModel::setLocalViewer(bool localViewer) glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GLint param ) osg::LightModel::setTwoSided(bool twoSided) glLineStipple( GLint factor, GLushort pattern ) osg::LineStipple(GLint factor, GLushort pattern) glLineWidth( GLfloat width ) osg::LineWidth(float width=1.0f) glLogicOp( GLenum opcode ) osg::LogicOp(Opcode opcode) glMaterialf(GLenum face, GLenum pname, GLfloat param ) osg::Material() osg::Multisample() osg::PolygonMode(Face face,Mode mode) osg::PolygonOffset(float factor, float units) osg::PolygonStipple(const GLubyte* mask) osg::Scissor(int x,int y,int width,int height) osg::ShadeModel(Mode mode) glStencilFunc( GLenum func, GLint ref, GLuint mask ) osg::Stencil::setFunction(Function func,int ref,unsigned int mask) glStencilMask( GLuint mask ) osg::Stencil::setOperation(Operation sfail, Operation zfail, Operation zpass) glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ) osg::StencilTwoSided() glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, …)glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, …) osg::TexEnv(Mode mode) glTexEnvi( GL_TEXTURE_ENV, …)Texture combiners extension osg::TexEnvCombine() glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, …) osg::TexEnvFilter(float lodBias) glTexGen_( GLenum coord, GLenum pname, GLdouble param ) osg::TexGen()osg::TexGenNode() glMatrixMode( GL_TEXTURE ) osg::TexMat(const Matrix& matrix) glTexImage1D( GL_TEXTURE_1D, …) osg::Texture1D() glTexImage2D( GL_TEXTURE_2D, …) osg::Texture2D(Image* image) glTexImage3D( GL_TEXTURE_2D_ARRAY_EXT, …) osg::Texture2DArray() glTexImage3D( GL_TEXTURE_3D, …) osg::Texture3D() glTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_X, …)glTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_X, …)glTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_Y, …)glTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, …)glTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_Z, …)glTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, …) osg::TextureCubeMap() glTexImage2D( GL_TEXTURE_RECTANGLE, …) osg::TextureRectangle(Image* image) glViewport( GLint x, GLint y, GLsizei width, GLsizei height ) osg::Viewport(value_type x,value_type y,value_type width,value_type height) https://en.wikipedia.org/wiki/Wikipedia:Graphics_tutorials https://en.wikipedia.org/wiki/Wikipedia:How_to_create_graphs_for_Wikipedia_articles https://en.wikipedia.org/wiki/Wikipedia:SVG_Help https://en.wikipedia.org/wiki/Scalable_Vector_Graphics #### Animated SVG https://commons.wikimedia.org/wiki/Category:Animated_SVG http://wiki.inkscape.org/wiki/index.php/SVG_Animation http://www.w3.org/TR/SVG/animate.html https://developer.mozilla.org/en-US/docs/Web/SVG g++ -ggdb pkg-config --cflags opencv -o basename$1 .cpp \$1 pkg-config --libs opencv;

1. 本站的 quotation marks 都是 smart 的。

2. ‘C-u 0 C-x e’ to execute the macro an infinite number of times until the end of the file is reached

3. 不知道你有没有书，看了头每次拿起都在重复读前几十页。此法可以避了一本书死活读不到最后一页的悲剧。

4. 还有一个是“森田疗法”

5. http://www.vertex42.com/ Excel Templates, Calendars, Calculators and Spreadsheets by Vertex42