background preloader

Paul Graham

Paul Graham
Related:  Lisp

Setting up Common Lisp on Windows 7 1. Install a Common Lisp implementation, or several of them SBCL for Windows with threads: is slow, and singlethreaded but makes relatively small binariesCCL is reportedly good? 2. Install Emacs. 3. 4. 5. (quicklisp-quickstart:install) (ql:add-to-init-file) 6. (ql:quickload "quicklisp-slime-helper") 7. (add-to-list 'exec-path "C:/sbcl") ;; or wherever you installed SBCL or other Lisp (load (expand-file-name "~/quicklisp/slime-helper.el")) (setq inferior-lisp-program "sbcl") ;; or other Lisp (slime-setup '(slime-fancy slime-asdf)) ;; and possibly other SLIME extensions (add-hook 'slime-mode-hook '(lambda () (set-variable lisp-indent-function 'common-lisp-indent-function) (define-key slime-mode-map [tab] 'slime-indent-and-complete-symbol) (define-key slime-mode-map (kbd "C-<tab>") 'slime-complete-symbol))) Type C-x C-s to save file. 8. cd AppData\Roaming mklink /J quicklisp ..\.. 9. 10. (ql:quickload "cl-ppcre") 11. (:tree "c:/lisp/")

Philippe Courtot 给创业者的八个最佳创业提示 编者按:本文的八条提示全部来自于美国云计算安全公司 Qualys的创始人兼 CEO Philippe Courtot。Qualys 是全球“云安全”服务的顶级供应商,首次提出 SaaS 模式(软件即服务)。创始人 Philippe Courtot 曾多次将小型革新企业打造成业界的佼佼者,此人在云计算领域有着不可忽视的影响力。因此本文是以云计算创业公司为例的,但对其他创业者也有一定的借鉴意义。 在融资之前雇用天才 “不要过早的接触VC。”Courtot说。 “你没必要把公司所有的希望都押在 VC 上。 Courtot 眼中的天才是指那些能帮你设计云服务架构或者写代码的人。 团队无需太大 创业初期,你没必要将未来可能需要的人都雇进来。 Courtot 说:“一上来就招 100 个人根本是不必要的,你的团队只需要完成你的第一步就足够了。” 要有全球化思维 “把大家聚在一个办公室里来创办一家公司的时代已经一去不复返了,尤其在这个到处都是云计算的环境下。 “当你为了一个想法而创建了一个团队时,没人在乎你团队里的人是在法国还是在俄罗斯。” 找一个“小白鼠” 下一步就是找一个能变成你的合作伙伴的客户,他们能让你不断完善你的问题。 “从一个客户开始,这个客户会遇到很多问题,而这些正是你需要改进的地方,他们是让你发现问题、改进问题的合作伙伴。” “即使你有很好的想法和技术,你也要有一个客户来为你发现问题。” 真正的“小白鼠”乐于尝试你的产品 如果你的创业想法真的解决了一个商业需求,你在找“发现问题”的伙伴上不会遇到太大的困难。 如果你的想法一提出来他们就有尝试的欲望,就说明你找对方向了。 Courtot 解释说:“这非常简单,如果客户遇到了问题,他们很快就能知道是怎么回事。 建立一个可验证的想法并积极的去获得融资 “经过前面几步,现在你就需要证明你想法是可行的了。 “如果上面都完成了的话,下面就是去见投资人了。 不要轻易改变你的商业模式 “可能会有一些VC或客户会说服你放弃云计算服务并直接卖软件。 “卖商业软件刚开始会赚到大把的钱,但之后的持续收入只有之前的 20% 左右。” “如果是云计算服务的话,客户就会持续的付费。 准备好重建整个服务系统 提供云计算服务的方向是很单一的。 Qualys 最初是用 PHP 语言搭建的云计算服务。 “但是如果你不进行重建的话,你就会渐渐衰落下去。” via BI

7 Ways to Make Money Online It’s estimated that for every one legitimate online opportunity there are roughly sixty scams. The reason is that quite a few people seem to believe that there’s a magic package out there which allows one to make a lot of money on the internet with very little effort, and there’s always a less than reputable website willing to sell it to them. To be perfectly honest there are many different ways to make money online, and working from home can be extremely rewarding. This is why we’ve put together a list of real ways to make money from home. Feel free to explore the ideas on this page, join the discussions & leave your response below, or suggest an idea we haven’t thought of yet… #1 Get an Online Job… If you want to earn income at home then you may think the most obvious solution is to get a work-at-home job. You can get a job as a customer service representative and earn money by fielding customer’s questions and providing them with support. #2 Make Money Taking Surveys…

Quicklisp beta Quicklisp is a library manager for Common Lisp. It works with your existing Common Lisp implementation to download, install, and load any of over 1,200 libraries with a few simple commands. Quicklisp is easy to install and works with ABCL, Allegro CL, Clasp, Clozure CL, CLISP, CMUCL, ECL, LispWorks, MKCL, SBCL, and Scieneer CL, on Linux, Mac OS X, and Windows. The libraries were last updated on February 8, 2016. To get started with the Quicklisp beta, download and load PGP signaturesha256 = 4a7a5c2aebe0716417047854267397e24a44d0cce096127411e9ce9ccfeb2c17 Quicklisp is provided as-is without warranty of any kind. To get news and announcements, follow @quicklisp on twitter or read the Quicklisp blog. Installation To install Quicklisp, download quicklisp.lisp and load it. You only need to load once to install Quicklisp. Here's an example installation session on MacOS X with SBCL. Loading After Installation (load "~/quicklisp/setup.lisp") Basic Commands

i黑马_创业灵感聚集地 Contents • Build Your Own Lisp Chapter 1 • Introduction About Who this is for Why learn C How to learn C Why build a Lisp Your own Lisp Chapter 2 • Installation Setup Text Editor Compiler Hello World Compilation Errors Documentation Chapter 3 • Basics Overview Programs Variables Function Declarations Structure Declarations Pointers Strings Conditionals Loops Chapter 4 • An Interactive Prompt Read, Evaluate, Print An Interactive Prompt Compilation Editing input The C Preprocessor Chapter 5 • Languages What is a Programming Language? Chapter 6 • Parsing Polish Notation Regular Expressions Installing mpc Polish Notation Grammar Parsing User Input Chapter 7 • Evaluation Trees Recursion Evaluation Printing Chapter 8 • Error Handling Crashes Lisp Value Enumerations Lisp Value Functions Evaluating Errors Plumbing Chapter 9 • S-Expressions Lists and Lisps Types of List Pointers The Stack & The Heap Parsing Expressions Expression Structure Constructors & Destructors Reading Expressions Printing Expressions Evaluating Expressions Credits

36氪 | 关注互联网创业 Why monads have not taken the Common Lisp world by storm Topics: monads, Common Lisp, functional programming Author: Marijn Haverbeke Date: July 11th 2008 Today I was trying write a parser for a reasonably complicated language. Since I do not tend to learn from other people's work or even from my own past mistakes, and tend to greatly underestimate the complexity of tasks (or overestimate my own skills) this went something like this: Try to quickly write the whole thing as a single recursive descent parser. Note the exploding amount of ugliness. So, as it stands, I have wasted a few hours, and am still without an acceptable parser. You are bound to have heard of monads. Given how wonderful monads are, why aren't other language suffering from major monad envy? Support ML-style function-fu (trivial currying, single namespace). I'll go into these in a moment. So what would monads look like in CL. (defgeneric >>= (m f)) (defgeneric >> (m1 m2) (:method (m1 m2) (>>= m1 (lambda (x) (declare (ignore x)) m2)))) Awesome!

Related: