Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
700 lines (337 sloc) 16.4 KB
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title></title>
<meta name="author" content="cmonkey">
<meta name="description" content="自从Google Reader 关闭以后,一直用feedly进行替代。 后来知道了Pocket可以将读过或者需要有时间的时候在读的东西,先保存起来。 但是Pocket有个问题,如果来源被删除了,那么就什么东西都没有了。 这时又知道了Instapaper这么一个东西,能够图文并茂的进行展现。 &hellip;">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://cmonkey.github.com/">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-27643375-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/"></a></h1>
<h2>芝兰生于深谷,不以无人而不芳;君子修道立德,不为困穷而改节。</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:cmonkey.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
<li><a href="/about">About Me</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/08/02/instapaper/">Instapaper</a></h1>
<p class="meta">
<time datetime="2014-08-02T09:28:21+08:00" pubdate data-updated="true">Aug 2<sup>nd</sup>, 2014</time>
</p>
</header>
<div class="entry-content"><p>自从Google Reader 关闭以后,一直用feedly进行替代。</p>
<p>后来知道了Pocket可以将读过或者需要有时间的时候在读的东西,先保存起来。</p>
<p>但是Pocket有个问题,如果来源被删除了,那么就什么东西都没有了。</p>
<p>这时又知道了Instapaper这么一个东西,能够图文并茂的进行展现。</p>
<p>并且能够在来源被删除后,还是一样显示,这比浏览器的书签好多了。</p>
<p><a href="http://news.dbanotes.net">DBANotes</a> <a href="http://geek.csdn.net">CSDN</a> <a href="http://reddit.com/r/racket">Racket</a> <a href="http://reddit.com/r/scheme">Scheme</a> <a href="http://www.reddit.com/r/Programming">Programming</a></p>
<p>国内的两个仿hacker news 的是中文,对我这种英语不好的人很有好处。</p>
<p>但还是要强迫自己去<a href="https://news.ycombinator.com/">Hacker News</a>看看</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/12/18/8964/">8964</a></h1>
<p class="meta">
<time datetime="2013-12-18T21:03:00+08:00" pubdate data-updated="true">Dec 18<sup>th</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p><img src="images/Bbv8R6WIIAAwYfR.jpg"></p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/10/01/64/">64</a></h1>
<p class="meta">
<time datetime="2013-10-01T10:43:00+08:00" pubdate data-updated="true">Oct 1<sup>st</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><h3>祝愿64周年</h3>
<p><img src="images/BVdGaKDIIAANsRL.jpg"></p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/10/01/del-txt/">Del Txt</a></h1>
<p class="meta">
<time datetime="2013-10-01T10:35:00+08:00" pubdate data-updated="true">Oct 1<sup>st</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><pre><code>#lang racket
(define path (path-&gt;directory-path "/tmp"))
(define pathStr (path-&gt;string path))
(define file-list (filter
(lambda (f)
(regexp-match #rx"[^-ms]\\.txt" f)) (directory-list path)))
(define (del-file file-list)
(cond [(empty? file-list) '()]
[else
(define f (string-&gt;path (string-append pathStr (path-&gt;string (car file-list)))))
(if (file-exists? f)
(delete-file f)
(displayln f)
)
(del-file (cdr file-list))
]))
(del-file file-list)
</code></pre>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/08/10/jiao-yu/">教育</a></h1>
<p class="meta">
<time datetime="2013-08-10T17:28:00+08:00" pubdate data-updated="true">Aug 10<sup>th</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>引用<a href="http://cn.nytimes.com/education/20130810/cc10jiangxueqin/">学歌经历给我的启迪</a></p>
<p>这正是我们目前养育和教育孩子的方式的问题所在。
我们花一大笔钱让6岁大的孩子上钢琴课,还时不时带他们去欧洲旅行,但他们真正想要和需要的是,发现自身面临的挑战,并努力克服。
我们认为,我们的孩子必须立刻学会一切本领,否则的话,他们永远也学不会,这种看法是完全错误的。
当他们准备学的时候,他们就会学,如果我们催得太紧,他们就永远也不想学。</p>
<p>在这样一个竞争激烈,消费主义盛行的社会中,我们忘记了学习并不是为了进入一所好学校,获得一份好工作,或者给其他人留下好印象。
从本质上说,学习的意义在于发现我们自身潜能,突破各种想象的和自我强加的藩篱。那是世界上最美妙,最令人愉悦,最能给予人力量的感受。</p>
<p>如果作为家长和老师的我们再次为自己开始学习,我们将铭记于心的是,当孩子们在我们身上看到这种学习欲望的时候,他们就将真正萌生学习的念头。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/08/10/jiao-yu/">Read on &rarr;</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/07/31/right/">Right</a></h1>
<p class="meta">
<time datetime="2013-07-31T21:10:00+08:00" pubdate data-updated="true">Jul 31<sup>st</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>最近的阅读方式是通过订阅
<a href="http://hikindle.com/">hikindle</a>,然后在kindle上阅读一些新闻和短篇。</p>
<p>近期看到一个很有意思的文章是左岸读书的
<a href="http://www.zreading.cn/archives/3923.html">放诸古今皆准的权力规则</a></p>
<p>这个短篇感觉应该强烈推荐,至少从另一个角度来看整个政治行为。
是很有意思的短篇文章。</p>
<p>关于读书,有一些认识,比如在SICP中没有搞清楚的问题,可能在读具体数学的时候就搞清楚了。</p>
<p>真是很有意思的问题,在关于无穷问题上可以这本书是这么写的,但是在量子力学史话中可能关于无穷有一些不同的看法。</p>
<p>多读书,哪怕当时的一些问题搞不清楚,但是没有关系,以后就清楚了,那知识在脑海中形成了一个求解的函数,在后台默默的运行。</p>
<p>当有关于该知识的信息出现的时候,整个知识就连贯起来了。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/07/31/right/">Read on &rarr;</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/27/wpf/">WPF</a></h1>
<p class="meta">
<time datetime="2013-06-27T20:34:00+08:00" pubdate data-updated="true">Jun 27<sup>th</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>Web Platform Factory 简称WPF,该平台是构建在WebSpace上的一个java框架。 <br/>
在上面做一个项目,就是在web页面上进行操作。 <br/>
比如一个业务场景,就是一个ActionList,一个ActionList中可以有多个Action,每个Action可以是一个执行Sql的动作,或者是执行JMS的。 <br/>
开发人员主要的开发工作就是定义这些Action。 <br/>
一个ActionList就是一个webservice服务。页面通过Dojo框架来调用webservice. <br/>
正对Action的逻辑基本上是没有什么逻辑,直接在配置页面的文本框中写sql等。 <br/>
一点java的代码可能是对Action的拦截器。</p>
<p>前端是通过xml来生成页面的。</p>
<p>开发人员不在关注以前的MVC等模型,只是一个业务转换器。</p>
<p>所以很是疑问的开发人员的路在何方?</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/15/protobuf/">Protobuf</a></h1>
<p class="meta">
<time datetime="2013-06-15T12:43:00+08:00" pubdate data-updated="true">Jun 15<sup>th</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>尝试使用了一下ProtoBuf<br/>
写proto 文件,然后通过命令编译为java的桩代码<br/>
写Write/Read测试,照着google 的文档,倒是很简单。<br/>
但是有一些疑惑,为什么要通过这种桩代码呢? 不能是通过api来调用么? 直接将要序列化的对象丢到某个方法里不行么?</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/01/racket-on-ffi/">Racket on Ffi</a></h1>
<p class="meta">
<time datetime="2013-06-01T23:28:00+08:00" pubdate data-updated="true">Jun 1<sup>st</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>link:<a href="http://www.cs.grinnell.edu/~rebelsky/Glimmer/Summer2012/RacketFFI/tutorial.html">The Racke tForeign-Function Interface</a>
// mylib1.c
#include &lt;stdio.h>
#include &lt;stdlib.h></p>
<pre><code>// Square an integer
int isquare (int i){
return i * i;
}
</code></pre>
<p>command 中执行:</p>
<pre><code>gcc --shared -o mylib1.so mylib1.c
</code></pre>
<p>mylib.rkt<br/>
#lang racket</p>
<pre><code>(require ffi/unsafe
ffi/unsafe/define)
(define-ffi-definer mylib-define (ffi-lib "mylib1"))
(mylib-define isquare (_fun _int -&gt; _int))
(isquare 5)
</code></pre>
<p>mylib1.rkt</p>
<pre><code>#lang racket
(require ffi/unsafe)
(define mylib (ffi-lib "mylib1.so"))
(define isquare
(get-ffi-obj "isquare"
mylib
(_fun _int -&gt; _int)))
(isquare 1000)
</code></pre>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/01/slideshow-and-ffi/">Slideshow and Ffi</a></h1>
<p class="meta">
<time datetime="2013-06-01T22:39:00+08:00" pubdate data-updated="true">Jun 1<sup>st</sup>, 2013</time>
</p>
</header>
<div class="entry-content"><p>今天值得高兴的有两件事,是很有意思的一天。</p>
<p>学习Racket以来,一直很好奇Racket 中怎么实现调用动态库,Java中可以通过JNI技术,来实现对动态库的调用。
但是一直是不知道在Racket中如何调用。</p>
<p>这一切的疑问都在今天解决了,在逛github 的时候,看到了Racket中通过ffi 中的函数库来调用动态库。
一般有如下方法: <br/>
#lang racket
(requive ffi/unsafe)
(define libgit2 (ffi-lib &ldquo;libgit2&rdquo;))</p>
<p>大体的代码结构就是这样,详细文档请见<a href="http://docs.racket-lang.org/foreign/">ffi</a></p>
<p>第二件高兴的事情是,在看<a href="http://www.mefeedia.com/video/26348171">Macros Matter: Infrastructure for building new programming languages</a> 这个视频的时候。
看到简单使用slideshow 这个函数库中的slide 函数实现ppt的编写。</p>
<p>这东西也太酷了,所以简单的看了一下该函数库的文档,然后还用这写了一个简单的个人简介的ppt。
<a href="http://docs.racket-lang.org/slideshow/">slideshow</a></p>
</div>
</article>
<div class="pagination">
<a class="prev" href="2">&larr; Older</a>
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2014/08/02/instapaper/">instapaper</a>
</li>
<li class="post">
<a href="/blog/2013/12/18/8964/">8964</a>
</li>
<li class="post">
<a href="/blog/2013/10/01/64/">64</a>
</li>
<li class="post">
<a href="/blog/2013/10/01/del-txt/">del txt</a>
</li>
<li class="post">
<a href="/blog/2013/08/10/jiao-yu/">教育</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating&#8230;</li>
</ul>
<a href="https://github.com/cmonkey">@cmonkey</a> on GitHub
<script type="text/javascript">
$.domReady(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'cmonkey',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright &copy; 2014 - cmonkey -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'cmonkey';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>
Something went wrong with that request. Please try again.