创亿无限
百度首页 | 百度空间
 
文章列表
 
2008-06-10 21:20
上次发布了个perl版的更新3322动态域名的程序 不过由于那个用到了lwp库 依赖太p烦了
所以只好打包成exe格式 但是exe格式嘛 文件体积就大了 不符合原意了

这次用lua重新实现了 用的是lua5.1+socket库
由于lua的依赖很简单 寻址也智能 所以可以绿色使用 因此发布的是源代码
体积很小 基本的socket和 mime的dll 和解释器 以及我的代码 加起来不过只有188k
里头带了luasocket库 这个库实现了socket http ftp smtp等 顺便我还放了个json库 呵呵
里头有个copas库 多线程也可以搞定(原理上说是假的 但我无所谓 我只追求效果上 呵呵)

总而言之是小之又小 好之又好
全部的环境和代码我已经打包了 可以去这里下载
http://webdisk.cech.com.cn/download/file_share_10986261.html

很显然 如前面所说 这里面其实包含了一个比较有用的lua环境和一些库
事实上我还用这个写了个irc bot 当然 还在完善中
如果感兴趣的 可以利用这个小环境学习lua 写程序 我觉得带socket和http库 对于写一些校内工具是足够了 无需担心跨平台问题 事实证明 我的irc bot在一个centos的环境中运行情况与win中无二

如果只想看看代码 可以看这里

我的代码如下

package.cpath = "./lib/?.so;./lib/?.dll;./lib/?.dylib;"

local http = require"socket.http"
local mime = require"mime"


function getip()
local ip=http.request("http://www.3322.org/dyndns/getip")
return string.gsub(ip, "%s", "")
end

function setdyn(u,p,n,ip)
local t={}
r,c=http.request{
          url="http://www.3322.org/dyndns/update?system=dyndns&hostname="..n.."&myip="..ip,
          user = u,
          password = p,
          sink=ltn12.sink.table(t),
          redirect=false
          }
if not(r) then
    return "ERORR: the data has not send correctly!"
end
if c~="200" then
    return "SUCCESS! Your Dynamic name "..n.." has been set to "..ip
else
    return "ERORR: an unexpectant value has been got\n"..c
end
end

user,pwd,name=arg[1],arg[2],arg[3]
if not(user and pwd and name) then
print("you don't put the right arguments\npress ENTER to quit")
io.read()
os.exit()
end

print("This script is powered by jyf1987 ( http://hi.baidu.com/jyf1987 )")
print("and public under bsd lisence,so you can do anythings to it as you wish\n\n")
print("now getting your public ip...")
local ip=getip()
print("got it!\nupdating your dynamic name...\n\n")
print(setdyn(user,pwd,name,ip).."\npress ENTER to quit")
io.read('*l')
 
2008-05-17 15:55
ff2一直用着 就是ui很诟病 速度也有问题
这不 ff3改进了 ui很好了 我一直不喜欢ff2那种看着觉得很厚很圆的界面 看起来很笨重 加上ff那很慢的启动速度
那就更加重了心理上的负面印象 但是 我是programmer 所以还是用着ff2
但是现在好了 ff3 ui好 速度快 我现在只等几个我喜欢用的插件升级到ff3支持
不过目前还是rc1版 相信正式版会更爽
 
2008-04-17 23:55
p2p原本是个好技术 但是由于现在传输的都是有版权的东西为多 弄得大家都口诛笔伐的
其实p2p的好处无非是快速分发文件 至于分发的是有版权还是没版权的 那全在于分发的人的问题了
我在用ubuntu 的apt-get 升级系统 就在想这个问题
此外微软的补丁更新速度慢也一直是令人诟病的东西
试想 用一两台服务器去满足全球的用户 不慢才怪呢
ubuntu现在国内的源我用cn99 我用着很快 但我想 这个是因为用ubuntu的人还不算多 如果想win这样的装机量 cn99铁定要挂掉
其实不管是下win的补丁也好 还是更新ubuntu的软件也好 都是版权拥有者在分发文件 既然本身是版权拥有者 自然就无须顾忌到版权这个问题 而版权这个问题解决了 生下来的无非是速度问题 我想在这点上 p2p当仁不让 应该成为首选   不管是补丁也好 软件也好 都有个目标 尽快传到用户手上 为他们服务
而且使用p2p技术还能有效降低服务器的负担 低投入 高产出 何乐而不为呢?
 
2008-04-15 22:53
目前有一些网站推出了一些im机器人 比如注明的twitter和国内的饭否之类的网站
当然这个不是我的重点
我说的是一些提供msn和gtalk群服务器的
像小i什么的

我想靠网站自身并不能完全服务大众的需求 何况现在还有这种或那种的小众群体
需求各不相同 网站没有精力 也没有必要专门为他们去开发应用

但是需求总是要满足的 如果网站自身不想动手服务 那完全可以把任务放出去 由用户自己定制
因为开放api已经成了流行 当然我本身也是支持开放api的 开放api能最大限度的服务大众 能更
大程度的满足一些小众的需求 比如许多程序员 完全有能力利用api来进行二次开发

具体到im机器人这块 因为运行im机器人需要服务器的 而且需要24小时不间断的在线的 还有就是
贷宽问题 如果是个人pc运行自己做的机器人 经常不在线不说 带宽也很低 无法响应更多的用户

基于此 我提出了可定制的im机器人的想法

具体是
      提供服务的网站提供im机器人账户 或者msn 或gtalk 或any other im的机器人 开发者可以
注册一个自己专有的im机器人 可以在线配置机器人运行的时间段 签名 等等静态的东西
然后 开发者自己写一个hook 事件的列表 机器人接受到用户输入的信息后 用自己的hook事件
列表去匹配用户输入的信息 如果符合 那就触发扩展命令 由于直接让用户上载自己的程序有很
大的安全问题 因此我的设计是
让 每个 hook事件对应一个web地址 这个地址是用户的web程序地址 可以是各种动态语言的地址
比如 php perl python什么的
当触发hook事件后
比如我的规则文件里写着

/help http://xxx.com/xx.php
意思是如果用户输入了/help 那么运行机器人的那台服务器访问http://xxx.com/xx.php

在这里 机器人所在的服务器 设其名字为 A 而我的http://xxx.com/xx.php这里的php程序设其名字
B

A用post方法访问B,提交一个xml字符串 里面包含一些环境信息 比如

<用户账户>提交请求的用户名,即与机器人对话的用户名</用户账户>
<用户昵称>同上用户的昵称</用户昵称>
<用户签名>同上用户的签名</用户签名>
<用户输入信息>同上用户输入的信息</用户输入信息>

基本上im机器人获取的有用信息也就这几个了有用的了 当然具体传送还可以再商榷
而我的B程序根据这传来的信息 进行分析后 做一些处理
比如我这个示范的是 /help
那么我可以返回一个信息给A
<do>
    <to>要发送的用户,这里自然是刚才那个与机器人对话的用户了</to>
    <msg>返回信息,这里可以返回一些帮助命令之类的信息</msg>
</do>

当然还有一些对机器人的命令 比如 用户usr1想通过机器人中转给用户usr2发送一条信息
他对机器人输入
/msg user2@xxx.com 测试信息
这里要分两步处理了
首先A根据触发规则访问B B分析出这个是一个/msg命令(也许有bt的人一个命令对应一个页面 那就不用分析了)这个命令必须
回复给机器人两个指令信息
<system>
    <add>usr2的账户</add>
<system>
<do>
    <to>usr2</to>
    <msg>测试信息</msg>
    <to>usr1</to>
    <msg>您的用户已发往usr2</msg>
</do>

这种是纯xml的实现 add是系统命令要求机器人加usr2为好友 然后给usr2发送信息 再然后给usr1返回信息 告诉他已经发送成功了
但是有个问题 就是如果usr2不在线呢 而且他加好友要求是通过以后才能发信息给他 这个就比较麻烦 靠纯xml没法解决

我想可以用两种办法解决

一种是增加session功能 当然based on xml的
就是允许程序B向机器人返回指令 并且机器人知道这是一个连续的过程
这样程序向机器人发挥的指令 查询 账户上是否有这个usr2 如果没有 就加好友 加好友成功后 机器人再次访问程序B 告诉他 已经加过好友啦 然后程序B再返回命令 要求机器人发送信息给usr2 以后发送信息给usr1告诉他成功了

另外一种解决办法是机器人所在的服务器提供公用的web api
程序B可以给那个web api发送一段xml
<账户>xxx@xx.com</账户>
<密码>加密过的密码</密码>
<发送信息>
    <to>usr2的账户</to>
    <msg>测试信息</msg>
</发送信息>

这段意思是提交自己的账户和密码通过验证后 要求服务器给指定的用户usr2发送一段信息 文本是 测试信息
服务器也返回一段xml
无非是成功或者失败 失败了给出原因
然后程序B根据这返回的提示信息给机器人返回指令 要求他发送信息给 usr1 告诉他成功或者失败

为何要使用服务器上的web api呢?
首先一个机器人账户上能添加的好友总是有上限的 但是用户的需求总是大大超过的
如果用机器人账户去添加好友 首要问题是 当好友数达到上限了怎么办?
而服务器运行了这么多机器人 他自然也维持了一个机器人的好友列表 因此他掌握的好友数远远比单个机器人的要多得多
而且重要的是 他知道哪个人在哪个机器人的好友里
他可以根据你要发送的用户帐户来调用相应的机器人给其发送信息 当然 其他操作也是可以的
而且使用服务器上的web api是一次性的 不需要session实现
这样设计也简单 负载也小多了

基本思路也就说到这里了
具体实现还可以继续探讨

其实im也就是个io而已 你可以把它看作一个终端 就如pda一样
他面向用户能做的就是接受信息 返回信息
也及时 in/out了
而我这个思路是把im的接受信息抓接为附加了特定信息的web访问
然后把返回的信息经过特定处理后返回给用户

因此你也可以把这个im机器人或者im本身当作一个特殊的web代理
经常有web代理给http请求附加一些标志头 这个也是差不多 只不过更特殊点罢了

选择web空间的理由是 web空间也可以24小时在线的 因为服务器是别人托管的 另外web空间各处都有 价格便宜 免费的也n多 而且web空间还可以被另外的人浏览到 很好
 
2008-04-12 21:03
10. LOLCODE语言 http://lolcode.com/
国外流行一种lolcat图片,经常出现在论坛的头像和签名图里。lolcat图片里有一只很乖的小动物(通常是小猫),旁边写几句很可爱的话(比如故意的语法错误、拼写错误、近似发音或者网络缩略语)。很多web 2.0的宕机页面就是一张lolcat图片。LOLCODE就是用这种可爱的猫猫语言来写程序。LOLCODE的代码通俗易懂,写起来非常可爱,比如看看下面这段代码:
复制内容到剪贴板
代码:
HAI
CAN HAS STDIO?
I HAS A VAR
GIMMEH VAR
IZ VAR BIGGER THAN 10?
YARLY
       BTW this is true
       VISIBLE "BIG NUMBER!"
NOWAI
       BTW this is false
       VISIBLE "LITTLE NUMBER!"
KTHX
KTHXBYE
9. BrainFuck语言 http://www.muppetlabs.com/~breadbox/bf
BrainFuck语言是最简单的程序语言之一,只有8个有效字符,每个字符都有一个特定的含义。这8个字符控制一个指针在线性表里进行移动、读写、循环等操作。所有其它的字符都当作注释处理。我的Blog里曾对BrainFuck有过专门的介绍。
我很喜欢这个语言,甚至下载了它的编译器,写出不少BrainFuck程序。例如,下面这段代码可以输出我的网站域名“matrix67.com”:
复制内容到剪贴板
代码:
++++++++++[>+++++++++++<-]>-.
<+++[>----<-]>.<+++++[>++++<-]>-.--.
<+++[>---<-]>.<+++++[>+++<-]>.
>+++++[>+++++++++++<-]>-.+.<+++[>---<-]>.<<
<+++++[>----<-]>-.<+++[>++++<-]>.--.
BrainFuck语言有很多扩展。用不同的单词来代替这8个符号可以得到更多好玩的程序语言,有一些语言竟是把BrainFuck程序编码成图片或音乐作为程序代码。

8. Malbolge语言 http://www.lscheffer.com/malbolge.shtml
Malbolge是最早的一个以代码丑陋为目标而设计出的程序语言,你几乎不可能读懂Malbolge的代码。它共有8条指令,所有运算都基于3进制,控制程序流的唯一指令是无条件跳转。它的Hello World程序如下:
复制内容到剪贴板
代码:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
7. Whitespace语言 http://compsoc.dur.ac.uk/whitespace/
很多语言在编译时都会自动忽 略空格、换行和Tab,而Whitespace语言正好相反,这个语言的有效字符只有三个(就是前面提到的三个空白符号),其它字符一律当作注释处理。这 个语言对于机密工作者尤其有用,你可以把一个完整的Whitespace程序插入到一篇普通的文章中,谁也不会知道这里面竟然隐藏了一个机密代码。 Whitespace也可以防止别人打印出源代码盗走。Whitespace源码的扩展名为.ws(转载者:果然畏缩啊),单击这里是一个Whitespace的Hello World程序。

6. Befunge语言 http://quadium.net/funge/spec98.html
Befunge的代码是二维的。它用 < > v ^ 这四个符号来控制一个指针在代码中移动,指针经过一个字符或数字则把它压入一个栈,四则运算符号的功能就是弹出栈顶两个元素进行计算后把结果压回去。用 _ 和 | 来表示有条件的方向选择:当栈顶元素为0时向右(上)走,否则向左(下)走。& 和 ~ 分别用于读入数字或字符并压入栈,句号和逗号分别表示将栈顶元素作为整数或字符输出。最后以一个@符号表示程序结束。Befunge代码的注释不需要任何 符号标明,你可以把注释写在程序的任何地方,只要运行时指针不会经过它就行了。你甚至可以把注释写在程序正中间,然后写代码时绕开注释写成一圈。 Befunge的Hello World程序如下:
复制内容到剪贴板
代码:
                v
>v"Hello world!"0<
,:
^_25*,@
看一个复杂的例子。我找了一个算圆周率的Befunge程序,看起来非常壮观。
复制内容到剪贴板
代码:
aa*       v                +------------------------+
vp*9920p*9930<                | Pi generator in Bef-97 |
>:09a*pa*3/1+19a*p09a*g:09b*v |                      |
v_@# g*b90 p*b910        < p< | 7/2/1997, Kevin Vigor   |
>19a*g:+1-29b*p19a*g::09v    +------------------------+
v*a90g*b90*g*b91: _v#p*9<
>g-#v_ 2a*+\$   v   :$
>\1-aa*ga*+v   p
v1:/g*b92p*991:<   *
>9b*p29b*g*199*g\v9
v*b92p*aa-1g*990-<9
>g2-29b*p099*g1-:0^
v -9p*b92:%ag*991   <
>#v_ 299*g1+299*p>    ^
   >09b*g:#v_$v
v93p*b90-1<
>9*g199*ga/+.v
    v:g*992 <p*9 92-<
v_29b*g399*p ^
>09b*g:#v_v    1
vp*b90-1 < $    g
>199*g9`#v_'9,v    *
      >'0, >' ,299^
通常被认为Befunge是第一个基于“二维控制流”的语言,后来衍生出的一大批类似的语言都是受的Befunge影响。例如PingPong语言就是把Befunge的四种箭头符号换成正反斜杠,控制指针移动方向90度旋转,起一个反弹的作用。

5. TMMLPTEALPAITAFNFAL语言 http://p-nand-q.com/humor/programming_languages/tmmlpteal.html
你没看错,上面这一排毫无意义的字母是一个语言的名称。它是The Multi-Million Language Project To End All Language Projects And Isn't That A Fine Name For A Language的缩写。TMMLPTEALPAITAFNFAL语言没有固定的语法规则,每一天都是不同的语法。例如,2000年10月13日你可以使 用DIV但不能使用MOD;到了10月14日时你可以使用MOD了但DIV又不能用了。因此,你今天写的程序运行起来完全正常,但是到了明天就无法编译 了。下面是一个TMMLPTEALPAITAFNFAL的Hello World程序,当然现在已经无法编译了。
复制内容到剪贴板
代码:
DECLARE CELL 100 AS READPOS
DECLARE 10 AS NEWLINE
WRITE CHAR NEWLINE
COPY "Hello, World" TO CELL 0
COPY 0 TO READPOS
WHILE READPOS INDIRECT DO GOSUB 300
WRITE CHAR NEWLINE
RETURN
LINE 300: WRITE CHAR READPOS INDIRECT
ADD 1 TO READPOS
RETURN
4. l33t语言 http://web.archive.org/web/20050 ... epages.com/l33t.htm
Leetspeak是国外网络上曾经流行的一种字母书写方式。很多电影和 美剧的名字也是Leetspeak,比如se7en、numb3rs、s1m0ne等等。l33t程序的代码故意仿照这种风格。它的代码中只有0到9这九 个数字是有意义的,其它的字符都没用。因此,你可以先写好一篇文章,然后依次把里面出现的字母替换成你的l33t代码,让一段Leetspeak文字中隐 藏一个小程序。下面就是一个Hello World示例程序:
复制内容到剪贴板
代码:
// "Hello World" by Stephen McGreal.
// Note that the views expressed in this source code do not necessarily coincide with those of the author :o)

Gr34t l33tN3$$?
M3h...
iT 41n't s0 7rIckY.

l33t sP33k is U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh.
1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt in 0n a b4d4sS h4xX0r1ng s1tE!!!;p
w4r3Z c0ll3cT10n2 r 7eh l3Et3r!

Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!!
g4m3s wh3r3 u g3t to 5h00t ppl r 70tAl1_y w1cK1d!!
I'M teh fr4GM4stEr aN I'lL t0t41_1Ly wIpE teh phr34k1ng fL00r ***j3d1 5tYlE*** wItH y0uR h1dE!!!!L0L0L0L!
t3lEphR4gG1nG l4m3rs wit mY m8tes r34lLy k1kK$ A$$

l33t hAxX0r$ CrE4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG lAnguidGe$...
s0m3tIm3$ teh l4nGu4gES l00k jUst l1k3 rE41_ 0neS 7o mAkE ppl Th1nk th3y'r3 ju$t n0rMal lEE7 5pEEk but th3y're 5ecRetLy c0dE!!!!
n080DY unDer5tAnD$ l33t SpEaK 4p4rT fr0m j3d1!!!!!
50mE kId 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k 5tuFf, 0r mAyb3 ju5t sh0w 7eh wAy5 l33t ppl cAn 8E m0re lIkE y0d4!!! hE i5 teh u8ER!!!!
1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE.
1t 3v3n MiTe jUs7 s4y "H3LL0 W0RLD!!!" u ju5t cAn'T gu3s5.
tH3r3's n3v3r anY p0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s whAt th1s 1s!!!!!

5uxX0r5!!!L0L0L0L0L!!!!!!!
3. Java2K语言 http://p-nand-q.com/humor/programming_languages/java2k.html
Java2K是一种非确定性的语言,程序正常运行是有一定概率的。很多时候程序并不能按照你的意愿去运行,即使是系统函数也不会总是去做它该做的事。所有的函数都有两种不同的解释,程序运行时会随机选择一个作为实际调用的函数。
几乎所有的系统函数返回正确结果都只有90%的可能性,因此程序运行的最终结果或多或少都和预期结果不同。写出正确率尽量高的Java2K程序是一个非常有趣的挑战。

2. Chef语言 http://www.dangermouse.net/esoteric/chef.html
一个完整的Chef程序代码分为三个部分:程序名、变量声明和一系列栈操作。所有的操作都写成食谱的样子。例如,Put x into the mixing bowl就表示把变量x压入栈中,而Stir for 2 minutes则表示把栈顶元素向下移两格。下面的程序打印出前100个Fibonacci数。
复制内容到剪贴板
代码:
Fibonacci Numbers with Caramel Sauce.

Ingredients.
100 g flour
250 g butter
1 egg

Method.
Sift the flour. Put flour into mixing bowl. Serve with caramel sauce. Stir for 2 minutes. Remove egg. Rub the flour until sifted. Stir for 2 minutes. Fold the butter into the mixing bowl. Pour contents of the mixing bowl into the baking dish.

Serves 1.

Caramel Sauce.

Ingredients.
1 cup white sugar
1 cup brown sugar
1 vanilla bean

Method.
Fold white sugar into mixing bowl. Put white sugar into mixing bowl. Fold brown sugar into mixing bowl. Clean mixing bowl. Put white sugar into mixing bowl. Remove vanilla bean. Fold white sugar into mixing bowl. Melt white sugar. Put vanilla bean into mixing bowl. Refrigerate. Heat white sugar until melted. Put white sugar into mixing bowl. Remove vanilla bean. Fold white sugar into mixing bowl. Caramelise white sugar. Put vanilla bean into mixing bowl. Refrigerate. Cook white sugar until caramelised. Put white sugar into mixing bowl. Serve with caramel sauce. Fold brown sugar into mixing bowl. Put white sugar into mixing bowl. Add vanilla bean. Serve with caramel sauce. Add brown sugar.
1. Shakespeare语言 http://shakespearelang.sourceforge.net/
在所有的另类语言中,Shakespeare语言可能是最搞笑的了,并且难以置信的是它居然是SourceForge.net的一个项目。 Shakespeare的代码完全模仿莎士比亚的戏剧。它也是一个基于栈的程序语言,程序中出场的每一个人物都代表一个栈。Shakespeare的代码 自由度很高,因此同一个程序你可以写出完全不同的代码出来。Shakespeare的Hello World代码如下:
复制内容到剪贴板
代码:
The Infamous Hello World Program.

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                   Act I: Hamlet's insults and flattery.

                   Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave
hero and thyself! Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!

You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.

Speak your mind!

[Exit Romeo]

                   Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!

[Exit Juliet]

                   Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!

Thou art as loving as the product of the bluest clearest sweetest sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]


                   Act II: Behind Hamlet's back.

                   Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!

Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!

[Exit Romeo]

                   Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!

Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!

[Exeunt]
转自 http://www.matrix67.com


顺便要说下 还有许多 只不过我懒得自己写文章总结
 
2008-03-05 18:52
刚做了一个web开发的迷你包
shttpd+perl+php5
仅供娱乐
下载地址
http://webdisk.cech.com.cn/download/file_share_9662171.html
名字就仿乔楚那个wamp 叫SPP
呵呵 为什么仅供娱乐呢?因为shttpd不支持并发 :<
 
2008-02-09 16:46
Inet控件- Microsoft Internet Transfer Control 6.0 -MSINET.OCX
AccessType 属性 设置或返回一个值,决定该控件用来与 Internet 网进行通讯的访问类型
icUseDefault 0 控件使用在注册表中找到的缺省设置值来访问 Internet 网。
icDirect 1 直接连到 Internet 网。控件直接连到 Internet 网。
icNamedProxy 2 指示控件使用 Proxy 属性中指定的代理服务器。

Protocol 属性 设置或返回一个值,指定和 Execute 方法一起使用的协议
icUnknown 0 未知的。
icDefault 1 缺省协议。
icFTP 2 FTP。文件传输协议。
icReserved 3 为将来预留。
icHTTP 4 HTTP。超文本传输协议。
icHTTPS 5 安全 HTTP

StillExecuting 属性 返回一个布尔值,指明此 Internet Transfer 控件是否处于忙状态
True -1 该控件忙。
False 0 该控件空闲。

UserName 属性 设置或返回与请求一起发送到远程计算机的用户名称
Password 属性 设置或返回一个密码,该密码将和请求一道被发送,用以在远程计算机上登录
Document 属性 返回或设置与 Execute 方法一起使用的文件或文档
hInternet 属性 从下一级的 Wininet.dll API 返回 Internet 句柄
Proxy 属性 设置或返回用以和 Internet 网进行通讯的代理服务器的名称和端口
RequestTimeout 属性 设置或返回在超时截止之前,按秒计算的等待时间长度
ResponseCode 属性 StateChanged 事件中出现 icError (11) 状态时,从连接返回错误码
ResponseInfo 属性 返回最后发生的错误的文本
URL 属性 设置或返回 Execute 或 OpenURL 方法使用的 URL

StateChanged 事件 连接中状态发生改变,就会引发该事件
语法:object_StateChanged(ByVal State As Integer) 'State返回一个值提示发生了如下改变
icNone 0 无状态可报告。
icHostResolvingHost 1 该控件正在查询所指定的主机的 IP 地址。
icHostResolved 2 该控件已成功地找到所指定的主机的 IP 地址。
icConnecting 3 该控件正在与主机连接。
icConnected 4 该控件已与主机连接成功。
icRequesting 5 该控件正在向主机发送请求。
icRequestSent 6 该控件发送请求已成功。
icReceivingResponse 7 该控件正在接收主机的响应。
icResponseReceived 8 该控件已成功地接收到主机的响应。
icDisconnecting 9 该控件正在解除与主机的连接。
icDisconnected 10 该控件已成功地与主机解除了连接。
icError 11 与主机通讯时出现了错误。
icResponseCompleted 12 该请求已经完成,并且所有数据均已接收到。


Cancel 方法 取消当前请求,并关闭当前创建的所有连接
语法:object.Cancel
---------------------------------------------------------------------
Execute 方法 执行对远程服务器的请求,只能发送对特定的协议有效的请求
语法:object.Execute url, operation, data, requestHeaders
url 可选的,指定控件将要连接的 URL。默认时使用 URL 属性中指定的 URL。
operation 可选的,指定将要执行的操作类型。参见下面的“设置值”。
data 可选的,指定用于操作的数据。参见下面的“设置值”。
requestHeaders 可选的,指定由远程服务器传来的附加的标头。格式为:header name: header value vbCrLf

支持 HTTP 命令的operation 有效设置值:
Get 检索由 URL 属性指定的 URL 中的数据。
HEAD 发送请求的标头。
POST 传递数据给服务器。该数据在 data 参数中。这是 GET 的替代方法,附加的指令在 data 参数中指定。
PUT Put 操作。被替代的页面名在 data 参数中。

支持 FTP 命令的operation 有效设置值:
CD file1 改变到 file1 中指定的目录。
CDUP 改变到父目录。等效于“CD..”。
CLOSE 关闭当前的 FTP 连接。
DELETE file1 删除 file1 中指定的文件。
DIR file1 搜索 file1 中指定的目录。使用 GetChunk 方法返回目录数据
GET file1 file2 检索 file1 中指定的远程文件,并创建 file2 中指定的新本地文件。
LS file1 搜索 file1 中指定的目录。使用 GetChunk 方法返回文件目录数据。
MKDIR file1 创建 file1 中指定的目录。创建是否成功取决于用户在远程主机上的权限。
PUT file1 file2 复制 file1 指定的本地文件到 file2 指定的远程主机上。
PWD 返回当前目录名。使用 GetChunk 方法返回数据。
Quit 终止当前用户。
RECV file1 file2 检索 file1 中指定的远程文件,并创建 file2 中指定的本地新文件。等效于 GET。
RENAME file1 file2 将 file1 中命名的远程文件重命名为 file2 中指定的新名称。需要权限。
RMDIR file1 删除 file1 中指定的远程目录。需要权限。
SEND file1 file2 复制 file1 指定的本地文件到 file2 指定的远程主机上。等效于 PUT。
SIZE file1 返回 file1 指定的目录的大小。

FTP 操作的语法为:operationName "主机网址" "operation 有效设置值"
-----------------------------------------------------------------
GetChunk 方法 从 StateChanged 事件中检索数据
语法:object.GetChunk( size [,datatype] )
Size 必需的。长整型数值表达式,决定被检索的块的大小。
datatype 可选的。整数,决定如下被检索块的数据类型。
icString 0 缺省值。把数据作为字符串来检索。
icByteArray 1 把数据作为字节数组来检索。
----------------------------------------
GetHeader方法 用于检索 HTTP 文件的标头文本
语法:object.GetHeader (hdrName)
hdrName 可选的。字符串,指定如下将被检索的标头。
Date 返回文档传输的日期和时间。返回的数据格式为:Wednesday, 27-April-96 19:34:15 GMT。
MIME-version 返回 MIME 协议的版本号,目前为 1.00。
Server 返回服务器的名称。
Content-length 返回数据的字节长度。
Content-Type 返回数据的 MIME 的 当前类型。
Last-modified 返回最后一次修改文档的日期和时间。
-------------------------------------------------
OpenURL 方法 打开并返回指定 URL 的文档
语法:object.OpenUrl url [,datatype]
url 必需的。被检索文档的 URL。
datatype 可选的。整数值如下
icString 0 缺省值。把数据作为字符串来检索。
icByteArray 1 把数据作为字节数组来检索。
 
2007-12-03 22:51
      我的电脑是裸奔的 最初是因为杀毒软件太吃内存{我的内存512,集成显卡还要吃一点},后来慢慢发现不装杀毒软件很爽,速度很好 当然是经过自己不断优化启动项目的 平时主要用syschk这个查查自启动 也用seng来查看全面的报告 当然更多的是看注册表
      在机器上装了个pe系统 主要是为了清理注册表用,一开始是很觉得好 因为发现其实杀毒就那么几下 只要不是威金这种 一般的都没什么大问题 有了威金下个专杀就解决了
     不过,渐渐的 手工杀也有点烦   因为每次都是差不多的步骤 很p烦
     后来我就想 能不能把这些步骤转化成一种命令??或者说是一些脚本
   比如   rm reg.autorun xxxx.exe
上面是我设想的命令 假设 reg是引擎启动后定义的一个对象是注册表 autorun是这个对象下面的一个子对象 就是开机自启动的一些项目 xxxx.exe就是那些开机自启动项目里的一个

   我的设想是这样子的:
   1,这个杀毒引擎其实是个脚本解释器,类似wscript.exe,只不过它支持的脚本简单点
     2,这个杀毒引擎的运行原理是抢在病毒启动前启动起来 执行用户定义的脚本,中间可能需要打断系统加载进程,防止病毒加载,这个无非是做成一个优先级比较高的驱动服务什么的,这个病毒能做得出来,主流的杀毒软件不也有这个功能么
     3,这个杀毒引擎需要有几个预定义的环境对象,是即时的,比如上文提到的reg(注册表)对象,当然还有window文件夹对象,也包括文件夹对象,因为win系统的问题 似乎每个文件夹的自定义功能都可以用desktop.ini来引入病毒吧   所以你可以用类似 var a=new folder("c:\windows\"); delete a.desptop.ini这样的语句来删除c:\windows文件夹下的配置文件 当然也可以继续扩展下去 删除里面的具体的某一个选项 这就是我为什么不说直接delete 那个desptop.ini的用意了
     4,这个杀毒引擎需要一个图形化的动作录制功能,这样可以方便用户共享其杀毒过程,因为有的人会杀却未必会写你这个自创的脚本 又或者有的人就算懒得研究你这个破脚本 {可能他们不喜欢c风格的脚本嘛},所以需要有图形化的动作录制功能 这样才能尽最大可能挽留住一切可能的帮助提供者
     5,这个杀毒引擎一定要有灵活的搜索过滤方式 比如说正则表达式,不过似乎我也只是勉强会用而已,需要这一点原因不为别的 因为病毒的名字经常更改,但是总会有一些规律的 比如我经常杀的那个病毒 就有类似f开头 系统属性 隐藏属性这样的规律 而且基本文件创建事件都是 8月4号 {8月四号莫非是病毒作者人生第一次的纪念日 ?}   有了这样灵活的搜索过滤方式,才能尽量的使高手写的脚本能对付某一类的病毒与其变种
     6,最后,我认为如果真的有某位编程大佬写出来了 那么别急着发布 先建设一个脚本交流吧   可以搞类似百度知道那样的帮助系统   也可以搞付费的特定的杀毒脚本交易系统   更可以做个在线扫描定制杀毒脚本的系统 {付费也许比较好} 总之要给自己盈利的方式 这样你能赚钱 也可以找到疯投{风险投资还是疯子投资?} 而且重要的参与扩充你的脚本库的人也有钱赚 大家都有钱赚   你的事业才有最大的可能成功!!


当然   其实可以弄个ubuntu系统来装装

ubuntu的官方下载地址列表{带简体中文的}是

http://www.ubuntu.org.cn/getubuntu/download

如果要建设网站 麻烦把单子给我 我能清晰的明白你的需求 而且我也会做网站 所以可以帮你指挥那些建设人员
 
2007-10-29 19:01

        google应该卖空间,我为什么这么说呢?

      1, google有搜索引擎 许多人都想被google收录 如果使用google自身推出的空间 是否被收录的几率大点,这个不言自寓,所以 google如果卖空间 有市场

      2,google是搜索引擎,他要用爬虫去爬行网络 若网站在自己的空间上 爬行的速度就会大大加快 对于页面的分析也可以更深入 对于提高引擎质量和用户体验有好处 所以 google如果卖空间对自己很有利

     3,google有广告系统   若是一个站点用google的空间 又挂的是google的广告 其显示能保持一致性 不像有的地方 其他部分都显示出来了 唯独一个广告的地方空白着未出来,这就大大影响了观感 况且 google还可以提供免费带广告的空间 这也符合google的一贯来策略

     4,若一个站点用了google空间 挂了google广告 那么他可以用挂google广告的钱来付费,这样金钱只是在账面上转来转去 一方面钱没有流出google 另一方面也不用邮寄那么多支票了 省时省事

以上纯属建议模板

   李彦宏先生请将文中google换成baidu 相应产品请自行替换

   马云先生请将文中google换成雅虎中国 支付系统换成支付宝 广告换成阿里妈妈 其他自行替换

   马化腾先生请将文中google换成腾讯那个搜索 支付系统换成拍拍里面的那个支付 广告嘛自己做一个咯

其他有搜索引擎的公司请自行按照上文规则替换

 
2007-10-29 18:22
前段时间想到的,那时候由于想搞个论坛,于是到google那里申请了一个group

就是通常所说的google网上论坛,其实那不是个论坛,只不过是个mail列表而已,但google把他做得象论坛了

        这个东西吸引我的地方在于他可以通过邮箱发帖,也就是你向某个他指定的邮箱地址发个邮件,如果你的电子邮箱是在许可范围内,那么过一下子你发的邮件就会出现在google论坛上,有这个功能实在是太好了

        但更好的在后头,各位看过我blog里的google论坛分析么?没有看过的话可以去看看,他的论坛的帖子列表数据是用xml来组织的,具体地址是:

http://groups.google.com/group/chuangyi1987/feed/atom_v1_0_msgs.xml

其中chuangyi1987是我申请的论坛名,你当然可以替换成你申请的其他名字

当然如果他不是xml,也没什么问题,只是花费在搜索上的工夫要长点,那么如何来使用你的GoogleDB呢?

首先你需要两个东西(这里我用的编程语言是php)

一个是基于sock网络通信函数的mail类库:

用途是拿来发邮件的,这个东西需要登陆你的邮箱,再用你的邮箱来发邮件,因此你还需要准备一个邮箱

另一个你需要用到的东西是xml解析类库,这个是用来获取论坛的最新帖子数据的

还需要一些设置,在google那里申请一个网上论坛:我们假设他为:mygroup

然后用你刚才申请的邮箱注册一个用户名,并加入你刚才申请到的论坛:mygroup,这样你的邮箱就被允许向论坛邮箱发送邮件了

你所在的论坛的收信地址是 mygroup@googlegroups.com

现在你要做的就是用mail类库

登陆自己的邮箱,然后向mygroup@googlegroups.com发邮件

邮件的标题就是帖子的标题,邮件正文就是帖子的正文

发送成功后

再访问

http://groups.google.com/group/mygroup/feed/atom_v1_0_msgs.xml

查看最新的帖子,是不是有你刚才发不的帖子的名字了??

你这样直接访问是看不出来具体某个帖子的连接的

需要把那个xml文件下载下来

再用记事本打开

会看到有一项

<link>http://groups.google.com/group/mygroup/msg/e77d63dd49143d2c</link>

这个就是具体某个帖子的地址了

这样你就得到了具体的帖子的地址

可以把他保存在你的索引数据库里了

以后需要得到这个数据时可以先从索引数据库里取出帖子的地址

再访问相应的地址获取数据

那个帖子地址也有规律的,他的构成如下:

"http://groups.google.com/group/" + 你的论坛名 + " /msg/" + 一个16位字符串

因此理论上google论坛可以存储36的16次方个帖子,这个数字你用个一百年也未必用得到吧

呵呵,好好享受你的海量数据库吧

 
     
 
 
个人档案
 
jyf1987
男, 21岁
浙江 杭州 
上次登录:
10天前
加为好友
 
   
 
文章分类
 
 
 
 
 
 
 
     
 
最新评论
   
文章评论|照片评论

 

无法保证文件的原始性 下个补丁还要去查md5就麻烦了
 
 

偶喜欢这篇文字,可惜不是原创,哈哈
 

偶喜欢这篇文字,可惜不是原创,哈哈
 
     
 
好友最新文章
 
     
 
最近访客
 
 

hitche

puppylinux

lianpengshebei

isledo

rela1987

iw___

佳赠

弃海归山
     
 
背景音乐
 
 
其它
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2008 Baidu