本文章主要解决数据库如果存有经纬度,获取一定距离的记录数
首先我们在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计算距离了。
为了提高效率,在计算距离时首先通过经度和纬度过滤,然后再通过距离过滤,因为如果计算所有记录的距离毕竟不是很高效的做法。
今天晚上安装了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用户没有办法登录。
以前搞过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方法传输。
天很晚了。呵呵,困死了,睡觉了,今晚收工了。^_^
今天在godaddy空间安装magento,跳转后页面空白,后来在google上搜索一了下,在国外的blog终于找到解决方案,现在分享,希望帮助到你。
我的空间是linux的,php5.
修改你的php5.ini
register_globals = on
allow_url_fopen = on
cgi.fix_pathinfo = 1
注意配置文件的这三项配置,设置完成了刷新你的页面,会有惊喜了。哈哈 ^_^
今天,因为一个电子商务程序需要zend 3.3,所以把godaddy主机的zend升级一下,搞了好几个小时才搞定,做个笔记
- 下载ZendOptimizer 我的主机是linux的所以下载了最新的ZendOptimizer-3.3.9-linux-glibc23-i386
- 解压,我的php是5.2.6,拷贝ZendOptimizer-3.3.9-linux-glibc23-i386data5_2_x_compZendOptimizer.so,ftp上传至根目录下的zend目录
- ftp打开空间,找到根目录下的php.ini,下载到本地备份,删除服务器上的php.ini,把本地php.ini重命名为php5.ini
- 编辑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. 但是程序检测时还是不能使用
最近在写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();
?>
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.如果有就反序列化相应文件的内容.
oscommerce 3.0 安装后是没有人民币的,在oscommerce 3.0 添加货币是很简单的,在后台’网店主要设置管理’->’货币管理’中点击’插入’按钮,填入如下选项值:
名称:人民币
代码:CNY
左侧符号:¥
右侧符号:元
小数位数:2
币值:6.83056021
填好后点击”保存”按钮,如果要设置为默认货币,点击默认.
oscommerce 支持网络货币汇率更新,点击眉头上的”更新货币汇率”按钮,选择XE (http://www.xe.com)更新,以为第一个会报错,第二个比较正常,这样你的汇率就是最新的了.现在人民币就添加成功了.呵呵.欢迎查看本人的oscommerce 3.0中文和添加模板.
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添加人民币.
| 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 |