<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Using Yan in Ruby Web Application</title>
	<atom:link href="http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/feed/" rel="self" type="application/rss+xml" />
	<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/</link>
	<description>Homemade Clojure Geek</description>
	<lastBuildDate>Wed, 16 May 2012 10:38:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Sunng</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-468</link>
		<dc:creator>Sunng</dc:creator>
		<pubDate>Fri, 25 Dec 2009 02:46:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-468</guid>
		<description>哦，有相关的标准吗
不是太了解，现在主要参考的是recaptcha和vidoop的机制</description>
		<content:encoded><![CDATA[<p>哦，有相关的标准吗<br />
不是太了解，现在主要参考的是recaptcha和vidoop的机制</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-467</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Fri, 25 Dec 2009 02:43:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-467</guid>
		<description>话说你考虑过从与SSO结合的角度来思考captcha的体系吗？比如和SAML之类兼容之类……</description>
		<content:encoded><![CDATA[<p>话说你考虑过从与SSO结合的角度来思考captcha的体系吗？比如和SAML之类兼容之类……</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-466</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Wed, 23 Dec 2009 01:44:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-466</guid>
		<description>@Sunng, 那确实考虑问题要复杂很多</description>
		<content:encoded><![CDATA[<p>@Sunng, 那确实考虑问题要复杂很多</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sunng</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-465</link>
		<dc:creator>Sunng</dc:creator>
		<pubDate>Wed, 23 Dec 2009 00:27:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-465</guid>
		<description>@alex, 我这是一个验证码service，类似recaptcha，不是提供类库而是提供service。</description>
		<content:encoded><![CDATA[<p>@alex, 我这是一个验证码service，类似recaptcha，不是提供类库而是提供service。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-464</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Tue, 22 Dec 2009 16:53:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-464</guid>
		<description>@Sunng, 我是在gwt里实现一个简单的登录，加上了一个很简单的验证码，暴露出来的servlet叫captchaservice了，然后captchaservice依赖的下层接口就叫captchacontext了……
话说在gwt里因为客户端也在一块了，用DI不是很方便，然后就用一个final class叫config，服务端、客户端各一个，然后在这个class里定义了各个接口的一个实例，所有其他类都引用config……在单元测试里也可以很方便的修改引用，替换mock等等……这种用法倒是很山寨……</description>
		<content:encoded><![CDATA[<p>@Sunng, 我是在gwt里实现一个简单的登录，加上了一个很简单的验证码，暴露出来的servlet叫captchaservice了，然后captchaservice依赖的下层接口就叫captchacontext了……<br />
话说在gwt里因为客户端也在一块了，用DI不是很方便，然后就用一个final class叫config，服务端、客户端各一个，然后在这个class里定义了各个接口的一个实例，所有其他类都引用config……在单元测试里也可以很方便的修改引用，替换mock等等……这种用法倒是很山寨……</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sunng</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-463</link>
		<dc:creator>Sunng</dc:creator>
		<pubDate>Tue, 22 Dec 2009 16:19:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-463</guid>
		<description>@alex, 我的captchaGenerator因为历史原因做成了stateful的，这个很麻烦，所以要把TicketGenerator和CaptchaGenerator分开。后面可能会慢慢把它们合并起来。
现在接口是不少，所有的操作都有接口定义了，一个模块里有好几个层次的接口。比如Captcha里，CaptchaService是面向上层的，CaptchaGenerator是面向下层的。
另外你这个叫Context不太合适吧，还是叫Service比较合适。</description>
		<content:encoded><![CDATA[<p>@alex, 我的captchaGenerator因为历史原因做成了stateful的，这个很麻烦，所以要把TicketGenerator和CaptchaGenerator分开。后面可能会慢慢把它们合并起来。<br />
现在接口是不少，所有的操作都有接口定义了，一个模块里有好几个层次的接口。比如Captcha里，CaptchaService是面向上层的，CaptchaGenerator是面向下层的。<br />
另外你这个叫Context不太合适吧，还是叫Service比较合适。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-462</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Tue, 22 Dec 2009 16:04:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-462</guid>
		<description>@Sunng, 是啊，所有solution都有context的说。话说我下了你的yan看了下，那个你是不是觉得接口少一些会比较好些，非功能性代码比例有点微高…… 最核心的应该就是一个类似这样的接口吧？
public interface CaptchaContext {
	String getCaptachaCode();

	void write(final String captchaCode, final OutputStream out,
			final String format, final int width, final int height)
			throws IOException;

}</description>
		<content:encoded><![CDATA[<p>@Sunng, 是啊，所有solution都有context的说。话说我下了你的yan看了下，那个你是不是觉得接口少一些会比较好些，非功能性代码比例有点微高…… 最核心的应该就是一个类似这样的接口吧？<br />
public interface CaptchaContext {<br />
	String getCaptachaCode();</p>
<p>	void write(final String captchaCode, final OutputStream out,<br />
			final String format, final int width, final int height)<br />
			throws IOException;</p>
<p>}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sunng</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-461</link>
		<dc:creator>Sunng</dc:creator>
		<pubDate>Tue, 22 Dec 2009 14:49:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-461</guid>
		<description>@alex, 中文也有问题，万一没有输入法就完了，验证码是个小东西但是总是卡在最关键的位置，验证码要是出问题了整个系统就彻底不能用了，同样，验证码的accessbility差的话系统也就那啥了。语音是各家都有的。</description>
		<content:encoded><![CDATA[<p>@alex, 中文也有问题，万一没有输入法就完了，验证码是个小东西但是总是卡在最关键的位置，验证码要是出问题了整个系统就彻底不能用了，同样，验证码的accessbility差的话系统也就那啥了。语音是各家都有的。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-460</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Tue, 22 Dec 2009 01:25:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-460</guid>
		<description>不过最实用，也最难破解的，我觉得还是腾讯的中文…… 搞一个行草，再明暗对比一把，不加任何干扰，应该就很难被破解了，笔画太多了，字典也太大了……</description>
		<content:encoded><![CDATA[<p>不过最实用，也最难破解的，我觉得还是腾讯的中文…… 搞一个行草，再明暗对比一把，不加任何干扰，应该就很难被破解了，笔画太多了，字典也太大了……</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://sunng.info/blog/2009/12/use-yan-in-ruby-web-application/#comment-459</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Tue, 22 Dec 2009 01:23:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.classicning.com/blog/?p=360#comment-459</guid>
		<description>现在captcha技术确实日新月异啊
这个是搞古文的 http://recaptcha.net
这个是搞智力测试的 http://server251.theory.cs.cmu.edu/cgi-bin/esp-pix
然后传统的也五花八门了 http://caca.zoy.org/wiki/PWNtcha
好像yahoo还是哪还搞语音……</description>
		<content:encoded><![CDATA[<p>现在captcha技术确实日新月异啊<br />
这个是搞古文的 <a href="http://recaptcha.net" rel="nofollow">http://recaptcha.net</a><br />
这个是搞智力测试的 <a href="http://server251.theory.cs.cmu.edu/cgi-bin/esp-pix" rel="nofollow">http://server251.theory.cs.cmu.edu/cgi-bin/esp-pix</a><br />
然后传统的也五花八门了 <a href="http://caca.zoy.org/wiki/PWNtcha" rel="nofollow">http://caca.zoy.org/wiki/PWNtcha</a><br />
好像yahoo还是哪还搞语音……</p>
]]></content:encoded>
	</item>
</channel>
</rss>

