0%

现在的生活节奏很乱,忽然发现好久没有更新博客了。恰好周二从国美电器购得的Nokia Lumia530到了,把玩了快一星期了,想写点入手后的感想。

拆箱图如下:
chaixiang

因为现在还在学生阶段,手头不宽裕,这次换手机选择了这款超级低价的WindowsPhone入门机,加邮费接近430RMB。

之前用腻了安卓机,听人说WP手机还是不错的,而且毕竟是诺基亚出品,质量有口皆碑啊。

Nokia Lumia530的配置非常低端,内存512MB,4寸显示屏,无前置摄像头,无调焦传感器之类,无需再述。这里我要谈的是优点:

  1. 可以更新到最新的WindowsPhone系统,带有Cortana(中文版叫做小娜),将来应该可以更新到Win10。
  2. 虽然内存大小只有512MB,但运行起来感觉还是比较流畅的,界面切换和滑动不存在明显的卡顿;至于运行应用方面,官方商店的多数应用和游戏可以安装并流畅使用。下面放几张截图:

Metro界面:
wpss201504250003
小娜:
wpss201504250005
锁屏界面:
wpss201504220004

总的来说,这款机型可以完整体现WindowsPhone8.1的特色,是用来尝试WP系统的不错选择。其实自己喜欢的,用起来顺手就好。最后上一张天后王菲的Music截图:
wpss201504250002

网络的终极奥义!

不知不觉就到了大三下学期,迎来了很多很麻烦的事情。
不过生活中总会有许多惊喜出现,比如,这次发现了远程桌面这个东东,去学校机房蹭大屏显示器变得便捷无比,再也不用随身带着U盘的资料了!这简直就体现了网络的终极奥义啊!

阅读全文 »

前言

Markdown自诞生以来就具备极低的入门难度,使书写博客变得简单。但是在某些时候,我们还是需要其他格式的文本,比如html,pdf,Pandoc正是这样一个用来实现文本格式转换的渲染器。

安装

官网在这里,有各个平台的安装说明。对于debian系列的Linux发行改版,使用包管理器进行安装是最方便的,即:

sudo apt-get install pandoc

不推荐Windows平台。

注意:PDF格式比较特殊,需要LaTeX,官网推荐使用Texlive,安装方法即:

sudo apt-get install texlive

因为还要处理中文问题之类,我认为去Texlive官网下载一个ISO镜像安装最为方便,安装步骤可见我的博客

使用

Markdown->html

首先写一个Markdown文件,命名为test.md,用来测试的内容如下:

Ubuntu12.04 64bit安装后要做的配置
========================
最近把系统换成了Ubuntu12.04.04 64bit单系统,遇到些配置的问题

## 1.给浏览器安装Flash。

进入Adobe的[官方网址](http://get.adobe.com/cn/flashplayer/),选择APT适用于Ubuntu10.04+,跳出请选择打开的程序,选择`/usr/bin/apturl`

## 2.卸载无用的预装软件,比如通讯工具。

## 3.安装Vim,VirturlBox。
VirtualBox共享文件夹可能存在问题比如访问无权限,可能需要参照[这个文章](http://www.crifan.com/can_not_access_share_folder_in_ubuntu_virtualbox/)。
关键是添加用户到boxsf组中,关键命令是:

` sudo adduser yourname vboxsf `

## 4.安装MP3,RMVB播放的插件,打开7z压缩包的插件。
根据系统提示安装。

执行:

pandoc --ascii test.md -o out.html

如果安装成功,将会生成一个相应的html文件,其中--ascii选项是为了使中文不发生乱码。

Markdown->PDF

Markdown文件同上,不过要按照上文所说,安装好Texlive,执行:

pandoc test.md -o out.pdf --latex-engine=xelatex

如果生成的PDF中没有中文,说明字体设置上存在问题,本部分需要参考Flyaway’s Blog,使用tzengyuxiopm-template.latex4模板替换/usr/share/pandoc/data/templates/default.latex,而且要将里面的字体改为系统具有的字体比如SimSun,然后就OK了。

2015.2.12更新:
下面的笔记适用于在基于debian的发行版(比如Ubuntu、LinuxMint)安装Texlive2013、2014;
第一步根据本机状况,可能不需要;
Texlive2014已经可以下载安装了,下面的所有“2013”更改为“2014”,安装Texlive2014正常。

1.Ubuntu卸载旧的Texlive2009

Try the following commands, one after another. If you progress, respective folders may already be deleted:

sudo apt-get purge texlive*  
rm -rf /usr/local/texlive/2009 and rm -rf ~/.texlive2009
rm -rf /usr/local/share/texmf
rm -rf /var/lib/texmf
rm -rf /etc/texmf
sudo apt-get remove tex-common --purge
rm -rf ~/.texlive

2.安装texlive 2013

这个安装比较简单,我用的是ubuntu12.04.4。 具体步骤是,mount一下你下载的iso文件。

sudo mkdir /media/texlive
sudo mount texlive2013-20130530.iso /media/texlive

然后进入到 /media/texlive目录下,执行:

./install-tl  

提示输入的时候,输入I (大写的i,会看到提示的)
安装完成后,可以向/etc/profile文件的最后一行添加如下代码,注意,我的系统是64位的,你要看看你自己的系统是不是在这个目录下有latex命令。

export PATH=/usr/local/texlive/2013/bin/x86_64-linux:$PATH  

如果你想使用帮助的话,还可以向~/.bashrc中添加下面两行:

export MANPATH=/usr/local/texlive/2013/texmf-dist/doc/man:$MANPATH  
export INFOPATH=/usr/local/texlive/2013/texmf-dist/doc/info:$INFOPATH

到这里,我一般会重启一下。
测试一下上面的配置是否正确:

which latex  

如果找到了latex,那就可以继续了,找不到的话,你需要重新看一下自己是不是没有配置好环境PATH

3.搞定中文字体

(1)测试中文字体

先写一个简单的测试tex文件。起名为test.tex

\documentclass[UTF8]{ctexart}  
\begin{document}
我爱中国!
\end{document}

然后执行如下命令编译:

xelatex test.tex  

等一会,你会遇到一个错误,大致如下:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
!
! fontspec error: "font-not-found"
!
! The font "SimSun" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................

下面就要解决这个问题。

(2)解决中文字体问题

错误里说了,”font-not-found”!所以问题在于Texlive找不到所示的SimSun字体。

配置Texlive,使其可以使用系统字体

参照官方文档的说法:

XeTEX和LuaTEX可以使用任何系统安装的字体,而不只是TEX目录树中的那些。它们使用类似但不完全一致的方式实现这一功能。
在Windows下TEXLive提供的字体会自动为XeTEX所用。但如果你在Unix兼容的系统中安装了xetex软件包,则需要把系统配置一番XeTEX才能找到随TEXLive安装的那些字体。
为了进行配置,xetex 安装后(不管是初始安装还是后来安装的)都会在TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf 创建一个必需的配置文件。
要在整个系统中使用TEXLive的字体(假定你有足够的权限),请依照下面的步骤来做:

  1. 将texlive-fontconfig.conf 文件复制到 /etc/fonts/conf.d/09-texlive.conf。
  2. 运行fc-cache -fsv。
    如果你没有足够的权限执行上述操作,或者只需要把TEXLive字体提供给你自己,可以这么做:
  3. 将texlive-fontconfig.conf文件复制到 /.fonts.conf,其中是你的主目录。
  4. 运行fc-cache -fv
    你可以运行fc-list来查看系统字体的名称。

由此可知,执行如下命令即可:

sudo cp /usr/local/texlive/2014/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
sudo fc-cache -fv

现在texlive可以使用系统字体,但是SimSun字体在类UNIX中不存在,所以需要从Windows拷贝。

拷贝SimSun字体到系统中

mkdir ~/.fonts  
cp * ~/.fonts

也可以使用默认的系统文件夹,比如可以用

mkdir /usr/share/fonts/windowsfonts
cp * /usr/share/fonts/windowsfonts

然后执行如下命令,修改字体权限并再次更新字体缓存:

sudo chmod +x *
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fsv

执行成功后,再做如下操作:

cd  /usr/local/texlive/2013/texmf-dist/tex/latex/ctex/fontset/  
sudo vim ctex-xecjk-winfonts.def

文件定义了xeCJK字体设置,内容大致如下:

% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字体设置,默认为六种中易字体  
% vim:ft=tex
\setCJKmainfont[BoldFont={SimHei},ItalicFont={[SIMKAI.TTF]}]
{SimSun}
\setCJKsansfont{SimHei}
\setCJKmonofont{[SIMFANG.TTF]}
\setCJKfamilyfont{zhsong}{SimSun}
\setCJKfamilyfont{zhhei}{SimHei}
\setCJKfamilyfont{zhkai}{[SIMKAI.TTF]}
\setCJKfamilyfont{zhfs}{[SIMFANG.TTF]}
% \setCJKfamilyfont{zhli}{LiSu}
% \setCJKfamilyfont{zhyou}{YouYuan}
\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
\newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑体
\newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷书
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
% \newcommand*{\lishu}{\CJKfamily{zhli}} % 隶书
% \newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆
\endinput

错误产生的原因在于上面定义的字体不存在或者找不到,所以根据已有字体名对字体名进行修改。
下面,打开新的终端,执行如下命令:

fc-list :lang=zh-cn  

输出大约如下:

AR PL UMing TW:style=Light  
AR PL UMing HK:style=Light
文泉驿等宽微米黑,文泉驛等寬微米黑,WenQuanYi Micro Hei Mono:style=Regular
仿宋,FangSong:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
標楷體,DFKai\-SB:style=Regular
AR PL UMing CN:style=Light
新宋体,NSimSun:style=常规,Regular
楷体,KaiTi:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
微软雅黑,Microsoft YaHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
Adobe 楷体 Std,Adobe Kaiti Std,Adobe Kaiti Std R,Adobe 楷体 Std R:style=R,Regular
Microsoft YaHei UI,Microsoft YaHei UI Light:style=Light,Regular

注意:输出中有SimSun字样才表示上述两步成功,否则可能复制相关字体不完全。
下面需要做的就是将ctex-xecjk-winfonts.def中的字体SIMFANG.TTF改为FangSong,SIMKAI.TTF改为KaiTi。

如果你用vim,可以在vim里执行如下命令:

:%s/\[SIMFANG.TTF\]/FangSong/g  
:%s/\[SIMKAI.TTF\]/KaiTi/g

(3)测试问题解决

重新执行一下,那个编译命令吧:

xelatex test.tex  

现在应该没有问题了。

(4)调用其他字体

虽然上述方法解决了一些问题,但却还是不能使用微软雅黑之类的字体,下面是解决方案
测试文档是:

\documentclass{ctexart}  
\setCJKfamilyfont{Microsoft YaHei}{微软雅黑}
\newcommand{\yah}{\CJKfamily{Microsoft YaHei}}
\begin{document}
注意:UTF-8编码,用XeLaTeX编译,{\yah 这里示例为微软雅黑}。\\
效果还可以。
\end{document}

效果是这样:
tex
大功告成。

记得这样一个段子:
很多自称喜欢编程的学生来到学校,他们希望学到些东西,能够立刻写出一些有意思的小应用。然而教授却老是教给他们数据结构、算法还有操作系统原理之类的,说这些是基础,学生们得不到自己想学的知识,对这些课程的兴趣也Just so so,实在想不通这一切后决定问教授。
教授是这样解释的,要写一个小应用,那是参加北大某鸟或者某培训机构就可以轻松做到的,说到底这是个技工;然而你们的目标不该是APP这么简单,你们需要学习更深刻的东西,才能够超越技工,成为工程师,走出码农的行列。
深以为然,就把这段子记在博客上。

现在流行用git管理vim插件了,这种方法让安装和更新插件变得更加方便。
先上一张官网的截图:
Vundle-installer

准备工作

  1. 安装好操作系统,这里我用的是debian8,没有在WindowsMac上尝试
  2. 安装好vimgit

安装步骤

阅读全文 »

起因

github pages是搭建个人博客的一个优秀平台,由于我之前将博客建在了CSDN,写了含有”翻墙”之类敏感关键词的博客而未审核通过(天朝你懂的),就怒而决定选择新的博客平台,恰好发掘到了github pages。

优点介绍

我个人在之前查找了很多资料,看了一些博客内容(比如阮一峰的博客),认为github pages有很多优点,比如:

  • github pages无需自己购买主机,直接使用github上的免费空间即可
  • github pages的可定制化更强,可以使用多种工具和模板,我用的是其官方推荐的jekyll,套用了一个简洁的模板
  • github pages支持Markdown,而Markdown绝对是书写神器,它让在写文档时进行结构控制和代码高亮变得异常轻松
  • 至于有人说用github pages建站麻烦,其实也不过如此,无非几个步骤而已

搭建过程

至于搭建过程,用Google可以搜索到很多教程,我这里就挑重要的说:

  1. 推荐使用Linux(如果你是土豪,用Mac),因为在windows上搞会容易出很多很多问题
  2. 推荐去github pages的官方主页,那里有用jekyll构建的完整教程,步骤详尽,而且有很多指向jekyll的链接,方便至极
  3. 安装Ruby,安装jekyll,也要安装个rake

使用

  • 要熟悉目录结构,配置文件_config.yml
  • 新增文章,可以使用rake post title="" date=""
  • 美化和代码高亮等可以用更改CSS解决,后者需要的python在Linux上本就安装好了,而在windows下有很多问题,这也是推荐Linux的原因

结语

哈哈,可以享受github pages了。

备注

这是我_config.yml,尤其要注意几个路径,一定不要错了。这样就可以正确发布到github和引用图片了!

# This is the default format. 
# For more see: http://jekyllrb.com/docs/permalinks/
permalink: /:categories/:year/:month/:day/:title

exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md"]
highlighter: pygments
markdown: redcarpet
redcarpet:
extensions:
- hard_wrap
- no_intra_emphasis
- autolink
- strikethrough
- fenced_code_blocks
# Themes are encouraged to use these universal variables
# so be sure to set them if your theme uses them.
#
title : 郑明培的博客
tagline: Site Tagline
author :
name : Mingpei Zheng
email : yueyawanbian@gmail.com
github : Zhengmingpei

# The production_url is only used when full-domain names are needed
# such as sitemap.txt
# Most places will/should use BASE_PATH to make the urls
#
# If you have set a CNAME (pages.github.com) set your custom domain here.
# Else if you are pushing to username.github.io, replace with your username.
# Finally if you are pushing to a GitHub project page, include the project name at the end.
#
production_url : http://Zhengmingpei.github.io

# All Jekyll-Bootstrap specific configurations are namespaced into this hash
#
JB :
version : 0.3.0

# All links will be namespaced by BASE_PATH if defined.
# Links in your website should always be prefixed with {{BASE_PATH}}
# however this value will be dynamically changed depending on your deployment situation.
#
# CNAME (http://yourcustomdomain.com)
# DO NOT SET BASE_PATH
# (urls will be prefixed with "/" and work relatively)
#
# GitHub Pages (http://username.github.io)
# DO NOT SET BASE_PATH
# (urls will be prefixed with "/" and work relatively)
#
# GitHub Project Pages (http://username.github.io/project-name)
#
# A GitHub Project site exists in the `gh-pages` branch of one of your repositories.
# REQUIRED! Set BASE_PATH to: http://username.github.io/project-name
#
# CAUTION:
# - When in Localhost, your site will run from root "/" regardless of BASE_PATH
# - Only the following values are falsy: ["", null, false]
# - When setting BASE_PATH it must be a valid url.
# This means always setting the protocol (http|https) or prefixing with "/"
BASE_PATH : false

# By default, the asset_path is automatically defined relative to BASE_PATH plus the enabled theme.
# ex: [BASE_PATH]/assets/themes/[THEME-NAME]
#
# Override this by defining an absolute path to assets here.
# ex:
# http://s3.amazonaws.com/yoursite/themes/watermelon
# /assets
#
ASSET_PATH : false

# These paths are to the main pages Jekyll-Bootstrap ships with.
# Some JB helpers refer to these paths; change them here if needed.
#
archive_path: /archive.html
categories_path : /categories.html
tags_path : /tags.html
atom_path : /atom.xml
rss_path : /rss.xml

# Settings for comments helper
# Set 'provider' to the comment provider you want to use.
# Set 'provider' to false to turn commenting off globally.
#
comments :
provider : disqus
disqus :
short_name : jekyllbootstrap
livefyre :
site_id : 123
intensedebate :
account : 123abc
facebook :
appid : 123
num_posts: 5
width: 580
colorscheme: light

# Settings for analytics helper
# Set 'provider' to the analytics provider you want to use.
# Set 'provider' to false to turn analytics off globally.
#
analytics :
provider : google
google :
tracking_id : 'UA-123-12'
getclicky :
site_id :
mixpanel :
token : '_MIXPANEL_TOKEN_'
piwik :
baseURL : 'myserver.tld/piwik' # Piwik installation address (without protocol)
idsite : '1' # the id of the site on Piwik

# Settings for sharing helper.
# Sharing is for things like tweet, plusone, like, reddit buttons etc.
# Set 'provider' to the sharing provider you want to use.
# Set 'provider' to false to turn sharing off globally.
#
sharing :
provider : false

# Settings for all other include helpers can be defined by creating
# a hash with key named for the given helper. ex:
#
# pages_list :
# provider : "custom"
#
# Setting any helper's provider to 'custom' will bypass the helper code
# and include your custom code. Your custom file must be defined at:
# ./_includes/custom/[HELPER]
# where [HELPER] is the name of the helper you are overriding.

就到这里。

2015/1/28更新
上一篇说了Linux控制台版的2048,这次是对代码进行简单修改后的Windows版2048。

运行效果如下:
windows2048
与Linux版本相比,核心代码没有改动,只是改变终端颜色函数的部分做了调整。

不过,在Windows下,使用VS2013 Express,与GCC有所不同,所以做了一些处理,并对原有代码做了整理,使之No Warning。后来发现用低版本和Code::blocks编译会出错,大概与低版本和Mingw找不到s_printf函数有关,所以目前这个版本还是只能使用VS2013编译。代码同样放在在Github,可以点这里查看。

C语言小程序在Windows下设置控制台颜色

其实很简单,主要通过SetConsoleTextAttribute函数的参数。关于这个函数的原始声明,可以查找MSDN的API说明,也可见下文。
改变第二个参数后,再加上简单的循环,可以得到很有趣的效果,就像下图的色表:
cmdcolor
其实现代码如下:

#include <stdio.h>
#include <windows.h>

int main(void)
{
HANDLE consolehwnd;//创建句柄,详细句柄知识,请百度一下或查MSDN
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
SetConsoleTextAttribute(consolehwnd, 15);
printf(" Console color list...\n");
for (int i = 0; i < 256; i++)
{
SetConsoleTextAttribute(consolehwnd, i);
printf("%5d", i);
}
SetConsoleTextAttribute(consolehwnd, 15);
printf("hello!\n");
printf("It is really beautiful!\n");
system("pause");
return 0;
}

SetConsoleTextAttribute()函数原型

SetConsoleTextAttribute function
Sets the attributes of characters written to the console screen buffer by the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function. This function affects text written after the function call.

Syntax

BOOL WINAPI SetConsoleTextAttribute(
_In_ HANDLE hConsoleOutput,
_In_ WORD wAttributes
);

Parameters

hConsoleOutput [in]

A handle to the console screen buffer. The handle must have the GENERIC_READ access right. For more information, see Console Buffer Security and Access Rights.

wAttributes [in]

The character attributes.

Return value

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

To determine the current color attributes of a screen buffer, call the GetConsoleScreenBufferInfo function.

Examples

For an example, see Using the High-Level Input and Output Functions.

Requirements

Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]

Header

Wincon.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

在Github上看到一个荷兰人写的linux控制台版的2048,用的C语言,感觉很有意思。
linxu2048

读了一下他的源码,感觉写的不错,就厚着脸皮加了一些中文注释,源码网址可以到在这里查找。