Tag: 编程

bctf的壯丁

被抓壯丁

4月18號晚上接近24點的時候,Kelwin突然在Hangouts上ping我說「bctf平台求开发」、「只有前端」。
原因是bctf官網的開發者maskray跑去玩超算沒有時間了。然後本着有補助爲何不拿的心態就答應了下來。

Facebook Hackathon一日游

准备

在寒假的第X天突然从手机邮箱里发现了标题为Fwd: FW: Facebook Hackathon Singapore的一封邮件。忽视了其中明显带有中国特色的成
绩要求前30%的要求之后发现是一次可以玩的活动。

于是连夜ping了许多同学(zxytimppwwyyxxmaskray以及fqj1994)。
最终组了一队4人小组准备前往新加坡度假。

报名过程非常轻松,不过签证方面我们遇到了极大的问题。接到报名邮件已经是1月30号,组成队伍也是2月2号左右,而且新加坡的使馆也放春节假,所以直到2月7号才工作。
然后6号下午便定上高铁带上材料准备前往上海,没想遇上久违的暴雪,所有高铁延迟接近两小时,于是抵达上海的时间从10点变成了12点。没有赶上终电外加大量旅客滞留,唯一的离开火车站的公共交通工具便是需要等待两个小时排队的出租车。
当ppwwyyxx给我开门的时候我只有一个想法:碎叫!

本来申请商务签证比较容易,只要官方邀请函加一个V39A的表格就行。但是不知为何(或许是邮寄时间不足)facebook未能提供。因此2月7号我们全部折戟于使馆门前,幸而是退签而非拒签。我们只能无奈回家。

紧急联系facebook希望他们能够通过新加坡的在线申请服务给我们申请个人旅游签证,又是一番折腾,终于在2月11号拿到了我们的签证,机票也定了下来:2月13号凌晨。

于是乎拿哦到签证次日(12号)下午又踏上了去上海的高铁,在机场遇到同行的ye_z以及送她的wangyc。与maskray合流之后飞向了新加坡。

GHDL不完全入門手冊

這學期的數電實驗與即將到來的數設均會大量使用VHDL。而Quatus作爲一款官方綁定的軟件並未提供有效的仿真手段。因此可能大家都是寫好後燒錄至CPLD上進行調試,調試週期長,而且很困難。

GHDL是一款開源自由的VHDL仿真軟件,通過編譯VHDL語言的源文件來生成一個文本文件,再對其進行解釋,達到仿真的目的。

使用Linux的同學可能會在軟件庫中找到ghdl,而Mac與Windows的同學可以點這裏來獲取。

仿真的準備活動

首先你需要一個vhdl的源代碼……其中包含着你想要實現的硬件。在這裏我們用一個4選1選擇器來作爲樣例。

[codebox 1]

我們需要對其進行測試與仿真。

硬件的一個entity就好像軟件中的一個函數/類,它還需要很多參數才能有確定的行爲。因此我們需要像給自己寫的函數庫寫測試一樣,給這個硬件寫一個用來測試它的構件(有沒有想到實驗室裏用來測試門芯片的那個箱子?)。

[codebox 2]

在寫測試的時候記得儘量將情況考慮周全,最好還能比較容易地判斷正確性。

開始仿真!

現在請確認

[codebox 3]

然後……ghdl要怎麼用呢?其實ghdl自帶生成一個簡單的Makefile的小工具。比如執行如下代碼:

[codebox 4]

就可以獲取一個簡單的Makefile了。Makefile也比較簡單,稍微看一下就能明白。緊接着,運行make以及make run就可以看到我們的仿真輸出了。

幾個Trick

首先,GHDLFLAGS必須要加上—ieee=synopsys選項才能使用library ieee裏面的內容。如果不想看到很多function “.*” is never referenced,可以加上—warn-no-unused。

其次,如果想限制仿真的運行時間,可以將Makefile中的GHDLRUNFLAGS變量加上—stop-time=time(如—stop-time=50ns)。

另外,如果你的系統有X server,你還可以輸出波形來進行檢查。查看波形需要使用gtkwave軟件,Linux與Mac的同學都可以在庫中方便地找到。想要生成波形,需要在GHDLRUNFLAGS中加上—vcd=filename。

吶吶,自從用上ghdl,從來沒燒過兩次CPLD。如果有問題請在下面提問。

四個項目

這學期本着醬油到底的思想加入了四個開發項目。目前兩個已經初步完結,兩個剛剛起步。

想着已經很久沒更新,之前也決心弄完其中一個項目之後要寫一篇Blog來記錄一下,以提升自己的博文數量……

寫在NoviCe之後

從第三週一直打到第十週的NoviCe總算落下了帷幕,一直想寫些什麼來紀念。

作爲一個從未參加國NOI團隊賽的Coder,這也是我第一次進行團隊協作開發,也明白了多人協作時產生的問題。

第三週的週三開始啓動,由於是C大賽而不是Cpp,因此採用了FOP模式,將函數分文件歸類,大致分爲以下部分:

  1. map: 獲取地圖信息、獲取尋路產生的路徑,計算兩點間的距離。
  2. char: 獲取遊戲角色信息,hp、mp、cd、位置等。
  3. act: 泛型操作,包括移動、攻擊、釋放技能、等待。
  4. orb: 靈珠信息相關,包括位置、是否可拾取、虛幻時間、所屬等。
  5. env: 角色環境信息,如最近回復點、出生點,最優出生點等。
    以上文件屬於底層,打包併入universal,以供每個策略AI調用。

除此之外还有update(用于数据更新),init(用于初始化),以及四个角色的AI。

Special Gift for DA16 Girls!

创意来自Matrix67

调试许久之后发现是自己的文章页面的宽度不够,详情请点击这里

做为伪Geek还是这样的方式更符合我的想法=W=

Arch+Fluxbox

发现自己还有很长的路要走,开哥的OJ使用的东西略微有点高不可攀。

这学期选修非常给力,音韵学、计算机网络、运筹学、英语口译。

必修方面的电路原理与原来以为很水的大学物理都有点挑战啊!

感觉瞬间激发了我的求知欲望。

为了赶上开哥的脚步,今天重新安装了ArchLinux,第一次自己配置Xwindow。(突然想到计算机网络的老师不仅把Xwindow拼成了Xwindows,还表示不好用。。。DT下。。。顺便就想到了提交报告被要求必须是doc格式,再同时想到本学期电路原理要求使用一个Win Only的付费软件来做模拟。。。)

每次使用Linux总会让自己感觉到水平的提高。

明天继续咯!每天一点Linux,早日赶上开哥Orz。

pacman各种好用啊!

html标记语言基础知识

做为网络时代的伪Geek,还是需要知道一些网页知识的。

其实每个网页都是一个纯文本文件,浏览器的作用就是将这个文本文件转换成我们所见到的网页。

我们可以开启任何你喜欢的文本编辑器,写上几行html代码,然后保存后缀为htm或html,之后用浏览器来打开它,就可以看到自己所写的页面了。

再次提到,如果你右击网页的空白区,一般可以看到“查看源代码”或者”View Page Source”之类的选项,选中之就可以查看当前页面在木有浏览器的作用时的样子。如果你打开的网页不是过于牛X,一般都是html语言或者其派生语言(XML、XHTML等)所写。

html语言使用“标签”来定义网页元素,格式是<tagname>。比如作用域最大的<html>标签,就是管理整个源码,在这个标签的作用域之外的东西浏览器是不会显示出来的。(但是在源代码中可以看到)

网页开发脱盲

一直很想真正的写个有应用价值的程序。同时为了更大的兼容性,在考虑过OpenGL之后,还是选择了Web这个基本上支持IE之外所有浏览器的开发形式。//MS真是计算机界统一规范的大敌,从NTFS到DirectX。

于是从头开始学起。N年之前学过一点点使用GUI的Dreamweaver来设计网页。但是,现在作为一个已经爱上vim的人来说,自己手写html似乎更符合一个饥渴人士的习惯。

但是,从头学起还是需要一点教程的。由是,在google上搜了一下HTML,于是找到了这个网站//在这里你可以看到相应的中文网站,但是,内容有些不全,且部分已经落后。

普及向——链表初步(C向)

开始便想到了洲哥奇葩的期中考试中的“给定常量M”……

链表出现的主要意义第一是满足元素个数没有明确上限的时候,使用动态内存分配来满足程序的需求。其次是因为数组对插入、删除、移动操作的时间复杂度较高,因此采用链表来实现。







数组与链表的复杂度比较
数组 链表
遍历 O(n) O(n)
查找 O(log n)(二分) O(n)
插入、删除、移动 O(n) O(1)

可见,在查找次数比较多的时候使用数组,在插入、删除次数比较多的时候使用链表。