原创文章

Oracle数据库安装与配置

这次的大数据小学期需要用到Oracle数据库。我在安装Oracle数据库的过程中费了很多周折,在此记录一下安装过程和配置上遇到的问题。

安装

Oracle数据库是重量级的企业级软件,安装相对麻烦。如果要在Linux上安装,Oracle官方仅提供了rpm安装包,并且需要图形界面。debian系发行版并不被官方支持,不建议使用。我选用的操作系统是Windows Server 2008。除此之外,使用Docker镜像或AWS云服务也是不错的方案。
我选用的Oracle Database版本是11g。11g版本分为Express Edition(XE),和Enterprise Edition(EE)。EE版拥有更多的功能(包括很实用的Enterprise Manager)。Oracle数据库虽然是商业软件,但是针对非商业使用是免费的,并且Oracle的收费策略是针对服务收费,而并非软件本身。
下载:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html
安装过程并不复杂,按照安装向导的提示操作即可。具体安装过程请参考:http://holowczak.com/installing-oracle-11g-release-2-windows-7-32-bit/本文不再赘述。
安装过程中其中一个步骤是选择Oracle数据库使用的编码。如果语言设置为简体中文,则默认的编码是GBK。为了避免出现乱码,请尽量选择UTF8编码。
(更多…)

Frank
原创文章

使用Flex和Bison制作编译器

这学期的编译原理课上,我们以C-Minus,一个C语言子集,作为源语言,实现词法分析、语法分析、三地址代码生成等功能的编译器(或解析器)。
代码见GitHub:https://github.com/nyanim/compiler

Flex与词法分析

进行词法分析之前首先对字符表进行定义。根据CMinus的语法定义,需要进行识别的字符集主要包括如下部分:
关键字:
if,else,while,int,void,return
运算符:
+,-,*,/
比较运算符:
<,<=,>,>=,==,!=,,
标识符:
ID
数字:
NUM
一个flex词法分析文件和bison一样分为声明,定义,规则4个部分。 其中,定义部分用来通过正则表达式定义单词,如数字可定义为[crayon-5b4f4f534497a516952798-i/]。[crayon-5b4f4f5344982747095441/](更多…)

Frank
原创文章

使用systemd

systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序,现在已成为大多数发行版的标准配置。
历史上,Linux 的启动一直采用init用于管理进程和服务。这种方法有两个缺点:一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程;二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。因此Systemd应运而生,Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),为系统的启动和管理提供一套完整的解决方案。
根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

创建配置文件

在[crayon-5b4f4f53452ae472780708-i/]创建一个以[crayon-5b4f4f53452b8165420420-i/]结尾的文件。例如[crayon-5b4f4f53452bb298422433-i/][crayon-5b4f4f53452bd909639092/](更多…)

Frank
原创文章

一次惨痛的GRE考试

经过两个月的精心(误)准备,终于在今天上午迎来了我的第一场GRE考试。
考场在北大理教的计算中心。进场之后是例行的存包,签保密协议等等。等9点过的时候统一安检,入场,拍照片。
我分到的考位是一个靠墙的角落,感觉相当不错,不会有人进进出出。北大的机房很老旧,但是设备还可以。屏幕是16:9的宽屏,在考试时字体会被拉的很宽。键盘虽然不如北工商,但也还说得过去。等所有人都检录完成之后,整个考场几乎可以同时开始考试,这样也就无所谓先进或后进考场,当然也不会在读阅读的时候旁边突然钻出来一个人开始describe the city you live in。
(更多…)

Frank
原创文章

Padavan路由器安装Time Machine服务器

此前我的路由器一直使用OpenWrt。但是,近日在OpenWrt中继配置万能的过程中遇到了一系列问题后,了解到了Padavan这个固件。Padavan固件的功能十分强大,可以实现包括但不限于文件共享,Aria,Transmission,Web容器,Time Machine等强大功能。
源代码:padavan / rt-n56u — Bitbucket
论坛发布页:http://www.right.com.cn/forum/thread-161324-1-1.html

准备工作

  • 一台已经刷入Padavan固件的路由器,并妥善设置opt环境。设置opt环境请参考:像openwrt一样装更多的软件
  • 一块移动硬盘,格式化为ext4(虽然Padavan可以识别NTFS和exFAT分区,但是后期会引发一系列问题,所以请务必使用ext4)
  • 进入系统管理,修改管理员账号为[crayon-5b4f4f53455ea698073124-i/]
(更多…)

Frank
原创文章

macOS High Sierra安装Caffe框架

英特尔杯人工智能挑战赛需要用到Caffe深度学习框架。Caffe框架在macOS上需要手动编译,然而官方的安装教程年久失修,并且编译过程中会遇到由不同版本或环境而引发的问题,我历时三天,踩了无数的坑之后,终于成功安装了Caffe框架。在此记录下安装的过程和遇到的错误,希望对你有所帮助。

系统环境及安装配置

  • Macbook Air 13' macOS High Sierra
  • Homebrew
  • Xcode
  • Miniconda Python2(Caffe建议使用Anaconda Python,另外我在尝试使用Python3编译Caffe时遇到了未知的错误,因此建议使用Python2.7)
  • openBLAS(Intel的MKL库会提供更高性能且更稳定的计算,在校学生可以通过这里申请:Intel® Math Kernel Library (Intel® MKL) | Intel® Software
  • CPU ONLY模式(MacBook Air没有NVIDIA GPU,因此使用CPU ONLY模式,不需要安装CUDA及cuDNN) (更多…)

Frank
原创文章

MySQL 权限管理

前段时间,我班有两个人的MySQL数据库被攻破,所有数据被清空。他们的MySQL实例有两个共同点:

  1. 暴露3306端口。
  2. 使用root用户登录且为弱密码。
MySQL的root用户权限过大,使用root登录是较危险的。因此我们应当避免在生产环境使用root登录,而是新建一个权限较小的用户,以确保安全。 (更多…)

Frank
原创文章

使用蓝图(Blueprint)组织Flask应用

在一些重量级Web框架中(如Laravel/Django),框架中已经预置了整个框架的目录结构,在没有特殊需求的情况下通常不会改变它。在Flask这类轻量级框架中,理论上你可以把一个项目的全部代码都放进一个.py文件中。然而一旦项目规模稍大,就会变得庞大而难以管理。这时,我们需要蓝图(Blueprint)来帮助我们管理代码结构。

蓝图

什么是蓝图

Flask用蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。一个 Blueprint 对象与 Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的蓝图 。
简而言之,我们可以将蓝图理解为Flask应用中的一个模块。(更多…)

Frank
原创文章

记第六届中国软件杯决赛

经过7月份的初赛,我们成功晋级了中国软件杯的决赛。9月4号,我们启程前往南京参加决赛。
关于比赛:大学生软件设计大赛官方网站—中国软件杯全国大学生软件设计大赛组委会主办
我们的赛题:安全可靠赛题2:分布式爬虫系统 - 六届赛题 - 大学生软件设计大赛官方网站—中国软件杯全国大学生软件设计大赛组委会主办

第一天 签到

9月4号,正好是学校开学第一天,我们一大早出发前往南京。第一周的课就先翘为敬了。
我们的车次是刚上线运行不久的复兴号,有车载WiFi,看了下IP应该是移动的4G,速度很良心。而且小桌板比和谐号更大,简直是为了车上赶代码量身定制的(误。 (更多…)

Frank
原创文章

使用nginx unit部署微服务

前端时间,nginx发布了nginx unit。NGINX Unit 是一个动态的网络应用服务器,它被设计为可运行多种编程语言的。通过API可以轻巧,多面化的动态配置Unit。目前为止nginx unit支持php,python以及go。其他语言如java,javascript等语言尚未提供支持。
有了nginx unit,我们就可以不用配置繁琐的php-fpm和uwsgi,只需要一个json文件即可部署一个微服务。
NGINX Unit 现在是beta版本。你现在虽然可以使用它,但建议仅用于测试环境,不建议用于生产环境。
GitHub:https://github.com/nginx/unit/
中文文档:https://github.com/tuzimoe/unit/blob/master/README_zh-Hans.md
下面我们使用nginx unit部署一个django项目,以hyriamb/nem-downloader: django网易云音乐下载器,适用于新版api为例。(更多…)

Frank