18年1月25日记

18年1月25日记
天气:晴,但是真的冷阿

早上在机房收拾自己的东西的时候,意外地发现了一包魔法式干脆面!是一块钱一包的那种,不是五毛!
我开心极了,捧着这上天的恩赐,蹦蹦跳跳地跑去高考科,打算把这珍贵的干脆面送给心仪的姑娘。
心里打着小算盘:今早老师都去开会了,说不定一会还能捏捏姑娘粉嘟嘟的小脸蛋呢!
可是,谁能告诉我,到底是为什么:全校的老师都去开会了,为什么!到底是为什么!高考科还留了一个老师值班?最重要的是,我为什么这么倒霉的和她老人家撞了个满怀?
她老人家逮住我就是一顿盘问“你从哪来?来干什么?为什么鬼鬼祟祟的?看到老师躲什么?”,“老师,我是技能小组的,回来拿东西”我支支吾吾地应付。本以为她会放我一马,可是……“行!让你拿东西,我陪你拿,给你两分钟时间!”。“陪”!?
就这样,她替我推开了本该由我开开心心地推开的班级的大门(好在开的是班级后面的门)。
我和老人家的对话打破了班里原本的宁静,同学们像看外来入侵物种一样一脸新奇地抬头望着我。想想身后站着的老家伙和再看看面前几十双善良的小眼睛,我的心中仿佛有一万匹草尼马在奔腾。
在那一瞬间,我能感受到的只有:茫然,失措与惊慌。
可是,男孩子,勇敢一些嘛,我就是喜欢人家,送个东西有错吗???又没有不文明交往(此处应有滑稽的表情)。
鼓起勇气,小心翼翼地走到姑娘的座位旁,扔下方便面说了句“给你包方便面”,马上回头看了看站在门口的老家伙。当然,我不是怕老家伙吃醋,只是看看此时她脸上有没有发黑~
咦,她在往门外看耶!美滋滋的我迈着美滋滋的小碎步快速移到门口,说了句“我拿完东西了,老师再见”,然后真的是一溜烟地溜跑了。

解决Ubuntu下无法使用pthread库的问题(加-lpthread也不好使的情况)

导语

这个问题困扰了我很久,因为写一个飞机大战的小游戏需要用到多线程。看到Linux下的多线程可以用pthread.h库来实现,但该库不是C的标准库,所以编译的时候要加上-lpthread,可是,为在我的Ubuntu 16.04下如此编译的结果是报了这个错误:

/usr/bin/ld: 找不到 -lphtread
collect2: error: ld returned 1 exit status

为了解决这个问题,我在网上苦苦地搜了很久很久,最后无奈地发现:网上现有的文章基本上都是抄来抄去,全是胡言乱语。。。

正确的解决办法

安装manpages-posix软件包即可。

$ sudo apt install manpages-posix

再次编译即可通过!

Atom安装插件失败的解决方法

前言

心血来潮,突然想换一个代码编辑器,在百度上搜来搜去看中了Atom。不过这家伙默认是英文界面,想切换成中文还要再安装一个汉化插件,而问题也由此而来。。。

问题表现

安装插件时提示如下错误:

Installing “simplified-chinese-menu@5.3.5” failed.Hide output…
gyp info it worked if it ends with ok
gyp info using node-gyp@3.4.0
gyp info using node@6.9.5 | win32 | x64
gyp http GET https://atom.io/download/electron/v1.6.15/iojs-v1.6.15.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! install error
gyp ERR! stack Error: connect ECONNREFUSED 52.216.80.64:443
gyp ERR! stack     at Object.exports._errnoException (util.js:1022:11)
gyp ERR! stack     at exports._exceptionWithHostPort (util.js:1045:20)
gyp ERR! stack     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1087:14)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Users\\huaidan\\AppData\\Local\\atom\\app-1.23.3\\resources\\app\\apm\\bin\\node.exe" "C:\\Users\\huaidan\\AppData\\Local\\atom\\app-1.23.3\\resources\\app\\apm\\node_modules\\node-gyp\\bin\\node-gyp.js" "install" "--runtime=electron" "--target=1.6.15" "--dist-url=https://atom.io/download/electron" "--arch=x64" "--ensure"
gyp ERR! cwd C:\Users\huaidan\.atom
gyp ERR! node -v v6.9.5
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
Compiler tools not found
Packages that depend on modules that contain C/C++ code will fail to install.
Read here for instructions on installing Python and Visual Studio.
Run apm install --check after installing to test compiling a native module.

问题原因

这个问题其实是伟大的社会主义和谐墙导致的,当然,我不是批评和谐墙,也不是说和谐墙不好,只是和谐墙有时候可能会误伤一些正规站点,让人很无奈,而且还不许搭梯子。。。

解决方法:

打开CMD命令提示符(Linux下则打开shell,执行的命令都是相同的)。

C:\>apm config set registry https://registry.npm.taobao.org //切换npm源为国内源
C:\>apm install //安装环境软件
Installing modules done //提示安装成功

此时再次返回Atom中安装插件即可成功。

Ubuntu安装GCC7.2

$sudo add-apt-repository ppa:ubuntu-toolchain-r/test # 添加ppa源
$sudo apt-get update # 更新软件列表
$sudo apt-get install gcc-7 # 安装GCC7.2

成功安装后使用`gcc-7`命令调用GCC7.2编译器。直接使用`gcc`命令将调用系统原本的GCC编译器。 如果想将默认编译器换成GCC7.2则执行如下命令:

$sudo rm -f /usr/bin/gcc # 删除原本的软连接
$sudo ln /usr/bin/gcc-7 /usr/bin/gcc # 创建指向gcc-7的软连接

如果不想保留旧版本的编译器则执行如下命令:

$sudo apt-get remove gcc-5 && apt-get autoremove # 卸载gcc-5并卸载掉不再需要的依赖包
$sudo ln /usr/bin/gcc-7 /usr/bin/gcc # 因为卸载GCC时会自动删除/usr/bin/gcc链接,所以这里需要再次创建

我对C语言中字符串指针的一个误解

在QQ群中看到一道C语言题:

定义char a[10]和char *p=a,下面的赋值语句中,正确的是___
A. a[10]=”Turbo C” B. p=”Turbo C”
C. a=”Turbo C” D. *p=”Turbo C”

这道题选B本身是没有任何值得疑惑的地方的,但是,且看我下面这个小程序。

#include<stdio.h>
int main(void) {
    char a[10];
    char *p = a;
    p = "Turbo C";
    printf("%s\n", a); //这里我打印的是数组a而不是指针p
    return 0;
}

在Linux下编译执行后输出乱码,这个错误是因为我一开始以为:p = “Turbo C”是将”Turbo C”这个字符串赋值给了p所指向的字符数组a。
实际上,p = “Turbo C”这条语句在执行时做了三件事。

  1. 在内存中创建了一个常量空间,用于存放字符串
  2. 在字符串末尾添加了一个/0
  3. 返回字符串在内存中存放位置的首地址给p指针

所以,p指针中所保存的内容已经由字符数组a的首地址变为了字符串”Turbo C”的首地址,想当然的,字符串”Turbo C”也并未被赋值给字符数组a,而是存在于新的内存空间中。
此时我再用printf输出字符数组a的内容就会打印出一些乱七八糟的东西啦——因为我没有给数组a初始化,只有天才晓得编译器在里面填了什么东东~

那么上面那道程序这样改一下就正常工作啦:
将第7行改为

printf("%s\n", p);

手机一样可以拍出美丽的星空照片

昨晚在奶奶家的平房上,我抬头看着星星发呆:小星星,像眼睛一样眨呀眨,一闪一闪亮晶晶~
索性掏出手机记录下了这一刻的星空。

  • 拍摄工具:小米5s
  • 光圈:f2.0
  • 焦距:无限远
  • 感光度:ISO1600
  • 快门时间:32秒
  • 地点:山东省威海市荣成市光禄寨村

IMG_20180106_180010.jpg

第一次拍星空,看到照片时我简直不敢相信竟然会这样清晰,本以为会黑乎乎一团呢。
看来小米5s的“暗夜之眼”称号真的不是白得的。

解决因gravatar头像加载慢而拖累typecho访问速度的问题

前言

gravatar是互联网中很常用的头像库,但受限于天朝独特的网络环境,所以在天朝范围内访问起来有点“难受”,本文将介绍解决gravatar头像加载慢而拖累typecho的问题的方法。

解决问题的思路

利用七牛云存储来缓存gravatar头像,并将typecho程序调用gravatar头像的地址改为七牛云存储的自定义域名。

步骤

七牛云存储设置部分

PS:本文不对细节做详细解释,仅概述步骤

1、注册七牛云账号
2、创建一个公共存储空间
3、设置镜像源为“https://secure.gravatar.com/
4、绑定自定义域名并按需求决定是否启用HTTPS访问

typecho设置部分

用文本编辑器打开typecho程序的/var/Typecho/Common.php文件,转到第937行,将“https://secure.gravatar.com/”修改为自己七牛云存储域名。

typecho中替换gravatar头像的加载地址

最后,多刷新几下页面,是不是速度快了很多?如果在过程中遇到什么问题欢迎在文章下方留言哦~

解决Win10中Linux子系统的控制台字体修改后重启控制台复原的问题

前言

听说Win10内置了Linux子系统,这可把我高兴坏了————再也不用有事没事挂着个虚拟机了!
怀着激动的心情在我的电脑上配置好这项功能之后,却发现Windows控制台的那令人看着头皮发麻的恶心字体真是刺的我眼睛疼,毫无Ubuntu原生桌面环境下Shell终端字体的美感。

失败的尝试

emmm…改一个字体吧,虽然我不喜欢折腾,但默认的新宋体实在是超出了我的忍耐极限。

修改Win10子系统的控制台字体

but,改完字体后我重启了下控制台,为什么又回到了令人生厌的新宋体?一脸懵逼的我反反复复改了三遍。

比较完美的解决方法

不得已只好求助于度娘,找到如下解决办法:
安装Microsoft YaHei Mono字体,该字体是微软雅黑和consolas字体的集合(个人感觉很漂亮哦)。

安装后的效果图

Microsoft YaHei Mono字体效果图

下载及安装Microsoft YaHei Mono字体

点我下载Microsoft YaHei Mono字体

下载后解压压缩包,双击字体文件,点击“安装”即可。
Q8ARCCH4@Q`PAW$U8D1V$F1.png

补充

Microsoft YaHei Mono字体的英文字符宽度比consolas字体窄了一个像素,如果看着碍眼可以将字体大小从16改成17。

第一次跟风吃火鸡面,我感觉我要羽化而登仙了

这家伙泡完了并拌上酱之后长这个样子:

火鸡面

我为什么要作死去“品尝”它呢?这得怪机房的一个新生头一天晚上在机房吃这玩意,还给我尝了一口(只吃一点点的话味道还是不错的)…嗯…都是你的错,你背了良心债…

毫不夸张,我吃第一个大口的时候就要喷火了,这玩意最初入口的时候味道还不错,但过不上三秒,辣劲就会上来。此后,除了辣味和甜味之外再无其他味道。

如果要我形容“火鸡面”的味道,那我会说:此面辣的生硬,甜的毫无特点,就像辣椒油里加了抹了甜面酱的面条一样。

也是实在搞不懂为什么这么难吃的东西却在学校的超市卖的那么火爆,可能我真的老了吧…