SAE Storage批量上传工具使用教程

0.1 版本下载:

https://github.com/downloads/shootsoft/SAEMutipleUploads/SAE%20Mutiple%20Uploads%200.1.7z

源码下载:

https://github.com/shootsoft/SAEMutipleUploads

首先在本地编辑【SAE_PHP】目录下的【sae_mutiple_uploads.php】文件,重新设置密码。

在SAE上创建好自己的应用,如果你是从应用仓库安装的Wordpress,可以跳过这一步直接去上传PHP文件了;否则需要自己创建Storage服务的domain:

上传有很多种方法,可以使用SAE的发布工具,也可以使用SVN,这里介绍从网页上传的方法。

从【我的首页】进入应用程序的配置界面,选择代码管理:

从右边选择编辑代码,需要安全码验证:

在新打开的页面中,直接选择【上传文件】一个黄色的向上的箭头,选择【SAE_PHP】目录下的【sae_mutiple_uploads.php】。

打开【SAE Mutiple Uploads.exe】

【上传文件接收地址】指的就是刚才上传的php,假如你上传到了根目录,你的应用程序叫 testapp,那么这里就应该填

http://testapp.sinaapp.com/sae_mutiple_uploads.php

【命名空间】指Storage的Domain名称。

【密码】是第一步配置的密码

【本地路径】指要批量上传的本地文件夹路径,支持多级文件夹,上传过程会自己处理。

配置好后点击【上传】,等待完成即可。

最后不要忘记了删除那个批量上传文件的sae_mutiple_uploads.php。

 

 

[Erlang] Unable to load crypto library Windows下的解决办法

在一台64位的Widnows2008上,安装了Erlang之后,运行erl,测试几条erlang语句,一切正常。但是在试图启动一个使用了SSL类库的应用程序时,出现了如下的提示:

Unable to load crypto library. Failed with error:

“load_failed, Failed to load NIF library c:/PROGRA~2/ERL58~1.2/lib/crypto-2.0.2/

priv/lib/crypto: ‘Unspecified error'”

OpenSSL might not be installed on this system.

“(pubSageService@Apptest2)1> i

=ERROR REPORT==== 21-Oct-2011::09:47:29 ===

The on_load function for module crypto returned {error,

{load_failed,

“Failed to load NIF library c:

/PROGRA~2/ERL58~1.2/lib/crypto-2.0.2/priv/lib/crypto: ‘Unspecified error'”}}

n(pubSageService@Apptest2)1> it terminating in do_boot”,{undef,[{crypto,start,[]

},{init,start_it,1},{init,start_em,1}]}}

 

Crash dump was written to: erl_crash.dump

init terminating in do_boot ()

该机器已经安装了64位的OpenSSL类库(下载http://www.slproweb.com/products/Win32OpenSSL.html

Google之后找到了一篇Google Groups上面的讨论文章

http://groups.google.com/group/erlang-programming/browse_thread/thread/288684b61116baf3

首先怀疑Win32的 OpenSSL类库安装的有问题,于是重新安装了一遍,之前安装的忘记最后一步是否选择了将OpenSSL的类库拷贝打到系统目录下(Windows\System32\),重新安装的时候确认拷贝,但是启动仍然失败。

接下来又把那几个dll拷贝到Erlang的安装目录(就是上面的提示的那个目录):

c:/PROGRA~2/ERL58~1.2/lib/crypto-2.0.2/priv/lib/crypto

这个是缩写的目录,实际是:

C:\Program Files (x86)\erl5.8.2\lib\crypto-2.0.2\priv\lib

这次换了个错误提示:

Unable to load crypto library. Failed with error:

“load_failed, Failed to load NIF library c:/PROGRA~2/ERL58~1.2/lib/crypto-2.0.2/

priv/lib/crypto: ‘Unspecified error'”

OpenSSL might not be installed on this system.

“(pubSageService@Apptest2)1> i

=ERROR REPORT==== 21-Oct-2011::09:47:29 ===

The on_load function for module crypto returned {error,

{load_failed,

“Failed to load NIF library c:

/PROGRA~2/ERL58~1.2/lib/crypto-2.0.2/priv/lib/crypto: ‘Unspecified error'”}}

n(pubSageService@Apptest2)1> it terminating in do_boot”,{undef,[{crypto,start,[]

},{init,start_it,1},{init,start_em,1}]}}

 

Crash dump was written to: erl_crash.dump

init terminating in do_boot ()

又仔细看了一遍帖子,怀疑是64的OpenSSL和64位的Windows 2008不兼容,于是重新安装了一个32位的,一切正常~

LuManager安装过程导入Mysql失败的解决办法

LuManager是一个优秀的国产Linux服务器管理软件,集成了Apache,Nigix,MySQL,FTP,Bind,Memcache,PHP5等软件包,可以实现Apache与Nigix的一键切换,多服务器负载均衡,域名智能解析,用户管理,流量监测功能等。可以通过Web界面来管理整个服务器,还能一键安装DedeCMS,Discuz!等Web应用程序。

LuManager在安装和使用过程中可能碰到导入Mysql失败的情况。

一般有2种情况:

情况1 安装MySQL时出错

Mysql 安装成功,继续安装LuNamp1.0

Mysql was successfully installed! Continue…

已耗时:30 分钟

Runtime: 30 分钟

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

MySQL数据导入不成功,可能是数据库没启动,或者是MySQL没安装成功,请重装一次试试!

Mysql data was not imported!

LuNamp安装失败

LuNamp was install failed

分析:

原来系统安装了一个MySQL,在系统原有MySQL没有停止服务的时候开始安装了LuManager,有可能是原有MySQL服务产生了影响。

解决:

杀死系统中正在运行的MySQL

方法1

如果你知道原有的MySQL服务器root用户密码,那么通过这个命令就能停止(忘记密码的看方法2):

mysqladmin -uroot -p’password’ shutdown

注意:

1. /etc/init.d/mysql stop 并不是正确的停止mysql服务的方法!

2. 如果你试图通过 /usr/local/LuNamp/cmd 目录下的 mysql-stop 来停止服务,那么你可能会碰到如下提示:

protest1:/usr/local/LuNamp/cmd# ./mysql-stop

1

MySQL manager or server PID file could not be found! failed!

可以通过方法2来解决

方法2

首先确保当前是root用户,运行如下命令:

protest1:/usr/local/LuNamp/cmd# ps -Af | grep mysqld

返回结果如下(注意加粗的那一行,那个PID就是MySQL的进程ID):

root      6928     1  0 Jun21 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe

mysql    17427  6928  0 14:56 ?        00:00:00 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –user=mysql –pid-file=/var/run/mysqld/mysqld.pid –skip-external-locking –port=3306 –socket=/var/run/mysqld/mysqld.sock

root     17428  6928  0 14:56 ?        00:00:00 logger -p daemon.err -t mysqld_safe -i -t mysqld

root     17460 17340  0 14:58 pts/2    00:00:00 grep mysqld

接着运行

protest1:/usr/local/LuNamp/cmd#Kill 17427

杀死了MySQL进程后,重新运行./zijidelu_install.sh就可以了

情况2 进入系统时出错,提示:

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock'(2)

截图:

解决方法:

首先参考情况1的方法1或者方法2来杀死当前正在运行的MySQL服务,然后以root用户身份进入

/usr/local/LuNamp/cmd

运行当前目录的mysql-start

protest1:/usr/local/LuNamp/cmd#./mysql-start

然后刷新LuManager的Web界面应该就能顺利进入了:-)

 

WinSCP跨Linux(多Linux台机器之间)拷贝传输文件

 

这纯属一个使用技巧,找了很多LinuxWindows客户端,貌似都不能在同一个用户界面上跨机器拷贝传输文件,用来用去还是WinSCP顺手,以前跨机器传输的时候都是开多个窗口,拖放。今天偶然发现WinSCP也可以在同一个用户界面上跨机器拷贝传输文件。

 

首先要确保WinSCP的工具栏“会话按钮”是显示状态,方便在多台Linux之间切换界面

WinSCP会话按钮

点击“会话按钮”工具栏的倒数第二个按钮,可以登录更多的Linux机器(注意:要拷贝的文件的目标机器必须先在这里登录)

WinSCP打开更多会话

在某一台需要拷贝的文件上单击鼠标右键,选择“远程复制”

WinSCP远程复制菜单

在新弹出的窗口中“目标会话”就可以选择其他的Linux机器以及对应的目录了。

WinSCP远程复制对话框

缺点就是不能同时拷贝到多台机器,以及文件拷贝实际上是先拷贝到本地,再拷贝到远程

Linux下Erlang中无法运行odbc:start()的解决办法

之前碰到过一次,但是当时是和ssl的问题一起解决的,所以再一次的疏忽了,Erlang安装的时候一定要确认所有需要的库都正确安装了。

错误情况是在erl环境中运行 odbc:start(). 的时候

抛出如下的异常:

** exception error: undefined function odbc:start/0

该异常的解决办法和《Erlang {“no such file or directory”,”crypto.app”}  的解决方法》类似首先确认linux下安装了如下的包:

apt-get  install unixodbc unixodbc-dev

接着重新安装erlang解决。

参考:《Linux(Debian)下正确编译安装Erlang的方法

Linux(Debian)下正确编译安装Erlang的方法

因为几次都碰到安装后某些类库无法使用的问题,总结了一下:

apt-get install gcc g++ build-essential m4 libncurses5-dev  libssl-dev  flex unixodbc-dev fop  libwxbase2.8-dev libwxgtk2.8-dev libgl1-mesa-dev libglu1-mesa-dev libglut3-dev libncurses5-dev  libc6  unixodbc  gcj openssl xsltproc

还有一个

apt-get install sun-java6-jdk

如果这个包不能正确安装,说明更新源可能有问题,用编辑器打开/etc/apt/sources.list增加一个

deb http://http.us.debian.org/debian/ lenny main contrib non-free

然后保存关闭再次运行 apt-get update然后再安装,应该就没问题了。

库安装完成后在源码目录下

./configure –prefix=/usr/
make
make install

安装完成后输入erl就能使用最新的Erlang运行环境了

如果是直接apt-get install erlang的,就不用看这个了,我这个是erlang源码编译安装的说明。另外如果有错或者缺少某些类库,还请指出,谢谢。

mysql int整型转换为 IP地址的自定义函数

碰到IP地址与Int转换的问题,得到了一个csv格式的ip列表,但是ip地址却是int格式。因为使用的时候主要是在数据库里使用,所以写个程序转换一把有些麻烦,后来想到mysql里面有自定义函数,于是尝试了一把,顺利解决:-)

DELIMITER $$
USE `iptest`$$
DROP FUNCTION IF EXISTS `int2ip`$$
CREATE DEFINER=`root`@`%` FUNCTION `int2ip`(num BIGINT) RETURNS VARCHAR(255) CHARSET utf8BEGIN     DECLARE result VARCHAR(255);    SET result = CONCAT( CAST((num DIV 16777216% 256) AS SIGNED), ‘.’,  CAST(num DIV 65536 % 256 AS SIGNED ), ‘.’,  CAST(num DIV 256%256 AS SIGNED ), ‘.’,  CAST(num%256 AS SIGNED ));RETURN result;    END$$
DELIMITER ;

使用的时候:

Select int2ip(`ip`) from table;

附int整型和ip转换的公式,摘自:

Linux(Debian)下正确编译安装Erlang的方法

IP Address = 202.186.13.4
w = 202, x = 186, y = 13 and z = 4
INT IP Number = 16777216*202 + 65536*186 + 256*13 + 4
= 3388997632 + 12189696 + 3328 + 4
= 3401190660
INT 转 IP:
w = int ( IP Number / 16777216 ) % 256
x = int ( IP Number / 65536 ) % 256
y = int ( IP Number / 256 ) % 256
z = int ( IP Number ) % 256

Erlang {“no such file or directory”,”crypto.app”} 的解决方法

 

一台新安装的Debian Linux 6.0, 安装了Erlang R14B02. 直接运行erl,输入一些测试,没有问题。但是部署一个Erlang的应用程序之后,启动出错,主要提示为:

 

{"no such file or directory","crypto.app"}

 

这个Erlang的应用程序用到了openssl相关的类库,检查了一遍系统的类库,发现 openssl-dev这个库没有安装,apt-get安装后继续出错,搜索发现erlang-ssl这个库没有,apt-get安装后还是无效。

最后发现一个成功解决的案例:

 

http://permalink.gmane.org/gmane.comp.networking.rabbitmq.general/5650

 

随后将Erlang卸载,重新编译安装(加这个参数 '–with-ssl=PATH')后一切正常。

 

后记:Erlang在编译的时候如果系统缺少一些类库,比如odbc,ssl等,会给出一些警告信息,但是并不会阻塞后面的安装,安装成功后一般会认为安装成功了(基本的测试也能通过),但是实际上一些erlang的类库并没有成功编译安装,这种情况下重新编译安装即可。

千人挑战,拿福能在行动–免费50元

拿福能在2010年才进入中国,在今天(5月23日)将要举办一次“千人挑战活动”,其目的是千名博主目标的实现起到激励作用,在放入广告代码并写一篇小小的拿福能及其活动介绍,便可平分这个活动的50000元费用,点此查看活动详情。 这仅仅是个开始,当然,我也参加了。在未来的日子里,拿福能还要在中国举办各种线上、线下活动,如果你想免费看电影、认识更多博主、获得小礼品就尽快来参加吧。 不要紧张,只需简单5步,即可在活动中大展拳脚! 1、  注册。 2、  博客绑定拿福能。 3、  在博客中插入拿福能广告代码。 4、写一篇简短博文,介绍拿福能,并在文中添加本活动页面链接:http://www.nuffnang.com.cn/blog/2011/05/23/challenge-1000    

Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)

参考:http://www.erlang.org/doc/reference_manual/expressions.html

Erlang的比较运算符

op Description
== 等于
/= 不等于
=< 小于等于
< 小于
>= 大于等于
> 大于
=:= 精确的等于
=/= 精确的不等于
等于和精确等于的区别:

如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,==操作会首先把两个数字转换成相同的相同类型。举例:

1> 1==1.0.
true
2> 1=:=1.0.
false

所以一般推荐用精确等于去比较

比较运算符的大小级别:

number < atom < reference < fun < port < pid < tuple < list < bit string

3> 1 > a.

false

op Description Argument type
+ number
number
+ number
number
* number
/ 浮点数除法,结果是浮点数 number
bnot 一元not运算符 integer
div 整数除法,结果是整数 integer
rem 求玉树 integer
band and运算 integer
bor or运算 integer
bxor xor异或运算 integer
bsl 左移位操作 integer
bsr 右移位操作 integer

逻辑运算符

op Description
not 一元逻辑not
and 逻辑and
or 逻辑or
xor 逻辑xor
原子true 和false表示逻辑的”真”和”假”

此外,逻辑运算符还包括一个orelse 和andalso

原始的or和and是不带”短路运算”操作的,而orelse和andalso是带短路运算操作的。

短路运算举例

Express1 and Express2

Express1 andalso Express2

如果Express1 为假,and会继续判断Express2,然后整体判定为假,而andalso”短路”操作,直接判定整个表达式为假,从效率上来说,andalso会高一些