我住包子山

this->blog.MoveTo("blog.baozishan.in")

#

for循环在条件语句中遍历字符串常量

   这样利用字符串常量的方法我还是第一次见到,有点意思吧。最初的程序源自这里,那个程序中不同的字符表示putchar循环执行的次数不同,下标奇偶决定了打印!还是空格。可以根据这样的方法构造一个打印几种字符组成的像素图形。

#include <cstdio>
int main()
{
    int a,b,c;
    for (c=b=10;a="VAMSI PERI,TFy!QJu ROo TNn(ROo)SLq SLq ULo+ UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^ NBELPeHBFHT}TnALVlBLOFAkHFOuFETp HCStHAUFAgcEAelclcn^r^r\\tZvYxXy T|S~Pn SPm SOn TNn ULo0ULo#ULo-W Hq!WFs XDt!" [b++];)
        for(; a-- > 64 ; )
            putchar ( ++c==90 ? c=10:33^b&1);
}

   照着这样的方法写了个打印字符串的东西,可以按照指定长度换行。

#include <cstdio>
int main()
{
    int a,b,c;
    for (c=b=0;a="www.cppblog.com/gohan        this is a test"[b++];)
        if(a!='\0')
            putchar ( ++c==30 ? c=0,b--,10:a);
    putchar(10);
}

   最后这个是打印一个自己构造的ASC字符,这里构造的是我的名字

#include <cstdio>
int main()
{
    int a,b,c;
    for (c=0,b=0;a="@u@GFLB[@DBJDDFEDEFD@CBBDBBDBBBDBBBCBCBDBC@BBDBBBDBBBDBBBCBCBDBD@CFDDDBDBDGABDBE@v"[b++];)
        for(; a-- > 64 ; )
            putchar ( ++c==54 ? c=0,10:33^b&1);
}

 


执行效果如图image








posted @ 2008-06-30 10:40 Gohan 阅读(2798) | 评论 (7)编辑 收藏

GWeekly[22] = Bye Bye Gates..

Gates

    盖茨这周就算是正式退休了,他的一生是很令人敬仰的,M$帝国是他一手创建的,现在他光荣的离开了自己的职业生涯,在此跟他说声Bye Bye,以后的IT领域依然会人才辈出的。周末坐火车回家了,心情比较复杂,没能达到自己那种感觉良好的状态,也许只能靠时间来慢慢调整。这周新买两本闲书,躁狂抑郁多才俊还有自我,决策与判断算是翻过去一遍了,略有些体会。三国风云的辅助程序不打算继续做了,架子放那儿也就好了。回来随便关注了一下HOOK输入法事件的例子,尝试改变输入法最后输出的结果,目前仍旧未遂,不过可以在输入法输出的基础上加个小尾巴,用来做流氓软件可能可以。目前有个打算是利用cppblog提供的BlogAPI搞一个博客备份的东西,练习练习。

本周收藏:

   这周就现这么着吧。假期计划筹备中。

posted @ 2008-06-29 23:50 Gohan 阅读(300) | 评论 (0)编辑 收藏

玩了一下PowerShell,有点意思

del   考完试了,今天闲下来整理Delicious的书签,发现我自己的分类实在太混乱,于是准备把所有 的tag全部删除,结果发现Delicious中只能一个一个删除tag,还好它提供了API接口,当然还有现成的各种语言可用的库,于是捡来这个.Net下的Delicious库,准备用C#随便写个程序批量删除,可是突然冒出个念头,用PowerShell试试吧。

   于是这个支持装载.Net DLL的PowerShell登场了,先装载DLL:

[Reflection.Assembly]::LoadFile("D:\Delicious.Net.dll")

   接着设定用户名密码

[Delicious.Connection]::Username = "cppgohan"
[Delicious.Connection]::Password = "******"

   接着读入tag

$tags = [Delicious.Tag]::Get()

   接着就是foreach循环,将所有tag重命名成一个"blank",这个库没有提供tag删除,用重命名可以合并tag

foreach($tag in $tags)
{
$temp = [Delicious.Tag]::Rename($tag.Name,"BLANK")
}

   然后就等它执行完成吧,执行结果还ok,有几次Rename抛出异常了,可能是这个库不太好用。以后如果有空,还可以换用Python试一试,估计比这个PowerShell要高效许多。

posted @ 2008-06-26 01:57 Gohan 阅读(455) | 评论 (0)编辑 收藏

GWeekly[21] == 这个学期.end()

祝我考试大捷   这周所有的课程都结束了,多门考试已经结束,下周的三天即将面对最后三门考试,分别是微机原理,计算机安全和编译原理。周六的六级考试的听力接近一半都没听怎么懂,卷面还是一贯的乱,考试期间用掉了一小卷纸巾,结果应该不会太好吧。看来虽然能看懂那些简单的英文文档,听懂那些英文视频Demo,不过考起试来还是不行。本来打算写一篇简单异常处理的例子,结果看来还是要放一两周了,这周又玩了一下那个RegexDesigner,可是他对于中文匹配不能正常的显示,因为是开放代码的,将临时生成的html文件加上UTF-8编码头就可以正常显示了。看到Windows Live Writer出了个twitter的插件Notify Twitter,好像用了最新的Live Writer SDK,有空我也可以写个饭否插件或豆瓣插件的东西了,只是豆瓣的那个OAuth签名现在还没试过,等假期有机会研究一下吧。研究了一下VS2005的文件自定义生成规则,可以实现一些生成文件前的预处理工作等等。

   感叹于很多人都玩上了C#3.0还有WPF这些有意思的东西,我的计算机可是跑不动了,希望早点换台电脑了。买了本Jeffrey Richter写的CLR via C#,打算好好读读。

   本周收藏:

   这周就这样了,去复习语法分析了。病好大半了,请各位放心,谢谢爸爸妈妈。

posted @ 2008-06-22 23:23 Gohan 阅读(344) | 评论 (4)编辑 收藏

[MFC]建立典型HTTP Client应用程序的步骤

The following table shows the steps you might perform in a typical HTTP client application:
Your goal Actions you take Effects

Begin an HTTP session.

Create a CInternetSession object.

Initializes WinInet and connects to server.

Connect to an HTTP server.

Use CInternetSession::GetHttpConnection.

Returns a CHttpConnection object.

Open an HTTP request.

Use CHttpConnection::OpenRequest.

Returns a CHttpFile object.

Send an HTTP request.

Use CHttpFile::AddRequestHeaders and CHttpFile::SendRequest.

Finds the file. Returns FALSE if the file is not found.

Read from the file.

Use CHttpFile.

Reads the specified number of bytes using a buffer you supply.

Handle exceptions.

Use the CInternetException class.

Handles all common Internet exception types.

End the HTTP session.

Dispose of the CInternetSession object.

Automatically cleans up open file handles and connections.

来源

posted @ 2008-06-19 09:19 Gohan 阅读(2769) | 评论 (0)编辑 收藏

GWeekly[20] = 这周.病了

爸爸节日快乐   可能周四周五着了凉,周末很长时间是在床上迷迷糊糊过去了,头晕鼻塞嗓哑。这周只是应付几门考试,对于C++的异常处理有一点初步学习,顺便在kevinlynx的博客上学到了点C++自己写一个容器分配对象allocator的方法。有几周没有写技术学习的心得了,其实还能写点,可能是因为浮躁的心还有那些断断续续的考试和作业,下周打算写篇C++异常处理的简单例子。学了挺长时间计算机技术,只是长进十分有限,慢慢进步吧。买了一本决策与判断,是pongba推荐的一本心理学入门书籍,要战胜自己心里的浮躁,灵活运用自己的思想,学一些心理学应该是有很多帮助的,何况这些东西还十分有趣。

   本周收藏:

   这周就回顾这些,下周还有考试,cet6第二次考,没复习,大概是凶多吉少。休息去了。

posted @ 2008-06-15 22:30 Gohan 阅读(399) | 评论 (6)编辑 收藏

GWeekly[19] 绝不忘记过去--端午节,多放一天假

328397    这周忙忙碌碌发现什么都没做,考试穿插于课程之间,考题介于无聊跟麻烦之间。只因为有考试,我才有机会在纸上写下许多的字,字写的少没练过,所以写的七零八乱很丑,看来有些退化了。这周看到dd的博客上那个标题为98753210的东西,呵呵,绝不忘记过去的教训。这周同学帮我买了本《三体2》,用了一天的下午,另一天的晚上还有次日的凌晨读完了,为作者所想象出的世界架构所叹服,自个儿也体会了一些生命对于这个世界的意义,总之这本书很是精彩。上周玩了一下校内的三国风云游戏,这周写了个定时攻击预定目标的client,可以为每一个城镇制定一个攻击队列,还是用那个chilkat库,比较方便,别的许多都没有做,感觉有点无为。这周技术方面的书也没看多少,百度之星等等算法有关的学习也再没继续,可能有点心浮气躁了。

   本周收藏:

 

   这周回顾很少,就这么多,明天还是放假,祝大家假期愉快。

posted @ 2008-06-09 00:02 Gohan 阅读(997) | 评论 (0)编辑 收藏

GWeekly[18] = 忙碌的一周还有那些记忆的碎片

小学时候的我    本周进行了两门专业课的考试,算法跟OOPwithJava,课时不多,题也就不难。编译原理还在讲语法分析,看了vczh的那个词法分析的文章,写的明白,用来复习巩固再好不过。上周状态欠佳,这周马马虎虎,周五弄到了那本让我歌唱80年代,也是关乎一代人记忆的书籍,书中不少地方竟也触动了我。弄到书回来看到小学同学QQ群的各位回忆差不多10年前的往事,有心人贴出来了当时的一些旧照片,那些记忆碎片也就变的完整了些,当时做的那些坏事,傻事,恶作剧被尽数串联起来。

   当我陷入对过去的那种怀念之时,收到了高中好友的信息,帮他完成几个C+image+的OOP程序,于是凌晨开工,熬了一会儿,也就完事了。周六白天忙着微机原理和接口的实验,操作那些元件挺有意思,只是我的汇编写的太丑:P。这段时间对HTTP客户程序有些兴趣,校内网上有一个叫做三国风云的webgame,我也简单玩了,似乎可以用软件做一些机器人的功能,只是我对HTTP进行应用的知识似乎还是不充足,后来我找到了个商业化的HTTP组件,叫做Chilkat,发现挺好用的,没有购买的组件编译出程序可以使用30天,对于随便玩玩是够用了。现在用VC#跟这个库做了一个可以查看指定坐标村子名称以及资源田分布的命令行东东。

   今天是6.1儿童节,不禁又想到那些苦难的孩子们,儿童节快乐。放出的图片是10年前那个弱小的我。

   本周收藏:

   下周继续面对那些个考试,去忙了。如果有朋友有学习更多HTTP编程应用的资料麻烦推荐给我,很想好好学学。  

posted @ 2008-06-01 23:44 Gohan 阅读(434) | 评论 (5)编辑 收藏

GWeekly[17] = 灰色的一周

   三天的哀悼日,几乎所有的网站色调都成了灰色,而我这整整一周也如同灰色。4 做了许多灰色的梦,手头做的事物也都有点没了动力。受到地震预测的影响,本周应该进行的考试推迟一周,周二停课一天,学习也就懈怠了。也就在这几日,继刘慈欣的三体之后,又看了他的几部短片作品,几乎每部都涉及天上的星星,有些想法甚是巧妙,和我以前的想象产生共鸣,而又比我的想象成熟具体的多了。预测地震的消息是这周一发布的,晚上许多人去操场睡了,从宿舍楼都能听见外面嘈杂的声音,在外面睡觉我觉得不怎么靠谱。向往在一个安静的夜晚,静静躺在草地上,遥望满天星星,随着无限自然的想象,慢慢睡去,这样应该挺舒服的。

   这周了解了一下UTF8编码跟汉字GB2312(C++对于汉字好像默认是这个编码)有一些初步了解,用ATL里的CAtlHttpClient用了一下fanfou的api,需要basic授权而使用ATL提供的方式好像困难重重,感觉反而不如自己构造这些发送参数。周末学用vc++进行了一些GDI+Bitmap类对jpg,bmp的简单处理。

   一直在关注牛博网为灾区做的爱心救助工作,这个苗圃行动我觉得挺靠谱的,感觉在募捐这方面,官方的红十字会做的真的没这些NGO做的好。周末看了几部动画片,萤火虫之墓这部动画让我觉得有点难过,联想起因为灾难成为孤儿的孩子,要好好活着真不容易。

   本周收藏:

   灰色的一周就说这么多,希望下周是32位真彩色的。。下周再叙

posted @ 2008-05-25 23:04 Gohan 阅读(447) | 评论 (4)编辑 收藏

Win32命令行应用,ReadConsoleInput()得到键盘VK_CODE

image

    ReadConsoleInput是一个Win32 API,  声明如下:

BOOL ReadConsoleInput(
  HANDLE hConsoleInput, //输入句柄
  PINPUT_RECORD lpBuffer, //指向INPUT_RECORD结构体(数组)的指针
  DWORD nLength, //上面那个结构体的大小
  LPDWORD lpNumberOfEventsRead //实际读入输入内容的个数
);

    我把读入的功能写在这个助手类中,ReadConsoleInput的得到VK_CODE的方法可以看ReadKeyDown和ReadKeyPush两个函数,它们的效果略有点不同。右图是效果截图,按ESC跳出循环。助手类以后还可以添加颜色控制位置控制等功能,只要你想,目的就是为了简化API调用。

#pragma once
#include <Windows.h>
class GohanConsoleHelper
{
    HANDLE _hIn;
    HANDLE _hOut;
    INPUT_RECORD _InRec;
    DWORD _NumRead;
public:
    WORD VKey;
    GohanConsoleHelper(void){
        _hIn = GetStdHandle(STD_INPUT_HANDLE);
        _hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        VKey=0;
    }
    bool ReadOneInput()
    {
        return 0!=ReadConsoleInput(_hIn,&_InRec,1,&_NumRead);
    }
    bool ReadOneInput(INPUT_RECORD& InRec)
    {
        return 0!=ReadConsoleInput(_hIn,&InRec,1,&_NumRead);
    }
    DWORD ReadKeyDown()
    {
        if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
            return 0;
        if(_InRec.EventType!=KEY_EVENT)
            return 0;
        if(_InRec.Event.KeyEvent.bKeyDown > 0)
            return 0;
        VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
        return VKey;
    }
    DWORD ReadKeyPush()
    {
        if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
            return 0;
        if(_InRec.EventType!=KEY_EVENT)
            return 0;
        if(_InRec.Event.KeyEvent.bKeyDown == 0)
            return 0;
        VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
        return VKey;
    }
public:
    ~GohanConsoleHelper(void){}
};
 
 

 

main所在文件内容

#include <windows.h>
#include <iostream>
#include "GohanConsoleHelper.h"
using namespace std;
int main()
{
    GohanConsoleHelper gch;
    while (true)
    {
        if(gch.ReadKeyPush()!=0) //使用ReadKeyDown()捕获按键弹起的VK_CODE
        {
            if(gch.VKey != VK_ESCAPE)
                cout<<"VK_CODE == "<<gch.VKey<<endl;
            else {
                cout<<"Bye~~"<<endl;
                break;
            }
        }
    }
    return 0;
}

 

    在命令行得到VK_CODE可以干许多事情了,可以写个在Win32命令行下的小游戏,俄罗斯方块啊什么的,呵呵,不过画面稍微好点的就搞不了了,因为毕竟win32命令行分辨率太低了。

   忘了放出参考的资料:

http://adrianxw.dk/ 比较全面的Win32命令行教程

posted @ 2008-05-23 00:08 Gohan 阅读(6077) | 评论 (5)编辑 收藏

仅列出标题
共16页: First 3 4 5 6 7 8 9 10 11 Last