VSCode快乐开发Verilog

(本教程的 Git 仓库:RainEggplant/vscode-verilog-integration

本教程会介绍如何使用 VSCode 舒适地开发 Verilog。经过配置之后,你将得到:

  • 语法高亮
  • 代码检查
  • 自动补全
  • 自动格式化
  • 转到/查看定义
  • 文件大纲
  • 代码片段
  • Git 版本控制
  • ...

VSCode 开发 Verilog 界面

阅读全文→

Windows下Git的HOME环境变量冲突的解决方法

前几天装上了 Cadence, 然后使用 Git 的时候发现配置信息全没了。仔细一看,系统环境变量 HOME 变量不对,变成了 Cadence 的工作目录。

解决方法也很简单。我们不能直接修改系统的环境变量,否则 Cadence 可能就不能正确工作了。因此从 Git Bash 的配置文件入手就行了。

进入 Git 的安装目录,打开 etc/profile 文件,在文档第一块注释下面添加一行:

其中的 /c/Users/yourname 就是你原本的 HOME 路径。保存即可。

异步编程简介与C#中基于任务的异步编程入门

(注:这是我在系科协写的第一篇 Weekly (面向所有同学的介绍类文章), 那就同步到这里来吧~)

一、什么是异步编程

请不要着急,在介绍异步编程前,让我们先耐心了解一下下面的几个概念,虽然可能会有些枯燥,但这对后面的学习是非常有必要的。

概念一 进程与线程、并发

进程 (process), 是运行中的可执行程序的实例。打开“任务管理器”,你会看到许多进程。如果你切换到“详细信息”选项卡,你还会看到每个进程含有的“线程”数目(如果看不到可以右键列表标题栏,在“选择列”中勾选“线程”)。那么“线程”又是什么呢?

任务管理器中显示的进程与线程信息

线程 (thread), 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。默认情况,一个进程只包含一个线程,从程序的开始到执行结束。但线程可以派生自其它线程,并且它们共享该进程所拥有的全部资源。所以一个进程可以包含不同状态的多个线程,来执行程序的不同部分,最重要的是,它们是并发执行的。

所以“并发”是什么意思呢?想一想你平常使用电脑的时候,是不是能够一边听音乐一边上网呢?这种看上去像是在同时执行的情形就是所谓的“并发”(之所以说“看上去”是因为大多数情况下各线程所含的指令只是在逻辑上是同时执行的,而在物理上并不是真正地同时执行的(即不是并行的),这涉及到现代操作系统的 CPU 调度机制,有兴趣的同学可以去了解)。

所以说,线程的并发性不仅使得我们能够同时运行不同的程序,还保证了每个程序能够通过多线程同时执行不同的任务,这是十分重要的。

阅读全文→

【WordPress小改】将没有Gravatar但使用QQ邮箱的用户的头像替换为QQ头像并缓存

Gravatar在中国使用的人很少,所以评论里常常会看见顶着Gravatar的丑丑的默认头像的人。但是,这部分人有很多都使用QQ邮箱,于是我想到了可以用他们的QQ头像代替。

三年前我写了一个放在functions.php里的小函数来实现这个功能,但是有些Bug。今天终于重写了一下,大家可以拿去用。

具体功能就是将没有Gravatar但使用QQ邮箱的用户的头像替换为QQ头像,我使用的是 http://q2.qlogo.cn(q2可以换成q1, q3, ...)来获取,但是我没有辨别出它对于QQ邮箱那个参数使用的加密方式,所以只能以明文的形式去请求QQ头像(貌似本来是同时支持加密和明文的)。因此,为了保护用户隐私,我只能将这些头像按照加密的文件名存到本地,顺便也就添加了Gravatar的缓存功能。

阅读全文→

[Beta 1.0] Ernie – 简介、下载及开发记录

其实Ernie可以算作自己的一个填坑之作。


几年前我曾经发了这篇博文,想要重新开发自己写过的第一个实用程序。

当时,自己有很多改进的想法想要去实现。但是进入高中后,闲暇时间的确很少很少,而且我也找不到比较完整成块的时间来学习编程、动手开发。虽然在这期间偶尔也写点小程序干点坏事,或者鼓捣鼓捣网站,但是这个相对较大地项目还是搁置起来了,直到今年寒假……

 

(嗯,我去年上大学了,然而其实大学...也并不轻松。)今年寒假的时候系里举办了“队式软件设计大赛”,我报了名。那编什么软件好呢?我突然便想起尘封在记忆中的“摇奖机”,那干脆就把这次比赛当作填坑的机会吧!虽然说这样的话我的参赛作品的从能够实现的事情上来讲就相对比较简单,不利于比赛,但是能借这个机会了我一个心愿也很不错啊。反正比赛还有明年、后年……(不过不得不吐槽下科协的比赛奖品,我似乎有些缺少以后参赛的动力了……[滑稽.jpg])

 

的确,功能上讲如果只是“随机抽取”的话真的太平凡了,不就是个随机数函数吗?所以我打算在细节和功能上做出特点,因此 Ernie 便是在这个观念指导下的产物。它采用 MahApps.Metro 制作UI,确保外观的精美。使用 SQLite 保证对庞大数据的支持。引入转义字符简化数据的表示同时增加多样性……

 

好吧,我的心路历程就说到这里,以下是正式的简介、开发记录和下载地址。

阅读全文→