会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

会务准备期间材料准备工作具体实施总结(vim, python, microsoft word)

span.kw { color: #007020; font-weight: bold; }
code > span.dt { color: #902000; }
code > span.dv { color: #40a070; }
code > span.bn { color: #40a070; }
code > span.fl { color: #40a070; }
code > span.ch { color: #4070a0; }
code > span.st { color: #4070a0; }
code > span.co { color: #60a0b0; font-style: italic; }
code > span.ot { color: #007020; }
code > span.al { color: #ff0000; font-weight: bold; }
code > span.fu { color: #06287e; }
code > span.er { color: #ff0000; font-weight: bold; }
-->

会务准备期间材料准备工作具体实施总结(vim, python, microsoft word)

Zhongxiewei

Tue Jun 10

前言

进来要准备会议期间的相关材料,包括各个参会人员的个人信息,如:姓名、所属单位、邮件、投递的文章、以及文章中属第几个作者,以及投递的文章信息,如:文章编号、文章标题、不同的作者、各个作者所属的单位、以及文章的摘要信息。需要对其进行整理,按照一定的格式调整完成之后,出版成册,同时还需要为各个参会人员定制相应的胸牌。

接下来的内容将围绕上述给出的整个过程,总结了个人如何利用相关的工具完成该工作,并且对某些工具的使用给出了一个简单的描述。另外,由于刚接到任务到任务截止的时间有点仓促,并没有选择最佳的实现方式,只是单纯的选取了自己熟悉的简单的实现方式,对于可能的存在的最佳的方式,也给出了一些个人的看法。

各种信息的获取

由于后期格式的调整,胸牌的制定等都是在知道参会人员各种详细的资料之后进行的。因此,对于信息的获取是最先需要完成,也是最为重要的一个环节。如果,这个过程没有采用很好的方式进行完成,那么可能导致的结果是,当突然所有人的某个信息需要重新调整之后,几乎所有的工作将被推倒重来,使得原先花费的时间、精力就像烟雾一般,散了就没了(当然这里指代的烟雾跟雾霾是差十万八千里的)。

因此,迫切的需要一种节省人力资源的方式来获取相应的参会信息。

参会信息主要由以下的可能来源:

  1. PDF版本的内容
  2. 网页中的表单信息

那么下面将主要介绍了如何从pdf以及网页中如何提取你想要的信息。

pdf信息获取

pdf的模板信息如下:

pdf 模板信息

从模板信息中可以得到的规律如下:每一个表中包含需要得到的信息,(Full) Paper Number, Tracking Number, Title, Contact Author, affiliation, Email, Full Author List, Abstract Text,因此我们对文件按照上述的关键词进行遍历,就能够获取相应的信息。

实施方法

为了能够快速的完成信息提取的任务,首先需要想到的是,如何将上述的文本信息提取出来,一种最为费时费事的方法是采用CTRL-C加CTRL-V的方法,还有一种方法是先将pdf格式的文件另存为成文本格式的文件,然后在利用熟悉的变成语言进行处理。由于第一种方法实施的开销时间和待处理文件的量成正比关系,因此对200多条信息的获取,我们采用的是后面的方法。

直接通过复制的方式,将pdf中的文本复制到target.txt文件中。然后根据需要提取信息的关键词进行简单编程,python实现如下:

# -*- coding: utf-8 -*-

import sys

def process(inFileName, outFileName):
    """利用关键词,从输入文件中获取相应的信息,并将其
    存储到输出文件中。

    关键词有:
        1. (Full) Paper Number:
        2. Title:
        3. Full Author List:
        4. Abstract:
    """

    # the last keywords was helped to extracting abstract
    keyWordList = [‘(Full) Paper Number:‘, ‘Title:‘, ‘Full Author List:‘, ‘Abstract Text:‘, ‘Topic Choices:‘]

    inFid = open(inFileName)
    outFid = open(outFileName, ‘w‘)

    line = inFid.readline()

    while line != ‘‘:
        line = line.strip()
        if line.startswith(keyWordList[0]):
            paperNum = line
        elif line.startswith(keyWordList[1]):
            title = line
        elif line.startswith(keyWordList[2]):
            authorList = line
        elif line.startswith(keyWordList[3]):
            abstractText = line

            line = inFid.readline().strip()
            while not line.startswith(keyWordList[4]):
                abstractText = abstractText + line
                line = inFid.readline().strip()

            outFid.write(paperNum + ‘\n‘ + title + ‘\n‘ + authorList + ‘\n‘ +
                    abstractText + ‘\n\n‘)

        line = inFid.readline()

    inFid.close()
    outFid.close()

if __name__ == ‘__main__‘:
    process(sys.argv[1], sys.argv[2])

通过下面的命令行,可以将target.txt中需要的信息提取到result.txt

python process.py target.txt result.txt

网页中的信息获取

将pibm会议的网页中的相关内容另存为网页格式保存。打开后的网页如下所示:

网页格式

从显示出来的网页格式中,我们能够很容易的发现,以下信息:文章编号,标题,作者姓名,摘要;但是没有作者单位的信息,是真的没有该信息吗?其实不然。

深入的来看一下该html格式的文件的源代码吧。

source code of the file

从图中淡蓝色区域就能够看出,作者的单位,邮件信息等并没有直接在浏览器中显示,于是我们可以断定,我们想要的信息都在该保存的网页文件中。那么如何从150多个文件中提取出想要的信息呢。

很快就能够就能够想到的就是直接利用相关的编程语言,结合网页parsing工具包进行处理,例如java结合jsoup,但是还有一种更加简单的方法,就是利用vim编辑器自带的功能。考虑到效率性问题,采用第二个方法。

更多关于vim的介绍将在下一节讲解。

将所有保存的网页文件放置于同一个目录下,如:

...
110.html
111.html
112.html
113.html
...

用vim打开所有的文件

    vim *.html

然后在文件中寻找能够提取想要的信息的标签,具体有h2Paper No.:, ShowAuthorDetails, Abstract Text for Technical Review:.

// Title
<h2 style="line-height: 24px;">gastric cancer target detection using near-infrared hyperspectral imaging with chemometrics</h2>

// Paper number
<span class="EmphesisFont">Paper No.:&nbsp;</span><span id="ctl00_Main_lblfullSubmissionNumber" class="formText07">9230-110</span>

// Authors
<td class="tallCells">
              <div style="float: left; width: 164px;">
               <div style="text-align: right;">
                <span class="EmphesisFont">Author(s):</span>
               </div>
              </div>
              <div style="margin-left: 170px;">
               <div>
                <span id="ctl00_Main_lblPrimaryAuthor">Dr. Weisong Yi</span>&nbsp;&nbsp;<a href="#" class="formLink06" style="text-decoration: underline;" onclick="ShowAuthorDetails(‘Dr. Weisong Yi‘, ‘College of Science, Huazhong Agricultural University, China‘, ‘86 2787282197‘, ‘weisong_yi@163.com‘); return false;">view details</a>
               </div>
               <div>
                Dr. Jian Zhang&nbsp;&nbsp;<a href="#" class="formLink06" style="text-decoration: underline;" onclick="ShowCoAuthorDetails(‘Dr. Jian Zhang‘, ‘College of Resources and Environment, Huazhong Agricultural University, China‘, ‘ ‘, ‘zhangjian@mail.hzau.edu.cn‘); return false;">view details</a><br/>Mr. Houmin Jiang&nbsp;&nbsp;<a href="#" class="formLink06" style="text-decoration: underline;" onclick="ShowCoAuthorDetails(‘Mr. Houmin Jiang‘, ‘People’s Hospital of Huangpi District, China‘, ‘ ‘, ‘jianghoumin@163.com‘); return false;">view details</a><br/>Dr. Niya Zhang&nbsp;&nbsp;<a href="#" class="formLink06" style="text-decoration: underline;" onclick="ShowCoAuthorDetails(‘Dr. Niya Zhang‘, ‘College of Animal Science, Huazhong Agricultural University, China‘, ‘ ‘, ‘zhangniya@mail.hzau.edu.cn‘); return false;">view details</a>
               </div>
              </div>
             </td>

// Abstract
<tr> <td class="tallCells"> <div style="float: left; width: 160px;"> <div style="text-align: right;"> <span class="EmphesisFont">Abstract Text for Technical Review:</span> </div> </div> <div style="margin-left: 170px; margin-bottom: 4px;"><div style="overflow-y: auto; height: 200px; border: solid 1px #aaaaaa; width: 466px;"><div style="padding: 4px 4px 4px 4px;">Gastric cancer is one of the leading causes of cancer death in the world due to its high morbidity and mortality. Hyperspectral imaging (HSI) is an emerging, non-destructive, cutting edge analytical technology that combines conventional imaging and spectroscopy in one single system. The manuscript has investigated the application of near-infrared hyperspectral imaging (900-1700 nm) (NIR-HSI) for gastric cancer detection with weight algorithms. Major spectral differences were observed in three regions (950-1050, 1150-1250, and 1400-1500 nm). By inspecting cancerous mean spectrum three major absorption bands were observed around 975, 1215 and 1450 nm. Furthermore, the cancer target detection results are consistent and conformed with histopathological examination results. These results suggest that NIR-HSI is a simple, feasible and sensitive optical diagnostic technology for gastric cancer target detection with chemometrics.</div> </div> </div> </td> </tr>

接下来需要完成的任务就是在想要提取的信息周围加上自己的标签,如,方便后期更方便的进行信息的提取。利用vim进行正则表达式识别,然后再利用替换的方法,对匹配的内容进行替换。

正对不同的内容,采用的正则表达式分别为:

  1. 对于title使用的正则表达式:/\vh2[^>]*\>\zs((.|\_s)*)\ze\<\/h2\>

    匹配后的结果如图中高亮部分所示:

  2. Paper Number的正则表达式为:/\vPaper No%(.|\_s)*\>\zs(9230-\d+)\ze\<\/span

    匹配后的结果如图中高亮部分所示:

  3. authors匹配的正则表达式为:/\vonclick\="Show\w+\(\zs(.{-})\ze\)%(.|\_s){-}Contact

    匹配后结果如图中高亮部分所示:

  4. Abstract匹配的正则表达式为:/\vAbstract Text.*4px;\"\>\zs(%(.|\_s){-})\ze\<\/div

    匹配后结果如图中高亮部分所示:

在每次匹配之后,还需要进行替换,在匹配的内容的两边加上我们给出的标签。所采用的命令为::argdo %s//<result>\1<\/result>/g | update

为了更快速的执行上述的命令,我们首先需要将保存的文件中明显的不需要的部分给清理干净,如将第一行到标题的前一行都删除::argdo 1,1824delete | update

到目前为止,我们给需要的内容打上了属于我们的标签,另外由于标签的头和尾可能不存在于同一行,因此,我们不能够直接借用简单的匹配工具将标签包围的内容给提取出来,于是再次借用了python对文档进行处理。

# -*- coding:utf-8 -*-

import glob
files = glob.glob(‘*.html‘)
files.sort()
strTag = ‘result‘
startTag = ‘<‘ + strTag + ‘>‘
endTag = ‘</‘ + strTag + ‘>‘

inTag = False

matchLine = ‘‘
for file in files:
    with open(file) as fid:
        for line in fid:
            line = line.strip()
            if (startTag in line) and (endTag in line):
                matchLine = line[
                        line.find(startTag)+len(startTag):
                        line.find(endTag)].strip()
                print matchLine
            elif startTag in line:
                matchLine = line[
                        line.find(startTag)+len(startTag):].strip()
                inTag = True
            elif endTag in line:
                matchLine = matchLine + line[:line.find(endTag)].strip()
                inTag = False
                print matchLine
            elif inTag:
                matchLine = matchLine + line
    print ‘\n‘

处理后的结果如下图所示:

pibmhtmlresult

Vim most basic thing

Reading the content in vimtutor step by step.

在vimtutor文中关于vim基本用法的小结

  1. 光标的移动

    h(left) j(down) k(up) l(right)

  2. 退出vim

    :q! 丢弃所有的更改
    :wq 保存后退出

  3. 删除光标所在的字符: x
  4. 文本的插入

    i type inserted text 在光标的前面插入文字
    A type appended text 在行末尾添加文字

  5. 删除一个单词(delete a word)

    dw 删除光标所在的位置到下一个单词之前(不包括该字符)
    de 删除光标所在的位置到该单词的结尾(包括结尾的字符),e表示the end of the word

  6. 删除光标所在的位置直到一句话的结尾: d$
  7. 删除一行: dd
  8. 使用一个数字表示一个行为的重复次数,如: 2w(向前移动两个单词), d2w(删除两个单词)
  9. 移动到一句话的开始: 0
  10. undo前一个行为: u
    undo一句话的行为: U
    撤销undo: CTRL-R
  11. 将delete的内容重新复制到光标所在位置之后: p
  12. 用一个字符替换光标所在的位置的字符: type r and then the character (你想输入的字符)
  13. 改变一个单词以及改变光标所在的位置到行末的内容: ce, c$
  14. CTRL-G 显示光标在文件的哪个位置,以及文件的状态
    G 将光标移动到文件的末尾
    number G 将光标移动到number对应的行
    gg 将光标移动到第一行
  15. / 向前搜索; ?向后搜索; n表示下一个,N表示上一个, CTRL-O回到原始的位置,CTRL-I回到最新的位置
  16. % 使得光标在括号之间切换位置,如(), [], {}
  17. 将当前行的old换成new :s/old/new
    将当前行所有的old换成new :s/old/new/g
    将不同行之间的所有old换成new :1,100s/old/new/g
    将文件中所有位置出现的old换成new :%s/old/new/g
  18. o 在当前行下面添加一行;O在当前行上面添加一新行
  19. y 进行文本复制操作;p 进行文本粘帖操作
  20. R 进入文本替换模式,退出

应用举例

字符串排序

有一系列的文章,最初的编号为9230-1,9230-2,9230-3,一直到9230-100; 现要对其进行处理,使得改序列在excel的排序过程中能够顺利进行排序。

  1. 常见的排序方式介绍

    一般的排序方式有两种, 按数字排序以及按字符大小排序。 按数字排序,很容易理解,如: (1, 3, 20, 9, 35) 进行排序后的结果为: (1, 3, 9, 20, 35); 而按文字排序, 先会比较第一个字符的大小, 常见的大小是按照ascii的顺序进行排序的, asscii的表如下:

    0 NUL    16 DLE    32      48 0    64 @    80 P    96 `   112 p
    1 SOH    17 DC1    33 !    49 1    65 A    81 Q    97 a   113 q
    2 STX    18 DC2    34 "    50 2    66 B    82 R    98 b   114 r
    3 ETX    19 DC3    35 #    51 3    67 C    83 S    99 c   115 s
    4 EOT    20 DC4    36 $    52 4    68 D    84 T   100 d   116 t
    5 ENQ    21 NAK    37 %    53 5    69 E    85 U   101 e   117 u
    6 ACK    22 SYN    38 &    54 6    70 F    86 V   102 f   118 v
    7 BEL    23 ETB    39 ‘    55 7    71 G    87 W   103 g   119 w
    8 BS     24 CAN    40 (    56 8    72 H    88 X   104 h   120 x
    9 HT     25 EM     41 )    57 9    73 I    89 Y   105 i   121 y
   10 LF     26 SUB    42 *    58 :    74 J    90 Z   106 j   122 z
   11 VT     27 ESC    43 +    59 ;    75 K    91 [   107 k   123 {
   12 FF     28 FS     44 ,    60 <    76 L    92 \   108 l   124 |
   13 CR     29 GS     45 -    61 =    77 M    93 ]   109 m   125 }
   14 SO     30 RS     46 .    62 >    78 N    94 ^   110 n   126 ~
   15 SI     31 US     47 /    63 ?    79 O    95 _   111 o   127 DEL 
  1. 使得编号能够进行字符排序

    由于编号的字符串的长度不相等,如9230-2比9230-100短,如果直接按照字符串进行排序,9230-100将比9230-2小,因此需要将9230-2更改成9230-002,使用的方法如下:

numberchange

字符串修改

获取得到的名字信息都具有相应的称谓,如Miss,Pro., Dr.等等,因此在获取完整的名字之前,首先需要去除相应的称谓。具体操作如下:

namechange

文本信息格式化

这里很容易想到一个出色的排版工具latex,但是由于大伙对于latex完全不知,仍然选用了word作为排版工具。那么作为word这样的工具,在进行格式排版的时候真的只能使用格式刷一个一个重复进行排版吗?其实不然。

浏览器想必都是大家在平常的生活工作中接触最多的软件之一,不同的网页在抵达浏览器之后都会以一个清晰的排版方式出现在大家的眼前,该功能的具体实现是在内容的两端添加了相应的标签,对内容的属性进行了说明,如:<h1>title</h1>,表示一级标题等。如果能够提前获得格式排版的一些列标签,那么就只要将相应的内容进行更新就能够复用这些标签。同时,又恰好word文档能够直接另存为html格式的文档,使得对word文档进行格式化批量处理成为了可能。

格式模板的获取

首先,新建立一个word文档,输入一个范例,然后另存为html格式的文档,如下所示。

doc style

可见我们针对的主要格式有:文章编号,文章标题,作者,作者单位,摘要,空行,5个大类。再进一步查看一下html文档内部的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
    <TITLE></TITLE>
    <META NAME="GENERATOR" CONTENT="LibreOffice 4.1.3.2 (Linux)">
    <META NAME="CREATED" CONTENT="20140619;152737802230336">
    <META NAME="CHANGED" CONTENT="0;0">
    <STYLE TYPE="text/css">
    <!--
        @page { margin: 0.79in }
        P { margin-bottom: 0.08in }
    -->
    </STYLE>
</HEAD>
<BODY LANG="en-US" DIR="LTR">
<P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=4><B>Paper No.</B></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=4><B>Title</B></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=3>Authors</FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 10pt"><I>Affiliation</I></FONT></P>
<P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR> </P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in">Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract,Abstract</P>
<P STYLE="margin-bottom: 0in"><BR> </P>
<P STYLE="margin-bottom: 0in"><BR> </P>
</BODY>
</HTML>

此刻从源代码的内容中可以很清除的知道:

  1. 文章编号对应的模板为:<P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=4><B>{}</B></FONT></P>
  2. 文章标题对应的模板为:<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=4><B>{}</B></FONT></P>
  3. 作者对应的模板为:<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=3>{}</FONT></P>;
  4. 作者单位对应的模板为:<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 10pt"><I>{}</I></FONT></P>
  5. 空行对应的模板为:<P STYLE="margin-bottom: 0in"><BR> </P>
  6. 摘要对应的模板为:<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in">{}</P>

其中{}表示需要添加内容的地方,剩余的部分可以当作文档的head和foot。于是利用熟悉的编程语言就能够很快的实现文档的格式化,此处选用了python进行处理。

格式套用批量化的实现

完整代码:

# -*- coding:utf-8 -*-
import re
def writeInfo(fid, paperNumber, title, authors, abstractContent):
    """ Write the informations of one paper to file """
    fid.write(paperNumberStyle.format(paperNumber) + ‘\n‘)
    fid.write(titleStyle.format(title) + ‘\n‘)

    authorName = ‘‘
    authorAffiliation = []
    p = re.compile("‘(.*?)‘")
    for author in authors:
        iters = p.finditer(author)
        i = -1
        for subiter in iters:
            i = i+1
            if i == 0:
                separator = ‘‘
                if authorName != ‘‘:
                    separator = ‘,‘
                authorName = authorName + separator + subiter.group().strip("‘")
            elif i == 1:
                authorAffiliation.append(subiter.group().strip("‘"))
            else:
                break
    fid.write(authorStyle.format(authorName) + ‘\n‘)

    for affiliation in authorAffiliation:
        fid.write(affiliationStyle.format(affiliation) + ‘\n‘)

    fid.write(abstractStyle.format(abstractContent) + ‘\n‘)
    fid.write(newlineStyle + ‘\n‘)
    fid.write(newlineStyle + ‘\n‘)

headStyle = """
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
    <TITLE></TITLE>
    <META NAME="GENERATOR" CONTENT="LibreOffice 4.1.3.2 (Linux)">
    <META NAME="CREATED" CONTENT="20140619;152737802230336">
    <META NAME="CHANGED" CONTENT="0;0">
    <STYLE TYPE="text/css">
        <!--
            @page { margin: 0.79in }
            P { margin-bottom: 0.08in }
        -->
    </STYLE>
</HEAD>
<BODY LANG="en-US" DIR="LTR">
"""

footStyle = """
</BODY>
</HTML>
"""

paperNumberStyle = ‘<P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=4><B>Paper No.: {}</B></FONT></P>‘
titleStyle = ‘<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=4><B>{}</B></FONT></P>‘
authorStyle = ‘<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=3>{}</FONT></P>‘
affiliationStyle = ‘<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 10pt"><I>{}</I></FONT></P>‘
newlineStyle = ‘<P STYLE="margin-bottom: 0in"><BR></P>‘
abstractStyle = ‘<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in">{}</P>‘

fidOut = open(‘withstyle.html‘, ‘w‘)
fidOut.write(headStyle)

with open(‘out.result‘) as fid:
    line = fid.readline().strip()

    while line != ‘‘:
        title = line
        paperNumber = fid.readline().strip()

        authors = []
        line = fid.readline().strip()
        while line.startswith("‘"):
            authors.append(line)
            line = fid.readline().strip()
        abstractContent = line

        writeInfo(fidOut, paperNumber, title, authors, abstractContent)
        fid.readline()
        fid.readline()
        line = fid.readline().strip()

fidOut.write(footStyle)
fidOut.close()

得到的结果如下图所示:

After adjust the style

最后另存为word就成功完成了格式调整的任务了。

一些细节上的东西,如作者单位的顺序,编号等,再额外的调整一下即可,当然直接在程序上进行优化也能够得到相应的结果。

题外话

由于这里的数据量比较少,因此直接将数据信息存储在单文本文件中,如果待处理的数据量不断增大的时候,可以选用合适的数据库对数据进行存储。

会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

时间: 2024-10-10 09:50:25

会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)的相关文章

《企业云桌面实施》-小技巧-03-vSAN6.5中SAS和SSD的使用建议

<企业云桌面实施>-系列博文-陆续更新中 <企业云桌面实施>-小技巧-01-规划注意事项http://dynamic.blog.51cto.com/711418/1884922 <企业云桌面实施>-小技巧-02-使用ISO光驱安装esxi6.5http://dynamic.blog.51cto.com/711418/1885884 企业云桌面实施>-小技巧-03-vSAN6.5中SAS和SSD的使用建议http://dynamic.blog.51cto.com/7

《企业云桌面实施》-小技巧-02-使用ISO光驱安装esxi6.5

<企业云桌面实施>-系列博文-陆续更新中 <企业云桌面实施>-小技巧-01-规划注意事项http://dynamic.blog.51cto.com/711418/1884922 <企业云桌面实施>-小技巧-02-使用ISO光驱安装esxi6.5http://dynamic.blog.51cto.com/711418/1885884 企业云桌面实施>-小技巧-03-vSAN6.5中SAS和SSD的使用建议http://dynamic.blog.51cto.com/7

《企业云桌面实施》-小技巧-01-规划注意事项

常说:" 要致富,先修路 ! " 一直专注微软统一沟通研究,从2009年开始学习OCS 2007 R2,2010年给企业或者个人培训OCS 2007 R2,从而踏入大企业的项目规划.实施.运维和培训之中,至今6年有余,经历了四代产品,如:OCS 2007 R2.Lync 2010.Lync 2013.Skype for Business 2015,不说精通但很熟悉,在线学员遍及全国,甚至有学员在国外. 但有一个更让我忘记不了的是,从2008年开始学习虚拟化,2010年转行第一个项目就是

《企业云桌面实施》-小技巧-08-建筑设计行业-真实效果-漫游动画-三维视图渲染

<企业云桌面实施>-系列博文-陆续更新中 **************************************************************************************************** <企业云桌面实施>-小技巧-01-规划注意事项 http://dynamic.blog.51cto.com/711418/1884922 <企业云桌面实施>-小技巧-02-使用ISO光驱安装esxi6.5http://dynami

软件配置管理复习

软件配置管理 第1章    软件配置管理概念与目标 软件配置管理(Software Configuration Management, SCM) (1)    定义(多个): l  软件配置管理是指一套管理软件开发和维护过程中所产生的各种中间软件产品的方法和规则,它是控制软件系统演变的学科. l  软件配置管理是一组针对软件产品的追踪和控制活动,它贯穿于项目生命周期的始终,并代表着软件产品接受各项评审. l  软件配置管理是贯穿于整个软件过程中的保护性活动,它被设计用来:(1) 标识变化:(2)

IBM Rational System Architect 许可证问题处理

Rational System Architect 百科全书库 百科全书库是存储企业体系结构相关信息的存储库. 百科全书库在物理上是 SQL Server 或 Oracle 服务器上的数据库. 百科全书库包含 Enterprise Architecture 的所有组件,即构成体系结构的图和定义,以及对任何外部文档或内部文档的引用(已导入到百科全书库的"文件"表中进行本地存储的文档). 在结构上,百科全书库是系统表.用户表和外部文件的集合,所有内容合并构成单个存储库.系统表包含有关数据库

OpenGL中的光照与材料

在OpenGL光照模型中,除非一个物体自己会发光,否则它将受到3种不同类型的光的照射,这3种不同类型的光分别是:环境光(ambient).散射光(diffuse)和镜面光(specular).作为现实世界中光照的抽象,这3种类型的光允许我们模拟和控制光照在物体表面上所产生的效果. 环境光(ambient) 环境光并不来自任何特定的方向.由环境光所照射的物体在所有方向的表面都是均匀照亮的.在OpenGL中,这种光照类型实际上模拟了环境中源自所有光源的散光. 散射光(diffuse) OpenGL中

分享毕业实习学子“ERP实施工程师”总结,都是肺腑之言——知识是体现人的价值,学校学习的每一个课程学科都是有意义

丁老师,这是我刚写完的实习报告,特地给您一份,可以让你了解一个信管毕业生的真实想法,希望对你在信管的教育上有帮助.---信管1102 刘贻富 上面是刚刚收到(20140427)的一封学生邮件,贻富不是我带的毕业设计学生,去年他和启志("启"右边有一个"放"字的右边,太难找拼音输入法没找到),看了实习报告后,很想立即和学生,特别是信管专业学生分享,但需要提前取得贻富的许可.从毕业班学生那里要来了电话,获得了应允. ERP实施工程师实习总结 贻富实习总结下载(word版

软件工程术语(上)

[A] B C D E F G H I J K L M N O P Q R S T U V W X Y Z abstract class 抽象类      提供一组子类共有行为的类,但它本身并不具有实例.抽象类表示一个概念,从中派生的类代表对这一概念的实施. Abstraction 抽象      对视图或模型的创建,其中忽略了不必要的细节,以便专注于一组特定的相关细节. access modifier存取权限      对类.方法或属性进行访问控制的关键字.Java 中的存取权限可以是公有.私