我不相信一切所谓人生导师。在这个没有上帝的世界上,谁敢说自己已经贯通了一切歧路和绝境,因而不再困惑,也不再需要寻找了?
      至于我,我将永远困惑,也永远寻找。困惑是我的诚实,寻找是我的勇气。
      对于我来说,人生即事业,除了人生,我别无事业。我的事业就是穷尽人生的一切可能性。这是一个肯定无望但极有诱惑力的事业。
      我走在自己的路上了。成功与失败、幸福与苦难都已经降为非常次要的东西。最重要的是这条路本身。

                                                                             ——周国平

Tag: PJBLOG预览模式: 普通 | 列表

pjblog 自动安装包原理

install.asp和install.dat。本来以为是一个gz或者zip的压缩文件,将install.dat改变了后缀依然不能解压,于是引起了我的兴趣。
1、先看install.asp文件,发现install.asp文件中对install.dat文件操作方式是objXmlFile。原来install.dat是一个XML文件?

2、用UltraEdit打开install.dat文件,发现果真是XML文件。格式为:
</file><file><path>\atom.css</path><stream xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">这里是编码</stream>
在<path>中保存的是路径
在<stream>中保存的是数据的内容
就是将asp css gif jpg等文件以bin.base64 类型的节点内容存放,现在新版本的word文档都用这种格式了。

3、可以参考一个技术文档

因为最近要做的项目中,我要通过XML动态生成窗体,看了UI图样,我有些叫苦:我通过XML动态生成窗体,可是主窗体中UI要用图标来确定要使用的窗体,怎么才能使主窗体的图标也是动态加载而且图标和要生成的窗体还有关联呢?我又想到用XML,查MSDN,看到只有XmlTextWriter 和XmlTextReader里分别有XmlTextWriter.WriteBase64和XmlTextReader.ReadBase64可以操作图片这种二进制字节的数据。但是XmlTextWriter和XmlTextReader远不如XmlDocument操作方便,如果用这两者我就得写太多的代码。困扰了我一天,记得以前看到过一篇文章介绍怎样将图片数据存储到Xml文件,可是怎么也找不到,后来终于在一个英文网站上找到了相关内容,而且还是2003年贴出来的,汗。好了,不废话了,我把我的实现代码贴给大家吧。private XmlDocument document;private string FilePath = Application.StartupPath + "\\..\\..\\FormStyle.xml";    // FormStyle.xml 文件地址private void frmMain_Load(object sender, System.EventArgs e){        if(document == null)        {               document = new XmlDocument();               document.Load(FilePath);        }        // 只挑选含有Form的节点        XmlNodeList FormNodes = document.GetElementsByTagName("Form");        lbIcons.BeginUpdate();        lbIcons.Items.Clear();        foreach(XmlNode node in FormNodes)        {               // 把节点的名称放到下拉列表里               lbIcons.Items.Add(node.Attributes["Name"].Value);        }        lbIcons.EndUpdate();}private void lbIcons_SelectedValueChanged(object sender, System.EventArgs e){        // 查找下拉框所选的窗体下是否有Image元素,若无则退出        XmlNode node = document.DocumentElement.SelectSingleNode(string.Format("descendant::Form[@Name='{0}']/Image", lbIcons.SelectedItem.ToString()));        if(node == null)               return;        // 如果含有Image元素,就将元素值转换为Base64String,然后放到内存流        using (MemoryStream mem = new MemoryStream(Convert.FromBase64String(node.InnerText)))        {               // 加载内存流数据为位图               Bitmap bmp = Bitmap.FromStream(mem) as Bitmap;               pictureBox1.Image = bmp;        }}private void btnAdd_Click(object sender, System.EventArgs e){        // 如果不存在txtFilePath.Text所指文件,就退出        if(!File.Exists(txtFilePath.Text) || lbIcons.Items.Count == 0)               return;        if(lbIcons.SelectedIndex == -1)               lbIcons.SelectedIndex = 0;        if(document == null)        {               document = new XmlDocument();               document.Load(FilePath);        }        //Read the bitmap.        string data = null;        Bitmap bmp = new Bitmap(txtFilePath.Text);        using (MemoryStream mem = new MemoryStream())        {               bmp.Save(mem, System.Drawing.Imaging.ImageFormat.Bmp);               // 将位图数据转换为Base64String放入字符串中               data = Convert.ToBase64String(mem.ToArray());        }        // 查找当前所选的窗体是否含有Image节点,若就新建一个        XmlNode node = document.DocumentElement.SelectSingleNode(string.Format("descendant::Form[@Name='{0}']", lbIcons.SelectedItem.ToString()));        XmlNode ImageNode = document.DocumentElement.SelectSingleNode(string.Format("descendant::Form[@Name='{0}']/Image", lbIcons.SelectedItem.ToString()));        if(ImageNode == null)        {               ImageNode = document.CreateElement("Image");               node.AppendChild(ImageNode);        }        // 将位图数据保存到XML文档        ImageNode.InnerText = data;        document.Save(FilePath);}

4、这种方式制作安装包是做第一次见到的,有两个好处:一是可以网络安装,不需要上传几十个文件,只需要上传一个安装文件和一个安装包即可;二是可以使ASP程序变得更加专业业和商业化,安装文件构造和修改都很简单,如果有一个很好的制作数据文件的工具,或许还能制作出来一个像样的安装工具来。

查看更多...

Tags: PJBLOG 原理 网络相关 自动安装包

分类:行走ǒ拾遗 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5925

PJBLOG中让插入的flash自动播放详细教程

PJBLOG中如何让插入的flash自动播放,不用点击打开?

一直以来在这里发的视频都是需要点击才能打开的,如下图:

也曾经尝试直接在后台修改文件来彻底解决,但是没有成功,由于本人比较懒也就没有去理这个问题!

我知道肯定有办法解决的,今天特意去PJBLOG论坛上搜索了一下,原来这是一个很简单的问题,用FCKeditor就可以解决这个问题了。

PJBLOG默认的日志编辑器是UBBeditor,在发表日志的时候可以选择用FCKeditor进行编辑,现在给出详细步骤。

1、发表新日志的时候,选择日志分类的时候顺便在下边把日志编辑器类型选择为fckeditor ,如下图:

注意,一定要在这里选择fckeditor编辑器才可以,到下一步就不能选择编辑器了,除非重新写日志。选择好之后请点击“下一步”。

2、然后就进入了日志编辑页面,编辑器工具栏如下图:

要插入FLASH请点击上图中的那个被选中的按钮就可以了,点击后进入下图界面:

然后在“基本信息栏”写入源文件地址,高度和宽度设置;在“高级”栏中可进行进一步的设置,然后设置完成后也可以用鼠标拖动边框来调整大小!

 

好了,最后送大家一首好听的kiss the rain跟大家分享,歌曲中文名:雨的印记,希望你能喜欢!

 

Tags: PJBLOG flash 自动播放 教程 网络相关

分类:解惑ǒ求知 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4306