<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
	<title>有点智能</title>
	<link>https://udzn.wodemo.net/</link>
        <item>
        <title><![CDATA[超前进位加法器]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/478317]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Thu, 26 Apr 2018 05:31:19 -0700]]></pubDate>
        <description><![CDATA[超前进位加法器 线路图 网络搜集 很直观. Z.jpg]]></description>
    </item>
        <item>
        <title><![CDATA[html5测试]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/476445]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Wed, 04 Apr 2018 11:38:59 -0700]]></pubDate>
        <description><![CDATA[测试. Screenshot_20180405-130553.png. sample_bmp.png]]></description>
    </item>
        <item>
        <title><![CDATA[塞班wap网址导航]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/475740]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Mon, 26 Mar 2018 06:47:27 -0700]]></pubDate>
        <description><![CDATA[塞班wap网址导航【搜索】搜狗◆神马

【天气】天气◆

【小说】知轩藏书

【社区】乐讯◆八神智能


【翻译】谷歌翻译(时灵时不灵)

【新闻】cnBeta

【友情推荐】javame
]]></description>
    </item>
        <item>
        <title><![CDATA[为什么浏览器的用户代理字符串以 Mozilla 开头]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/474048]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Tue, 06 Mar 2018 01:50:22 -0800]]></pubDate>
        <description><![CDATA[最早流行的浏览器是 NCSA Mosaic，它称自己为 NCSA_Mosaic/2.0 (Windows 3.1)；后来一个新浏览器出现了，它的名字叫 Mozilla，是 Mosaic Killer 的缩写，Mosaic 并不觉得这好笑，因此该浏览器改名为 Netscape，它称自己为 Mozilla/1.0 (Win3.1)。Netscape 支持框架（frame），而 Mosaic 不支持，因此用户代理嗅探（User Agent sniffing）出现了，网站在检测到 Mozilla 后就发送框架，如果不是就不发送。后来微软开发了 IE，希望它成为 Netscape Killer，IE 也支持框架，但由于它不是 Mozilla，网站没有向它发送框架。
微软没有耐心等待网站修改而是声称它兼容于 Mozilla，因此冒充 Netscape 称自己为 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。第一次浏览器战争以 Netscape 的失利结束，但 Netscape 以 Mozilla 的名字获得了新生。
Mozilla 构建了 Gecko，称自己为 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826。Gecko 是一个渲染引擎，Mozilla 在此基础上开发了 Firefox，它称自己为 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0。因为 Gecko 好于 IE，因此用户代理嗅探又出现了，网站在检测到 Gecko 后会提供更好的页面代码。

Linux 上的浏览器 Konqueror 使用的渲染引擎是 KHTM，它只能冒充 Gecko 称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。Opera 则提供了选项，让用户想冒充哪个浏览器就冒充哪个浏览器。苹果后来创建了 KHTML 的一个分支 WebKit，称自己为 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。这就是为什么浏览器的用户代理字符串以 Mozilla 开头。]]></description>
    </item>
        <item>
        <title><![CDATA[测试]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/453785]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Thu, 31 Aug 2017 23:56:00 -0700]]></pubDate>
        <description><![CDATA[点击图片出现3D爆炸效果
/*-----------------------------【程序说明】-----------------------------
 *	程序说明：	图片爆炸立体效果
 *	浏览器支持：Chrome、Firefox、Safari、国产主流移动浏览器（性能较差）
 *	Created by Qieguo on 2016-05-15.
 *	更多信息请关注我的博客：http://www.cnblogs.com/qieguo/
 *
 *	Reference: Zachstronaut LLC @ http://www.zachstronaut.com/
 *  Licensed under the MIT，转载使用请注明出处！http://www.cnblogs.com/qieguo/
 *--------------------------------------------------------------------
 */

function ParticlesTemplate() {
    var that = this,
    	_halfPageWidth = document.body.clientWidth / 2,
    	_pageHeigth = document.body.clientHeight;
	
    this.particleCount = 0;
    this.activeCount = 0;
	
    this.nodes = [];
    this.alives = [];
    this.xs = [];
    this.ys = [];
    this.zs = [];
    this.xvs = [];
    this.yvs = [];
    this.zvs = [];

    this.xa = 0;		//x axis acceleration
    this.ya = 0.6;		//y axis acceleration
    this.za = 0.2;		//z axis acceleration

    this.xf = 0.97;		//x axis force
    this.yf = 1;		//y axis force
    this.zf = 0.97;		//z axis force

    this.timeToStop = false;
    this.transformProperty = false;
    this.vendorPrefix = false;
    this.support3D = false;
	
	//make particles
	this.init = function (exploreImg, wrapper) {
		var pwidth = pheight = 10,		//particle's size
			x = y = 0,
        	div = styleCtn = '',
    	    imgWidth = exploreImg.width,
    	    imgHeight = exploreImg.height,
       		nx = Math.floor(imgWidth / pwidth),
        	ny = Math.floor(imgHeight / pheight),
        	head = document.head || document.getElementsByTagName('head')[0],
        	bombStyle = document.createElement('style');
        
        //define common style
        bombStyle.type = 'text/css';
        bombStyle.appendChild(document.createTextNode('.bomb { position: absolute; height: 10px; width: 10px; background-image: url(' + exploreImg.src + '); }'));
        head.appendChild(bombStyle);
        
		for (var i = 0, num = nx * ny; i < num; i++) {
			x = (i % nx) * pwidth;
			y = Math.floor(i / ny) * pheight;
			styleCtn = 'left: ' + x + 'px; top: ' + y + 'px; background-position: ' + (-x) + 'px ' + (-y) + 'px;';
            div =div+'';
		}
        wrapper.innerHTML = div;	//add particles to wrapper
        
        var particles = document.getElementsByClassName('bomb'),
			i = particles.length;
	    while (i--) {
	        this._add(particles[i], true);
	    }
	};
	
	//start animation
	var _t = 0;
    this.go = function () {
    	if (that.activeCount) {
            if (that.timeToStop) {
                return that.timeToStop = false;
            }
            
            window.requestAnimationFrame(that.go);

            var nt = Date.now()
            if (nt - _t > 32) {
                _t = nt;
                that._updateAll();
            }
       	}
    }

	//stop animation
    this.stop = function () {
        that.timeToStop = true;
    }
	
	//add nodes to particles
    this._add = function (node) {
        if (!this.transformProperty) {
            var p, properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
            while (p = properties.shift()) {
                if (typeof node.style[p] != 'undefined') {
                    this.transformProperty = p;
                    if (p != 'transform') {
                        this.vendorPrefix = p.replace('Transform', '');
                    }
                    if (typeof node.style.perspective != 'undefined' || (this.vendorPrefix && typeof node.style[this.vendorPrefix + 'Perspective'] != 'undefined')) {
                        this.support3D = true;
                    }
                    break;
                }
            }
        }
                
        this.nodes.push(node);

        var i = this.particleCount;
        this._revive(i);
        this.particleCount++;
    }
	
	//initialize particle's coordinate and speed
    this._revive = function (i) {
    	this.xs[i] = 0;
        this.ys[i] = 0;
        this.zs[i] = 0;
        var xFactor = (parseInt(this.nodes[i].style.left) - 60 ) / 40;
        var yFactor = (parseInt(this.nodes[i].style.top) - 95 ) / 80;
        this.xvs[i] = (10 + Math.floor(Math.random() * 10)) * xFactor;
        this.yvs[i] = (10 + Math.floor(Math.random() * 10)) * yFactor;
        this.zvs[i] = -20 + Math.floor(Math.random() * 40);
        
        this.activeCount++;
        this.alives[i] = true;
    }
    
	//judge whether particle[i] should be killed or not
    this._shouldBeKilled = function (i) {
    	if (this.xs[i] < -_halfPageWidth || this.xs[i] > _halfPageWidth || this.ys[i] > _pageHeigth) {
    		this.xs[i] = -9999;
        	this.ys[i] = 0;
            this.activeCount--;
            this.alives[i] = false;
    	}
    }
	
	//update particle's coordinate and speed
    this._updateAll = function () {
        var i = this.particleCount;
        while (i--) {
            if (this.alives[i]) {
                this.xvs[i] += this.xa;
                this.yvs[i] += this.ya;
                this.zvs[i] += this.za;

                this.xvs[i] *= this.xf;
                this.yvs[i] *= this.yf;
                this.zvs[i] *= this.zf;

                this.xs[i] += this.xvs[i];
                this.ys[i] += this.yvs[i];
                this.zs[i] += this.zvs[i];
		
				this._shouldBeKilled(i);
				
				var s = 1 + this.zs[i] / 200;
                if (s < 0) { s = 0; }
                if (this.support3D) {
                    this.nodes[i].style[this.transformProperty] = 'translate3d(' + this.xs[i] + 'px, ' + this.ys[i] + 'px, ' + this.zs[i] + 'px) rotateX(' + Math.cos(0.1 * this.ys[i]) + 'rad) rotateY(' + Math.sin(0.1 * this.xs[i]) + 'rad)';
                } else {
                    this.nodes[i].style[this.transformProperty] = 'translate(' + this.xs[i] + 'px, ' + this.ys[i] + 'px) scale(' + s + ', ' + s + ')';
                }
            }
        }
    }

}

    .wrapper{width: 100%;
        margin:0;
        position: absolute;
        cursor: pointer;
        perspective: 200px;
    }



        

    var explore = new ParticlesTemplate(),
        exploreImg = new Image(),
        wrapper = document.getElementById('zd-wrap');
    exploreImg.src = 'https://udzn.wodemo.com/entry/453785/20180406/6ec6ff51771092d96ac5367a13a8bf90/newimage0.png';   

    

    exploreImg.onload = function () {
        explore.init(exploreImg, wrapper);
        wrapper.addEventListener('click', function () {
            explore.go();
        }, false);
    };
. newimage0.png]]></description>
    </item>
        <item>
        <title><![CDATA[自动访客脚印]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/453173]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Sat, 26 Aug 2017 23:15:27 -0700]]></pubDate>
        <description><![CDATA[测试中
function post(URL, PARAMS){
    var temp=document.createElement("form");
    temp.action=URL;
    temp.method="post";
    temp.style.display="none";
    for (var x in PARAMS){
        var opt=document.createElement("textarea");
        opt.name=x;
        opt.value=PARAMS[x];
        //alert(opt.name)
        temp.appendChild(opt);
    }
    document.body.appendChild(temp);
    temp.submit();
    return temp;
}


var tttt=document.cookie
alert("@"+tttt+"@");
cookies[]=request.getCookies();
alert("9999");
alert(cookies);
//post('https://s.wodemo.com/admin/group',{'act':'group_topic_reply','validatetoken':'71f5i9nfrper','topic_id':'4503','content':'看我脚印'});




]]></description>
    </item>
        <item>
        <title><![CDATA[检查更新]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/436105]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Mon, 03 Apr 2017 02:09:29 -0700]]></pubDate>
        <description><![CDATA[版本号：&lt;banben&gt;1.01&lt;/banben&gt;]]></description>
    </item>
        <item>
        <title><![CDATA[贪吃蛇大作战-检查更新]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/436104]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Mon, 03 Apr 2017 02:09:08 -0700]]></pubDate>
        <description><![CDATA[版本号：&lt;banben&gt;v1.15(0404)&lt;/banben&gt;]]></description>
    </item>
        <item>
        <title><![CDATA[历古仙穹-检查更新]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/436103]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Mon, 03 Apr 2017 02:08:29 -0700]]></pubDate>
        <description><![CDATA[版本号：&lt;banben&gt;v1.15(0403)&lt;/banben&gt;]]></description>
    </item>
        <item>
        <title><![CDATA[神经网络基础知识之我们的大脑]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/435544]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Thu, 30 Mar 2017 02:34:58 -0700]]></pubDate>
        <description><![CDATA[大脑的外层象一个大核桃那样，这个外层组织就称皮层(Cortex)，皮层象核桃一样起皱。把整个大脑切成片，将看到大脑有两层：灰色的外层（也就是“灰质”，没有经过福尔马林固定的新鲜的大脑实际是粉红色的。)和白色的内层。灰色层只有几毫米厚，其中紧密地压缩着几十亿个被称作neuron（神经细胞、神经元）的微小细胞。白色层在皮层灰质的下面，占据了皮层的大部分空间，是由神经细胞相互之间的无数连接组成。人的大脑大约含有100亿个这样的微小处理单元，一只蚂蚁的大脑大约也有25万个（这两个数据估计不准，但大概意思就是非常多的意思）。&lt;b&gt;在&lt;/b&gt;人的生命的最初9个月内，这些细胞以每分钟25,000个的惊人速度被创建出来。神经细胞和人身上任何其他类型细胞十分不同，每个神经细胞都长着一根像电线一样的称为轴突（axon）的东西，它的长度有时伸展到几厘米，用来将信号传递给其他的神经细胞。&lt;b&gt;神经细胞的结构&lt;/b&gt;&lt;b&gt;它&lt;/b&gt;由一个细胞体(soma)、一些树突(dendrite)、和一根可以很长的轴突组成。神经细胞体是一颗星状球形物，里面有一个核(nucleus)。树突由细胞体向各个方向长出，本身可有分支，是用来接收信号的。轴突也有许多的分支。轴突通过分支的末梢(terminal)和其他神经细胞的树突相接触,形成所谓的突触（Synapse，图中未画出），一个神经细胞通过轴突和突触把产生的信号送到其他的神经细胞。&lt;b&gt;每&lt;/b&gt;个神经细胞通过它的树突和大约10,000个其他的神经细胞相连。这就使得你的头脑中所有神经细胞之间连接总计可能有1,000,000,000,000,000个。&lt;b&gt;神&lt;/b&gt;经细胞利用电-化学过程交换信号。输入信号来自另一些神经细胞。这些神经细胞的轴突末梢（也就是终端）和本神经细胞的树突相遇形成突触（synapse），信号就从树突上的突触进入本细胞。信号在大脑中实际怎样传输是一个相当复杂的过程，但就我们而言，重要的是把它看成和现代的计算机一样，利用一系列的0和1来进行操作。就是说，大脑的神经细胞也只有两种状态：兴奋（fire）和不兴奋（即抑制）。发射信号的强度不变，变化的仅仅是频率。神经细胞利用一种我们还不知道的方法,把所有从树突上突触进来的信号进行相加，如果全部信号的总和超过某个阀值，就会激发神经细胞进入兴奋（fire）状态，这时就会有一个电信号通过轴突发送出去给其他神经细胞。如果信号总和没有达到阀值，神经细胞就不会兴奋起来。这样的解释有点过分简单化，但已能满足我们的目的。&lt;b&gt;正&lt;/b&gt;是由于数量巨大的连接，使得大脑具备难以置信的能力。尽管每一个神经细胞仅仅工作于大约100Hz的频率，但因各个神经细胞都以独立处理单元的形式并行工作着，使人类的大脑具有下面这些非常明显的特点：能实现无监督的学习。有关我们的大脑的难以置信的事实之一，就是它们能够自己进行学习，而不需要导师的监督教导。如果一个神经细胞在一段时间内受到高频率的刺激，则它和输入信号的神经细胞之间的连接强度就会按某种过程改变，使得该神经细胞下一次受到激励时更容易兴奋。这一机制是50多年以前由DonardHebb在他写的OrganinationofBehavior一书中阐述的。他写道:
“当神经细胞A的一个轴突重复地或持久地激励另一个神经细胞B后，则其中的一个或同时两个神经细胞就会发生一种生长过程或新陈代谢式的变化，使得激励B细胞之一的A细胞的效能会增加”
与此相反的是，如果一个神经细胞在一段时间内不受到激励，那么它的连接的有效性就会慢慢地衰减。这一现象就称可塑性（plasticity）。
对损伤有冗余性(tolerance)。大脑即使有很大一部分受到了损伤，它仍然能够执行复杂的工作。一个著名的试验就是训练老鼠在一个迷宫中行走。然后，科学家们将其大脑一部分一部分地、越来越大地加以切除。他们发现，即使老鼠的很大的一部大脑被切除后，它们仍然能在迷宫中找到行走路径。这一事实证明了，在大脑中，知识并不是保存在一个局部地方。另外所作的一些试验则表明，如果大脑的一小部分受到损伤，则神经细胞能把损伤的连接重新生长出来。&lt;b&gt;扩展&lt;/b&gt;人的大脑6岁时候的神经元之间的连接非常的密集。但是，在14岁的时候变稀疏了，这是因为有用的连接会增强，没用的连接会退化，相当于对大脑模型进行了压缩。]]></description>
    </item>
        <item>
        <title><![CDATA[塞班百度贴吧登录流程及问题汇总]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/433627]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Mon, 13 Mar 2017 06:22:50 -0700]]></pubDate>
        <description><![CDATA[塞班百度贴吧登录流程及问题汇总浏览器选择：UC浏览器8.9.sis、UC浏览器9.0.jar。
准备工作：确保窗口为一个后清除COOKIES两次！（详细：菜单〉工具〉清理记录〉‘COOKIE打勾、页面缓存打勾’〉左软键确定清理）。准备工作做完后就不用管窗口有多少了。&lt;br&gt;
开始登录！！！&lt;br&gt;
打开你原先贴吧简版书签并访问，没有请用“&lt;a href='http://tieba.baidu.com/mo/q-0--,sz@240_320-1-2-0--1/m?tn=bdIndex&amp;lp=1063'&gt;http://tieba.baidu.com/mo/q-0--,sz@240_320-1-2-0--1/m?tn=bdIndex&amp;lp=1063&lt;/a&gt;并点击页面最底下极速版”。打开&lt;a href='https://passport.baidu.com/v2/'&gt;https://passport.baidu.com/v2/&lt;/a&gt;。&lt;br&gt;
输入帐号密码登录，如果提示输入验证码就输入验证码（如下图）！. UC一.png如果点击登录后提示“登录超时”或者“登录成功”就表示你可以直接访问贴吧简版地址了，就是开头的那个网址！&lt;br&gt;&lt;br&gt;
如果出现下面的提示！. UC二.png如果出现上面的提示，那么就短信登录！点击“短信快捷登录”链接！&lt;b&gt;短信快捷登录：&lt;/b&gt;&lt;br&gt;
输入手机号〉点击获取动态码〉等待百度发的短信〉复制短信里的验证码后回到登录页面把动态码填上点击登录！&lt;b&gt;‘短信快捷登录’：输入手机号与动态码后点击登录，如果‘提示动态码失效’或者‘动态码过期’你需要重新获取动态码重登！！！其他任何状态都是登录成功！这时你可以访问这篇文章开头第一个贴吧简版地址或者你的贴吧书签地址！&lt;/b&gt;&lt;hr&gt;&lt;br&gt;以下贴吧导航：&lt;br&gt;
&lt;a href='http://passport.baidu.com/v3/'&gt;百度帐号个人中心（前提是已登录）&lt;/a&gt;&lt;br&gt;]]></description>
    </item>
        <item>
        <title><![CDATA[历古仙穹v1.15(0403)]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/429607]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Fri, 10 Feb 2017 02:58:03 -0800]]></pubDate>
        <description><![CDATA[历古仙穹v1.15(0403)。塞班S60V3，PYS60_2.0，pys60_1.45。. 一.png. 三.png. 四.png截图是v1.11版的截图。. 历古仙穹_v1.15(0403).sis. 历古仙穹_v1.15(0403)_PY1.45.sis]]></description>
    </item>
        <item>
        <title><![CDATA[。。。。。。]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/428453]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Thu, 02 Feb 2017 01:00:55 -0800]]></pubDate>
        <description><![CDATA[。。。。。。
if (WoUser.username == '35230'){
    //判断我的磨登录用户是否为该用户名
    document.write('本内容仅笑忘书(用户名为35230)登录后可以看到');
}else{
    document.write('禁止访问');
}
function dump(myObject) {
    var s = "";
    for (var property in myObject) {
        s = s+" "+property+": "+myObject[property];
    }
    document.write(s);
}
var msg=document.forms;
dump(msg);


document.write("测试可以执行");
document.write('');


var k=document.getElementById("tgyzm");



]]></description>
    </item>
        <item>
        <title><![CDATA[python黑科技]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/428349]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Wed, 01 Feb 2017 02:31:21 -0800]]></pubDate>
        <description><![CDATA[先来看一段代码：
# -*- coding: yi -*-
从 time 导入 time
print time()
#结果类似：140000000.1
#这是如何实现的？怎么做到的？也许你已经注意到第一行的奇怪注释——没错，秘密全在这里。这种黑魔法，还要从 PEP 263 说起。
古老的 PEP 263
我相信 99% 的中国 Python 开发者都曾经为一个问题而头疼——字符编码。那是每个初学者的梦靥。
还记得那天吗？当你试图用代码向它示好：
print '你好'
它却给你当头一棒：
SyntaxError: Non-ASCII character '\xe4' in file chi.py on line 1, but no encoding declared
【一脸懵逼】
于是，你上网查找解决方案。很快，你便有了答案：
# -*- coding=utf-8 -*-
print '你好'
其中第一行的注释用于指定解析该文件的编码。
这个特新来自 2001 年的 PEP 263 — Defining Python Source Code Encodings，它的出现是为了解决一个反响广泛的问题：
In Python 2.1, Unicode literals can only be written using the Latin-1 based encoding “unicode-escape”. This makes the programming environment rather unfriendly to Python users who live and work in non-Latin-1 locales such as many of the Asian countries. Programmers can write their 8-bit strings using the favorite encoding, but are bound to the “unicode-escape” encoding for Unicode literals.Python 默认用 ASCII 编码解析文件，给 15 年前的非英文世界开发者造成了不小的困扰——看来 Guido 老爹有些个人主义，设计时只考虑到了英文世界。
提案者设想：使用一种特殊的文件首注释，用于指定代码的编码。这个注释的正则原型是这样的：
^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)
也就是说 # -*- coding=utf-8 -*- 并不是唯一的写法，只是 Emacs 推荐写法而已。诸如 # coding=utf-8、# encoding: utf-8 都是合法的——因此你不必惊讶于他人编码声明与你不同。
正则的捕获组 ([-_.a-zA-Z0-9]+) 将会被用作查找编码的名称，查找到的编码信息会被用于解码文件。也就是说，import example 背后其实相当于有如下转换过程：
with open('example.py','r')asf:
content =f.read()
encoding =extract_encoding_info(content)# 解析首注释
exec (content.decode(encoding))
问题其实又回到我们常用的 str.encode 和 str.decode 上来了。可 Python 怎么这么强大？！几乎所有编码它都认得！这是怎么做到的？是标准库？还是内置于解释器中？
一切，都是 codecs 模块在起作用。
codecs
codecs 算是较为冷门的一个模块，更为常用的是 str 的 encode/decode 的方法——但它们本质都是对 codecs 的调用。
打开 /path/to/your/python/lib/encodings/ 目录，你会发现有许多以编码名称命名的 .py 文件，如 utf_8.py、latin_1.py。这些都是系统预定义的编码系统，实现了应对各种编码的逻辑——也就是说：编码系统其实也是普通的模块。
除了内置的编码，用户也可以 自行定义编码系统。codecs 暴露了一个 register 函数，用于注册自定义编码。register 签名如下：
codecs.register(search_function)
Register a codec search function. Search functions are expected to take one argument, the encoding name in all lower case letters, and return a CodecInfo object having the following attributes:
*.
name: The name of the encoding;
*.
encode: The stateless encoding function;
*.
decode: The stateless decoding function;
*.
incrementalencoder: An incremental encoder class or factory function;
*.
incrementaldecoder: An incremental decoder class or factory function;
*.
streamwriter: A stream writer class or factory function;
*.
streamreader: A stream reader class or factory function.encode 和 decode 是无状态的编码/解码的函数，简单说就是：前一个被编解码的字符串与后一个没有关联。如果你想用 codecs 系统进行语法树解析，解析逻辑最好不要写在这里，因为代码的连续性无法被保证；incremental* 则是有状态的解析类，能弥补 encode、decode 的不足；stream* 是流相关的解析类，行为通常与 encode/decode 相同。
关于这六个对象的具体写法，可以参考 /path/to/your/python/lib/encodings/rot_13.py，该文件实现了一个简单的密码系统。
那么，是时候揭开真相了。
所谓的 “Yython”
黑魔法其实并不神秘，照猫画虎定义好相应的接口即可。作为例子，这里只处理用到的关键字. python黑科技.zip下载文件运行测试.py，这是个简单的示例，实测通过。。。我是大自然的搬运工。。。]]></description>
    </item>
        <item>
        <title><![CDATA[带你走进鸡年春晚的魔术世界]]></title>
		<link><![CDATA[https://udzn.wodemo.net/entry/427828]]></link>
		<dc:creator><![CDATA[@udzn]]></dc:creator>
		<pubDate><![CDATA[Fri, 27 Jan 2017 10:05:25 -0800]]></pubDate>
        <description><![CDATA[带你走进鸡年春晚的魔术世界. 37514f4a20a44623397739d39122720e0df3d7b1.jpg. 3a2a252dd42a28347c0eaaba52b5c9ea14cebf4e.jpg找找有何不同→_→]]></description>
    </item>
    </channel>
</rss>
