2015-02-01 YongHao Hu
C++
因为要修复Wine的Bug,需要重新实现sprintf, 于是我研究了wine中printf跟sprinf的实现。 其实printf跟sprintf实现的关键无非就是可变参数,利用此就可以写出一个功能简单的printf. 我仔细研究了一下Wine里面的实现,发现printf跟sprintf的实现核心都用到了pfprintfa(就是根据参数%f,%d等转换的函数),不过重定向不一样。 printf是用到了write_concole, sprintf是复制到buf里面~ 实际上, printf这个我们常用的函数, 申请了内存, 用buf来存放输出的结果. 继续阅读 »
2016-03-01 YongHao Hu
``` include include include define NLOOP 5000 int counter; /* incremented by threads / pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER; void *doit(void *); int main(int argc, char **argv) { pthread_t tidA, tidB; pthread_create(&tidA, NULL, doit, NULL); pthread_create(&tidB, NULL, doit, NULL); 继续阅读 »
2020-11-07 Robin Wen
文/Robin 早在 2020 年 10 月 13 日晚,DeFi 项目 Wine Swap 飞出黑天鹅。晚上 10 点上线的新项目, 在线上仅仅半小时后,正在挖矿的投资者们发现 Wine Swap 已经跑路。截至 11 月 2 日,用户损失逾 34.5 万美元。 当然了,这种有组织有预谋的跑路在 DeFi 项目里比例是偏少的,大部分 DeFi 项目资金安全受到威胁,都是代码 Bug,或者是受到攻击。当众多投资者欲哭无泪时,币安安全团队却给大家带来了好消息。 2020 年 11 月 4 日,币安安全团队成功帮助用户追回跑路 DeFi 项目 WineSwap 用户损失资金的 99.9%,共计超过 34.4 万美元。此次 Wi 继续阅读 »
2015-01-10 YongHao Hu
各位同学: 新年好, 我是洪谦,自封的 Google 开源代码夏令营助教。 两年前,我写了《做一名开源社区的扫地僧(上)》,记录了我在开源社区中打怪升级的经历和收获,以5000美金奖金为诱饵,怂恿在校的朋友参加 Google代码夏令营。说来惭愧,这篇文章冗长罗嗦,可恰是这篇文章让我认识了这么多开源社区的朋友,有的朋友见面就问我《扫地僧(下)》什么时候问世,我总是一拖再拖,不好意思又跳票了。 这次新作拙文请大家评阅,一方面是再度为 Google Summer of Code 做免费宣传,另一方面其实是抱着私心,诚恳地希望找到志同道合的朋友加入 Wine 项目。 文章一如既往的冗长罗嗦,一如既往的只限学生阅读 :) Goog 继续阅读 »
2015-02-26 YongHao Hu
先摆干货,总结:static函数的作用是在链接层面上的。 之所以研究static函数是因为Wine里面很多helper函数都是在.h文件里声明为static, 其作用就是避免命名冲突。 1. 正如很多C语言书籍里都有提到: 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。 定义静态函数的好处: <1> 其他文件中可以定义相同名字的函数,不会发生冲突 <2> 静态函数不能被其他文件所用。 继续阅读 »