Login
Discover
Waves
Communities
Login
Signup
cifer
@cifer
60
Investing & Coding
Followers
1084
Following
67
Follow
Email digest
Resource Credits
Available
Used
Created
2017-07-18 07:03
RSS Feed
Subscribe
Posts
Blog
Posts
Comments
Communities
Wallet
cifer
bitshares
8y
Graphene 源码阅读 ~ 数据库篇 ~ 对象反射
C++ 自身的 RTTI 提供了两个操作符: typeid 和 dynamic_cast<>, 但这俩操作符的作用都仅限于运行时得到类型名而已, 很多时候尤其是对象序列化操作时, 光知道类型名是不够的, 我们还要知道类成员的类型, 成员名称等信息, 所以还是要靠各种编程库实现反射功能. fc::reflector 就是石墨烯代码中反射实现库, 前一篇 对象序列化 里已经多次提到了, 可能严格来说,
$ 58.505
25
2
5
cifer
bitshares
8y
Graphene 源码阅读 ~ 数据库篇 ~ 对象序列化
虽然 graphene 的代码我还没看完, 但我敢说 <fc>/io/raw.hpp 肯定能算得上 graphene 代码中最难读的部分之一. 实际上 fc 整体都是比 graphene 其它部分的代码要难读很多的 (见 源码结构). <fc>/io/raw.hpp 对 C++ 模板的运用可谓无所不用其极, 说是达到了丧心病狂的地步可能也不为过, 单单一个 pack() 方法,
$ 53.488
39
9
4
cifer
bitshares
8y
Graphene 源码阅读 ~ 数据库篇 ~ 索引模型
最近这一周一直在研究共识机制, 本来想先写一篇共识篇的, 无奈共识涉及到的东西太多, 一直没有构思好怎么写, 眼看着距离上一篇 对象模型 一文越来越远, 再不动笔有跳票嫌疑了, 所以共识篇就暂且往后放, 再来一篇数据库篇凑凑数. 话不多说, 让我们进入数据库篇的第二篇 - 索引模型 索引模型 从源码结构来讲, 索引和前一篇 对象模型 所介绍的 object 基类属于同一层级. 索引结构的定义位于
cifer
bitshares
8y
Graphene 源码阅读 ~ 数据库篇 ~ 对象模型
我之前向 bitshares-core 提交的第一个 PR 就是关于数据库的, 所以最先了解的就是数据库这块, 所以在写上一篇 源码结构 时我就计划先从数据库开始了. 本来想数据库用一篇文章介绍, 但今晚梳理了一下发现一篇文章不可能写得完.. 所以就有了标题的 “数据库篇 ~ 对象模型”. 类似的, 其它几个模块可见也不是一篇文章能说清的, 所以后面计划还会有共识篇, 网络篇, 钱包篇, 插件篇等几个篇章,
cifer
bitshares
8y
Graphene 源码阅读 ~ 源码结构
一般拿过一个项目我是习惯先了解一下项目的目录结构, 看一看项目是怎么组织依赖库, 构建脚本, 以及头文件和源代码文件的, 这样能够对整个项目结构大概有个数, 除了能够了解这个项目包含哪些模块, 模块与模块之间的调用关系之外, 还能在后面阅读代码时碰到对符号的引用时, 大概知道到哪里找它的定义, 对阅读和理解代码帮助会很大. 所以继前一篇 基础知识 之后, 本篇就来过一遍项目源码结构. 前一篇说了 Graphene
cifer
bitshares
9y
Graphene 源码阅读 ~ 基础知识
最近一直在业余时间看 Graphene 的源码, Graphene 是 bitshares 和 steem 的底层技术, 得益于 LMAX 架构和 DPoS 这一高效的共识机制, 使得基于 Graphene 成为目前最稳定和最高效的区块链底层. 接触区块链技术后, 我对区块链的各种共识协议做了很多浅薄的思考, 最后真的觉得 DPoS 共识才是未来的趋势 :P. 看 Graphene 的源码, 一方面是学习一下
cifer
linux
9y
XIM, X Window System
Keyboard 世界上的键盘有很多种, 它们按键数不同, 针对的市场, 用途, 国家, 人群也不同, 每个人都希望自己的键盘以自己习惯的方式工作. 所以在 X 中, 关于键盘的配置也是很复杂的, 因此 X 将与键盘配置有关的部分放到了 XKB extension 中. 整个键盘的配置, 叫做 keyboard map, 或者 keymap. 一个 keymap 中包含按键的数量, 键盘 model,
cifer
linux
9y
Linux 下的 locale 机制
localedef localedef 是用来生成 locale 的工具. localedef 能够读取 locale 定义文件, 以及 charmap 文件, 然后编译他们, 将编译好的二进制的 locale 数据库放在 /usr/lib/locale 目录里 (这个目录不是绝对的, 你可以通过 localedef --help 查看编译好的 locale 数据库文件放在哪里), 然后 Linux
cifer
linux
9y
记一次安装 Gentoo 的曲折过程
安装这个 gentoo 从今早 11:00 开始, 一直到现在 (00:27) 才安装成功, 其中经历了几个曲折. 我的安装是按照 Gentoo 官方手册 一步步来的, 使用安装介质不是宿主机, 而是同样依照官方教程制作的 LiveUSB: 目标介质是一块 SSD 硬盘. 这里不得不说, Gentoo 的官方手册内容组织的非常合理, 让人能够一口气从头看到尾不遗漏任何内容, 而不是看几节就被纵横交错的链接给绕晕了.
cifer
cn
9y
关于 Wi-Fi 穿墙与波长关系的 YY...
以前一直以为, Wi-Fi "穿墙" 就是指 "绕过墙", 然后波长越长, 自然就越能绕过墙, 振幅越大的话, 自然是更能够绕过墙了. 实际上, "穿墙" 确实就是 "穿" 过去了, 不是绕过去. 因为电磁波能以各种介质传播, 空气里可以传播, 墙里也是可以传播的. 从波动性的角度讲, 穿墙的过程就是空气中介质的振动转化为墙介质的振动,
cifer
cn-programming
9y
如何在应用层控制最大客户端连接数
当有客户端连接, 而程序中没有去处理时, select 就回持续不断的返回这个文件描述符可写, 例如, 下面是我以前写的一段有 bug 的程序: int csocks[MAX_CONNECTION]; memset(csocks, -1, MAX_CONNECTION * sizeof(int)); FD_SET(sock, &rset);while(1) { if(select(FD_SETSIZE,
cifer
ethereum
9y
[bitword] 关于 kyber
kyber 号称去中心化交易所. 要解决的是韭菜在中心化交易所买数字货币流程麻烦的问题. 要经过注册, KYC, 充币, 等待确认, 提币 (手续费) 等待确认 等漫长的过程, 另外中心化交易所还常常 "被" 黑客攻击. kyber 怎么解决这个问题呢? kyber 本质是跑在 ethereum 上的智能合约, 其自己的代币也是 ERC20 代币. 智能合约的背后有很多
cifer
cn-programming
9y
C 语言宏的展开与字符串化宏和符号连接宏
C 语言由于没什么高级的特性, 所以现有的特性被玩的各种精. 宏展开就是很值得品味的部分. 递归展开问题 宏定义语句是这样的: #define identifier token-sequence 在具体的宏展开过程中, 遇到标识符时, 此标识符会整个的被使用 token-sequence 展开, 如果 token-sequence 中还包含有其他的被定义的宏标识符, 也都会相应的被展开. 但是显然,
cifer
bitshares
9y
比特股不同节点的区别
Here are my definitions of BTS nodes: Witness - Stores blockchain, limits CLI access to local port, provides p2p for blockchain downloads, generates blocks, and does not include history plugins Seed -
cifer
bitshares
9y
An issue during building bitshares/bitshares-core on osx...
I got std::cerr and std::hash error during my first build of bitshares-core, these two errors all occurred in bitshares-fc library. The solution is using boost1.6 and pass the BOOST_ROOT macro when executing
cifer
cn
9y
使用 nohup 将任务放到后台之后, 如何将其移回前台
可以使用 jobs 查看放到后台的任务的 ID, 然后使用 fg 将其移回前台, 不过, nohup 会重定向 stdout 和 stderr 到 nohup.out, 这一点, 即使你将任务移回了前台, 也不能使得 stdout 和 stderr 重回到终端(但是你可以 tail -f nohup.out). nohup 不能与当前终端 detach, 这点不如 screen 或者 tmux,
cifer
graphene
9y
cryptonomex/graphene is no longer maintained any more...
Today when I was building graphene I got the following warning and error during brew link --force openssl and cmake . procedures respectly: Warning: Refusing to link: openssl Linking keg-only openssl means
cifer
linux
9y
一次纠结的 svn apache 配置
今天我要配置 svn 服务器通过 web 来访问, svn 那本海龟书上介绍了通过 apache 的 mod_dav_svn 模块来完成这一目的的方法, 于是我研究了一下打算直接按照书上说的来(不知 nginx 能否实现这一目的) 我的服务器上 apache 是自己编译源码安装的, svn 是从 debian wheezy 源下的, wheezy 源中将 svn 和 svn 的 mod_dav_svn
cifer
cn
9y
关于 minnowbooster 和 smartsteem - 获得年化近 40% 收益的途径
和 在这上面你可以出租自己的 SP, 租借你 SP 的人会支付 STEEM 给你作为租金, 租金不菲哟. 上面这张是 minnowbooster.net 上的租赁图, 按照年化收益排序, 前面好多页的年化收益都接近 40%! 有兴趣的同学可以尝试一下.
cifer
cn-programming
9y
Linux 获取网络接口 IP 地址的方法
iotcl(), SIOCGIFCONF 这应该是属于比较"底层"的方式 getifaddrs() static char get_local_ip(const char ifname) { struct ifaddrs *ifaddr = NULL; getifaddrs(&ifaddr); struct ifaddrs *p = NULL; char *str_if_addr
← Latest
Older →