Markdown 常用语法表格

从入手mac后开始接触markdown,发现这个语法能够大大简化写作的难度,更加符合”工作时双手不用离开键盘”的思路,这里将常用的语法整理一下.

 文本 呈现 说明
Follows are illustrates for sequence index lines.
1. first line
2. second line
Follows are illustrates for sequence index lines.
    1. first line
    2. second line
数字+英文句号+空格表示有序序列
Follows are illustrates for no sequence lines.
* first line
– second line
Follows are illustrates for no sequence lines.
    • first line
     second line
*或者-后面跟空格表示序列
*abc*
_abc_
abc
abc
被*或者_所包围的,表示斜体
**abc**
__abc__
abc
abc
被**或者__所包围的,表示粗体
***abc***
___abc___
abc
abc
被***或者___所包围的,表示粗斜体
# head 1
## head 2
### head 3

head 1

head 2

head 3

 

1至6个#开头说明这是一个标题
[这是一个链接](http://www.chriszh.com) 这是一个链接 方括号+圆括号代表链接,方括号代表文字说明,圆括号内是URL

 

从Ubuntu迁移至OS X.

前些日子把Ubuntu从1204升级至1304后,问题多多.
教训就是Ubuntu最好一直用LTS,如果实在要升级,建议重装,在原系统上Update实在不是一个好建议.

之前就一直很心仪OS X,这次就趁着机会入手了Macbook pro.

到目前用了一个礼拜,现在说说和ubuntu的区别.

1.OS X对文件的”剪切”不是特别提倡,拖动到另外一个文件夹的默认动作是拷贝.

2.OS X对于复制文件夹的目标目录中,假如存在同名文件夹的默认处理很怪异,它会删掉原文件夹,再把新的拷贝进去.而不是windows和ubuntu默认的那样是合并两者.

3.OS X默认没有类似apt-get或者yum这样的工具,可以安装ports或者homebrew,我看很多人都推荐brew,所以就跟大流了.用起来brew install XXX,除了不用sudo,其他和apt-get没什么区别.

4.mac把我们熟悉的ctrl键的功能拆成了commad和control,平时用起来command用的比较多.比如command-C,command-V,command-S,command-A,所以也没什么太大区别.但是,但是,对于我这个用惯了vim的同学来说,稍微有点分裂,因为在别的应用都是用command多,而到了vim中,又要大量的使用control,还是要适应一段时间,反正这一个礼拜了,现在用起来还得很刻意的注意一下到底是该用command还是control,没有之前用ubuntu那么行云流水.

5.OS X上软件质量都很高,远超ubuntu,对比windows也毫不逊色.对于非windows程序员来说,用这个完成日常工作问题不大.IDE,数据库管理器都有很好的软件.(虽然正版价格昂贵,但是破解版挺容易找,罪过罪过)

6.虽然OS X也是unix大家族的一员,但是有些在linux上好好的开源软件到OS X上可能会有问题,而且开源社区解决的速度远不如linux~比如今天就遇到的thrift 0.9.1在OS X最新的Mavericks上build失败的问题,社区说将留到0.9.2解决,我看了一眼bug,现在还是unresolved状态,鬼知道什么时候能搞定.

7.开发人员拿到OSX的第一件事最好是装X Code.里面集成了很多有用的东西,省的自己一个一个装,比如svn.

8.OS X默认读取的是~:.bash_profile,而不是ubuntu默认的~:.bashrc.经测试ubuntu的配置文件拷过来改个名字就能用.

———————————————————-

最后推荐一些我觉得mac上还不错的软件:

QQ,旺旺,QQ音乐,有道笔记,迅雷,有道词典,百度云同步盘.

iterm2 用来替代原生的终端.

textmate用来替代原生的文本编辑器(据说最新版已经开源).

Navicat数据库神器~

Raspberry Pi点亮LED+DHT11温度湿度传感器

1.安装基础包

要操纵Pi的gpio口,需要先安装libi2c-dev和wiringPi

sudo apt-get install libi2c-dev
wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xf wiringPi.tgz
cd wiringPi/wiringPi/
make
make install

2.点亮LED

RPi点亮LED

点亮led并不复杂,将led和270欧的电阻串联后,一端接Pi的端口1(将pi反过来,看背面焊点为方的就是,并排的是2,依次类推),一端接io口即可,我接的是7号口,即1号口下面的第四个。
下面的代码作用是1秒为周期点亮LED。

// led.c
 
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
 
int main (int argc,char* argv[])
{
  if (argc < 2) {
    printf("Usage example: ./led 4 \n");
    return 1;
  }
  int pinNumber = atoi(argv[1]);
 
  if (-1 == wiringPiSetup()) {
    printf("Setup wiringPi failed!");
    return 1;
  }
 
  pinMode(pinNumber, OUTPUT); // set mode to output
  while(1) {
    digitalWrite(pinNumber, 1); // output a high level
    delay(800);
    digitalWrite(pinNumber, 0); // output a low level
    delay(800);
  }
 
  return 0;
}

编译后直接运行即可:

gcc led.c -o led -lwiringPi
sudo ./led 7

3.DHT11温度湿度传感器

RPi DHT11传感器

根据DHT11连线图:

dht11连线图

1号口是3.3v,数据口仍然用7号口,地线用25号口(既1号口那一排的最后一个口),根据图上的连线,为了保险起见,我将5k的电阻换成10k,仍然没问题。

DHT11 连线图

秀一下我糟烂的焊接技术 😀

糟烂的焊接技术

代码为dht11.c,一样需要编译。

gcc -o dht11 dht11.c -L/usr/local/lib -lwiringPi
sudo ./dht11

参考自:
通过Raspberry Pi(树莓派)的GPIO接口控制发光二极管
Temp Sensor and wiringPi (需翻墙)

Raspberry Pi 入手小记

最近看到Raspberry Pi很火爆,便跟风入了一个国行红色版。

卖家发的顺丰,从深圳到北京,前晚发货,第二天下午4点顺丰网站上显示还在北京集散点,所以我以为第三天上午才能到,也就没操心。下午6:05无意中发现5点多已经配送成功了,而传达室的大叔此时已经下班闪人了,结果还是第三天上午才拿到 🙁

闲话少扯,说说入手的折腾。

开整RPi

由于之前对这个小玩意了解了比较多,所以准备也比较充分,网线,HDMI,8G SD卡,还有一套雷柏的无线键鼠。选用无线键鼠套装是因为共用一个usb发射器,能省一个口是一个呗。

第一步,烧录/配置系统。

网上这个教程比较多了,官方的系统下载地址是: http://www.raspberrypi.org/downloads

目前系统一共分4个: Raspbian, soft-float Debian, Arch Linux和Risc OS.

Raspbian :基于Debian的官方版本,没啥特殊需求的直接用这个。

Soft-float Debian :和Raspbian一样,只是采用了软件模拟的浮点运算,如果需要使用某些无法使用硬件浮点预算器ARM-FPU的软件(如 Oracle-JVM),采用这个版本。

我使用的是Raspbian.

先找出SD卡在什么地方。

# sudo fdisk -l

在输出的结果中会出现类似如下的信息

Disk /dev/mmcblk0: 1977 MB, 1977614336 bytes
62 heads, 61 sectors/track, 1021 cylinders, total 3862528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1             135     3862527     1931196+   6  FAT16

其中/dev/mmcblk0就是sd卡 /dev/mmcblk0p1是sd卡上的分区,需要注意分区可能有多个。

由于就要将系统的镜像烧录到这个sd卡上面,所以需要将SD卡上的所有分区卸载掉才行,这里我就忘记卸载了,结果RPi插入SD卡后引导不起来,只能重来了一次。卸载命令如下,如果有多个,需要全部卸载完。

# sudo umount /dev/mmcblk0p1

下载系统镜像压缩包

# wget http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip

解压

# unzip 2013-02-09-wheezy-raspbian.zip

烧录到SD卡

# dd if=2013-02-09-wheezy-raspbian.img of=/dev/mmcblk0

正常情况下,插入RPi,加电后应该就能启动了。

第一次启动成功后进入了raspi-config进行配置,首先将分区拓展到整个SD卡,而后选定键盘布局为105键美国布局,语言为en_US.UTF8,时区为Asia/Shanghai。显存为32M。重启后终于看到了可爱的树梅派桌面。当然设置错了或者中途想改也没问题,随时可以通过运行sudo raspi-config来重新设置。

————

我遇到的问题:

1,HDMI屏幕显示问题

第一次加电之后能看到SD卡的灯闪,但是屏幕没反应(HDMI转DVI接DELL U2312HM)。
在网上找了一下,说是将/boot/config.txt的HDMI_SAFE的注释删掉就好了,于是照做。发现显示器能亮了,但是只有640*480的 分辨率。再经过若干折腾,发现将HDMI_SAFE还是注掉,将hdmi_force_hotplug=1打开就可以完美1080p了。不过用hdmi接 电视的时候需要再关上。

———–

2.无线键盘响应不灵敏或者重复输入问题

进入系统后,发现键盘的问题非常严重,不是按了没反应就是一下子出来一排,查了官网的trouble shooting,说是因为供电不足,换了有源的usb hub后问题解决。

———–

3.无线网卡驱动问题(Problem Solving for wireless card TL-WN725N RTL8188EU driver in raspberry pi)

由于在网上看到一个哥们(这货的链接)说自己的RPi在用无线网卡(TP LINK TL-WN725N),我也入了一个同型号的,装上后发现没有那么顺利,我的芯片并非是文中所说的RTL8188CUS,而是RTL8188EU,而系统也已经更新到了3.6.11+,所以驱动需要自己编译。
当然,我已经编译完了,你可以直接下载 8188eu.ko(download),放入/lib/modules/3.6.11+/kernel/drivers/net/wireless/,直接跳到第6节挂载一下即可。

You can download the driver 8188eu.ko which I’ve got directly (download) and put it to the folder “/lib/modules/3.6.11+/kernel/drivers/net/wireless/”, jump to section 6–“Edit /etc/modules”. Or DIY with following the next steps.

喜欢自己折腾的,具体操作如下:

1) save the follow codes as downkernel.sh

cd /usr/src
wget -O rpi.tar.gz https://github.com/raspberrypi/linux/tarball/rpi-3.6.y
tar xzf ./rpi.tar.gz
KVER=`uname -r`
mv raspberrypi-linux-* linux-$KVER
cd linux-$KVER/
sed -i 's/EXTRAVERSION =.*/EXTRAVERSION = +/' Makefile
zcat /proc/config.gz > .config
wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
make oldconfig
make modules_prepare
ln -s /usr/src/linux-$KVER /usr/src/linux
ln -s /usr/src/linux-$KVER /lib/modules/$KVER/source
ln -s /usr/src/linux-$KVER /lib/modules/$KVER/build

2) run downkernel.sh

sudo sh downkernel.sh

3)Download RTL8188EU driver(https://github.com/Red54/linux-shumeipai2/tree/sunxi-3.0/drivers/net/wireless/rtl8188eu),or download from this blog(download),uncompress & enter the folder rtl8188eu。

tar xvf rtl8188eu.tar.gz
cd rtl8188eu

4)Modify file Makefile

Before :

...
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ANDROID_X86 = n
...

After:

...
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_BCM2708 = y
CONFIG_PLATFORM_ANDROID_X86 = n
...

and find :

...
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif
...

change to:

...
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_BCM2708), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE :=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless
INSTALL_PREFIX :=
MODULE_NAME := 8188eu
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif
...

5)Compile codes and install 8188eu.ko

sudo make && make install

6)由于得到的rtl8188.ko并没有编译进内核,所以还需要挂载一下,
Edit file /etc/modules,append “8188eu” to the end,after that , the file will looks like this:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
8188eu

reboot and have fun 🙂

此过程参考了如下两篇文章:

http://www.tuicool.com/articles/jYreMf

http://blog.elevendroids.com/2012/12/building-tp-link-tl-wn725n-wifi-usb-adapter-driver-for-raspberry-pi/#more-107