摘要: 这么好用的markdown网页编辑器! 阅读全文
posted @ 2023-04-02 14:13 BIT祝威 阅读(33) 评论(0) 推荐(0) 编辑
摘要: BIT祝威博客汇总(Blog Index) 目测我已经写了好几十篇博文,再这样下去就不好找了。因此将此汇总帖置顶,并即时更新,以方便查找(Ctrl+F即可)。 带有“推荐”是我觉得可以见人的,推荐大家(也包括我)没事看看,温故知新。 阅读全文
posted @ 2014-07-13 08:40 BIT祝威 阅读(10486) 评论(7) 推荐(7) 编辑
摘要: 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深。本文从下面这个初中学的电路图说起,看看能不能从最初的有一个继电器的电路,画到一个简单的CPU。电路图用multisim12.0绘制,这样就可以看到效果了。 阅读全文
posted @ 2014-03-24 16:29 BIT祝威 阅读(36383) 评论(169) 推荐(225) 编辑
摘要: 编译原理(前端)的算法和实现 本文介绍从零实现Lex+YACC(即一键生成编译器(前端))的算法。完整代码在(https://gitee.com/bitzhuwei/grammar-mentor)和(https://github.com/bitzhuwei/GrammarMentor)。 下文将用“ 阅读全文
posted @ 2023-05-14 22:37 BIT祝威 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 关于正则表达式 那些debug的日子里 手工时代 End 阅读全文
posted @ 2023-05-14 18:22 BIT祝威 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Compiler of Calc The C# source code of the compiler Calc is generated by bitzhuwei.GrammarFormat. Grammar // 8 VnRegulations: Additive : Additive '+' 阅读全文
posted @ 2023-05-14 16:07 BIT祝威 阅读(13) 评论(0) 推荐(0) 编辑
摘要: Compiler of Scope The C# source code of the compiler Scope is generated by bitzhuwei.GrammarFormat. Grammar // 7 VnRegulations: Scope : '[' 'firstItem 阅读全文
posted @ 2023-05-13 19:05 BIT祝威 阅读(5) 评论(0) 推荐(0) 编辑
摘要: // GrammarName = ABB // ExtractedType = BCounter A : A '+' B | 'a' ; B : 'b' ; // GrammarName = SLR // ExtractedType = SLR2 S : L '=' R | R ; L : '*' 阅读全文
posted @ 2023-05-13 17:39 BIT祝威 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Compiler of ABB The C# source code of the compiler ABB is generated by bitzhuwei.GrammarFormat. Grammar // 3 VnRegulations: A : A '+' B // [0] | 'a' ; 阅读全文
posted @ 2023-05-13 17:18 BIT祝威 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 这么好用的markdown网页编辑器! 阅读全文
posted @ 2023-04-02 14:13 BIT祝威 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 用一种语言写的诗歌,被翻译成另一种语言,往往很难表达出原意。其他文字材料也有这样的问题。通过读《资本论》英文版,可以减少翻译带来的突兀生硬感,看似比读中文版慢,实则能更快地理解它。《资本论》原版是德语写的,可是我只学过英语,所幸德语英语都属于西日耳曼语支,问题应该不大。 我将边读边总结,分章节段放到博客里,并在这一篇里添加链接。等全部读完,我再写个总的总结。 阅读全文
posted @ 2021-07-18 21:06 BIT祝威 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 《45个十分钟读懂资本论》原文、适合朗读版和个人见解 这里有《45个十分钟读懂资本论》原文。原文电子版中的标点符号缺失、文字误传等现象我已解决了一遍。就算还有也不多了。 《45个十分钟读懂资本论》原文经常有一些长难句子,不便于理解,更不利于朗读。所以我根据自己的理解,将原文的句子拆解润色,改写为简单好理解的句子,分45小节保存。这也利于朗读和听书。 阅读全文
posted @ 2020-07-22 00:21 BIT祝威 阅读(2117) 评论(0) 推荐(0) 编辑
摘要: Vulkan是新一代3D图形API,它继承了OpenGL的优点,弥补了OpenGL的缺憾。有点像科创板之于主板,歼20之于歼10,微信之于QQ,网店之于实体店,今日之于昨日。 阅读全文
posted @ 2019-08-30 16:12 BIT祝威 阅读(2410) 评论(1) 推荐(2) 编辑
摘要: 本文是翻译的Naty Hoffman的《Background: Physics and Math of Shading》。我希望通过翻译此文,彻底理解PBR的原理。某些我实在不知道如何恰当翻译的地方,就把英文原文也放上了。原文太长,因此分几部分依次放上来。 阅读全文
posted @ 2019-04-19 17:26 BIT祝威 阅读(1344) 评论(0) 推荐(5) 编辑
摘要: [转]基础知识漫谈(1): 想到哪儿写到哪儿 本文转自(http://www.cnblogs.com/anrainie/p/5606570.html) 一、想到哪儿写到哪儿 给公司新员工培训,和网上的新手做交流,我最先强调的都是基础。 基础有什么用? 1、节省沟通成本 有天,java群里来了个新人, 阅读全文
posted @ 2016-06-22 12:01 BIT祝威 阅读(749) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2016-06-04 00:45 BIT祝威 阅读(2447) 评论(0) 推荐(2) 编辑
摘要: some OpenGL constants This is from (https://github.com/peterderivaz/pyopengles/blob/master/gl2.py) 1 GL_DEPTH_BUFFER_BIT = 0x00000100 2 GL_STENCIL_BUF 阅读全文
posted @ 2016-05-29 20:43 BIT祝威 阅读(632) 评论(0) 推荐(0) 编辑
摘要: 批量重命名文件 下述代码用于批量重命名文件。留作备用。 阅读全文
posted @ 2016-05-02 20:15 BIT祝威 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 我决定翻译一下《Advanced Illumination Techniques for GPU-Based Volume Raycasting》。像我翻译其他资料一样,只按我的需要和观点来翻译。有的部分详细翻译,附加注解,有的部分直接略过。 阅读全文
posted @ 2016-04-28 23:36 BIT祝威 阅读(2543) 评论(4) 推荐(1) 编辑
摘要: 基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#) 我在准备重写本文的内容,本文不必再看。(2023年3月25日) 基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#) 为了完美解析GLSL源码,获取其中的信息(都有哪些in/out/uniform等),我决定做个GLSL编译器的前端(以后简称编译器或FrontEndParser)。 以 阅读全文
posted @ 2016-04-16 00:05 BIT祝威 阅读(3625) 评论(4) 推荐(2) 编辑
摘要: 阅读全文
posted @ 2015-10-11 16:14 BIT祝威 阅读(3274) 评论(4) 推荐(4) 编辑
摘要: 所有的GC算法都是跟踪回收和引用计数的结合,两者相互独立,对其中一方进行改善的技术之中必然存在对另一方的改善技术,而其结果只是两种的结合 阅读全文
posted @ 2015-09-29 01:00 BIT祝威 阅读(1027) 评论(4) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2015-09-04 14:44 BIT祝威 阅读(932) 评论(0) 推荐(1) 编辑
摘要: 我正在读李睿编译武汉出版社出版的马克思著作《资本论》。我在大学期间参加了工商管理双学位课程,其中关于经济学部分的学习让我觉得太胡扯。最近有时间研读《资本论》,就目前的感受来说,《资本论》的观点是以科学的态度研究得来的。 所以我打算 阅读全文
posted @ 2015-09-04 14:41 BIT祝威 阅读(1801) 评论(0) 推荐(1) 编辑
摘要: 关键就是一句话,矩阵的本质就是线性方程式,两者是一一对应关系。如果从线性方程式的角度,理解矩阵乘法就毫无难度。 阅读全文
posted @ 2015-09-02 15:14 BIT祝威 阅读(7051) 评论(0) 推荐(1) 编辑
摘要: CSharpGL是我受到SharpGL的启发,在整理了SharpGL,GLM,SharpFont等开源库的基础上,做的一个新的C#版OpenGL库,希望它能做到易学易用,简化OpenGL开发,减少低级错误,帮助初学者更快地由入门到精通。 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(https://github.com/bitzhuwei/CSharpGL) 阅读全文
posted @ 2015-08-29 21:11 BIT祝威 阅读(22309) 评论(62) 推荐(27) 编辑
摘要: 本文介绍了矩阵与perspective/ortho两种投影方式的参数相互转换的代码。 阅读全文
posted @ 2015-08-27 00:38 BIT祝威 阅读(5121) 评论(0) 推荐(0) 编辑
摘要: 最近需要用OpenGL绘制文字,这是个很费时费力的事。一般的思路就是解析TTF文件从而得到字形的贴图,然后通过OpenGL绘制贴图的方式显示文字。 本篇记录了解析TTF文件并把所有字形安排到一张大贴图上的过程。 阅读全文
posted @ 2015-08-07 17:30 BIT祝威 阅读(5846) 评论(3) 推荐(1) 编辑
摘要: 在C#里,有时候我需要能够申请一个很大的数组、使用之、然后立即释放其占用的内存。 由于在C#里提供的int[] array = new int[1000000];这样的数组,其内存释放很难由程序员完全控制,在申请一个大数组后,程序可能会变得很慢。 所有我设计了这样一个非托管的数组类型: 无unsafe, 可接收任何struct类型作为泛型参数, 可随时释放内存,UnmanagedArray使用方式十分简单,就像一个普通的数组一样 阅读全文
posted @ 2015-07-25 14:58 BIT祝威 阅读(6040) 评论(7) 推荐(2) 编辑
摘要: 最近所做的多文件数据库是受(C#实现文件数据库)的启发。后来又发现了(LiteDB),看到了单文件数据库和分页、索引、查询语句等的实现方式,大受启发。不过我仍旧认为LiteDB使用起来有些不顺畅,它的代码组织也不敢完全苟同。所以,我重新设计了一个小型的单文件数据库SharpFileDB: 无需配置服务器。 无需SQL。 100%纯C#开发的一个不到50KB的DLL。 支持事务ACID。 写入失败后可恢复(日志模式)。 可存储任意继承了Table且具有[Serializable]特性的类型(相当于关系数据库的Table)。类型数目不限。 可存储System.Drawing.Image等大型对象。 单文件存储,只要你的硬盘空间够大,理论上能支持的最大长度为long.MaxValue = 92233 阅读全文
posted @ 2015-07-11 20:06 BIT祝威 阅读(4190) 评论(8) 推荐(11) 编辑
摘要: 在项目中,我们常常有统计代码行数的需要,但是如果不利用第三方工具的话,面对一个项目(甚至一个工程或解决方案中若干个项目)中成百上千的代码文件,实在有一种力不从心的感觉。 我们期望能够用最简单的方法完成这些重要却细微的需求。下面我给大家介绍一种无需借助第三方工具,无需复杂操作,无需人工统计计算的方法解决这个问题。 阅读全文
posted @ 2015-07-08 14:18 BIT祝威 阅读(8206) 评论(0) 推荐(0) 编辑
摘要: 我需要找一个能够在同一文件中序列化多个对象,并且能随机进行反序列化的工具。随机反序列化的意思是,假设我在文件里依次序列化存储了a、b、c三种不同类型的对象,那么我可以通过Stream.Seek(,);或者Stream.Position来仅仅反序列化b。当然,这可能需要一些其它的数据结构辅助我找到Stream.Seek(,);或者Stream.Position所需的参数。 我找到了BinaryFormatter、SoapFormatter、XmlSerializer和BinaryReader这几个类型,都是.NET Framework内置的。但是它们并非都能胜任但文件数据库的序列化工具。 阅读全文
posted @ 2015-06-25 14:43 BIT祝威 阅读(2411) 评论(8) 推荐(1) 编辑
摘要: 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader。这时在vs里直接编辑shader就会显得很方便。但是vs默认是不支持GLSL的语法着色的,我们只好自己动手创造。最简单的实现自定义语法着色的方法就是创建一个VSIX插件包,我们只需要安装Visual Studio SDK,使用内置的模版就可以构建一个插件项目。 阅读全文
posted @ 2015-06-24 09:31 BIT祝威 阅读(4264) 评论(6) 推荐(0) 编辑
摘要: 我决定做一个以支持小型应用(万人级别)为目标的数据库。既然是小型的数据库,那么最好不要依赖其它驱动、工具包,免得拖泥带水难以实施。完全用C#编写成DLL,易学易用。支持CRUD(增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete))。不使用SQL,客观原因我不擅长SQL,主观原因我不喜欢SQL,情景原因没有必要。直接用文本文件或二进制文件存储数据。简单来说,就是纯C#、小型、无SQL。此类库就命名为SharpFileDB。 阅读全文
posted @ 2015-06-22 02:04 BIT祝威 阅读(8507) 评论(11) 推荐(2) 编辑
摘要: I've decided to write a micro database library that spports 10 thousand level applications. It's better not to rely on other drives or tools in case of high difficulty in deployment. After all, it's a small database for a small application. It's a DLL from totally C# codes. It's easy for reading and using. It supports CRUD of course. It doesn't use any SQL. I'm 阅读全文
posted @ 2015-06-22 02:03 BIT祝威 阅读(963) 评论(0) 推荐(0) 编辑
摘要: 最近参考了园友的自动生成目录的方法,我增加了能够自动生成三级目录的JS代码。把上述JS代码复制到“页脚Html代码”里。在写博客的时候,给每个章节的标题设置“标题1”或“标题2”或“标题3”格式。然后一切就绪,欣赏效果吧。这里有个例子(http://www.cnblogs.com/bitzhuwei/p/from_relay_to_tiny_CPU.html)。 阅读全文
posted @ 2015-06-21 01:43 BIT祝威 阅读(2312) 评论(4) 推荐(5) 编辑
摘要: 最近偶然发现了《Java谜题》,很有意思,于是转到C#上研究一下。本篇是关于表达式的一些内容:奇数性(负数的取模运算)找零时刻(小数精度)长整除(溢出)初级问题(1与l)十六进制的趣事(隐式负数)多重转型(不要做这么含混不清的事)互换内容(不要使用'高端'技巧)Dos Equis(请给(?:)以相同的类型)半斤(谨慎使用复合赋值操作符)八两(C#里无需关心此问题) 阅读全文
posted @ 2015-06-20 04:07 BIT祝威 阅读(2002) 评论(0) 推荐(5) 编辑
摘要: 最近做了一个用Unity3D动态演示堆排序过程的程序。堆排序(Heap sort) 堆排序总是建立这样一个二叉树:其父结点总大于其子结点。 首先建堆。 每轮将根结点与最后一个结点互换,然后对剩余部分建堆。您可以在此下载安卓APK。 阅读全文
posted @ 2015-06-17 12:27 BIT祝威 阅读(3504) 评论(0) 推荐(1) 编辑
摘要: 在上一篇里我给出了重制的坦克舰队效果图和试玩程序。本篇介绍一下玩家坦克和敌方坦克碰撞问题。原版里,玩家与其它坦克碰撞时,玩家与对方都不能移动;而敌方坦克之间相互碰撞时,是无视碰撞直接穿透的。坦克舰队里的坦克移动方式是以格为单位的,每次移动都会移动完整的1个单位。 阅读全文
posted @ 2015-06-13 15:49 BIT祝威 阅读(2025) 评论(9) 推荐(0) 编辑
摘要: 在OpenGL中,如果想绘制一个多边形同时绘制其边界,可是先使用多边形模式GL_FILL绘制物体,然后使用多边形模式GL_LINE和不同的颜色再次绘制这个多边形。但是由于直线和多边形的光栅化方式不同,导致位于同一位置的多边形和直线的深度值并不相同,进而导致直线有时在多边形的里面,有时在多边形的外面,这种现象就是"Sitching"。 而Z-fighting主要是指当两个面共面时,二者的深度值一样,深度缓冲就不能清楚的将它们两者分离开来,位于后面的图元上的一些像素就会被渲染到前面的图元上,最终导致图象在帧与帧之间产生微弱的闪光。 阅读全文
posted @ 2015-06-12 14:13 BIT祝威 阅读(10829) 评论(1) 推荐(2) 编辑
摘要: 我玩过一款坦克游戏ArmadaTank(坦克舰队)几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了。重制版拥有所有原版的模型、关卡、武器、装备、碰撞、穿透。您可以到这里下载PC和Android版试玩。 阅读全文
posted @ 2015-06-05 13:54 BIT祝威 阅读(3002) 评论(13) 推荐(6) 编辑
摘要: 到上一篇为止,拾取一个VBO里的单个图元的问题已经彻底解决了。那么来看下一个问题:一个场景里可能会有多个VBO,此时每个VBO的gl_VertexID都是从0开始的,那么如何区分不同VBO里的图元呢?总结起来,Modern OpenGL可以利用gl_VertexID的存在,借助一点小技巧,实现拾取多个VBO内的任一图元的功能。不过这个方法显然只能拾取一个图元,就是Z缓冲中离屏幕最近的那个图元,不像射线一样能穿透过去拾取多个。 阅读全文
posted @ 2015-05-31 04:28 BIT祝威 阅读(2767) 评论(0) 推荐(1) 编辑
摘要: GL_FLAT模式下,各种类型的图元的颜色都是由绘制它的最后一个顶点的颜色给出的。我们只需在做Picking的绘制时,在GL_FLAT状态下绘制图元,就可以用glReadPixel()获取到应拾取的图元的最后一个顶点的编号。根据上一节的表格,很容易推算出此编号代表的图元。GLSL里的flat关键字。给in/out变量附加一个flat,就相当于Legacy OpenGL里调用了glShadeMode(GL_FLAT); 阅读全文
posted @ 2015-05-29 16:10 BIT祝威 阅读(2951) 评论(0) 推荐(0) 编辑