<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Dron 博客</title>
        <link>https://ucren.com/blog</link>
        <description>坚持创新，追求卓越</description>
        <lastBuildDate>Tue, 03 Sep 2019 16:58:44 GMT</lastBuildDate>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>
        <generator>Awesome</generator>
        <image>
            <title>Dron 博客</title>
            <url>https://ucren.com/uploads/avatar.jpg</url>
            <link>https://ucren.com/blog</link>
        </image>
        <copyright>All rights reserved 2018, Dron</copyright>
        <atom:link href="https://ucren.com/feed" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[聊聊 Unicode 中的组合字符（Combining Character）]]></title>
            <link>https://ucren.com/blog/archives/748</link>
            <guid>https://ucren.com/blog/archives/748</guid>
            <pubDate>Tue, 03 Sep 2019 16:58:44 GMT</pubDate>
            <content:encoded><![CDATA[

<p>在字体排印学中，组合字符（Combining Character）是用来改变其它字符所用的字符，这些字符可以添加到目标字符周围或覆盖目标字符，例如汉语拼音字母「ü」上面的两个小点，或「á」、「à」字母上面的音标。</p>
<p>组合字符通常的用法为：将组合字符 <strong>置于需要修饰的目标字符后边</strong>，使目标字符被渲染（或打印）成相应结果。</p>
<p><a href="https://ucren.com/blog/archives/748">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[一组你值得拥有的 Markdown 中混用 HTML 案例]]></title>
            <link>https://ucren.com/blog/archives/747</link>
            <guid>https://ucren.com/blog/archives/747</guid>
            <pubDate>Fri, 23 Aug 2019 14:03:29 GMT</pubDate>
            <content:encoded><![CDATA[

<p>Markdown 基础语法（见附录）已经无法满足日益丰富的信息内容，好在 Markdown 支持直接写 HTML，让扩展成为可能。</p>
<p>本文罗列一些常见的、实用的扩展案例，尝试设定规约，通过用少量的 HTML 代码作为 Markdown 的补充来辅助排版，并且保持简明直观的语义。</p>
<p>如果你是一个完美 Markdown 控，对于混用 HTML 的情况实在无法接受的话，可以不用往后阅读了。</p>
<p><a href="https://ucren.com/blog/archives/747">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Map 的两个小扩展]]></title>
            <link>https://ucren.com/blog/archives/744</link>
            <guid>https://ucren.com/blog/archives/744</guid>
            <pubDate>Mon, 03 Sep 2018 00:51:50 GMT</pubDate>
            <content:encoded><![CDATA[

<p>在以前，实现数据映射，我们利用给对象属性赋值，就像这样：</p>
<pre><code class="language-javascript">var mapping = Object.create( null );
mapping[ key ] = value;</code></pre>
<p>ES6 的 Map/WeakMap 提供了更为便利及语义化的用法，功能更加强大，key 支持所有数据类型：</p>
<pre><code class="language-javascript">const mapping = new Map;
mapping.set( key, value );</code></pre>
<p>通过继承 Map/WeakMap，很容易扩展功能，以 Map 为例，本文讲述一个带 <strong>过期控制</strong> 和 <strong>持久化</strong> 能力的 Map 扩展。</p>
<p><a href="https://ucren.com/blog/archives/744">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[三门问题和 JavaScript 仿真实验]]></title>
            <link>https://ucren.com/blog/archives/743</link>
            <guid>https://ucren.com/blog/archives/743</guid>
            <pubDate>Sat, 20 May 2017 04:53:54 GMT</pubDate>
            <content:encoded><![CDATA[

<p>1990 年 9 月美国《广场杂志》的「请教玛丽琳」专栏，曾刊登如下逻辑题：</p>
<p>假设你在进行一个游戏节目。现给三扇门供你选择：一扇门后面是一辆轿车，另两扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车，但你却并不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后，知道其余两扇门后面是什么的主持人，打开了另一扇门给你看，而且，当然，那里有一头山羊。现在主持人告诉你，你还有一次选择的机会。那么，请你考虑一下，你是坚持第一次的选择不变，还是改变第一次的选择，更有可能得到轿车？</p>
<p><a href="https://ucren.com/blog/archives/743">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[地图实时最短路径]]></title>
            <link>https://ucren.com/blog/archives/742</link>
            <guid>https://ucren.com/blog/archives/742</guid>
            <pubDate>Wed, 04 Jan 2017 02:14:12 GMT</pubDate>
            <content:encoded><![CDATA[<p>在很久很久以前，我写过一个 <a href="/blog/archives/400">A 星寻路的算法</a>，那时候初学算法。今晚，突然想通了一些事情，灵感激增，又迅速码了一个 <a href="http://ucren.com/demos/realtime-measure/">最短路径的 demo</a>。</p>
<p>可作为各种园区自建导航系统，适合用于各种个性化地图，欢迎洽谈合作 ：）</p>
<p><a href="https://ucren.com/blog/archives/742">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[博客新增标签云]]></title>
            <link>https://ucren.com/blog/archives/741</link>
            <guid>https://ucren.com/blog/archives/741</guid>
            <pubDate>Sun, 27 Nov 2016 01:48:01 GMT</pubDate>
            <content:encoded><![CDATA[

<p>标签，是对一件事物的标志性描述，通常都会采用相关性很强的关键字，以便于检索和分类，网络上的应用已然十分广泛。</p>
<p>在此前，我对标签并不感冒，所以我的文章一直以来都从不用标签来管理，也不加任何分类，直到前天与同事聊天，当被问到我的博客都写些什么内容时，我竟一时无法很好回答。</p>
<p>现在再问我同样的问题，我会直接让他去看看这个页面 —— <a href="/blog/tags/">标签云</a>。</p>
<p>这是我突然加上去的功能，与传统博客标签最大的区别在于，它并不是我手动打上去的，而是写程序自动算出关键字，再综合所有文章的结果得出。</p>
<p><a href="https://ucren.com/blog/archives/741">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[火拼乒乓球]]></title>
            <link>https://ucren.com/blog/archives/740</link>
            <guid>https://ucren.com/blog/archives/740</guid>
            <pubDate>Mon, 21 Nov 2016 01:48:02 GMT</pubDate>
            <content:encoded><![CDATA[
<p>刚把今年 6 月份写的一个游戏稍加整理发到了网站上 —— <a href="http://ucren.com/demos/pingpong/">火拼乒乓球</a>。</p>
<p>我机器上有大量的半成品的项目，都是脑子一热写的，过了兴奋劲之后，再也不想去搭理了，乒乓球就是其中一个：把最主要的游戏流程写完，直接就是封存了好几个月，差的游戏结束场景至今也并未补上，偷懒做个「再来一发」链接回到首页发布了事，算是给自己一个交代。</p>
<p>其实，现在要在维护这个游戏已经有点困难了，这将近半年的时间，想到代码要重新读一遍就头疼，而且这半年来，我个人喜好的变化不少，早已完全无热情。</p>
<p>放上来让它自生自灭，相信过不了多久，等浏览器升级若干个版本，兼容性问题就会慢慢显露出来。</p>
<p><a href="https://ucren.com/blog/archives/740">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[服务器迁移小记]]></title>
            <link>https://ucren.com/blog/archives/739</link>
            <guid>https://ucren.com/blog/archives/739</guid>
            <pubDate>Sun, 06 Nov 2016 14:37:38 GMT</pubDate>
            <content:encoded><![CDATA[
<p>上个月，2016 杭州云栖大会召开，阿里云宣布云产品全线打折，刚好我的服务器 12 月到期，顺手就购入三年，真的很便宜。</p>
<p>本站一直用的万网虚机，记不清几年了，原来的技术方案是 <code>PHP + MySql</code>，新的服务器上，我准备部署 <code>Node + MongoDB</code>，也就引发了这篇文章所述的事情。</p>
<p><a href="https://ucren.com/blog/archives/739">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[美女透视镜]]></title>
            <link>https://ucren.com/blog/archives/738</link>
            <guid>https://ucren.com/blog/archives/738</guid>
            <pubDate>Tue, 19 Jul 2016 03:49:06 GMT</pubDate>
            <content:encoded><![CDATA[<p>2010 年，我写过一个类似于妄撮的效果，叫 <a href="http://ucren.com/demos/eraser/">美女刮刮卡</a>。</p>
<p>今夜无眠，灵感上脑，利用美女刮刮卡的素材，又写了个 <a href="http://ucren.com/demos/magnifier">美女透视镜</a>。</p>
<p><a href="https://ucren.com/blog/archives/738">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[图片 RGBA 拾色器]]></title>
            <link>https://ucren.com/blog/archives/728</link>
            <guid>https://ucren.com/blog/archives/728</guid>
            <pubDate>Tue, 24 May 2016 02:35:53 GMT</pubDate>
            <content:encoded><![CDATA[<p>前端同学在切页面时，很多简单效果可以直接 CSS3 实现掉，这样就不必使用图片了，大大减少图片处理的时间。</p>
<p>市面上的拾色器，包括 <code>PhotoShop</code> 中的吸管，都没有提供图片像素中 Alpha 通道的值，遂用 <code>&lt;canvas&gt;</code> 的 <code>getImageData</code> 方法简单实现了个<a href="http://ucren.com/demos/image-rgba-picker/">在线版</a>，有需要的同学请自行收藏。</p>
<p><code>getImageData</code> 方法返回画布上指定矩形区域的 <code>ImageData</code>，包括该区域中所有像素点的 R、G、B、A 四个通道的颜色信息。<a href="/blog/archives/724/">上一篇文章</a> 也提到它。</p>
<p><a href="https://ucren.com/blog/archives/728">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[简述年会新春特别奖的前端实现]]></title>
            <link>https://ucren.com/blog/archives/724</link>
            <guid>https://ucren.com/blog/archives/724</guid>
            <pubDate>Tue, 17 May 2016 00:19:27 GMT</pubDate>
            <content:encoded><![CDATA[
<p>回乡心切，去年年底我早早的就撤了，年会并没有参加，亲手为年会定制的一个烟花抽奖程序——新春特别奖，年会时的现场秀也因此没能感受到，遗憾之余听说 @文龙 中了头奖，心里平衡了许多：三天时间的开发总算没白忙活！</p>
<p>写本文前，我将程序简单做了下脱敏和静态分离：</p>
<p><a href="http://ucren.com/demos/fireworks/"></a></p>
<p>进入页面后，片头动画开始播放，「你」划燃火柴，转身面向炮仗，进入等待状态（此时应该跟观众唠唠家常，提高下神秘感）；待唠瞌尽兴，「你」将火柴移向并点燃引信，待引信燃尽，炮仗应声升空，爆炸，焰火奇迹般的组成一个花名（中奖者），拍照留念，背景持续燃放烟花，完毕。</p>
<p>本文将介绍该效果的前端实现。</p>
<p><a href="https://ucren.com/blog/archives/724">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[悄悄发布个押韵字查询工具]]></title>
            <link>https://ucren.com/blog/archives/711</link>
            <guid>https://ucren.com/blog/archives/711</guid>
            <pubDate>Sat, 14 May 2016 03:29:48 GMT</pubDate>
            <content:encoded><![CDATA[<p>对联、打油诗词一直是我的兴趣，平时代码之余，我也常常鼓捣些打发时间，2011 年，我曾经有篇 <a href="/blog/archives/56/">博文</a> 整理了之前写过的句子，现在看来，已经自觉太小儿科了些。</p>
<p>押韵是诗歌中很重要的属性，韵脚押得好能使诗歌念起来朗朗上口，寻找押韵字是个很大麻烦，所以我写了一个 <a href="http://ucren.com/demos/rhymer/">小工具</a>  用来解决这个问题。</p>
<p><a href="https://ucren.com/blog/archives/711">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[码农自己当老家新厝的设计师]]></title>
            <link>https://ucren.com/blog/archives/675</link>
            <guid>https://ucren.com/blog/archives/675</guid>
            <pubDate>Fri, 06 May 2016 17:04:52 GMT</pubDate>
            <content:encoded><![CDATA[<style>
  .gallery img{
    max-width: 180px;
    max-height: 120px;
  }
</style>


<p>这篇文章迟发了大概一年半的时间。</p>
<p>有朋友已经知道这段时间我在做什么了，是的，我在农村老家新筑起了一个巢，目前施工（毛坯 + 装修）基本完成，剩下极少的收尾，而真正令我兴奋的：房子是我亲手设计的！</p>
<p>前年在考虑先买房还是先在老家自建时，犹豫得比较久，不过能自己体验一把设计，想想就激动，内心便十分笃定了。</p>
<p><a href="https://ucren.com/blog/archives/675">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[生成任意长度的圆周率]]></title>
            <link>https://ucren.com/blog/archives/658</link>
            <guid>https://ucren.com/blog/archives/658</guid>
            <pubDate>Mon, 25 Apr 2016 04:45:22 GMT</pubDate>
            <content:encoded><![CDATA[<p>周末，闲来无事折腾了一个任意长度的圆周率 <a href="http://ucren.com/demos/pi/">生成器</a>，代码十分好懂不解释了（百行未压缩，自己读），原理见 <a href="https://zh.wikipedia.org/wiki/%E6%A2%85%E6%AC%BD%E9%A1%9E%E5%85%AC%E5%BC%8F">梅钦类公式</a>。</p>
<p>这是我写过的第三版与 PI 相关的代码。</p>
<p>第一版的博文在百度空间（百度空间已经倒闭看不到了），根据正方形与内接正圆的比值为 4:PI 抽随机点演算；第二版见《<a href="http://ucren.com/blog/archives/29/">用 JavaScript 演算圆周率 PI（二）</a>》。前两版均受浮点计算精度限制，只有现在这版是可以生成任意长度的，不过长度越长，计算起来越慢，测试需谨慎。</p>
<p>（本文完）</p>
<p><a href="https://ucren.com/blog/archives/658">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[小球是怎么落入指定球洞的？]]></title>
            <link>https://ucren.com/blog/archives/639</link>
            <guid>https://ucren.com/blog/archives/639</guid>
            <pubDate>Mon, 18 Jan 2016 11:24:31 GMT</pubDate>
            <content:encoded><![CDATA[
<p>这篇文章首发在 <a href="http://taobaofed.org/blog/2016/01/18/how-does-the-ball-falling-into-the-appointed-hole/">淘宝前端团队博客</a>，现在转发到作者自己（也就是我本人）的博客上。</p>

<p>不知大家是否还有印象，淘宝玩法平台（一个内部系统）前不久发布了一款新的游戏 —— 小球入洞，该游戏伴随着淘宝技术部去年双 11 当天举办的一次抽奖活动，第一次在大家面前亮相。</p>
<p><a href="http://ucren.com/demos/pinball/"></a></p>
<p>游戏支持预先设定必中奖项：离开发射器的小球在来回弹跳一阵之后，不偏不倚的落入到指定奖项对应的球洞中。体验该功能，可在游戏测试页右侧选项区进行如下的设置：</p>

<p>本文试着介绍游戏的这个「掉落至指定球洞」的功能，讲的偏思路，并不涉及公式和代码，我尽可能直白，如果你觉得晦涩，可以在评论处我们接着探讨。在继续之前，为了表达上的方便，我将对游戏在视觉上进行如下图的划分：</p>
<p><a href="https://ucren.com/blog/archives/639">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Math.random() 二三事]]></title>
            <link>https://ucren.com/blog/archives/611</link>
            <guid>https://ucren.com/blog/archives/611</guid>
            <pubDate>Mon, 07 Dec 2015 12:06:43 GMT</pubDate>
            <content:encoded><![CDATA[
<p>这篇文章首发在 <a href="http://taobaofed.org/blog/2015/12/07/some-thing-about-random/">淘宝前端团队博客</a>，现在转发到作者自己（也就是我本人）的博客上。</p>

<p>随机数是统计学领域的一个重要概念，对于游戏来说同样意义非凡，用好随机数，可以使你的游戏更真实、更人性、富有魅力。</p>
<p><a href="https://ucren.com/blog/archives/611">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[千行代码实现 IE8 兼容的仿 angular 指令式模板控制器]]></title>
            <link>https://ucren.com/blog/archives/586</link>
            <guid>https://ucren.com/blog/archives/586</guid>
            <pubDate>Tue, 19 May 2015 22:34:08 GMT</pubDate>
            <content:encoded><![CDATA[<p>Angular 出来的时候火了一阵，现在受到 React 的冲击显得有些冷却，之前我只是听说，也听过 @隐若 老师的一些分享，但一直没有机会用上或深入了解他的特性。</p>
<p>直到上个月初，内部要做个 xx 平台，平台上的表单功能有些繁琐，所有表单域都是根据配置项动态渲染出来的，验证、联动什么的也都是配置。初步判断用 Angular 的指令和双向数据绑定可以很好满足，不过后来并没有直接用上 Angular，具体原因就不在这儿展开了。</p>
<p><a href="https://ucren.com/blog/archives/586">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“短”化你的代码]]></title>
            <link>https://ucren.com/blog/archives/549</link>
            <guid>https://ucren.com/blog/archives/549</guid>
            <pubDate>Tue, 17 Jun 2014 22:51:50 GMT</pubDate>
            <content:encoded><![CDATA[<p>我们来玩个找茬儿，看看下面这段代码，找找 md5 函数的定义在哪里：</p>
<p><a href="https://ucren.com/blog/archives/549">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[水果忍者桌面版]]></title>
            <link>https://ucren.com/blog/archives/476</link>
            <guid>https://ucren.com/blog/archives/476</guid>
            <pubDate>Mon, 03 Jun 2013 22:32:40 GMT</pubDate>
            <content:encoded><![CDATA[<p>使用 node-webkit 将 <a href="/blog/archives/233/">以前写的水果忍者</a> 打包成本地应用程序，纯闹着玩，为了练手 node-webkit，大家随意感受下。</p>
<p><a href="http://pan.baidu.com/share/link?shareid=572252&amp;uk=2214870238">这里下载</a>（含 windows/mac/linux 三个平台的版本）</p>
<p>2013-06-64: PS 修改了链接，多谢光宇同学反馈</p>
<p><a href="https://ucren.com/blog/archives/476">查看全文</a>...</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[web 另类方法实现“另存为”功能]]></title>
            <link>https://ucren.com/blog/archives/473</link>
            <guid>https://ucren.com/blog/archives/473</guid>
            <pubDate>Fri, 31 May 2013 00:11:21 GMT</pubDate>
            <content:encoded><![CDATA[<p>HTML5 的 FileReader 带给我们很强大的文件只读访问能力，可是在 HTML5 新增的 JS 中却没有发现有方便的另存到本地文件的相关 API，以往的办法要么调用浏览器的 save as 命令（兼容程度不详），要么将内容提交到服务器，由服务器附加 content-type: application/octet-stream 头并原文打回来实现。</p>
<p>偶然间，发现 HTML5 的 <code>&lt;a&gt;</code> 标签有了一个新属性，叫 <code>download</code>，取值是一个文件名，当一个带有 <code>download</code> 属性的 <code>&lt;a&gt;</code> 链接被点击时，其形为不再是一个网页跳转，而变成将目标以指定的文件名另存到本地，兼容性还不错的样子。</p>
<p><code>&lt;a&gt;</code> 的 <code>href</code> 值是可以随便改的，也就是说要另存的文件内容可以通过 JS 的方式轻松生成，对其指定一个 <code>DataURI</code> 就可以决定要保存的文件内容了，配合 <code>Base64</code>，甚至可以产生一个二进制文件！</p>
<p>原理简单，实现无比容易，就不在这儿贴代码了，<a href="http://ucren.com/demos/savefile/index.html">戳我可以看看 live demo</a>。</p>
<p><a href="https://ucren.com/blog/archives/473">查看全文</a>...</p>]]></content:encoded>
        </item>
    </channel>
</rss>