关于工作室

2009年11月7日 管理员 没有评论

广州萌芽工作室(Guangzhou Seed Studio)是一个专注于广州以及珠江三角洲PHP+MYSQL系统外包开发的专业团队,专业于广州PHP开发、广州网站建设、广州PHP培训、广州PHP外包、广州OA定制。

工作室业务:网站设计、程序优化、网站建设、网站设计、项目外包、服务外包、网站优化、办公系统、系统安全。

我们专注定制PHP+MYSQL高负载网络商城系统、行业门户网站、分类信息系统、B2B系统、B2C系统、企业文档管理系统、百科系统、企业门户网站………

电话:020-85524025

 手机:13480261415

 EMAIL:biaoest@gmail.com

 OICQ :190885451

 MSN:biaoest@hotmail.com

地址:广州天河工业园华翠街100之一10号车库

网址:http://www.gzseed.com

工作室办公室,虽然只是一个车库,但是环境还不错。

[成功案例]幻想曲通讯VGOOO.COM

2009年10月13日 biaoest 3 条评论

幻想曲通讯,广州最大的专业手机导航网站。

幻想曲通讯提供最新手机报价、手机大全,以及最新最热门产品的手机靓图,手机模特,和手机视频,手机论坛!

网站地址:http://www.vgooo.com

vgooo_index

解决ie6png格式bug

2009年11月29日 hongsite 没有评论

    PNG(Portable Network Graphics)格式图片可以表现更为绚丽多彩的颜色,常见的一些具有矢量效果的图片、图标都采用png格式,但是具有透明背景的png格式图片在IE6中却不是背景透明的,透明背景部分会显示出#DBEAED的淡灰色,表现效果很糟糕,为了使用透明背景图片只有采用gif格式了,但是gif格式会出现明显的锯齿效果,所以只有设法修复IE6的这个问题。解决的办法就是使用IE的Microsoft.AlphaImageLoader滤镜。

    如果希望使用png格式图片作为DOM元素的背景,那么就可以使用滤镜来加载png图片:
    css代码:.png{background: url(images/angel.png) no-repeat !important;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=”images/angel.png”);background:none;  width:100px;height:100px;}
    HTML代码:<div class=”png”>背景PNG透明</div>

    如果png格式的图片不是用来做元素背景,而是直接引入的img图像,那么此时可以把此img标签的src属性替换为一张空的透明gif图像,然后再把png图片加载为元素的背景就可以了。首先要准备一张空白透明的gif图片,一般命名为blank.gif(可自己另起名字),然后就可以替换png图像了。但是手工替换不太现实,最好一段代码就解决问题:
    css代码:
    .mypng img {
      azimuth: expression(
         this.pngSet?this.pngSet=true:
       (this.nodeName == “IMG” &&  this.src.toLowerCase().indexOf(’.png’)>-1?
      (this.runtimeStyle.backgroundImage = “none”,
      this.runtimeStyle.filter = “progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’” + this.src + “‘,sizingMethod=’image’)”,
      this.src = “blank.gif”)
      :  (this.origBg = this.origBg?
      this.origBg
      :this.currentStyle.backgroundImage.toString().replace(’url(”‘,”).replace(’”)’,”),
      this.runtimeStyle.filter = “progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’” + this.origBg + “‘, sizingMethod=’crop’)”,
      this.runtimeStyle.backgroundImage = “none”)),
      this.pngSet=true);
    }
    html代码:<div class=”mypng”><img src=”图片路径” /></div>

分类: DIV+CSS 标签:

Android1.6手势识别

2009年11月26日 chrisho 没有评论

很高兴能在Android1.6的sdk看到手势识别这一功能,之前一直在想,如何在android中实现nds游戏那样用手势(准确点应该是笔势)来控制游戏角色?现在总算看到一点曙光了,不过手势要做到笔势那样随心所欲地控制游戏人物,还有很多细节问题需要处理。

    在Android1.6的模拟器里面预装了一个叫Gestures Builder的程序,这个程序就是让你创建自己的手势的(Gestures Builder的源代码在sdk问samples里面有,有兴趣可以看看)。创建的手势将被保存到/sdcard/gestures里面,把这个文件复制到你的工程/res/raw下,你就可以在你的工程里面使用这些手势了。复制到/res/raw下的手势是只读的,也就是说你不能修改或增加手势了,如果想实现增改的话,可以直接加载sd卡里面的gestures文件。

    在例子中,我创建了这样的手势:

53068318-4f51-33ef-810c-b431d066fd80

第二步:在layout里面创建GestureOverlayView,这个透明的view就是让你在上面画手势用的,可以叠在其他View上面:

 <?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android
    android:orientation=”vertical”
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    >
<TextView 
    android:layout_width=”fill_parent”
    android:layout_height=”wrap_content”
    android:text=”@string/hello”
    />
<android.gesture.GestureOverlayView
    android:id=”@+id/gestures”
    android:layout_width=”fill_parent”
    android:layout_height=”0dip”
    android:layout_weight=”1.0″
    />
</LinearLayout>

第三步:载入Gesture:

mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
        if (!mLibrary.load()) {
            finish();
        }

第四步:增加响应函数OnGesturePerformedListener

GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
        gestures.addOnGesturePerformedListener(this);

以上四步就可以实现简单的Gesture识别原型了:

程序运行结果如下,书写一个a字,程序识别出,然后toast一个a出来:

 a0644667-f71b-39bf-aaeb-d76f1552c614

完整代码如下:

package com.ray.test;

import java.util.ArrayList;

import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.widget.Toast;

public class TestGesture extends Activity implements OnGesturePerformedListener{

 GestureLibrary mLibrary;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
        gestures.addOnGesturePerformedListener(this);
        mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
        if (!mLibrary.load()) {
            finish();
        }
    }

 @Override
 public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
  ArrayList predictions = mLibrary.recognize(gesture);

     // We want at least one prediction
     if (predictions.size() > 0) {
         Prediction prediction = (Prediction) predictions.get(0);
         // We want at least some confidence in the result
         if (prediction.score > 1.0) {
             // Show the spell
             Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
         }
     }
  
 }
}

文章参考了android博客上面的这篇文章: http://feedproxy.google.com/~r/blogspot/hsDu/~3/Rrgh3YnIqig/gestures-on-android-16.html

分类: 移动终端 标签:

Div+CSS的优点

2009年11月3日 hongsite 没有评论

    Div+CSS布局的优点:

    业界越来越关注DIV+CSS的标准化设计,大到各大门户网站,小到不计其数的个人网站,在Div+CSS标准化的影响下,网页设计人员已经把这一要求作为行业标准。那么什么是Div+CSS标准?Div+CSS的标准化设计到底有什么好处?

    Div 全称 division 意为“区分”使用 DIV 的方法跟使用其他 tag 的方法一样。

    如果单独使用 DIV 而不加任何 CSS, 那么它在网页中的效果和使用 <P></P> 是一样的。DIV本身就是容器性质的,你不但可以内嵌table还可以内嵌文本和其它的HTML代码。

    CSS是Cascading style Sheets的简称,中文译作“层叠样式表单”,在主页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。在网上没有使用过CSS的网页可能不好找。不管你用什么工具软件制作网页,都有在有意无意地使用CSS。用好CSS能使你的网页更加简炼,同样内容的网页,有的人做出来有几十KB,而高手做出来只有十几KB。

    Div+CSS标准的优点:

    1.大大缩减页面代码,提高页面浏览速度,缩减带宽成本。

    2.结构清晰,容易被搜索引擎搜索到,天生优化了seo。

    3.CSS非常容易编写。你可以象写html代码一样轻松地编写CSS。

    4.缩短改版时间。只要简单的修改几个CSS文件就可以重新设计一个有成百上千页面的站点。

    5.强大的字体控制和排版能力。CSS控制字体的能力比糟糕的FONT标签好多了,有了CSS,我们不再需要用FONT标签或者透明的1 px GIF图片来控制标题,改变字体颜色,字体样式等等。 

    6.提高易用性。使用CSS可以结构化HTML,例如:<p>标签只用来控制段落,heading标签只用来控制标题,table标签只用来表现格式化的数据等等。你可以增加更多的用户而不需要建立独立的版本。
 
    7.更好的控制页面布局。不用多说。

    8.表现和内容相分离。将设计部分剥离出来放在一个独立样式文件中,你可以减少未来网页无效的可能。

    9.更方便搜索引擎的搜索。用只包含结构化内容的HTML代替嵌套的标签,搜索引擎将更有效地搜索到你的内容,并可能给你一个较高的评价(ranking)。
 
    10.另外如果你不是javascrput的高手,你可以不必去写ID,只用class就可以。当客户端程序员写完程序,需要调整时候,你可以在利用他的ID进行控制。

    11.Table 中布局中,垃圾代码会很多,一些修饰的样式及布局的代码混合一起,很不利于直观。而Div 更能体现样式和结构相分离,结构的重构性强。

    12.在几乎所有的浏览器上都可以使用。

    13.以前一些非得通过图片转换实现的功能,现在只要用CSS就可以轻松实现,从而更快地下载页面。

    14.使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目。

    15.你可以轻松地控制页面的布局 。

    16.你可以将许多网页的风格格式同时更新,不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制,只要修改这个CSS文件中相应的行,那么整个站点的所有页面都会随之发生变动。

    17.Table 布局灵活性不大,你只能遵循 table tr td 的格式。而div 你可以 div ul li 也可以 ol li 还可以 ul li ……但标准语法最好有序的写。

分类: DIV+CSS 标签:

正则表式一只

2009年10月22日 crosstime 没有评论

PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑

我是个PHP废柴,是起源于网上的一篇文章,这篇文章由浅入深的阐述了PHP正则表达式使用的方法,我觉得是一个很好的入门材料,不过学成还是要靠个人,在使用的过程中,还是会不断地忘记,因此反反复复的阅读了这篇文章有四五遍,对于其中一些比较困难的知识点,甚至要用很久才能消化,但是只要能见坚持着看完,你会发现自己对于正则的运用能力就会显著提高。

PHP正则表达式的定义:

用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。

PHP中的正则函数:

PHP中有两套正则函数,两者功能差不多,分别为:

一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数;

一套由POSIX(Portable Operating System Interface of Unix )扩展提供的。使用以“ereg_”为前缀命名的函数;(POSIX的正则函数库,自PHP 5.3以后,就不在推荐使用,从PHP6以后,就将被移除)

由于POSIX正则即将推出历史舞台,并且PCRE和perl的形式差不多,更利于我们在perl和php之间切换,所以这里重点介绍PCRE正则的使用。

PCRE正则表达式

PCRE全称为Perl Compatible Regular Expression,意思是Perl兼容正则表达式。

在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/apple/”。

正则中重要的几个概念有:元字符、转义、模式单元(重复)、反义、引用和断言,这些概念都可以在文章[1]中轻松的理解和掌握。

常用的元字符(Meta-character):

元字符 说明

\A 匹配字符串串首的原子

\Z 匹配字符串串尾的原子

\b 匹配单词的边界 /\bis/ 匹配头为is的字符串 /is\b/ 匹配尾为is的字符串 /\bis\b/ 定界

\B 匹配除单词边界之外的任意字符 /\Bis/ 匹配单词“This”中的“is”

\d 匹配一个数字;等价于[0-9]

\D 匹配除数字以外任何一个字符;等价于[^0-9]

\w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]

\W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]

\s 匹配一个空白字符;等价于[\f\t\v]

\S 匹配除空白字符以外任何一个字符;等价于[^\f\t\v]

\f 匹配一个换页符等价于 \x0c 或 \cL

匹配一个换行符;等价于 \x0a 或 \cJ

匹配一个回车符等价于\x0d 或 \cM

\t 匹配一个制表符;等价于 \x09\或\cl

\v 匹配一个垂直制表符;等价于\x0b或\ck

\oNN 匹配一个八进制数字

\xNN 匹配一个十六进制数字

\cC 匹配一个控制字符

模式修正符(Pattern Modifiers):

模式修正符在忽略大小写、匹配多行中使用特别多,掌握了这一个修正符,往往能解决我们遇到的很多问题。

i -可同时匹配大小写字母

M -将字符串视为多行

S -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符

X -模式中的空白忽略不计

U -匹配到最近的字符串

e -将替换的字符串作为表达使用

格式:/apple/i匹配“apple”或“Apple”等,忽略大小写。 /i

PCRE的模式单元:

//1 提取第一位的属性

/^\d{2} ([\W])\d{2}\\1\d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[\W]”的结果“/”已经被存储。下个位置“\1”引用时,其匹配模式也是字符“/”。

当不需要存储匹配结果时使用非存储模式单元“(?:)”

例如/(?:a|b|c)(D|E|F)\\1g/ 将匹配“aEEg”。在一些正则表达式中,使用非存储模式单元是必要的。否则,需要改变其后引用的顺序。上例还可以写成/(a|b|c)(C|E|F)\2g/。

PCRE正则表达式函数:

preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace() 函数的具体使用,我们可以通过PHP手册来找到,下面分享一些平时积累的正则表达式:

匹配action属性

$str = ”; $match = ”; preg_match_all(’/\s+action=\”(?!http:)(.*?)\”\s/’, $str, $match); print_r($match); 在正则中使用回调函数

/** * replace some string by callback function * */ function callback_replace() { $url = ‘http://esfang.house.sina.com.cn’; $str = ”; $str = preg_replace ( ‘/(?<=\saction=\”)(?!http:)(.*?)(?=\”\s)/e’, ’search(\$url, \\1)’, $str ); echo $str; } function search($url, $match){ return $url . ‘/’ . $match; } 带断言的正则匹配

$match = ”; $str = ‘xxxxxx.com.cn bold font paragraph text’; preg_match_all ( ‘/(?<=).*(?=)/’, $str, $match ); echo “匹配没有属性的HTML标签中的内容:”; print_r ( $match ); 替换HTML源码中的地址

$form_html = preg_replace ( ‘/(?<=\saction=\”|\ssrc=\”|\shref=\”)(?!http:|javascript)(.*?)(?=\”\s)/e’, ‘add_url(\$url, \’\\1\’)', $form_html ); 最后,正则工具虽然强大,但是从效率和编写时间上来讲,有的时候可能没有explode来的更直接,对于一些紧急或者要求不高的任务,简单、粗暴的方法也许更好。

分类: PHP+MYSQL 标签:

Android数据存取之Preferences

2009年10月18日 chrisho 没有评论

这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以 通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只是在性能上不知道会有什么问题。

在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs 目录下。

数据读取

  • String PREFS_NAME = “Note.sample.roiding.com”;  
  • SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  • boolean silent = settings.getBoolean(“silentMode”false);  
  • String hello = settings.getString(“hello”“Hi”); 
  • SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    通过名称,得到一个SharedPreferences,顾名思义,这个Preferences是共享的,共享的范围据现在同一个Package中,这里面说所的Package和Java里面的那个Package不同,貌似这里面的Package是指在AndroidManifest.xml文件中:

     

    <manifest xmlns:android=“http://schemas.android.com/apk/res/android” 

     

  • package=“com.roiding.sample.note” 
  • android:versionCode=“1″ 
  • android:versionName=“1.0.0″> 
  •  

    这里面的package。根据我目前的实验结果看,是这样的,欢迎指正。后面的那个int是用来声明读写模式,先不管那么多了,暂时就知道设为0(android.content.Context.MODE_PRIVATE)就可以了。

  • boolean silent = settings.getBoolean(”silentMode”, false);
    获得一个boolean值,这里就会看到用Preferences的好处了:可以提供一个缺省值。也就是说如果Preference中不存在这个值的话,那么就用后面的值作为返回指,这样就省去了我们的if什么什么为空的判断。
  •  

    数据写入

     

    String PREFS_NAME = “Note.sample.roiding.com”;  

     

  • SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  • SharedPreferences.Editor editor = settings.edit();  
  • editor.putBoolean(“silentMode”true);  
  • editor.putString(“hello”“Hello~”);  
  • editor.commit(); 
  • 分类: 移动终端 标签:

    [成功案例]妈咪哄育儿网MAMMYHOME.COM

    2009年10月14日 biaoest 没有评论

    妈咪哄育儿网,妈咪妈咪哄,妈咪们的网上家园。

    网站地址:http://www.mammyhome.com

    mammyhome_index

    分类: 成功案例 标签: ,

    [成功案例]百城学车网100CO.COM

    2009年10月13日 biaoest 没有评论

    百城学车网,全国学车网上平台。

    百城学车网是一个专业的驾培咨询机构,我们旨在为学员展示最优秀的教练员,通过与教练员团队密切的沟通,在为学员提供优惠的价格之余,还为学车的服务质量提供有力保障。

    网站地址:http://www.100co.com

    100co_index

    分类: 成功案例 标签:

    [成功案例]壹电讯1MOBILE.COM.CN

    2009年10月13日 biaoest 没有评论

    壹电讯,香港商家,潮流手机专卖。

    网站地址:http://www.1mobile.com.cn/

    1mobile_index

    分类: 成功案例 标签: ,