|
@@ -211,28 +211,33 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#制作简易mac-os上的伪锁屏工具">制作简易Mac OS上的伪锁屏工具</a><ul>
|
|
|
-<li><a href="#mac-os-python截图">Mac OS Python截图</a></li>
|
|
|
-<li><a href="#mac-os-python调节亮度">Mac OS Python调节亮度</a></li>
|
|
|
-<li><a href="#mac-os-python-gtk-全屏图片">Mac OS Python GTK 全屏图片</a></li>
|
|
|
-</ul></li>
|
|
|
-<li><a href="#基于virtual-dom的测试代码生成">基于Virtual DOM的测试代码生成</a><ul>
|
|
|
<li><a href="#概况-10">概况</a><ul>
|
|
|
<li><a href="#背景-9">背景</a></li>
|
|
|
+</ul></li>
|
|
|
+<li><a href="#步骤-10">步骤</a><ul>
|
|
|
+<li><a href="#step-1屏幕截图">Step 1:屏幕截图</a></li>
|
|
|
+<li><a href="#step-2调节亮度">Step 2:调节亮度</a></li>
|
|
|
+<li><a href="#step-3全屏图片">Step 3:全屏图片</a></li>
|
|
|
+</ul></li>
|
|
|
+</ul></li>
|
|
|
+<li><a href="#基于virtual-dom的测试代码生成">基于Virtual DOM的测试代码生成</a><ul>
|
|
|
+<li><a href="#概况-11">概况</a><ul>
|
|
|
+<li><a href="#背景-10">背景</a></li>
|
|
|
<li><a href="#showcase-8">ShowCase</a></li>
|
|
|
<li><a href="#基本原理">基本原理</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-10">步骤</a><ul>
|
|
|
+<li><a href="#步骤-11">步骤</a><ul>
|
|
|
<li><a href="#step-1-virtual-dom与hyperscript">Step 1: Virtual-dom与HyperScript</a></li>
|
|
|
<li><a href="#step-2-标记dom变化">Step 2: 标记DOM变化</a></li>
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#基于backbone的单页面移动应用">基于Backbone的单页面移动应用</a><ul>
|
|
|
-<li><a href="#概况-11">概况</a><ul>
|
|
|
-<li><a href="#背景-10">背景</a></li>
|
|
|
+<li><a href="#概况-12">概况</a><ul>
|
|
|
+<li><a href="#背景-11">背景</a></li>
|
|
|
<li><a href="#showcase-9">Showcase</a></li>
|
|
|
<li><a href="#jquery-backbone-underscore-require.js">jQuery + Backbone + UnderScore + Require.JS</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-11">步骤</a><ul>
|
|
|
+<li><a href="#步骤-12">步骤</a><ul>
|
|
|
<li><a href="#step-1-使用require.js管理依赖">Step 1: 使用Require.js管理依赖</a></li>
|
|
|
<li><a href="#step-2-添加路由">Step 2: 添加路由</a></li>
|
|
|
<li><a href="#step-3-创建主页view">Step 3: 创建主页View</a></li>
|
|
@@ -245,12 +250,12 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#oculus-node.js-three.js-打造vr世界">Oculus + Node.js + Three.js 打造VR世界</a><ul>
|
|
|
-<li><a href="#概况-12">概况</a><ul>
|
|
|
-<li><a href="#背景-11">背景</a></li>
|
|
|
+<li><a href="#概况-13">概况</a><ul>
|
|
|
+<li><a href="#背景-12">背景</a></li>
|
|
|
<li><a href="#showcase-10">Showcase</a></li>
|
|
|
<li><a href="#框架-oculus-rift-node-nmd">框架: Oculus Rift & Node NMD</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-12">步骤</a><ul>
|
|
|
+<li><a href="#步骤-13">步骤</a><ul>
|
|
|
<li><a href="#step-1-node-oculus-services">Step 1: Node Oculus Services</a></li>
|
|
|
<li><a href="#step-2-node.js-oculus-helloworld">Step 2: Node.js Oculus Hello,World</a></li>
|
|
|
<li><a href="#step-3-node-oculus-websocket">Step 3: Node Oculus WebSocket</a></li>
|
|
@@ -260,55 +265,55 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#手动制作照片地图">手动制作照片地图</a><ul>
|
|
|
-<li><a href="#概况-13">概况</a><ul>
|
|
|
+<li><a href="#概况-14">概况</a><ul>
|
|
|
<li><a href="#background把照片放在地图上">Background:把照片放在地图上</a></li>
|
|
|
<li><a href="#showcase-11">Showcase</a></li>
|
|
|
<li><a href="#框架-exif-exifread-cartodb">框架: EXIF & ExifRead & CartoDB</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-13">步骤</a><ul>
|
|
|
+<li><a href="#步骤-14">步骤</a><ul>
|
|
|
<li><a href="#step-1-解析读取照片信息">Step 1: 解析读取照片信息</a></li>
|
|
|
<li><a href="#step-2-上传数据">Step 2: 上传数据</a></li>
|
|
|
<li><a href="#练习建议-6">练习建议</a></li>
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#d3.js打造技能树">D3.js打造技能树</a><ul>
|
|
|
-<li><a href="#概况-14">概况</a><ul>
|
|
|
-<li><a href="#背景-12">背景</a></li>
|
|
|
+<li><a href="#概况-15">概况</a><ul>
|
|
|
+<li><a href="#背景-13">背景</a></li>
|
|
|
<li><a href="#showcase-12">Showcase</a></li>
|
|
|
<li><a href="#graphviz">Graphviz</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-14">步骤</a><ul>
|
|
|
+<li><a href="#步骤-15">步骤</a><ul>
|
|
|
<li><a href="#step-1-打造简单的技能树">Step 1: 打造简单的技能树</a></li>
|
|
|
<li><a href="#step-3-d3.js-tooltipster">Step 3: D3.js Tooltipster</a></li>
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#技术雷达趋势">技术雷达趋势</a><ul>
|
|
|
-<li><a href="#概况-15">概况</a><ul>
|
|
|
-<li><a href="#背景-13">背景</a></li>
|
|
|
+<li><a href="#概况-16">概况</a><ul>
|
|
|
+<li><a href="#背景-14">背景</a></li>
|
|
|
<li><a href="#showcase-13">Showcase</a></li>
|
|
|
<li><a href="#d3.js">D3.js</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-15">步骤</a><ul>
|
|
|
+<li><a href="#步骤-16">步骤</a><ul>
|
|
|
<li><a href="#step-1-schema与原始代码">Step 1: Schema与原始代码</a></li>
|
|
|
<li><a href="#step-2-处理数据">Step 2: 处理数据</a></li>
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#文本转logo">文本转Logo</a><ul>
|
|
|
-<li><a href="#概况-16">概况</a><ul>
|
|
|
-<li><a href="#背景-14">背景</a></li>
|
|
|
+<li><a href="#概况-17">概况</a><ul>
|
|
|
+<li><a href="#背景-15">背景</a></li>
|
|
|
<li><a href="#showcase-14">ShowCase</a></li>
|
|
|
<li><a href="#需求说明">需求说明</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-16">步骤</a><ul>
|
|
|
+<li><a href="#步骤-17">步骤</a><ul>
|
|
|
<li><a href="#step-1-python-文字转logo实战">Step 1: Python 文字转Logo实战</a></li>
|
|
|
</ul></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#geojson与elasticsearch实现高级图形搜索">GeoJSON与ElasticSearch实现高级图形搜索</a><ul>
|
|
|
-<li><a href="#概况-17">概况</a><ul>
|
|
|
+<li><a href="#概况-18">概况</a><ul>
|
|
|
<li><a href="#showcase-15">Showcase</a></li>
|
|
|
<li><a href="#jquery-mustache-leaflet">jQuery + Mustache + Leaflet</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#步骤-17">步骤</a><ul>
|
|
|
+<li><a href="#步骤-18">步骤</a><ul>
|
|
|
<li><a href="#step-1-离线地图与搜索">Step 1: 离线地图与搜索</a></li>
|
|
|
<li><a href="#step-2-从地点到地图上显示">Step 2: 从地点到地图上显示</a></li>
|
|
|
<li><a href="#step-3-从地图到地点上显示">Step 3: 从地图到地点上显示</a></li>
|
|
@@ -2145,7 +2150,9 @@ root.Lettuce = Lettuce;
|
|
|
<h3 id="step-5-测试">Step 5: 测试</h3>
|
|
|
<h3 id="练习建议-4">练习建议</h3>
|
|
|
<h1 id="制作简易mac-os上的伪锁屏工具">制作简易Mac OS上的伪锁屏工具</h1>
|
|
|
-<p>今天中午在锁屏的时候,想到一件有意思的事。平时我会有两种“锁屏方式”:</p>
|
|
|
+<h2 id="概况-10">概况</h2>
|
|
|
+<h3 id="背景-9">背景</h3>
|
|
|
+<p>某天中午在锁屏的时候,想到一件有意思的事。平时我会有两种“锁屏方式”:</p>
|
|
|
<ul>
|
|
|
<li>传统的锁屏方式:command + alt + 电源,适用于长时间离开。</li>
|
|
|
<li>将屏幕亮度调暗,适用于上个厕所什么的。</li>
|
|
@@ -2157,20 +2164,21 @@ root.Lettuce = Lettuce;
|
|
|
<li>降低屏幕亮度</li>
|
|
|
</ol>
|
|
|
<p>接着,我就开始编写了。</p>
|
|
|
-<h3 id="mac-os-python截图">Mac OS Python截图</h3>
|
|
|
+<h2 id="步骤-10">步骤</h2>
|
|
|
+<h3 id="step-1屏幕截图">Step 1:屏幕截图</h3>
|
|
|
<p>在Mac OS上有一个工具<code>screencapture</code>,可以用于截取当前屏幕。如:</p>
|
|
|
<pre><code>screencapture screen.png</code></pre>
|
|
|
<p>将图片存储为screen.png,我们只需要调用Python调用系统的命令,即可:</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">import</span> os
|
|
|
|
|
|
<span class="kw">os.system</span>(<span class="st">"screencapture screen.png"</span>)</code></pre></div>
|
|
|
-<h3 id="mac-os-python调节亮度">Mac OS Python调节亮度</h3>
|
|
|
+<h3 id="step-2调节亮度">Step 2:调节亮度</h3>
|
|
|
<p>在Mac OS上有一个工具叫<code>brightness</code>,可以用百分比调节屏幕的亮度,如</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">brightness</span> 0</code></pre></div>
|
|
|
<p>可以将屏幕的亮度调到0,即最低。所以,先安装这个工具:</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">brew</span> install brightness</code></pre></div>
|
|
|
<p>然后用Python的os模块,即可调用 。</p>
|
|
|
-<h3 id="mac-os-python-gtk-全屏图片">Mac OS Python GTK 全屏图片</h3>
|
|
|
+<h3 id="step-3全屏图片">Step 3:全屏图片</h3>
|
|
|
<p>随后,用GTK简单的弄了个全屏图片的脚本,就完成了。</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode python"><code class="sourceCode python">
|
|
|
<span class="im">import</span> os
|
|
@@ -2202,8 +2210,8 @@ gtk.main()</code></pre></div>
|
|
|
<span class="kw">python</span> <span class="st">"/Users/fdhuang/learing/mock-screen/main.py"</span>
|
|
|
<span class="kw">}</span></code></pre></div>
|
|
|
<h1 id="基于virtual-dom的测试代码生成">基于Virtual DOM的测试代码生成</h1>
|
|
|
-<h2 id="概况-10">概况</h2>
|
|
|
-<h3 id="背景-9">背景</h3>
|
|
|
+<h2 id="概况-11">概况</h2>
|
|
|
+<h3 id="背景-10">背景</h3>
|
|
|
<p>当我们在写一些UI测试的时候,我们总需要到浏览器去看一下一些DOM的变化。比如,我们点击了某个下拉菜单,会有另外一个联动的下拉菜单发生了变化。而如果这个事件更复杂的时候,有时我们可能就很难观察出来他们之间的变化。</p>
|
|
|
<h3 id="showcase-8">ShowCase</h3>
|
|
|
<figure>
|
|
@@ -2227,7 +2235,7 @@ gtk.main()</code></pre></div>
|
|
|
<span class="op">}</span>)<span class="op">;</span></code></pre></div>
|
|
|
<p>在beforeEach的时候,我们设定了固定的DOM进去,按照用户的行为做一些相应的操作。接着依据这个DOM中的元素变化 ,来作一些断言。</p>
|
|
|
<p>那么,即使我们已经有一个固定的DOM,想要监听这个DOM的变化就是一件容易的事。在我们断言之前,我们就会有一个新的DOM。我们只需要Diff一下这两个DOM的变化,就可以生成这部分测试代码。</p>
|
|
|
-<h2 id="步骤-10">步骤</h2>
|
|
|
+<h2 id="步骤-11">步骤</h2>
|
|
|
<h3 id="step-1-virtual-dom与hyperscript">Step 1: Virtual-dom与HyperScript</h3>
|
|
|
<p>在寻觅中发现了<a href="https://github.com/Matt-Esch/virtual-dom">virtual-dom</a>这个库,一个可以支持创建元素、diff计算以及patch操作的库,并且它效率好像还不错。</p>
|
|
|
<p>virtual-dom可以说由下面几部分组成的:</p>
|
|
@@ -2355,8 +2363,8 @@ gtk.main()</code></pre></div>
|
|
|
<p>用Chrome的console来标记修改的部分,及添加的部分。</p>
|
|
|
<p>最后,我们似乎就可以生成相应的测试代码了。。。</p>
|
|
|
<h1 id="基于backbone的单页面移动应用">基于Backbone的单页面移动应用</h1>
|
|
|
-<h2 id="概况-11">概况</h2>
|
|
|
-<h3 id="背景-10">背景</h3>
|
|
|
+<h2 id="概况-12">概况</h2>
|
|
|
+<h3 id="背景-11">背景</h3>
|
|
|
<p>看到项目上的移动框架,网上寻找了一下,发现原来这些一开始都有。于是,找了个示例开始构建一个移动平台的CMS——<a href="http://cms.moqi.mobi">墨颀 CMS</a>,方便项目深入理解的同时,也可以自己维护一个CMS系统。</p>
|
|
|
<h3 id="showcase-9">Showcase</h3>
|
|
|
<p>GitHub: <a href="http://github.com/phodal/moqi.mobi" class="uri">http://github.com/phodal/moqi.mobi</a></p>
|
|
@@ -2391,7 +2399,7 @@ gtk.main()</code></pre></div>
|
|
|
<p><strong>源码</strong></p>
|
|
|
<p>代码依然是放在Github上,基本功能已经可以Works了。</p>
|
|
|
<p><a href="https://github.com/gmszone/moqi.mobi" class="uri">https://github.com/gmszone/moqi.mobi</a></p>
|
|
|
-<h2 id="步骤-11">步骤</h2>
|
|
|
+<h2 id="步骤-12">步骤</h2>
|
|
|
<h3 id="step-1-使用require.js管理依赖">Step 1: 使用Require.js管理依赖</h3>
|
|
|
<p><strong>库及依赖</strong></p>
|
|
|
<p>这里用的是bower的JS来下载库,详细可以参考一下<a href="http://www.phodal.com/blog/use-bower-to-install-js-plugins/">bower install js使用bower管理js</a> 这篇文章。</p>
|
|
@@ -3176,8 +3184,8 @@ require(['../app'], function(App){
|
|
|
<li>当用户向左滑动的时候,菜单应该关闭</li>
|
|
|
</ul>
|
|
|
<h1 id="oculus-node.js-three.js-打造vr世界">Oculus + Node.js + Three.js 打造VR世界</h1>
|
|
|
-<h2 id="概况-12">概况</h2>
|
|
|
-<h3 id="背景-11">背景</h3>
|
|
|
+<h2 id="概况-13">概况</h2>
|
|
|
+<h3 id="背景-12">背景</h3>
|
|
|
<p>在尝试一个晚上的开发环境搭建后,我放弃了开发原生应用的想法。一是没有属于自己的电脑(如果Raspberry Pi II不算的话)——没有Windows、没有GNU/Linux,二是公司配的电脑是Mac OS。对于嵌入式开发和游戏开发来说,Mac OS简直是手机中的Windows Phone——坑爹的LLVM、GCC(Mac OS )、OpenGL、OGLPlus、C++11。并且官方对Mac OS和Linux的SDK的支持已经落后了好几个世纪。</p>
|
|
|
<p>说到底,还是Web的开发环境到底还是比较容易搭建的。</p>
|
|
|
<h3 id="showcase-10">Showcase</h3>
|
|
@@ -3198,7 +3206,7 @@ require(['../app'], function(App){
|
|
|
<blockquote>
|
|
|
<p>Oculus Rift 是一款为电子游戏设计的头戴式显示器。这是一款虚拟现实设备。这款设备很可能改变未来人们游戏的方式。</p>
|
|
|
</blockquote>
|
|
|
-<h2 id="步骤-12">步骤</h2>
|
|
|
+<h2 id="步骤-13">步骤</h2>
|
|
|
<p>现在,让我们开始构建吧。</p>
|
|
|
<h3 id="step-1-node-oculus-services">Step 1: Node Oculus Services</h3>
|
|
|
<p>这里,我们所要做的事情便是将传感器返回来的四元数(Quaternions)与欧拉角(Euler angles)以API的形式返回到前端。</p>
|
|
@@ -3567,7 +3575,7 @@ yaw = (rotation about (Pitch • Raw • Z));”</code></pre>
|
|
|
<p>快接上你的HMD试试吧~~</p>
|
|
|
<h3 id="练习建议-5">练习建议</h3>
|
|
|
<h1 id="手动制作照片地图">手动制作照片地图</h1>
|
|
|
-<h2 id="概况-13">概况</h2>
|
|
|
+<h2 id="概况-14">概况</h2>
|
|
|
<h3 id="background把照片放在地图上">Background:把照片放在地图上</h3>
|
|
|
<p>我使用的Nokia Lumia 920没有一个好的照片应用,而我当时也没有钱换一个新手机</p>
|
|
|
<h3 id="showcase-11">Showcase</h3>
|
|
@@ -3594,7 +3602,7 @@ yaw = (rotation about (Pitch • Raw • Z));”</code></pre>
|
|
|
<blockquote>
|
|
|
<p>Create dynamic maps, analyze and build location aware and geospatial applications with your data using the power using the power of PostGIS in the cloud.</p>
|
|
|
</blockquote>
|
|
|
-<h2 id="步骤-13">步骤</h2>
|
|
|
+<h2 id="步骤-14">步骤</h2>
|
|
|
<h3 id="step-1-解析读取照片信息">Step 1: 解析读取照片信息</h3>
|
|
|
<p>简单的来说,就是我们可以创建包含位置信息的内容到上面去。</p>
|
|
|
<p>主要步骤如下:</p>
|
|
@@ -3697,8 +3705,8 @@ jsonFile.close()</code></pre></div>
|
|
|
<h3 id="练习建议-6">练习建议</h3>
|
|
|
<p>无</p>
|
|
|
<h1 id="d3.js打造技能树">D3.js打造技能树</h1>
|
|
|
-<h2 id="概况-14">概况</h2>
|
|
|
-<h3 id="背景-12">背景</h3>
|
|
|
+<h2 id="概况-15">概况</h2>
|
|
|
+<h3 id="背景-13">背景</h3>
|
|
|
<p>在开始设计新的技能树——<a href="https://github.com/phodal/sherlock">Sherlock</a>的同时,结合一下原有的技能树,说说如何去设计,新的技能树还很丑。</p>
|
|
|
<h3 id="showcase-12">Showcase</h3>
|
|
|
<p>代码见: <a href="https://github.com/phodal/sherlock" class="uri">https://github.com/phodal/sherlock</a></p>
|
|
@@ -3722,7 +3730,7 @@ jsonFile.close()</code></pre></div>
|
|
|
<img src="http://ideabook.phodal.com/images/lz.jpg" alt="lz" /><figcaption>lz</figcaption>
|
|
|
</figure>
|
|
|
<p>接着我们便可以建立一个简单的模型来构建我们的技能树。</p>
|
|
|
-<h2 id="步骤-14">步骤</h2>
|
|
|
+<h2 id="步骤-15">步骤</h2>
|
|
|
<h3 id="step-1-打造简单的技能树">Step 1: 打造简单的技能树</h3>
|
|
|
<p>先以JavaScript全栈作一个简单的示例,他们可能存在下面的依赖关系:</p>
|
|
|
<ul>
|
|
@@ -3811,8 +3819,8 @@ jsonFile.close()</code></pre></div>
|
|
|
<span class="at">$</span>(<span class="kw">this</span>).<span class="at">find</span>(<span class="st">'rect'</span>).<span class="at">css</span>(<span class="st">'fill'</span><span class="op">,</span> <span class="st">'#ecf0f1'</span>)<span class="op">;</span>
|
|
|
<span class="op">}</span>)<span class="op">;</span></code></pre></div>
|
|
|
<h1 id="技术雷达趋势">技术雷达趋势</h1>
|
|
|
-<h2 id="概况-15">概况</h2>
|
|
|
-<h3 id="背景-13">背景</h3>
|
|
|
+<h2 id="概况-16">概况</h2>
|
|
|
+<h3 id="背景-14">背景</h3>
|
|
|
<p>出于一些原因,我需要构建一个项目组相关的技术趋势图。首先也是想到了<a href="https://www.thoughtworks.com/cn/radar">ThoughtWorks 技术雷达</a>,然而我也发现了技术雷达只会发现一些新出现的技术,以及其对应的一些趋势。对于现有的技术栈的一些趋势不够明显,接着就只能去构建一个新的技术趋势图。</p>
|
|
|
<p>当然首选的框架也是D3.js,似乎会一些更好的工具,但是并不没有去尝试。</p>
|
|
|
<h3 id="showcase-13">Showcase</h3>
|
|
@@ -3822,7 +3830,7 @@ jsonFile.close()</code></pre></div>
|
|
|
<img src="http://ideabook.phodal.com/images/tech-stack.jpg" alt="Screenshot" /><figcaption>Screenshot</figcaption>
|
|
|
</figure>
|
|
|
<h3 id="d3.js">D3.js</h3>
|
|
|
-<h2 id="步骤-15">步骤</h2>
|
|
|
+<h2 id="步骤-16">步骤</h2>
|
|
|
<h3 id="step-1-schema与原始代码">Step 1: Schema与原始代码</h3>
|
|
|
<p>最开始的代码是基于<a href="https://github.com/simonellistonball/techradar" class="uri">https://github.com/simonellistonball/techradar</a>这个库的,但是这其中的数据都是写好的。而在找到这个库之前,我也定义好了我的数据应该有的样子:</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span class="op">{</span>
|
|
@@ -3893,8 +3901,8 @@ jsonFile.close()</code></pre></div>
|
|
|
<span class="op">}</span>)
|
|
|
<span class="op">}</span></code></pre></div>
|
|
|
<h1 id="文本转logo">文本转Logo</h1>
|
|
|
-<h2 id="概况-16">概况</h2>
|
|
|
-<h3 id="背景-14">背景</h3>
|
|
|
+<h2 id="概况-17">概况</h2>
|
|
|
+<h3 id="背景-15">背景</h3>
|
|
|
<p>在设计技能树的时候需要做一些简单的Logo,方便我们来识别,这时候就想到了PIL。加上一些简单的圆角,以及特殊的字体,就可以构成一个简单的Logo。做成的图标看上去还不错:</p>
|
|
|
<h3 id="showcase-14">ShowCase</h3>
|
|
|
<p><img src="http://ideabook.phodal.com/images/node.png" alt="Node" /> <img src="http://ideabook.phodal.com/images/refactor.png" alt="Refactor" /> <img src="http://ideabook.phodal.com/images/tdd.png" alt="TDD" /> <img src="http://ideabook.phodal.com/images/clean_code.png" alt="Clean Code" /></p>
|
|
@@ -3905,7 +3913,7 @@ jsonFile.close()</code></pre></div>
|
|
|
<li>圆角</li>
|
|
|
<li>色彩(自动)</li>
|
|
|
</ul>
|
|
|
-<h2 id="步骤-16">步骤</h2>
|
|
|
+<h2 id="步骤-17">步骤</h2>
|
|
|
<h3 id="step-1-python-文字转logo实战">Step 1: Python 文字转Logo实战</h3>
|
|
|
<p>一个简单的PIL生成图片的代码:</p>
|
|
|
<div class="sourceCode"><pre class="sourceCode python"><code class="sourceCode python"><span class="co"># -*- coding: utf-8 -*-</span>
|
|
@@ -3958,7 +3966,7 @@ font_colors <span class="op">=</span> []
|
|
|
colors_length <span class="op">=</span> ConfigColor.items(<span class="st">'Color'</span>).<span class="fu">__len__</span>()</code></pre></div>
|
|
|
<p>最后我们就可以得到我们想要的图片了~~</p>
|
|
|
<h1 id="geojson与elasticsearch实现高级图形搜索">GeoJSON与ElasticSearch实现高级图形搜索</h1>
|
|
|
-<h2 id="概况-17">概况</h2>
|
|
|
+<h2 id="概况-18">概况</h2>
|
|
|
<h3 id="showcase-15">Showcase</h3>
|
|
|
<p>在线Demo见: <a href="http://vmap.phodal.com/" class="uri">http://vmap.phodal.com/</a></p>
|
|
|
<p>或者你已经使用过了相应多的省市区与地图联动,但是这些联动往往是单向的、不可逆。并且这些数据往往都是在线使用的,不能离线使用。下图是一个结合百度地图的省市区与地图联动:</p>
|
|
@@ -3978,7 +3986,7 @@ colors_length <span class="op">=</span> ConfigColor.items(<span class="st">'
|
|
|
<li>Mustache,模板生成。</li>
|
|
|
<li>Leaflet,交互地图库。</li>
|
|
|
</ul>
|
|
|
-<h2 id="步骤-17">步骤</h2>
|
|
|
+<h2 id="步骤-18">步骤</h2>
|
|
|
<h3 id="step-1-离线地图与搜索">Step 1: 离线地图与搜索</h3>
|
|
|
<p>在GitHub上搜索数据的过程中,发现了一个名为<a href="https://github.com/ufoe/d3js-geojson">d3js-geojson</a>的项目里面放着中国详细省、市、县数据,并且还有及GeoJSON文件。</p>
|
|
|
<p>这就意味着两件事:</p>
|