使用Nginx/uWSGI部署Django项目

在做一个OvpnSpider的iOS客户端程序,该程序依托于日本筑波大学的VPN中继服务项目提供的API。VPNGate是一个分布式的VPN服务器实验项目,它本身并不提供VPN服务器,而是由全球各地自愿者将自己的电脑自愿提供出来充当VPN服务器,它的官方网站为 www.vpngate.net,不过很不幸,已经被墙了。我所要做的OvpnSpider就是依托VPNGate提供的API获取一个连接这些分布式VPN服务器的OpenVPN配置文件列表,将这些列表经过测试筛选排序然后供OvpnSpider的iOS客户端使用。

为了快速开发,服务器端采用 Nginx + uWSGI + Python(Django)来搭建,这里记录下环境搭建的过程。开发环境:Mac Pro。

EBS使用App_Multi实现Form行选择

Oracle提供了App_Multi程序包(详见AppCore.pll)来支持在多记录行的FORM当中选择一条或者多条记录。通过按住Ctrl键来实现跨行选择记录,通过点击起始行,按住Shift键来连续选择多行,通过编辑/全选和编辑/撤销全选来实现全选和撤销全选。使用该API在选中记录时记录会高亮,Ctrl和Shift的支持是通过在WHEN-MOUSE-CLICK当中调用代码App_Multi.Event(WHEN-MOUSE-CLICK);来实现的,这里有个不好的地方就是你放开键盘按键再单击的时候前面的选择就会释放,所以在客户化的开发当中一般不这么做,换一种简单的方法就是增加一个复选框列来实现。

EBS快速获取Form LOV的查询SQL

在项目的平时开发中我们经常会需要引用系统已有的值列表(LOV),然后去做我们的客户化的开发。如果是客户化的那么还可能通过打开Form直接查看的方式来获取LOV查询SQL,但如果是标准Form特别是类似采购订单界面、销售订单界面等复杂的Form就没那么简单了,下面的方法提供了一种快速获取Form Lov值列表SQL语句的方式,以销售订单事务处理类型设置界面为例,获取【完成集】LOV的查询SQL。

PLSQL Forall用法及其异常捕获样例

Oracle从8i开始引入了两个新的数据操纵语言语句:BULK COLLECT和FORALL,前者提供对数据的高速检索,后者则简化了代码同时很大程度上改进了增删改操作的性能。在Oracle EBS开发中经常需要批处理大量记录数据,例如在接口导入当中就使用得很多。下面的代码是我在实际项目开发当中在做客户化订单导入(从A系统导入到EBS)时使用FORALL的部分代码(下面的代码不支持直接Copy Running),在代码层面上简要地展示了FORALL的用法及其异常捕获机制,仅作参考Sample,具体的用法参见末尾的官方文档链接。

Ubuntu Server安装GUI环境

Ubuntu Desktop默认是带XWindow图形界面程序的,而Ubuntu Server默认不带,需要自己安装,我是在安装了Ubuntu Server 14.04LTS之后再安装的XWindow,桌面环境使用的是GNome,你也可以使用KDE等其他的。比较搞的是这边不是使用有线网络,全部使用WIFI,而我的PC装的是Ubuntu Server,所以先要设置一下使用WIFI上网,然后安装XWindow和GNome,最后设置一下默认启用UI模式还是TEXT字符模式,安装桌面环境会自带安装上Firfox浏览器,由于系统是英文版,所以出现了网页中文乱码问题,安装一个中文字体即可。

EBS点击按钮打开指定的文件夹

项目中要求在一个平台中只允许应用文件夹而不允许执行删除、新建等其他文件夹操作,这些操作在另外的地方进行定义,可通过在该平台中使用form功能参数的形式来为按钮关联指定的文件夹,然后分配给用户,每个用户通过点击按钮或者在form打开的时候就自动Load一个定义好的文件夹,这里提供点击按钮打开指定文件夹的测试代码,将这部分代码添加到button的when-button-pressed触发器当中即可。另外在禁用文件夹的时候还要在触发器代码的末尾以及使用到App_Folder.Event('XXX'); 代码的触发器后面添加禁用文件夹菜单和打开文件夹按钮的代码。