Drawing Module Script Development Case Study


About the client
This is an import and export corporation which built their plastic bags factory in Shenzhen of Guangdong province and runs several decentralized branches which performed its own duties.
In fact,one of its branches who runs a E-shop is in sore need of some necessary updates——a drawing module for their exsisted magento to better their services.

About the project
The client need CCJK to develop the drawing function module for their exsisted magento as a necessary updates.In fact,this is considered to be a especially difficult programming task which include amazing script codes to realise the customized function for their users.

CCJK Solution
Founded in the year of 2000, CCJK has been providing IT & Translation Solutions to organizations all over the world.There are graphics and website experts with the skill of excellent HD and attractive website designing.
In the beginning,CCJK sale personnels would communicate effectively and patiently with our customers to fully understand what our customers need.For this script development project,the sales try to get every samll details clearly,the relative position for drawing,the font for add to pictures,even the style of drawing buttons.CCJK will design some parts to provide our client with excellent work,providing the client has no idea.
We choose two developers one of whom have more than 4 years of experiences over javascript and the other is skillful in html5 & script development.
In addition,CCJK is famous for its quick response to customer and its high quality to delivery.When the projects is ongoing,we keep contact with our client,report the progress to them regularly.Before the deadline,we offer our client with the drawing module scripts which has already been intergrated to their E-shop.
In fact,through their unrimitting efforts and strong responsiblities,our customer is satisfied with our first draft. In fact,through our unrimitting efforts and strong responsiblities,our customer is satisfied with our work.

About CCJK
Founded in the year of 2000, CCJK technologies is an ISO9001:2008 certificated Translation and IT company.Powered by 2500+ freelance linguists and 40+ in-house technicians and 35+ professional coders,web designers,CCJK are proficient with more than 108 language pairs,with over 100million words annually translation and 500+ IT solutions annually capacity.
Constantly joined by well-educated and highly disciplined linguistic professionals and IT talents from around the Asian Pacific region,CCJK has formed an elite localization and engineering group that is dedicated, knowledgeable and deeply rooted in the sense of responsibility.By trusting our one stop solution, you need only focus on your core business, win the market share and maximize your profit in simplest and soonest way. For more informations,please feel free to let me know.Looking forward to your contact at melody.li@ccjk.com.

2013网页风格设计趋势(2)

Parallax特效

另外一种滚动特效流行于2012年度并一直至今,就是Parallax滚动特效,该技术即是不同的Parallax对象可以以不同的速度滚动,可以更好地提升网页的层次感。

一个页面的网站

以内容设计结合无线滚动等技术,创新一种网站只有一个页面的网页设计趋势,这种设计方式可以让浏览者通过滚动的方式在一个页面中就可以浏览完该网站的全部内容。

满屏的图片和视频设计

在去年,在网页中超大的图片作为网页背景的方式相对流行,而今这种方式,已经不仅仅是图片,还包括超大的视频作为网页的背景。很多网站都增加精美的视频作为网站的背景,以满足浏览者的视觉欲望。

 App应用设计界面

现在这种App应用界面在网页中的设计也相对流行。这种设计方式可以让浏览者更加直观地流量网页内容和在各种移动终端中有更好的响应式展示。

CSS3特效

目前很多浏览器逐渐支持CSS3了,这让很多设计师趋之若鹜般使用和体验CSS3在网页中带来的惊喜效果。例如阴影、圆角、渐变、PNG透明特效等等。

超大的标题和印刷字样

在2013中,这种在网页中使用超大的标题变得相当流行。在这种设计中,浏览者能在浏览网页的时候快速知道自己想看的信息。

圆角设计元素

越来越多的设计师从之前的方形设计或块状设计转型到圆型设计,因为这种圆形设计较之前的方形设计更具有吸引力,并能让浏览者从以前的设计元素中看到新鲜的变化。

PowerDesigner生成sql脚本

一、生成sql server 2000或oracle建表sql脚本
1、新建一个物理模型,通过database菜单下的change current dbms可查看当前所用的DBMS是什么类型的,比如sql server 2000 或oracle 10g,当前选择sql server 2000。
2、在新建的dbms为sql server 2000的物理模型中添加表及关系,通过database菜单下的generate database可将当前DBMS的表结构及关系导出成sql语句。
3、若想将sql server 2000的表结构及关系变成oracl 10g的表结构及关系,可通过Tools菜单下的generate physical data model,再选择DBMS为oracle10g,就可生成oracl10g的表结构及关系。
4、若想将oracl10g中的表结构及关系导出成sql语句,执行database菜单下的generate database可将当前DBMS的表结构及关系导出成sql语句。
注意:oracle10g生成的sql语句可能表名及字段名存在用引号括起的情况,不用担心,通过简单的设置即可解决。
二、PowerDesigner生成数据库建表sql脚本时出现双引号解决方法(测试通过的软件版本为PowerDesigner V15.1.0.2850)
PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照 ORACLE默认的设置建表(DBA STUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”。如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。如果加了引号,sql或者hql查询“Column_1=’XXX’”时,就会报错:ORA-00904: “COLUMN_1”: 无效的标识符,除非写为“‘Column_1’=’XXX’”。
这个问题是生成脚本格式的问题,因此,我们可以尝试在DBMS配置文件中修改相应的格式设置来解决这个问题。选择“DBMS Properties”,选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。

使用JAVA获取客户端MAC地址

//Java获得CPU序列号和网卡Mac地址

/*
利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cpu个数,其他类似):
定义命令:
WindowsCmd =”cmd.exe /c echo %NUMBER_OF_PROCESSORS%”;//windows的特殊
SolarisCmd = {“/bin/sh”, “-c”, “/usr/sbin/psrinfo | wc -l”};
AIXCmd = {“/bin/sh”, “-c”, “/usr/sbin/lsdev -Cc processor | wc -l”};
HPUXCmd = {“/bin/sh”, “-c”, “echo “map” | /usr/sbin/cstm | grep CPU | wc -l “};
LinuxCmd = {“/bin/sh”, “-c”, “cat /proc/cpuinfo | grep ^process | wc -l”};

然后判断系统:
os = System.getProperty(“os.name”).toLowerCase();

根据不同的操作系统call不同的命令。
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class GetMACAddress
{
public String getMACAddress(String ipAddress)
{
String str = “”,strMAC = “”,macAddress = “”;
try
{
Process pp = Runtime.getRuntime().exec(“nbtstat -a ” + ipAddress);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for(int i = 1;i < 100;i++)
{
str = input.readLine();
if(str != null)
{
if(str.indexOf(“MAC Address”) > 1)
{
strMAC = str.substring(str.indexOf(“MAC Address”) + 14,str.length());
break;
}
}
}
}
catch(IOException ex)
{
return “Can’t Get MAC Address!”;
}
//
if(strMAC.length() < 17)
{
return “Error!”;
}
macAddress = strMAC.substring(0,2) + “:”
+ strMAC.substring(3,5) + “:”
+ strMAC.substring(6,8) + “:”
+ strMAC.substring(9,11) + “:”
+ strMAC.substring(12,14) + “:”
+ strMAC.substring(15,17);
//
return macAddress;
}

public static void main(String[] args)
{
GetMACAddress getMACAddress = new GetMACAddress();
System.out.println(getMACAddress.getMACAddress(“172.18.8.225”));

try
{
java.lang.Process proc = Runtime.getRuntime().exec(“ipconfig /all”);
InputStream istr = proc.getInputStream();
byte[] data = new byte[1024];
istr.read(data);
String netdata = new String(data);
System.out.println(“Your Mac Address=” + procAll(netdata));
}
catch(IOException e)
{
System.out.println(“error=” + e);
}
}

public static String procAll(String str)
{
return procStringEnd(procFirstMac(procAddress(str)));
}

public static String procAddress(String str)
{
int indexof = str.indexOf(“Physical Address”);
if(indexof > 0)
{
return str.substring(indexof,str.length());
}
return str;
}

public static String procFirstMac(String str)
{
int indexof = str.indexOf(“:”);
if(indexof > 0)
{
return str.substring(indexof + 1,str.length()).trim();
}
return str;
}

public static String procStringEnd(String str)
{
int indexof = str.indexOf(“r”);
if(indexof > 0)
{
return str.substring(0,indexof).trim();
}
return str;
}
}

import java.util.Vector;

class GetNetMAC
{
//网卡物理地址长度
static private final int _physicalLength = 16;

public static void main(String[] args)
{
//output you computer phycail ip address
System.out.println(“The MAC Addressis:t” + getPhysicalAddress());
}

static public String getPhysicalAddress()
{
GetNetMACShell shell = new GetNetMACShell();
String cmd = “cmd.exe /c ipconfig/all”;
Vector result;
result = shell.execute(cmd);
return parseCmd(result.toString());
}

//从字符串中解析出所需要获得的字符串
static private String parseCmd(String s)
{
String find = “Physical Address. . . . . . . . . :”;
int findIndex = s.indexOf(find);
if(findIndex == -1)
{
return “not find”;
}
else
{
return s.substring(findIndex + find.length() + 1,findIndex + find.length() + 1 + _physicalLength);
}
}
}

javascript在翻译领域中应该注意的问题(一)

JavaScript(以下简称JS) 是属于网络的脚本语言,关于JS的一些应用,写法啊之类的,在这里就不多说了,对于一个翻译人员来说最重要的还是想知道,当遇到JS脚本语言的一些相关的信息时,什么时候该译,什么时候又不需要翻译。对此,我将利用自己现有的JS知识分几个方面进行分析:

一:HTML中的JS

1.在htmlJS的实现必须位于 <script> 与 </script> 标签之间,也就是说当看到<script>这样的标签时,那说明它里面的内容就是JS运行的代码,这个时候不需要对里面的内容翻译。

2.当遇到像document.get……这样的语句时,则说明JS在访问某个html元素,例如document.getElementById(id) ,document.write(“<p>my first javascript</p>”)方法,这个时候切勿把document翻译成文件或公文,这个时候document是不需要翻译的,他后面的“.”也不是句号。

二:JS的注释

1.单行注释以// 开头

2.多行注释以 /* 开始,以 */ 结尾

3.JS不会执行注释,加注释来对 JS进行解释,可以提高代码的可读性。而注释在翻译过程是需要翻译出来,因为注释也是作为文档的一部分。

三:JS变量

JS中,变量的声明通常以var开头,例如: var x = 2; var是脚本语言的关键字,这是不需要翻译的。

四:JS对象

在 JS中,对象是数据(变量),拥有属性和方法,当你看到var txt = “Hello”;时,说明这是在声明一个txt的对象,竟然是对象,它就会有相对应的属性和方法,就像好比说,人是一个对象,眼睛,鼻子,嘴巴就是属性,吃饭,睡觉,这些都是行为或者说方法。例如:txt.length=5txt.search(),这就是表示上面的txt对象的属性长度和方法,其中.search()方法,这些都是不需要翻译的,由此可以看出只要是一个英文单词前面加了var 这个关键字则说明他已经被声明为一个变量或者对象,那么它“.”后面的内容就是他的属性或者方法,这些都不需要翻译。

五:JS函数

1.JS函数就是包裹在花括号中的代码块,前面使用了关键词 function,例如:

function myFunction() {

alert(“Hello World!”);

} 当你看到这样的以function关键字开头的,说明他是JS的函数定义标准,此后从 function开头到以“}”结束的内容均不需要翻译。注意:JS对大小写敏感。关键词  function 必须是小写的,如果是function是大写的,则不是JS的函数定义标准,说 明是需要翻译的。

六:JS的特殊运算

例如:greeting=(visitor==”PRES”)?”Dear President “:”Dear “;这是JS的条件运算,这在翻译中也是不需要翻译的,这句话的意思是如果变量 visitor 中的值是 “PRES”,则向变量greeting 赋值 “Dear President “,否则赋值 “Dear”

由于时间仓促,这篇博文先在此告一个小段落,也由于本人现有JS知识也是相对的微薄,如在描述过程当中有不巧当或者错误的地方,欢迎读者提出和建议。下周继续更新。

 

 

初次接触XML RPC

目前项目马上就要用到xml rpc技术了,为了更快的掌握及使用,写个小博客加深理解。

xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc server调用方法,并接收方法的返回数据;2.rpc server,用于响应rpc client的请求,执行方法,并回送方法执行结果。RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为 了提高各个分立机器的“互操作性”而发明出来的技术。

java与xmlrpc相互对应关系:

在这里简单描述一下:

>xmlrpc中的Array类型,对应到java中的Vector类型

例如:在RPC Server中的某个服务方法的返回值的声明类型是String[],但在Client中接收到的将是Vector对象;

反之,如果Client传送过去的调用参数为String[],但在RPC Server中所接收到的将是Vector对象

当然,如果我们不使用String[],直接声明为Vector,也是可以的。

>xmlrpc中的struct类型,对应到java中的Hashtable类型

> 其它的类型,如:String,int,double,boolean,Date等,都比较好对应。需要注意的是:在rpc Client中,如果使用到int/double/boolean这些基本类型时,需要将他们封装成一个相应的Object,例如:Integer /Double/Boolean。

下面是xml rpc的一个工作原理图,可加深理解。

JSF入门学习(一)

经过了几个月的头脑风暴,上一个项目的resource模块终于告一段落了。在接下来要的项目里,据分析,我们需要用到JSFJava Server Faces)技术。初来咋到,本着对JSF的不熟悉,我打算在项目启动之前,先自己学习一点关于JSF的知识,对此也做个小小的学习笔记,以后日后用到之时有一些参考。

初次接触JSF,发现它与struts有许多相似之处。有人力挺struts,说资料多,门槛低,招人容易;也有人力挺JSF,说组件开发是趋势,JSF技术新,虽然门槛高些,但是效率高,尤其适合与后台频繁进行复杂的数据交互的应用。听罢两方的激烈讨论,我不由自主的对JSF产生了好感.

JSF2.0入门:

网上搜了搜,发现JSF的学习资料很少,尤其是最新出的JSF2.0标准已经出了,资料更少,更别提视频的。既然是自学,当然要学最新的咯,无意中发现一个网友自己录的爆笑JSF2.0讲解视频,内容不是很多,但是入个门是没有问题了。

JSF框架选择:

现在有很多很多的JSF框架供我们选择:ICEFacesRichFacesPrimeFaces等等。但是网上讨论最多的是ICEFaces vs RichFaces,我看了之后个人比较中意RichFaces的风格,而且主要因为它是免费的。ICEFaces只有收费版功能才全,但网上的推荐都是说如果能付钱,最好用ICEFaces,它的功能比较强大。

Jbosstools插件安装:

需要特别注意的是,EclipseJbosstools的版本一定要对上:里面有stablemilestonenightly三种版本。本人不太清楚到底有什么区别,我选择的是stable版本(JBoss Tools 3.2 :: Eclipse 3.6.2)和 Eclipse IDE for Java EE Developers 版本(这是RichFaces Guide要求的),两个版本对不上好像会出问题,主要是速度问题。

好了,本次笔记先记录下简单的入门以及安装,下一次继续分享JSF的一些标签和应用。

WordPress VS Drupal

由于项目需要,近期对Drupal框架开发做一些学习和研究,刚开始稍微深入Drupal, 倍感该框架的卓越和满心欢喜,进而到进行主题开发阶段,Drupal让我吃惊,这框架后端如此难操作,失望至极。但作为也是一个主流的框架,根据自己近两天接触的一些Drupal知识和WordPress框架做一些适当比较,也作为一个心得总结。

  1. 框架结构
    WordPress和Drupal的框架结构基本相似,这里举例Drupal的框架结构图(如右图)。特别是这两者都是使用挂钩机制,使得在扩展框架功能变得非常方便和容易维护。同时两者也也并未完全的面向对象,也没有采用MVC模式开发,但逻辑和表现分离的也很方便开发主题包。
  2. 主题机制
    自我感觉在主题机制中,Drupal会比WordPress更优越一些。例如,Drupal的模板文件指派给不同的Category、Page等不同类型的内容更轻松做到。
  3. 后端操作人性化
    在这两者的后端操作中,很明显的是Drupal不如WordPress更人性化。例如,我在操作Drupal后端时,在某个设置页面需要回退时,往往会跳到不是我想要的地方,或者页面的UI会前后不一致,让人看得眼花而不知所措。在Drupal中,对于一个需求,可能需要 反复操作不同的地方才能实现,让人感觉操作繁琐。虽然对Drupal接触还有待深入,但在删除模块这一问题,在Drupal中确实让我失望,对于之前安装好的模块,如果需要删除或协助,如果一个模块功能涵盖比较多的模块,需要一个个卸载,另外卸载后的模块是还会出现在Drupal的模块页面中,需要进入服务器删除才能彻底删除模块。再例如一些关于网站导航创建没有WP那么容易操作。
  4. 系统升级
    WordPress的各个版本之间的升级相对便捷,而Drupal升级,对于5.×、6.×、7.×之间升级实现相当困难,主要是由于这几个版本的升级在数据库结构和Drupal的核心机制发生了很大的修改。

以上属个人见解,如有出入,请指教。

magento折扣码设定的使用配置

在做bluesignature蓝色珠宝项目的时候客户提出一个要求,需要添加折扣码供客户打折,于是便有了我对折扣码配置这一功能的了解,好了,废话不多说,直接看功能。

Magento创建购物车价格规则:
点击Promotions -> Shopping Cart Price Rule, 然后选择 Add New Rule(增加新规则)。(这里便是创建使用Magento优惠券的地方)

比如创建减%10的优惠券:

在Rule Information :
首先输入规则名Rule Name 描述Description ,然后选择启用它Status为Active.
然后选择该优惠在哪些页面 上启用。假设给所有店铺的顾客都可以享受10%的优惠。因此我们把所有商店Websites 所有的使用者和顾客类别Customer Groups 都选上。选择的时候按住Ctrl键可以多选。

然后设定此优惠券需要输入优惠码激活,比如Coupon code 设置100Off ,那在购物车页面输入编码10Off 就可以使用了。

对“Uses Per Coupon ”和“Uses Per Customer ”进行设定。 “Uses Per Coupon”设定为100,即优惠券只能被使用100次。“Users Per Customer”设定为1,每位顾客只能使用一次优惠。

然后输入优惠券的有效期以及优惠券的优先数值Priority 。设定优先数值为0,即最高优先权。这样当有两个规则同时作用于同一产品的时候,优先权便起作用了。

From Date 和To Date 是用于设置优惠券的有效期。
Public In RSS Feed 这个是设置是否把此个价格规则公布在RSS feed上。

在Conditions :
选择“Percent of Product Price discount ”( 其他的选择是针对整个购物车或者买x物品可以免费得到y商品两种类别的固定数额的折扣),然后选择你想要设定的折扣额Discount amount 。设定为10 即为%10。

然后我们设定折扣应用于同一商品的最大数Maximum Qty Discount is Applied to 。输入5,也就是说,同一商品只能有5件享受折扣优惠,第6件要按照原价支付了。

接下来是应用折扣所需达到的商品数Discount Qty Step (Buy X) 。如果我们输入3,那么购物车中必需有3样 以上的商品才能享受价格优惠。如果我们对这个要限定的话留空就可以。

接下来你还可以为你的优惠设定免费附送品。附送品可以设定为优惠指定的某些产品,也可以设定为购物车中包括某件商品便可以自由选择的任何产品。这边我们不设置留空。
这样下来整个Magento使用优惠券 购买物品打九折的需求就达到啦。
在前台checkout/cart/页面的Discount Codes里通过输入刚才设定的优惠码100Off 就能打折使用啦。
这样就可以了,你可以使用你设置的优惠券代码来测试一下。

WordPress的路由过程

作为当今世界最流行的博客程序WordPress,它以良好的扩展性和急速搭建博客网站而席卷全球,源源不断的大量WordPress开发人员涌现,本人也作为WordPress忠实粉丝一员,谨此把自己对WordPress的路由过程抽象如下,便于有需要帮助的人更快入门。

下面是根据个人对WordPress的经验,把该博客程序的路由过程详细说明:

1. WordPress 是一个单入口路由,任何一个URL都是访问根目录下面的index.php 文件,所以首先先访问根目录下的index.php文件,此时会包括需要用到的各个必要的资源库。

2. 加载 wp-blog-header.php 文件,创建主要的三个对象实例(此时未包含任何用户行为数据):
数据库对象$wpdb: 用于对数据库操作
Wordpress对象$wp:用于创建WP类的查询变量数组
Query对象$wp_query:用于创建Query类的查询变量数组

3. 调用wp();函数,在WP类的$wp对象的查询变量数组中加入了用户行为数据,然后传给$wp_query对象,补上Query类的查询变量(补上的查询变量是用于确定模板层级),创建最后的查询变量数组。

4. $wp_query对象中设置模板层级和使用数据库对象$wpdb从数据库中获取记录集,并返回给模板。

5. 根据模板层级加载模板文件,在模板文件中可以通过使用上面三大对象来调用数据,但大部分都是使用$wp_query来输出记录集数据,输出网页。