{"id":505,"date":"2006-09-09T21:45:54","date_gmt":"2006-09-10T09:45:54","guid":{"rendered":"http:\/\/www.horace.org\/blog\/?p=505"},"modified":"2006-09-09T21:45:54","modified_gmt":"2006-09-10T09:45:54","slug":"ruby","status":"publish","type":"post","link":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/","title":{"rendered":"Ruby"},"content":{"rendered":"<p>In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don&#8217;t mean English or Chinese, I mean programming language to server dynamic content.? Using PHP is one of the obvious choice.? However I feel that PHP is just a hugh collection of libraries.? There is not much learning value since anyone can be a PHP programmer if he is armed with the reference manual.? ASP or JSP is another candidate, they are similiar to PHP, but since I am not using IIS nor Tomcat, it is too much trouble to setup the environment.? Writing CGI in Perl or C++ is so old fashioned plus it is really inconvinient, so it is out of question.? I have considered tcl, which is the language I most familiar with.? However I think I should learn something new instead, plus I am alreadying writing too many tcl code at work.? Then one language comes to my mind, Ruby.? It supposes to be the most powerful object oriented scripting language with the best of everything, maybe except speed.? I read that with the Rails library, it allows very rapid web development using the built-in SQL data structure.? I decided to embrace this language.? It seems to the be work horse behind web2.0 and is endosed by O&#8217;Reilly.? I think Ruby could be the white knight saving the web from the evil .NET proposed by Microsoft .? I just start reading the tutorials and wrote the &#8220;hello world&#8221; excerise.? I hope I will have a better idea in a few weeks after I had learnt more about it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don&#8217;t mean English or Chinese, I mean programming language to server dynamic content.? Using PHP is one of the obvious choice.? However I feel that PHP is just a hugh &hellip; <a href=\"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Ruby<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"lc_iscn_info":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-505","post","type-post","status-publish","format-standard","hentry","category-_scribble"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp<\/title>\n<meta name=\"description\" content=\"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don&#039;t mean English or Chinese,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp\" \/>\n<meta property=\"og:description\" content=\"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don&#039;t mean English or Chinese,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/\" \/>\n<meta property=\"og:site_name\" content=\"\u54f2\u5b50\u6232 Philosophist\u2019s Camp\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/horace.org\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/horace.org\" \/>\n<meta property=\"article:published_time\" content=\"2006-09-10T09:45:54+00:00\" \/>\n<meta name=\"author\" content=\"hevangel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@horaceorg\" \/>\n<meta name=\"twitter:site\" content=\"@horaceorg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hevangel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/\"},\"author\":{\"name\":\"hevangel\",\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#\\\/schema\\\/person\\\/c8d9e8e7a71d343b4b2c4ef4365cdb4c\"},\"headline\":\"Ruby\",\"datePublished\":\"2006-09-10T09:45:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/\"},\"wordCount\":279,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#\\\/schema\\\/person\\\/c8d9e8e7a71d343b4b2c4ef4365cdb4c\"},\"articleSection\":[\"Daily Scribble\"],\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/\",\"url\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/\",\"name\":\"Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#website\"},\"datePublished\":\"2006-09-10T09:45:54+00:00\",\"description\":\"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don't mean English or Chinese,\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/2006\\\/09\\\/09\\\/ruby\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/\",\"name\":\"\u54f2\u5b50\u6232 Philosophist\u2019s Camp\",\"description\":\"\u860b\u679c\u65e5\u5831\u4f5c\u8005 - \u9673\u99ac\uff1a\u66f8\u8a55\uff0c\u5f71\u8a55\uff0c\u52d5\u6f2b\uff0c\u65c5\u884c\uff0c\u54f2\u5b78\u7b46\u8a18\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#\\\/schema\\\/person\\\/c8d9e8e7a71d343b4b2c4ef4365cdb4c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/#\\\/schema\\\/person\\\/c8d9e8e7a71d343b4b2c4ef4365cdb4c\",\"name\":\"hevangel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/www.horace.org\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/spocky.jpg?fit=1313%2C1259&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.horace.org\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/spocky.jpg?fit=1313%2C1259&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.horace.org\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/spocky.jpg?fit=1313%2C1259&ssl=1\",\"width\":1313,\"height\":1259,\"caption\":\"hevangel\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/www.horace.org\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/spocky.jpg?fit=1313%2C1259&ssl=1\"},\"sameAs\":[\"http:\\\/\\\/www.horace.org\",\"https:\\\/\\\/www.facebook.com\\\/horace.org\"],\"url\":\"https:\\\/\\\/www.horace.org\\\/blog\\\/author\\\/hevangel-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp","description":"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don't mean English or Chinese,","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/","og_locale":"en_US","og_type":"article","og_title":"Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp","og_description":"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don't mean English or Chinese,","og_url":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/","og_site_name":"\u54f2\u5b50\u6232 Philosophist\u2019s Camp","article_publisher":"https:\/\/www.facebook.com\/horace.org","article_author":"https:\/\/www.facebook.com\/horace.org","article_published_time":"2006-09-10T09:45:54+00:00","author":"hevangel","twitter_card":"summary_large_image","twitter_creator":"@horaceorg","twitter_site":"@horaceorg","twitter_misc":{"Written by":"hevangel","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/#article","isPartOf":{"@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/"},"author":{"name":"hevangel","@id":"https:\/\/www.horace.org\/blog\/#\/schema\/person\/c8d9e8e7a71d343b4b2c4ef4365cdb4c"},"headline":"Ruby","datePublished":"2006-09-10T09:45:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/"},"wordCount":279,"commentCount":0,"publisher":{"@id":"https:\/\/www.horace.org\/blog\/#\/schema\/person\/c8d9e8e7a71d343b4b2c4ef4365cdb4c"},"articleSection":["Daily Scribble"],"inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/","url":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/","name":"Ruby - \u54f2\u5b50\u6232 Philosophist\u2019s Camp","isPartOf":{"@id":"https:\/\/www.horace.org\/blog\/#website"},"datePublished":"2006-09-10T09:45:54+00:00","description":"In order to renovate my website, I have to make a few though decision.? One of them is which language should I use.? No, I don't mean English or Chinese,","breadcrumb":{"@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.horace.org\/blog\/2006\/09\/09\/ruby\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.horace.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Ruby"}]},{"@type":"WebSite","@id":"https:\/\/www.horace.org\/blog\/#website","url":"https:\/\/www.horace.org\/blog\/","name":"\u54f2\u5b50\u6232 Philosophist\u2019s Camp","description":"\u860b\u679c\u65e5\u5831\u4f5c\u8005 - \u9673\u99ac\uff1a\u66f8\u8a55\uff0c\u5f71\u8a55\uff0c\u52d5\u6f2b\uff0c\u65c5\u884c\uff0c\u54f2\u5b78\u7b46\u8a18","publisher":{"@id":"https:\/\/www.horace.org\/blog\/#\/schema\/person\/c8d9e8e7a71d343b4b2c4ef4365cdb4c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.horace.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":["Person","Organization"],"@id":"https:\/\/www.horace.org\/blog\/#\/schema\/person\/c8d9e8e7a71d343b4b2c4ef4365cdb4c","name":"hevangel","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2021\/11\/spocky.jpg?fit=1313%2C1259&ssl=1","url":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2021\/11\/spocky.jpg?fit=1313%2C1259&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2021\/11\/spocky.jpg?fit=1313%2C1259&ssl=1","width":1313,"height":1259,"caption":"hevangel"},"logo":{"@id":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2021\/11\/spocky.jpg?fit=1313%2C1259&ssl=1"},"sameAs":["http:\/\/www.horace.org","https:\/\/www.facebook.com\/horace.org"],"url":"https:\/\/www.horace.org\/blog\/author\/hevangel-2\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/swn21-ruby","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":61,"url":"https:\/\/www.horace.org\/blog\/2005\/04\/18\/61\/","url_meta":{"origin":505,"position":0},"title":"research progress","author":"hevangel","date":"April 18, 2005","format":false,"excerpt":"- setup CVS shared between cygwin and linux - ported Eurane module to ns 2.28 - installed tcl-debug - debugged avoidReordering_ warning","rel":"","context":"In &quot;Daily Scribble&quot;","block_context":{"text":"Daily Scribble","link":"https:\/\/www.horace.org\/blog\/category\/_scribble\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":51,"url":"https:\/\/www.horace.org\/blog\/2005\/04\/07\/network-simulator\/","url_meta":{"origin":505,"position":1},"title":"network simulator","author":"hevangel","date":"April 7, 2005","format":false,"excerpt":"I have been sturggling with ns2 for the past 24 hours. ns2 is an open source network simulation implemented in tcl and C++. It suppose to be one of the most popular academic reseach tool in communication network. My problem right now is the compliation doesn't seem right, when I\u2026","rel":"","context":"In &quot;Daily Scribble&quot;","block_context":{"text":"Daily Scribble","link":"https:\/\/www.horace.org\/blog\/category\/_scribble\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12857,"url":"https:\/\/www.horace.org\/blog\/2018\/06\/02\/head-first-python\/","url_meta":{"origin":505,"position":2},"title":"Head First Python","author":"hevangel","date":"June 2, 2018","format":false,"excerpt":"\u8aaa\u5230\u8981\u5b78\u96fb\u8166\u7a0b\u5f0f\u8a9e\u8a00\uff0cPython\u76f8\u4fe1\u662f\u8fd1\u5e74\u6700\u7099\u624b\u53ef\u71b1\u7684\u8a9e\u8a00\u4e86\uff0c\u4e00\u4f86Syntax\u6613\u5b78\u6613\u7528\uff0c\u4e8c\u4f86library\u652f\u63f4\u773e\u591a\uff0c\u66f4\u662f\u8fd1\u671f\u6700\u71b1\u9580\u4eba\u5de5\u667a\u80fd\u7684\u4e3b\u8981\u8a9e\u8a00\uff0c\u6211\u6700\u8fd1\u56e0\u5de5\u4f5c\u9700\u8981\u4e5f\u8981\u5b78Python\u3002\u4ee5\u524d\u6211\u8b80\u5927\u5b78\u6642\u7a0b\u5f0f\u5165\u9580\u8ab2\u6559C\uff0c\u7136\u5f8c\u904e\u5e7e\u4e86\u5e74\u9032\u5316\u70ba\u6559Java\uff0c\u4e0d\u904e\u6700\u8fd1\u9678\u7e8c\u8f49\u70ba\u6559Python\u4e86\u3002\u516c\u53f8\u65b0\u8acb\u56de\u4f86\u7684\u5927\u5b78\u751f\u500b\u500b\u90fd\u61c2Python\uff0c\u543e\u7b49\u8001\u6d77\u9bae\u4e5f\u8981\u8207\u6642\u4e26\u9032\u624d\u4e0d\u6703\u88ab\u6dd8\u6c70\u3002 \u539f\u672c\u516c\u53f8\u5167\u90e8\u500b\u5169\u4e0d\u540c\u90e8\u9580\u4f7f\u7528\u4e0d\u540c\u8a9e\u8a00\uff0cchip testing\u548capps\u90a3\u908a\u4ee5\u524d\u7528tcl\uff0c\u8caatcl\u4e0d\u7528compile\u65b9\u4fbf\u64cd\u4f5c\uff0c\u6211\u5011software testing\u90a3\u908a\u5247\u4ee5C++\u70ba\u4e3b\uff0c\u56e0\u70ba\u9700\u8981OOP\u548cstatic type\u4f86\u67b6\u69cb\u8edf\u4ef6\u6e2c\u8a66\u7cfb\u7d71\u3002\u5169\u500b\u90e8\u9580\u6709\u5f88\u591a\u57fa\u790e\u7684\u61c9\u7528\u7a0b\u5f0f\u529f\u80fd\u91cd\u58d8\uff0c\u4e0d\u904e\u56e0\u70ba\u4f7f\u7528\u4e0d\u540c\u8a9e\u8a00\uff0c\u540c\u4e00\u500b\u529f\u80fd\u9700\u8981\u5beb\u5169\u6b21\u3002\u9ad8\u5c64\u8a8d\u70ba\u4e00code\u5169\u5beb\u5f88\u6c92\u6709\u6548\u7387\uff0c\u4e0b\u4ee4\u6211\u5011\u7d71\u4e00\u4f7f\u7528\u540c\u4e00\u8a9e\u8a00\uff0c\u5728\u96d9\u65b9\u5217\u51fa\u5c0d\u8a9e\u8a00\u7684\u8981\u6c42\u5f8c\uff0cPython\u6210\u70ba\u5f88\u81ea\u7136\u7684\u9078\u64c7\u3002Python\u662finterpreter language\u4e0d\u7528compile\uff0c\u540c\u6642\u53c8\u652f\u63f4OOP\u548ctype checking\uff0c\u4e00\u6b21\u904e\u6eff\u8db3\u6211\u5011\u5169\u500b\u90e8\u9580\u7684\u9858\u671b\u3002 \u5b78\u7fd2\u65b0\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u5f88\u591a\u4eba\u559c\u6b61\u8b80\u7db2\u4e0a\u8ab2\u7a0b\uff0c\u4e0d\u904e\u6211\u6bd4\u8f03\u50b3\u7d71\u559c\u6b61\u770b\u66f8\uff0c\u6211\u5acc\u7db2\u4e0a\u8ab2\u7a0b\u770b\u5f71\u7247\u592a\u5625\u6642\u9593\uff0c\u770b\u66f8\u5bb9\u6613\u660e\u7684\u90e8\u4efd\u53ef\u4ee5\u901f\u8b80\uff0c\u96e3\u660e\u7684\u90e8\u4efd\u53ef\u4ee5\u82b1\u591a\u6b64\u6642\u9593\u91cd\u770b\u5e7e\u904d\u3002\u5b78\u7fd2\u5beb\u7a0b\u5f0f\u6700\u91cd\u8981\u662f\u843d\u624b\u843d\u8173\u5bebcode\uff0c\u8ddf\u8ab2\u672c\u7684\u7df4\u7fd2\u505a\u540c\u505a\u7db2\u4e0a\u8ab2\u7a0b\u7684\u529f\u8ab2\u5206\u5225\u4e0d\u5927\uff0c\u53cd\u6b63\u7a0b\u5f0f\u5beb\u5f97\u597d\u5c31work\u6709bug\u5c31\u5514work\uff0c\u6c92\u6709\u9700\u8981\u6539\u529f\u8ab2\u5c0d\u7b54\u6848\u7684\u554f\u984c\u3002\u5728\u82b8\u82b8\u773e\u591a\u672cPython\u66f8\u4e2d\uff0c\u6211\u6311\u9078\u4e86\u9019\u672c\u300aHead First Python\u300b\uff0c\u770b\u96fb\u8166\u66f8\u4e0d\u662f\u5927\u5927\u672c\u5f88\u539a\u591a\u5b57\u5c31\u597d\uff0c\u6700\u91cd\u8981\u662f\u628a\u61c9\u7528\u6168\u5ff5\u89e3\u91cb\u6e05\u695a\uff0c\u6709\u6642\u4e00\u5f35\u5716\u6216\u4e00\u500b\u4f8b\u5b50\u53ef\u4ee5\u62b5\u5f97\u4e0a\u4e09\u7248\u7d19\u67af\u71e5\u7684\u6587\u5b57\u3002\u9019\u672c\u66f8\u958b\u5b97\u660e\u7fa9\u4e0d\u662f\u6559\u5beb\u7a0b\u5f0f\uff0c\u800c\u662f\u5beb\u7d66\u5df2\u61c2\u5176\u4ed6\u8a9e\u8a00\u7684\u4eba\u5b78\u7fd2Python\u8a9e\u6cd5\u3002\u9019\u672c\u66f8\u6700\u512a\u52dd\u4e4b\u8655\u7684\u55ae\u5143\u7684\u7de8\u6392\uff0c\u6574\u672c\u66f8\u5c31\u662f\u5beb\u4e00\u500b\u6709\u8da3\u7684\u5c0f\u5c0f\u7db2\u4e0a\u61c9\u7528\u7a0b\u5f0f\uff0c\u6bcf\u7ae0\u90fd\u6559\u4e00\u4e9b\u65b0\u6771\u897f\u70ba\u7a0b\u5f0f\u52a0\u4e0a\u65b0\u529f\u80fd\uff0c\u770b\u66f8\u5c31\u597d\u4f3c\u4e00\u8def\u505aproject\u5481\u4e0d\u6703\u60b6\u3002\u6700\u6015\u6709\u4e9b\u7a0b\u5f0f\u66f8\u53ea\u662f\u628a\u8a9e\u6cd5\u7531\u982d\u5230\u5c3e\u5217\u51fa\u4f86\uff0c\u518d\u53e3\u6c34\u591a\u904e\u8336\u5730\u52a0\u9e7d\u52a0\u918b\u5730\u9577\u7bc7\u5927\u8ad6\u8b1b\u89e3\u3002 \u6700\u521d\u770bPython\u5f88\u4e0d\u7fd2\u6163\u90a3\u500bindent style\uff0c\u5beb\u4e86\u5481\u591a\u5e74\u7a0b\u5f0f\u90fd\u4fc2\u7528curly bracket, \u552f\u6709Python\u5225\u6a39\u4e00\u683c\u5f37\u8febindent\uff0c\u4e0d\u904e\u5beb\u5e7e\u500b\u661f\u671f\u7fd2\u6163\u4e86\u5c31\u4e0d\u518d\u89ba\u5f97\u7919\u773c\u3002\u540cC++\u6216Java\u6bd4\uff0cPython\u540cRuby\u7b97\u662f\u7b2c\u56db\u4ee3\u7684\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u53bb\u5e74\u5b78\u904eRuby\u6240\u4ee5Python\u5f88\u5feb\u4e0a\u624b\uff0c\u5169\u8005\u7684\u8a2d\u8a08\u7406\u5ff5\u4e0d\u540c\uff0c\u4e0d\u904e\u6700\u6838\u5fc3\u7684\u672c\u8cea\u5176\u5be6\u4e00\u6a23\uff0c\u660e\u767d\u4e86\u500b\u80cc\u5f8c\u7528C\u5beb\u7684Ruby\/Python\u500binterpreter\uff0c\u7747\u57cb\u500binterpreter\u5165\u9762\u7684internal data-structure\uff0c\u5481\u6210\u500b\u8a9e\u8a00\u5c31\u4e00\u7406\u901a\u767e\u7406\u660e\u3002Ruby\u5c31\u4e5c\u90fd\u4fc2object\uff0cPython\u96d6\u7136\u6709\u4eba\u90fd\u4fc2\u5481\u8b1b\uff0c\u4f46\u6211\u8a8d\u70baPython\u7684\u771f\u8482\u5176\u5be6\u4e5c\u90fd\u4fc2callable\uff0c\u9023class declaration\u90fd\u4fc2\u4e00\u500bfunction\u3002\u660e\u767d\u4e86\u9019\u4e00\u9ede\u5f8c\uff0cPython\u6240\u6709\u65b0feature concept\uff0c\u5982generator\uff0cdeclaration\uff0ccontext manager\uff0cfuture, asyncio\u7b49\u7b49\u5c31\u80fd\u6e05\u695a\u7406\u89e3\u660e\u767d\u3002 \u7747\u5b8c\u672c\u66f8\u8ddf\u4f4f\u5b83\u505a\u5b8c\u500bproject\u4ed4\uff0c\u518d\u4e0aPython\u5b98\u7db2\u770b\u4e00\u6b21\u5b98\u65b9tutorial\uff0c\u628astandard library\u7684\u6240\u6709API\u4fc2\u5481\u610f\u7747\u4e00\u6b21\uff0c\u5927\u6168\u77e5\u9053\u6709\u4e5cfunction\u4e5clibrary\u53ef\u4ee5\u7528\uff0c\u9047\u5230\u554f\u984c\u5c31\u554fstack overflow\u5927\u795e\u6c42\u6551\uff0c\u9084\u6709\u529f\u80fd\u5f37\u5927\u7684PyCharm\u76f8\u52a9\uff0c\u5176\u5be6Python\u5f88\u5bb9\u6613\u4e0a\u624b\u3002\u8d8a\u5beb\u8d8a\u89ba\u5f97Python\u597d\u4f7f\u597d\u7528\uff0c\u5927\u6709\u76f8\u9022\u6068\u591c\u7684\u611f\u89ba\u3002\u73fe\u5728\u5b78\u4e86\u7528\u4e86Python\u5169\u500b\u591a\u6708\uff0c\u81ea\u554f\u81f3\u5c11\u8ffd\u4e0a\u516c\u53f8\u65b0\u4ed4\u7684\u6c34\u5e73\uff0creview\u4f62\u5730\u5beb\u7684code\u4e5f\u4e0d\u6703\u5931\u79ae\u554f\u767d\u75f4\u554f\u984c\u3002","rel":"","context":"In &quot;\u66f8\u8a55&quot;","block_context":{"text":"\u66f8\u8a55","link":"https:\/\/www.horace.org\/blog\/category\/_books\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2018\/05\/lrg.jpg?fit=500%2C578&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":11358,"url":"https:\/\/www.horace.org\/blog\/2016\/07\/05\/visual-quickstart-guide-ruby-larry-ullman\/","url_meta":{"origin":505,"position":3},"title":"Visual Quickstart Guide Ruby &#8211; Larry Ullman","author":"hevangel","date":"July 5, 2016","format":false,"excerpt":"\u9019\u672c\u66f8\u8cb7\u4e86\u597d\u5e7e\u5e74\uff0c\u4e00\u76f4\u63d0\u4e0d\u8d77\u52c1\u53bb\u8a8d\u771f\u770b\uff0c\u6b64\u66f8\u7576\u5e74\u51fa\u7248\u6642Ruby\u7248\u672c\u9084\u662f1.9\uff0c\u73fe\u5728\u5df2\u7d93\u53bb\u52302.3\u3002\u56e0\u70ba\u8981\u67b6\u8a2d\u7db2\u7ad9\uff0c\u624d\u81e8\u6025\u62b1\u4f5b\u8173\u53bb\u8b80\u66f8\uff0c\u5148\u5b78\u616c\u57fa\u672c\u7684Ruby\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u624d\u53ef\u4ee5\u9032\u968e\u5b78\u7fd2Ruby on Rails\u7db2\u7ad9framework\u3002\u67b6\u8a2d\u7db2\u7ad9\u70ba\u4ec0\u9ebc\u4e0d\u7528\u8fd1\u671f\u6d41\u884c\u7684Node.js\uff1f\u4e00\u4f86\u6211\u5c0dJavascript\u6c92\u6709\u597d\u611f\uff0cJavascript\u5468\u8eab\u5200\u5187\u5f35\u5229\uff0c\u4e8c\u4f86\u64da\u8aaa\u5beb\u5f8c\u53f0Ruby\u6bd4Javascript\u5beb\u8d77\u66f4\u5f97\u5fc3\u61c9\u624b\uff0c\u6700\u91cd\u8981\u662f\u9664\u4e86\u5f04\u597d\u500b\u7db2\u7ad9\u5916\u5916\uff0c\u6211\u9084\u60f3\u9806\u4fbf\u5b78\u7fd2\u65b0\u7684\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u505a\u96fb\u8166\u9019\u4e00\u884c\uff0c\u82e5\u679c\u4e0d\u8207\u6642\u4e26\u9032\uff0c\u5f88\u5feb\u4fbf\u7d66\u6dd8\u6c70\u4e86\u3002 Ruby\u6613\u4e0d\u6613\u5b78\uff1f\u6211\u89ba\u5f97\u5f88\u5bb9\u6613\u5b78\uff0c\u53ea\u7528\u5169\u500b\u661f\u671f\u5de6\u4fbf\u4e0a\u624b\uff0c\u6bcf\u665a\u770b\u66f8\u592a\u7d04\u4e00\u5169\u500b\u5c0f\u6642\u3002\u4e0d\u904e\u6211\u7684C\/C++\u529f\u592b\u624e\u5be6\uff0c\u52a0\u4e0a\u56e0\u5de5\u4f5c\u9700\u8981\u7528\u4e86tcl\u9019\u500b\u975e\u5e38\u53e4\u602a\u7684\u7a0b\u5f0f\u8a9e\u8a00\u5341\u591a\u5e74\uff0cRuby\u7684object orient programming\u90e8\u4efd\u6709C++\u5e95\u5b50\u5f88\u6613\u660e\uff0c\u81f3\u65bcRuby\u7684dynamic programming\u90e8\u4efd\uff0c\u76f8\u4fe1\u6c92\u6709\u4efb\u4f55\u7a0b\u5f0f\u8a9e\u8a00\u6bd4tcl\u66f4dynamic\u3002Ruby\u7684\u6700\u5927\u7279\u9ede\u662f\u6240\u6709\u6771\u897f\u90fd\u662fobject\uff0c\u5305\u62ec\u4efb\u4f55variable\uff0c\u4efb\u4f55literal\uff0c\u751a\u81f3class\u548cmodule definition\u90fd\u662fobject\u3002\u56e0\u70ba\u6240\u6709\u6771\u897f\u90fd\u662fobject\uff0c\u5728\u7a0b\u5f0f\u57f7\u884c\u6642\uff0c\u53ef\u4ee5\u91cd\u5beb\u4efb\u4f55method\uff0c\u52a0\u6e1bclass\u4e2d\u7684variables\uff0c\u5bebcode\u8d77\u4f86\u5341\u5206\u65b9\u4fbf\uff0c\u4e0d\u904e\u4e00\u4e0d\u5c0f\u5fc3\u4ea6\u5f88\u5bb9\u6613\u51fa\u932f\u3002\u56e0\u70ba\u6240\u6709binding\u90fd\u662f\u5728run time\u9032\u884c\uff0c\u5728\u50b3\u7d71static\u6216dynamic typing\u5916\u5916\uff0cRuby\u7368\u6709\u7684duck typing\uff0c\u53ea\u8981\u500bobject\u6709\u540c\u540d\u7684method\uff0c\u4e0d\u7406\u90a3\u500bobject\u662f\u4ec0\u9ebc\u5c31\u53ef\u4ee5call\u3002 \u9019\u672c\u66f8\u5beb\u5f97\u5341\u5206\u6dfa\u767d\uff0c\u66f8\u4e2d\u7684\u4f8b\u5b50\u4ee5irb\u5be6\u6642\u57f7\u884c\uff0c\u4f5c\u8005\u4e00\u908a\u6559\u5bebsyntax\uff0c\u4e00\u908a\u7528irb\u7684output\u53bb\u89e3\u91cb\uff0c\u70ba\u4ec0\u9ebc\u57f7\u884c\u9019\u500b\u6307\u4ee4\uff0c\u6703\u5f97\u51fa\u9019\u500b\u7d50\u679c\u3002\u4e0d\u904e\u6211\u8a8d\u70baRuby\u4e26\u4e0d\u9069\u5408\u521d\u5b78\u7a0b\u5f0f\u8005\uff0c\u56e0\u70ba\u5b83\u5167\u5efa\u592a\u591a\u597d\u4f7f\u597d\u7528\u7684\u9b54\u6cd5\uff0c\u4e0d\u5229\u5b78\u751f\u89c0\u6e2c\u96fb\u8166\u5982\u4f55\u57f7\u884c\u7a0b\u5f0f\u3002\u66f8\u4e2d\u5c0d\u4e00\u4e9b\u9ad8\u7d1aRuby\u9b54\u6cd5\u7565\u904e\u89e3\u91cb\uff0c\u53ea\u662f\u53eb\u5b78\u751f\u80cc\u66f8\u822c\u4e0d\u6c42\u751a\u89e3\u8a18\u4e0bsyntax\u548c\u7528\u6cd5\uff0c\u5982symbol\uff0cclass attr\uff0cmodule include\/extend\u7b49\u3002\u6211\u770b\u66f8\u6642\u5b8c\u5168\u770b\u4e0d\u660e\u767d\uff0c\u8981\u53e6\u884c\u4e0a\u7db2\u770bruby.org\u7684\u5b98\u65b9\u8ab2\u672c\u548cRuby Monk\u7684\u7db2\u4e0a\u6559\u6750\uff0c\u7d50\u679c\u6211\u4e00\u53e3\u6c23\u770b\u4e86\u4e09\u672cRuby\u8ab2\u672c\u3002\u771f\u6b63\u8b93\u6211\u958b\u7ac5\uff0c\u660e\u767dRuby\u7684\u7cbe\u9ad3\uff0c\u662f\u5b98\u65b9\u8ab2\u672c\u8b1bruby.h\u90a3\u4e00\u7ae0\u3002Ruby\u6574\u500b\u7a0b\u5f0f\u8a00\u662f\u7528C\u5beb\u6210\uff0cruby.h\u4fbf\u662fC\u7a0b\u5f0f\u7684\u6e90\u78bc\uff0c\u8b93\u958b\u767c\u54e1\u628aRuby\u7a0b\u5f0f\u9023\u7d50\u5176\u4ed6\u8a9e\u8a00\u7684\u7a0b\u5f0f\u3002\u7576\u6211\u770b\u898bruby.h\u4e2d\uff0cRuby\u662f\u5982\u4f55create\u4e00\u500bobject\uff0c\u6bcf\u4e00\u500bobject\u4e4b\u9593\u7684\u95dc\u4fc2\uff0c\u4e00\u4efd\u719f\u6089\u7684\u611f\u89ba\u6cb9\u7136\u800c\u751f, ruby.h\u4e0d\u6b63\u5c31\u662ftcl.h\u7684\u5b56\u751f\u5144\u5f1f\u55ce\u3002 \u66f8\u4e2d\u6700\u5f8c\u4e00\u7ae0\u8b1bRails\uff0c\u4e0d\u904eRails\u6bd4Ruby\u672c\u8eab\u9032\u5316\u5f97\u66f4\u5feb\uff0c\u66f8\u4e2d\u6559\u7684\u90a3\u500b\u820a\u7248\u672c2.x\u5df2\u5b8c\u5168\u904e\u6642\uff0c\u53ea\u6709\u5341\u5e7e\u9801\u7d19\u5b8c\u5168\u4e0d\u5920\u6642\u9593\u53bb\u6559Rails\uff0c\u770b\u5b8c\u4e5f\u662f\u6c34\u904e\u9d28\u80cc\uff0c\u9084\u662f\u53bbRails\u7684\u5b98\u65b9\u7db2\u7ad9\u770buser guide\u3002\u5176\u5be6\u5b78\u5beb\u7a0b\u5f0f\uff0c\u771f\u7684\u4e0d\u7528\u4ffe\u9322\u4e0a\u5802\uff0c\u7db2\u4e0a\u6709\u5f88\u591a\u514d\u8cbb\u6559\u6750\uff0c\u8cb7\u672c\u66f8\u4e5f\u5341\u5206\u4fbf\u5b9c\uff0c\u81ea\u5df2\u8ddf\u8457\u4f8b\u5b50\u53bb\u73a9\u4e0b\uff0c\u5beb\u4e0b\u5beb\u4e0b\u4fbf\u81ea\u81ea\u7136\u7136\u5b78\u8b58\u4e86\u3002\u76ee\u6a19Ruby\u9054\u6210\uff0c\u4e0b\u4e00\u500b\u76ee\u6a19Rails\u3002","rel":"","context":"In &quot;\u66f8\u8a55&quot;","block_context":{"text":"\u66f8\u8a55","link":"https:\/\/www.horace.org\/blog\/category\/_books\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.horace.org\/blog\/wp-content\/uploads\/2016\/07\/ShowCover.aspx_.jpg?fit=500%2C644&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":435,"url":"https:\/\/www.horace.org\/blog\/2006\/06\/21\/new-linux-server\/","url_meta":{"origin":505,"position":4},"title":"New linux server","author":"hevangel","date":"June 21, 2006","format":false,"excerpt":"I just picked up my new linux server today. To be exact, I had only picked up a new computer with no software installed. I still have to install Linux myself. My new server has a AMD64 3500+ CPU, 1GB or RAM, 250GB harddisk and a Nvidia 7300GT graphics card.\u2026","rel":"","context":"In &quot;Daily Scribble&quot;","block_context":{"text":"Daily Scribble","link":"https:\/\/www.horace.org\/blog\/category\/_scribble\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1156,"url":"https:\/\/www.horace.org\/blog\/2007\/02\/05\/new-look\/","url_meta":{"origin":505,"position":5},"title":"New look","author":"hevangel","date":"February 5, 2007","format":false,"excerpt":"I proudly present the new face of my blog.\u00a0 I have been developing this wordpress theme for the past two weeks, experimenting with AJAX and PHP.\u00a0 The new layout greatly improved the aesthetic and function of my blog.\u00a0 On every page, I added a drop down menu and a left\u2026","rel":"","context":"In &quot;Daily Scribble&quot;","block_context":{"text":"Daily Scribble","link":"https:\/\/www.horace.org\/blog\/category\/_scribble\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":false,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/posts\/505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/comments?post=505"}],"version-history":[{"count":0,"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/posts\/505\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/media?parent=505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/categories?post=505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.horace.org\/blog\/wp-json\/wp\/v2\/tags?post=505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}