<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Erlang非业余研究 &#187; 杂七杂八</title>
	<atom:link href="http://blog.yufeng.info/archives/category/misc/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yufeng.info</link>
	<description>Erlang系统深度探索和应用</description>
	<lastBuildDate>Tue, 07 Sep 2010 07:17:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>blocking technique介绍</title>
		<link>http://blog.yufeng.info/archives/668</link>
		<comments>http://blog.yufeng.info/archives/668#comments</comments>
		<pubDate>Tue, 07 Sep 2010 07:17:40 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[blocking technique]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=668</guid>
		<description><![CDATA[随着硬件技术的发展， CPU也越来越强大的。普通的服务器装配的Intel(R) Xeon(R) CPU E5520有4个core,每个core有32KL1D, 32KL1I, 256KL2，这些core还共享8M的L3。这些cache对提高系统的性能非常帮助， 因为L1的性能比主村高2个数量级。但是我们也看到L1 cache太小了，而且对程序员来讲是透明的，我们不知道它的存在。 那么我们的程序如何利用这些硬件设施呢。 设想下，如果你的4个core能同时工作，每个core又在充分利用自己的L1,L2, 同时L3还充满备用数据，那么这个提速是可以想象的到的。 这时候我们需要blocking technique技术： 看图不说话 这个技术的核心就是把数据集控制在L1的范围内，并发的多核计算！ 有兴趣的同学可以进一步： 下载更详细的CISE-12-2-ScientificPro 玩的开心！]]></description>
			<content:encoded><![CDATA[<p>随着硬件技术的发展， CPU也越来越强大的。普通的服务器装配的Intel(R) Xeon(R) CPU E5520有4个core,每个core有32KL1D, 32KL1I, 256KL2，这些core还共享8M的L3。这些cache对提高系统的性能非常帮助， 因为L1的性能比主村高2个数量级。但是我们也看到L1 cache太小了，而且对程序员来讲是透明的，我们不知道它的存在。</p>
<p>那么我们的程序如何利用这些硬件设施呢。 设想下，如果你的4个core能同时工作，每个core又在充分利用自己的L1,L2, 同时L3还充满备用数据，那么这个提速是可以想象的到的。</p>
<p>这时候我们需要blocking technique技术：<br />
看图不说话<br />
<a href="http://blog.yufeng.info/wp-content/uploads/2010/09/blocking-technique1.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/09/blocking-technique1-300x194.jpg" alt="" title="blocking technique1" width="300" height="194" class="alignnone size-medium wp-image-670" /></a></p>
<p><a href="http://blog.yufeng.info/wp-content/uploads/2010/09/blocking-technique2.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/09/blocking-technique2-300x194.jpg" alt="" title="blocking technique2" width="300" height="194" class="alignnone size-medium wp-image-671" /></a></p>
<p>这个技术的核心就是把数据集控制在L1的范围内，并发的多核计算！</p>
<p>有兴趣的同学可以进一步：<br />
<a href='http://blog.yufeng.info/wp-content/uploads/2010/09/CISE-12-2-ScientificPro.pdf'>下载更详细的CISE-12-2-ScientificPro</a></p>
<p>玩的开心！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/668/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>局部性原理在计算机和分布式系统中的应用课程PPT</title>
		<link>http://blog.yufeng.info/archives/643</link>
		<comments>http://blog.yufeng.info/archives/643#comments</comments>
		<pubDate>Mon, 16 Aug 2010 08:59:42 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[locality]]></category>
		<category><![CDATA[局部性原理]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=643</guid>
		<description><![CDATA[上个星期我在中科大参加了一个星期的由 张晓东教授，美国俄亥俄州立大学，计算机科学与工程系 http://www.cse.ohio-state.edu/~zhang 授课的教程(http://mail.ustc.edu.cn/~wbdai/dragonstar/html/course.html)。 这个课程最主要focus在数据的局部性原理，从硬件到操作系统到应用程序这样的顺序过来的，对于我们提高核心系统软件的性能非常有启发意义. 课件下载点击这里 以下是教程的介绍: 课程简介 ________________________________________ 　　在计算机系统中，数据的存储、访问和传输已成为阻碍系统性能的主要瓶颈，访问数据的速度远远低于计算的速度，而对数据访问的需求已经成为计算机运行的主要部分。 数据在计算机系统中的存储层次也变得越来越深：从硬件快速寄存器(Registers)到快速存储器(Cache)再到主存的DRAM，通过数据总线，系统可以与各种磁盘，如半导体的固态存储器（Solid State Device）或机械的硬磁盘等。通过互联网，计算机之间还可以通过网络进行大规模的远程存储、访问和通讯。 　　计算机系统中的数据访问的速度和效率是由两个基本要素决定的：（1）点与点之间的传输的速度（Bandwidth）；（2）在某点读或写数据的时间延迟（Latency）。在过去的20多年里，在计算机的各个不同的联结点之间数据的传输速度，有了很大的提高，但数据访问的延迟却没能有效地改善。为了解决这一对越来越突出的矛盾，在计算机系统设计和实现中，三种最有效的硬件或软件的方法是：缓存（Caching），备份（Replication）和预取（Prefetching）。 课程大纲 ________________________________________ 　　这门课以上面提到的三个基本技术为核心，全面介绍计算机各个存储层面上的最有代表性和最先进的数据管理方法。课程安排如下： （一） 硬件快速存储器（Cache）的设计与改进 （1） 基本结构 （2） 命中率和访问延迟的取舍 （3） 高命中率和低访问延迟Cache的设计 （4） 多核处理器(Multicore)中的Cache管理 （二） 主存DRAM内局部性（Locality）的挖掘 （1） DRAM缓存区(row buffer)的结构 （2） 在DRAM内局部性丢失的原因 （3） 一种保留局部性的内存地址空间的映射方法 （4） 嵌入Cache 的DRAM的设计与系统应用 （三） 内存和磁盘管理中的核心技术：替换算法 （1） LRU算法优点以及难以解决的问题 （2） LIRS算法是如何解决LRU问题的 （3） Clock-pro: LIRS是如何实现在操作系统内核的 （4） BP-wrapper:消除替换算法在系统实现中的同步竟争 （四） 提高操作系统对磁盘的管理功能和效率 （1） 操作系统对磁盘管理的局限性 （2） [...]]]></description>
			<content:encoded><![CDATA[<p>上个星期我在中科大参加了一个星期的由 张晓东教授，美国俄亥俄州立大学，计算机科学与工程系<a href=" http://www.cse.ohio-state.edu/~zhang"> http://www.cse.ohio-state.edu/~zhang</a>  授课的教程(<a href="http://mail.ustc.edu.cn/~wbdai/dragonstar/html/course.html">http://mail.ustc.edu.cn/~wbdai/dragonstar/html/course.html</a>)。</p>
<p>这个课程最主要focus在数据的局部性原理，从硬件到操作系统到应用程序这样的顺序过来的，对于我们提高核心系统软件的性能非常有启发意义.</p>
<p><a href="http://blog.yufeng.info/wp-content/uploads/2010/08/zkd.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/08/zkd-300x199.jpg" alt="" title="与会者合影"  class="alignnone size-medium wp-image-644" /></a></p>
<p>课件下载点击<a href="http://blog.yufeng.info/dragonStar-2010-USTC.tgz">这里</a></p>
<p> 以下是教程的介绍:<br />
课程简介<br />
________________________________________<br />
　　在计算机系统中，数据的存储、访问和传输已成为阻碍系统性能的主要瓶颈，访问数据的速度远远低于计算的速度，而对数据访问的需求已经成为计算机运行的主要部分。 数据在计算机系统中的存储层次也变得越来越深：从硬件快速寄存器(Registers)到快速存储器(Cache)再到主存的DRAM，通过数据总线，系统可以与各种磁盘，如半导体的固态存储器（Solid State Device）或机械的硬磁盘等。通过互联网，计算机之间还可以通过网络进行大规模的远程存储、访问和通讯。<br />
　　计算机系统中的数据访问的速度和效率是由两个基本要素决定的：（1）点与点之间的传输的速度（Bandwidth）；（2）在某点读或写数据的时间延迟（Latency）。在过去的20多年里，在计算机的各个不同的联结点之间数据的传输速度，有了很大的提高，但数据访问的延迟却没能有效地改善。为了解决这一对越来越突出的矛盾，在计算机系统设计和实现中，三种最有效的硬件或软件的方法是：缓存（Caching），备份（Replication）和预取（Prefetching）。<br />
课程大纲<br />
________________________________________<br />
　　这门课以上面提到的三个基本技术为核心，全面介绍计算机各个存储层面上的最有代表性和最先进的数据管理方法。课程安排如下：</p>
<p>（一） 硬件快速存储器（Cache）的设计与改进<br />
（1） 基本结构<br />
（2） 命中率和访问延迟的取舍<br />
（3） 高命中率和低访问延迟Cache的设计<br />
（4） 多核处理器(Multicore)中的Cache管理<br />
（二） 主存DRAM内局部性（Locality）的挖掘<br />
（1） DRAM缓存区(row buffer)的结构<br />
（2） 在DRAM内局部性丢失的原因<br />
（3） 一种保留局部性的内存地址空间的映射方法<br />
（4） 嵌入Cache 的DRAM的设计与系统应用<br />
（三） 内存和磁盘管理中的核心技术：替换算法<br />
（1） LRU算法优点以及难以解决的问题<br />
（2） LIRS算法是如何解决LRU问题的<br />
（3） Clock-pro: LIRS是如何实现在操作系统内核的<br />
（4） BP-wrapper:消除替换算法在系统实现中的同步竟争<br />
（四） 提高操作系统对磁盘的管理功能和效率<br />
（1） 操作系统对磁盘管理的局限性<br />
（2） 扩大操作系统的视野去获得关键的磁盘数据存储地址信息<br />
（3） DULO-Caching和DULO-Prefetchin:感知磁盘数据分布的缓存(Caching)和预取(Prefetching)方法以及系统实现<br />
（五） 固态闪存系统(Solid State Device Flash Memory)<br />
（1） SSD Flash Memory的结构和性能<br />
（2） SmartSaver: 利用闪存来降低磁盘能耗<br />
（3） SSD的读、写，以及缓存的高效管理<br />
（六） 在互联网和无线网上的数据管理和有效传输<br />
（1） Stretched Exponential Distribution: 为什么P2P在互联网上是传输多媒体的一种最有效的方法？<br />
（2） 数据缓存在无线网上的作用</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/643/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>来自RHEL系统调优手册的几张经典图</title>
		<link>http://blog.yufeng.info/archives/617</link>
		<comments>http://blog.yufeng.info/archives/617#comments</comments>
		<pubDate>Tue, 20 Jul 2010 01:46:51 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[网络编程]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=617</guid>
		<description><![CDATA[看图不说话：） IO架构图： 内存管理图： 很容易误解的socket buffer：]]></description>
			<content:encoded><![CDATA[<p>看图不说话：）</p>
<p>IO架构图：<br />
<a href="http://blog.yufeng.info/wp-content/uploads/2010/07/IO_subsystem_architecture.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/07/IO_subsystem_architecture-300x291.jpg" alt="" title="IO_subsystem_architecture" width="300" height="291" class="alignnone size-medium wp-image-620" /></a></p>
<p>内存管理图：<br />
<a href="http://blog.yufeng.info/wp-content/uploads/2010/07/Linux_virtual_memory_manager.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/07/Linux_virtual_memory_manager-300x197.jpg" alt="" title="Linux_virtual_memory_manager" width="300" height="197" class="alignnone size-medium wp-image-619" /></a></p>
<p>很容易误解的socket buffer：<br />
<a href="http://blog.yufeng.info/wp-content/uploads/2010/07/socket_buffer_memory_allocation.jpg"><img src="http://blog.yufeng.info/wp-content/uploads/2010/07/socket_buffer_memory_allocation-300x253.jpg" alt="" title="socket_buffer_memory_allocation" width="300" height="253" class="alignnone size-medium wp-image-618" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/617/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>我的emacs配置</title>
		<link>http://blog.yufeng.info/archives/578</link>
		<comments>http://blog.yufeng.info/archives/578#comments</comments>
		<pubDate>Wed, 26 May 2010 10:00:38 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=578</guid>
		<description><![CDATA[贴上来方便有用emacs的同学。配置部分是从网上淘来的，忘记出处了，见谅！ ;;(keyboard-translate ?\C-h ?\C-?) (defalias 'yes-or-no-p 'y-or-n-p) (setq time-stamp-active t) (setq time-stamp-warn-inactive t) (setq time-stamp-format &#34;%:y-%02m-%02d %3a %02H:%02M:%02S&#34;) (add-hook 'write-file-hooks 'time-stamp) (global-set-key [f2] 'rgrep) (global-set-key [(f5)] 'eshell) (global-set-key [C-f5] 'shell) (global-set-key (kbd &#34;M-3&#34;) 'capitalize-word) (global-set-key [f6] 'find-file) (global-set-key [C-Z] nil) (global-set-key [C-f4] 'kill-this-buffer) (global-set-key [(f4)] 'ibuffer) (global-set-key [(f8)] 'other-window) (require 'color-theme) ;;(color-theme-initialize) (color-theme-dark-blue2) (setq font-lock-verbose [...]]]></description>
			<content:encoded><![CDATA[<p>贴上来方便有用emacs的同学。配置部分是从网上淘来的，忘记出处了，见谅！</p>
<pre class="brush: plain;">
;;(keyboard-translate ?\C-h ?\C-?)
(defalias 'yes-or-no-p 'y-or-n-p)

(setq time-stamp-active t)
(setq time-stamp-warn-inactive t)
(setq time-stamp-format &quot;%:y-%02m-%02d %3a %02H:%02M:%02S&quot;)
(add-hook 'write-file-hooks 'time-stamp)

(global-set-key [f2] 'rgrep)
(global-set-key [(f5)] 'eshell)
(global-set-key [C-f5] 'shell)
(global-set-key (kbd &quot;M-3&quot;) 'capitalize-word)

(global-set-key [f6] 'find-file)
(global-set-key [C-Z] nil)
(global-set-key [C-f4] 'kill-this-buffer)

(global-set-key [(f4)] 'ibuffer)
(global-set-key [(f8)] 'other-window)

(require 'color-theme)
;;(color-theme-initialize)
(color-theme-dark-blue2)
(setq font-lock-verbose t)
;;(set-default-font &quot;Bitstream Vera Sans Mono-12&quot;)
(global-font-lock-mode t)
(tool-bar-mode -1)
(setq column-number-mode t)
(setq display-battery-mode t)
(setq size-indication-mode t)
(setq default-major-mode 'outline-mode)
(add-hook 'outline-mode-hook 'turn-off-auto-fill)

(setq transient-mark-mode t)
(setq-default shell-cd-regexp nil)
(setq-default shell-pushd-regexp nil)
(setq-default shell-popd-regexp nil)
(setq inhibit-startup-message t)
(setq visible-bell t)
(setq mouse-yank-at-point t)
(setq kill-ring-max 100)
(setq default-fill-column 60)

(global-set-key (kbd &quot;M-g&quot;) 'goto-line)
(global-set-key (kbd &quot;M-o&quot;) 'ff-find-related-file)

(setq require-final-newline t)

(setq track-eol t)

(setq gnus-inhibit-startup-message t)

(setq enable-recursive-minibuffers t)
(setq auto-save-mode nil)
(setq Man-notify-method 'pushy)

(display-time-mode 1)
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(setq display-time-use-mail-icon t)
(setq display-time-interval 10)

(tool-bar-mode -1)
(customize-set-variable 'scroll-bar-mode 'right)

(setq speedbar-show-unknown-files t)
(setq speedbar-update-flag nil)
(setq speedbar-use-images nil)
(setq speedbar-verbosity-level 0)
(global-set-key [f9] 'speedbar)

;; set paren mode
(show-paren-mode t)
(setq show-paren-style 'parentheses)
(mouse-avoidance-mode 'animate)

;; set the default username and email
(setq user-full-name &quot;yufeng&quot;)
(setq user-mail-address &quot;mryufeng@gmail.com&quot;)

;; set the title name
(setq frame-title-format &quot;Emacs - %f&quot;)

;;-------------------------Shell 使用 ansi color-------------
(autoload 'ansi-color-for-comint-mode-on &quot;ansi-color&quot; nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

(require 'uniquify)
(setq
  uniquify-buffer-name-style 'post-forward
  uniquify-separator &quot;:&quot;)

;;
(require 'ibuffer)
(global-set-key (kbd &quot;C-x C-b&quot;) 'ibuffer)
(require 'ido)
(ido-mode t)

;;-------------------------让Emacs拥有tabs-------------------
(require 'tabbar)
(setq tabbar-buffer-groups-function
          (lambda ()
            (list &quot;All&quot;)))

(tabbar-mode)
(global-set-key [(control shift tab)] 'tabbar-backward)
(global-set-key [(control tab)] 'tabbar-forward)
(global-set-key (kbd &quot;M-1&quot;) 'tabbar-backward)
(global-set-key (kbd &quot;M-2&quot;) 'tabbar-forward) 

;;(require 'session)
;;(add-hook 'after-init-hook 'session-initialize)
;;(load &quot;desktop&quot;)
;;(desktop-load-default)
;;(desktop-read)
;;(setq desktop-save-mode t)

(require 'browse-kill-ring)
(global-set-key [(control c)(k)] 'browse-kill-ring)
(browse-kill-ring-default-keybindings)

;;erlang
;;(require 'erlang-eunit)
;;(load &quot;erlang_appwiz&quot; t nil)
(global-set-key [f3] 'erlang-next-error)
(global-set-key [C-f7] 'erlang-compile)
(global-set-key [f7] 'compile)
(global-set-key [f10] 'linum-mode)

;;distel
(add-to-list 'load-path &quot;/usr/local/share/distel/elisp&quot;)
(require 'distel)
(distel-setup)
;; Some Erlang customizations
(add-hook 'erlang-mode-hook
	    (lambda ()
	          ;; when starting an Erlang shell in Emacs, default in the node name
`	          (setq inferior-erlang-machine-options '(&quot;-sname&quot; &quot;emacs&quot;))
		      ;; add Erlang functions to an imenu menu
		      (imenu-add-to-menubar &quot;imenu&quot;)))

;; A number of the erlang-extended-mode key bindings are useful in the shell too
(defconst distel-shell-keys
  '((&quot;\C-\M-i&quot;   erl-complete)
    (&quot;\M-?&quot;      erl-complete)
    (&quot;\M-.&quot;      erl-find-source-under-point)
    (&quot;\M-,&quot;      erl-find-source-unwind)
    (&quot;\M-*&quot;      erl-find-source-unwind)
    )
  &quot;Additional keys to bind when in Erlang shell.&quot;)

(add-hook 'erlang-shell-mode-hook
	    (lambda ()
	          ;; add some Distel bindings to the Erlang shell
	          (dolist (spec distel-shell-keys)
		          (define-key erlang-shell-mode-map (car spec) (cadr spec)))))

;wrangler
(add-to-list 'load-path &quot;/usr/local/share/wrangler/elisp&quot;)
(require 'wrangler) 

;;ecb
(require 'xcscope)
(require 'cedet) ;;load cedet
(require 'ecb) ;;load ecb

(setq ecb-tip-of-the-day nil
inhibit-startup-message t
ecb-auto-compatibility-check nil
ecb-version-check nil)

(global-set-key [f12] 'ecb-activate)
(global-set-key [C-f12] 'ecb-deactivate)
(global-set-key [f11] 'delete-other-windows)
(global-set-key [(meta return)] 'semantic-ia-complete-symbol-menu)
(global-set-key (kbd &quot;C-c e&quot;) 'ecb-goto-window-edit-last)
(global-set-key (kbd &quot;C-c s&quot;) 'ecb-goto-window-sources)
(global-set-key (kbd &quot;C-c d&quot;) 'ecb-goto-window-directories)
(global-set-key (kbd &quot;C-c m&quot;) 'ecb-goto-window-methods)
(global-set-key (kbd &quot;C-c h&quot;) 'ecb-goto-window-history)
(global-set-key (kbd &quot;C-c r&quot;) 'ecb-redraw-layout)
(global-set-key (kbd &quot;C-.&quot;) 'cscope-find-global-definition-no-prompting)
(global-set-key (kbd &quot;C-,&quot;) 'cscope-pop-mark)
(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(ecb-options-version &quot;2.32&quot;)
 '(safe-local-variable-values (quote ((erlang-indent-level . 2)))))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

;;msf abbrev
(add-to-list 'load-path &quot;~/emacs&quot;)
;; ensure abbrev mode is always on
(setq-default abbrev-mode t)
;; do not bug me about saving my abbreviations
(setq save-abbrevs nil)
;; load up modes I use
(require 'cc-mode)
;;(require 'perl-mode)
;;(require 'cperl-mode)
;;(require 'sh-script)
;;(require 'shell)
;;(require 'lua-mode)
;;(require 'erlang)
;; load up abbrevs for these modes
(require 'msf-abbrev)
(setq msf-abbrev-verbose t) ;; optional
(setq msf-abbrev-root &quot;~/emacs/mode-abbrevs&quot;)
(global-set-key (kbd &quot;C-c l&quot;) 'msf-abbrev-goto-root)
(global-set-key (kbd &quot;C-c a&quot;) 'msf-abbrev-define-new-abbrev-this-mode)
(msf-abbrev-load)

;;go mode
(require 'go-mode-load)
(require 'tramp)

;;gud
(add-hook 'gdb-mode-hook '(lambda ()
                            (define-key c-mode-base-map [(f5)] 'gud-go)
                            (define-key c-mode-base-map [(f7)] 'gud-step)
                            (define-key c-mode-base-map [(f8)] 'gud-next)))

(defvar no-easy-keys-minor-mode-map (make-keymap)
  &quot;no-easy-keys-minor-mode keymap.&quot;)
(let ((f (lambda (m)
           `(lambda () (interactive)
              (message (concat &quot;No! use &quot; ,m &quot; instead.&quot;))))))
  (dolist (l '((&quot;&lt;left&gt;&quot; . &quot;C-b&quot;) (&quot;&lt;right&gt;&quot; . &quot;C-f&quot;) (&quot;&lt;up&gt;&quot; . &quot;C-p&quot;)
               (&quot;&lt;down&gt;&quot; . &quot;C-n&quot;)
               (&quot;&lt;C-left&gt;&quot; . &quot;M-f&quot;) (&quot;&lt;C-right&gt;&quot; . &quot;M-b&quot;) (&quot;&lt;C-up&gt;&quot; . &quot;M-{&quot;)
               (&quot;&lt;C-down&gt;&quot; . &quot;M-}&quot;)
               (&quot;&lt;M-left&gt;&quot; . &quot;M-f&quot;) (&quot;&lt;M-right&gt;&quot; . &quot;M-b&quot;) (&quot;&lt;M-up&gt;&quot; . &quot;M-{&quot;)
               (&quot;&lt;M-down&gt;&quot; . &quot;M-}&quot;)
               (&quot;&lt;delete&gt;&quot; . &quot;C-d&quot;) (&quot;&lt;C-delete&gt;&quot; . &quot;M-d&quot;)
               (&quot;&lt;M-delete&gt;&quot; . &quot;M-d&quot;) (&quot;&lt;next&gt;&quot; . &quot;C-v&quot;) (&quot;&lt;C-next&gt;&quot; . &quot;M-x &lt;&quot;)
               (&quot;&lt;prior&gt;&quot; . &quot;M-v&quot;) (&quot;&lt;C-prior&gt;&quot; . &quot;M-x &gt;&quot;)
               (&quot;&lt;home&gt;&quot; . &quot;C-a&quot;) (&quot;&lt;C-home&gt;&quot; . &quot;M-&gt;&quot;)
               (&quot;&lt;C-home&gt;&quot; . &quot;M-&lt;&quot;) (&quot;&lt;end&gt;&quot; . &quot;C-e&quot;) (&quot;&lt;C-end&gt;&quot; . &quot;M-&gt;&quot;)))
    (define-key no-easy-keys-minor-mode-map
      (read-kbd-macro (car l)) (funcall f (cdr l)))))
(define-minor-mode no-easy-keys-minor-mode
  &quot;A minor mode that disables the arrow-keys, pg-up/down, delete
  and backspace.&quot;  t &quot; no-easy-keys&quot;
  'no-easy-keys-minor-mode-map :global t)
(no-easy-keys-minor-mode 1)

(require 'smex)
(smex-initialize)

(global-set-key (kbd &quot;M-x&quot;) 'smex)
(global-set-key (kbd &quot;M-X&quot;) 'smex-major-mode-commands)

(require 'org-install)
(add-to-list 'auto-mode-alist '(&quot;\\.org$&quot; . org-mode))
(define-key global-map &quot;\C-cl&quot; 'org-store-link)
(define-key global-map &quot;\C-ca&quot; 'org-agenda)
(setq org-log-done t)

(setq transient-mark-mode t) ; highlight text selection
(setq delete-selection-mode t) ; delete seleted text when typing

; highlight current line
(require 'hl-line)
(global-hl-line-mode t)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/578/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>emacs msf-abbrev写c程序 (火箭一样快)</title>
		<link>http://blog.yufeng.info/archives/384</link>
		<comments>http://blog.yufeng.info/archives/384#comments</comments>
		<pubDate>Tue, 06 Apr 2010 13:22:25 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[msf-abbrev]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=384</guid>
		<description><![CDATA[看图不说话: 有兴趣的同学google之!]]></description>
			<content:encoded><![CDATA[<p><strong>看图不说话:</strong></p>
<p><a href="http://blog.yufeng.info/image/msf-abbrev-demo.gif"><img src="http://blog.yufeng.info/image/msf-abbrev-demo.gif" alt="" title="msf-abbrev-demo" /></a></p>
<p><strong>有兴趣的同学google之!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/384/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gccgo合并到gcc4.5</title>
		<link>http://blog.yufeng.info/archives/206</link>
		<comments>http://blog.yufeng.info/archives/206#comments</comments>
		<pubDate>Thu, 28 Jan 2010 03:10:12 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[4.5]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[go]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=206</guid>
		<description><![CDATA[From: http://lwn.net/Articles/371466/ I am pleased to announce that the GCC Steering Committee has accepted the contribution of the gccgo front-end and gcc-specific runtime for the Go language with Ian Taylor appointed maintainer. The GCC Release Managers will decide the details about the timing of the merge and inclusion in GCC 4.5 or later. Please join [...]]]></description>
			<content:encoded><![CDATA[<p>From:<a href="http://lwn.net/Articles/371466/"> http://lwn.net/Articles/371466/</a></p>
<p>I am pleased to announce that the GCC Steering Committee has<br />
accepted the contribution of the gccgo front-end and gcc-specific runtime<br />
for the Go language with Ian Taylor appointed maintainer.  The GCC<br />
Release Managers will decide the details about the timing of the merge and<br />
inclusion in GCC 4.5 or later.</p>
<p>	Please join me in congratulating and thanking Ian and the Go<br />
language developers.  Please update your listing in the MAINTAINERS file.</p>
<p>Happy hacking!<br />
David</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/206/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go Lang介绍</title>
		<link>http://blog.yufeng.info/archives/193</link>
		<comments>http://blog.yufeng.info/archives/193#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:22:03 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[Go lang]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=193</guid>
		<description><![CDATA[Go Lang介绍 Go编程语言是Google中一些大牛（尤其是有着plan9前科的大牛们）如Rob Pike，Ken Thomason这两位赫赫有名的程序高手、技术作于2007年9月开始建造。 Pike指出，Go代码的编译基本上可以达到C语言的速度，几乎可以在瞬间完成，“就像是在使用交互式语言”。现有的语言都没有针对多核心处理器进行优化，为了解决此类编程问题，Google工程师们开发了Go语言。从源文件的copyright可以看到，很多基础代码来自plan9. Go 已在Google公司内部测试过，但仍处于试验阶段。Google开放Go的代码，希望籍此帮助Go语言的发展。首席软件工程师Rob Pike说：我们开发Go，是因为近10年左右开发程序之难让我们有点沮丧。Google两年前开始开发Go，1年前开始有一只团队专职于此。目前只支持unix平台， windows平台的支持由于资源的原因，需要更多的参与者来移植。 Go的定位 是系统编程，比如Web服务器、存储系统和数据库等，但也欢迎在其它方面的应用。 Go语言的官方吉祥物如下: 我看好Go的原因是： 这个语言不是凭空或者实验室设计的，而是填补过去10年在系统编程软件方面的不足。作为系统软件的编写者，经常会深深的感觉到目前常见语言的面对大规模的网络应用，在不断涌现的多核心硬件前的无奈, 纠缠在多线程和各种锁中间， 不停的制造各种各样的轮子， 低效的排错。Go拥有的这些现代特性都是系统用户梦迷以求的，经过作者全面的考虑，适当的取舍，即结合了动态语言的弹性，又有了静态语言的安全性和高性能。 目前这个GO社区非常活跃，邮件列表里每天都有几百个讨论，加上有Google的强力支持， 个人认为非常有前途。 那么GO能解决什么问题： 1. 硬件很快 软件开发很慢。 2. 依赖很麻烦。 3. c++ java太笨拙。 4. 并行和gc 5. 多核心机器的出现，未来几年128核心的机器都很常见。 大部分的系统语言并不是设计来解决这些问题的,而且新涌现的大多数库并没有改善这些问题，相反加剧了。 GO结合了动态语言的开发效率和静态编译型语言的安全性和运行效率，支持网络和多核编程，带给我们快速， 安全， 并发， 快乐。 Go有着非常高的效率。 实际上golang.org就是用gdoc架设的。同时语言效能评测网站（） Go和其他语言的对比，也充分说明了Go的效率和c语言很接近。 GO的设计目标： 1。 系统编程语言。 2. 快速编译和执行。 3. 类型安全性和内存使用安全。 4. 很好的支持并发计算。 5. 高效，低延迟的垃圾回收算法。 指导原则： 1. 减少bookkeeping。 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Go Lang介绍</strong><br />
Go编程语言是Google中一些大牛（尤其是有着plan9前科的大牛们）如Rob Pike，Ken Thomason这两位赫赫有名的程序高手、技术作于2007年9月开始建造。</p>
<p>Pike指出，Go代码的编译基本上可以达到C语言的速度，几乎可以在瞬间完成，“就像是在使用交互式语言”。现有的语言都没有针对多核心处理器进行优化，为了解决此类编程问题，Google工程师们开发了Go语言。从源文件的copyright可以看到，很多基础代码来自plan9.</p>
<p>Go 已在Google公司内部测试过，但仍处于试验阶段。Google开放Go的代码，希望籍此帮助Go语言的发展。首席软件工程师Rob Pike说：我们开发Go，是因为近10年左右开发程序之难让我们有点沮丧。Google两年前开始开发Go，1年前开始有一只团队专职于此。目前只支持unix平台， windows平台的支持由于资源的原因，需要更多的参与者来移植。<br />
Go的定位 是系统编程，比如Web服务器、存储系统和数据库等，但也欢迎在其它方面的应用。</p>
<p>Go语言的官方吉祥物如下:<br />
 <a href="http://blog.yufeng.info/wp-content/uploads/2010/01/logo-153x55.png"><img src="http://blog.yufeng.info/wp-content/uploads/2010/01/logo-153x55.png" alt="" title="logo-153x55" width="153" height="55" class="alignnone size-full wp-image-194" /></a></p>
<p>我看好Go的原因是： 这个语言不是凭空或者实验室设计的，而是填补过去10年在系统编程软件方面的不足。作为系统软件的编写者，经常会深深的感觉到目前常见语言的面对大规模的网络应用，在不断涌现的多核心硬件前的无奈, 纠缠在多线程和各种锁中间， 不停的制造各种各样的轮子， 低效的排错。Go拥有的这些现代特性都是系统用户梦迷以求的，经过作者全面的考虑，适当的取舍，即结合了动态语言的弹性，又有了静态语言的安全性和高性能。</p>
<p>目前这个GO社区非常活跃，邮件列表里每天都有几百个讨论，加上有Google的强力支持， 个人认为非常有前途。</p>
<p><strong>那么GO能解决什么问题：</strong><br />
1.	硬件很快 软件开发很慢。<br />
2.	依赖很麻烦。<br />
3.	c++ java太笨拙。<br />
4.	并行和gc<br />
5.	多核心机器的出现，未来几年128核心的机器都很常见。</p>
<p>大部分的系统语言并不是设计来解决这些问题的,而且新涌现的大多数库并没有改善这些问题，相反加剧了。</p>
<p>GO结合了动态语言的开发效率和静态编译型语言的安全性和运行效率，支持网络和多核编程，带给我们快速， 安全， 并发， 快乐。</p>
<p>Go有着非常高的效率。 实际上golang.org就是用gdoc架设的。同时语言效能评测网站（） Go和其他语言的对比，也充分说明了Go的效率和c语言很接近。</p>
<p><strong>GO的设计目标：</strong><br />
1。 系统编程语言。<br />
2. 快速编译和执行。<br />
3. 类型安全性和内存使用安全。<br />
4. 很好的支持并发计算。<br />
5. 高效，低延迟的垃圾回收算法。</p>
<p><strong>指导原则：</strong><br />
1.	减少bookkeeping。<br />
2.	更少的关键词，减少无谓的输入。无符号表设计使得语法分析，调试等大幅简单。<br />
3.	保持概念正交<br />
4. 保持简单。<br />
5. 减少类型，无类型层次，避免啰嗦。</p>
<p><strong>语言特性：</strong><br />
清晰，精确的语法语法：大多数从c 继承， 包机制Pascal/Modula/Oberon family (declarations, packages)，并发从(CSP)那里借鉴。<br />
	大写符号导出符号。<br />
	函数或者块开始注释是文档，用于gdoc处理。<br />
	改进的If， case 复合语句，允许在条件前，执行语句。 Case 不支持自动fall throught, 必须显示说明。 Case支持多个判断。</p>
<p>轻量的类型系统<br />
没有隐式的转换<br />
强类型，显式类型转化<br />
指针运算 slice代替 提供安全性<br />
通用类型：interface{}<br />
内置数组和字典<br />
支持面向对象编程，但是不支持层次继承。<br />
融合多种语言的特性，各个社区的人都会熟悉，特别是c, lua, python社区的用户非常容易上手。</p>
<p>运行期： c和汇编实现内存的分配和收集，栈管理，轻量级协程，通讯管道，切片，Map以及反射等等基础设施。</p>
<p>Gc：目前是用经典的简单的Mark And sweep 算法, 未来会采用更高效，低延迟的算法。</p>
<p><strong>库实现：</strong><br />
1.	完全用Go语言实现, 不依赖其他系统库<br />
2.	从接口库如xml, asn1，jonson, IO库，压缩，加密库等等，比较齐全，极大的方便了用户。<br />
支持unicode. 值得一提的是 Go的 “hello 世界”，很好的展示了对unicode支持。</p>
<p>模块：<br />
	Package管理。一个package可以分散在多个文件里，就好比在一个文件效果一样。</p>
<p>扩展：<br />
	Cgo 支持c和go编程混合，使得GO的扩展非常容易，让Cgo来做参数和类型的转换， 直接连接用户的c函数。</p>
<p>Range：for语句支持通用的迭代，支持数组，字典，通讯管道。 特别是通讯管道结合goroutine, 由生产者负责在一端输入数据， range充当消费者， 从另外一端。。。，使得包容器的迭代实现非常的优雅和简单易懂。</p>
<p>Type: 相当灵活的struct, 支持匿名字段，复用看起来很优雅。</p>
<p>Interface:<br />
接口 类型 接口实现分离。Interface{}用来实现表示同样类型，用于实现保容器和参数省略。</p>
<p>闭包：函数是第一类对象。有了闭包，我们很容易把数据和函数结合在一起，形成一个独立的执行体，无需关心数据的泄漏。</p>
<p>反射(reflection)：用于实现多参数和实现比如xml库，很直观的把结构的字段名和值映射起来，但是效率不高。</p>
<p>Network 支持。支持tcp,udp，接口统一，但网络读写暂时无效的时候，net模块会自动把该句柄注册到系统的poll, 并且让出执行，等待读写事件的发生。一旦事件通知，net内部通过channel通知阻塞的句柄继续往下执行。从用户的使用角度来看，网络的读写都是顺序执行的，极大的简化了编程。</p>
<p>Goroutine：Goroutines 是使得并发编程变得容易的核心。核心思想就是通过系统的线程来多路派遣独立函数的执行 单位协程。当一个协程阻塞的时候，比如说系统调用，调度器就会自动把其他协程安排到另外的线程去执行，从而保证了系统的不间断运行。 这个调度对于程序员是透明的，从用户的角度来看，协程在一直运行。而且这个调度的开销非常小，典型的CPU每秒钟可以调度百万次，使得我们可以创建大量的goroutine, 模拟现实世界的行为，大大的简化了程序的设计和实现。</p>
<p>Channel： CSP的核心思想是通过消息共享， 而不是内存共享。 而消息共享机制就是通过channel来传递消息，有同步和异步之分。 Channel在生产者和消费者之间架设起沟通的桥梁。<br />
<strong><br />
正是 Network+闭包+Goroutine+Channel让Go这么突出。</strong></p>
<p><strong>目前存在的问题：</strong><br />
1.	语言的实现时间比较短，实现和社区都不够成熟，一些语言特性如select timeout还没有实现。<br />
2.	语言库和基于GO的应用还比较少，甚至在Google内部也还是个试验项目。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/193/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>rlwrap方便行编辑</title>
		<link>http://blog.yufeng.info/archives/149</link>
		<comments>http://blog.yufeng.info/archives/149#comments</comments>
		<pubDate>Tue, 24 Nov 2009 19:27:33 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[erl]]></category>
		<category><![CDATA[readline]]></category>
		<category><![CDATA[rlwrap]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/archives/149</guid>
		<description><![CDATA[GNU libreadline 为行编辑提供了统一的接口和方便的编辑能力，在使用中感觉非常爽。但是不是所以的应用程序都使用了readline库来读取用户输入，大部分C程序只是简单的调用fgets。这样的程序在输入的时候非常痛苦。比如erl,为了移植性没用到readline，而是自己实现了类似readline那样的基本的行编辑，但是非常难用，例如不支持CTRL A， CTRL E等等。 这时候rlwrap来救助了。 rlwrap runs the specified command, intercepting user input in order to provide readline&#8217;s line editing, persistent history and completion. 简单的说 这个程序就是让不支持readline的程序也可以享用这个库的好处。 在ubuntu下只要简单的 apt-get -y install rlwrap 就安装好了 使用也很简单： rlwrap cmd 比如 rlwrap erl 这样就可以在erl shell里面以熟悉的emacs按键快速输入，舒服哦。 在linux shell下还可以在.profile里面加入别名， 比如 alias erl='rlwrap erl' 那么就不露神色的修改了erl的行为。]]></description>
			<content:encoded><![CDATA[<p>GNU libreadline 为行编辑提供了统一的接口和方便的编辑能力，在使用中感觉非常爽。但是不是所以的应用程序都使用了readline库来读取用户输入，大部分C程序只是简单的调用fgets。这样的程序在输入的时候非常痛苦。比如erl,为了移植性没用到readline，而是自己实现了类似readline那样的基本的行编辑，但是非常难用，例如不支持CTRL A， CTRL E等等。</p>
<p>这时候rlwrap来救助了。<br />
rlwrap  runs the specified command, intercepting user input in order to provide  readline&#8217;s line editing, persistent history and completion.</p>
<p>简单的说 这个程序就是让不支持readline的程序也可以享用这个库的好处。</p>
<p>在ubuntu下只要简单的 apt-get -y install rlwrap 就安装好了</p>
<p>使用也很简单：</p>
<pre class="brush: bash;">
rlwrap cmd
</pre>
<p>比如  rlwrap erl 这样就可以在erl shell里面以熟悉的emacs按键快速输入，舒服哦。</p>
<p>在linux shell下还可以在.profile里面加入别名， 比如 </p>
<pre class="brush: bash;">
alias erl='rlwrap erl'
</pre>
<p>那么就不露神色的修改了erl的行为。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/149/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Go lang的emacs mode设置</title>
		<link>http://blog.yufeng.info/archives/120</link>
		<comments>http://blog.yufeng.info/archives/120#comments</comments>
		<pubDate>Thu, 12 Nov 2009 09:11:58 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[mode]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=120</guid>
		<description><![CDATA[昨天新发布的Go还是很不错的，而且随机带了个emacs的模式　用起来很方便。 root@nd-desktop:/usr/src/golang# pwd /usr/src/golang root@nd-desktop:/usr/src/golang#  ls misc/emacs/ go-mode.el  go-mode-load.el root@nd-desktop:/usr/src/golang# cp misc/emacs/*.el ~/.emacs.d root@nd-desktop:/usr/src/golang# cat &#38;gt;&#38;gt; ~/.emacs &#60;code&#62;(setq load-path (cons (expand-file-name &#34;~/.emacs.d/&#34;) load-path)) (require 'go-mode-load)&#60;/code&#62; CTRL+D 搞定收工。]]></description>
			<content:encoded><![CDATA[<p>昨天新发布的Go还是很不错的，而且随机带了个emacs的模式　用起来很方便。</p>
<pre class="brush: bash;">
root@nd-desktop:/usr/src/golang# pwd
/usr/src/golang
root@nd-desktop:/usr/src/golang#  ls misc/emacs/
go-mode.el  go-mode-load.el

root@nd-desktop:/usr/src/golang# cp misc/emacs/*.el ~/.emacs.d

root@nd-desktop:/usr/src/golang# cat &amp;gt;&amp;gt; ~/.emacs
&lt;code&gt;(setq load-path (cons (expand-file-name &quot;~/.emacs.d/&quot;) load-path))
(require 'go-mode-load)&lt;/code&gt;
</pre>
<p>CTRL+D<br />
搞定收工。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/120/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【CN-Erlounge-IV】会议议程安排</title>
		<link>http://blog.yufeng.info/archives/84</link>
		<comments>http://blog.yufeng.info/archives/84#comments</comments>
		<pubDate>Mon, 12 Oct 2009 04:07:48 +0000</pubDate>
		<dc:creator>Yu Feng</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[CN-Erlounge-IV]]></category>
		<category><![CDATA[会议议程安排]]></category>

		<guid isPermaLink="false">http://blog.yufeng.info/?p=84</guid>
		<description><![CDATA[以下是会议议程安排。更多信息访问： http://ecug.org/ 2009-11-6 * 讲师入住酒店 * 会务人员&#038;讲师小聚 2009-11-7 08:30 ~ 09:00 签到 09:00 ~ 09:15 开场 09:15 ~ 10:15 成立涛 &#8211; Erlang开发实践 10:15 ~ 10:30 提问&#038;交流 10:30 ~ 11:30 余锋 &#8211; Erlang系统调优 11:30 ~ 11:45 提问&#038;交流 11:45 ~ 12:00 集体拍照留念 12:00 ~ 13:00 午餐 13:00 ~ 13:30 休息 13:30 ~ 14:30 范赟、周琦 &#8211; 恶狼战役及社区养成 14:30 [...]]]></description>
			<content:encoded><![CDATA[<p>以下是会议议程安排。更多信息访问： <a href="http://ecug.org">http://ecug.org/</a><br />
2009-11-6</p>
<p>    * 讲师入住酒店<br />
    * 会务人员&#038;讲师小聚</p>
<p>2009-11-7</p>
<p>08:30 ~ 09:00 签到<br />
09:00 ~ 09:15 开场<br />
09:15 ~ 10:15 成立涛 &#8211; Erlang开发实践<br />
10:15 ~ 10:30 提问&#038;交流<br />
10:30 ~ 11:30 余锋 &#8211; Erlang系统调优<br />
11:30 ~ 11:45 提问&#038;交流<br />
11:45 ~ 12:00 集体拍照留念</p>
<p>12:00 ~ 13:00 午餐<br />
13:00 ~ 13:30 休息</p>
<p>13:30 ~ 14:30 范赟、周琦 &#8211; 恶狼战役及社区养成<br />
14:30 ~ 14:45 提问&#038;交流<br />
14:45 ~ 15:45 Stewart Mackenzie &#8211; An Erlang Implementation of Restms<br />
15:45 ~ 16:00 提问&#038;交流<br />
16:00 ~ 16:15 茶歇（水果）<br />
16:15 ~ 17:15 金尹 &#8211; CUDA Programming，一次异域之旅<br />
17:15 ~ 17:30 提问&#038;交流</p>
<p>17:30 ~ 18:30 晚餐<br />
18:30 ~ 19:00 休息<br />
19:00 ~ 20:00 李杰、崔博 &#8211; ac_actor: Erlang进程模型在C++中的实践<br />
20:00 ~ 21:00 许式伟 &#8211; CERL: 谈谈“Boost.ASIO、Erlang与服务器编程”</p>
<p>21:00 全天会议结束</p>
<p>2009-11-8</p>
<p>08:30 ~ 09:30 方焜平 &#8211; 利用已有单机程序组建分布式模型的分析与实例<br />
09:30 ~ 09:45 提问&#038;交流<br />
09:45 ~ 10:45 侯明园 &#8211; 基于Erlang实现的MMO服务器连接管理服务<br />
10:45 ~ 11:00 提问&#038;交流（上水果）<br />
11:00 ~ 12:00 沙龙。开放式讨论（社区建设、技术走向等等）。</p>
<p>12:00 ~ 13:00 午餐<br />
13:00 ~ 13:30 休息</p>
<p>13:30 ~ 14:30 周爱民 &#8211; 谈谈erlang网络环境下的几种数据流转形式<br />
14:30 ~ 14:45 提问&#038;交流<br />
14:45 ~ 15:45 吴峥涛 &#8211; XEngine介绍<br />
15:45 ~ 16:00 提问&#038;交流</p>
<p>16:00 会议结束 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yufeng.info/archives/84/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
