May 3


    和大家一样,我也是一个G饭,将百度设为默认搜索引擎的唯一一个原因仅仅是上网看到了不认识的单词后,鼠标选中一拖(用了Drag de Go)就可以看到百度词典的链接。有时也会用一下搜狗,因为搜狗还有一个显示偏僻字读音的功能。今天没事干,打算写一个Greasemonkey脚本让Google显示搜索关键字的读音和释义(中英文都可以)。
    花了大概两个小时,具体方法是给Dict.cn发送XMLhttp请求,并把结果插入到Google页面中。我做人还算厚道,用了别人的东西是要链一下别人的,因此加了一个“View More”链接。不知道Google本身或者FireFox插件能不能实现这样的效果,反正我是没有找到。我想肯定有人需要这个,因此发布出来大家可以测试一下。

点击这里安装
注意:安装前请确认你正在使用FireFox并已经安装了Greasemonkey插件!
成功使用或有任何问题的同志在下面留个言


    目前我在FireFox 2.0和英文google环境下使用正常,大家发现Bug请帮忙报告一下。不过我好像每次叫大家报告Bug时都没人理我。
    目前已知问题:由于编码问题,中文关键字的“View More”链接无效。
    Matrix67原创,转贴请注明出处。

Apr 27

What is it?
    最近大家喜欢在留言板发一些与本站无关的话题并互相引用回复,这说明一个论坛模块是有必要的,于是想到了开发讨论区模块。
    这个单版面讨论区用于访问本站的网友进行讨论和聊天。它和留言板的功能有很大的区别。比如,下面8条消息中,前4条应该发到留言板,后4条应该发到讨论区。
    1. 这个Blog太他妈的牛了
    2. 为什么我要用代理才能上你的网?
    3. 建议把验证码换成3位乘法并加入平方和阶乘运算
    4. 申请友链www.8rong8chi.com,logo可以在www.3gedaibiao.com里找到
    5. 问一下Matrix67的情书那道题
    6. 记者MM的PP到手,请登陆www.colorwolf.com查看。
    7. 跪求Sky Angel Vol.39 - Vol.41和Tokyo Hot n0204
    8. matrix哥哥你好,我是一个可爱的初三MM,我好想跟你聊天啊,+我QQ:xxxxxxxx

    另外,针对某篇日志的留言直接在日志下面写评论就可以了。

History:
    23号的日志里我曾经说过我要写一个PJBlog的单版面论坛模块。实际的工作是从昨天开始的。
    昨天一起床我就开始研究PJBlog的数据库和函数,经过两天两夜的奋战终于写出了一个大致成形的程序。目前这个模块属于VERY Beta版,只用了两个asp文件,里面有很多问题。数据库结构的合理性有待观察,因此数据有可能会重建从而导致数据丢失。目前论坛界面非常简陋,你进去看了别被吓到就是了。任何一个牛人也有菜的时候,如果以后我开发了什么大型web 2.0,我不会忘记今天我写的这个终极菜鸟程序。

Features:
    这个单版面论坛的程序特点就是没有任何特点,除了发帖回贴外这个论坛程序目前不支持任何其它的操作(如头像、签名、高亮、置顶、PM、积分、附件、交易等),并且以后也不打算支持。毕竟这是一个个人Blog的模块而已。
    这个单版面论坛的管理方式就是不进行任何管理。不删除任何帖子,不分版限制话题,用户无需注册即可发言。仅仅是一个大家随意交流的地方。各位在其它论坛发的水贴老被删的话可以到这里来(想不通OIBH为什么不开水区)。请大家自觉远离色情,远离政治。

TODO List:
    加入分页功能
    加入管理员的管理功能
    加入自动清除陈贴的功能
    将浏览方式改为纯Ajax
    一些简单的界面美化
    修复大家提出的Bug
    可能加入其它一些大家提出的有创意的构想

有Bug请报告一下。

Apr 19

很早就跟别人说我想搞Ajax,今天终于修成正果,实现了首页asp程序Ajax化。Ajax太他妈的牛了。
目前在我这里运行良好,有Bug的话报告一下。
目前已知问题:不支持Opera。目前还不知道是为什么,期待哪位高人给本菜鸟指点一下。现在Opera也可以了,原因出在cache上。

Apr 19

    常去mimima(已封,因此该asp程序不支持), 2kdown, pidown等种子host网站的同志都知道,这类站点有一个非常麻烦的地方就是不支持FireFox,点击Download后不能下载,而是出现一整页的乱码。上这种站点又怕有毒,开IE Tab开得胆战心惊的。今天搞烦了,决定把这个问题解决了。初步认为,错误原因应该是那边的php返回的Content-Type不对。然后,网上搜索半天解决方案都没有,于是想到自己写一个GreaseMonkey脚本,后来写来写去发现怎么也不行,又想搞FireFox扩展。最后突然想到办法,为什么不用asp把那边的数据用XMLhttp偷过来并转化成正确的Content-Type?于是,我的又一个asp小程序诞生了。
    这是一个测试版,可能有很多Bug,大家可以帮忙报告一下。这个asp程序在我这里还没出问题,至少上面提到的两个网站是完全可以的,我今天已经用了好几次了。注意,有一些其它的BT种子上传站点,虽然界面非常相似,但代码不一样(比如onlyff.com),它们是支持FireFox的,同时因为Post方式不一样,该asp程序不支持。

点击这里进入

需要测试一下么?你可以把下面的地址复制到输入框里然后点击Download。
http://www.pidown.com/link.php?ref=M70vw7SS8o
严重NSFW,别因为好奇真下了点开来看。我?我是满了18岁的了,下个月就19了。

    回过来想一下,JavaScript也可以XMLhttp,但是我不知道怎样用JS生成一个二进制文件。我想至少出于安全方面的考虑,这是不大可能的。

2007.04.22  pidown和2kdown也被封了,本asp程序彻底作废,关了。

Jan 16

    我从来不承认我是一个完美主义者,不过昨天不得不承认了。我花了3个小时的时间重新整理了我的F:\mp3\*.mp3所有近600个文件的ID3标签。

    在我的播放列表里添加一个文件非常的麻烦。首先下载歌曲,然后重新压成96Kbps或128Kbps的mp3文件,然后把文件名改成“歌手+空格+歌名”的样子。然后用Mp3 Gain把音量统一为89dB。然后,下载.lrc歌词文件,去掉歌词文件里的广告和制作人信息,可能还要重新编辑一下时间轴。最后把mp3文件放在F:\mp3目录下面,把歌词文件放在F:\mp3\lrc目录下面。添加进Winamp的播放列表后,有时会看见歌曲名带有网址的,那是ID3标签里的。如果把这个ID3标签留着的话,MSN上的正在收听就不好看了。为此,我干脆去掉所有mp3文件的ID3标签。这样,不管是什么地方,只要文件没有ID3,歌曲显示的就是我的文件名,而我的文件名肯定都是正确的。
    昨天去买了iPod nano,二代,2G。iPod的价格都是打算吃人的,尤其是配件。不说Hi-Fi和inMotion了,就连漫步者的某个iPod音响就是600多银子。买个套套都要花很多钱,幸好它那里送了一个。
    同步到iPod后我才发现ID3标签有多重要。iPod(当然也包括一些其它的mp3)用ID3的标签对音乐进行分类。你可以按音乐人和专辑来搜索歌曲。其它很多功能也需要完备的ID3标签。这下好了,我的ID3标签全部空白。早知道的话,不删除那些ID3标签该多好啊,至少现在我想重新完善ID3标签也有一些参考信息嘛。不然的话,难道重新添加ID3标签只能上网一个个搜索每首歌对应的专辑和曲目号?我600首歌呢,整死你。
    后来我想到好办法了。我不是有歌词文件吗?歌词文件里不是有[ti:]、[ar:]和[al:]吗?我的歌词文件名和mp3一一对应,方便文件操作。但网上从来没找到过类似的程序可以提取.lrc文件的信息加入ID3标签。于是我打算自己编一个。这个程序很简单,我也就直接用的FP了,没用Delphi。
    我花了一些时间研究了一下ID3的格式。用WinHex看几个试试,ID3 v1比v2的格式更简单,直接添加在Mp3的最末尾,你用Winamp改几个标签然后用WinHex一看就明白了。.lrc的格式更不说了,白痴都看得懂。
    以下程序代码可以自动搜索程序所在目录下的mp3文件,使用lrc子目录下的相应歌词文件中的歌曲名、音乐人和专辑信息实现自动添加ID3信息。该程序在FPC 2.0下测试。通篇代码没有一个注释,结构比较乱。毕竟是给我自己看的,当时没想过要发布上来。
program id3rename;

uses dos;

type
   info=record
           title,artist,album:string[26];
        end;
var
   Mp3:array[1..20000000]of char;

function GetInfo(FileName:string):info;
var
   ch:char;
   LrcInfo:info;
   Lines:integer;
   Content:boolean;
begin
   Lines:=1;
   LrcInfo.title:='';
   LrcInfo.artist:='';
   LrcInfo.album:='';
   {$I-}
   assign(input,FileName);
   reset(input);
   {$I+}
   if ioresult<>0 then exit(LrcInfo);

   repeat
      read(ch);
      if ord(ch)=13 then inc(Lines)
      else if ch=']' then Content:=false
      else if ch='[' then Content:=true;

      if Content then
        if Lines=1 then LrcInfo.title:=LrcInfo.title+ch
        else if Lines=2 then LrcInfo.artist:=LrcInfo.artist+ch
        else if Lines=3 then LrcInfo.album:=LrcInfo.album+ch;
   until Lines=4;
   delete(LrcInfo.title,1,4);
   delete(LrcInfo.artist,1,4);
   delete(LrcInfo.album,1,4);
   close(input);
   exit(LrcInfo);
end;

procedure SaveTag(LrcInfo:info;FileName:string;Total:longint);
var
   FileSize:longint;

   procedure InsertText(a:string;l:longint);
   var
      i:longint;
   begin
      for i:=1 to l do
         if i<=length(a) then Mp3[FileSize+i]:=a[i]
         else Mp3[FileSize+i]:=chr(0);
      FileSize:=FileSize+l;
   end;

var
   i:longint;
begin
   assign(input,FileName);
   reset(input);
   FileSize:=0;
   for FileSize:=1 to total do
      read(Mp3[FileSize]);
   close(input);

   InsertText('TAG',3);
   InsertText(LrcInfo.title,30);
   InsertText(LrcInfo.artist,30);
   InsertText(LrcInfo.album,65);
   Mp3[FileSize]:=chr(255);

   assign(output,FileName);
   rewrite(output);
   for i:=1 to FileSize do write(Mp3[i]);
   close(output);
end;

procedure main;
var
   dir:SearchRec;
   LrcInfo:info;
begin
   FindFirst('*.mp3',archive,Dir);
   while (DosError=0) do
   begin
      FindNext(Dir);
      delete(Dir.name,length(Dir.name)-2,3);
      LrcInfo:=GetInfo('lrc\'+Dir.name+'lrc');
      SaveTag(LrcInfo,Dir.name+'mp3',Dir.size);
      assign(input,'');
      reset(input);
      assign(output,'');
      rewrite(output);
      writeln(Dir.name,' Finished!');
      //readln;
   end;
   FindClose(Dir);
end;

begin
   main;
end.

    郑重声明:如果你读不懂这个代码,千万别去玩火。而且这是批量的玩火。搞坏了你的mp3文件的话我概不负责,到时候看你找谁哭去。如果你真的需要这个程序的话,在下面留言,我会考虑搞个发布版。我还有一些想法,要是这个程序能自动上网找曲目号、发行年份和专辑封面之类的就好了。国外有类似的软件,因为美国佬的网上有这一类的开放的数据库。国内呢?如果大家有好的数据库的话也欢迎在下面留言提供一下。

    接下来,使用个人认为最好的标签编辑软件ID3-TagIT 3。批量把ID3 v1转换为v2,然后手工改一些不完美的信息。比如,调整同样的东西不同的名称,例如把she、SHE、S.H.E、S.H.E(女朋友)、S.H.E(女朋友)之类的全部改成S.H.E,这样才能在按音乐人分类时准确地把同一个人的歌搞在一块。这个软件十分强大,允许你选择多个文件统一编辑某项信息。当然,它也允许按指定的格式从文件名中提取信息。有人会问,那我为什么不从文件名提取信息呢?笨蛋,前面我说过我是用空格来分隔歌手和歌名的。鬼知道“Avirl Lavigne Complicated.mp3”是不是指Avirl唱的Lavigne Complicated。
    一切搞完了,还要Save一次,软件才会真正的改动文件。哈哈,这下就爽了。当然,这样的ID3还不完善,我就等着大家推荐一些在线歌曲数据了。这下Perfect了,同步到iPod,爽。

做人要厚道
转贴请注明出处

Sep 1

最近给我妈写了一个连连看的作弊程序,今天没事干,把它做成了发布版发布在这里。
这个程序是用Delphi 7写的,393KB,目前只在连连看3.9版本中测试过(其它版本没试过)。

  

程序可以在这里下载:
http://www.matrix67.com/data/cheater.rar

     更新的日志 »