
python-yapgvb is a python binding for Graphviz, using Boost.python.
rate (100)
ball.pos = ball.pos + ball.velocity*dt
if ball.y < ball.radius:ball.velocity.y = -ball.velocity.y
else:ball.velocity.y = ball.velocity.y - 9.8*dt
Boost http://www.boost.org1. Install CGAL 3.3.1
sudo apt-get install libboost-python1.34.1
GMP http://gmplib.org/
sudo apt-get install python-gmpy # will also install libgmp3c2
MPFR http://www.mpfr.org/
(search in synaptic )
Traceback (most recent call last):
File "", line 1, in
File "CGAL/__init__.py", line 3, in
from Kernel import *
ImportError: CGAL/Kernel.so: undefined symbol: _ZN4CGAL8ROTATIONE
python setup.py buildand it works.
sudo python setup.py install
#setup.py---------------------------------------------------
from distutils.core import setup
from distutils.extension import Extension
import os
import os.path
import glob
# Author: Patrick Farrell
# patrick.farrell06@imperial.ac.uk
def MakeExtension(directory):
try:
os.stat(os.path.join("bindings", directory, "All_files_at_once.cpp"))
files = [os.path.join("bindings", directory, "All_files_at_once.cpp")]
except OSError:
files = glob.glob(os.path.join("bindings", directory, "*.cpp"))
ext = Extension(
"CGAL/%s" % directory,
files,
include_dirs=["../.."],
libraries=["CGAL", "boost_python", "gmp", "mpfr"],
define_macros=[('CGAL_DONT_USE_LAZY_KERNEL', None)]
)
return ext
directories = [directory for directory in os.listdir("bindings") if os.path.isdir(
os.path.join("bindings", directory))]
extensions = [MakeExtension(directory) for directory in directories]
setup(
name='CGAL-Python',
version='0.9',
description="Python bindings for the Computational Geometry Algorithms Libra
ry",
author = "CGAL team",
url = "http://cgal-python.gforge.inria.fr/",
packages=["CGAL"],
package_dir={"CGAL": "cgal_package/CGAL"},
ext_modules=extensions,
)
vert[i] = dt.insert(Point_2(random(),random()))# the finite vertices:
print v.point()# the finite edges
print e.vertex()# the finite faces
for i in range(3): print f.vertex(i).point()# compute the finite faces incident to Vertex = vert[0]
finites_faces.append(f1)for f in cir_faces:
if f == f1:break---------------------------------------------------------------
finites_faces.append(f)
pyste是boost.python自带的代码生成器,利用pyste可以很方便的为c++ 的 lib加一层python的shell。pyste依赖gccxml. dependent on boost
mapnik 地图渲染引擎,其渲染的地图效果堪和googlemaps媲美. 里面的底层绘制是使用Agg库,Agg是一个高效的2D图形引擎库. python-mapnik, dependent on boost
geomview http://www.geomview.org 画二维图最好用GnuPlot,而画三维图的时候最好用geomview
Psiloc miniGPS是一款网络定位工具,可以让你在GSM网络中确定你自己的位置!它的主要目标是根据你在网络中的不同位置执行设定的任务.它也可以显示你的手机所登录的网络单元的详细信息.你可以根据你已登录的单元和输入新的数据来创建自己的网络单元数据库.
miniGPS 一个通过GSM移动电话网络定位的软件。通过mimiGPS你可以将自己所在的不同位置保存下来,比如公司,家中等,然后可以用mimiGPS进行监视,一进入或离开特定的范围就可以做出改变情景模式、发送短消息、响铃和关机等不同的操作。
首先是 cell ,我们知道,由于地球本身的原因,不管发射塔建的有多高,总有其无线电波覆盖不到的地方,为了让网络覆盖到服务区的每一块区域,只有每隔一段距离,就建一 个发射塔,也称之为基站。把每个基站都连接起来,就构成了一个巨大的网络。在海上,只能用卫星来覆盖了。一个城市,从规模的大小,可以有几十甚至几百个基 站,这款软件就是利用基站的位置来进行手机使用者的定位的。 Cell 的含义就是基站的意思,每一个基站都有一个 id ,也就是标示符,是唯一的。上面的 cell id 为 30211 。 Signal 是信号,其用数量的方法描述了信号的强弱, 100% 就是我们平时说的满格信号。 Area id 是区域标示符,也是唯一的, Area 与 cell 的关系是:一个 Area 可以有多个 cell ,就像一个鱼缸有多条鱼一样,一个 Area 需要不仅一个 cell 来覆盖。
Another interesting software:
TrackMe* GPS/CellID Tracking tool for Google Earth & Google Maps
http://luisespinosa.com/trackme_eng.html
http://forum.xda-developers.com/showthread.php?t=340667
This script is to make a marker when you click the map. The idea is at first to obtain lat/lon parameters, then draw a marker overlay on the map.
GEvent.addListener(map, “click”,
function(marker, point) {
map.addOverlay(new createMarker(point));
}
);
function createMarker(point) {
var marker = new GMarker(point);
GEvent.addListener( marker, “click”,
function() {
//show the longitude
document.getElementById(”message1″).innerHTML = point.lat();
//show the latitude
document.getElementById(”message2″).innerHTML = point.lng();
}
);
return marker;
}
方法1. 输入邮政地址
然后在上面的搜索条内直接输入想要找的城市名称如“100 Memorial Drive #2-1c, Cambridge, MA 02142”,然后点右边的search maps 就可以找到大概位置了,然后再点地图上右上角中间的satellite按钮,就可以看到城市的卫星地貌了。滚动鼠标可以缩放地图大小。界面上面是录入框, 可直接输入地名定位地图。地图左上角是工具按钮。上下左右四个方向键,中间按钮回到最后一次查找的结果。左侧下面是分辨率,点+即放大一级,点-即缩小一 级,也可以拉动中间的滚动条直接改变分辨率。
利用这个卫星地图,还可以反查经纬度。将目标位置拉至最大分辨率,并将其拉至中心位置,在右侧“Link to this page”处点击右键,选中复制快捷方式,在文本编辑工具,如记事本中粘贴,可以看到一个形如“http: //maps.google.com/maps?ll=22.283084,114.174417&spn=0.004796,0.007918& t=k&hl=en”这样的地址,其中参数ll,就是纬度与经度,可以按需要对获取的经纬度小数点后保留适当的位数。如果要与朋友分享某一特定目 标特定分辩率的图片,直接将上述地址发送给朋友即可。
方法2. 直接输入经纬度
for example: 在search maps搜索框内输入
42.362686, -71.087029
会指到cambridge的broadway。
或者将经纬度代入
http://maps.google.com/maps?ll=纬度,经度&spn=0.1,0.1&t=k&hl= en
Note: =(latitude north, longtitude west),经纬度都使用十进制。经度一度约是 85.276公里,纬度一度是110.94公里。不同区域最大的分辨率会有所不同。地图显示后,可用鼠标拖动地图以显示不同区域。
问:我的手机是否适合配置GPS,什么方案?
1.推荐使用蓝牙GPS方案。因为蓝牙GPS是主流GPS设备,通用性强,可以和笔记本、PDA、手机等具有蓝牙功能的设备配合使用。
2.只要你的手机具备蓝牙功能,同时是智能手机(比如nokia s60系统),你的手机就具备了使用蓝牙GPS实现导航功能的条件。
3.如果是车载导航使用,推荐同时选配PDA/手机两用车架。
4、GPS导航地图软件一般在200M以上,而且往往你喜欢装几款软件同时测试。如果你的手机存储卡不够用,可以选配一个大一些的容量的MMC卡、RS-MMC卡、SD卡、MINI SD卡。
注意,新卡,一般要用手机进行格式化。诺基亚手机在“附加功能”里的“储存卡”里选择格式化储存卡)对于大容量的卡,最好用读卡器读,速度比数据线快很多。
安装完软件后,手机需要和蓝牙gps进行连接
把充好电的蓝牙GPS接收机打开,然后调整手机用蓝牙搜索蓝牙GPS。方法:功能/连接功能/蓝牙/打开/搜寻/开始搜寻设备,当搜到蓝牙gps时,要求你输入通行码,一般是“0000”。默认连接就可以了。
二、s60系统第二版可以安装的软件:
1、ROUTE66
2、MapKing
3、Smartcomgps(可自制地图)
4、MapViewGPS-II(可自制地图)
5、Power Navigation2.02_简体中文汉化完全版for s60
软件安装
配置: 智能手机+蓝牙GPS模块+导航软件
如果有nokia蓝牙S60系统的手机,装个Route66软件+新加坡地图,去买个蓝牙GPS接收器就可以导航用了。或者用蓝牙 PPC,windows 系统的,装个mapking+新加坡地图+蓝牙GPS接收器也可以,或者现在有直接集成GPS芯片的PPC比如Asus A632等型号更方便。
将下载的SIS文件拷贝到手机中,进入手机的功能表》事物管理》文件管理中找到拷贝的文件安装即可,安装完成后在我的应用里面找到运行。
安装完成后将地图文件拷贝到储存卡的E:\system\apps\ROUTE66\maps里面就可以使用了。(目录可能隐藏)
买一个LD-3W蓝牙GPS,然后,为N73安装GPS导航软件,推Route66 Mobile7中国版(S60第三版专用),最新版本号是520。软件安装后,我们还要安装地图后,才可以使用。最新版配合R66使用的中国地图是 216M。安装好软件后,打开LD-3W的电源,长按2秒即可开启。然后在打开手机的蓝牙功能,搜索蓝牙设备,搜索到LD-3W后,和其进行配对,LD- 3W默认的蓝牙通行码是0000。配对后在手机上打开R66软件的界面,软件会自动搜索GPS设备,搜索到设备后,我们确认即可,这时我们的N73就和 LD-3W通过蓝牙连接成功了。这时LD-3W上中间的灯会闪烁蓝色的灯光。然后等待一下,LD-3W就会自动寻找天上的卫星来定位了,打开软件的视图 -“GPS信息”功能,可以看到GPS信息情况,可以看见卫星信号强度。然后打开软件的选项,选择”开始”,输入目的地,软件就会计算路程,规划路径。规 划完毕后,下面显示了当前时间,路径距离,这时就已经实现GPS定位导航了
(copy)
随着整个GPS市场的发展,导航产品在人们生活中的的应用范围越来越广。今天笔者就将一些和GPS相关的概念和常用术语做了一个汇总。
智能手机GPS
智能手机GPS是手机、GPS、PDA掌上计算机三合一产品,可通过运营商网络进行实时数据更新。最快可在5秒内实现卫星定位,这是目前最快的定位 速度。在接收不到卫星信号,但有移动信号的情况下,该类手机会迅速转换搜索模式,链接电信运营商的后台,实现定位。只要能接收到手机信号,就可进行卫星定 位。而且此类产品信号稳定性较好。
最后我们在来看看在使用GPS导航产品过程中能接触到的一些相关术语及概念,对它们有一个较深的理解和认识会更有助于大家对导航产品的认识和把握。
1.坐标
大部分GPS是以经/纬度(Lat/Long)的方式显示坐标,另外还有一些也可用Universal Transverse Mercator等坐标系统来显示,具体到消费者使用的产品,则取决产品本身的坐标系统。坐标的精度在Selective Availability打开时,GPS的水平精度在100-50米之间,具体数据由接受到卫星信号的多少和强弱而定,若根据GPS的指示则应该在大约一 个足球场大小的面积内发现用户所指示的目标。
2.航点
GPS 产品内存中保存的一个点的坐标值。航点是GPS数据核心,它是构成“航线”的基矗标记航点是GPS主要功能之一,但是用户也可以从地图上读出一个地点的坐 标,手工或通过计算器接口输入GPS,使之成为一个航点。一个航点可以将来用于GOTO功能的目标,也可以选进一条航线Route,作为一个支点。一般 GPS能记录500个或以上的航点。
3.航线
航线是GPS内存中存储的一组数据,包括一个起点和一个终点的坐标,还可以包括若干中间点的坐标,每两个坐标点之间的线段叫一条"腿"。常见GPS 能存储 20条线路,每条线路30条"腿"。各坐标点可以从现有航点中选择,或是手工/计算器输入数值,输入的路点同时做为一个航点保存。实际上一条航线的所有点 都是对某个航点的引用,比如在航点菜单下改变一个航点的名字或坐标,如果某条航线使用了它,用户会发现这条航线也发生了同样的变化。可以有一条航线是"活 跃"的。“活跃”航线的路点是导向功能的目标。
4.前进方向
一般的GPS没有指北针的功能,静止不动时它是不知道方向的。但是一旦动了起来,它就能知道自己的运动方向。GPS每隔一秒更新一次当前地点信息, 每一点的坐标和上一点的坐标一一比较,就可以知道前进的方向,但是这里请大家注意这并不是GPS头指的方向,因为它是不知道自己的脑袋和运动路线是成多少 度角的。不同GPS关于前进方向的算法是不同的,基本上是最近若干秒的前进方向,所以除非哟凝固用户已经走了一段并仍然在走直线,否则前进方向是不准确 的,尤其是在拐弯的时候用户会看到通过GPD显示出来的数值在不停的变化。方向是以多少度显示的,这个度数是手表表盘朝上,12点指向北方,顺时针转的角 度。有很多 GPS还可以用指向罗盘和标尺的方式来显示这个角度。一般同时还显示前进平均速度,也是根据最近一段的位移和时间计算的。
5.导向
导向功能在以下条件下起作用︰
A.以设定"走向"目标。"走向"目标的设定可以按"走向"键,然后从列表中选择一个航点。以后"导向"功能将导向此航点。
B.目前有活跃航线。活跃航线一般在设置->航线菜单下设定。如果目前有活动航线,那么"导向"的点是航线中第一个路点,每到达一个路点后,自动指到下一个路点。
在“导向”页面上部都会标有当前导向路点名称。它是根据当前位置,计算出导向目标对你的方向角,以与"前进方向"相同的角度值显示。同时显示离目标 的距离等信息。些GPS把前进方向和导向功能结合起来,只要用GPS的头指向前进方向,就会有一个指针箭头指向前进方向和目标方向的偏角,跟着这个箭头就 能找到目标。
6.日出日落时间
大多数GPS能够显示当地的日出、日落时间,这对于用户计划出发/宿营时间时是很有用的。这个时间是GPS根据当地经度和日期计算得到的,是指平原 地区的日出、日落时间,在山区因为有山脊遮挡,日照时间根据情况要早晚各少半个小时以上。GPS的时间是从卫星信号得到的格林尼制时间,在设置菜单里可以 设置本地的时间偏移,对中国来说,一般情况下都应设+8小时,而且这个数值只与时间的显示有关。
7.航迹
GPS 每秒更新一次坐标信息,所以可以记载自己的运动轨迹。一般GPS能记录1024个以上足迹点,在一个专用页面上,以可调比例尺显示移动轨迹。足迹点的采样 有自动和定时两种方式自动采样由GPS自动决定足迹点的采样方式,一般是只记录方向转折点,但是长距离直线行走时GPS是不记点;用户可以定时采样功能中 提前规定采样时间间隔。在足迹线页面上可以清楚地看到自己足迹的水平投影。
“足迹”在线的点都没有名字,不能单独引用,查看其坐标,主要用来画路线图和“回溯”功能。很多GPS有一种叫做“回溯”(Trace back)的功能,使用此功能时,它会把航迹转化为一条“路线”(ROUTE),路点的选择是由GPS内部程序完成的一般是选用航迹上大的转折点。
同时,把此路线激活为活动路线,用户即可按导向功能原路返回。要注意的是回溯功能一般会把回溯路线放进某一默认路线(比如route0)中,看 GPS的说明书,使用前要先检查此线路是否已有数据,若有,要先用拷贝功能复制到另一条空线路中去,以免覆盖。回溯路线上的各路点用系统默认的临时名字 如"T001" 之类,有的GPS定第二条回溯路线时会重用这些名字,这时即使用户已经把旧的路线做了拷贝,由于路点引用的名字被重用了,所以路线也会改变,不是原来那条 回溯路线了。
GPS产品的开机定位可分为冷启动、温启动和热启动三种情况︰
冷启动︰以下几种情况开机均属冷启动。初次使用时;电池耗尽导致星历信息丢失时;关机状态下将接收机移动1000公里以上距离。
温启动︰距离上次定位的时间超过两个小时的启动。
热启动︰距离上次定位的时间小于两个小时的启动。
s60: 为symbian os 的手机操作系统.这种可编程的手机通常称智能手机,如我的手机nokia 7610。
PyS60:Python for S60
手机上安装 PyS60
下载点 http://sourceforge.net/projects/pys60/%E4%B8%8B%E8%BD%BD
* PythonForS60_1_3_20_2ndEd.SIS - PyS60
* PythonScriptShell_1_3_20_2ndEd.SIS - Python shell 否则没有运行界面
开发环境的选取
方法1。在windows里面写python程序。保存,手机拔卡,用读卡器把程序放到卡里,手机插卡,然后运行python for s60 然后运行脚本。调试起来比较麻烦。也可用bluetooth console传数据。
Q:Symbian python程序是否可以制作成独立软件包(sis)?
A:可以,使用Symbian Python SDK里面带的py2sis.exe.
用法:py2sis.exe python程序名.py sis文件名称.sis --uid=0x12345678
例子:
E:\Nokia\Tools\Python_for_Series_60\py2sis>py2sis.exe sms.py smskiki.sis --uid=0x100039Cf注意:目标文件名一定要添加sis后缀,不然会出现error: invalid destination file
方法2。安装nokia的sdk,这样就构造了一个模拟器,然后从模拟器里面安装python。
PythonForS60_1_3_20_SDK_2ndEd.SIS - SDK 开发环境,可不装,用 wxpython+pys60 emulation开发
方法3。wxPython 模拟器 (推荐)
和nokia sdk模拟器不同的是,PyS60 emulation library利用wxPython gtk只写了主要两个图形包例如appuifw,e32。appuifw继承了wx的图形类。
software:
* python2.4 当然需要 (from http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi)
* PyS60 emulation library (4 files: "appuifw.py, e32.py, graphics.py, key_codes.py")
* wxPython (for win32 or linux, www.wxpython.org )
windows 下安装:
安装办法:先去下载python 2.4,然后再去下载wxPython。然后下这个模拟器,把里面的四个py文件放到C:\Python2.4\Lib下。(具体放到哪里得看你的Python的安装目录了)
Ubuntu 下安装:
- wxPython
(copied from http://wxpython.org/download.php#binaries)
Add the following to your /etc/apt/sources.list file:
# wxPython APT repository at wxcommunity.com
deb http://wxpython.wxcommunity.com/apt/ubuntu/dapper /
deb-src http://wxpython.wxcommunity.com/apt/ubuntu/dapper /
After the repository info has been added to /etc/apt/sources.list you can fetch and install the packages using one of the GUI package manager tools such as Synaptic or Adept, or by running the following commands from a terminal window:
sudo apt-get update
sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n
- pys60 compact library
put 4 files to PYTHONPATH directory, which is normally /usr/lib/python2.x. Show PYTHONPATH in "import sys, print sys.path".
手机与电脑之间的文件传输、控制
方法1:蓝牙控制台
能够让你通过个人电脑连接你手机上的Python命令行并执行命令。
方法2。MIT PUTools: 使用bluetooth 在手机和pc之间传数据,实现同步。可以在PC上编程序,然后整个传到手机上去run over bluetooth。网址是http://people.csail.mit.edu/kapu/symbian/python.html
一个显示输入对话框的程序:
import appuifw
import e32
def bexit():
app_lock.signal()
def addtext():
t = appuifw.query(u'Input text:','text')
r.add(unicode(t))
r = appuifw.Text()
r.set(u'info:\n')
appuifw.app.screen = 'normal'
appuifw.app.menu = [(u'Add',addtext),(u'Exit',bexit)]
appuifw.app.body = r
appuifw.app.exit_key_handler = bexit
app_lock = e32.Ao_lock()
app_lock.wait()
保存成1.py然后直接用python执行。。。
sample2: take photo and save
import camera
import graphics
img=camera.take_photo()
img.save("test.jpg")
Note: 如果有gps receiver with bluetooth, 可以在拍照的同时记录下照片经纬度
LAMP套件就是Linux+Apache+Mysql+PHP这四款软件,组成了一个可以使网站运行的套装工具软件。其中P也可代指 PHP/Python/Perl。如果只用后台数据处理,可以考虑用python编写。当然python 也有网页功能。
版本:
Apache 2
Mysql 5.0
Php 5.1
1.搭建基本的web环境,我使用的是apache2 + php5 + mysql 5.0
sudo apt-get install apache2 mysql-server php5-mysql
2.(optional)解决用户登录时图形验证码无法显示的问题
apt-get install php5-gd
3. 安装mysql的web管理软件phpmyadmin
apt-get install phpmyadmin
4. 基于浏览器的图形化管理工具软件 webwin (http://www.webwin.com)
MySQL更改root密码
刚安装mysql后可执行 mysql -u root -p 加上密码。
方法1:
shell>mysqladmin -u root password new_password
方法2:
mysql> SET PASSWORD FOR root=PASSWORD(’new_password’);
方法3:使用 mysqladmin命令
shell> mysql -u root
mysql> UPDATE user SET Password=PASSWORD(’new_password’) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;
sudo apt-get install python-mysqldb
MySQLdb is an interface for connecting to a MySQL database server from Python. It implements the Python Database API v2.0 (http://www.python.org/dev/peps/pep-0249/), and is built on top of the MySQL C API. Can discuss using MySQL and Python in forum (http://forums.mysql.com/list.php?50).
一个Python访问mysql的 sample script
1. 建立一个 database 和 一个table:
mysql ->
create database my_db;
use my_db;
create table test(
id int,
name varchar(50)
);
insert into test values(1,”hello”);
insert into test values(2,”world”);
2.Python代码 sample.py
import MySQLdb
class Eb_db:
def __init__(self):
try:
connection = MySQLdb.connect(host=”localhost”, user=”root”, passwd=”123456″, db=”my_db” )
cursor = connection.cursor()
cursor.execute( “SELECT * FROM test ” )
except MySQLdb.OperationalError, message:
errorMessage = “Error %d:\n%s” % (message[ 0 ], message[ 1 ] […]
Another script:
#!/usr/bin/env python
# -*-coding:UTF-8-*-#这一句告诉python用UTF-8编码
"""
***** This is a MySQL test *****
select:
conn=Connection()
conn.select_db('test')
cur=conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1=cur.fetchone()
row1[0]
row1[1]
row1[2]
insert:
cur.execute('insert into user (name,passwd) values(\'benyur\',\'12345\')')
cur.insert_id()
update:
cur.execute('update user set passwd=\'123456\' where name=\'benyur\'')
delete:
cur.execute('delete from user where id=2')
**********************************
"""
from MySQLdb import *
def conn():
conn=Connection()
conn.select_db('test')
cur=conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1=cur.fetchone()
row1[0]
row1[1]
row1[2]
def usage():
print __doc__
if __name__=='__main__':
usage()
3. 使用
import MySQLdb
3.1. 连接
conn = MySQLdb.Connection(host, user, password, dbname)
3.2. 选择数据库
conn.select_db(’database name’)
3.3. 获得cursor
cur = conn.cursor()
3.4. cursor位置设定
cur.scroll(int, mode)
mode可为相对位置或者绝对位置,分别为relative和absolute。
3.5. select
cur.execute(‘select clause’)
例如
cur.execute(‘select * from mytable’)
row = cur.fetchall()
或者:
row1 = cur.fetchone()
3.6. insert
cur.execute(‘inset clause’)
例如
cur.execute(‘insert into table (row1, row2) values (\’111\’, \’222\’)’)
conn.commit()
3.7. update
cur.execute(‘update clause’)
例如
cur.execute(“update table set row1 = ‘’ where row2 = ‘row2 ‘ ”)
conn.commit()
3.8. delete
cur.execute(‘delete clause’)
例如
cur.execute(“delete from table where row1 = ‘row1’ ”)
conn.commit()
To upgrade bbPress from a previous version takes just a few minutes.
First, you should always back up your files and your database in case something goes wrong.
Second, keep the following files and directories.
1. .htaccess
2. config.php
3. my-plugins/ (if you have it)
4. my-templates/ (if you have it)
and delete everything else.
Third, upload the newest version of bbPress to your server.
Fourth, log in and visit your bbPress’ admin panels. If you see an upgrade link instead of the normal screens, click it. If you don’t see an upgrade link (it would have been really obvious), continue to step five.
Fifth, sit back and relax; you’re done!
bbpress theme 主题:
mkdir my-tempates
在 ./my-templates/下拷贝了两个themes,但激活的时候有问题:告诉这是 themes for wordpress 。
需要修改才行!
== Installation ==
download "allow-images.php" from bbpress.org
Add the allow-images.php file to bbPress/my-plugins/ directory.
插入图片的 HTML 代码是:
<img alt="csail-mit" src="http://www.csail.mit.edu/images/csaillogo150.gif"
/>
所以现在也支持img 这个HTML 标签
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysql> create database gsmloc;
mysql> use gsmloc ;
mysql> source gsmloc.sql ;
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345
(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作 (localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据 库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
(下篇)
在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
操作技巧
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2、你可以使用光标上下键调出以前的命令。
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql;
show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表结束
//以下为插入字段
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
注:在建表中
(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key
(2)将NAME设为长度为10的字符字段
(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别 呢,只有等以后的文章再说了。
(4)将YEAR设为日期字段。
如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:
mysql -uroot -p密码 <>
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile "文件名" into table 表名;
注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打表所在的库 。
mysqldump --opt school>school.bbb
注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
classmethod:类方法
staticmethod:静态方法
在python中,静态方法和类方法都是可以通过类对象和类对象实例访问。但是区别是:
@staticmethod
def staticm():
print 'static'
def normalm(self):
print 'nomarl',self
@classmethod
def classm(cls):
print 'class',cls
>>> a1=a()
>>> a1.normalm()
nomarl <__main__.a instance at 0x84dddec>
>>> a1.staticm()
static
>>> a1.classm()
class __main__.a
>>> type(a)
<type 'classobj'>
>>> type(a1)
<type 'instance'>
class A(object):
@classmethod
def cm(cls):
print '类方法cm(cls)调用者:', cls.__name__
@staticmethod
def sm():
print '静态方法sm()被调用'
class B(A):
pass
A.cm()
B.cm()
A.sm()
B.sm()
输出:
类方法cm(cls)调用者: A
类方法cm(cls)调用者: B
静态方法sm()被调用
静态方法sm()被调用
据我所知有三种:
1。 用 glade产生图形界面, 即 python + gtk + glade. 此法生成的界面最美观.
import pygtk, gtk, gtk.glade
一个只用 gtk, 没用glade工具的例子
import pygtk
import gtk
class HelloWorld:
def hello(self,widget,data=None):
print "Hello World!"
def delete_event(self,widget,data=None):
print "delete_event"
return gtk.FALSE
def destroy(self,widget,data=None):
gtk.main_quit()
def __init__(self):
self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event",self.delete_event)
self.window.connect("destroy",self.destroy)
self.window.set_border_width(10)
self.button=gtk.Button("Hello World!") self.button.connect("clicked",self.hello,None)
self.button.connect_object("clicked",gtk.Widget.destroy,self.window)
self.window.add(self.button)
self.button.show()
self.window.show()
def main(self):
gtk.main()
if __ name__=="__main__":
hello=HelloWorld()
hello.main()
2。 用 Tkinter 即 gui based on Tcl/tk .此绘图法最为简单,可能需要安装 python-tk.参考 python_notes.pdf -> Tkinter programming。
example:
import Tkinter
#创建一个窗体:
wnd = Tk()
#加一个按钮:
btn = Button(master=wnd, text="Exit",command=wnd.quit)
btn.pack() #pack之后才显示
#或者通常把 btn 加到 wnd 下面:
wnd.btn = Button(master=wnd, text="Exit", command=wnd.quit)
wnd.btn.pack()
#最后, 让这个窗口跑起来:
wnd.mainloop()
3. 用 wxPython。一个例子是手机上的图形界面。参考python for S60 doc.pdf -> wxpthon 模块部分,或 www.wxpython.org .
import appuifw
import e32
def bexit():
app_lock.signal()
def addtext() :
t = appuifw.query(u'Input text:', 'text')
r.add(unicode(t))
r = appuifw.Text()
r.set(u'info:\n')
appuifw.app.screen = 'normal'
appuifw.app.menu = [(u'Add', addtext), (u'Exit', bexit)]
appuifw.app.body = r
appuifw.app.exit_key_handler = bexit
app_lock = e32.Ao_lock()
app_lock.wait()
canvas = Canvas(width=300, height=300, bg='white')
canvas.pack(expand=YES, fill=BOTH)
canvas.create_oval(10, 10, 200, 200, width=2, fill='blue')
mainloop()
一种是函数式
一种是用类来包装的线程对象。
1、调用thread模块中的start_new_thread()函数来产生新的线程,请看代码:
### thread_example.py
import time
import thread
def timer(no,interval): #自己写的线程函数
while True:
print 'Thread :(%d) Time:%s'%(no,time.ctime())
time.sleep(interval)
def test():
thread.start_new_thread(timer,(1,1)) #使用thread.start_new_thread()来产生2个新的线程
thread.start_new_thread(timer,(2,3))
if __name__=='__main__':
test()
这个是thread.start_new_thread(function,args[,kwargs]) 函数原型,其中function参数是你将要调用的线程函数;args是讲传递给你的线程函数的参数,他必须是个tuple类型;而kwargs是可选的参数。
线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception,达到退出线程的目的。
2、通过调用threading模块继承threading.Thread类来包装一个线程对象。请看代码
### threading_example.py
import threading
import time
class timer(threading.Thread): #我的timer类继承自threading.Thread类
def __init__(self,no,interval):
threading.Thread.__init__(self) #在我重写__init__方法的时候要记得调用基类的__init__方法
self.no=no
self.interval=interval
def run(self): #重写run()方法,把自己的线程函数的代码放到这里
while True:
print 'Thread Object (%d), Time:%s'%(self.no,time.ctime())
time.sleep(self.interval)
def test():
threadone=timer(1,1) #产生2个线程对象
threadtwo=timer(2,3)
threadone.start()#通过调用线程对象的.start()方法来激活线程
threadtwo.start()
if __name__=='__main__':
test()
用 python+Django+apache+mysql 开发网站,different from LAMP which mainly uses PHP
也许大伙都听说过 Ruby on Rails? 一个以 ruby 写的 RAD framework; django 与它大约同期诞生, 两者有着相近的目标, 各自的哲学. (有意思的是: RoR 和 django 的作者之前都是 php 开发方面的高手!)
django 现在官方站点上发布的版本是 0.91, 但是这不过这只是对外的一个静态的小版本, 而其 svn 中每天都有更新, 如果要学习 django 的话, 还是建议从它的 svn 中直接取出最新的版本. 尤其是 magic-removal 分支 - 这将会成为 django 下一个版本: 0.92.
magic-removal 是 django 开发人员们目前正在全力耕作的一个分支 (branch), 最大的目标就是将 django 多年遗留下来的一些疙疙瘩瘩的地方做一次 "大扫除", 以期提升 django 这一开发框架的简洁性与易用性.
如何安装
http://www.djangoproject.com/documentation/install/
简单说,下载version 0.96,解压,然后执行
sudo python setup.py install
如果用于开发,最好之前安装mod_python, which embeds Python within Apache and loads Python code into memory when the server starts. Code stays in memory throughout the life of an Apache process, which leads to significant performance gains over other server arrangements. Make sure you have Apache installed, with the mod_python module activated. Django requires Apache 2.x and mod_python 3.x.
但是据说mod_python和 mod_php冲突,所以现在还在犹豫是否安装Django。本机上原来装有bbPress based on LAMP(php).
Django 中文文档目的: 为了能在网页中嵌入python代码
环境: Ubuntu, apache2, python2.5, 并且已安装 apache2-php5 (安装完后php依旧工作,哈哈)
步骤:
首先安装 mod_python .
sudo apt-get install libapache2-mod-python, 或用synaptic装亦可
(按mod_python的说明步骤要安装apxs,但是apache2找不到apxs,因为这种方式已过时了。apache将所有的载入的包都放在
/etc/apache2/mods-enabled 即可加载! 注: apache2的 ServerRoot = /etc/apache2 )
然后检查是否已在 mods-enabled目录下, 如有,则不用执行下面命令:
cd /etc/apache2/mods-enabled/
sudo ln -s ../mods-available/mod_python.load mod_python.load
接着,编辑:
cd /etc/apache2/sites-available/
sudo gedit default
On line 10 you should have:
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
加入新行后变为:
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
(注: 该文件被链接到 /etc/apache2/sites-enabled/000-default 。)
现在重启 apache server:
sudo /etc/init.d/apache2 restart
测试:
sudo gedit /var/www/test.py
文件内容如下:
def index(req):
return "Test successful";
访问 http://localhost/test.py 应该可以看到 "Test successful" in plain text。
一个显示网页的python程序
import sys
全局变量
这里谈全局变量呢,倒不是说Python和c的全局变量概念不同,他们的概念是相同的。只是在使用机制上,是有一些差异的。举个例子:
– module.py –
globalvar = 1
def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.
def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable
在 func这个函数中,globalvar是只读的。如果你使用了globalvar = xxx这种赋值语句,Python会重新创造一个新的本地对象并将新值赋给它,原来的对象值不变。而在func2函数中,由于我们事先申明了 globalvar是global的,那么此时的更改就直接在全局变量上生效。
很明显这和c中的使用机制是不一样的,在c中,我们只要在函数外的全局区域申明了变量,就可以在函数中直接对其操作,不用还申明一个global。
Python中的时间操作还是比较方便的,有专门的time模块提供多种接口形式。其中常用的两种操作数据格 式就是滴答和时间元组,关于这两个奇怪的名字,我也不便解释,总之在一本书上看着这么写,也就这么用,确实很难听。滴答是从1970年开始到现在的秒数, 在Python2.4.3中是一个浮点数,小数部分为更精密的部分,小于1秒的精细时间值。时间元组是一个具有9个成员的元组,依次为:年、月、日、小 时、分钟、秒、星期(0-6,0为周一)、一年中的哪一天(1-366,古罗马历)、Daylight savings(-1,0,1,我也不知是干什么用的)。
所以可以用如下方法提取当天的当时时间:
a,a,a,hour,minute,second,a,a,a=time.localtime(time.time())
这里的hour、minute、second分别是当时的时、分、秒,也是比较常用的参数。另外就是关于求时间差,如果使用 time.localtime()测定时间差,那么滴答值为0时的中国标准时间是1970年1月1日8:00,时间差无从谈起,所以对于时间差应该使用 time.gmtime()转换为TimeTuple再解包为各个时间参量。比如如下获得时间差:
a,a,a,hour,minute,second,a,a,a=time.gmtime(t1-t2)
通常用 listObj.sort()排序,如果需要定义自己的排序方式,则:
1. 定义一个排序函数
def dictionary_datetime_sorter( d1, d2):
if d1
else: return 0
...
2. 将此函数作为sort()的input 对 list 排序。调用格式:
datetimeList.sort(dictionary_datetime_sorter)
语言包从该处下载:
http://www.sourceinsight.com/public/languages/
To import a custom language file into Source Insight:
1. Select Options > Preferences. Click the Languages tab.
2. Click the Import button. Select and load the custom language file (.CLF)
3. You should now see the new language in the list of languages.
4. Click the Document Types button to open the Document Options dialog box.
5. If you don't have a document type already created for the type of language file, you will need to create one now. If you already have a document type created, select it in the list and go to step 7.
6. Click the Add Type button to create a new document type. Give it a name that describes the type of file. For example, "Ant File". Click OK and then fill in the file filter text box with a wildcard. For example, "*.ant".
7. In the Parsing section of the Document Options dialog box, select the newly imported language in the language drop-down list. This is what associates your document type with the custom language.
8. Click the Close button to close Document Options. Then click OK to close the Preferences dialog box.
\begin{figure} \centering
\subfigure[figure 1 title.] { \label{fig:a}
\includegraphics[width=0.8\columnwidth]{fig1.eps}
}
\subfigure[figure 2 title.] { \label{fig:b}
\includegraphics[width=0.8\columnwidth]{fig2.eps}
}
\caption{ general title. }
\label{fig}
\end{figure}
1. NumPy 1.04 : numpy is a new version of numarray. numpy,已替代Numeric.
http://numpy.scipy.orgsudo apt-get install python-numpy
import numpy
2. SciPy library depends on NumPy
install scipy: (only for optimized package using LPAS, since numpy contains it.)
www.scipy.org
然后,安装 gnuplot 或者 pylab
安装PyLab: plotting with the pylab module from matplotlib, depending on numpy. free from: http://matplotlib.sourceforge.net/
install:
sudo apt-get install python-matplotlib
import math
import pylab # a new name of matplotlib
安装python-gnuplot module
(by Michael haggerty http://gnuplot-py.sourceforge.net/)sudo apt-get install python-gnuplot
参考书 python scripting for computational science.pdf
all python module files are located under ./build/lib/Gnuplot
demo.py
Gnuplot.py
PlotItems.py
Interface intrdocution:
PlotItems.Data()
if want to redraw, can use replot()
gp.plot(p1)
gp.replot(p2)
or add all into one itemlist, then plot()
gp._add_to_queue( (p1,p2,p3) )
gp.replot()
一些 tricks:
如果要在一个page上画多副图,可以
======================================
set multiplot ;会抹掉前面的图
plot ...
set parametric ;参数画图
plot [0:2*pi] cos(t),sin(t)
unset parametric ;恢复
plot ... ;标题会和第一条标题重叠
==========
如果不用set multiplot,可以 plot, replot,replot...
在 gnuplot> 模式下,
plot 命令会冲掉前面的图,而
replot 会在原图上画,并且顺序排列图标志文字
在multiplot>模式下,
plot和replot都不会冲掉前面的图,但
plot 的标志文字会和前面的覆盖
replot的标志文字不会和前面的覆盖,顺序排列
但是参数画图不能用replot, 后面也不能接其他replot。
例如:
set parametric
plot [0:2*pi] cos(t), sin(t) notitle
unset parametric
所以如果目的是多图重叠绘制,并且要用到参数绘图,建议方案是:
* 使用multiplot模式,
* 非参数绘图用 replot
* 参数绘图用 set, plot, unset。缺点是参数绘图的图标文字会重叠,但设成title="" 也可接受。
279 unset multiplot # or else cannot set term to ps
280 set term postscript
281 set output "sample.ps"
282 set multiplot
283 plot x # no previous plot
284 plot x+2
285 set parametric
286 plot [0:2*pi] cos(t), sin(t) notitle
287 unset parametric
288 plot x+3
289 history
在文件中置入 gnuplot 绘制的图形
目前支持格式 postscript(*.ps), enhanced postscript(*.eps), x11(screen)
set terminal postscript eps color lw 1 “Helvetica” 20
如果想让线条粗些,可以修改 lw 后面的 1
然后再加上一句这个来设置输出文件:
set output ‘sample.eps’
所有终端在能力上都不相同。其中的一些(如 LaTeX)可能不支持文本的旋转,所以如果您像我们前面那样设置 ylabel,在不同的终端中可能显示不一样。换句话说,您可以在 LaTeX 的特定终端中使用 LaTex 命令。例如, set ylabel "$sin(\\theta)$"(注意我们使用两个反斜杠产生一个 LaTex 所需的反斜杠 —— gnuplot 在将双引号中所括的字符串传送到终端驱动程序之前,先对其进行反斜杠处理)。现在,您可以使用 \input{output.tex} 将输出文件包含在 LaTeX 文件中。要在 PostScript 终端中获得相同的结果,使用相应的 PostScript 命令: {/Symbol q} 。在 enhanced PostScript 和 LaTeX 中,您可以使用表示法 x^{superscript}和 x_{subscript} 得到上标文字。还要注意缩写的终端和输出命令:
eps 驱动程序的能力set term post enh
# enhanced PostScript, essentially PostScript
# with bounding boxes
set out 'gplt.eps'
set xlabel '{/Symbol q_1}
set ylabel 'sin^2({/Symbol q_1})'
plot sin(x)**2
默认情况下,gnuplot 对 x 轴和 y 轴都使用比例系数 1,但是它对控制图形的长宽比(y 轴长度与 x 轴长度的比率)不起作用。终端驱动程序使用终端的默认长宽比。比例系数、长宽比或者两者都可以使用 set size 命令指定,例如:
# square is synonymous to an aspect ratio of 1;
# scale y-axis by 2, retain x-axis size
set size ratio square 1,2
gnuplot 使用给定的长宽比能否成功绘制图可能受到终端能力的限制。 set size 也是与 multiplot 命令一起使用才有用,multiplot 命令用于在同一输出屏幕或文件中生成多个图。
如果 sudo apt-get install gnuplot 不行则从 www.gnuplot.info 下载 版本 4。2。0
然后解压缩,在root权限下执行
./configure
(may prompt to install "texinfo" package in advance)
make
make check # test
make install #install
注意: 如果 ./configure 失败,需要安装基本编程环境:
sudo apt-get install build-essential # for gcc 编译
sudo apt-get install xorg-dev #for "set term x11" 如果设置 x11终端失败
安装完毕后,在命令行下运行:
$ gnuplot
就进入了gnuplot
系统出现:
gnuplot>
画个最简单的吧,sin(x)
在提示符下面输入:
gnuplot> plot [-3.14:3.14] sin(x)
一般情况下使用gnuplot都是科学绘图,因此很多都是放在文章里面。一般优秀的科技文献都是用latex来编写的,所以gnuplot提供了直 接输出 tex文件的功能,只需要把output设置为latex就可以了。下面来看一个例子,就把上面的正弦曲线插入到你的文章中。在命令行下输入:
gnuplot> set terminal latex
set output "sin.tex"
plot [-3.14:3.14] sin(x)
那么程序自动生成了一个tex文件,其包含一系列代码,都是绘图用的,可以用写字板打开,里面都是一些指令,你完全可以忽略掉。你可以把这个文件直接插入你的文章中,例如
\begin{figure}
\begin{center}
\input{sin.tex}
\end{center}
\end{figure}
奇怪我安装的gnuplot不支持png, jpeg terminals,只有 ps图像格式。没办法,只好安装了imagemagick好使用convert命令
sudo apt-get install imagemagick
convert sample.ps sample.png
convert -rotate 90 sample.ps sample.png #图像旋转90度
\usepackage{graphicx}.编译命令:
\includegraphics{figure} %% no extension.
latex filename.tex
dvips filename.dvi
dvipdfm filename.dvi
dvipdfmx filename.dvi (ubuntu, kile下要sudo apt-get install dvipdfmx)
dvi2pdf filename.dvi
pdflatex filename.tex
转换图片:epstopdf figure.eps
convert figure.ps figure.png # keep both files
jpeg2ps figure.jpeg
注:
PostScript打印输出默认的文件格式是prn,其实就是ps文件,把后缀该为ps即可。这个ps文件还不是标准的EPS格式,它的图形周围还有很多空白。所以还需要通过PS2EPS,输出成标准的EPS图形。如果你在文章中插入EPS图形时出现大片空白,或者文字跳动等怪异情况,则就需要考虑重新计算图形边界。
如果需要知道图片尺寸 bounding box,以下两方法可以告诉LaTeX:
格式: \includegraphics[parameters]{filename}
where parameters is a comma-separated list of any of the following:
bb=llx lly urx ury (bounding box),
width=h_length, height=v_length, angle=angle, scale=factor, clip=true/false, draft=true/false.
1. \includegraphics[bb=lbx lby rux ruy]{xxxx.yyy} 其中(lbx,lby), (rux,ruy)分别是图片左下角和右上角的坐标。
2. 用ebb xxxx.yyy产生xxxx.bb文件。LaTeX编译的时候会自动去寻找xxxx.bb文件。
由照片转成的EPS图片仍然是点阵式,放大后仍会失真。
dvi 可能预览不了某些图片,但生成ps 或pdf后可看。
latex+.bb 排版结果和pdflatex排版结果可能很不一样。
批量转换shell script:
#!/bin/sh
echo "pdflatex: *.png -> *.pdf"
for file in *.png
do
echo $file
convert $file `basename $file .png`.pdf
done
echo "pdflatex: *.jpg -> *.jpg"
echo "latex: *.png -> *.eps"
for file in *.png
do
echo $file
convert $file `basename $file .png`.eps
done
echo "latex: *.jpg -> *.eps"
for file in *.jpg
do
echo $file
convert $file `basename $file .jpg`.eps
done
\begin{algorithm}\end{document}
%% \SetLine
\KwIn{$r_i$ , $Backgrd(T_i)$=${T_1,T_2,\ldots,T_n}$ and similarity threshold $\theta_r$}
\KwOut{$con(r_i)$}
$con(r_i)= \Phi$\;
\For{$j=1;j \le n;j \ne i$}
{
float $maxSim=0$\;
$r^{maxSim}=null$\;
\While{not end of $T_j$}
{
compute Jaro($r_i,r_m$)($r_m \in T_j$)\;
\If{$(Jaro(r_i,r_m) \ge \theta _r) \wedge ((Jaro(r_i,r_m) \ge r^{maxSim}) $}
{
replace $r^maxSim$ with $r_m$\;
}
}
$con(r_i)=con(r_i) \cup {r^{maxSim}}$\;
}
return $con(r_i)$\;
\caption{identifyRowContext}
\label{algo:1}
\end{algorithm}
可以表示为: \begin{eqnarray*} \cos 2\theta & = & \cos^2 \theta - \sin^2 \theta \\ & = & 2 \cos^2 \theta - 1. \end{eqnarray*}
其中&是对其点,表示在此对齐。
*使latex不自动显示序号,如果想让latex自动标上序号,则把*去掉
矩阵表示为: The \emph{characteristic polynomial} $\chi(\lambda)$ of the $3 \times 3$~matrix \[ \left( \begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i \end{array} \right)\] is given by the formula \[ \chi(\lambda) = \left| \begin{array}{ccc} \lambda - a & -b & -c \\ -d & \lambda - e & -f \\ -g & -h & \lambda - i \end{array} \right|.\] c表示向中对齐,l表示向左对齐,r表示向右对齐。 括号和分隔符 ()和[ ]和|对应于自己;{}对应于\{ \}; ||对应于\|。 当要显示大号的括号或分隔符时,要对应用\left和\right,如: \[ f(x,y,z) = 3y^2 z \left( 3 + \frac{7x+5}{1 + y^2} \right).\]对应于
![]()
\left.
和\right.
只用与匹配,本身是不显示的,比如,要输出:]则用 \[ \left. \frac{du}{dx} \right_{x=0}. \]
希腊字母![]()
![]()
# This file defines the default system JVM search order. Each
# JVM should list their JAVA_HOME compatible directory in this file.
# The default system JVM is the first one available from top to
# bottom.
/usr/lib/jvm/java-gcj
/usr/lib/jvm/ia32-java-1.5.0-sun
/usr/lib/jvm/java-1.5.0-sun
/usr