<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>易贝</title>
	<atom:link href="http://www.yeepal.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.yeepal.com/blog</link>
	<description>峰言疯语</description>
	<lastBuildDate>Mon, 12 Jul 2010 08:28:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>什么是Balsamiq Mockups</title>
		<link>http://www.yeepal.com/blog/?p=605</link>
		<comments>http://www.yeepal.com/blog/?p=605#comments</comments>
		<pubDate>Mon, 12 Jul 2010 08:28:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT技术]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=605</guid>
		<description><![CDATA[Balsamiq Mockups出自加利福尼亚州的Balsamiq工作室，创始人Peldi在2008年6月推出了这款手绘风格的产品原型设计工具，并广受好评。2年多来，Balsamiq工作作为一个微型独立软件开发商，专注于Mockups的开发设计，仅3周便实现了盈利，18个月内销售额达到200万美元，用户端数量超过10万个，这与Balsamiq Mockups的市场用户细分的成功以及产品特性是分不开的。

Balsamiq Mockups的用途和价值
在Web产品设计中，Balsamiq Mockups是产品设计师绘制线框图或产品原型界面的利器。在产品设计的需求阶段，低保真的线框图或者草图设计介于产品流程设计与高保真DEMO设计之间，在Balsamiq Mockups出现之前，流程图可以使用Visio，高保真DEMO可以使用Axure，但我们并没有好用的草图设计工具；在产品设计管理中，我们通常在产品的业务流程和数据流转已经相当明确时才开始进一步考虑产品的结构层和框架层，虽然此时纸、笔、白板都是非常简单方便的交流工具，但是他们的最大劣势就是——很难将有价值的原型保存下来。Balsamiq Mockups的出现完美的解决了这个问题。

Balsamiq Mockups的优点和特色
可存：告别那一堆堆的纸质线框图吧…
易用：UI控件支持自动拖拽，并且可以实现自动对齐；
美观：手绘风格，简约清爽；
丰富：从按钮到输入框，从导航条到页面、表格，甚至包括了最潮的Iphone元素；
方便：对元素的修改除了工具栏外，还可以使用隐藏编辑框，支持快捷键；
兼容：可使用XML语言保存元素，也可以导出PNG图片，可以插入到任何项目；
跨平台：Windows、Mac OS、Linux下都可以使用，还有能集成在Confluence，JIRA，和XWiki中的版本，对了，如果你没时间下载桌面版，还可以直接使用网页版的Balsamiq Mockups…

Balsamiq Mockups的风险和劣势
应用范围：就像之前提到的，Balsamiq Mockups最好用于商用web产品设计中的低保真线框图或者草图设计，相对于纸和笔，它不够灵活；相对于Axure，它不够精确；
使用语言：暂时没有英文版的Balsamiq Mockups，虽然相对于用惯国外软件的产品设计师/前端交互设计师来说，这并不是什么大问题，但毕竟这提到了使用门槛，童鞋们还是要学好英语；（关于中文汉化版Balsamiq Mockups下面会提到）
价格不菲：79美元的价格并不适合喜欢的朋友尝鲜；而对于国内公司而言，在产品设计领域的理念和意识，远达不到花钱去买一个细分的专业软件的程度。即便不使用Balsamiq Mockups，地球照样转。（关于Balsamiq Mockups的免费方法下面会提到）
使用Balsamiq Mockups的职业和互联网公司
使用Balsamiq Mockups的人包括产品经理、产品设计师、用户体验设计师、交互设计师、网站前端设计师等等，随便谁都可以。这并不重要，问题是很多大公司都在使用，来看看腾讯CDC对Balsamiq Mockups的分析，或者搜狐产品经理对Balsamiq Mockups的推荐，甚至现在网易招聘产品设计师都要求会Balsamiq Mockups了……
下载和安装Balsamiq Mockups
首先提供在线安装Balsamiq Mockups的方法：
点击进入Balsamiq Mockups官方下载安装页面 &#60;&#60;
点击图标直接安装即可，安装内容包括Adobe AIR环境以及Mockups主体桌面程序：

如果你的电脑安装时出现问题，可以尝试分步下载安装Balsamiq Mockups：
确保你的电脑安装了Adobe AIR，下载后安装到默认文件夹
&#62;&#62; 点击进入 Adobe AIR 的最新版本安装页 &#60;&#60;
安装完Adobe AIR后直接下载Balsamiq Mockups桌面程序，无论是Windows还是Mac都可以正常使用，下载后安装到你需要的文件夹即可
&#62;&#62; 直接下载 Balsamiq 官方网站的桌面端程序&#60;&#60;
最后，当你无法安装Balsamiq Mockups或者没时间安装时，Balsamiq还为你提供了在线Web版本的Mockups。
Balsamiq Mockups如何输入中文
选择菜单栏 View &#62;&#62; 将 Use System Fonts 勾上，就能完美支持中文输入。

]]></description>
			<content:encoded><![CDATA[<p><a title="产品原型工具" href="http://www.balsamiq.com/" target="_blank">Balsamiq Mockups</a>出自加利福尼亚州的Balsamiq工作室，创始人<a title="Balsamiq Mockups创始人" href="http://www.balsamiq.com/blog/" target="_blank">Peldi</a>在2008年6月推出了这款手绘风格的产品原型设计工具，并广受好评。2年多来，Balsamiq工作作为一个微型独立软件开发商，专注于Mockups的开发设计，仅3周便实现了盈利，18个月内销售额达到200万美元，用户端数量超过10万个，这与Balsamiq Mockups的市场用户细分的成功以及产品特性是分不开的。</p>
<p><a href="http://www.yeepal.com/blog/wp-content/uploads/2010/07/balsamiq-mockups.jpg"><img class="alignnone size-medium wp-image-606" title="balsamiq-mockups" src="http://www.yeepal.com/blog/wp-content/uploads/2010/07/balsamiq-mockups-300x231.jpg" alt="" width="300" height="231" /></a></p>
<h2><strong>Balsamiq Mockups的用途和价值</strong></h2>
<p>在<a title="互联网产品设计" href="http://www.hanjunxing.com/web-product-design-process" target="_blank">Web产品设计</a>中，Balsamiq Mockups是产品设计师<a title="绘制线框图及草图" href="http://www.uxbooth.com/blog/tools-for-sketching-user-experiences/" target="_blank">绘制线框图或产品原型界面</a>的利器。在产品设计的需求阶段，<a title="产品原型设计" href="http://cdc.tencent.com/?p=2146" target="_blank">低保真的线框图或者草图设计介于产品流程设计与高保真DEMO设计之间</a>，在Balsamiq Mockups出现之前，流程图可以使用<a title="Visio画流程图" href="http://www.hanjunxing.com/visio-web-flow-charts" target="_blank">Visio</a>，高保真DEMO可以使用<a title="Axure用户高保真DEMO" href="http://www.hanjunxing.com/axure-rp-chinese-realease" target="_blank">Axure</a>，但我们并没有好用的草图设计工具；在<a title="互联网产品设计管理" href="http://www.hanjunxing.com/product-management-and-design" target="_blank">产品设计管理</a>中，我们通常在产品的业务流程和数据流转已经相当明确时才开始进一步考虑产品的结构层和框架层，虽然此时纸、笔、白板都是非常简单方便的交流工具，但是他们的最大劣势就是——很难将有价值的原型保存下来。Balsamiq Mockups的出现完美的解决了这个问题。</p>
<p><a href="http://www.yeepal.com/blog/wp-content/uploads/2010/07/sketchboard-630.jpg"><img class="alignnone size-medium wp-image-608" title="sketchboard-630" src="http://www.yeepal.com/blog/wp-content/uploads/2010/07/sketchboard-630-300x165.jpg" alt="" width="300" height="165" /></a></p>
<h2><strong>Balsamiq Mockups的优点和特色</strong></h2>
<p>可存：告别那一堆堆的纸质<a title="线框图前的草图" href="http://www.ixda.org/node/21817" target="_blank">线框图</a>吧…<br />
易用：UI控件支持自动拖拽，并且可以实现自动对齐；<br />
美观：<a title="Balsamiq Mockups手绘风格" href="http://www.balsamiq.com/products/mockups/examples" target="_blank">手绘风格</a>，简约清爽；<br />
丰富：从按钮到输入框，从导航条到页面、表格，甚至包括了最潮的Iphone元素；<br />
方便：对元素的修改除了工具栏外，还可以使用隐藏编辑框，支持快捷键；<br />
兼容：可使用XML语言保存元素，也可以导出PNG图片，可以插入到任何项目；<br />
跨平台：Windows、Mac OS、Linux下都可以使用，还有能集成在Confluence，JIRA，和XWiki中的版本，对了，如果你没时间下载桌面版，还可以直接使用网页版的Balsamiq Mockups…</p>
<p><a href="http://www.yeepal.com/blog/wp-content/uploads/2010/07/Balsamiq-Mockups的优点.jpg"><img class="alignnone size-medium wp-image-607" title="Balsamiq-Mockups的优点" src="http://www.yeepal.com/blog/wp-content/uploads/2010/07/Balsamiq-Mockups的优点-300x159.jpg" alt="" width="300" height="159" /></a></p>
<h2><strong>Balsamiq Mockups的风险和劣势</strong></h2>
<p>应用范围：就像之前提到的，Balsamiq Mockups最好用于<a title="web产品设计" href="http://hi.baidu.com/shru/blog/item/e16058d62c23682406088b30.html" target="_blank">商用web产品设计</a>中的低保真线框图或者草图设计，相对于纸和笔，它不够灵活；相对于Axure，它不够精确；</p>
<p>使用语言：暂时没有英文版的Balsamiq Mockups，虽然相对于用惯国外软件的产品设计师/前端交互设计师来说，这并不是什么大问题，但毕竟这提到了使用门槛，童鞋们还是要学好英语；（关于中文汉化版Balsamiq Mockups下面会提到）</p>
<p>价格不菲：79美元的价格并不适合喜欢的朋友尝鲜；而对于国内公司而言，在产品设计领域的理念和意识，远达不到花钱去买一个细分的专业软件的程度。即便不使用Balsamiq Mockups，地球照样转。（关于Balsamiq Mockups的免费方法下面会提到）</p>
<h2><strong>使用Balsamiq Mockups的职业和互联网公司</strong></h2>
<p>使用Balsamiq Mockups的人包括产品经理、产品设计师、用户体验设计师、交互设计师、网站前端设计师等等，随便谁都可以。这并不重要，问题是很多大公司都在使用，来看看<a href="http://webteam.tencent.com/?p=1741" target="_blank">腾讯CDC对Balsamiq Mockups的分析</a>，或者<a href="http://hi.baidu.com/inetpm/blog/item/36262813b595e6866438db4d.html" target="_blank">搜狐产品经理对Balsamiq Mockups的推荐</a>，甚至现在<a href="http://ecvip.org/archives/790" target="_blank">网易招聘产品设计师都要求会Balsamiq Mockups</a>了……</p>
<h2><strong>下载和安装Balsamiq Mockups</strong></h2>
<p><strong>首先提供在线安装Balsamiq Mockups的方法：</strong><br />
<a href="http://www.balsamiq.com/products/mockups/download" target="_blank">点击进入Balsamiq Mockups官方下载安装页面</a> &lt;&lt;</p>
<p>点击图标直接安装即可，安装内容包括Adobe AIR环境以及Mockups主体桌面程序：</p>
<p><a href="http://www.yeepal.com/blog/wp-content/uploads/2010/07/Adobe-AIR.jpg"><img class="alignnone size-medium wp-image-610" title="Adobe-AIR" src="http://www.yeepal.com/blog/wp-content/uploads/2010/07/Adobe-AIR-300x85.jpg" alt="" width="300" height="85" /></a></p>
<p><strong>如果你的电脑安装时出现问题，可以尝试分步下载安装Balsamiq Mockups：</strong></p>
<blockquote><p>确保你的电脑安装了Adobe AIR，下载后安装到默认文件夹</p>
<p>&gt;&gt; <a href="http://get.adobe.com/cn/air/" target="_blank">点击进入 Adobe AIR 的最新版本安装页 </a>&lt;&lt;</p>
<p>安装完Adobe AIR后直接下载Balsamiq Mockups桌面程序，无论是Windows还是Mac都可以正常使用，下载后安装到你需要的文件夹即可</p>
<p>&gt;&gt; <a href="mockupshttp://dl.dropbox.com/u/41723/builds/1.6/MockupsForDesktop.air" target="_blank">直接下载 Balsamiq 官方网站的桌面端程序</a>&lt;&lt;</p></blockquote>
<p>最后，当你无法安装Balsamiq Mockups或者没时间安装时，Balsamiq还为你提供了<a title="Balsamiq Mockups的SAAS版" href="http://www.balsamiq.com/demos/mockups/Mockups.html" target="_blank">在线Web版本的Mockups</a>。</p>
<p><em><strong>Balsamiq Mockups如何输入中文</strong></em></p>
<p>选择菜单栏 View &gt;&gt; 将 Use System Fonts 勾上，就能完美支持中文输入。</p>
<p><a href="http://www.yeepal.com/blog/wp-content/uploads/2010/07/qweqwe.jpg"><img class="alignnone size-full wp-image-612" title="qweqwe" src="http://www.yeepal.com/blog/wp-content/uploads/2010/07/qweqwe.jpg" alt="" width="287" height="218" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=605</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>腾讯微博邀请泛滥了，需要的请自助</title>
		<link>http://www.yeepal.com/blog/?p=601</link>
		<comments>http://www.yeepal.com/blog/?p=601#comments</comments>
		<pubDate>Wed, 02 Jun 2010 02:21:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT技术]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=601</guid>
		<description><![CDATA[
6月4日：腾讯微博邀请泛滥，需要的同学请自助，不需要的请直接无视我。
http://t.qq.com/invite/7caf4bd249a323592c9f
http://t.qq.com/invite/8bd93e4111ae93728769
http://t.qq.com/invite/1373699b1a1ca56f3159
http://t.qq.com/invite/60ca1a4d931b2928959b
http://t.qq.com/invite/68c53a6e7870a7a78629
http://t.qq.com/invite/934800d564f34ad2a533
http://t.qq.com/invite/49718e47a5af4c37dc03
http://t.qq.com/invite/059319ec072f62686d9b
http://t.qq.com/invite/89cbfc51154193bb0275
http://t.qq.com/invite/bab662a7738bf5c9eb97

6月2日：具体怎么操作就不用我说了吧，请自助。
http://t.qq.com/invite/92842627f110f74d5a93
http://t.qq.com/invite/3f2dcbdf4c4f20e20da7
http://t.qq.com/invite/3967a3be2055efd3eb51
http://t.qq.com/invite/1a023f65cdaf2d73f825
http://t.qq.com/invite/ac625a296faddebb468d
http://t.qq.com/invite/25b29ae246bc3fdf7f87
http://t.qq.com/invite/e6c66d5a7bec4b9304af
http://t.qq.com/invite/026582343646f3f3cf1d
]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div id="_mcePaste">6月4日：腾讯微博邀请泛滥，需要的同学请自助，不需要的请直接无视我。</div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/7caf4bd249a323592c9f" target="_blank">http://t.qq.com/invite/7caf4bd249a323592c9f</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/8bd93e4111ae93728769" target="_blank">http://t.qq.com/invite/8bd93e4111ae93728769</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/1373699b1a1ca56f3159" target="_blank">http://t.qq.com/invite/1373699b1a1ca56f3159</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/60ca1a4d931b2928959b" target="_blank">http://t.qq.com/invite/60ca1a4d931b2928959b</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/68c53a6e7870a7a78629" target="_blank">http://t.qq.com/invite/68c53a6e7870a7a78629</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/934800d564f34ad2a533" target="_blank">http://t.qq.com/invite/934800d564f34ad2a533</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/49718e47a5af4c37dc03" target="_blank">http://t.qq.com/invite/49718e47a5af4c37dc03</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/059319ec072f62686d9b" target="_blank">http://t.qq.com/invite/059319ec072f62686d9b</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/89cbfc51154193bb0275" target="_blank">http://t.qq.com/invite/89cbfc51154193bb0275</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/bab662a7738bf5c9eb97" target="_blank">http://t.qq.com/invite/bab662a7738bf5c9eb97</a></div>
</div>
<div>6月2日：具体怎么操作就不用我说了吧，请自助。</div>
<div><a href="http://t.qq.com/invite/92842627f110f74d5a93" target="_blank">http://t.qq.com/invite/92842627f110f74d5a93</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/3f2dcbdf4c4f20e20da7" target="_blank">http://t.qq.com/invite/3f2dcbdf4c4f20e20da7</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/3967a3be2055efd3eb51" target="_blank">http://t.qq.com/invite/3967a3be2055efd3eb51</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/1a023f65cdaf2d73f825" target="_blank">http://t.qq.com/invite/1a023f65cdaf2d73f825</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/ac625a296faddebb468d" target="_blank">http://t.qq.com/invite/ac625a296faddebb468d</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/25b29ae246bc3fdf7f87" target="_blank">http://t.qq.com/invite/25b29ae246bc3fdf7f87</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/e6c66d5a7bec4b9304af" target="_blank">http://t.qq.com/invite/e6c66d5a7bec4b9304af</a></div>
<div id="_mcePaste"><a href="http://t.qq.com/invite/026582343646f3f3cf1d" target="_blank">http://t.qq.com/invite/026582343646f3f3cf1d</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=601</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dalvik JIT</title>
		<link>http://www.yeepal.com/blog/?p=600</link>
		<comments>http://www.yeepal.com/blog/?p=600#comments</comments>
		<pubDate>Wed, 26 May 2010 03:37:35 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=600</guid>
		<description><![CDATA[[This post is by Dan Bornstein, virtual-machine wrangler. — Tim Bray]

As the tech lead for the Dalvik team within the Android project, I spend my time working on the virtual machine (VM) and core class libraries that sit beneath the Android application framework. This layer is mostly invisible to end users, but done right, it <a href="http://www.yeepal.com/blog/?p=600" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><i>[This post is by Dan Bornstein, virtual-machine wrangler. — Tim Bray]</i></p>
<p><a href="http://4.bp.blogspot.com/_GTM_W5mVPTU/S_xJGOBNlDI/AAAAAAAAAGE/QScBXJJBIH4/s1600/df-dalvik.jpg"><img style="border: 5px solid #ddd; float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 330px; height: 218px;" src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/dd44d_df-dalvik.jpg" alt=""id="BLOGGER_PHOTO_ID_5475331618166903858" /></a>
<p>As the tech lead for the Dalvik team within the Android project, I spend my time working on the virtual machine (VM) and core class libraries that sit beneath the Android application framework. This layer is mostly invisible to end users, but done right, it helps make Android devices run smoothly and improves developer productivity.</p>
<p>The 2.2 release is particularly pleasing to me, as it is the first release since before 1.0 in which we have been able to deliver significantly new VM technology. And unlike much of what my team and I do, it is something that can be experienced directly by end users.</p>
<p>“Dalvik” isn’t exactly a household word (at least in my country), and most people wouldn’t know a virtual machine if it hit them in the face, but when you tell them you were able to make their existing device work better — run faster, use less battery — they will actually take notice!</p>
<h3>What Makes This Possible?</h3>
<p>We added a Just In Time (JIT) compiler to the Dalvik VM. The JIT is a software component which takes application code, analyzes it, and actively translates it into a form that runs faster, doing so while the application continues to run. If you want to learn more about the design of the Dalvik JIT, please watch the excellent talk from Google I/O 2010 given by my colleagues Bill Buzbee and Ben Cheng, which should be posted to YouTube very soon.</p>
<p>To be clear, the differences aren’t always dramatic, nor do they apply uniformly to all applications. Code that is written to run the CPU all-out can now do more in the same amount of time (running faster), and code that is written to be rate-limited can get its work done using less time and less of the CPU (using less battery). On the performance front in particular, we have seen realistic improvements of 2x to 5x for CPU-bound code, compared to the previous version of the Dalvik VM. This is equivalent to about 4x to 10x faster than a more traditional interpreter implementation.</p>
<p>The team is proud of our new JIT in general, but we are especially proud of two aspects of it:</p>
<p>Many previous JIT implementations react slowly, delivering performance improvements only after a long warm up period. In the extreme, it can be minutes or even hours before the code is fully up to speed. On the other hand, the Dalvik JIT reacts quickly, so that mere moments after you hit the “Start” button on your favorite game, you are already benefiting from the work of the JIT.</p>
<p>We are also very pleased with how little memory the JIT uses. The code for the JIT itself is well under 100k, and each process that the JIT runs in will typically only use another 100k or so of RAM. On the current generation of Android phones, device users won’t even notice this additional memory usage; on my own phone, I can still have literally dozens of applications warmed up in memory and ready to go.</p>
<p>The Dalvik team isn’t resting on its laurels, either. We are hoping to see the Dalvik JIT deployed on many devices in the coming months. Looking forward, the team has an endless list of ideas for making the VM and library code better, which we are diligently working on.</p>
<div><img width="1" height="1" src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/f852c_6755709643044947179-4444192989610135338?l=android-developers.blogspot.com" alt="" /></div>
<div>
<a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=bgrfn6Ivujs:V31yLjuVTrM:yIl2AUoC8zA"><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/f852c_hsDu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=bgrfn6Ivujs:V31yLjuVTrM:-BTjWOF_DHI"><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/a2b7a_hsDu?i=bgrfn6Ivujs:V31yLjuVTrM:-BTjWOF_DHI" border="0"></img></a>
</div>
<p><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/a2b7a_bgrfn6Ivujs" height="1" width="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=600</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to have a default database</title>
		<link>http://www.yeepal.com/blog/?p=599</link>
		<comments>http://www.yeepal.com/blog/?p=599#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:06 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=599</guid>
		<description><![CDATA[
If you want to include a database with initial data in your apk, you have to insert the database file into the projects assets folder, then programmatically check if the database, and if it does not exists copy the one from the assets.
You will need a function to check if the database exists, fox example:





private <a href="http://www.yeepal.com/blog/?p=599" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<p>If you want to include a database with initial data in your apk, you have to insert the database file into the projects assets folder, then programmatically check if the database, and if it does not exists copy the one from the assets.</p>
<p>You will need a function to check if the database exists, fox example:</p>
<p>
<div>
<div>
<ol>
<li>
<div><span>private</span> <span>static</span> <span>final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> DATABASE_NAME <span>=</span> <span>&quot;testdatabase&quot;</span><span>;</span></div>
</li>
<li>
<div><span>private</span> <span>static</span> <span>final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> DB_PATH <span>=</span> <span>&quot;/data/data/&quot;</span><span>+</span>mContext.<span>getPackageName</span><span>&#40;</span><span>&#41;</span><span>+</span><span>&quot;/databases/&quot;</span><span>;</span></div>
</li>
<li>
<div>&nbsp;</div>
</li>
<li>
<div><span>private</span> <span>boolean</span> isDataBaseExist<span>&#40;</span><span>&#41;</span> <span>&#123;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>File</span></a> dbFile <span>=</span> <span>new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>File</span></a><span>&#40;</span>DB_PATH<span>+</span>DATABASE_NAME<span>&#41;</span><span>;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <span>return</span> dbFile.<span>exists</span><span>&#40;</span><span>&#41;</span><span>;</span></div>
</li>
<li>
<div><span>&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>If the check shows that the the database does not exist, a function like this will copy it:</p>
<p>
<div>
<div>
<ol>
<li>
<div><span>private</span> <span>void</span> copyDataBase<span>&#40;</span><span>&#41;</span> <span>throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>IOException</span></a> <span>&#123;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <span>// Open your local db as the input stream</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>InputStream</span></a> myInput <span>=</span> mContext.<span>getAssets</span><span>&#40;</span><span>&#41;</span>.<span>open</span><span>&#40;</span><span>&quot;databases/&quot;</span><span>+</span>DATABASE_NAME<span>&#41;</span><span>;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <span>// Path to the just created empty db</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> outFileName <span>=</span> DB_PATH <span>+</span> DATABASE_NAME<span>;</span></div>
</li>
</ol>
</div>
</div>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/how-have-default-database" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=599</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to display a custom dialog in your Android application</title>
		<link>http://www.yeepal.com/blog/?p=598</link>
		<comments>http://www.yeepal.com/blog/?p=598#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:06 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=598</guid>
		<description><![CDATA[
How to display a custom dialog in your Android application
Yesterday Jozsi showed you, how to make an alert dialog, today I&#8217;m going to show you, how to make a custom dialog/popup window.
Sometimes, it&#8217;s better to make your own dialog, because this way, you can display whatewer you want., the way you want it.
First, make your <a href="http://www.yeepal.com/blog/?p=598" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<p>How to display a custom dialog in your Android application</p>
<p>Yesterday Jozsi showed you, how to make an alert dialog, today I&#8217;m going to show you, how to make a custom dialog/popup window.<br />
Sometimes, it&#8217;s better to make your own dialog, because this way, you can display whatewer you want., the way you want it.<br />
First, make your own layout, with the needed elements. Here, I&#8217;m going to use two buttons, a textview inside a scrollview, and an imageview&#8230;</p>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=598</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to display an AlertDialog in your Android application</title>
		<link>http://www.yeepal.com/blog/?p=597</link>
		<comments>http://www.yeepal.com/blog/?p=597#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:06 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=597</guid>
		<description><![CDATA[
Here is an example of an applacation, that illustrates how you can create a simple AlertDialog. The dialog can display maximum three buttons.



read more
]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<p>Here is an example of an applacation, that illustrates how you can create a simple AlertDialog. The dialog can display maximum three buttons.<center><br />
<img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/f02c8_alert.png" /><br />
</center></p>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/how-display-alertdialog-your-android-application" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=597</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireframe Sketcher &amp; Android</title>
		<link>http://www.yeepal.com/blog/?p=596</link>
		<comments>http://www.yeepal.com/blog/?p=596#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:06 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=596</guid>
		<description><![CDATA[
From a project management perspective it is a good practice to have UI Mockups designed before the real implementation starts. With the UI Mockups having ready, you can discuss with the customer if that is going to satisfy the real needs, and you can also discuss inside your development team, if the UI implementation is <a href="http://www.yeepal.com/blog/?p=596" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<p><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/f02c8_wfi.jpg" align="right" />From a project management perspective it is a good practice to have UI Mockups designed before the real implementation starts. With the UI Mockups having ready, you can discuss with the customer if that is going to satisfy the real needs, and you can also discuss inside your development team, if the UI implementation is feasible or not. If you can settle those things before the implementation, you can save huge amount of refactoring, that usually starts with statements like &#8220;This takes too much space on screen, can we have it on a separate screen?&#8221;, which may also have a large impact on the application architecture. This lesson is also valid for the world of Android development, where the <a href="http://wireframesketcher.com/" target="_blank">Wireframe Sketcher</a> with its <a href="http://mockupsgallery.com/android-stencil" target="_blank">Android stencil</a> set is a perfect tool for fast and informative UI Mockup drawing.</p>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/content/wireframe-sketcher-android" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=596</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connecting to MySQL database</title>
		<link>http://www.yeepal.com/blog/?p=595</link>
		<comments>http://www.yeepal.com/blog/?p=595#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:06 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=595</guid>
		<description><![CDATA[



The most spread method to connect to a remote MySQL database from an android device, is to put some kind of service into the middle. Since MySQL is usually used together with PHP, the easiest and most obvious way to write a PHP script to manage the database and run this script using HTTP protocol <a href="http://www.yeepal.com/blog/?p=595" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
<table>
<tr>
<td>
The most spread method to connect to a remote MySQL database from an android device, is to put some kind of service into the middle. Since MySQL is usually used together with PHP, the easiest and most obvious way to write a PHP script to manage the database and run this script using HTTP protocol from the android system.
</td>
<td>
<img alt="mysql logo" src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/f02c8_mysql_logo.jpg" \="\" />
</td>
</tr>
</table>
<p>We can code the data in JSON format, between Android and PHP with the easy to use built in JSON functions in both languages.</p>
<p>I present some sample code, which selects data from a database depending on a given condition and creates a log message on the android side with the received data.</p>
<p>Lets suppose that we have a MySQL database named PeopleData, and a table int created, with the following SQL:</p>
<p>
<div>
<div>
<ol>
<li>
<div>CREATE TABLE `people` <span>&#40;</span></div>
</li>
<li>
<div>`id` INT NOT <span>NULL</span> AUTO_INCREMENT PRIMARY KEY ,</div>
</li>
</ol>
</div>
</div>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/connecting-mysql-database" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=595</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to play video and audio on Android</title>
		<link>http://www.yeepal.com/blog/?p=594</link>
		<comments>http://www.yeepal.com/blog/?p=594#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:05 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=594</guid>
		<description><![CDATA[
There is more than one way, to play media files on an Android phone, let me show you two of them.

Audio:
MediaPlayer is the easier way, if you just want to play an audio file in the background, somewhere in an appliaction. There are no ui controls here, but of course you can use MediaPlayer.stop(), play(), <a href="http://www.yeepal.com/blog/?p=594" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<p>There is more than one way, to play media files on an Android phone, let me show you two of them.</p>
<div align=center><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/b795c_audiovideopicture.png" width="70%" height="70%" alt="picture" /></div>
<p>Audio:<br />
MediaPlayer is the easier way, if you just want to play an audio file in the background, somewhere in an appliaction. There are no ui controls here, but of course you can use MediaPlayer.stop(), play(), seekTo() ,etc. Just bind the needed functions to a button, gesture, or event. As you can see, it also throws a lot of exceptions, which you need to catch.</p>
<p>
<div>
<div>
<ol>
<li>
<div>&nbsp;<span>public</span> <span>void</span> audioPlayer<span>&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> path, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> fileName<span>&#41;</span><span>&#123;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; <span>//set up MediaPlayer &nbsp; &nbsp;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; MediaPlayer mp <span>=</span> <span>new</span> MediaPlayer<span>&#40;</span><span>&#41;</span><span>;</span></div>
</li>
<li>
<div>&nbsp;</div>
</li>
<li>
<div>&nbsp; &nbsp; <span>try</span> <span>&#123;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; mp.<span>setDataSource</span><span>&#40;</span>path<span>+</span><span>&quot;/&quot;</span><span>+</span>fileName<span>&#41;</span><span>;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; <span>&#125;</span> <span>catch</span> <span>&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aillegalargumentexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>IllegalArgumentException</span></a> e<span>&#41;</span> <span>&#123;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; <span>// TODO Auto-generated catch block</span></div>
</li>
<li>
<div>&nbsp; &nbsp; &nbsp; &nbsp; e.<span>printStackTrace</span><span>&#40;</span><span>&#41;</span><span>;</span></div>
</li>
<li>
<div>&nbsp; &nbsp; <span>&#125;</span> <span>catch</span> <span>&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aillegalstateexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>IllegalStateException</span></a> e<span>&#41;</span> <span>&#123;</span></div>
</li>
</ol>
</div>
</div>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/how-play-video-and-audio-android" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=594</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to avoid OutOfMemory (OOM) Exception using Bitmaps (Solved)</title>
		<link>http://www.yeepal.com/blog/?p=593</link>
		<comments>http://www.yeepal.com/blog/?p=593#comments</comments>
		<pubDate>Tue, 25 May 2010 08:51:05 +0000</pubDate>
		<dc:creator>buddy</dc:creator>
				<category><![CDATA[yeemobile]]></category>

		<guid isPermaLink="false">http://www.yeepal.com/blog/?p=593</guid>
		<description><![CDATA[

Step 1. 
First thing I want you to think about is that do You really need to use Bitmaps?
If the answer is No, go to step 2.   Otherwise, think again.
Ok, Let me explain it. I needed Bitmaps to get the width of the images, to create an ImageAdapter for my Gallery. As far <a href="http://www.yeepal.com/blog/?p=593" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<div><a href="http://www.helloandroid.com/tutorials/how-avoid-outofmemory-oom-exception-using-bitmaps-solved"><img src="http://www.yeepal.com/blog/wp-content/plugins/wp-o-matic/cache/b795c_hello_world_8.thumbnail.png" alt="hello_world_8.png" title="hello_world_8.png" class="image image-thumbnail " width="67" height="100" /></a></div>
<p><b>Step 1. </b><br />
First thing I want you to think about is that do You really need to use Bitmaps?<br />
If the answer is No, go to step 2. <img src='http://www.yeepal.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Otherwise, think again.<br />
Ok, Let me explain it. I needed Bitmaps to get the width of the images, to create an ImageAdapter for my Gallery. As far as I know, there&#8217;s no other way to do that. So I used Bitmaps, and even if I recycled them, once in a while it stopped with the message: DDMS: OutOfMemory .. Phone: Force Close..<br />
Not to speak about how laggy your app will be if you are using Bitmaps..<br />
I&#8217;ve spent 2 weeks to find a solution for this problem, but I couldn&#8217;t find any usable of them. Then I thought, I try not using Bitmaps anymore. So I have to find another way to get the width of images. Unfortunately, it&#8217;s just a workaround, but it works so who cares, right?<br />
I can determine widths with a PHP script, store it in my existing database. After I did that, everything was working properly.</p>
<p><!-- google_ad_section_end -->
<p><a href="http://www.helloandroid.com/tutorials/how-avoid-outofmemory-oom-exception-using-bitmaps-solved" target="_blank">read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeepal.com/blog/?feed=rss2&amp;p=593</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
