<?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>-Flyぁ梦- &#187; Python</title>
	<atom:link href="http://blog.11034.org/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.11034.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jun 2025 08:59:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>记C#和Excel开发</title>
		<link>http://blog.11034.org/2014-09/dotnet_csharp_excel.html</link>
		<comments>http://blog.11034.org/2014-09/dotnet_csharp_excel.html#comments</comments>
		<pubDate>Wed, 10 Sep 2014 07:31:54 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[Life in Coding]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.11034.org/?p=2287</guid>
		<description><![CDATA[需要一个windows环境下的工具，能够读写Excel。这个Excel比较复杂，内嵌VB脚本，写Excel的时 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>需要一个windows环境下的工具，能够读写Excel。这个Excel比较复杂，内嵌VB脚本，写Excel的时候必须得保留这些原有的脚本数据。</p>
<p><span id="more-2287"></span></p>
<p>介绍下这个VB脚本，就是给每一行数据提供下拉框进行一些备用数据的选择，比如打标签。这个下拉框并不是Excel提供的控件（控件绑定于具体的Cell或者坐标很麻烦），而是用弹窗实现的，全局共享一个弹窗数据源。这是一段在Excel文件中的VB代码。</p>
<p>最初开始用Python，靠xlrd和xlwt模块进行读写，读的确没什么问题也挺方便，但是写就有点纠结了，xlwt不能写已经存在的excel文件而是需要新创建一个文件然后开始写入然后替换原有文件，如果Excel文件中有设置好的一些格式、控件、脚本的话，就都没了。然后Python最麻烦的当然就是windows下是没有预装Python的，这个工具给别人使用还要带一个Python环境真是麻烦，然后文件就很多包括.py、双击运行的.bat等。</p>
<p>然后想到的就是能够在win环境下良好支持的C#，本科的时候还是学过C#的有那么一点点基础而且毕竟和Java比较像。C#提供的操纵Excel功能的确比较强大，但是没这么好用，很容易报异常需要耐心调试。但是能够编译成.exe，在win环境下运行起来到底方便。</p>
<pre class="markdown_pre"><code>VS创建项目时，会提示选择.Net Framework版本，尽量选择4.0（win7自带）或者更低的，以更好的跨平台；一开始用了默认的4.5（大概是安装VS时候给自动装上的，编译出来在某些win7环境中会报错）

md5的方法：最简单的是用Web模块里的那个方法，但是这个Web模块似乎不太跨平台；网上方法很多，但是算出来的答案居然都不太一样！选个靠谱的不容易...</code></pre>
<p>写代码的时候遇到过的几个坑</p>
<pre class="markdown_pre"><code>xlsApp.Visible = false; （不然每次执行都会打开Excel再关闭）

xlsApp.DisplayAlerts = false; （不然保存的时候会各种提示确认比较烦）

filePath = filePath.Replace('/', '\\');   xlsBook.SaveAs ...（文件路径用 / 就会报异常）

xlsBook.Close(false, Type.Missing, Type.Missing); （没有这句话，程序执行完后Excel的进程就会留在内存中...执行多次就一堆死进程...）</code></pre>
<p>微软的代码风格也就算了，操纵Excel的各种API的命令和使用方法，真是无法直视</p>
<h4  class="related_post_title">看看 .Net , C++ , Excel , Python</h4><ul class="related_post"><li>2014-07-07 -- <a target="_blank" href="http://blog.11034.org/2014-07/ruby_on_rails.html" title="ruby on rails">ruby on rails</a></li><li>2011-10-20 -- <a target="_blank" href="http://blog.11034.org/2011-10/zoj_100_ac.html" title="ZOJ起步 100AC">ZOJ起步 100AC</a></li></ul><h4 class="related_post_title">看看 Life in Coding </h4><ul class="related_post"><li>2016-09-09 -- <a target="_blank" href="http://blog.11034.org/2016-09/jabber_and_xmpp.html" title="jabber和XMPP简述原理">jabber和XMPP简述原理</a></li><li>2015-01-07 -- <a target="_blank" href="http://blog.11034.org/2015-01/prevent_db_duplicate.html" title="防止数据库数据重复的几种方法">防止数据库数据重复的几种方法</a></li><li>2014-10-25 -- <a target="_blank" href="http://blog.11034.org/2014-10/linux_timeout.html" title="linux的timeout处理wkhtmltopdf进程超时">linux的timeout处理wkhtmltopdf进程超时</a></li><li>2011-06-11 -- <a target="_blank" href="http://blog.11034.org/2011-06/google_doodle_guitar.html" title="2011-6-9 Google Doodle之电子琴">2011-6-9 Google Doodle之电子琴</a></li><li>2011-03-10 -- <a target="_blank" href="http://blog.11034.org/2011-03/learning_cs.html" title="学计算机的尼玛伤不起啊！！！！！！">学计算机的尼玛伤不起啊！！！！！！</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2014-09/dotnet_csharp_excel.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ruby on rails</title>
		<link>http://blog.11034.org/2014-07/ruby_on_rails.html</link>
		<comments>http://blog.11034.org/2014-07/ruby_on_rails.html#comments</comments>
		<pubDate>Mon, 07 Jul 2014 13:51:26 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.11034.org/?p=2252</guid>
		<description><![CDATA[工作需求，开始写ruby，因为基于web也就自然用上了rails。就这样开始接触ruby on rails，在 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>工作需求，开始写ruby，因为基于web也就自然用上了rails。就这样开始接触ruby on rails，在已有代码的基础上很快就能上手开发了。刚开始对ruby可能有各种吐槽，不过写习惯了之后真心觉得ruby语言本身挺不错的，比Python的语法舒服多了呢。</p>
<p><span id="more-2252"></span></p>
<h2>刚开始</h2>
<p>安装ruby真的够麻烦！装Java只要双击JDK然后配置环境变量即可；装Python只要双击python.msi然后配置环境变量即可；写这篇文章的时候我已经忘了怎么安装ruby了&#8230;只记得很麻烦，倒腾了很久！ <img src="http://blog.11034.org/wp-includes/images/smilies/icon_evil.gif" alt=":evil:" class="wp-smiley" style="height: 1em; max-height: 1em;" />  而且安装ruby的mysql驱动更是麻烦，win至今没装上，linux的也很麻烦！</p>
<p>ruby语言本身相比于其他脚本语言的确难很多，语法略晦涩难懂。</p>
<p>和Python类似，改了很多关键字，让熟悉静态语言的编程者不太习惯，尤其是elsif；next取代了continue；rescure取代了catch</p>
<p>ruby的对象在外部，没有“属性”这个概念，只有方法！只有在类内部才有属性和本地变量。惊呆了 <img src="http://blog.11034.org/wp-includes/images/smilies/icon_eek.gif" alt="8-O" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>ruby的拟态函数，看着就像一条命令，着实让新手期的我非常困惑，一个不带()的函数名加一个空格后的参数；完全找不到函数的定义，可能在某些module中，可能根本没有函数体是个用rails的has_many或者named_scope动态定义的函数&#8230;模块定义的函数，实例函数和静态函数也傻傻分不清楚。 <img src="http://blog.11034.org/wp-includes/images/smilies/icon_twisted.gif" alt=":twisted:" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>虽说Ruby和Java一样是纯OOP的语言，但是OOP的特性又很不一样，Ruby甚至不怎么推荐OOP的做法。</p>
<h2>渐渐地</h2>
<p>有点喜欢ruby了</p>
<ul>
<li> 函数名不带括号感觉很省事，导致写js的时候老忘了括号</li>
<li>类似 <code class="markdown_inline_code">return nil if params[:id] == nil</code>的一行代码，还可以 <code class="markdown_inline_code">render_error and return [ if xxx ]</code>，感觉太棒</li>
<li>遍历list/hash是那么方便</li>
<li>函数随意带block，自定义化程度非常高</li>
<li>rails是那么的强大，写web是那么的方便</li>
</ul>
<h2>rails和web</h2>
<p>写web，静态语言就Java（.Net不熟），脚本语言比较多：PHP、Python、Ruby，基本以这些为主流。Java不必说，太复杂开发效率低；PHP最灵活方便，但是没有一个好用强大的框架支持，功能复杂就显得力不从心；Python基于web写的不多，10年的时候用过Django，只能说一般般，现在不知道怎么样了，公司里也有同事在用Python写web，但感觉明显没有rails爽。</p>
<ul>
<li>rails的ORM强大到没有朋友</li>
<li>对ruby核心库的加强（ruby可以往原有类中直接加入API，不需要像Java中Apache类库的StringUtils那样用新的类）</li>
<li>view层面太方便的嵌套片段HTML；对ajax支持很好</li>
<li>debug方便，不仅方便地打印出所有SQL和模板加载，甚至有加载时间，优化起来很顺手</li>
</ul>
<p>深深的觉得，没有了rails，ruby真心没有太多闪光的地方&#8230;大概这也就是为什么ruby一直和rails绑定的关系吧</p>
<h2>ruby和rails的不足</h2>
<p>用到现在，受Java的影响，觉得ruby在以下几个方面用的还不是很灵活不习惯。很大程度上应该是自己对ruby和rails的了解还不够深入。</p>
<ul>
<li>继承体系：没有丰富的继承体系，OOP怎么体现优势？但是感觉rails中，写rails的Model时候，很难使用到完全自定义很灵活的继承体系。或者说Ruby的理念就不怎么喜欢用继承体系，更喜欢用Module的扩展甚至打开类技术。</li>
<li>数据结构库不丰富：只有内置的list/hash，对于常用的LinkedList、OrderedHashMap、HashSet等替代实现没有找到</li>
</ul>
<h4  class="related_post_title">看看 oop , PHP , Python</h4><ul class="related_post"><li>2014-09-10 -- <a target="_blank" href="http://blog.11034.org/2014-09/dotnet_csharp_excel.html" title="记C#和Excel开发">记C#和Excel开发</a></li><li>2012-12-06 -- <a target="_blank" href="http://blog.11034.org/2012-12/ac_automachine.html" title="一个OOP的AC自动机代码">一个OOP的AC自动机代码</a></li><li>2012-03-22 -- <a target="_blank" href="http://blog.11034.org/2012-03/java_util_collections.html" title="java.util中的集合类解析">java.util中的集合类解析</a></li><li>2010-11-17 -- <a target="_blank" href="http://blog.11034.org/2010-11/python2x_first_impression.html" title="Python2.x的第一印象">Python2.x的第一印象</a></li><li>2010-09-29 -- <a target="_blank" href="http://blog.11034.org/2010-09/wp-sns-share_add_tinyurl.html" title="wp-sns-share-1.2，增加tinyurl功能">wp-sns-share-1.2，增加tinyurl功能</a></li></ul><h4 class="related_post_title">看看 ruby on rails </h4><ul class="related_post"><li>2015-08-12 -- <a target="_blank" href="http://blog.11034.org/2015-08/rails_nginx.html" title="Liunx下搭建Rails和Nginx环境">Liunx下搭建Rails和Nginx环境</a></li><li>2015-04-09 -- <a target="_blank" href="http://blog.11034.org/2015-04/json_ascii.html" title="JSON中出现解析错误的原因之一：不可打印字符">JSON中出现解析错误的原因之一：不可打印字符</a></li><li>2014-12-21 -- <a target="_blank" href="http://blog.11034.org/2014-12/ruby_encoding.html" title="Ruby字符串的编码">Ruby字符串的编码</a></li><li>2014-10-25 -- <a target="_blank" href="http://blog.11034.org/2014-10/linux_timeout.html" title="linux的timeout处理wkhtmltopdf进程超时">linux的timeout处理wkhtmltopdf进程超时</a></li><li>2014-10-04 -- <a target="_blank" href="http://blog.11034.org/2014-10/rails-has_many.html" title="Rails中has_many等的原理">Rails中has_many等的原理</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2014-07/ruby_on_rails.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
