MENU

程序

C++实现的航路计算工具——BravoFinder

前言

很早我就想做一个离线的航路计算程序。

网上有不少模拟飞行航线计算工具,国内有虚航运营网的全球航路查询及飞行计划辅助系统、AIRCN的AIRCN全球航路查询系统,国外有AsaLink的RouteFinder。这些都是大家真切用过的。

全球航路查询及飞行计划辅助系统是老牌了,好用,我接触FS时就是一直用着它来的。然而它的导航数据版本有些老旧,现在还是Cycle 1311。

AIRCN全球航路查询系统是近几年上线的系统,有着全球航路查询及飞行计划辅助系统的影子,且同时支持NAIP和AIRAC数据,用户界面也是体验最好的。AIRCN全球航路查询系统最新的数据版本为Cycle 1606,不能说过时,但也算不上新。

RouteFinder有收费版本,也开放了免费版本。更新得非常勤快,昨天才收到Navigraph发来的数据更新通知邮件,现在它就已经更新到Cycle 1609了。不支持NAIP是一个缺憾之外,也许就是外国网站访问比较慢吧。笑。

这次开工时,看到了GitHub仓库的日期,最后一次提交在2014年。我确实是早有想法的,我想编写一个离线的、用户提供数据的航路查询系统。这一次终于是下定决心,把主要功能完成了。GitHub在这里:Bokjan/BravoFinder。功能还在陆续完善中,我本身提供了一个简陋的CLI方式供大家使用。在编写时考虑到这个小工具可以嵌入其他的项目,有意封装了API,在Intefaces.hpp里。

本项目使用知识共享4.0-署名-非商业性使用国际公共许可证开源。

本文主要对技术方面的细节进行介绍。

数据的导入

概论

考虑到PMDG是使用非常广泛的插件机厂商,程序利用的就是PMDG的数据。

Read More

CentOS 6.4编译GCC实战

之前的某一个项目对于GCC版本有一定的需求,于是我安装了一个Ubuntu Server 14.04 LTS,它apt-get源里的GCC就已经是4.8了。然而,Ubuntu用起来出现了各种各样的小问题,虽然不成大碍,总是感觉不爽。现在我换回了CentOS 6.4,准备自己编译一下能够较好支持C++11的GCC。

一、准备工作
我们先来到GCC官方网站上的下载页面,找一个最近的镜像,然后在release里找到一个对应的源码包。如http://mirrors-usa.go-parts.com/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.gz,这是我需要的。然后我们把它下载下来,找个地方,解压缩。

Read More

图论相关简单算法汇总

这里介绍了图论中常见算法的原理和实现。

一、邻接表存图

用邻接矩阵表示稀疏图会浪费大量内存空间。而在邻接表中是通过把类似于“从顶点0出发有到顶点1、2、3、4的边”这样的信息保存在链表中来表示图的。这样只需要$O(|V| + |E|)$的内存空间。

Read More

没事找事:WTFPL解释器的C++实现

写在前面:本文中所提到的源代码及由其编译得到的二进制可执行文件(Windows)可以在这里下载到。本代码已在GNU/Linux GCC、MinGW GCC及Microsoft Visual C++环境下编译通过且正常运行测试样例。压缩包中的二进制文件是使用Microsoft Visual Studio 2013生成的。

简介:这是一个使用C++实现的What The Fuck Programming Language解析器。本来打算写的是GrassMudHorse Programming Language的解析器,最终由于编码问题放弃了。如果读者您能够完美解决这个问题并保持额外开销在一个很低的水平,请与我取得联系,不胜感激。

Read More

vPilot加密配置项处理全解析

VATSIM的新连线客户端vPilot出来挺久了,我一直都没去看,Hans倒是当天就开始研究了。vPilot有一个问题,就是它是VATSIM-Only的设定,除了VATSIM的那一票服务器外其他的都不能连。在它的配置文件中,有一项是这样的:pZ9u441bE4a2NCGgqMxKNvwAIy0qEA+AwXB8c3sV90c=。它看起来是用Base64编码的字符串,但是使用Base64去解码没有效果。紧随其后的,是名为CachedServer的标签,但是它的值也和NetworkStatusURL是一样无法解码的。

我今天怀着必胜的信念尝试解决这个问题。因为没有什么顾虑,此处我将披露所有技术细节。在开始前,我可以先说明最初的思路是错误的,但是这不要紧,这些分析方法不一定不适用于所有情况。当然,也算一次有意义的尝试。

Read More