- develop 40
- os 12
- extract 4
- mathematical 3
- philosophy 3
- default 2
- algorithms 2
- life 2
- game 2
- dev 2
- galgame 1
- physics 1
- tool 1
- script 1
develop
haskell中fmap, liftM, mapM, traverse历史问题记录
问题
fmap
与liftM
看起来做了相同的事,只是类型约束不同,实现上也不一样,但结果是一样,且后者的实现,可以归约到前者。那为什么使用了两种不同的命名,分别实现?同样的还存在于mapM
与traverse
等地方。
资料
说明
简单来说就是历史问题,以前的Monad等并没有受Functor约束,在2010的Haskell中已经改正了,但因为历史因素没有删除这些多余的命名。在使用中,推荐使用约束最少的那一个,比如说fmap和liftM,使用fmap。虽然实现上会有点区别,但最后的结果应该是一致的。
nixos install
记录几个nixos安装时的问题。
- 关闭bios的secure boot,这是windows强制默认开启的,但这会导致U盘无法启动
- 关闭fastboot,这也是windows的,这会导致内核模块iwlwifi无法被加载,从而无法使 用无线网络
nix derivation
今天在想要不要把home-manager内的zsh plugins换成impurer的fetch时想到的问题。nix derivation是怎么计算hash的,为什么使用fetchFromGethub
这类由stdenv定义的fetchur就没有问题,而原装的就不行呢?
简单来说就是看源代码。
调试器与软件启动过程
起因很简单,在弄emacs的调试器,然后想到的问题。本文主要思考了CC、haskell、python与ruby的调试器。在IDE中,在源代码窗口中打断点其实就相当于在对应上下文或调试器启动时,增加给编译器或解释器使用的中断信息,如C语言中的调试用宏,lldb/gdb/ghci中break相关命令的参数,ruby中的byebug等。
haskell caf
haskell中,会对特定的form
进行缓存。从而产生出了一些使用无穷列表等方案的技巧,用于缓存运行结果。避免重复计算。最典型的例子就是斐波那契数。
foldl,foldr,foldl’
fold是合并列表等重要的操作,其中主要有foldr和foldl,也即从右向左和从左向右。一般来说,后者会优于前者。但在haskell中,并不是这样。
REFS code is engineering, types are science
nix计算目录sha值访方法
nixpkgs有一个fetchFromGitHub的方法,里面需要计算sha值,但是但是是但是文档里没有说这个值是怎么算出来的,不同于一般的文件是很容易计算的,这里是一个目录啊,文档上还写着”extracted directory“。很是迷惑。
转:haskell如何让你的生活更简单
nix setupHook和一些tips
之前已经写过一篇关于nix的配置相关的博客,这次是再一次遇到了新的问题,而对setupHook进一步理解后写出的。主要针对NIX_CFLAGS_COMPILE
和cc-wrapper
等内建的hook进行了一次理解。问题首先为成两个主要部分。
- cc-wrapper是何时被调用的,在cc-wrapper的setup-hook里没有调用到cc-wrapper,且
stdenv/setup.sh
内也不存在setup-hook以外的特殊脚本调用。 - setup-hook内,以及各种build-support内,没有任何对
NIX_CFLAGS_COMPILE
进行配置的地方,在nixpkgs也是同样(除了部分configure等有兼容性问题的地方)。那么nix是如何使用这个变量,而又不去设置CFLAGS
等变量的(其实有点剧透了,因为最初的想法应该是何时把NIX_CFLAGS_COMPILE
传过去的)。
这两个问题其实是同样的,因为都是wrapper的内容。这两个问题之外,就是一些小细节了。
引用:haskell相关文章列表
nixpkgs configre与build相关思考
问题主要在于nixpkgs的mkDerivate
都干了些什么,为什么可以自动处理cmake等构建。以及在最近,nix使用placeholder "out"
来代替了$out
。不知道这里的原因。
最近突然想到nix的包一些原理,有点好奇就去看文档,但nix一套的manual太过于简单了,同时部分内容编写有点混乱,或者说比较难查到想查的东西。比如override和callPackage需要看pill才能理解,而pills里写的内容又非常有限。而setup-hook的选项和和一些内建的setup-hook是分放在不同的两个章节且没有跳转或说明。
Why modality and chording
From: noctuid/dotfiles
转:你是否有编写haskell的能力
类型类、逻辑与哲学
起因
之前因为作业,写一个多项式计算的实现(来自课《计算机代数基础》,教材料《Ideals, Varieties and Algorithms》)。其实遇到了些问题,在data构建中,传入了太多子类型的参数,又将操作类型类化,导致实例化时出现了编译不通过(主要为无法deduce),根本原因在于对于一个forall的返回值类型,在其它函数中调用时,如果存在约束条件,是无法duduce的。哪怕不是约束,只要存在一定的类型限制就是不行的。这其中查找了相当的内容,也有解决方案,但并没有直接去修正。这源于我对类型类的一些理解问题。
haskell pettern synonyms and view
最近需要写一个多项式相关的东西(代数课练习),而正好看到一个人用pattern做的方程解析,就有点好奇是怎么做到的,然后查找各种资料后得出了结论,主要是用到了ghc的扩展,这里小记一下。
毕设遇到C语言相关记录
起因
最近做毕设,题目是以ARM与Linux为基础的一些设计,由于是第一次接触嵌入式设计,再加之C语言学完已经有快7年了,平时不怎么用。虽然当初刚学习的时候看了相当多C/C++的书籍,很多知识细节也知道,但真写起来还是遇了不少坑,在此记录一下。
nixos使用与开发配置
开始上手nixos,nix与nixpkgs其实相对还好,都没有什么问题。但这之间遇到了相当多问题。大体分为几点。一个是开发环境,nix-shell的沙盒并不能很方便的对lsp等开发过程中使用的工具提供支持(我们不可能在shell.nix中去添加开发开发用的工具),另外一个大问题是部分第三方包的安装。
编程语言的思考
ipv6配置记录
最近配置ipv6,出了不少问题。这里记录一下。
macos commandline version
lambd演算
zsh启动时间优化
递归中的栈溢出
开发环境debug
git文件大小写问题
使用git查找bug
操作系统与IDE或编辑器
最近有点纠结是用ide还是用editor,对应的就引来的操作系统的问题。
开发工具相关插error记录
最近因为一些原因intero
的插件各种报错。后来结果重新安装一下就搞定了。这里特别记录一下。
浮点误差
浮点运算不同于整数运算,是存在大量误差的。这是因为在计算浮点时,为了处理下溢问题,引入了“舍入”和“截断”
haskell包管理处理
宏,eval,函数
本文以lisp为主
emacs自配置或使用spacemacs
从vim转至emacs的理由
笔者以前是使用vim写代码,因为vim和emacs一直处于被讨论的情况,所以很自然就去了解了一下,最开始是spacemacs
,然后弃了(不管怎么说,这不过是在用别人的配置。没有意义,这样不如直接用atom什么的)。后来去学习了一下emacs操作。了解了evil。以及elisp(如果学过scheme或者common lisp的话,elisp可以直接上手,基本上没有太大差别。就是文档习惯有点不太一样)。
求值环境模型
记录为主
本博文是以SICP第二版3.2节内容为主进行的记录。
Haskell类型限制
起因
起因其实是关于catch
以及catchIOError
。对于catch,一开始,博主怎么弄都是错误信息,最后的原因是在于lambda中第一个参数的类型是非确认而引起的。
函数式编程语言之多语句思考
函子,应用函子,单子
Haskell
嗯,继续写函数式。之前有比较过,也提及过关于类型类相关的事。这次主要写写单子吧。主要是这个东西学起来快,但是真的理解有点麻烦啊。
CL与Scheme与Haskell
最近开始学习Haskell了,同样是函数式语言,当然少不了对比。因为Haskell还没有完全学完,所以表达可能有点不太完善,不过现在已经完全想走向haskell了。
记一次作业程序
os
建立v2ray透明代理时遇到的问题记录
记录几个小问题,主要内容请参考文档。
nixos试用
在虚拟机大概跑了一下,说一下感觉吧。最后的感觉是暂时弃用了。(至2020年,已经完全切换过来了)
gentoo配置makeopt
问题说明
emerge编译llvm时,各种自动killed,一开始还以为是用的vps限制掉了,后来加上-v
后发现ninja居然有-j999
的参数
Gentoo清理不需要的包
首先,要说明,这里所有的不需要并非指不依赖,本文主要说明如何处理掉未知的依赖项,然后清理掉不需要的软件。
gentoo USE 注意点
Use flag注意点
通过ssh连接虚拟机
在vps中安装gentoo
基本过程和平时安装一样的。参考Handbook就好了。需要注意的有几点。
连接本地docker内的mysql
问题描述
docker开起一个对本地的mysql后(Port已设置),但运行mysql -u root -p
后会出错
Web服务器日志分析工具
服务器弄好了。之后就是要开始做监控了。主要是想针对流量做监控。比较好的工具有google analytics什么的,不过由于google在国内,嗯,大家懂的。所以只好找找其它的了。
linux虚拟交换内存配置(文件)
其实这个东西是非常简单的。但是因为服务器只是偶尔配置一次,所以还是写个博文记录一下吧。
owncloud安装问题记录
今天又把服务器安装了一个owncloud玩玩,虽然主要数据还是存在dropbox上的就是了。
这里主要写一下配置问题吧。中间被坑了几次(其实是 本人理解有问题可能)
gitlab安装问题记录
最近开始重新整理服务器,安装gitlab时,出现了不少问题在这里记录一下。
extract
你的第一本哲学书
什么东西真的存在?我们能知道任何东西吧?是否真的有是非对错?生命有意义吧?死亡是结束吧?
如何解题 笔记
教师应当帮助学生,但不能太多,也不能太少,这样才能使学生有一个合理的工作量
用数学眼光看世界 笔记
《上帝掷骰子》-量子力学史话 笔记
一个希望与众多科学问题搏斗的人最好还是远离大都市。 —— 亥姆霍兹 to Hz
mathematical
Back to Top ↑philosophy
REFS code is engineering, types are science
对逻辑与物质的思考
源:《自然辩证法》作业
感觉写了点东西,随便放一下。
你的第一本哲学书
什么东西真的存在?我们能知道任何东西吧?是否真的有是非对错?生命有意义吧?死亡是结束吧?
default
中文排版标准
之前做一个repo时,提到了中英文混排时的规范问题。
Welcome to Jekyll!
You’ll find this post in your _posts
directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve
, which launches a web server and auto-regenerates your site when a file is updated.
To add new posts, simply add a file in the _posts
directory that follows the convention YYYY-MM-DD-name-of-post.ext
and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll Talk.
And here test a picture.
algorithms
用乘法实现除法
为什么我们需要用乘法来实现除法?首先在计算机运算中,乘法的效率要来得高于除法。其次,除法的实现在电路中非常不容易,而用乘法能实现在一定精度下的除法。
深度优先,广度及迭代深度优先
在学习搜索的时候,对这三个,主要是后二者有一点点混乱,所以这此记录一下。
life
学习与教育,思考其一
随便写写罢了。
群居与独居
game
minori解散感触
2019/02(上个月)底,gal制作公司minori宣布解散。
抽卡游戏内购思考
dev
编程语言语法的思考
不同编程语言有不同的语法,语法主要影响可读性与编写效率。大部分语言的语法都比较相近,但一些语法设计上的细微差异会对编程过程产生不同的体验(特指程序员的心情,不是指思考方式、算法实现等理论知识)。
本文会提及如下语言C++、rust、go、python、ruby、haskell、lisp,但其中rust、go仅仅学过语法,没有实践过,所以观点非常片面!所以观点非常片面!所以观点非常片面!
efi、systemd-boot与grub及双系统问题
最近在工作站上装nixos遇到了引导问题。大概为我配置了grub,但是开机却不能引导,行为是直接启动了windows,简直就像是uefi没有查找到linux的efi一样(事实也是的)。
这个问题其实之前也有遇到过,但当时因为不明不白的给跳过了,所以没有详细去理解,甚至没有发现这个问题。因此在此记录。
galgame
Back to Top ↑physics
《上帝掷骰子》-量子力学史话 笔记
一个希望与众多科学问题搏斗的人最好还是远离大都市。 —— 亥姆霍兹 to Hz
tool
笔记使用工具
最近对使用的工具整理了一下。一开始是使用印象笔记来做各种笔记整理。后来转到了MWeb,但是因为印象笔记没有比较好的导出方案,所以就还是使用着那个。两者同时。后来学了Org,基本上部分文件从markdown转到的org去了。
script
娱乐,故事,深度,中庸
前言
在本文中想以攻壳机动队、素晴日、玲音、EVA等几部作品来谈谈故事性与深度。然后又想到了以前非常喜欢的仙古,于是又联想到了中庸一事,中庸文化,推向大众。
本文想得出一个优秀的作品中,应该有哪些东西?娱乐、故事、深度或是中庸。主要是围绕着这几个元素进行自思。
这仅仅是突发奇想才想写这个内容,内容非常零散,仅是写给自己看的。