原创 关于医疗站转化率的思考

2010年8月26日 南边孩子 没有评论

        因为接近月底,各种考核绩效也开始了,当然对于网络营销来说,流量跟对话量是最大的考核标准,不过最近手上的几个站,流量对话量都有所下降。
       要过8月份的对话词记录详细观察了两天,感觉能产生对话的大部分是比较具体的词,比如鲜红斑痣治疗后图片,鲜红斑痣怎么治,北京鲜红斑痣治疗多少钱,鲜红斑痣治疗有没有副作用,效果怎么样,治疗鲜红斑痣最好的医院,北京有哪些治疗鲜红斑痣的医院,鲜红斑痣北京哪所医院好,哪里治疗鲜红斑痣最好等等;
        阅读全文…

分类: 北漂学堂 标签:

原创 看图不说话

2010年8月18日 南边孩子 1 条评论

 

分类: 站长日记 标签:

原创 百度官方seo优化指南.pdf下载

2010年8月16日 南边孩子 没有评论

   公司有同事去了上周六百度新闻发布会现场,给其他的同事带回百度官方seo优化指南,中午很仔细的看了,内容很实在很朴实;可能对于刚入门的新手来说,这本指南确实是个不错的指导方向,对于那些已经从事SEO行业的朋友来说,未免太小儿科了点;但不管怎样,SEO的最终目标都是提高网站核心价值,达到建站的最基本的目的。咱们做SEO始终不该忘记这一点。流量也好,收录也好,转化率也好都只是考核网站成功与否的一个参数疑惑说是标准,我们应该努力去实现这些转化,而不是只盯着流量、收录、转化率,除此之外,我们应该还有更多要关注的东西。

ps:百度官方seo优化指南 下载

原创 Extjs ComboBox几个小问题- 不显示值.获取输入值

2010年8月11日 懒猫 1 条评论

     1:ComboBox加载数据之后,ComboBox里面的值跑位,不能正确对应到ComboBox里面。
原因:因为要传name的值到服务器端,使用到了隐藏属性hiddeName来传值,hiddenName的名是要和name一样的。如果id和name设置为相同的,就会不能正确对应。所以,comboBox的id和name 不能设置一样
new Ext.form.ComboBox({
id:”comboId”,
name:”comboName”,
hiddenName:”comboName”
});
阅读全文…

原创 医疗站seo常见问题集锦(一)

2010年8月9日 南边孩子 没有评论

     一:专题页面不够聚合;
         合理解决方式:专题专题就是把所有的相关内容,用合理简洁的方式集合起来,围绕该专题形成一个完整的知识系统。
    二:文章质量不够, 通篇都是一个模式,第一句标题,首段一句话还是标题,中间段的第一句话还是标题,最后结尾雷打不动套用一句引导譬如请与我们的在线专家咨询等等;
        合理解决方式:文章是写给访客看的,在写文章的过程中,始终站在自己是用户的角度来写,比如我这篇文章是写给谁看的,能给看文章的人带来什么?是解决疾病治疗价格还是传达疾病方面的知识。如果是我的朋友看见这篇文章,他们是什么样的心情,我把事情说明清楚了没有?有没有给朋友带来真正有价值的信息。

    阅读全文…

原创 怎样快速精准的在网上搜索资料

2010年8月4日 南边孩子 没有评论

       最近一直碰到同学朋友问问题,其实很多问题百度GOOGLE一下就能找到,但大家的心态可能是于得到答案,或者是懒于去搜索?今天春问我,怎样才能快速精准的在网上搜索自己想要的资料了,因为玩的比较好,直接回过去,自己百度去;那边委屈的说,已经百度过了,没找到相关答案。
       对于春的问题,我想很多朋友都会遇到,尤其是对搜索引擎不是很了解的人。当然并不是说了解搜索引擎原理,搜索信息就很厉害。下面晓C就为大家整理一些快速精准搜索信息的方法.

     阅读全文…

原创 js 屏蔽IE刷新

2010年8月3日 懒猫 没有评论

   以下代码是如何利用javascript 实现屏蔽F5,BackSpace,IE的刷新,右键,退格键。

    屏蔽F10、F11、   能支持IE 和 火狐,

阅读全文…

原创 关于SEO的思考

2010年7月30日 南边孩子 2 条评论

      最近换了工作,由以前的分类信息站,转行到医疗健康站,对于大部分的seo来说,换行业不会存在很大的问题。但我个人觉得如果对所操作站业务知识(产品)不熟悉,很难达到流量收录转化率的目标;当然seo对于任何一个网站都是相通的,无非就是内链,内容,外链;若我们能抛开这些收录流量来说,在转行率上面下功夫,那就不单只是SEO的技术问题了,或许我们该考虑用户体验用户习惯,站在用户的角度去考虑更多的东西,seo到了最后,该回归建站的本质,为用户带来更好的体验,为用户提供更好的知识内容产品服务,做到实体产品跟网站展示产品一样。SEO始终该遵循一个原则,那就是一切有益于用户体验的行为都有助于提升网站权重;因此我们应该不停的寻找、探索、以及加以总结互联网规律,以此来应瞬间万变的互联网,并加以利用。这样的做站方式,至少在我目前看来是行得通的。

原创 GridPanel动态列

2010年7月13日 懒猫 3 条评论

     动态列的实现,关键点在于怎么在后台传送数据到前台,在前台如何去组装数据,组装列模型。在加载列数据的时候,是通过Ajax异步处理,那就是要先加载列头,然后再加载列值数据。那我们可以通过两个请求分别处理列头和列值,一个请求用来,从数据库将所有的列头信息返回。一个请求用来获得列值数据。得到的列头的信息也是通过Ajax返回到前台。

     阅读全文…

原创 Ext.form.formPanel 与服务器交互 初始化表单

2010年7月9日 懒猫 2 条评论

    formPanel 初始化表单有两种方式加载,一种是本地加载,一种是通过返回回来的Json格式数据加载到表单里面。
得到表单来加载数据的时候,必须用form.getForm(), 得到basicForm()这个对象,formPanel是继承自basciForm()
本地加载通过form.getForm.loadRecord() 加载,传入的一个记录集(new Ext.data.record.create())。 根据相应的映射会自动匹配到表单的每个文本框。
   比如,通过点击表格的编辑事件,得到表格记录的行数据。
var updateGrid = Ext.getCmp(“displayEmpGrid”);
var rows = updateGrid.getSelectionModel().getSelections();
if (rows) {
//for (var i = 0; i < rows.length; i++) {
alert(rows[0].imageUpload);
form.getForm().loadRecord(rows[0]); //将数据集加载到表单中,直接获取表格的数据
Ext.get(‘imageBrowse’).dom.src = “images/anniubg.gif”;
//}
}
   但是将所有的数据放到页面,然后从页面这样子加载,不太推荐,加载所有的数据到页面会加重页面负担。。

   远程加载是通过 form.getForm().load()加载。
// 解析后台返回的数据
form.getForm().reader = empReader;

// 从后台加载json格式数据
form.getForm().load({
url : “employee_selectByPrimaryEmployee.action”,     
method : “POST”,
params : {
empNo : empNo //参数
}
});

var empReader = new Ext.data.JsonReader              //解析Json格式数据。({                                                                                                                                                                                                                                                  

  name:”empNo “,

 mapping:”empNo”      //为json数据里面 对应的属性值 

},{name:”empName”, mapping:”empName”});

//json数据,即action中 selectByPrimaryEmployee 所要返回到页面的json数据格式 

var  json = [{empNo:"111",empName:"小王"}];

    printwrite.print(json);   //将数据返回到前台

   这样子就是通过将服务器数据加载到表单显示。一定要注意,加载本地和加载远程不要用错方法了,加载远程是用load(),里面传的url。 本地用 加载用loadRecord(),直接传入一个记录集,就可以加载进去。

分类: java日记 标签:

原创 诡异,网站打不开

2010年7月8日 南边孩子 1 条评论

     最近博客”北漂一族”经常打不开,尤其是白天在公司打不开,奇怪的是晚上回家就能打开,而且速度奇快?这是个非常诡异的现象,怎么说一天的IP也在50-100左右徘徊?南边孩子郁闷的是既然本人打不开,那为什么别人能打开,难道godaddy  部分地区被限制还是其他什么原因了?
    值得庆幸的是,这次”北漂一族”的收录终于开始上升,快照也比之前的7天更新一次,上升到5天内,这是个很好的现象。加油,继续保持! 阅读全文…

分类: 站长日记 标签:

原创 Extjs 上传图片预览显示

2010年6月30日 懒猫 1 条评论

var fileForm = new Ext.form.FormPanel({
title : “”,
renderTo : “fileUpload”,
fileUpload : true,
layout : “form”,
id : “fileUploadForm”,
items : [{
id : ‘upload’,
name : ‘upload’,
inputType : “file”,
fieldLabel : ‘上传图片’,
xtype : ‘textfield’,
anchor : ‘40%’

阅读全文…

原创 checkbox 全选 反选的实现方法

2010年6月29日 南方 1 条评论

      checkbox 默认是可以多选的。但在很多时候,我们会遇到需要对某些数据进行 批量更新 或者 批量上传 之类的操作。 这时候就要用到checkbox的全选和反选功能了。全选, 就是把多个checkbox同时选中; 反选, 就是把多个已被选中的checkbox切换到未选中状态。

     其实实现checkbox的全选和反选功能很简答,下边我们举个简答的例子说明一下:

     首先,用html定义一组checkbox表单, 代码如下:

     <form name=”customizeContentForm”>

     <checkbox name=”blockId” />

     <checkbox name=”blockId” />

     <checkbox name=”blockId” />

     <checkbox name=”blockId” />

     <input type=”button” onclick=”selectAll(true)” value=”全选”/>

     <input type=”button” onclick=”selectAll(false)” value=”反选”/>

     </form>

     这里,我们定义了4个checkbox元素和两个button元素:全选 和 反选。值得注意的是,这里我们对这些checkbox使用了相同的name:blockId. 这是我们做批处理的时候经常用到的,这样做是为了简化前台与后台的处理。 当然,用不同的name也是可以的,不过那样前后台处理就比较麻烦了。既然都可以达到相同的效果,那何不选择简单的呢?是不是?有一句话不是说:简单之美吗?哈哈,所以很多时候,我们不要把简单的问题复杂化,也算是一个程序员的历练吧。

     接下来我们要实现的是,但用户点击 “全选”  按钮的时候,所有checkbox同时被选中。 反之,当用户点击 “反选”  按钮的时候,所以按钮同时处于不选中状态。要实现这个效果,我们需要写一些js代码来实现:

     function selectAll(flag) {
if (document.customizeContentForm.blockId != null ) {
var len = document.customizeContentForm.blockId.length;
if (len > 1) {
for (var i = 0; i < len; i++) {
document.customizeContentForm.blockId[i].checked = flag;
}
}
else {
document.customizeContentForm.blockId.checked = flag;
}
}
}

     可以看到我们是通过checkbox的onclick事件来触发选中状态的,但点击 全选 按钮的时候,遍历表单中的所有checkbox,并把每个checkbox的checked属性设置为true ,这样所有的checkbox就同时被选中了。反之,把所有checkbox的checked属性设置成false,所有的checkbox就都处于不选中状态了。

     很简单吧!嘿嘿。。。。

原创 Extjs + struts2 上传文件

2010年6月29日 懒猫 没有评论

     昨天一直在弄文件上传,之前没有太明白是文件上传是怎么回事,今天试验成功了,也有点了解了。也就是将本地文件通过http文件写入到服务器,通俗的讲就要上传就是直接文件将文件从一个位置拷贝一份到另外一个地方,而另外一个地方指的就是在服务器里面的一个文件里面。那就只要先获得目标文件的路径,wap下面的存文件的文件夹路径。然后再通过流输入到指定文件里面。

js 代码
Ext.onReady(function() {
var fileForm = new Ext.form.FormPanel({
title : “”,
renderTo : “fileUpload”,
fileUpload : true,
layout : “form”,
id : “fileUploadForm”,
items : [{
id : 'upload',
name : 'upload',
fieldLabel : "选择",
inputType : "file",
xtype : "field"
}],

buttons : [{
text : "提交",
name : "submit",
handler : submit
}]
});

});

function submit() {
Ext.getCmp(“fileUploadForm”).getForm().submit({

url : “uploadAction.action”,
method : “POST”,
success : function(form, action) {
alert(“success”);
},
failure : function(form, action) {
alert(“failure”);
}
});
}

action代码

package com.cocobra.action;

import java.io.*;
import java.util.Date;
import java.util.UUID;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {

 /**
  *
  */
 private static final long serialVersionUID = 1L;
 private File upload;
 private String uploadContentType;
 //这里要注意一点,uploadFileName 中的 upload 要与传入过来的File名字一样,不然获取不到文件的名字,今天就因为这里不一致,找了一上午没找到原因
 private String uploadFileName;
 
 public File getUpload() {
  return upload;
 }

 public void setUpload(File upload) {
  this.upload = upload;
 }

 public String getUploadContentType() {
  return uploadContentType;
 }

 public void setUploadContentType(String uploadContentType) {
  this.uploadContentType = uploadContentType;
 }

 public String getUploadFileName() {
  return uploadFileName;
 }

 public void setUploadFileName(String uploadFileName) {
  this.uploadFileName = uploadFileName;
 }

 // 上传文件的文件名
 

// private String getFileExp(String name) {
//  int pos = name.lastIndexOf(“.”);
//
//  return name.substring(pos);
// }
 
 private static final int BUFFER_SIZE = 16 * 1024;
 
 public String execute() throws Exception{
 
  Date d = new Date();
  
  System.out.println(“uploadFileName = “+this.uploadFileName);  //要上传的文件名
  

//获得wapps的路径,uploader 指的放在文件的地方
  String toSrc = ServletActionContext.getServletContext().getRealPath(“uploader”)+”/”+uploadFileName;
 
  System.out.println(“toFile= “+toSrc);
  
  File toFile = new File(toSrc);
 
  
  writeFile(this.upload,toFile);
  
  return SUCCESS;
 }
 private static void writeFile(File src, File dst) {
  
  System.out.println(” == 文件寫入 == “);
  try {
   InputStream in = null;
   OutputStream out = null;
   try {
   
    in = new BufferedInputStream(new FileInputStream(src),   //获得要上传的文件
      BUFFER_SIZE);
    out = new BufferedOutputStream(new FileOutputStream(dst),  //指定要上传到的位置
      BUFFER_SIZE);
    byte[] buffer = new byte[BUFFER_SIZE];    

//开始写入
    while (in.read(buffer) > 0) {
     out.write(buffer);
    }
   } finally {
    if (null != in) {
     in.close();
    }
    if (null != out) {
     out.close();
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  System.out.println(“写入成功!”);
}
}

//struts2.xml 配置文件一段

<action name=”uploadAction” >
       <interceptor-ref name=”fileUpload”>
       <!–拦截器strut2自带的, 指定上传文件的格式,如果不符合规定,将会自动拦截下来 –>
    <param name=”allowedTypes”>image/bmp,image/png,image/gif,image/jpeg,image/jpg</param>
    <param name=”maximumSize”>20000000000</param>
   </interceptor-ref>
      <interceptor-ref name=”defaultStack” />
      <result name =”success” >/index.jsp</result >
  </action>

原创 MyEclipse7.5注册码 序列号 Java版注册机源代码

2010年6月25日 懒猫 没有评论

    下载 MyEclipse7.5后执行以下操作:

   1、建立java Project,任意取个名字就行。

   2、建立一个名字为MyEclipseGen的类文件,内容见附件。

   3、运行该代码,在控制台中会出现:

   please input register name:

   ×××××(你的name)

   即生成序列号:

   4、进入myeclipse,输入Subscriber和Subscription code即可。

   附件:

   import java.io.BufferedReader;

   import java.io.IOException;

   import java.io.InputStreamReader;

   public class MyEclipseGen {

   private static final String LL = “Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.”;

   public String getSerial(String userId, String licenseNum) {

   java.util.Calendar cal = java.util.Calendar.getInstance();

   cal.add(1, 3);

   cal.add(6, -1);

   java.text.NumberFormat nf = new java.text.DecimalFormat(“000″);

   licenseNum = nf.format(Integer.valueOf(licenseNum));

   String verTime = new StringBuilder(“-”).append(

   new java.text.SimpleDateFormat(“yyMMdd”).format(cal.getTime())).append(“0″).toString();

String type = “YE3MP-”;

String need = new StringBuilder(userId.substring(0, 1)).append(type)

.append(“300″).append(licenseNum).append(verTime).toString();

String dx = new StringBuilder(need).append(LL).append(userId)

.toString();

int suf = this.decode(dx);

String code = new StringBuilder(need).append(String.valueOf(suf))

.toString();

return this.change(code);

}

private int decode(String s) {

int i;

char[] ac;

int j;

int k;

i = 0;

ac = s.toCharArray();

j = 0;

k = ac.length;

while (j < k) {

i = (31 * i) + ac[j];

j++;

}

return Math.abs(i);

}

private String change(String s) {

byte[] abyte0;

char[] ac;

int i;

int k;

int j;

abyte0 = s.getBytes();

ac = new char[s.length()];

i = 0;

k = abyte0.length;

while (i = 48) && (j = 65) && (j = 97) && (j <= 122)) {

j = (((j – 97) + 13) % 26) + 97;

}

ac[i] = (char) j;

i++;

}

return String.valueOf(ac);

}

public MyEclipseGen() {

super();

}

public static void main(String[] args) {

try {

System.out.println(“please input register name:”);

BufferedReader reader = new BufferedReader(new InputStreamReader(

System.in));

String userId = null;

userId = reader.readLine();

MyEclipseGen myeclipsegen = new MyEclipseGen();

String res = myeclipsegen.getSerial(userId, “5″);

System.out.println(“Serial:” + res);

reader.readLine();

} catch (IOException ex) {

}

}

}

我运行后的结果:

please input register name:

selina

Serial:fLR8ZC-855550-6851795814938907

注:private static final String LL = “Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.”;

此段代码常量不可变更 否则注册码无效

可以用到2013年6月24日哟。。