Hello, world! 我是 Liutos,一名钟爱 Common Lisp 的程序员。
尽管我最钟爱的是 Common Lisp,但我是从 C 语言开始接触编程的,入行后最先使用的是 Ruby,后来是 PHP、Node.js。现在则是 Python 和 Go。
但无论如何,最有意思的当然是 Common Lisp 了——尽管从来没有在工作中正经用过。
我写字的地方,欢迎订阅或关注
我的开源项目
技术栈
gitalk博客评论
Hello, world! 我是 Liutos,一名钟爱 Common Lisp 的程序员。
尽管我最钟爱的是 Common Lisp,但我是从 C 语言开始接触编程的,入行后最先使用的是 Ruby,后来是 PHP、Node.js。现在则是 Python 和 Go。
但无论如何,最有意思的当然是 Common Lisp 了——尽管从来没有在工作中正经用过。
我写字的地方,欢迎订阅或关注
我的开源项目
技术栈
https://liutos.github.io/2012/08/24/PE%E7%9A%84%E7%AC%AC26%E9%A2%98/
今天上百度贴吧的ProjectEuler吧时发现大家在讨论第26题的一个解法的原理[求值]求解释原理,然后话题很快又从对解法的原理的解释转移到了对性能的攀比之中——这也是人之常情啦,哪个做PE题目的人不希望自己的方法是尽量快的呢^_^看了一下吧主的解法的运行时间,发现居然不是毫秒级别的,顿时对自己以前的解法需要运行多久心生好奇,于是在已经打开的SLIME中加载了以前的源文件,一运行,发现相当地快,
可耻的蛮力法ProjectEuler的第66题的传送门。话说今天挺累的,去实习单位那边做了一下小小的阶段性总结,然后走回了学校的另一个门,吃完饭又走回学校另一头的我自己的宿舍,别提有多累了。看来今天这样的运动量也够了,今晚的跑步就先搁置了吧。好了,回到正题,也就是ProjectEuler的第66题。第66题乍看起来似乎很简单,无非就是查找一个满足条件的所有x当中的最大值而已。于是像几乎所有的其它题
仅以此文膜拜八年前的自己 序言欧拉计划(Project Euler)就像LeetCode,是一个编程答题的网站。不同于LeetCode的是,欧拉计划只要求用户提交最终答案即可(一般是一个数字),而不需要完整代码。因此,可以尽情地使用自己喜欢的编程语言——不少题目甚至光靠笔和纸便能解决。 欧拉计划的第66题非常有意思,它的题目很简单,就是要求找出在不大于1000的整数中,以哪一个数字为丢番图方程
有一天,我用Homebrew安装了一些软件——因为已经是一个月前的事情了,所以已经记不清是安装了什么。安装后并没有立即出现什么问题,只是又过了两天我重新启动电脑后,发现同样是由Homebrew安装的Emacs不由分说地无法启动了。这下可麻烦了,毕竟我是org-mode的重度使用者,还需要偶尔用SLIME写点Common Lisp的代码,而它们都运行在Emacs中。 直觉告诉我,也许重新安装一下Em
通常在糊业务代码的时候,不管是函数、方法,还是宏,都只会有一个返回值。比如在C语言用于检查一个字符是否为阿拉伯数字的isdigit函数就只会返回是(1)或否(0) 12345678910#include <ctype.h>#include <stdio.h>intmain(int argc, char *argv[]){ char c = 'a'; p
《实战Common Lisp》系列主要讲述在使用Common Lisp时能派上用场的小函数,希望能为Common Lisp的复兴做一些微小的贡献。MAKE COMMON LISP GREAT AGAIN。 序言写了一段时间的Python后,总觉得它跟Common Lisp(下文简称CL)有亿点点像。例如,Python和CL都支持可变数量的函数参数。在Python中写作 12def foo(*
序言相信各位读者对秒表都不陌生,智能手机上通常都有这样一款软件 有一天心血来潮,便想要“复刻”一个命令行版本的秒表程序——主要是想尝试一下新学会的、“原地更新”的技能,而不是一行接一行地输出。程序的运行效果如下 那么这是怎么做的呢? 实现思路及代码如何获取流逝的时间长度?要实现一个秒表,首先要知道从开始计时至今过了多久。在*nix系统中,表示时刻的事实标准是Epoch Time,在shell脚
https://liutos.github.io/2021/06/14/%E4%BB%8EAOP%E5%88%B0method-combination/
“实战Elisp”系列旨在讲述我使用Elisp定制Emacs的经验,抛砖引玉,还请广大Emacs同好不吝赐教——如果真的有广大Emacs用户的话,哈哈哈。 Emacs的org-mode用的是一门叫Org的标记语言,正如大部分的标记语言那样,它也支持无序列表和检查清单——前者以-(一个连字符、一个空格)为前缀,后者以- [ ]或- [x]为前缀(比无序列表多了一对方括号及中间的字母x) 此外,
序言备考某等级考试的时候,在教材中碰到了几个一直不太理解的、关于硬盘的概念:磁道、柱面号、扇区。然而教材没有配图,无法直观地了解这些概念的物理形态。维基百科的硬盘词条页中倒是有一副不错的示意图,我截图搬运了过来 原图是一张SVG图片,本质上是一堆指令——也就是所谓的语绘啦。我是一个语绘爱好者,也想试试看能否用代码画一幅差不多的图出来。 在旧文《程序员特有的画图方式——语绘工具小入门》中,我演示过
准备过互联网公司的服务端岗位面试的人,对Redis中的5种数据类型想必是如数家珍。而网上很多面试题里也会出现这道题目 随着行业曲率的增大,光是知道有这些数据类型已经不够了,还得知道同一个类型也有不同的底层数据结构。例如同样是string类型,不同内容或不同长度会采用不同的编码方式: 123456789101112131415161718127.0.0.1:6379> SET key1
链子涂色问题的动态规划解法话说大四已经开始了一个半月了,自己自从开学以来也一直在找工作,相继投了很多家IT公司。可悲的是,笔试过后就完全没有回音了——参加了多益网络的笔试两天后倒是有回音,只是收到的是拒绝的邮件QAQ。说实话,现在对于自己能不能够顺利地找到工作还是很担忧的,所以最近开始了紧张的复习。不过自己实在是懒,所以也没有像别人考研那么地拼命,只是在刷完微博读完邮件逛完豆瓣后开始看一些讲数据结
https://liutos.github.io/2020/01/02/2019%E5%B9%B4%E6%80%BB%E7%BB%93/
序言9102年都已经过去好几天了,现在才来产出年终总结。 个人项目cuckoo——定时提醒工具在18年的总结中,我提到自己开发了一个名为cuckoo的工具,用来代替macOS的提醒事项、日历,以及由crontab调用的shell脚本。这个目标在19年得以实现,cuckoo已经完全取代了它们。 cuckoo实现了以下功能: 创建一次性和周期性的提醒。cuckoo甚至可以在正确的二月最后一天弹出提醒
在org-mode中,一个条目(entry)可以设置多个属性(Properties)。有的属性是org-mode内置的,有它们的特殊用途。有的属性是自定义的,用在一些插件或仅仅用于记录信息。CUSTOM_ID属于前者,而ID属性后者。 CUSTOM_IDCUSTOM_ID用于跳转。org-mode支持丰富的外部链接格式,其中之一便是链接到指定.org文件的指定CUSTOM_ID的条目。 比如在一个
我经常使用Emacs来干写字的活——有时候是写代码、有时候是用org-mode管理待办事项、有时候是用restclient-mode来测试HTTP API。Emacs丰富的快捷键让我可以双手不离主键盘区就做到很多事情,不过这也带来了别样的烦恼:快捷键按多了,手容易累。 导致手累的第一个因素,是Emacs的不少快捷键需要按住ctrl来使用,而ctrl常常不容易按到。以我的键盘为例,ctrl键分布在主
https://liutos.github.io/tags/
记录编程生涯的大大小小的事情
序言入坑VS Code前,我已经是一名久经考验的Emacs老用户了,因此开始正式使用VS Code后,我第一时间启用了它的Emacs Keymap。但不久我便发现,这套键映射缺少一个重要的快捷键——ctrl-l。 在Emacs中,ctrl-l对应的命令是recenter-top-bottom,它用于将光标所在的行轮替地滚动到可视区域(即Emacs中的window)的中间、顶部,以及底部(如下图所示
准备过互联网公司的服务端岗位面试的人,对于二叉树的三种遍历方式想必是如数家珍。假设以类BinaryTree定义一棵二叉树 12345class BinaryTree: def init(self, left, right, value): self.left = left self.right = right self.value = val
序言在旧文《如何写一个命令行的秒表》中,借助命令tput,我实现了“原地更新”所输出的时分秒的效果 其中用到的是ASCII转义序列\x1b[8D和\x1b[0K。除此之外,ASCII转义序列还有许多其它功能。例如,可以用来定制输出内容的前景色 将转义序列中的参数38改为48,可以定制输出内容的背景色 将打印内容改为两个空格,看起来就像是在一块黑色的画布上涂了一个红色的方块 既然如此,只要尺
忆往昔峥嵘岁月稠在Python的语言标准的Comparisions章节中提到 Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics 也就是说,在C语言中要写成a < b && b < c的表达式,在Pyth
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.