分类目录归档:OpenSource

吐槽 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文件。
务必要做好备份工作。

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”

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

定制OpenCart首页和分类页展示的产品

OpenCart早已把常用的功能写好提供给我们了,直接拿来使用即可。

比如我们想修改首页产品图片为显示8个最畅销产品,只需要调用:
$this->model_catalog_product->getBestSellerProducts(8)

如果想显示最新的6个产品,可以这样使用:
$this->model_catalog_product->getLatestProducts(6)

显示指定的商品:
$this->model_catalog_product->getProducts()

最受欢迎的商品:
$this->model_catalog_product->getPopularProducts()

特价商品:
$this->model_catalog_product->getProductSpecials()

以上方法都返回一个数组,自己根据情况编写视图模板文件即可。

OpenCart 模板创建 module 简单步骤

假如我想创建一个侧边栏模块sidebar,让每一个页面都可以复用,步骤如下:
1. 在controller/module目录下新建sidebar.php文件。
2. 添加文件内容为:
class ControllerModuleSidebar extends Controller {
	protected function index($setting) {
		$this->template = $this->config->get('config_template') . '/template/module/sidebar.tpl';
		$this->render();
	}
}
3. 在template/module创建sidebar.tpl模板文件。
4. 在调用的controller引用:
$this->data['sidebar'] = $this->getChild('module/sidebar');
5. 在模板文件使用: echo $sidebar;
最后我想说 OpenCart 真是一款优秀的开源电子商务软件,以后我会写更多关于 OpenCart 的内容。

让 swfobject.js v2.2 在IE、Firefox、Chrome下都支持透明效果的方法

以前在这篇文章中(http://mimiz.cn/index.php/open-source/swfobject-js-transparent-flash/)介绍了让swfobject.js支持flash透明效果的方法,但这个方法比较山寨,需要修改swfobject.js源文件。下面给出更加优秀的方法,代码如下:

var flash_att = { data:"flash/logo.swf",
width:"88", height:"90", wmode:"transparent",
style:'position: absolute;left:0px;top:0px;'};
var flash_par = {wmode:"transparent"};
swfobject.createSWF(flash_att, flash_par, "flashlogo");


如果你不知道什么是swfobject.js,请进入传送门:
http://mimiz.cn/index.php/open-source/swfobject-js-transparent-flash/

用 ImageMagick 把 PDF 转换成 PNG

ImageMagick 是一个开源免费的图片处理软件,功能极其强大,更重要的是,它对主流的开发语言支持良好,有大量现成的接口可用。

我在项目中需要实现把PDF文件转换成图片以及截取网页预览图的功能,用 ImageMagick 实现简直轻而易举。

安装起来很简单,先去官方网站下载程序包:http://www.imagemagick.org/script/index.php
一般来说Linux系统自带了 ImageMagick,Windows系统可以下载 ImageMagick-6.6.7-7-Q16-windows-dll.exe ,安装过程中注意把目录添加到系统PATH。

把 PDF 转换成 PNG,只需要一行命令:
convert file.pdf image.png
但我猜它一定会出现错误:
Magick: `%s' (%d) "gswin32c.exe" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -d
NOPROMPT -dMaxBitmap=500000000 -dEPSCrop -dAlignToPixels=0 -dGridFitTT=2 "-sDEVI
CE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" "-sOutputFile=C:
/Temp/magick-VApKMHci--0000001" "-fC:/Temp/magick-4m681YaN" "-fC:/Temp/ma
gick-RakStRfR" @ error/utility.c/SystemCommand/2092.
Magick: Postscript delegate failed `file.pdf': No such file or directory @ error
/pdf.c/ReadPDFImage/663.
Magick: missing an image filename `image.png' @ error/convert.c/ConvertImageComma
nd/2959.

google一下,原来想要转换PDF,在PATH中需要有gswin32c.exe才行。
再google一下gswin32c.exe是什么东西,是Ghostscript。
官方地址是:http://ghostscript.com/ 安装之后就可以让 ImageMagick 支持 PDF文件了。

后续我会介绍一些 ImageMagick 更加强大的功能和使用技巧,哈哈。

让 swfobject.js v2.2 版本支持透明flash

什么是swfobject.js ?
swfobject 是利用Javascript 插入flash的小脚本,
可以使HTML代码简洁,并且能通过W3C验证。

使用方法:
目前最新的2.2版本加载Flash只需要一行代码:

http://swfobject.js

swfobject.embedSWF(“flash.swf”, “flash_div_id”, “300”, “150”, “9.0.0”, “expressInstall.swf”);

详细使用方法请参考官方文档。

swfobject.js v2.2 有一个小bug就是不能插入背景透明效果的flash,
不过没关系,我们把它DIY一下,
首先分析透明flash的原理就是增加以下代码:

<param name=’wmode’ value=’transparent’ />

那么我们用文本编辑器打开swfobject.js,查找代码:

aa.outerHTML='”+af+””;

替换为:

aa.outerHTML='”+af+” “;

就是这么简单。 🙂

swfobject官方地址:http://code.google.com/p/swfobject/

20110919
查看更好的方法请进入传送门:http://mimiz.cn/index.php/open-source/swfobject-transparent/