Archive for the '技术' Category

mysql经纬度坐标距离计算

四 09 2011 Published by under mysql

本文章主要解决数据库如果存有经纬度,获取一定距离的记录数

首先我们在mysql建立一个可重复使用的计算两个坐标经纬度的Function

DELIMITER $$

DROP FUNCTION IF EXISTS `MyDistance`$$

CREATE FUNCTION `MyDistance`(lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT)
	RETURNS  DOUBLE
BEGIN
	DECLARE  distance  DOUBLE;
     SET distance= 2 * 6378.137* ASIN(SQRT(POW(SIN(PI() * (lat1–lat2) / 360), 2) + COS(PI() * lat1 / 180)* COS(lat2* PI() / 180) * POW(SIN(PI() * (lng1–lng2) / 360), 2)));
	RETURN distance;

END$$

DELIMITER ;

接下来,就是运用这个function计算距离了。
为了提高效率,在计算距离时首先通过经度和纬度过滤,然后再通过距离过滤,因为如果计算所有记录的距离毕竟不是很高效的做法。

No responses yet

Ubuntu 10.10 server 实践–ftp proftp安装

十二 09 2010 Published by under 技术,服务器技术

今天晚上安装了ftp服务程序,我们选择proftp,首先源码下载到windows,网站http://www.proftpd.org/, 我下载的软件包为proftpd-1.3.3c.tar.gz,接下来通过昨天的方法,利用xshell把windows的源码包传到linux上,源码安装需要gcc支持,请确认系统已经安装gcc编译器,接下来具体操作步骤:

$sftp username@ip
$>put local_file remote_dir  #(> put D:proftpd-1.3.3c.tar.gz  /home/software/)
$>quit
$ssh username@ip
$cd /home/software
$tar -xzvf /home/software/proftpd-1.3.3c.tar.gz -C /home/lib
$cd /home/lib/proftpd-1.3.3c
$sudo ./configure --prefix=/usr/local/proftp
$sudo make
$sudo make install

接下来修改/usr/local/proftp/etc/proftpd.conf

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "ProFTPD Default Installation"
ServerType                      standalone
DefaultServer                   on

# Port 21 is the standard FTP port.
Port                            21

# Don't use IPv6 support by default.
UseIPv6                         off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    30

# Set the user and group under which the server will run.
User                            nobody
Group                           nogroup

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite          on
SystemLog   /usr/local/proftp/log/proftpd.log

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>
  User                          ftp
  Group                         ftp

  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias                     anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients                    10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin                  welcome.msg
  DisplayChdir                  .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>
# user access config file path
AuthUserFile /usr/local/lib/proftp/etc/passwd
# change the auth file order
AuthOrder mod_auth_file.c mod_auth_unix.c

配置文件中我们已经配置权限验证通过文件方式。接下来我们参照http://www.proftpd.org/docs/contrib/ftpasswd.html来配置添加ftp用户。我们用到也就是

ftpasswd --passwd --name=bob--uid=1001 --file=/usr/local/lib/proftp/etc/passwd --home=/home/bob --shell=/bin/false

会提示你输入密码,输入密码后就会生成一个用户密码配置文件,路径如下: /usr/local/lib/proftp/etc/passwd,如果你不知道怎么获取uid,那么请用下面的命令查看,那个显示的数字就是了

id nobody

现在如果你启动proftp可能出现总是登录不上的情况,解决办法就是在/etc/shells 添加一行 /bin/false

最后启动你的proftp,

$sudo /usr/local/lib/proftp/sbin/proftpd

那么整个ftp就成功了,如果发生错误请查看日志文件,路径我们配置文件中也配置了 /usr/local/proftp/log/proftpd.log
如果是端口占用,请用下面命令查看是什么进程占用了

$sudo netstat -pant

查到占用21端口的进程,你可以kill,还可以更改配置文件的端口来解决这个问题。
如果你的proftp不是系统service,怎么停掉呢,方法很简单

$ps aux|grep "proftpd"
$kill id

那个/usr/local/proftp/sbin/ftpshut 命令是不能完全停止进程的,会一直占用21端口,这种停止只能让ftp用户没有办法登录。

No responses yet

Ubuntu 10.10 server 实践–简单介绍

十二 08 2010 Published by under 技术,服务器技术

以前搞过Linux server,但是因为工作开发比较忙,有很长一段时间没有练习了,很多东西开始淡忘,温故而知新,所以决定重新操作一边,随便做一下笔记,以便以后使用。

下载好iso文件,在windows下使用虚拟化软件virtualbox(免费开源)安装Ubuntu Server.安装时到最后的软件选择时,因为要从头做起,不用系统做好的LAMP,Tomcat server软件包,如果用系统软件包,那就达不到练习的目的了。我只选择了OpenSSH server,因为要其他的机器传输文件到服务器上,必须有一个连接方式能够支持,那么ssh就是最好的方法。Ftp server 我们后面搭建,现在系统就只有ssh了。如果你通过网络的话也可以通过wdget来做,但是我不喜欢用server去下载东西。

接下来介绍一下SSH怎么传输文件,我的是从windows xp到Ubuntu server传输文件。windows下可以使用Xshell命令终端软件,命令使用sftp.

> sftp username@ip port
> help
bye     finish your SFTP session
cd      change your remote working directory
clear   clear screen
exit     finish your SFTP session
explore explore your local directory
get     download a file from the server to your local machine
help    give help
lcd     change and/or print local working directory
lls      list contents of a local directory
lpwd    print your local working directory
ls      list contents of a remote directory
mkdir   create a directory on the remote server
mv      move or rename a file on the remote server
put     upload a file from your local machine to the server
pwd     print your remote working directory
quit    finish your SFTP session
rename  move or rename a file on the remote server
rm      delete a file
rmdir   remove a directory on the remote server

当然你也可以选择SCP命令作为你的传输命令:scp 命令是 SSH 中非常有用的命令,在两台服务器之间直接传送文件,仅仅用 scp 一个命令就完全解决了。 你可以在一台服务器上 以 root 身份运行 #scp servername:/home/ftp/pub/file1 . 这样就把另一台服务器上的文件 /home/ftp/pub/file1 直接传到本机器的当前目录下,当然你也可以用 #scp /tmp/file2 servername:/boot 把本机上的文件 /tmp/file2 送到另一台机器的 /boot 目录下。而且整个传送过程仍然是用 SSH 加密的。在windows下需要安装一个软件Winscp就可以了。

通过sftp传输文件到服务器上,是一个非常好的windows和linux通信的方法。当然你也可以用scp,如果是linux到linux推荐scp方法传输。

天很晚了。呵呵,困死了,睡觉了,今晚收工了。^_^

No responses yet

godaddy空间的magento安装支持

六 04 2010 Published by under php,电子商务

今天在godaddy空间安装magento,跳转后页面空白,后来在google上搜索一了下,在国外的blog终于找到解决方案,现在分享,希望帮助到你。

我的空间是linux的,php5.

修改你的php5.ini

register_globals = on
allow_url_fopen = on
cgi.fix_pathinfo = 1
注意配置文件的这三项配置,设置完成了刷新你的页面,会有惊喜了。哈哈 ^_^

2 responses so far

godaddy主机升级zend到最新版本

十二 22 2009 Published by under php

今天,因为一个电子商务程序需要zend 3.3,所以把godaddy主机的zend升级一下,搞了好几个小时才搞定,做个笔记

  1. 下载ZendOptimizer 我的主机是linux的所以下载了最新的ZendOptimizer-3.3.9-linux-glibc23-i386
  2. 解压,我的php是5.2.6,拷贝ZendOptimizer-3.3.9-linux-glibc23-i386data5_2_x_compZendOptimizer.so,ftp上传至根目录下的zend目录
  3. ftp打开空间,找到根目录下的php.ini,下载到本地备份,删除服务器上的php.ini,把本地php.ini重命名为php5.ini
  4. 编辑php5.ini,找到

[Zend]
zend_extension=/usr/local/zo/ZendExtensionManager.so
zend_extension=/usr/local/zo/4_3/ZendOptimizer.so

修改为:

[Zend]
zend_optimizer.optimization_level=15
zend_extension=/home/content/XX/XXXXXXX/html/zend/ZendOptimizer.so

6.上传php5.ini至根目录,用<?php phpinfo();?>查看zend版本升级成功

注意:

zend_optimizer.optimization_level=15一定要设置,否则phpinfo的版本变成了3.3.9. 但是程序检测时还是不能使用

3 responses so far

php模板显示浏览器眉头有空行解决方法

十一 04 2009 Published by under php,web

最近在写php时,莫名其妙的浏览器头多出一行空行,在网上搜索一下,大致都是把文件保存为非BOM的UTF-8格式,在本地也解决了,但是上传到服务器依然有空行,搞了一个上午,都快崩溃了,最后决定自己想办法解决,经过几个小时的摸索终于有了完美解决方法了。

运用php显示缓冲区显示原理,成功去掉

在php的头上加一行ob_start(); 然后再模板显示前加个ob_end_clean(); 在模板显示后加个ob_end_flush();

这样问题就解决了,现在给出整体结构实例代码:

<?php

ob_start();

//此处为php逻辑操作

ob_end_clean();

//此处为php模板显示

ob_end_flush();

?>

No responses yet

php session_id 恢复 session的内容

九 25 2009 Published by under php

php的session是可以程序恢复的,这个和java不太一样,session的恢复机制可以实现多个应用程序session的共享,因为php的session都是以文件形式或者数据库存储的.首先是session_id的获取是通过session_id()函数获取,这个值可以进行传递.

程序恢复session,首先要知道session_id,大家通过手册可以知道session的恢复通过session_id($id);但是在恢复时要注意一个先后顺序,要得到之前session的内容,必须在session_start()之前执行session_id($id),这样才能在执行了session_start时初始化session的时候恢复到之前的内容,否则的话你得到的是一个空的session,你什么也得不到.之前session被重新初始化了.这个和session_start()的作用有密切关系,因为session_start告诉php,session要初始化,要从session文件中反序列化session内容,所以session_start的作用就是把之前存储的文件内容反序列化.session_start序列化之前要知道session_id,如果没有就生成一个新的session_id.如果有就反序列化相应文件的内容.

No responses yet

oscommerce 3.0 人民币添加

九 17 2009 Published by under web

oscommerce 3.0 安装后是没有人民币的,在oscommerce 3.0 添加货币是很简单的,在后台’网店主要设置管理’->’货币管理’中点击’插入’按钮,填入如下选项值:

名称:人民币

代码:CNY

左侧符号:¥

右侧符号:元

小数位数:2

币值:6.83056021

填好后点击”保存”按钮,如果要设置为默认货币,点击默认.

oscommerce 支持网络货币汇率更新,点击眉头上的”更新货币汇率”按钮,选择XE (http://www.xe.com)更新,以为第一个会报错,第二个比较正常,这样你的汇率就是最新的了.现在人民币就添加成功了.呵呵.欢迎查看本人的oscommerce 3.0中文和添加模板.

No responses yet

oscommerce 3.0 中文及模板定制

九 17 2009 Published by under web

oscommerce 3.0 alpha 5已经释放好几个月了,最近一直搞zen-cart开发国外电子商务网站,已经习惯了zen-cart模式,oscommerce 2.2一直没有去学习,因为在我进入电子商务的时候我的前辈推荐我使用zen-cart,zen-cart是oscommerce的重构版本,比oscommerce好用.后来一直没有看,包括我在网上看到zen-cart和oscommerce的比较评价都是zen-cart好于oscommerce,最近在无意中发现oscommerce 3.0 alpha 5,于是随便看看,发现现在的oscommerce 3.0的文件结构都重构过了.个人觉得文件结构的安排比zen-cart好.并且oscommerce 3.0支持面向对象编程.也许面向对象编程成为php发展的趋势.

oscommerce 3.0的文档几乎就没有什么,在网上聊聊无几,很多记录和这个oscommerce 3.0根本毫无关系.

下面介绍怎么添加oscommerce 3.0的模板吧.

首先我们到www.oscommerce.com的官网下载最新的3.0 alpha 5,下载地址

然后下载中文语言包,下载地址

在apache+php环境中部署好,然后安装.我想这些大家都明白.不明白就去网上查找一下相关资料

然后把下载好的中文语言包解压覆盖源文件的相关目录,这是进入后台就会有中文的选择了.

接下来就是模板的添加了,这个和zen-cart不是一样,但是很相似.就是在templates目录里添加要增加的模板目录和模板首页例如我们要添加一个test模板,现在在templates目录里建立一个test目录还有一个test.php文件,这个test.php文件可以复制default.php然后修改成自己想要的样子.接下来也是最关键的一步就是在adminincludestemplates中增加一个test.php文件.文件复制这个目录下的default.php文件然后修改几个地方:类名中default替换成test有两处,一处15行处的class osC_Template_test ,还有一处是18行$_code = ‘test’.17行的$_title = ‘osCommerce test Template’修不修改问题不是太大,但是最好修改,这样有助于阅读分别.接下来进入后台查看templates中多出一个模板选项(“osCommerce test Template”),这样一个模板就建立成功了.

模板建立好了,接下来就是货币本地化,欢迎查看oscommerce 3.0添加人民币.

One response so far

SyntaxHighlighter brush的文本对应表

九 15 2009 Published by under web

Brush name Brush aliases File name
ActionScript3 as3, actionscript3 shBrushAS3.js
Bash/shell bash, shell shBrushBash.js
C# c-sharp, csharp shBrushCSharp.js
C++ cpp, c shBrushCpp.js
CSS css shBrushCss.js
Delphi delphi, pas, pascal shBrushDelphi.js
Diff diff, patch shBrushDiff.js
Groovy groovy shBrushGroovy.js
JavaScript js, jscript, javascript shBrushJScript.js
Java java shBrushJava.js
JavaFX jfx, javafx shBrushJavaFX.js
Perl perl, pl shBrushPerl.js
PHP php shBrushPhp.js
Plain Text plain, text shBrushPlain.js
PowerShell ps, powershell shBrushPowerShell.js
Python py, python shBrushPython.js
Ruby rails, ror, ruby shBrushRuby.js
Scala scala shBrushScala.js
SQL sql shBrushSql.js
Visual Basic vb, vbnet shBrushVb.js
XML xml, xhtml, xslt, html, xhtml shBrushXml.js

One response so far

Next »