分类目录归档: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/

groupoffice在windows环境下安装成功

哇哈哈,谁说 groupoffice 只能安装到 Linux 环境,我就在Windows系统安装成功了,版本为3.5.11。 :mrgreen:
折腾了一上午,重写了files模块一半的代码,终于成功了,难掩兴奋之情,臭美一下。
有时间我会把详细过程记录下来。 :mrgreen:

不知道什么是GroupOffice ?
看这里:www.group-office.com

开源免费的代码编辑器notepad++

一直以来都习惯用EditPlus写代码,后来由于BOM事件的折磨,开始改用功能强大的UltraEdit,但UltraEdit过于庞大,启动较慢,而且需要购买,后来偶然在sourceforge发现了开源且免费的代码编辑器notepad++,试用之后,果然不错。

Notepad++ 是一个免费 开源 小巧的代码编辑器。这个在GPL许可证下的自由软件采用 win32 api 和 STL 以 C++ 语言撰写成,并且选用功能强大的编辑模组 Scintilla。可完美地取代微软视窗的记事本。

下载地址:
可执行代码
源代码
中文语言包

语言包说明:
把下载的中文语言包chineseSimplified.xml重命名为nativeLang.xml放到软件根目录

Notepad++ 的主要功能:

  1. 语法高亮度显示及语法摺叠功能
  2. 支援的程式语言:
    C C++ Java C# XML HTML
    PHP CSS makefile ASCII art (.nfo) doxygen ini file
    batch file Javascript ASP VB/VBS SQL Objective-C
    RC resource file Pascal Perl Python Lua TeX
    TCL Assembler Ruby Lisp Scheme Properties
    Diff Smalltalk Postscript VHDL Ada Caml
    AutoIt KiXtart Matlab Verilog Haskell InnoSetup
    CMake

  3. 列印所见即所得(WYSIWYG)
  4. 如果你有彩色印表机,你可以把你的原始码以多种顏色列印出来。

  5. 用户自定程式语言
  6. 用户可自定程式语言:自定的程式语言不仅有语法高亮度显示功能,而且有语法摺叠功能功能。 註解关键字及运算符号亦可自定。

  7. 字词自动完成功能(Auto-completion)
  8. 用户能做自己的API列表。一旦api档案建立完成且在正确的路径系统,键入Ctrl+Space(你可以修改这个键盘捷径)啟动字词自动完成功能。

  9. 支援同时编辑多重文件
  10. 你可以同时开啟多页面来编辑。

  11. 支援多重视窗同步编辑
  12. 用户可同时有两个视窗对比排列。你不但能开啟两个不同文件在分别两个不同的视窗内 (画面), 并且能开啟一个单独文件在两个不同的视窗内(clone mode)进行同步编辑。同步编辑的成果将在两个的视窗内同时更新。

  13. 支援Regular Expression搜寻及取代
  14. 用户可用Regular Expression来搜寻及取代一个字串。

  15. 完全支援拖曳功能
  16. 你可用拖曳功能来开啟文件。你也可以用拖曳功能来变换开啟文件的位置。 你甚至可拖曳开啟文件从一个视窗到另一个视窗。

  17. 自动侦测开啟档案状态
  18. 如果外部修改(或删除)Notepad++已开啟档案,用户将会被通知更新档案内容(或移除档案)。

  19. 书籤
  20. 用户可用滑鼠点击书籤边行(书籤边行位於列数边行右方)或使用键盘捷径Ctrl+F2来标明或移除书籤。使用键盘捷径F2到下一个书籤或Shift+F2到上一个书籤。如欲清除所有书籤,使用选单 寻找->清除所有书籤。

  21. 高亮度括号及缩排辅助
  22. 当插字游标(caret)移至下列字元{ } [ ] ( )旁侧时, 此字元与远方相对应的字元以及缩排辅助(如果存在的话)将会以高亮度来显示。

  23. 巨集
  24. 内部视窗位置可任意移动
  25. 放大与缩小功能
  26. 支援多国语言

更多详情看这里:
http://notepad-plus.sourceforge.net/tw/download.php