小编Mik*_*ike的帖子

生成给定类别中的页面列表(而不是帖子)

我使用Jekyll作为网站(而不是博客)的静态生成器,我想在我的索引页面上自动生成所有页面的列表.具体来说,我希望有不同的类别,并分别列出每个类别中的所有文章.如果你遇到麻烦,这是我所描述一个例子.有没有办法在Jekyll中这样做(例如GitHub页面)?我已经看过变量文档页面,但这似乎特定于博客文章格式.

jekyll github-pages

52
推荐指数
2
解决办法
2万
查看次数

函数式语言如何表示内存中的代数数据类型?

如果你在Haskell中编写生物信息学算法,你可能会使用代数数据类型来表示核苷酸:

data Nucleotide = A | T | C | G
Run Code Online (Sandbox Code Playgroud)

你会在标准ML或OCaml中做同样的事情,我假设(我从来没有真正使用过).

类型的值Nucleotide可以清楚地包含在两位中.但是,这样做会导致访问时间比每个Nucleotide值使用一个字节要慢,因为您需要使用二元运算符选择两个感兴趣的位.

因此,在决定如何表示代数数据类型时,编译器必须在内存效率和计算效率之间进行固有的权衡.此外,由于值可以是可变大小的事实,因此代数数据类型在内存中的表示变得更加复杂:

data Maybe a = Just a | Nothing
Run Code Online (Sandbox Code Playgroud)

显然,Maybe a表单的值在Just a逻辑上大于表单的值Nothing.在这样一个极端的例子中:

data Hulk a b c d e = Big a b c d e | Little
Run Code Online (Sandbox Code Playgroud)

你肯定不希望存储Little值null指针或值中包含的五个值的零Big值.我假设你只是使用堆分配的可变大小的内存,在开头有一个构造函数ID(例如,0for Big1for Little).但是,如果要Hulk在堆栈上存储值(表示更快),则必须将空白内存与Little值一起存储,以使该类型的所有值Hulk都具有相同的大小.另一个权衡.

Simon Marlow在之前的StackOverflow问题中回答了关于GHC的一般问题.但是,我有三个相关的问题仍然没有答案:

  • 标准ML(SML/NJ和MLton)和OCaml使用相同的技术吗?
  • 如果是这样,这些语言(或他们的兄弟姐妹)的任何不太常见的编译器是否会尝试其他技术?
  • 在这些语言中是否有一种相当简单的方法(理想情况下是一个pragma或选项标志)来使用更高效的内存表示,比如两位表示Nucleotide …

memory haskell functional-programming sml algebraic-data-types

17
推荐指数
1
解决办法
633
查看次数

在C中使用MariaDB

我正在尝试连接到C脚本中的MariaDB数据库,但我找不到必要的文档.我安装了libmariadbclient-dev,但是我找不到任何附带的文档,例如手册页.有一个基本的描述和有限的文件在这里,但文件仅包含的功能描述.事实是,尽管我已经搜索了各种各样的Google搜索结果,但我甚至不知道要导入什么来实现这一点,更不用说如何使用它了.是否有关于如何在C中使用MariaDB数据库的指南或文档?

c mariadb

9
推荐指数
1
解决办法
1万
查看次数

从LevelDB数据库获取所有密钥

我正在编写一个脚本来收集所有比特币块的哈希值.程序bitcoind,如果更改某个设置,则存储LevelDB数据库中所有块的元数据.每组元数据的关键是块的散列,它通常用作它的标识符.本质上,我试图从每个块中获取元数据的特定部分(事务ID).我正在写的脚本是在Haskell中,尽管我可以在必要时总是执行shell命令.总而言之,我不确定最简单的方法是找到所有块哈希(键),然后调用bitcoind来获取每个块的元数据.如果有任何方法可以直接从LevelDB数据库中获取每个值,那么也可以.什么是最简单有效的方法?

haskell leveldb

5
推荐指数
1
解决办法
2423
查看次数

Haskell函数返回任意数量的字段作为列表

我想编写一个Haskell函数,该函数采用带有11个字段的自定义类型,并返回所有字段值的列表,或者将字段名称与其值相关联的映射.我不想明确地获得每一个领域,因为那将是冗长而且不那么通用的.有没有办法做到这一点?

haskell custom-type

3
推荐指数
1
解决办法
226
查看次数

在Haskell中解析输入错误if-then-else条件

当我尝试编译它时,以下do块会抛出错误"输入`conn'上的解析错误".我尝试过if-then-else语句的许多不同配置无济于事.在添加条件之前数据库逻辑工作,所以没有问题.我在其他地方有太多行吗?有没有办法解决这个问题而不完全修改逻辑?

main = do
   contents <- BL.getContents
   let myData = decode contents :: Maybe Data
   if maybe True (\x -> result x /= "success") myData
      then error ("JSON download failed")
      else let myTrades = process myData
         conn <- connectSqlite3 "trades.db"
         insert <- DB.prepare conn "INSERT INTO trades VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"
         DB.executeMany insert $ map (\xs -> map DB.toSql xs) myTrades
         DB.commit conn
         DB.disconnect conn
Run Code Online (Sandbox Code Playgroud)

conditional haskell parse-error

2
推荐指数
1
解决办法
2188
查看次数

清除Python中内存密集型过程之间的内存

我需要按顺序读取大文本文件,将大量数据存储在内存中,然后使用它们编写大文件.这些读/写周期一次完成一个,并且没有公共数据,因此我不需要在它们之间共享任何内存.

我尝试将这些过程放在一个脚本中,希望垃圾收集器在RAM满了时删除旧的,不再需要的对象.但事实并非如此.即使我在循环之间明确删除了对象,也需要比单独运行程序要长得多.

具体来说,该过程将挂起,使用所有可用的RAM,但几乎没有CPU.gc.collect()被召唤时它也挂了.因此,我决定将每个读/写过程拆分为单独的脚本,并使用中央脚本调用它们execfile().遗憾的是,这并没有解决任何问题.记忆仍然堆积如山.

我使用了简单明了的解决方案,即从shell脚本调用下标而不是使用execfile().但是,我想知道是否有办法使这项工作.有什么输入?

python garbage-collection memory-management

1
推荐指数
1
解决办法
487
查看次数