吐槽 Cordova4.0 plugin 开发

为Cordova贡献了一个TTS文字转语音的简单插件,查看源代码可以移步:
https://github.com/etonn/Cordova-TTS-Plugin

在Cordova 4.0项目中,用前端Javascript调用Native代码,需要用plugin的方式实现。
以Android为例,按照官方说明制作好plugin后,本地安装:

cordova plugin add ./com.etonn.plugins.tts

提示:
Error: Could not find plugin info in /mypath… at new PluginInfo(…lib/src/PluginInfo.js: 229: 15)
然后竟然…把我做的plugin文件都删掉了,不论是我使用本地绝对路径还是相对路径,都无法顺利安装,
原来安装plugin的时候,Cordova会自动通过网络查找plugin.xml的信息,
找不到则认为plugin无法安装并自动删除目录中已经”下载”的plugin。

通过分析安装其他网络上的plugin后发现,成功安装一个plugin后,除了copy代码文件到相应目录外,还会自动修改以下文件:

plugins/android.json
platforms/android/assets/www/cordova_plugins.js
platforms/android/res/xml/config.xml

其中:
android.json记录了有哪些plugin已经安装,
cordova_plugins.js记录当运行app时,自动载入哪些js文件,
config.xml会添加feature告诉Native app增加了哪些package。
所以手动调试安装plugin就可以直接修改以上3个文件了。
如果这时运行命令: Cordova build 依然会自动删除手动添加到platforms里面但未注册的plugin文件。
务必要做好备份工作。

Advertisements

为 Mac OS X 系统下的 PHP 增加 mCrypt

现在Laravel、Opencart等软件都是需要PHP支持mCrypt了,
可是Mac OS X 默认的PHP版本是不支持mCrypt的,
使用homebrew可以像yum或apt-get那样快速的安装它。

步骤如下:

# 安装 Command Line Tools
xcode-select --install

# 安装 homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew update

# 添加源, 因为默认源没有php55-mcrypt
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

# 安装 autoconf
brew install autoconf

# 安装 mcrypt
brew install autoconf mcrypt

# 安装 php55-mcrypt 同时会安装最新版本的PHP5.5
brew install php55-mcrypt

# 查看安装到哪里了
brew info php55-mcrypt

# 现在php55-mcrypt安装好了,但是phpinfo()的时候应该没有mcrypt,还需要修改libphp5.so的路径
# 编辑 /etc/apache2/httpd.conf
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so

# 现在php.ini使用的是
/usr/local/etc/php/5.5/php.ini
不是默认的
/etc/php.ini.default

在 Mac OS X 系统下配置 Apache MySQL PHP phpMyAdmin 环境

我用的Mac系统版本是OS X 10.10.1,其实系统中已经默认安装了Apache和PHP,只需要再安装一个MySQL就行了。

一、启动Apache

sudo apachectl start

访问 http://localhost/ 会看到Apache已经成功启动。
web root 的默认目录为 LibraryWebServerDocuments

二、配置Apache

编辑httpd.conf文件修改为自定义目录:

sudo vi /etc/apache2/httpd.conf
DocumentRoot "/Users/UserName/Sites"
<Directory "/Users/UserName/Sites">

把libphp5.so的注释删掉

LoadModule php5_module libexec/apache2/libphp5.so

把虚拟主机配置文件的注释删掉

Include /private/etc/apache2/extra/httpd-vhosts.conf

编辑虚拟主机配置文件

sudo vi /etc/apache2/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Users/UserName/Sites/localhost/"
ServerName localhost
ErrorLog "/private/var/log/apache2/localhost-error_log"
CustomLog "/private/var/log/apache2/localhost-access_log" common
<Directory "/Users/UserName/Sites/localhost/">
Options Indexes
AllowOverride None
Allow from all
</Directory>
</VirtualHost>

三、安装MySQL

我下载的是MySQL 5.5,个人觉得5.6的很多特性在laptop上用不到,而且占空间多。
当然如果是多核服务的话,强烈建议使用5.6。
安装后在 System Preferences 里面会出现 MySQL 的控制面板,进去启动它。
默认的root用户是没有密码的,修改密码

/usr/local/mysql/bin/mysqladmin -u root password your-new-password

四、安装phpMyAdmin

我使用的是phpMyAdmin 4.3.3版本,这里有个大坑,
在我尝试登录phpMyAdmin的时候,总是提示我
Cannot log in to the MySQL server
这个错误太笼统,造成不能登录MySQL的可能性很多,于是用排除法先用命令行登录,成功,
然后用NaviCat,也没问题,由此判断为phpmyadmin本身的问题,
换成phpMyAdmin 3.5版本,尝试登录后提示
#2002 Cannot log in to the MySQL server
原来错误代码是#2002,Google搜到这篇文章,
http://blog.ryantremaine.com/2011/03/2002-cannot-log-in-to-mysql-server.html
编辑phpMyAdmin的config.inc.php文件,修改

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['host'] = '127.0.0.1';

问题解决。:)

Ubuntu 14.04 安装Redmine及整合Git环境之快速偷懒篇

现在网上转来转去的文章太不靠谱,坑太多,填坑填得心很憔悴。
这篇文章在我填坑埋土大半天后写成,已经反复测试过3遍,整个过程只需要手动copy即可。
系统环境为 Ubuntu 14.04 LTS ,不保证其他版本依然有效,但仍可作为有效参考。

一、准备工作

# 首先升级软件包
sudo apt-get update
sudo apt-get upgrade
# 安装LAMP环境
sudo apt-get install tasksel
tasksel
sudo apt-get install phpmyadmin

二、安装 Redmine

sudo apt-get install redmine-mysql
sudo apt-get install redmine
sudo apt-get install imagemagick #可选
sudo gem install bundler
#安装后主要目录结构如下:
#redmine目录:/usr/share/redmine/
#配置文件目录:/etc/redmine/default/
#日志文件目录:/var/log/redmine/

三、安装Email

sudo apt-get install postfix #Select ‘Internet Site’

四、一些必要的权限配置

#程序启动时需要创建配置文件及log,给他权限
sudo chmod 775 /etc/redmine/default/
sudo chmod -R 775 /var/log/redmine/
sudo mkdir /usr/share/redmine/tmp
sudo chmod -R 775 /usr/share/redmine/tmp
#sudo mkdir /usr/share/redmine/public/plugin_assets # 如果需要安装plugin
#sudo chmod 775 /usr/share/redmine/public/plugin_assets
sudo mkdir /usr/share/redmine/files
sudo chmod 775 /usr/share/redmine/files
#为整合apache做准备
sudo chown -R www-data:www-data /usr/share/redmine

五、使用 webrick 测试

sudo ruby /usr/share/redmine/script/rails server webrick -e production
#默认端口是3000,例如访问http://git.mimiz.cn:3000/ 查看效果

六、配置Apache

sudo apt-get install libapache2-mod-passenger
sudo ln -s /usr/share/redmine/public /var/www/redmine
sudo vi /etc/apache2/sites-available/redmine.conf
#增加一行:RailsBaseURI /redmine
sudo vi /etc/apache2/sites-enabled/000-default.conf
#修改web根目录为:DocumentRoot /var/www
#增加一行:ServerName localhost
sudo vi /etc/apache2/mods-available/passenger.conf
#增加一行:PassengerDefaultUser www-data
sudo a2ensite redmine
service apache2 reload
sudo service apache2 restart

七、配置 Redmine

#创建config配置文件
sudo cp /usr/share/redmine/config/configuration.yml.example /etc/redmine/default/configuration.yml
#编辑config文件
sudo vi /etc/redmine/default/configuration.yml
#查找修改以下内容:

production:
    email_delivery:
        delivery_method: :sendmail
attachments_storage_path: /usr/share/redmine/files
scm_stderr_log_file: /var/log/redmine/redmine_scm_stderr.log

sudo service apache2 restart #重启生效

八、安装 Git

sudo apt-get install git git-core
#一些简单的设置
git config –global user.name “mimi”
git config –global user.email “mimi@mimiz.cn”
#查看设置
git config –list

九、为Redmine创建版本库

#为图方便我创建到Redmine目录中
sudo mkdir /usr/share/redmine/gitrepo
sudo mkdir /usr/share/redmine/gitrepo/project1
cd /usr/share/redmine/gitrepo/project1
sudo git init –bare
#给他权限,同样为了方便我设置777
sudo chmod -R 777 /usr/share/redmine/gitrepo/
sudo chown -R www-data:www-data /usr/share/redmine

十、在Redmine系统中设置版本库路径

在Redmine系统中,path 路径要填系统的绝对路径 /usr/share/redmine/gitrepo/project1
这里有个大坑,需要commit一次代码才能显示出来,否则总是显示404:
The entry or revision was not found in the repository

十一、本地连接Git

#这里的username是你ssh登录系统的username
username@server-ip:/usr/share/redmine/gitrepo/project1

十二、如果你想修改目录

#参考这篇文章:
http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_a_sub-URI
sudo vi /usr/share/redmine/config/environment.rb
在文件最后一行添加:
Redmine::Utils::relative_url_root = “/path”

———-我是无敌的终结线——–

搭建CentOS6+Apache+MySQL+PHP+PostFix服务器环境之快速偷懒篇

以目前最新版CentOS6为例,整个过程只需要手动copy即可。

一、配置网络

如果购买的云主机可以省略这步,如果自己安装的CentOS需要先配置IP地址,以静态IP为例:
配置网卡:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0

修改网关:

vi /etc/sysconfig/network
NETWORKING=yes
GATEWAY=192.168.1.1

修改DNS:

vi /etc/resolv.conf
nameserver 8.8.8.8

重启网络:

service network restart

二、增加国内yum源

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
wget http://mirrors.aliyun.com/repo/Centos-6.repo
yum makecache
yum install yum-fastestmirror -y

三、提前配置防火墙

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #for apache
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #for mysql
-A INPUT -p tcp --dport 12000:13000 -j ACCEPT #for ftp PASV
service iptables restart

四、安装Apache

yum install httpd
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName localhost:80
AllowOverride All
Options FollowSymLinks
DirectoryIndex index.html index.html index.php

创建虚拟主机:
vi /etc/httpd/conf.d/httpd-vhosts.conf
增加以下内容:
NameVirtualHost *:80
<virtualhost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
ServerName localhost
#ErrorLog “logs/localhost-error.log”
#CustomLog “logs/localhost-access.log” common
</virtualhost>
<virtualhost *:80>
ServerAdmin webmaster@domain.com
DocumentRoot /home/domain_com/public_html
ServerName domain.com
ServerAlias http://www.domain.com
#ErrorLog logs/domain.com-error.log
#CustomLog logs/domain.com-access.log common
</virtualhost>

设置Apache开机启动

chkconfig httpd on
service httpd restart

五、安装MySQL

yum install mysql mysql-server
/etc/init.d/mysqld start
chkconfig mysqld on

设置root密码:

/usr/bin/mysqladmin -u root password 'new-password'

六、安装PHP

yum install php
service httpd restart

目前yum安装的是PHP5.3.3

根据yum源选择需要安装的组件:

yum search php
yum install php-bcmath php-gd php-imap php-ldap php-mbstring php-mysql php-odbc php-pdo php-pear php-soap php-xml php-xmlrpc php-mcrypt
service httpd restart
service mysqld restart

七、安装phpMyAdmin

目前最新版本是4.2.4,但根据yum安装的php和mysql版本,应该安装4.0.10才更合适。
首先进入要存放phpmyadmin的目录

cd /var/www/html/
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.0.10/phpMyAdmin-4.0.10-english.zip
unzip phpMyAdmin-4.0.10-english.zip

为apache配置phpmyadmin的虚拟目录:

vi /etc/httpd/conf/httpd.conf
Alias /phpmyadmin "/var/www/phpmyadmin/"
<Directory "/var/www/phpmyadmin/">
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

八、安装vsftpd

yum install vsftpd
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
#注意这里:如果chroot_local_user设置了YES,那么chroot_list_file是不被chroot的用户(可以向上改变目录)。
#如果chroot_local_user设置了NO,那么chroot_list_file是被chroot的用户(无法向上改变目录)。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pasv_max_port=13000 #这里是设置PASV使用的端口范围 和前面iptables规则对应
pasv_min_port=12000

创建chroot_list
touch /etc/vsftpd/chroot_list

创建ftp用户

useradd -d /var/www/html/ -g ftp -s /sbin/nologin -M ftpusername
passwd ftpusername
chown -R ftpusername /var/www/domain_com
chmod -R 755 chmod -R 755
service vsftpd restart
chkconfig vsftpd on

这时登录ftp应该会出现550错误,原因是没有配置SELINUX权限
因为是偷懒,直接关闭SELINUX:

vi /etc/selinux/config
SELINUX=disabled

临时关闭:

/usr/sbin/setenforce 0

九、安装Postfix

一般来说CentOS内置了Postfix
检查下看看:

yum -qa | grep postfix

yum安装:

yum install postfix

安装后命令行运行mail测试一下,就算没问题了估计也不能通过php的mail()发送邮件,因为httpd没有maildrop的权限

chmod 777 /var/spool/postfix/maildrop

其他可能存在的权限问题:

chown apache.apache -R /var/www/html
chown mysql.mysql -R /var/lib/mysql

完毕!

自定义WordPress主题widgets

将以下代码添加到functions.php:

function widget_footer_copyright() {
register_sidebar(array(
'id'=>'widget_footer_copyright',
'name'=>'页脚版权信息'
));
}
add_action('widgets_init','widget_footer_copyright');

在模板文件中使用:
<ul><?php dynamic_sidebar(‘widget_footer_copyright’); ?></ul>

在WordPress主题中使用自定义Shortcode

WordPress 的 Shortcode 常用的主要有3种:
[shortcode foo=”bar”]
[shortcode]text[/shortcode]
[shortcode foo=”bar”]text[/shortcode]

这里简单介绍第一种的定制方法,编辑以下代码到functions.php:

// [redirect url="?page_id=100"]
function sc_redirect( $atts ){
extract( shortcode_atts( array(
'url' => 'http://mimiz.cn',
), $atts ) );

$result = ‘window.location.href=”‘.home_url(‘/’).$url.'”;’;

return $result;
}
add_shortcode( ‘redirect’, ‘sc_redirect’ );

以上代码作用是创建一个重定向的shortcode。

需要进一步了解shortcode请移步官方文档:
http://codex.wordpress.org/Shortcode_API