2006年09月27日

昨天9月26日,是我入职的第三个月。
回首3个月的时间,好快…
学到的东西感觉比4年还多。最大的感触就是,上班下班的时候怎么tmd那么拥挤阿!!!
没有亲身经历过每天早上和下班的时候挤公交车的场景的人是无法想象那样痛苦的感觉的。一个小小的巴士,差不多要塞上100个人,车厢内的拥挤程度,气味浓度,绝对比养鸡场的鸡舍还差劲。
技术上的东西,也学到了不少,从刚开始对jsp一窍不通,到现在的还成。我感觉也算我学得比较快的了。毕竟以前我根本没有接触过jsp。还有一点就是ajax的学习,很感谢我的leader的指点。
游戏方面,通过我的努力终于摆脱了长宽的纠缠,换上了还成的adsl。顺畅多了。
昨天,也就是昨天,经历了第一次的裁员,对我的震撼,无法表达。
我的想法是,多学点东西,裁就裁吧,大不了再找个。无所谓了。

2006年09月14日

import java.io.*;
import java.lang.*;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
public class ResizeImg
{
 private String srcFile;
 private String destFile;
 private int w;
 private int h;
 private Image img;
 
 /**
  * 构造函数
  * @param filename 原图片名称 
  * @param resizefilename 新图片名称
  * @throws IOException
  */
 public ResizeImg(String filename,String resizefilename) throws IOException
 {
  File _file = new File(filename); //读入文件
     this.srcFile = _file.getName();
     this.destFile = resizefilename;
     img = javax.imageio.ImageIO.read(_file); //构造Image对象
     w = img.getWidth(null); //得到源图宽
     h = img.getHeight(null); //得到源图长
 }
 /**
  * 缩略图–剪切方法
  * @param x  新图的长
  * @param y  新图的高
  * @return
  */public boolean cutImg(int x, int y)
   {
   float factor = getCutFactor(x,y);
   if((int)(factor)>1)
    factor =1;
   int new_x = (int)(w*factor);
   int new_y = (int)(h*factor);
   if(w<x)
    new_x = w;
   if(h<y)
    new_y = h;
  
   int start_x = (x-new_x)/2;
   int start_y = (y-new_y)/2;
  
   BufferedImage _image = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);
    Graphics g = _image.getGraphics();
    g.setColor(Color.WHITE);
    g.fillRect(0,0,x,y);
    //System.out.println(factor);
    //System.out.println(w+"-"+h+"-"+new_x+"-"+new_y+"-"+start_x+"-"+start_y);
    //以原始大小在新图上画旧图,以偏移坐标为偏移,从而得到旧图的中间部分
    if(g.drawImage(img,start_x,start_y,new_x,new_y,null))
    {
     FileOutputStream out;
     try {
     out = new FileOutputStream(destFile);
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
     try {
      encoder.encode(_image);
      out.close();
     } catch (ImageFormatException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
      return false;
     } catch (IOException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
      return false;
     } //近JPEG编码
     
    } catch (FileNotFoundException e) {
     // TODO 自动生成 catch 块
     e.printStackTrace();
     return false;
    } //输出到文件流
    }
    else
    {
     return false;
    }
   return true;
    
   }
  /**缩略图-压缩方法
  * @param x
  * @param y
  * @return
  */
 public boolean resize(int x,int y)
  {
   float factor = getFactor(x,y);
   int new_x = (int)(w*factor);
   int new_y = (int)(h*factor);
   if(w<x)
    new_x = w;
   if(h<y)
    new_y = h;
   int start_x = (x-new_x)/2;
   int start_y = (y-new_y)/2;
  
  
   BufferedImage _image = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);
    Graphics g = _image.getGraphics();
    g.setColor(Color.WHITE);
    g.fillRect(0,0,x,y);
    //以new_x,new_y为大小在x,y大的图片上,从start_x,start_y开始画图
    if(g.drawImage(img,start_x,start_y,new_x,new_y,null))
    {
     FileOutputStream out;
     try {
     out = new FileOutputStream(destFile);
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
     try {
      encoder.encode(_image);
      out.close();
     } catch (ImageFormatException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
      return false;
     } catch (IOException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
      return false;
     } //近JPEG编码
     
    } catch (FileNotFoundException e) {
     // TODO 自动生成 catch 块
     e.printStackTrace();
     return false;
    } //输出到文件流
    }
    else
    {
     return false;
    }
   return true;
  }
  /**返回小的比例因子
  * @param x
  * @param y
  * @return
  */
 public float getFactor(int x,int y)
  {
   if((w/x)>(h/y))
    return (float)x/w;
   else
    return (float)y/h;
  }
  /**
   * 返回大的比例因子
   * @param x
   * @param y
   * @return
   */public float getCutFactor(int x,int y)
  {
   if((w/x)>(h/y))
    return (float)y/h;
   else
    return (float)x/w;
  }
   /**
    * 获取目标文件名
    * getDestFile
    */
   public String getDestFile() {
     return destFile;
   }
   /**
    * 获取图片原始宽度
    * getSrcWidth
    */
   public int getSrcWidth() {
     return w;
   }
   /**
    * 获取图片原始高度
    * getSrcHeight
    */
   public int getSrcHeight() {
     return h;
   }
   public static void main(String[] args)
   {
    ResizeImg ri = null;
  try {
   ri = new ResizeImg("RR1_T7DeWDLqELA0.jpg","RR1_T7DeWDLqELA0_thumbnail.jpg");
   ri.resize(500,500);
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
   
   }
}

package mop.gamespace.dkp;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;

import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**parseobj class
 * @author Administrator
 *
 */
public class ParseRaidTracker {
 
 private String RaidTime;
 
 private ArrayList joinXml;

 private ArrayList leaveXml;

 private ArrayList lootXml;
 
 private String savefilename = "./temp.xml";

 public ParseRaidTracker() {

  RaidTime = new String();
  joinXml = new ArrayList();
  leaveXml = new ArrayList();
  lootXml = new ArrayList();
 }
 
 /**parseObjFromStr
  * @param str
  * @return ArrayList
  */
 public ArrayList parseObjFromStr(String str)
 {
  String checkstr;
  checkstr = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
  if(str.indexOf(checkstr)== -1)
   str = checkstr +str;
  File file = new File(savefilename);
  BufferedWriter bw = null;
  try {
   bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
   bw.write(str);
   bw.flush();
  } catch (FileNotFoundException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  finally
  {
   try {
    if(bw != null)
    {
     bw.close();
    }
   } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
   }
   
  }
  return parseObjFromFile(savefilename);
  
 }
 /**parseObjFromFile
  * @param filename
  * @return ArrayList
  */
 public ArrayList parseObjFromFile(String filename) {
  ArrayList returnAL = new ArrayList();
  try {
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(new File(filename));
   Element ee = document.getRootElement();

   Iterator t;
   Element element;
   t = ee.elementIterator("key");
   element = (Element) t.next();
   RaidTime = element.getStringValue();
   t = ee.elementIterator("Join");
   element = (Element) t.next();
   joinXml = parsejoinElement(element);
   t= ee.elementIterator("Leave");
   element = (Element) t.next();
   leaveXml = parseleaveElement(element);
   t = ee.elementIterator("Loot");
   element = (Element) t.next();
   lootXml = parselootElement(element);
   
   returnAL.add(RaidTime);
   returnAL.add(joinXml);
   returnAL.add(leaveXml);
   returnAL.add(lootXml);

  } catch (DocumentException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  } finally {
   
  }
  return returnAL;

 }

 /**parsejoinElement
  * @param _element
  * @return ArrayList
  */
 public ArrayList parsejoinElement(Element _element)
 {
  ArrayList eleArr = new ArrayList();
  Element elementKey;
  Element element;
  JoinPlayer obj;
  JoinPlayer tmpobj;
  Iterator tmpIterator;
  boolean flg = true;
  int j = 0;
  for (Iterator i = _element.elementIterator(); i.hasNext();)
  {
   flg = true;
   elementKey = (Element) i.next();
   obj = new JoinPlayer();
   tmpIterator = elementKey.elementIterator("player");
   element = (Element) tmpIterator.next();
   obj.setplayer(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("race");
   element = (Element) tmpIterator.next();
   obj.setrace(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("class");
   element = (Element) tmpIterator.next();
   obj.setclass(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("level");
   element = (Element) tmpIterator.next();
   obj.setlevel(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("time");
   element = (Element) tmpIterator.next();
   obj.settime(element.getStringValue().trim().replace("\’","\\\’"));
   for(j=0;j<eleArr.size();j++)
   {
    tmpobj = new JoinPlayer();
    tmpobj = (JoinPlayer)eleArr.get(j);
    if(tmpobj.getplayer().equals(obj.getplayer()))
    {
     flg = false;
     break;
    }
   }
   if(flg)
    eleArr.add(obj);
  }
  return eleArr;

 }
 /**parseleaveElement
  * @param _element
  * @return ArrayList
  */
 public ArrayList parseleaveElement(Element _element)
 {
  ArrayList eleArr = new ArrayList();
  Element elementKey;
  Element element;
  LeavePlayer obj;
  Iterator tmpIterator;

  for (Iterator i = _element.elementIterator(); i.hasNext();)
  {
   elementKey = (Element) i.next();
   obj = new LeavePlayer();
   tmpIterator = elementKey.elementIterator("player");
   element = (Element) tmpIterator.next();
   obj.setplayer(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("time");
   element = (Element) tmpIterator.next();
   obj.settime(element.getStringValue().trim().replace("\’","\\\’"));

   eleArr.add(obj);
  }
  return eleArr;

 }
 /**parselootElement
  * @param _element
  * @return ArrayList
  */
 public ArrayList parselootElement(Element _element)
 {
  ArrayList eleArr = new ArrayList();
  Element elementKey;
  Element element;
  LootItem obj;
  Iterator tmpIterator;

  for (Iterator i = _element.elementIterator(); i.hasNext();)
  {
   elementKey = (Element) i.next();
   obj = new LootItem();
   tmpIterator = elementKey.elementIterator("ItemName");
   element = (Element) tmpIterator.next();
   obj.setitemname(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("ItemID");
   element = (Element) tmpIterator.next();
   obj.setitemid(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("Color");
   element = (Element) tmpIterator.next();
   obj.setcolor(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("Count");
   element = (Element) tmpIterator.next();
   obj.setcount(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("Player");
   element = (Element) tmpIterator.next();
   obj.setplayer(element.getStringValue().trim().replace("\’","\\\’"));
   tmpIterator = elementKey.elementIterator("Time");
   element = (Element) tmpIterator.next();
   obj.settime(element.getStringValue().trim().replace("\’","\\\’"));
   
   eleArr.add(obj);
  }
  return eleArr;

 }

}

2006年09月09日

这周的工作忙碌而混乱…
不过,感觉学到了不少东西。
       首先,java方面:总的感觉是,第一次感觉到了面向对象编程的巨大的优势,项目越大优势越明显。虽然,面向对象的基础还是基于面向过程的。但是在比较大的项目中,面向对象的方法就表现出了他对对象操作的方便性和安全性,二次开发的便捷性的巨大优势。开发中,明显感觉自己的思想比较混乱,理不清一些东西,总是搞得自己晕头转向的,犯一些很小很小的错误又得花很长很长的时间去解决。

       然后,是js方面的突飞猛进。虽然说以前开发的时候就用到了ajax技术,但这次用到的更多,学习得更加具体,对innerHTML的改变,getElementByID的获取,对具体对象的具体操作,增加子对象,访问父对象数据库方面需要的数据,等等。

       其次,对数据库的学习更加深入。第一次学习了如何联合查询,以前都是傻乎乎的一个表一个表的查询,现在知道,可以把几个相关表联合起来一起获得需要的数据的。。。特别今天还学习到了数据库中对日期的操作,比如说,RaidDate + Interval 14 day >now() 就是说:选出2周以内的Raiddate数据。distinct的用法等等

         最后,总结一周的工作,学习到了不少,但是比较乱,后面加油。

2006年09月01日

需要些钱去干些事情。

但是,现在没有钱,去那里弄呢?贷款。

但是去了好几家银行问了,都没有适合我的小额贷款,我该怎么办呢…

今天才知道,return不要写在finally里,好无知。

受教了…