播放器

00:00/00:00

置顶文章! 继续阅读?

掌握一门计算机语言需要五步

第一、先看书或教程,把里面的知识点例程都实现一遍,并且对这些例程进行分析注解,语法、符号等。

第二、当把基础部分都学完之后,先用最简单的程序,实现一个微小而粗糙的功能,越简单越好,然后进行调试,调试运行后再欣赏加一点花哨的东西进行调剂生活。最后再添加其他功能。

第三、当你会写一些小程序后,会发现程序很简单也很单调。这时候你可以重新构架一下,把简单的框架变得复杂一点,并实现一些稍微复杂的功能,功能实现即可,可以非常非常简陋,关键是构架要清晰一点。最后在对这个框架进行润色和打补丁。

第四、当你会了一些简单的架构之后,这时候就可以去多看看别的程序,要找哪些中等长度的,看牛人的布局方法,进行批评吸收,也可以想想一些改进他们构架的思路。看这些框架要从结构出发,这里可以联系一下画结构图,图不需要画的规范,也不需要画的花哨,能表达流程就行。以后可以慢慢重画和改进。

第五、读大型的程序,和实现大型的项目就得从图出发,而不是从语言,当你想在某个地方进行算改进,这时就可以zoom in,然后从局部入手改进或重构了。

filepath2txt

本文针对caffe里面将文件夹里的东西写成txt文件

共有三个文件: filepath2txt.sh、filepath2traintxt.sh、filepath2valtxt.sh、

其中 filepath2txt.sh代码如下:

#!/usr/bin/env sh
# 说明 
# dictionary: train{d1{f1,f2,...},d2{f1,f2,...},...} val{d1{f11,f12,...},d2{f21,f22,...},.... f11,f12,.....,f21,f2,...,....}
# train
#    -d1
#       f1.jpeg
#       f2.jpeg
#       f3.jpeg
#       f4.jpeg
#       ....
#    -d2
#       f1.jpeg
#       f2.jpeg
#       f3.jpeg
#       f4.jpeg
#       ....
#    ...
# val
#    -d1
#    -d2
#    ...
#    all images in di need copy to val/ again.
rm -f ./train.txt
rm -f ./val.txt
echo "filepath2traintxt"
sh ./filepath2traintxt.sh
echo "Done"
echo "filepath2valtxt"
sh ./filepath2valtxt.sh
echo "Done"

其中 filepath2traintxt.sh代码如下:

#!/usr/bin/env sh
# 深度遍历
deepls(){
    for x in "$1/"* #"$1/"* ----all file in dir
    do 
        #echo $x
        if [ -f $x ]
        then
            echo $x $I|cut -d '/' -f3-4 >> $NAME
        fi
        if [ -d $x ]
        then
            (deepls "$x")
            I=`expr $I + 1`
        fi
    done
}
I=0
DEST_PATH="./train"
NAME="./train.txt"
deepls $DEST_PATH

其中 filepath2valtxt.sh代码如下:

#!/usr/bin/env sh
# 深度遍历
deepls(){
    for x in "$1/"*
    do 
        #echo $x
        if [ -f $x ]
        then
            echo $x $I|cut -d '/' -f4-5 >> $NAME
        fi
        # if [ -d $x] error
        done
}
deep(){
    for x in "$1/"*
    do
        if [ -d $x ]
        then
            deepls "$x"
            I=`expr $I + 1`
        fi
    done
}
I=0
DEST_PATH="./val"
NAME="./val.txt"
deep $DEST_PATH

因为val文件要把其中所有的目录里的文件复制到文件外面来,所以有:

for x in ./val3/*
do
	cp $x/*.png ./val/
	echo $x
done

gnt-file-decode

CASIA中文手写体字库的二进制文件结构如下:
sample-flowchart-template

gnt文件格式解析(python):

参考网址:http://blog.csdn.net/zsjhxl/article/details/42294591

一个python程序及解释:

#!/usr/bin/python

import struct
import Image
import os
global count
count=0
path='/data/theFirstChar/test/'

ff = '/data/theFirstChar/1.0test-gb1.gnt'
f = open(ff,'rb') #直接打开一个文件,如果文件不存在则创建文件,二进制读-rb
#ifend = f.read(1)
while f.read(1) != "": #1为读取的长度,以byte为单位,读到空字符就结束

#fileObject.seek(offset[, whence])
#offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
#whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;
#0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
f.seek(-1,1) #前面-1的意思还不知道,后面的1是从当前位置往后读。

count += 1

#unpack(fmt, string)按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
#<低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,I:unsigned int为四个字节,
#f.read(4)四个四个字节读
length_bytes = struct.unpack('<I', f.read(4))[0] #中括号内的0表示取原组中第一个东东。读出一个无符号整数
print length_bytes
#tag_code = f.read(2) #按照两个两个读------------------这个是原来的下面是我改进的
tag_code = struct.unpack('<H', f.read(2))[0]
tag_code=str(tag_code)
print tag_code
width = struct.unpack('<H', f.read(2))[0] #H unsigned short 读取两个字节
print width
height = struct.unpack('<H', f.read(2))[0]
print height

im = Image.new('RGB',(width,height))
img_array = im.load()
#print img_array[0,7]
for x in xrange(0,height):
for y in xrange(0,width):
pixel = struct.unpack('<B',f.read(1))[0] #B unsigned char 1个字节
img_array[y,x]=(pixel,pixel,pixel)

#print str(count)
filename = str(count) + '.png'
#filename = '/'+ tag_code + '/' +filename
print filename
if(os.path.exists(path + tag_code)):
filename = path + tag_code + '/' + filename
im.save(filename)
#f.close()
else:
os.makedirs(path + tag_code)
filename = path + tag_code + '/' + filename
im.save(filename)
f.close()

一个实用的python程序,只须修改ff参数即可:

#!/usr/bin/python

import struct
import Image
import os
global count
count=0
path='/data/first/train/'

ff = '/data/first/1.0train-gb1.gnt'
f = open(ff,'rb')
#ifend = f.read(1)
while f.read(1) != "":

f.seek(-1,1)
count += 1

length_bytes = struct.unpack('<I', f.read(4))[0]
print length_bytes
#tag_code=f.read(2)
tag_code = struct.unpack('<H', f.read(2))[0]
tag_code=str(tag_code)
print tag_code
width = struct.unpack('<H', f.read(2))[0]
print width
height = struct.unpack('<H', f.read(2))[0]
print height

im = Image.new('RGB',(width,height))
img_array = im.load()
#print img_array[0,7]
for x in xrange(0,height):
for y in xrange(0,width):
pixel = struct.unpack('<B',f.read(1))[0]
img_array[y,x]=(pixel,pixel,pixel)

#print str(count)
filename = str(count) + '.png'
#filename = '/'+ tag_code + '/' +filename
print filename
if(os.path.exists(path + tag_code)):
filename = path + tag_code + '/' + filename
im.save(filename)
#f.close()
else:
print "god"
os.makedirs(path + tag_code)
filename = path + tag_code + '/' + filename
im.save(filename)
f.close()

wordpress离线更新方法

零、首先必须做备份

一、在https://wordpress.org/download/下载最新版,复制到主机上。

二、停用所有插件。

三、删除wp-includes和wp-admin目录下的文件。

四、复制除wp-content外的所有文件对网站文件进行覆盖复制。

五、登录网站,点击更新,再启用插件。

庄子南华经注解分析

庄子原文:故曰至人无己,神人无功,圣人无名。

诸家注批云:

至人无己:无己故顺物,顺物而王矣(风哥注:此处至人应该是王天下的圣王)。

神人无功:夫物未尝有谢,生于自然者,而必欣赖于针石,故理至则迹灭矣。(风哥注:理至则近于自然,与自然化二为一,故曰迹灭)今顺而不阞(风哥注:读le,阞为山脊,有古之圣人顺地阞水,有限制之意,《易》之艮卦亦以山为止),与至理为一,故无功。

圣人无名:圣人者,物得性之名耳,未足以名所以得也。

综述:我常常思考这三个四字的含义,今则明矣,都是一个意思,是人按照事物的规律做事,顺物之性,天下是物性规律在作用,而至人、神人、圣人只是以自然之力用之于自然。然而也只有这三种人才能做到吧!

我常常感叹《易经》坤卦过于顺从,没有自己。现在想想,其实是顺物性规律而已,非顺于权势。之前一直认为“龙战于野,其血玄黄”是一件不吉利和悲剧的事,诸易家释其义亦然。但是可能文王周公等古之圣人并不这么想,这从他们征伐战事可知。我想冲突和其他事物一样,都是中立的,就像朱熹等对《中庸》的注解一样,否认道德上的是非之论。顺之以自然,其血玄黄,又何惜乎!

批处理命令获取当前时间时分秒的代码

代码如下:


@echo on

rem 从后往前读
set hh=%time:~,-9% 
set mm=%time:~-8,-6%
set ss=%time:~-5,-3%

echo 小时数: %hh%
echo 分钟数: %mm%
echo   秒数: %ss%

rem 从前往后读
Set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
echo %h%-%m%-%s%
pause


运行效果图:
gettime

世界文字研究草稿

参考:http://blog.sina.com.cn/s/blog_70f887a00102eylb.html

一、汉字是由单独象形组成和组合象形组成一个单独的汉字的。英文一般是有少数几个象形组合成一个词根,再根据几个词根构成一个单词的,因为腓尼基文字没有元音,所以元音的产生并不能主导单词的意思。原因使得语音变得容易发出而圆滑。

二、汉字一直是纵向写的,字体偏向于象形,所有文字的竖写文字都是因为材料问题,而汉字是因为写在竹子上,竖写较为容易,从右往左写是因为汉字是竹简编成的,绝大多数人右手比较灵活。古埃及文字的横向写是因为埃及是沙土地,黄泥浆容易书写,所以保持这横向书写。腓尼基可以极度符号化的原因是它把象形文字横向写(之前可能腓尼基也是比较低级的很少,用木条写,这可以从黎巴嫩有很多树木可以得出结论,也正是因为文字水平不行所以才回借鉴别人的。而且刚开始引入的时候可能还是竖着写的,后来为了保持前面的竖写后人可以看懂,所以横着写),同时把象形的纵向放置的东西横着放,使得文字的形象受到了破坏,所以就一直就没有像不像之说,就破罐子破摔的一直抽象了下来。

三、苏美尔文字中的竖线是为了隔开单词。英文单词的词根可以根据象形文字进行解释,并且可以把中间的原因去掉,因为元音不达意,只是读者顺口,所以现在任然有一些单词因为没有插入元音而很难读。

联想电脑重装系统指南

联想及thinkpad用U盘重装系统,比较困难:
首先必须要从设置从U盘启动,这个得从 一件重装 或 Fn+F12进入cmos模式,这个得看电脑具体情况。

进入boot界面:
设置boot mode 为legacy support. 然后设置Boot priority 为legacy first(如果你的U盘支持uefi模式就不改这个).
然后U盘就可以启动了。

第一次试一下能否按一般的装,如果不行,得对整个数据进行备份,从U盘安装盘里面进入命令行,来设置硬盘格式

具体设置如下:

1、使用Windows 7光盘或者U盘引导,进入系统安装界面;

2、按Shift + F10打开命令提示符;

3、输入Diskpart(不用输入引号,下同),并按回车,进入操作界面;

4、输入:list disk,查看磁盘信息。注意看磁盘容量来选择。图中465G的Disk 0是硬盘,3852M的Disk 1是用于Win7安装的U盘;

5、输入:select disk 0,选择disk 0为当前操作的磁盘;

6、输入:Clean,清空当前磁盘分区;

7、输入:convert mbr,转换为MBR分区;

8、操作完成,关闭此命令提示符窗口,继续按照正常的方法安装Windows 7系统即可。

扩展知识:convert命令的其它用法:

convert basic -将磁盘从动态转换为基本。

convert dynamic -将磁盘从基本转换为动态。

convert gpt -将磁盘从MBR转换为GPT。

convert mbr -将磁盘从GPT转换为MBR。

惠普打印机不能打印pdf格式文件的解决方案

惠普打印机不能打印pdf的解决方案
原因:估计是电脑问题,估计需要更新什么的。

第一:
用adobe acrobat把pdf保存为png格式。然后对图片进行打印。

第二
用pdf->doc的转换软件来转换成word文档,再打印。

第三
用Adobe Reader打开,高级->作为图像打印(这个没用成功过)。

VS+Qt+Mysql+addin+boost安装指南

第一
这个之前在win10上面安装,不知道是我的win10东西太多导致各个软件配置交织太复杂,还是其他未知原因。姑且存疑。

第二
这次我重装系统,改为win7,解决了一些问题后能成功安装。

第三
我写了一个教程,可以供参考!
VS+Qt+Mysql+addin+boost安装指南

Page 1 of 212