RSS

Category Archives: Computer und Internet

关于Ubuntu 用latex写论文

刚刚结束Studienarbeit,论文用latex在Windows下proTeXt编写,总体来说还很方便,但是安装和配置过程有点费劲。 在Ubuntu下总体来说比较方便,但是可能对刚刚初用Latex的人有点难度,首先做下Ubuntu的安装更新,基本的安装过程很简单

sudo apt-get install texlive

建议安装

sudo apt-get install texlive-latex-extra

如果支持不同的语言(比如德语)

sudo apt-get install texlive-lang-german

之后为了方便起见在这里贴一段Makefile, 作者是Richard Membarth

#
# Makefile for pdfs
#

TEXINPUTS:=.//:$(TEXINPUTS)

ifeq ($(shell echo -e x), -e x)
ECHO = echo
else
ECHO = echo -e
endif

TEX = thesis.tex
BIB = #literature.bib
BLG = $(BIB:%.aux=%.blg)
PDF = $(TEX:%.tex=%.pdf)

all: $(PDF)

$(PDF): *.tex $(BIB)
@$(ECHO) " *\n * pdflatex: $(TEX) > $@ \n *"; \
( \
TEXINPUTS=$(TEXINPUTS) pdflatex -shell-escape $(TEX); \
if grep -q "There were undefined references." $(TEX:.tex=.log); \
then \
bibtex $(TEX:.tex=); \
TEXINPUTS=$(TEXINPUTS) pdflatex -shell-escape $(TEX); \
fi ; \
if grep -q "There were undefined references." $(TEX:.tex=.log); \
then \
TEXINPUTS=$(TEXINPUTS) pdflatex -shell-escape $(TEX); \
fi ; \
while grep -q "Rerun to get cross-references right." $(TEX:.tex=.log); \
do \
TEXINPUTS=$(TEXINPUTS) pdflatex -shell-escape $(TEX); \
done; \
$(ECHO) "\n\n *******************************************************************************"; \
$(ECHO) " *                                                                            *"; \
$(ECHO) " *  WARNING SUMMARY                                                          *"; \
$(ECHO) " *                                                                            *"; \
grep -i "Warning" $(TEX:.tex=.log); \
$(ECHO) " *                                                                            *"; \
$(ECHO) " *******************************************************************************\n"; \
)

.PHONY: clean
clean:
@$(ECHO) " ** Remove automatically generated files " ;\
rm -f *.out *.bbl *.blg *.tpt *.toc *.log *.aux *.idx *.nav *.snm *.vrb *.backup *~ *.table *.gnuplot;

distclean: clean
@rm -f $(PDF);

文件名 Makefile
生成PDF 用 make
删除临时文件 make clean
删除PDF文件 make distclean (make之前要运行一遍)

 
Leave a comment

Posted by on February 13, 2012 in Computer und Internet

 

Tags:

用SBT创建Scala项目

在网络上有非常多的观点关于建立Scala项目时用Maven还是sbt,如果你使用java很长时间一定很喜欢Maven而不是用Ant,但是如果你想创建Scala项目,那sbt一定是个不错的选择,因为他因为他就是为此而生,从而有很多功能和特点去支持这个编程语言.

现在先介绍一下如何安装sbt:

  1. 下载 sbt-launch.jar
  2. 然后拷贝这个文件到你系统的bin文件夹下,比如我:
    1. zhichao@desktop:~$ sudo mv sbt-launch-0.7.7.jar /usr/local/bin/sbt-launcher.jar
  3. 创建脚本文件叫sbt,内容是这样的
    1. echo “java -Xmx512M -jar /usr/local/bin/sbt-launcher.jar \”\$@\”” | sudo tee /usr/local/bin/sbt
  4. 执行赋予文件
    1. sudo chmod +x /usr/local/bin/sbt

如果你正确按着上面说的去做能得到下面的显示:

zhichao@desktop:~$ sbt
Project does not exist, create new project? (y/N/s)


为了创建一个新项目,一个文件夹应该被创建向下面所示:

zhichao@desktop:~/Documents/HelloWorld mkdir HelloWorld
zhichao@desktop:~/Documents/HelloWorld$ cd HelloWorld/
zhichao@desktop:~/Documents/HelloWorld$ sbt
Project does not exist, create new project? (y/N/s)


按着提示输入项目的基本属性

zhichao@desktop:~/Documents/HelloWorld$ sbt
Project does not exist, create new project? (y/N/s) y
Name: HelloWorld
Organization: de.mobiStudio
Version [1.0]:
Scala version [2.9.0]:
sbt version [0.7.7]:
Getting net.java.dev.jna jna 3.2.3 ...
:: retrieving :: org.scala-tools.sbt#boot-app
	confs: [default]
	1 artifacts copied, 0 already retrieved (838kB/15ms)
Getting Scala 2.7.7 ...
:: retrieving :: org.scala-tools.sbt#boot-scala
	confs: [default]
	2 artifacts copied, 0 already retrieved (9911kB/25ms)
Getting org.scala-tools.sbt sbt_2.7.7 0.7.7 ...
:: retrieving :: org.scala-tools.sbt#boot-app
	confs: [default]
	17 artifacts copied, 0 already retrieved (4379kB/41ms)
[success] Successfully initialized directory structure.
Getting Scala 2.9.0 ...
:: retrieving :: org.scala-tools.sbt#boot-scala
	confs: [default]
	4 artifacts copied, 0 already retrieved (20442kB/45ms)
[info] Building project HelloWorld 1.0 against Scala 2.9.0
[info]    using sbt.DefaultProject with sbt 0.7.7 and Scala 2.7.7
>


至此项目已经被创建好了,你可以退出(ctrl+c)创建过程,因为我们需要至少一个类来完成编译.

> run
[info]
[info] == copy-resources ==
[info] == copy-resources ==
[info]
[info] == compile ==
[info]   Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[info] Nothing to compile.
[info]   Post-analysis: 0 classes.
[info] == compile ==
[info]
[info] == run ==
[info] == run ==
[error] Error running run: No main class specified.
[info]
[info] Total time: 0 s, completed 19 May, 2011 3:39:02 PM
>
zhichao@desktop:~/Documents/HelloWorld$ cd src/main/scala/
zhichao@desktop:~/Documents/HelloWorld/src/main/scala$ gedit HelloWorld.scala
object HelloWorld {
  def main(args: Array[String]) {
    println("Hello, World!")
  }
}


接下来我们应该看到如下提示,

zhichao@desktop:~/Documents/HelloWorld$ sbt run
[info] Building project HelloWorld 1.0 against Scala 2.9.0
[info]    using sbt.DefaultProject with sbt 0.7.7 and Scala 2.7.7
[info]
[info] == compile ==
[info]   Source analysis: 1 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[info] Compilation successful.
[info]   Post-analysis: 2 classes.
[info] == compile ==
[info]
[info] == copy-resources ==
[info] == copy-resources ==
[info]
[info] == run ==
[info] Running HelloWorld
<strong>Hello, World!</strong>!
[info] == run ==
[success] Successful.
[info]
[info] Total time: 6 s, completed 25 Nov, 2011 13:45:06 PM
[info]
[info] Total session time: 7 s, completed 25 Nov, 2011 13:45:06 PM
[success] Build completed successfully.
zhichao@desktop:~/Documents/HelloWorld$


至此对sbt的安装和创建已经完成,我们有两种选择,一个是继续用Editor编程或者选择IDE开发,我的选择是将项目引入到Eclipse当中, next….

 
Leave a comment

Posted by on November 25, 2011 in Computer und Internet

 

Tags:

中国医疗系统之我见

最近在德国学习医学计算机课程,方向是Informationssysteme,中文是医疗信息系统,可能国人对我们国家的神圣医疗体系都非常崇拜,但是具体深入的概念一般都停留在『钱』这个俗不可耐的东西上,所以我来简单介绍和评论一下德国和中国在医疗信息系统领域的诸多区别。

1『钱』

看病要花钱,在国人眼里可能是天经地义的事情,而且成天有人抱怨医药费太贵,医生态度差或者没有救死扶伤之品德等等,医疗矛盾频频发生,医患问题逐渐成为国内的主要社会问题之一。但是,对比国外,我们国家的一般医疗费用(挂号,开药等等)或者说特殊医疗费用(手术)在人均收入等前提的情况下,基本可以说便宜甚至在一些高科技应用医疗领域我们国家的整体医疗费用低于国外同比费用,在德国一个病人在医院每天的平均费用是2500欧元,在中国据我了解可能是2000元左右(国家没有准确的数据,仅仅是个人经历的数据),无论是怎样中国的整体病人的医院消耗费用并不贵。但是,国外和国内唯一的不同就是医疗费用在国外是保险公司承担,而在国内很大一部分是由患者来承担,并且患者对医疗费用的支付上了如指掌。

2 医生道德问题

其实说中国医生道德有问题的人大多数国人的感觉诱因是由一个非常简单的逻辑来得到的,就是我花钱没有买到我应该得到的服务,甚至被医生像商品一样对待,推销药品,甚至治死。我可以不幸的告诉大家,中国医生做的跟外国医生是一样的事情,也就是说全世界的医生都这么干,只不过问题又一次回到上一个题目上来,因为中国的患者承担医药费,所以能得出这种结论的只有中国人,而外国人对医生的道德仅仅是由对待患者的态度上来判断,至于医生在患者身上挣到钱的这种感觉只有保险公司能感觉到,患者对自己病情的产生费用毫不知情。

3 医疗信息系统

我看过国内的一些对医疗信息系统的一些文章,我的感觉一个很大的问题是大多数中国医生或者说医院把这个系统当作办公自动化系统来使用,okay,这个功能没错确实是有这个功能,但是更重要的是这个系统的核心功能是提高各个医疗部门之间的合作效率和整合能力,核对和结算医疗费用,归档病例,提供信息检索,辅助医学研究和医疗决策,并观察医疗决策的作用。所以更让大多数人失望的是,医疗信息系统在传统医疗文件管理方式相比,没有进步多少,有点仅仅是提供快速检索功能,但这个功能仅仅用于医疗研究领域,在治疗领域没有任何帮助,而且在结算领域反而会给国人患者带来压力,因为这样引进或者部署这种系统,会让患者承受更高的医疗费用。换句话说,引入医疗信息系统对主要由患者承担支付职能的环境下,对患者来讲绝对是灭顶之灾。

所以从上述三点来看,对患者来讲引入适当的保险机制的必要性是显而易见的,也就是说保险公司来决定是否来承担这部分患者的一直承担的费用,将患者从医疗结算领域剥离是非常必要的,记住是完全剥离,如果让患者仍然知道每笔医疗的具体费用,甚至让患者先行支付,之后再采取报销的方式,医患问题是无法解决的,因为这样无疑在原有的基础上引入了两个麻烦,一,患者是否有能力现行支付高额的医疗费用,二,保险公私是否会履行支付(报销)义务。记住引入保险公司的目的是避免患者在医疗结算领域所承受的诸多支付问题,而不是让支付问题复杂化。

 
Leave a comment

Posted by on July 24, 2011 in Computer und Internet

 

Tags: , , ,

OpenGL ES 介绍

OpenGL ES (OpenGL for Embedded Systems) 是简化OpenGL的,跨平台的,功能完善的2D和3D图形口API,针对多种嵌入式系统专门设计 – 包括控制台、移动电话、手持设备、家电设备和汽车。OpenGL ES 包含浮点运算和定点运算系统描述以及 EGL™ 针对便携设备的本地视窗系统规范。OpenGL ES 1.X 面向功能固定的硬件所设计并提供加速支持、图形质量及性能标准。OpenGL ES 2.X 则提供包括遮盖器技术在内的全可编程3D图形算法。

 
Leave a comment

Posted by on June 3, 2011 in Computer und Internet

 

XML Parser 语法分析器简介

语法分析:Syntactic analysis,也叫 Parsing)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。

语法分析器(Parser)通常是作为编译器解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成.* wiki

XML语法分析器解析XML文件,并提供其中所载的信息(即Element,Attribute等)并且作进一步处理。

XML语法分析器有两个重要的组成标准。首先是他们验证正确性部分, 第二,提供访问XML文档的接口(SAX或DOM)。这两个组成部分组成的语法分析器很自然有四种可能性,即验证和非验证的SAX解析器和验证和非验证的DOM解析器。

第一条标准,即验证和非验证,这是很容易解释的。一个XML文档是否能被有效检查验证, 是由DTD规范。因此,一个DTD这是绝对必要的。除此之外,良好DTD文档格式也是非常重要的。一个非验证解析器只检查XML文档是否遵循XML规范。在这种情况下,DTD不是必要的, 即使存在也无所谓. 由于一个验证文档分析器是非常耗时,所以应该尽可能避免,所以通常情况下我们用其他方式来验证文档.

第二条标准是通过接口对文件的访问, 即DOM和SAX.

SAX

SAX 的名字是 Simple API for XML, 他是在 XML-DEV Mailing List中诞生的,在1998年5月11日发布1.0版本,SAX是“基于事件”,表示当读到特定的XML结构时候(例如 Element, Attribute等等)就会触发结果,当然在Warning和error的时候也会随之触发相应的结果,开发者可以根据自己定义的事件处理方式独立的输出和处理各种结果。

举个例子

<zitat>                                                                                           
    Drum prüfe wer sich ewig bindet, ob sich nicht was Besseres findet.
</zitat>                                                                                          

语法分析器可以触发如下事件

  • 开始Tag
  • 文本
  • 结束Tag

DOM

DOM的名字是Document Object Model,它是由一颗以Element为结点的语法树结构所构成,输出的结果是遍历这颗树的所有结点

<buch>                                            
    <titel>Galgenlieder</titel>             
    <autor>                                       
        <vorname>Christian</vorname>
        <name>Morgenstern</name>   
    </autor>                                     
</buch>                                         

结点树结构如下

由此可见如果XML文本结构越复杂,构成的树形结构越巨大,相应的所需要的存储空间要比SAX大得多,这也就是DOM-API的缺点所在

对比DOM和SAX

SAX要快速和简单,当然也有很严重的缺点,就是没有对象模型,即没有什么层次结构的存贮关系,所以SAX所应用的领域就是一次性读取文档,从而得到结果

而DOM要慢得多,但是提供了Element之间的树形结果,可以对其进行适当的操作,所以DOM适合交互式的XML文档读取或者XML文档之间存在一些层次关系的梳理方式,但是不要忘记,DOM是需要大量的存贮空间作为支持。

 
Leave a comment

Posted by on May 31, 2011 in Computer und Internet

 

初学Python

听说Python很不错,但只听人言,对具体特点和优点不是很明白,未经实践,所以亲身实践,学习Python.
准备:
方案1
系统: Windows XP
工具: Eclipse 3.7 with Pydev
版本: Python 2.7
实践方法: Sax XML Parser
方案2
系统: Mint
工具: VIM
版本: Python 2.7
实践方法: Sax XML Parser

 
Leave a comment

Posted by on May 31, 2011 in Computer und Internet

 

Tags:

CUDA 类型定义 and 补充

1 Function Type Qualifiers 函数类型

1.1 __device__

__device__ 规定的函数,在device上执行。只能在device上调用。

1.2 __global__

__global__ 定义了一个kernel函数:在device上运行。只能在host上调用

1.3 __host__

__host__定义的函数:在host上运行,只能在host上调用。

没有定义__host__,__device__或者__global__的函数等同于__host__函数,系统都会把函数编译成host函数。

另外,__host__定义可以和__device__定义一起使用,编译器会把这个函数编译为host和device通用的函数。

1.4 Restrictions (强调,限制)

__device__函数通常是inline,所以如果需要不inline 就需要加上uninline

__device__和__global__函数都不支持递归调用。

__device__和__global__函数都不能定义static变量在函数内部。

__device__和__global__函数不能使用可变参数。

__device__函数没有函数地址,也没有指向它的函数指针,但是__global__函数有。

__global__定义和__host__定义不能一起使用。

__global__函数必须是void返回类型。

任何调用__global__的函数都必须指明运行配置。(Section 4.2.3)也就是线程kernel的调用方法。

__global__函数是异步调用的。在运行结束前就会返回。

__global__函数的参数通常是通过shared memory调用到Device中,最多是265bytes。

2. Variable Type Qualifiers
2.1 __device__
device上声明的变量,只能在在device上使用和调用.

2.2 __constant__
可以和__device__连用,处于constant memory space.可以被同一个grid的所有threads 从host runtime libary(e.g. cudaGetSymbolAddress(), cudaGetSymbolSize(), cudaMemcpyToSymbol() and cudaMemcpyFromSymbol)访问.
lifetime as application(grid bsw. kernel function)

2.3 __shared__
可以和__device__连用,处于shared memory space一个thread Block.只可以被同一个block的所有threads访问. lifetime same as block

 
Leave a comment

Posted by on May 31, 2011 in Computer und Internet

 

解释一下"竞价排名"

昨天一位朋友说到google搜索的排名跟其他所有的搜索网站的排名方式是一样的都是竞价排名,即是交钱就可以排名靠前,我当时解释道google并不是竞价排名,但是没有有力的证据,特此发表文章解释何谓“竞价排名”,google到底是怎样排名。
比较对象google 和 百度(baidu)
首先google的搜索不是竞价排名,证据:http://www.google.com/corporate/tech.html
关键字:我们不会以手动方式为网站指定关键字,也不会操纵任何网站在我们搜索结果中的排名。
其次baidu的搜索时竞价排名,证据:http://jingjia.baidu.com/service.html#tab=2
关键字:企业的推广信息展现在关键词对应的搜索结果页

提问:google到底有没有竞价排名的服务
回答:有,但是不是搜索服务。Adwords是google的一个服务项目就是广告服务,即在搜索之后在搜索结果的右侧出现的广告列是竞价排名,即交钱就可以在那里出现相应的搜索结果,即为google PPC,证据:http://adwords.google.com/support/aw/bin/answer.py?hl=en&answer=14185

baidu的竞价排名流程

google的PPC

 
Leave a comment

Posted by on March 20, 2011 in Computer und Internet

 

在Eclipse下进行latex文本编辑器的设置

暂时还没有成功,成功之后在完善…..

 
7 Comments

Posted by on December 17, 2009 in Computer und Internet

 
 
Follow

Get every new post delivered to your Inbox.

Join 50 other followers