豆腐生活

豆腐的平静生活
随笔 - 129, 评论 - 906, 引用 - 60

导航

关于

豆腐制作 都是精品

每月存档

最新留言

广告

Gmail多米诺效应

Report: Hotmail To Offer 250 MB Free Storage  除了Yahoo!之外,hotmail也要给大家提供更大的邮件空间了。从这一点来讲,我喜欢Gmail.
除了国外的传统email服务商,国内的比如163,23,sina也打着各种各样的招牌,宣布自己也要增加邮箱的空间。联想起当年,一窝蜂的降低邮箱大小,不得不感慨一下国内的@$!$!$%@#$%#$%

说起感慨国内,这个也许更能说明一些问题。 ,不过既然敢打出Gmail的牌子,为什么只给提供25M的空间呢?


这个编辑器的一个Tip:为了保持上个段落的格式,在回车的时候按住Shift,这个是我在CodeProject看到的

现在BlogCn做的比以前好多了,提交的时候自动将blog的内容保存到剪贴板上,这样就算IE出错,也不至于影响blog的情绪,但是这样又带来了新的问题,万一我原来的剪贴板上是有内容的话,怎么办?

posted on 2004-06-25 09:38:00 by roboo  评论(15) 阅读(6155)

控制IE中的IFrame和Frames实现GMail自动登录

终于申请到了自己的Gmail帐户,但是开心说没有自动登录的程序可以收邮件,并且想找一些Gmail的Client API ,并且向我推荐了HTTP 1.1中的WebDav,我可使第一次听说在HTTP 1.1 中除了Post,Get以外增加了这么多的内容,开心同时还告诉我,在Exchange 中已经支持WebDav了。

 

这些先进的东西我不懂,不过我有我的老绝招---控制IE。

其实控制IE是个老题目了,网上也有很多这样的例子,比较突出的就是codeproject上的Yahoo mail.

不过这些都没有解决Frames和IFrame的问题,而很不幸Gmail的登陆是在IFrame中,不过在Visual Assit 的帮助下,这些都不是问题。

代码基本上就是下面了。谁需要完整的例子,可以给我留言。

void getGMailFrame()

{

                       SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);   //生成一个IE窗口的智能指针

                     if (spBrowser){

                            spDispatch=NULL;

                if (SUCCEEDED(spBrowser->get_Document( &spDispatch)))

                                   pDoc2 = spDispatch;

                            if(pDoc2!=NULL)

                            {

                                   pIFrameElementCol=NULL;

                                   CComPtr<IHTMLFramesCollection2>  pIFrameCol;

                                   if (SUCCEEDED(pDoc2->get_frames(&pIFrameCol)))

                                   {

                                          //成功得到页面中所有的Frames

                                          long p=0;

                                          pIFrameCol->get_length(&p);

                                          if(p!=0)

                                          {   //如果有一个以上的Frame,则进一步分析

                                                 for(long i=0;i<=(p-1);i++)

                                                 {    

                                                        VARIANT frameRequested;

                                                        VARIANT frameOut;

                                                        frameRequested.vt = VT_I4 ;

                                                        frameRequested.bstrVal = (BSTR)i;

                                                        pIFrameCol->item(&frameRequested, &frameOut);

                                                        IHTMLWindow2* pIFrameWindow;

                                                        frameOut.pdispVal->QueryInterface(IID_IHTMLWindow2, (void**)&pIFrameWindow);

                                                        IHTMLDocument2* pIFrameDoc;

                                                        pIFrameWindow->get_document(&pIFrameDoc);

                                                        ParseDoc(pIFrameDoc);

                                                 }

                                          }

                                   }

                            }

                     }

              }

       }

}

 

让我郁闷的是,在我写完这个程序以后,我的同事webmote找到了可以直接登入Gmail系统的连接,如果不喜欢这么复杂的登陆,直接访问这个就可以了。

posted on 2004-06-17 17:58:00 by roboo  评论(41) 阅读(9933)

Blog Spammer

最近看到很多Blog上都在讨论Blog Spammer的问题。

Comment Spam: 现状和对策 以及其中的留言都对这个问题进行了很深入的讨论。为了测试大家的理论的正确性,我自己写了一个Spam的软件,看看是否是真的可以做到这一点。

其实这样的程序是很简单的,为了简单起见,我使用了托管C++来写这个工具。

其实这样的工具是很简单的说,不过是大家没有时间做而已。我利用了RSS中提供的comment的键值找到当前可以进行评论的页面,然后用Web Browser控件实现提交即可。

其中可能还有些用处的就是对Rss文件的解析,在CodeProject上http://www.codeproject.com/csharp/rssframework.asp是一个CSharp的非常不错的工具,我么有必要用到那么多复杂的功能,我自己用MC++写了一段简单的代码:

 

   Uri* myUri = new Uri(txtRss->Text);
   // Create a new request to the above mentioned URL.
   WebRequest* myWebRequest= WebRequest::Create(myUri);
   // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
   WebResponse* myWebResponse = myWebRequest->GetResponse();

   Stream *RssStream=myWebResponse->GetResponseStream();
   Encoding* encode = System::Text::Encoding::GetEncoding(S"utf-8");
   // Pipes the stream to a higher level stream reader with the required encoding format.
   StreamReader* readStream = new StreamReader(RssStream, encode);
   //read the return stream into an xml reader
   XmlReader *xmlTextReader=new XmlTextReader(readStream);

   然后针对XmlTextReader进行Parse就好了。对着一个现成的Rss文件,就知道该怎么办了。

至于这个工具,有兴趣的朋友可以自己写一个或者我们可以共同提高。不过需要注意的是,现在的Blog系统,明显没有做好解决这样的问题的准备。

blog spam 

posted on 2004-06-10 16:54:00 by roboo  评论(11) 阅读(2057)

开源时代

Intel昨天宣布(或者说应该是今天),将开放新一代BIOS(Tiano)的源码。或许我们从此就要和我们从认识计算机开始的BIOS启动画面说再见了。

真的希望Intel能够将自己Intel Complier给Open了。笑脸

HP宣布自己也加入Open Source 的阵营

是不是,我们也有必要将自己开发的软件给Open了?

今天下午去成都,又没有地头上接待呀。

posted on 2004-06-02 10:36:00 by roboo  评论(6) 阅读(1665)

Powered by: Joycode.MVC引擎 0.5.2.0