分类目录归档:我的作品

今天给xpad加上了QQ机器人功能

感谢 http://im.jecat.cn/demo/ 提供的开源qq机器人程序

今天把qq机器人整到我的xpad应用中去了,但因为qq机器人程序运行在美国的vps上,xpad运行在新浪的sae上。所以速度有些迟缓。

新给xpad加的qq机器人,用户注册xpad后,直接在后台进行绑定qq号操作,然后添加机器人的qq号为好友,就可以使用xpad便捷的qq机器人服务了。

http://xpad.sinaapp.com

 

1.png2.png3.png4.png5.png6.png

自己写的一个php mvc框架,加示例26k

自己写的一个框架,用它做过一些项目,开发效率上还可以。小型框架,主要的部分:

mysql原生或是pdo支持、 缓存处理、 支持memcache 、支持session入库 、session入memcache 、 4种链接方式可选  、生成html、rbac管理、分页处理

提供下载,放出来让php高手们看看,有bug或是不合理的地方,还请大家能指出,谢谢了!

另外:本框架是自己使用,不做为框架产品供大家使用,如果使用后产生的一切类似安全方面的后果自负,同时也不会做版本的更新!

xzyframework.zip

分享一个c#的tcp服务器客户端通讯程序

svn.png

解决远程更新svn的问题。

服务器A做为测试服务器,需要经常通过svn更新到最新版本。但是测试服务器每次都要管理员手工去更新,比较麻烦,所以写了个简单的基于tcp的服务器程序及客户端程序,同事们当要上传svn后需要更新测试服务器时,只需用客户端输入要更新的项目,点击更新SVN就可以了。并会把svn.exe程序执行的结果输出到客户端的文本框中

全部c#源程序下载 :

2010.rar

xpad网络便签本基本完工,开放注册及下载

感谢新浪云计算平台提供的云计算服务

官方地址:http://xpad.sinaapp.com

xpad客户端:http://xpad.sinaapp.com/xpad.zip

程序采用vs2008开发,windows7系统可直接安装,windows xp则还需安装.net framework 3.5

.net framework 3.5下载:点 击下载X86_XP&2003精简版离线安装包


项目动态

xpad web版完工,主要功能:查看、编辑及新建便签

xpad桌面版完工,主要功能:查看、编辑及新建便签

目前xpad因为工作原因,需要放一段时间,以后陆续增加新的功能及支持手机平台。

同时也欢迎大家一起来使用它,有好的建议及想法或是bug也请告之!

今天截取了一些软件图,供不知道xpad的朋友有一个大致的了解!

 

x1.png2.png3.png4.png5.png6.png7.png8.png9.png10.png

针对Serv-U服务器日志进行监控,获取成功上传的文件信息

最近一项目windows平台,需要针对 Serv-U ftp服务器进行实时监控,从而得知上传的成功后的文件信息,并且通过post提交给php进行分析处理

所以最后决定采用c#编写一个针对ftp日志文件的实时监控的windows服务,通过监控serv-u设置的日志文件大小变化进行分析,并且得到上传成功的文件路径

windows服务编写还好,就是调试有些困难,很少用c#.代码写得还是得简陋了些

主要功能:

xml格式的配置文件,在配置文件中指定ftp日志文件根目录,http请求地址及监控日志存放位置

按日期生成监控系统日志

主要代码

 

C#代码
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Diagnostics;  
  6. using System.Linq;  
  7. using System.ServiceProcess;  
  8. using System.Text;  
  9. using System.Net;  
  10. using System.IO;  
  11. using System.Configuration;  
  12. using System.Collections.Specialized;  
  13.   
  14. namespace ftpScan  
  15. {  
  16.     public partial class Service1 : ServiceBase  
  17.     {  
  18.         System.Timers.Timer timer2 = new System.Timers.Timer(4500);  
  19.   
  20.         public Service1()  
  21.         {  
  22.             InitializeComponent();  
  23.         }  
  24.   
  25.         public static string logpath = SystemConfig.GetConfigData("logpath"string.Empty);  
  26.         public static string httpurl = SystemConfig.GetConfigData("httpurl"string.Empty);  
  27.         public static string ftppath = SystemConfig.GetConfigData("ftppath"string.Empty);  
  28.         public static string ScanLogPath = SystemConfig.GetConfigData("ScanLogPath"string.Empty);  
  29.         public static string s1 = " Received file ";  
  30.         public static string s2 = " successfully ";  
  31.         public static long count = 0;  
  32.         public static long size=0;  
  33.   
  34.         public void log(string msg)  
  35.         {  
  36.             System.DateTime currentTime = new System.DateTime();  
  37.             currentTime = System.DateTime.Now;  
  38.             string strFilePath =ScanLogPath + "ftpScan_" + currentTime.ToString("yyyy_MM_dd") + ".log";  
  39.   
  40.             if (!File.Exists(strFilePath))  
  41.             {  
  42.                 FileStream fs = new FileStream(strFilePath, FileMode.Create);  //实例化一个StreamWriter–>与fs相关联    
  43.                 StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);  
  44.                 sw.WriteLine(currentTime.ToString() + " | " + msg);  
  45.                 sw.Close();  
  46.                 fs.Close();  
  47.             }  
  48.             else  
  49.             {  
  50.                 FileStream fs = new FileStream(strFilePath, FileMode.Append);  
  51.                 StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);  
  52.                 sw.WriteLine(currentTime.ToString() + " | " + msg);  
  53.                 sw.Close();  
  54.                 fs.Close();  
  55.             }  
  56.   
  57.         }  
  58.   
  59.         public void http(string dir, string filename)  
  60.         {  
  61.             string url = httpurl + "dir/" + dir + "/file/" + filename;  
  62.             log("提交http处理 目录:" + dir + "  文件名:" + filename);  
  63.             try  
  64.             {  
  65.                 System.Net.WebClient wc = new WebClient();  
  66.                 NameValueCollection na = new NameValueCollection();  
  67.                 na.Add("dir",dir);  
  68.                 na.Add("file",filename);  
  69.                 wc.UploadValues(httpurl, "POST", na);  
  70.                // log(ss.ToString());  
  71.                 //wc.DownloadData(url);  
  72.             }  
  73.             catch  
  74.             {  
  75.                 log("url:" + url + " 无效!");  
  76.             }  
  77.         }  
  78.   
  79.         public void scan()  
  80.         {  
  81.             System.DateTime currentTime = new System.DateTime();  
  82.             currentTime = System.DateTime.Now;  
  83.             char[] s3 = s1.ToCharArray();  
  84.             long count2 = count;  
  85.             string logfile = logpath + "ftp_" + currentTime.ToString("yyyy_MM_dd") + ".log";  
  86.   
  87.             //Console.WriteLine(logfile);  
  88.             if (!File.Exists(logfile))  
  89.             {  
  90.                 log("今日日志文件 " + logfile + " 不存在,已成功创建空的今日日志文件!");  
  91.                 FileStream fs = new FileStream(logfile, FileMode.Create);  //实例化一个StreamWriter–>与fs相关联    
  92.                 fs.Close();  
  93.             }  
  94.             else  
  95.             {  
  96.   
  97.                 System.IO.FileInfo f = new FileInfo(logfile);  
  98.                 //MessageBox.Show(f.Length.ToString());   
  99.                 if (f.Length != size)  
  100.                 {  
  101.                     StreamReader sr = new StreamReader(logfile);  
  102.   
  103.                     string content = sr.ReadToEnd();  
  104.                     string[] arr = content.Split("".ToCharArray());  
  105.                     sr.Close();  
  106.                     if (arr.Length > count)  
  107.                     {  
  108.                         long n = 0;  
  109.                         foreach (string re in arr)  
  110.                         {  
  111.                             string s = re;  
  112.                             if (n >= count)  
  113.                             {  
  114.                                 //Console.WriteLine(s);  
  115.                                 if (s.Contains(s1) && s.Contains(s2))  
  116.                                 {  
  117.                                     s = s.Replace(s1, "|");  
  118.                                     s = s.Replace(s2, "|");  
  119.                                     Console.WriteLine(s);  
  120.                                     string[] ary = s.Split("|".ToCharArray());  
  121.                                     s = ary[1];  
  122.                                     s = s.Replace(ftppath, "");  
  123.                                     string[] ary2 = s.Split("\\".ToCharArray()); 
  124.                                     if (ary2.Length == 2) 
  125.                                     { 
  126.                                         this.http(ary2[0], ary2[1]); 
  127.                                     } 
  128.                                 } 
  129.                             } 
  130.                             n++; 
  131.                         } 
  132.                          
  133.                     } 
  134.                     else  
  135.                     { 
  136.                         long n = 0; 
  137.                         foreach (string re in arr) 
  138.                         { 
  139.                             string s = re; 
  140.  
  141.                                 //Console.WriteLine(s); 
  142.                             if (s.Contains(s1) && s.Contains(s2)) 
  143.                             { 
  144.                                 s = s.Replace(s1, "|");  
  145.                                 s = s.Replace(s2, "|"); 
  146.                                 Console.WriteLine(s); 
  147.                                 string[] ary = s.Split("|".ToCharArray()); 
  148.                                 s = ary[1]; 
  149.                                 s = s.Replace(ftppath, "");  
  150.                                 string[] ary2 = s.Split("\\".ToCharArray()); 
  151.                                 if (ary2.Length == 2) 
  152.                                 { 
  153.                                   this.http(ary2[0], ary2[1]); 
  154.                                 } 
  155.                             } 
  156.                             n++; 
  157.                         } 
  158.                     } 
  159.                     log("监控到了更新,原行:" + count.ToString() + " 原大小:" + size.ToString() + " 【新行:" + arr.Length.ToString() + " 新大小:" + f.Length.ToString() + ""); 
  160.                     count = arr.Length; 
  161.                     size = f.Length; 
  162.                      
  163.                 } 
  164.             } 
  165.             //Contains //查找字符串 
  166.         } 
  167.  
  168.  
  169.         protected override void OnStart(string[] args) 
  170.         { 
  171.             //log("启动监控ftp日志服务!");  
  172.             //Process.Start("D://test//scoutFolder.exe"); 
  173.             log("启动监控ftp日志服务!"); 
  174.  
  175.             timer2.Elapsed += new System.Timers.ElapsedEventHandler(theout); 
  176.             timer2.Enabled = true; 
  177.         } 
  178.  
  179.         protected override void OnStop() 
  180.         { 
  181.             timer2.Enabled = false; 
  182.             log("停止监控ftp日志服务!");  
  183.         }  
  184.   
  185.         public void theout(object source, System.Timers.ElapsedEventArgs e)  
  186.         {  
  187.   
  188.             scan();  
  189.         }  
  190.     }  
  191. }  

昨天花一个晚上时间重新写了一下聊天室程序[9/25修正3]

2009年9月24日改进情况
1、取消以前读取聊天信息时对用户表进行联表查询,定时ajax刷新聊天信息时,只读msg一个表
2、msg表设为内存表,加快存取速度。
3、精简ajax传输数据库及mysql取出数据量。

九月24日修改2

再次修改正发言时同时显示两条相同信息,完美解决发言时不能即时上屏的问题。

九月23日修改1

修正二个问题(1、session会不自动失效。2、发言时同时显示两条相同的信息)

采用自己土制的简易MVC框架进行发行

运行要求:mysql +php5.2以上版本 需支持json pdo

程序名:℃冻番茄Ajax聊天室第二版

本聊天程序不适合大型应用,mysql的聊天室,功能太局限了,如果需要做深入开发或效率调整请联系我(qq:72799915)

下载:

在线演示:http://www.ye55.net/chat

功能:

chat[修3].rar

1、session存入数据库

2、会员注册、登陆

3、在线会员列表

4、私聊功能

5、自定义聊天文字颜色及背景色

chat.pngcat1.pngcat2.pngcat3.png

SaBlogClient 1.0发布(支持sablog1.6和2.0)

现已支持sablog 1.6 和sablog 2.0,如其它bug问题,欢迎留言!

需安装Microsoft .NET Framework 3.5 安装客户端时自动下载安装Microsoft .NET Framework 3.5

客户端下载后直接安装使用,第一次使用时,请先点配置,输入php端地址 管理员用户名及密码及可。

php服务端,直接解压后上传至sablog 根目录下,打开http://您的网址/client/

能打开则表示安装服务端成功!

 无标题.jpg

客户端下载

sablogclientsetup.rar

php服务端下载

client.rar