Fixed most of the old BBCode articles.
jump to
@@ -19,7 +19,9 @@ "Why can't we log who edits the articles?"
"Can we send newsletters?" "We should really have a members' area..." -zZine.org[1] is a scratch-built site, coded from the ground up to offer zZine journalists, editors and readers all the functionalities and features they wanted. I'm not totally against sites being coded from scratch, but what happens if something needs to be fixed, or new functionalities have to be implemented and you realize that the code cannot be extended or patched easily?[b]Case Study: zZine Magazine[/b] +zZine.org[1] is a scratch-built site, coded from the ground up to offer zZine journalists, editors and readers all the functionalities and features they wanted. I'm not totally against sites being coded from scratch, but what happens if something needs to be fixed, or new functionalities have to be implemented and you realize that the code cannot be extended or patched easily? + +[b]Case Study: zZine Magazine[/b] zZine Magazine is an online magazine which publishes not only IT-related and other articles on a weekly basis, but also monthly publications containing CyberArmy[2] digests, special columns, and featured articles. A team of journalists, researchers, editors, publishers and outside contributors has access to the zZine site to write, submit, and edit articles, manage publications and perform various other tasks through a password-protected administration area. This is common to approximately 75% of the websites on the Internet: they have a front-end to present content to the general public and a semi-hidden administration backend which is normally more difficult and tedious to code. That's why someone started developing [i]Content Management Systems[/i][3]: ready-made, fully-featured administrative back-ends for creating and managing almost any kind of website, from blogs to eCommerce portals.@@ -188,7 +190,7 @@ [11] Drupal - Handbooks: [url]http://www.drupal.org/handbooks/[/url]
[12] Drupal API: [url]http://drupaldocs.org/api/head[/url] [13] Drupal Downloads: [url]http://www.drupal.org/project/[/url] [14] WAMP Server Package: [url]http://www.wampserver.com[/url] -[15] Drupal - Installing and Upgrading documentation: [url] http://drupal.org/node/258[/url] +[15] Drupal - Installing and Upgrading documentation: [url]http://drupal.org/node/258[/url] [16] Drupal - Themes: [url]http://drupal.org/project/Themes[/url] [17] Drupal - Theme Engines: [url]http://drupal.org/node/509[/url] [18] zZine Beta site: [url]http://beta.zzine.org[/url]
@@ -112,4 +112,4 @@ [11] AltaVista Special Search Terms: [url]http://www.altavista.com/help/search/syntax[/url]
[12] AlltheWeb Query Language: [url]http://alltheweb.com/help/faqs/query_language#2[/url] [13] MSN Search: [url]http://search.msn.com/[/url] [14] "The Assignment Process: Search Strategies": [url]http://www.waikato.ac.nz/library/learning/g_strategies.shtml[/url] -[15] Halley's CyberArmy Profile: [/url]http://www.cyberarmy.net/~Halley/[/url] +[15] Halley's CyberArmy Profile: [url]http://www.cyberarmy.net/~Halley/[/url]
@@ -108,7 +108,7 @@ So what is Cake? In the previous sections, I introduced some general concepts and ideas common to Ruby on Rails and CakePHP, but nothing in particular was said about the structure of the framework itself. Let's now turn to that and discuss it in some detail, particularly as it pertains to Cake.
The first thing to understand about Cake (and Rails as well) is that one of their aims was to avoid editing long and complex configuration files in order to run the environment. The approach in this sense is to use [i]conventions[/i] over [i]configuration[/i]. This may sound terribly restrictive, but in reality it proved to make things much simpler. After all, I said I wanted to use a framework because I needed a solid structure to base my applications on, not that I needed to be able to create and personalize my own structure and system. Cake uses some simple rules in order to run properly, and the easiest way to explain them is through Cake's directory structure, which represents the skeleton of every CakePHP application. -[b][i]/ +/ ---app/ ------config/ ------controllers/@@ -126,7 +126,7 @@ ---------css/
---------files/ ---------img/ ---------js/ -[/b]---cake/ +---cake/ ------config/ ---------inflections/ ------docs/@@ -141,7 +141,7 @@ ------cache/
------distro/ ------logs/ ------tests/ ----vendors/[/i] +---vendors/ I expanded only the first three levels of the tree, although there are more levels in the [i]/cake/[/i] directory. They won't be considered here simply because the [i]/cake/[/i] directory contains CakePHP's internal libraries, which normally will not be modified when developing an application. The [i]/tmp/[/i] directory also will not be elaborated upon either, because it is only used to store temporary files. However, the [i]/vendor/[/i] directory should contain third party scripts and libraries that you may want to use in your application, but they are not normally integrated with Cake's framework. 95% of your application will reside within the [i]/app/[/i] directory, which we therefore need to examine in greater detail.@@ -404,7 +404,7 @@ [b]Notes and Related Resources[/b]
Special thanks to: [list] -[*][b]Larry E. Masters aka [i]PhpNut[/i][/b] and Garrett J. Woodworth [b]gwoo[/b] for providing all the answers to my questions and contributing to create such a wonderful tool for the PHP community. +[*][b]Larry E. Masters aka PhpNut[/b] and Garrett J. Woodworth [b]gwoo[/b] for providing all the answers to my questions and contributing to create such a wonderful tool for the PHP community. [*][b]Marc Abramowitz[/b] for sharing his experiences with the CakePHP framework and providing the content for the '...let's eat' section. [/list]
@@ -19,7 +19,7 @@
Furthermore, when the browser is installed it does not overwrite your existing firefox installation, simply because (on windows) it's installed under a directory named "Deer Park Alpha 1". As a side note, the process is "firefox.exe", so you cannot run Firefox and Deer Park at the same time: you'll just open another window of the browser which is already running. Having said this, let us now examine what is new in this developer's release. [b]Fixed bugs[/b] -Like any other Firefox Release, Deer Park comes with several [url=http://www.squarefree.com/burningedge/releases/1.1a1.html][b][i]Bug Fixes[/i][/b][/url]. On the official changelog there are many bugs reported to be fixed, sometimes they are hardly noticeable but I experienced some of them when browsing some websites and also when creating applications myself: +Like any other Firefox Release, Deer Park comes with several [url=http://www.squarefree.com/burningedge/releases/1.1a1.html]Bug Fixes[/url]. On the official changelog there are many bugs reported to be fixed, sometimes they are hardly noticeable but I experienced some of them when browsing some websites and also when creating applications myself: - [url=https://bugzilla.mozilla.org/show_bug.cgi?id=103638]103638[/url] - Targets with same name in different windows open in wrong window with javascript. - [url=https://bugzilla.mozilla.org/show_bug.cgi?id=97283]97283[/url] - Mouse wheel scrolling does not work for elements such as div using overflow - auto or scroll.@@ -39,7 +39,7 @@
Another more notable feature only for linux and mac users though allows changes made in the Preferences menu to be applied immediately without restarting your system. Using Windows on the other hand, they improved the option interface with a more extensive use of tabbed interfaces, and also additional options concerning tabbed browsing (BUT in my opinion the [url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox]tabbrowser preferences[/url] extension is still necessary to achieve certain behaviours). Regarding something more technical, among the so-called developers features there are various improvements regarding CSS support, in particular CSS2's [url=http://www.w3.org/TR/CSS21/generate.html#quotes-specify]quotes nesting[/url] and even some new CSS3 (!) features, like [url=http://www.w3.org/TR/css3-multicol/]Multi-column layouts[/url] the :only-child selector, overflow-x and overflow-y properties and even various new [url=http://www.w3.org/TR/css3-ui/#cursor]cursors names[/url]. -Even more news from Mozilla suggests that Deer Park already supports some functions for resolution-independent scalable vector graphics (SVG 1.1), but it's obviously just experimental, and even scriptable bitmap drawing surface ([url=http://developer-test.mozilla.org/docs/Drawing_Graphics_with_Canvas][/url]). Last but not least, even support for [url=http://www.w3.org/MarkUp/Forms/]Xforms[/url] is already possible in Deer Park through a [url=http://www.mozilla.org/projects/xforms/]related project/extension[/url]. +Even more news from Mozilla suggests that Deer Park already supports some functions for resolution-independent scalable vector graphics (SVG 1.1), but it's obviously just experimental, and even scriptable bitmap drawing surface ([url=http://developer-test.mozilla.org/docs/Drawing_Graphics_with_Canvas]Canvas[/url]). Last but not least, even support for [url=http://www.w3.org/MarkUp/Forms/]Xforms[/url] is already possible in Deer Park through a [url=http://www.mozilla.org/projects/xforms/]related project/extension[/url]. [b]Final Thoughs[/b]
@@ -42,8 +42,6 @@
I don't understand how he can say that, especially because everyone I know uses Internet Explorer, Bill Gates made loads of money out of it, so it can't be that bad! Anyhow, I decided to give this Fire-thingie a shot. - - [b][u]Face to Face with a Fox[/u][/b] My friend told me to download this thing from a [url=http://www.mozilla.org/products/firefox/]website[/url], because it's free. So what? IE is free, too, because it came with my PC. Anyhow, I figured I'd just go and download it so he'd leave me alone about it. I read that Firefox - that's its name - is a free browser developed by the [url=http://www.mozilla.org]Mozilla Foundation[/url] which has received a lot of [url=http://www.mozilla.org/press/awards.html]awards[/url] from various well-known computer-related websites and institutions. It also seem to have a promotional [url=http://www.spreadfirefox.com/]website[/url] that says it has been downloaded nearly seventy million times! All the geeks seem to use it, and they love it. Maybe it's really good, or maybe they just don't like Microsoft.@@ -72,25 +70,25 @@ | Save Target As | Save Link As |
[/code] and that once you get used to the new terms, finding what you're looking for is easier than in Internet Explorer. -My friend also said a new feature implemented by Firefox is [b][i]popup blocking[/i][/b]. So I told him that as of Service Pack 2, even Internet Explorer blocks popups (and before that, so did my Google Toolbar) but apparently Firefox had this feature long before Microsoft did. Good to know, but not really impressive. +My friend also said a new feature implemented by Firefox is [i]popup blocking[/i]. So I told him that as of Service Pack 2, even Internet Explorer blocks popups (and before that, so did my Google Toolbar) but apparently Firefox had this feature long before Microsoft did. Good to know, but not really impressive. What was more interesting was that Firefox lets you type in whatever you want in the Location bar, even if it's not a Web address, and you will still get the most relevant page available: for example, typing "firefox" takes me to [url]http://www.mozilla.org/products/firefox/[/url]. This is accomplished through Google's "[url=http://www.google.com/help/features.html#lucky]I'm Feeling Lucky[/url]" feature. IE doesn't do this: it gives me a search page for what I typed, or it tries to 'guess' the domain by adding a .com or .net after the word. Firefox still didn't really impress me: some nice tricks, but nothing that would make me want to switch. What started to make the difference was the [b][i]Tabbed Browsing[/i][/b] feature: I knew about it already, because IE started implementing that through the [url=http://toolbar.msn.com/]MSN toolbar[/url], but it's a bit[url=http://weblogs.mozillazine.org/asa/archives/008312.html]buggy[/url], so I didn't even try it. Firefox has had this feature since its very first [url=http://www.mozilla.org/products/firefox/releases/0.1.html]release[/url], so I guess it they represents a fully-functional, stable, and key feature of the browser. Tabbed browsing introduces a new [i]philosophy[/i] for browsing the web: there is only one browser window, but it can have multiple [i]tabs[/i], each displaying a different page. You can switch from one tab to another by clicking on the title (tab titles appear horizontally under the location bar), "Open Link in New Tab" by right-clicking on a link, and open empty tabs with either CTRL+T or from the [i]File[/i] menu. It takes a while to get used to it, but after a while I couldn't really live without it! I then asked my friend why Firefox doesn't allow me to play music or videos or read pdf files, etc., and he said that I needed to install all the necessary [url=https://pfs.mozilla.org/plugins/]plugins[/url]. This is the most annoying thing about Firefox: you have to "feed" it and "teach" it things - a lot like a baby, really. If the analogy is truly valid, in the end it should be worth it, and I have the feeling that my Firefox will grow up well, if I'm careful. -After learning about plugins, and teaching my little Firefox what to do with movies, songs and other types of files, I learnt that it had another really smart feature: outstanding, built-in [b][i]search capabilities[/i][/b]. +After learning about plugins, and teaching my little Firefox what to do with movies, songs and other types of files, I learnt that it had another really smart feature: outstanding, built-in [i]search capabilities[/i]. I had already noticed the small search bar on the top right, next to the location bar: it's basically a shortcut to Google Search. Cool, but I already had this in IE. One thing I didn't like about IE though, was that if I wanted to use a different search engine, like Yahoo or MSN, I had to install [i]another toolbar[/i], and I ended up with something like three different toolbars under the address bar, so I could hardly see the webpages I was browsing! Firefox apparently knows that people might need to use more than one search engine, so you can select other search engines by clicking on the little icon on the left of the aforementioned search bar. Yahoo, MSN, Wikipedia, and others are available, and [url=http://mycroft.mozdev.org/download.html]others[/url] can be installed easily. If you need a plugin for a search engine, and it doesn't exist yet, you can even make it yourself quite [url=http://mycroft.mozdev.org/generator/]easily[/url]. But let's come back a bit to when I ran Firefox for the first time: where did my IE Favourites go? Under the [i]Bookmarks[/i] menu, obviously, and they even kept their folder structure. They can be organized through the [i]Manage Bookmarks[/i] option, and indeed Firefox's [i]Bookmarks Manager[/i]'s interface looks much cleaner and is easier to use than IE's. However, since all the imported bookmarks get dumped in a subfolder, it takes a little time to get them all up to the top level. -Firefox also implements [i][b]Live Bookmarks[/b][/i]: some sites, especially news-related ones like [url=http://news.yahoo.com/]Yahoo News[/url] and [url=http://news.bbc.co.uk/]BBC News[/url], and [url=http://slashdot.org/]Slashdot[/url] offer [url=http://en.wikipedia.org/wiki/RSS_%28file_format%29]RSS[/url] feeds which are updated several times a day. With Firefox, you can [i]subscribe[/i] to a particular site's RSS by clicking on the little square orange icon which appears on the status bar, and a [i]Live Bookmark[/i] will be saved. They appear under the [i]Bookmarks[/i] menu, in a specific folder, and also on your [i]Bookmarks Toolbar[/i] which is under the location bar: clicking on one of them will show the corresponding site's current headlines. You can click on any of the headlines to read the full story/article. +Firefox also implements [i]Live Bookmarks[/i]: some sites, especially news-related ones like [url=http://news.yahoo.com/]Yahoo News[/url] and [url=http://news.bbc.co.uk/]BBC News[/url], and [url=http://slashdot.org/]Slashdot[/url] offer [url=http://en.wikipedia.org/wiki/RSS_%28file_format%29]RSS[/url] feeds which are updated several times a day. With Firefox, you can [i]subscribe[/i] to a particular site's RSS by clicking on the little square orange icon which appears on the status bar, and a [i]Live Bookmark[/i] will be saved. They appear under the [i]Bookmarks[/i] menu, in a specific folder, and also on your [i]Bookmarks Toolbar[/i] which is under the location bar: clicking on one of them will show the corresponding site's current headlines. You can click on any of the headlines to read the full story/article. -Even if my friend realised he just created another Firefox fan, he insisted on telling me a few words about Downloads and Options. Regarding Downloads, there's not much to say: Firefox incorporates a [i][b]Download Manager[/b][/i] that saves all files downloaded from the Net in a specific (selectable) folder, and keeps a history of all downloads. The download manager is opened automatically whenever a file is downloaded, and it also can be opened manually by selecting [i]Tools-Downloads[/i]. The really handy part is that you can easily open a downloaded file or the folder it's in, or clear your download history all in one place. The drawback is that it stays open until you close it, and you have to click a button to clear the already downloaded files from the queue. +Even if my friend realised he just created another Firefox fan, he insisted on telling me a few words about Downloads and Options. Regarding Downloads, there's not much to say: Firefox incorporates a [i]Download Manager[/i] that saves all files downloaded from the Net in a specific (selectable) folder, and keeps a history of all downloads. The download manager is opened automatically whenever a file is downloaded, and it also can be opened manually by selecting [i]Tools-Downloads[/i]. The really handy part is that you can easily open a downloaded file or the folder it's in, or clear your download history all in one place. The drawback is that it stays open until you close it, and you have to click a button to clear the already downloaded files from the queue. -[i][b]Options[/i][/b] is more complex to deal with, as Firefox does not rely on Windows' [i]Internet Options[/i]. Firefox's Options (under the [i]Tools[/i] menu) are more complete and better organized, as they are clearly divided into 5 main categories: +[i]Options[/i] is more complex to deal with, as Firefox does not rely on Windows' [i]Internet Options[/i]. Firefox's Options (under the [i]Tools[/i] menu) are more complete and better organized, as they are clearly divided into 5 main categories: [i]General[/i] In this panel you can set up your starting page, fonts, colors, language, character encodings, whether or not Firefox is the default browser, and your connection settings.@@ -118,22 +116,22 @@ Even after using Firefox for a while, and even after my friend had explained all its nice features, I still felt that it was somehow incomplete. Luckily, Firefox has [i]extensions[/i] and [i]themes[/i]. The numerous [url=https://addons.mozilla.org/extensions/?application=firefox]Extensions[/url] enhance Firefox by adding new features which - honestly - I never thought were even conceivable to be included in a browser. Furthermore, Firefox also has [url=https://addons.mozilla.org/themes/?application=firefox]Themes[/url], so you can change the browser into something completely different, with different icons, shapes and colors!
It's worth it to mention some [i][b]Extensions[/b][/i] which really impressed me by the functionality or behaviours they added to Firefox: -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox][i]Adblock[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox]Adblock[/url] This extension blocks ads - if you don't want to see a banner on a certain site anymore, just right-click on it, select AdBlock, and it's gone! It also remembers your preferences for every URL or site. It's easily customizeable and useful. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox][i]Tabbrowser Preferences[/i][/url] -This adds a new category in your Options called [i]Tabbed Browsing[/i], where you can customize particular behaviours concerning tabs, like opening all addresses typed in the location bar in a new tab (focused or unfocused), forcing links to open in new tabs instead of new windows, and so on. +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox]Tabbrowser Preferences[/url] +This adds a new category in your Options called Tabbed Browsing, where you can customize particular behaviours concerning tabs, like opening all addresses typed in the location bar in a new tab (focused or unfocused), forcing links to open in new tabs instead of new windows, and so on. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=220&application=firefox][i]FlashGot[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=220&application=firefox]FlashGot[/url] I complained before that my download manager wasn't integrated with Firefox: this extension does that, and supports nearly every possible download manager and accelerators. It also has a built-in gallery to quickly see what file types you are downloading. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=743&application=firefox][i]CustomizeGoogle[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=743&application=firefox]CustomizeGoogle[/url] This personalises Google-related sites and services, such as using [url=http://www.google.com/webhp?complete=1&hl=en]Google Suggest[/url] in every search, filtering content and ads, anonymizing data transmitted to Google, and much more. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=398&application=firefox][i]ForeCastFox[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=398&application=firefox]ForeCastFox[/url] Get weather forecasts from all over the world displayed directly on your status bar or anywhere you want. -[url=https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Developer%20Tools&numpg=10&id=60][i]Developer Tools[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Developer%20Tools&numpg=10&id=60]Developer Tools[/url] This is THE ultimate solution if you are a web developer or interested in knowing more about webpages. With this extension you can: - Disable [b]anything[/b] with a single click (images, JavaScript, cookies, colors, animations, etc.) - Get CSS information or modify a page's CSS@@ -145,39 +143,39 @@ - Outline particular elements (images, tables, etc.)
- Resize your browser to a custom or predefined resolution - Validate a page (HTML, CSS, WAI accessibility, speed reports) -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=33][i]Googlebar[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=33]Googlebar[/url] Clone of the IE Google Toolbar. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=270][i]Yahoo Companion[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=270]Yahoo Companion[/url] Clone of the IE Yahoo toolbar. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=219][i]FoxyTunes[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=219]FoxyTunes[/url] Control your favourite media player (several programs supported) directly from Firefox! -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=16][i]ChatZilla[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=16]ChatZilla[/url] A complete, fully functional, easy-to-use IRC client which runs from Firefox. -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=684][i]FireFTP[/i][/url] +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=684]FireFTP[/url] Fully integrated FTP client. -There are actually many more extensions available from either the Firefox website or other [url=http://www.extensionsmirror.nl/]portals[/url] which can be very useful, depending on your needs, but there are also [b][i]Themes[/i][/b] which can change Firefox's look and feel completely, such as: +There are actually many more extensions available from either the Firefox website or other [url=http://www.extensionsmirror.nl/]portals[/url] which can be very useful, depending on your needs, but there are also [b]Themes[/b] which can change Firefox's look and feel completely, such as: -[url=https://addons.mozilla.org/themes/moreinfo.php?id=7&application=firefox][i]Qute[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?id=7&application=firefox]Qute[/url] This theme inspired Firefox default theme: "Icons designed to be modern, dynamic and fresh, with attention paid to usability and comfort over extended use". -[url=https://addons.mozilla.org/themes/moreinfo.php?id=101&application=firefox][i]Silverskin[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?id=101&application=firefox]Silverskin[/url] "Your favourite browser with a silver skin (With the Qute icons by Arvid Axelsson)" -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=414][i]Saferfox Xpanded[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=414]Saferfox Xpanded[/url] "A full skin theme with a modern aqua design" -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=213][i]Plastikfox Crystal SVG[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=213]Plastikfox Crystal SVG[/url] "Plastik style from KDE with Crystal SVG icons" -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=72][i]Noia (eXtreme)[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=72]Noia (eXtreme)[/url] "This theme is based on the Noia2.0 icon set by Carlitus." -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=548][i]Brushed[/i][/url] +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=548]Brushed[/url] "A Brushed and Polished Browser Interface." Again, many more themes are available. There's something for everyone, really!
@@ -57,10 +57,10 @@
[b]New support for old stuff[/b] Any Firefox user reading the features list above probably wasn't terribly impressed: everything mentioned there has been supported in Firefox for ages, but personally, I'm truly pleased to see that Microsoft finally decided to try to catch up with more advanced browsers (not just Firefox, but Opera as well) and web developers can relax a bit (maybe). -There's a nice post on IEBlog regarding [url=http://blogs.msdn.com/ie/archive/2005/04/26/412263.aspx][b][i]PNG Support[/i][/b][/url], where the guy who made the thing possible, Sam Fortiner, explains what he had to do and why. +There's a nice post on IEBlog regarding [url=http://blogs.msdn.com/ie/archive/2005/04/26/412263.aspx]PNG Support[/url], where the guy who made the thing possible, Sam Fortiner, explains what he had to do and why. It's widely known that PNG images currently aren't handled correctly in Internet Explorer: if they are transparent, in particular, they will show a grey-ish background instead of being transparent. I guess that's not a good thing to see, after trying to overlay PNG images, for example. As a result, web developers currently don't use the PNG format, nor its transparency support. With IE7's transparent PNG support, sites which seemed to only display properly in Firefox will appear equally beautiful in the new Internet Explorer. -Tony Schreiner, on the same blog, provides a detailed explanation on his work concerning [url=http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx][b][i]Tab Support[/i][/b][/url]: tabs are a new thing for Microsoft, and for long it was feared that they could cause "confusion" among end users accustomed to the tabless policy of IE6 and of the whole Windows interface. Regarding this, I think that people at Redmond should thank firefox a million times for "pioneering" into the unexplored land of Tabbed Browsing: firefox has been using tabs since the very first release, and it was highly acclaimed for this. Eventually then, Microsoft folks released that people are not as stupid as they hoped they'd be, and [i]aren't[/i] confused by tabs at all, so they decided to implement them in IE7. +Tony Schreiner, on the same blog, provides a detailed explanation on his work concerning [url=http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx]Tab Support[/url]: tabs are a new thing for Microsoft, and for long it was feared that they could cause "confusion" among end users accustomed to the tabless policy of IE6 and of the whole Windows interface. Regarding this, I think that people at Redmond should thank firefox a million times for "pioneering" into the unexplored land of Tabbed Browsing: firefox has been using tabs since the very first release, and it was highly acclaimed for this. Eventually then, Microsoft folks released that people are not as stupid as they hoped they'd be, and [i]aren't[/i] confused by tabs at all, so they decided to implement them in IE7. Tony gives away some technical details regarding IE7's implementation of tabs, which essentially consists of [i]"pushing a large part of what you see in IE6 into a tab"[/i], and let's hope it works. IE was born and evolved as a single-window browser, so this addition represents quite a challenge to Microsoft's way of thinking about User Interfaces... what's next then? Maybe Tabs in Windows Explorer as well? Maybe...
@@ -121,7 +121,7 @@ [10] ?Harry Potter and the half-blood prince?, Scholastic Inc. website - [url]http://www.scholastic.com/harrypotter/books/prince/index.htm[/url]
[11] Public Domain, Wikipedia Page - [url]http://en.wikipedia.org/wiki/Public_domain[/url] [12] ?The Second Gutenberg Interview with Michael Hart?, Sam Vaknin, Ph.D. - [url]http://samvak.tripod.com/busiweb29.html[/url] [13] Gutenberg Project license ? [url]http://www.gutenberg.org/license[/url] -[14] Project Gutenberg?s Distributed Proofreading - [url] http://www.pgdp.net/c/default.php [/url] +[14] Project Gutenberg?s Distributed Proofreading - [url]http://www.pgdp.net/c/default.php [/url] [15] HTML Writers Guild Project Gutenberg ? [url]http://gutenberg.hwg.org/[/url] [16] Project Gutenberg Australia ? [url]http://gutenberg.net.au/[/url] [17] Project Gutenberg Germany ? [url]http://gutenberg.spiegel.de/[/url]@@ -129,4 +129,4 @@ [18] Project Gutenberg Europe ? [url]http://gutenberg.nl/[/url]
[19] Wikisource and Project Gutenberg, Wikisource page ? [url]http://wikisource.org/wiki/Wikisource:Wikisource_and_Project_Gutenberg[/url] [20] Wikisource main page ? [url]http://wikisource.org/wiki/Main_Page[/url] [21] Wikipedia main page ? [url]http://www.wikipedia.org/[/url] -[22] GNU Free Documentation License ? [url] http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License [/url] +[22] GNU Free Documentation License ? [url]http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License [/url]
@@ -119,8 +119,8 @@ [1]Linux Live CD - Wikipedia: [url]http://en.wikipedia.org/wiki/Linux_live_cd[/url]
[2]DrozenTech's LiveCD List: [url]http://www.frozentech.com/content/livecd.php[/url] [3]Knoppix Official Site: [url]http://www.knoppix.org/[/url] [4]Debian Official Site: [url]http://www.debian.org/[/url] -[5]K Desktop Environment: [url] http://www.kde.org/[/url] -[6]Knoppix Customizations: [url] http://www.knoppix.net/wiki/Knoppix_Customisations[/url] +[5]K Desktop Environment: [url]http://www.kde.org/[/url] +[6]Knoppix Customizations: [url]http://www.knoppix.net/wiki/Knoppix_Customisations[/url] [7]Slax Live CD: [url]http://slax.linux-live.org[/url] [8]Damn Small Linux - Official Page: [url]http://www.damnsmalllinux.org/[/url] [9]Dillo Browser, Official Page: [url]http://www.dillo.org/[/url]
@@ -69,18 +69,18 @@ However, SQLyog is also 100% keyboard friendly, as almost every function has a shortcut. Memorizing just a few of them, and it's worthwhile, as it makes everything much faster. At any rate it's better than memorizing all the icons instead!
Let's examine each dropdown menu and the functions listed in them. -[i][u]File[/u][/i] +[u]File[/u] This menu lists all the functions concerning database connection and disconnection, opening and saving SQL files, and opening new query tabs - the SQL editor panel can have multiple tabs. -[i][u]Edit[/u][/i] +[u]Edit[/u] This menu refers to the SQL editor, not to the query results! It includes functions like execute queries, copy, paste, cut, undo, redo and find/replace, which does not find strings in a record/table/database, but only in the SQL editor. I do believe the "Find in Database" function is missing in SQLyog, and is present in some of the competitors, but you can search your database using the appropriate SQL queries, right? Maybe - in my opinion - an advanced [i]Find <something> in <somewhere>[/i] wizard or dialogue should be implemented - as the developers seem to be very good at creating those types of things, we'll soon find out. -[i][u]DB[/u][/i] +[u]DB[/u] Maybe I'd have called this "database" for the sake of newbies, but this menu indeed groups all database-related functionalities together. Create/truncate/drop databases, create table and create view (maybe they could have been placed under the [i]table[/i] menu), and other interesting features like creating an HTML schema on the database and even copying a whole database (or just a few tables) to a different host (even remote, if accessible) with a single click! It works, just don't try to copy a database onto another remote server on a 56K dialup connection, like I did... -[i][u]Tables[/u][/i] -Another self-explanatory menu, listing all table-related operations like create, alter, rename, empty, drop, import, export tables, manage indexes, rearrange columns, etc. All these functions can be performed through wizards, dialogues or other equally simple methods that any average Windows user should be familiar with. There are only a few exception here and in other menus: when wizards would be inappropriate or inadequate for certain actions, SQLyog prepares a "template query" and lets the user fill it in, typically for more advanced needs, such as if you want to create a new (MySQL 5.0+ only) [i]trigger[/i] named [i]test[i] on the [i]node[/i] table of the aforementioned zzine_drupal database. For this, SQLyog prepares the following query template: +[u]Tables[/u] +Another self-explanatory menu, listing all table-related operations like create, alter, rename, empty, drop, import, export tables, manage indexes, rearrange columns, etc. All these functions can be performed through wizards, dialogues or other equally simple methods that any average Windows user should be familiar with. There are only a few exception here and in other menus: when wizards would be inappropriate or inadequate for certain actions, SQLyog prepares a "template query" and lets the user fill it in, typically for more advanced needs, such as if you want to create a new (MySQL 5.0+ only) [i]trigger[/i] named [i]test[/i] on the [i]node[/i] table of the aforementioned zzine_drupal database. For this, SQLyog prepares the following query template: [code] DELIMITER $$;@@ -99,10 +99,10 @@ ...just remember to modify it according to your needs!
Do you like SQLyog's query templates? Check out Edit->Insert Templates and there's almost everything for every taste. -[i][u]Objects[/u][/i] +[u]Objects[/u] Presumably the authors created this menu to group some advanced or new functionalities together, but everything listed here is already present in one of the other menus: management of functions and triggers, view-related actions, and stored procedures... except for the [i]Drop Column[/i] action, which is only available under this menu. -[i][u]Tools[/u][/i] +[u]Tools[/u] This menu also lists two actions which we already saw under the [i]DB[/i] menu, which is exporting or importing a database. however, there is also an [i]Export resultset[/i] wizard, as well as a very handy user management tool, information about the current database, and the program preferences. The program preferences apparently have two settings which perhaps should be changed by default, which concern the previously mentioned weird tab focus: if you'd like something more intuitive and you don't need (or want) to use the SQL editor a lot, you can safely unclick the "Keep focus on SQL Editor after query execution" and click the "Always select Objects tab when a new item is selected".@@ -115,7 +115,7 @@
[b]"Power Tools"[/b] When I wrote [i]nothing much[/i] earlier I actually referred to the Professional Edition, which - as the feature matrix shows[8]- doesn't offer anything more than the free edition: basically you pay $9 to get rid of the nag screens, which are normally not very intrusive... -[i][u]Tunneling[/u][/i] +[u]Tunneling[/u] On the contrary, the Enterprise Edition ($49) has a lot of very interesting advanced tools which are actually worthwhile to have. Perhaps the most essential feature missing in the free version, especially for people using a remote hosting solution, is [i]tunnelling[/i]. You can use SQLyog to connect to a remote server, theoretically; in reality though, in order to do so your hosting provider must allow privileged remote connections to the database (i.e. <user>@% instead of <user>@localhost), which is not permitted 98% of the time for security reasons. So how can you use SQLyog to access your remote database(s)? With tunneling. The concept is simple: even if privileged remote connections are normally not permitted, privileged local connections are. So all you need to do is place a PHP script on your server, somewhere accessible, and specify it as a parameter for HTTP tunneling before establishing the connection; SQLyog will then access the script and the script will basically forward SQLyog's instruction to the database server, just as if the commands were issued locally.@@ -124,14 +124,14 @@
This is a common, slightly biased, but ultimately reasonable concern, and for $49 you can also get SSH tunneling, provided that your host allows you to connect to the server through a SSH shell. I tried this option and it worked perfectly: with a 2MB/s ADSL connection all went smoothly and fast: the program proved to be a valid alternative to PHPMyAdmin in terms of speed and responsiveness. Do not try this on a 56K connection! It's not worthwhile, and probably not even conceived of by the developers. As I always want to try extreme solutions, I also tried SSH tunneling on dialup and my final conclusion was: [i]stick with PHPMyAdmin[/i]. SQLyog seems to have been developed in order to achieve relatively immediate responses, as a result, when a low speed connection is used to connect to a remote database, the program may hang for a little while before delivering results and executing queries as normal. Perhaps there's room for improvement here: it would be great to have progress bars display when an operation takes more time than normal. -[i][u]Database Synchronization and Migration[/u][/i] +[u]Database Synchronization and Migration[/u] A common and useful feature you should expect from a MySQL front-end is a synchronization utility, and SQLyog has one: by clicking on [i]Database Synchronization[/i] under the Powertools menu you can start a quick and easy synchronization wizard, to automatically update two databases. Simply provide the connection details (even if they are on different hosts or require tunneling), and select the databases you want to synchronize, also specifying if you want a two-way synchronization or only one way. A similar function is [i]structure synchronization[/i], which can be used to keep only the structure (not the data) up-to-date between two databases. You won't be asked to create two new connections, but the operation can only be performed on databases that are already accessed by SQLyog. For more information on how to take advantage of SQLyog's advanced synchronization features, I recommend reading a very informative article specifically devoted to this subject, available online[8]. Another VERY interesting features SQLyog offers (which has been the subject of a whole article on DatabaseJournal.com[9]) is the possibility to easily migrate to MySQL from other ODBC sources. Through a relatively painless wizard it is possible to migrate from another database type to MySQL, while making sure that any errors are handled as expected. -[i][u]Periodic Tasks and Management[/u][/i] +[u]Periodic Tasks and Management[/u] MySQL is a wonderful relational database, but it fundamentally lacks the ability to execute scheduled queries and operations, which are normally accomplished by server-side scripts. SQLyog offers you the opportunity to easily create and administer periodic tasks, notifications and backups via a few wizards: the [i]Notification Services[/i] wizard, which can be used to send the result of a particular user-defined periodic query to an email address or execute maintenance queries, and the [i]Scheduled Backups[/i] wizard to automate full or partial database backups and exports. Webyog[10] itself offers an informative how-to[10] on these tasks, step-by-step with screenshots. Last but not least, you can manage all these scheduled jobs through a very handy [i]job manager[/i] located in the [i]Powertools[/i] menu.
@@ -102,11 +102,11 @@ [b]Notes, related links, and further reading:[/b]
[1]You can do so here, for example: [url]http://www.mydomain.com[/url] [2]The domain is fictitious and used as an example -[3]Macromedia Flash: [url] http://www.macromedia.com/software/flash/[/url] -[4]W3C validator: [url] http://validator.w3.org/ [/url] -[5]CSS: [url] http://www.w3.org/Style/CSS/ [/url] -[6]Official CSS tutorial: [url] http://www.w3schools.com/css/default.asp [/url] -[7]Web crawler, Wikipedia page: [url] http://en.wikipedia.org/wiki/Web_crawler[/url] -[8]Favicon, Wikipedia page: [url] http://en.wikipedia.org/wiki/Favicon[/url] -[9]Robot.txt tutorial: [url] http://www.searchengineworld.com/robots/robots_tutorial.htm[/url] -[10]Apache mod_rewrite: [url] http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html [/url] +[3]Macromedia Flash: [url]http://www.macromedia.com/software/flash/[/url] +[4]W3C validator: [url]http://validator.w3.org/ [/url] +[5]CSS: [url]http://www.w3.org/Style/CSS/ [/url] +[6]Official CSS tutorial: [url]http://www.w3schools.com/css/default.asp [/url] +[7]Web crawler, Wikipedia page: [url]http://en.wikipedia.org/wiki/Web_crawler[/url] +[8]Favicon, Wikipedia page: [url]http://en.wikipedia.org/wiki/Favicon[/url] +[9]Robot.txt tutorial: [url]http://www.searchengineworld.com/robots/robots_tutorial.htm[/url] +[10]Apache mod_rewrite: [url]http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html [/url]
@@ -1,154 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Books – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Books</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/web-sites.html">Web Sites</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/podcasts.html">Podcasts and Screencasts</a></nav> - - <p><strong><a href="http://www.humblelittlerubybook.com/book/">The Humble Little Ruby Book</a></strong> – A nicely-written free book on Ruby, by <a href="/ruby-compendium/book/rubyists.html#jm">Jeremy McAnally</a></p> - - <p><strong><a href="http://www.sapphiresteel.com/The-Little-Book-Of-Ruby">The Little Book of Ruby</a></strong> – An 87-page free introduction covering Ruby basics.</p> - - <p><strong><a href="http://www.sapphiresteel.com/Blog/The-Book-Of-Ruby-free-in-depth">The Book of Ruby</a></strong> – A 400-page free Ruby bible by Huw Collingbourne.</p> - - <p><strong><a href="http://ruby-doc.org/docs/ProgrammingRuby/">Programming Ruby</a></strong> – The first edition of the so-called <em>Pickaxe</em> book, available for free, by <a href="/ruby-compendium/book/rubyists.html#davethomas">Dave Thomas</a>, <a href="/ruby-compendium/book/rubyists.html#chad">Chad Fowler</a> and <a href="/ruby-compendium/book/rubyists.html#andyhunt">Andy Hunt</a></p> - - <p><strong><a href="http://mislav.uniqpath.com/poignant-guide/">Why’s (poignant) guide to Ruby</a></strong> – The legendary book by <a href="/ruby-compendium/book/rubyists.html#_why">why the lucky stiff</a>. With foxes, little elves, and… chunky bacon!). Exquisitely weird and witty.</p> - - <p><strong><a href="http://ruby.runpaint.org/">Read Ruby 1.9</a></strong> – <em>“Very early draft of a book about version 1.9 of the Ruby programming language, released under a Creative Commons license.”</em></p> - - <p><strong><a href="http://ruby.learncodethehardway.org/">Learn Ruby The Hard Way</a></strong> – A Ruby translation of the popular book <em>Learn Python The Hard Way</em>, by Zed Shaw.</p> -<aside class="box"> -<div class="box-title">What about <em>real</em> books?</div> -<p>All the books mentioned so far are free, but there’s plenty of published books on Ruby. Check out the following titles:</p> -<ul> - <li><a href="http://www.informit.com/imprint/series_detail.aspx?ser=2124042">Addison-Wesley Progessional Ruby Series</a></li> - <li><a href="http://oreilly.com/pub/topic/ruby">Ruby books by O’Reilly</a></li> - <li><a href="http://pragprog.com/categories/ruby_and_rails">Ruby books by Pragmatic Programmers</a></li> -</ul> - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/web-sites.html">Web Sites</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/podcasts.html">Podcasts and Screencasts</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,155 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>The Core and the Standard Library – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>The Core and the Standard Library</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/syntax.html">Syntax</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/features.html">Advanced Language Features</a></nav> - <p>By default, Ruby always loads its core classes and modules when a script is executed. This means that in all Ruby programs you can always instantiate core objects like:</p> -<ul> - <li>Numbers (integers, floats)</li> - <li>Strings</li> - <li>Arrays</li> - <li>Hashes</li> - <li>Files</li> - <li>Regular expressions</li> - <li>Symbols</li> - <li>Threads</li> - <li>Times and dates</li> - <li>…and many more.</li> -</ul> -<p>Most likely, this is not going to be enough. That’s when the Standard Library comes into play: it’s a large collection of internal libraries that ships with every Ruby implementations. There are libraries to connect to the Internet, to read/write to various file formats such as <span class="caps">CSV</span> or <span class="caps">YAML</span>, to work with files and paths, access system features, and so on.</p> -<p>Unlike core classes, standard libraries must be required specifically if needed, before they can be used.</p> -<aside class="box"> -<div class="box-title">If you want to know more...</div> -<p>On core libraries and the Standard Library, checkout the official documentation:</p> -<ul> - <li><a href="http://www.ruby-doc.org/core/">Core Reference</a></li> - <li><a href="http://www.ruby-doc.org/stdlib/">Standard Library Reference</a></li> -</ul> -<p>Overwhelmed? Don’t know where to start? Familiarize yourself with the <a href="http://www.ruby-doc.org/core/classes/Enumerable.html">Enumerable</a> module; you won’t regret it!</p> - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/syntax.html">Syntax</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/features.html">Advanced Language Features</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,155 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Advanced Language Features – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Advanced Language Features</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/core-stdlib.html">The Core and the Standard Library</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/gems.html">Ruby Gems</a></nav> - <p>One of the best things about Ruby is that you’re not stuck with a single programming paradigm. Even though everything in Ruby is an object (thereby making it a fully object-oriented language), nothing forbids you to program procedurally, or even use typical functional constructs.</p> -<p>The beauty of this is that you can (and should) combine elements from different paradigms, resulting in very powerful and expressive code. What I really like about Ruby though is its inherent dynamic nature.</p> -<p>You have a very few constraints when coding:</p> -<ul> - <li>you can open and close class definitions at will,</li> - <li>you are not constrained by object types</li> - <li>you can mix-in methods in multiple classes at the same time</li> - <li>you can write code that <em>writes itself</em> dynamically (this is commonly called <em>metaprogramming</em>)</li> - <li>you can easily create Domain-Specific Language to solve problems faster, with style</li> - <li>you can create and pass around blocks of code</li> -</ul> -<p>All these things make the language very flexible and powerful. Do not overuse Ruby’s power: if your code starts to look like black magic, you’re probably going too far.</p> -<aside class="box"> -<div class="box-title">If you want to know more...</div> -<p>…on specific and advanced Ruby features, check out these articles:</p> -<ul> - <li><a href="http://olabini.com/blog/2006/09/ruby-metaprogramming-techniques/">Ruby Metaprogramming techniques</a></li> - <li><a href="http://www.skorks.com/2010/05/ruby-procs-and-lambdas-and-the-difference-between-them/">Ruby Procs And Lambdas (And The Difference Between Them)</a></li> - <li><a href="http://juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/">Ruby Mixin Tutorial</a></li> - <li><a href="http://www.valibuk.net/2009/03/domain-specific-languages-in-ruby/">Domain Specific Languages in Ruby</a></li> -</ul> - -</aside> - - - <nav class="navigation"><a href="/ruby-compendium/book/core-stdlib.html">The Core and the Standard Library</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/gems.html">Ruby Gems</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,476 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>What you can use for... – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>What you can use for...</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/gems.html">Ruby Gems</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/resources.html">Resources</a></nav> - <p>You could spend hours on the RubyGems web site to find what you’re looking for sometimes. Not because you can’t find it, but because often there are too many alternative libraries that overlap in terms of functionalities offered.</p> -<p>A site to check when you don’t know much of what has been done in a particular domain is <a href="http://ruby-toolbox.com/">The Ruby Toolbox</a>, which organizes quite a lot of gems into <a href="http://ruby-toolbox.com/categories.html">categories</a>. This section is somewhat similar, but it focuses on just a few common tasks and a small set of hand-picked gems.</p> - -<section class="section"> -<header><h1 id="h_18">Command Line Applications</h1></header> -<p><strong>cmdparse</strong> <blockquote>“cmdparse provides classes for parsing commands on the command line; command line options are parsed using optparse or any other option parser implementation.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://cmdparse.rubyforge.org/">http://cmdparse.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/cmdparse">http://www.rubygems.org/gems/cmdparse</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/cmdparse">http://www.rubydoc.info/gems/cmdparse</a></li> -</ul> - - <p><strong>gli</strong> <blockquote>“An application and <span class="caps">API</span> for describing command line interfaces that can be used to quickly create a shell for executing command-line tasks.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://davetron5000.github.com/gli">http://davetron5000.github.com/gli</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/gli">http://www.rubygems.org/gems/gli</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/gli">http://www.rubydoc.info/gems/gli</a></li> -</ul> - - <p><strong>highline</strong> <blockquote>“A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://highline.rubyforge.org/">http://highline.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/highline">http://www.rubygems.org/gems/highline</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/highline">http://www.rubydoc.info/gems/highline</a></li> -</ul> - - <p><strong>hirb</strong> <blockquote>“A mini view framework for console/irb that’s easy to use, even while under its influence. Console goodies include a no-wrap table, auto-pager, tree and menu”</blockquote></p> -<ul> - <li>Web Page: <a href="https://github.com/cldwalker/hirb">https://github.com/cldwalker/hirb</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/hirb">http://www.rubygems.org/gems/hirb</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/hirb">http://www.rubydoc.info/gems/hirb</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_19">Documentation</h1></header> -<p><strong>glyph</strong> <blockquote>“Glyph is a framework for structured document authoring.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.h3rald.com/glyph/">http://www.h3rald.com/glyph/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/glyph">http://www.rubygems.org/gems/glyph</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/glyph">http://www.rubydoc.info/gems/glyph</a></li> -</ul> - - <p><strong>rdoc</strong> <blockquote>“RDoc produces <span class="caps">HTML</span> and online documentation for Ruby projects. RDoc includes the rdoc and ri tools for generating and displaying online documentation.”</blockquote></p> -<ul> - <li>Web Page: <a href="https://github.com/rdoc/rdoc/">https://github.com/rdoc/rdoc/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rdoc">http://www.rubygems.org/gems/rdoc</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rdoc">http://www.rubydoc.info/gems/rdoc</a></li> -</ul> - - <p><strong>yard</strong> <blockquote>“<span class="caps">YARD</span> is a documentation generation tool for the Ruby programming language. It enables the user to generate consistent, usable documentation that can be exported to a number of formats very easily, and also supports extending for custom Ruby constructs such as custom class level definitions.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://yardoc.org/">http://yardoc.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/yard">http://www.rubygems.org/gems/yard</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/yard">http://www.rubydoc.info/gems/yard</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_20">Gem Management</h1></header> -<p><strong>bundler</strong> <blockquote>“Bundler manages an application’s dependencies through its entire life, across many machines, systematically and repeatably.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://gembundler.com/">http://gembundler.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/bundler">http://www.rubygems.org/gems/bundler</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/bundler">http://www.rubydoc.info/gems/bundler</a></li> -</ul> - - <p><strong>jeweler</strong> <blockquote>“Simple and opinionated helper for creating Rubygem projects on GitHub”</blockquote></p> -<ul> - <li>Web Page: <a href="http://github.com/technicalpickles/jeweler">http://github.com/technicalpickles/jeweler</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/jeweler">http://www.rubygems.org/gems/jeweler</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/jeweler">http://www.rubydoc.info/gems/jeweler</a></li> -</ul> - - <p><strong>bones</strong> <blockquote>“Mr Bones is a handy tool that creates new projects from a code skeleton.”</blockquote></p> -<ul> - <li>Web Page: <a href="https://github.com/TwP/bones">https://github.com/TwP/bones</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/bones">http://www.rubygems.org/gems/bones</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/bones">http://www.rubydoc.info/gems/bones</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_21">GUI Programming</h1></header> -<p><strong>bowline</strong> <blockquote>“Ruby/JS <span class="caps">GUI</span> framework”</blockquote></p> -<ul> - <li>Web Page: <a href="http://bowlineapp.com/">http://bowlineapp.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/bowline">http://www.rubygems.org/gems/bowline</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/bowline">http://www.rubydoc.info/gems/bowline</a></li> -</ul> - - <p><strong>fxruby</strong> <blockquote>“FXRuby is the Ruby binding to the <span class="caps">FOX</span> <span class="caps">GUI</span> toolkit”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.fxruby.org/">http://www.fxruby.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/fxruby">http://www.rubygems.org/gems/fxruby</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/fxruby">http://www.rubydoc.info/gems/fxruby</a></li> -</ul> - - <p><strong>wxruby</strong> <blockquote>“wxRuby allows the creation of graphical user interface (<span class="caps">GUI</span>) applications via the wxWidgets library. wxRuby provides native-style <span class="caps">GUI</span> windows, dialogs and controls on platforms including Windows, OS X and Linux.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://wxruby.org/">http://wxruby.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/wxruby">http://www.rubygems.org/gems/wxruby</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/wxruby">http://www.rubydoc.info/gems/wxruby</a></li> -</ul> - - <p><strong>qtruby4</strong> <blockquote>“Qt4 Bindings for Ruby.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://rubyforge.org/projects/korundum/">http://rubyforge.org/projects/korundum/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/qtruby4">http://www.rubygems.org/gems/qtruby4</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/qtruby4">http://www.rubydoc.info/gems/qtruby4</a></li> -</ul> - - <p><strong>rugui</strong> <blockquote>“RuGUI is a framework which aims to help building desktop applications. RuGUI was mostly inspired by the Ruby on Rails framework, taking most of its features from it.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://rugui.org/">http://rugui.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rugui">http://www.rubygems.org/gems/rugui</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rugui">http://www.rubydoc.info/gems/rugui</a></li> -</ul> - <aside class="box"> -<div class="box-title">What about Shoes?</div> -<a href="http://shoesrb.com/">Shoes</a> is a cross-platform, easy-to-use Ruby toolkit originally created by <a href="/ruby-compendium/book/rubyists.html#_why"></a>. Unfortunately, it is distributed as a standalone application rather than a gem (yet), due to its internal architecture and dependencies. - -</aside> - -</section> -<section class="section"> -<header><h1 id="h_22">Markup and Template Languages</h1></header> -<p><strong>bluecloth</strong> <blockquote>“BlueCloth is a Ruby implementation of Markdown, a text-to-<span class="caps">HTML</span> conversion tool for web writers. To quote from the project page: Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid <span class="caps">XHTML</span> (or <span class="caps">HTML</span>).”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.deveiate.org/projects/BlueCloth">http://www.deveiate.org/projects/BlueCloth</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/bluecloth">http://www.rubygems.org/gems/bluecloth</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/bluecloth">http://www.rubydoc.info/gems/bluecloth</a></li> -</ul> - - <p><strong>github-markup</strong> <blockquote>“This gem is used by GitHub to render any fancy markup such as Markdown, Textile, Org-Mode, etc. Fork it and add your own!”</blockquote></p> -<ul> - <li>Web Page: <a href="http://github.com/github/markup">http://github.com/github/markup</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/github-markup">http://www.rubygems.org/gems/github-markup</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/github-markup">http://www.rubydoc.info/gems/github-markup</a></li> -</ul> - - <p><strong>haml</strong> <blockquote>“Haml (<span class="caps">HTML</span> Abstraction Markup Language) is a layer on top of <span class="caps">XHTML</span> or <span class="caps">XML</span> that’s designed to express the structure of <span class="caps">XHTML</span> or <span class="caps">XML</span> documents in a non-repetitive, elegant, easy way, using indentation rather than closing tags and allowing Ruby to be embedded with ease. It was originally envisioned as a plugin for Ruby on Rails, but it can function as a stand-alone templating engine.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://haml-lang.com/">http://haml-lang.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/haml">http://www.rubygems.org/gems/haml</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/haml">http://www.rubydoc.info/gems/haml</a></li> -</ul> - - <p><strong>liquid</strong> <blockquote>“A secure, non-evaling end user template engine with aesthetic markup.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.liquidmarkup.org/">http://www.liquidmarkup.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/liquid">http://www.rubygems.org/gems/liquid</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/liquid">http://www.rubydoc.info/gems/liquid</a></li> -</ul> - - <p><strong>mustache</strong> <blockquote>"Inspired by ctemplate, Mustache is a framework-agnostic way to render logic-free views. As ctemplates says, “It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language. Think of Mustache as a replacement for your views. Instead of views consisting of <span class="caps">ERB</span> or <span class="caps">HAML</span> with random helpers and arbitrary logic, your views are broken into two parts: a Ruby class and an <span class="caps">HTML</span> template.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://github.com/defunkt/mustache">http://github.com/defunkt/mustache</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/mustache">http://www.rubygems.org/gems/mustache</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/mustache">http://www.rubydoc.info/gems/mustache</a></li> -</ul> - - <p><strong>rdiscount</strong> <blockquote>“Fast Implementation of Gruber’s Markdown in C”</blockquote></p> -<ul> - <li>Web Page: <a href="http://github.com/rtomayko/rdiscount/">http://github.com/rtomayko/rdiscount/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rdiscount">http://www.rubygems.org/gems/rdiscount</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rdiscount">http://www.rubydoc.info/gems/rdiscount</a></li> -</ul> - - <p><strong>redcloth</strong> <blockquote>“RedCloth is a Ruby library for converting Textile into <span class="caps">HTML</span>.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://redcloth.org/">http://redcloth.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/redcloth">http://www.rubygems.org/gems/redcloth</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/redcloth">http://www.rubydoc.info/gems/redcloth</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_23">Static Web Site Generators</h1></header> -<p><strong>jekyll</strong> <blockquote>“Jekyll is a simple, blog aware, static site generator.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://jekyllrb.com/">http://jekyllrb.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/jekyll">http://www.rubygems.org/gems/jekyll</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/jekyll">http://www.rubydoc.info/gems/jekyll</a></li> -</ul> - - <p><strong>nanoc</strong> <blockquote>“a web publishing system written in Ruby for building small to medium-sized websites.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://nanoc.stoneship.org/">http://nanoc.stoneship.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/nanoc">http://www.rubygems.org/gems/nanoc</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/nanoc">http://www.rubydoc.info/gems/nanoc</a></li> -</ul> - - <p><strong>toto</strong> <blockquote>“the tiniest blog-engine in Oz.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://cloudhead.io/toto">http://cloudhead.io/toto</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/toto">http://www.rubygems.org/gems/toto</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/toto">http://www.rubydoc.info/gems/toto</a></li> -</ul> - - <p><strong>webby</strong> <blockquote>“Webby is a fantastic little website management system. It would be called a content management system if it were a bigger kid. But, it’s just a runt with a special knack for transforming text. And that’s really all it does – manages the legwork of turning text into something else, an <span class="caps">ASCII</span> Alchemist if you will.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://webby.rubyforge.org/">http://webby.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/webby">http://www.rubygems.org/gems/webby</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/webby">http://www.rubydoc.info/gems/webby</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_24">Testing</h1></header> -<p><strong>bacon</strong> <blockquote>“Bacon is a small RSpec clone weighing less than 350 LoC but nevertheless providing all essential features.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://github.com/chneukirchen/bacon">http://github.com/chneukirchen/bacon</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/bacon">http://www.rubygems.org/gems/bacon</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/bacon">http://www.rubydoc.info/gems/bacon</a></li> -</ul> - - <p><strong>cucumber</strong> <blockquote>“Behaviour Driven Development with elegance and joy”</blockquote></p> -<ul> - <li>Web Page: <a href="http://cukes.info/">http://cukes.info/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/cucumber">http://www.rubygems.org/gems/cucumber</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/cucumber">http://www.rubydoc.info/gems/cucumber</a></li> -</ul> - - <p><strong>minitest</strong> <blockquote>“minitest provides a complete suite of testing facilities supporting <span class="caps">TDD</span>, <span class="caps">BDD</span>, mocking, and benchmarking. minitest/unit is a small and incredibly fast unit testing framework.”</blockquote></p> -<ul> - <li>Web Page: <a href="https://github.com/seattlerb/minitest">https://github.com/seattlerb/minitest</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/minitest">http://www.rubygems.org/gems/minitest</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/minitest">http://www.rubydoc.info/gems/minitest</a></li> -</ul> - - <p><strong>rspec</strong> <blockquote>“RSpec is a Behaviour-Driven Development tool for Ruby programmers. <span class="caps">BDD</span> is an approach to software development that combines Test-Driven Development, Domain Driven Design, and Acceptance Test-Driven Planning. RSpec helps you do the <span class="caps">TDD</span> part of that equation, focusing on the documentation and design aspects of <span class="caps">TDD</span>.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://relishapp.com/rspec">http://relishapp.com/rspec</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rspec">http://www.rubygems.org/gems/rspec</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rspec">http://www.rubydoc.info/gems/rspec</a></li> -</ul> - - <p><strong>shoulda</strong> <blockquote>“Making tests easy on the fingers and eyes”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.thoughtbot.com/projects/shoulda">http://www.thoughtbot.com/projects/shoulda</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/shoulda">http://www.rubygems.org/gems/shoulda</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/shoulda">http://www.rubydoc.info/gems/shoulda</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_25">Web Development</h1></header> -<p><strong>rails</strong> <blockquote>“Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://rubyonrails.org/">http://rubyonrails.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rails">http://www.rubygems.org/gems/rails</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rails">http://www.rubydoc.info/gems/rails</a></li> -</ul> - - <p><strong>sinatra</strong> <blockquote>“Classy web-development dressed in a <span class="caps">DSL</span>”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.sinatrarb.com/">http://www.sinatrarb.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/sinatra">http://www.rubygems.org/gems/sinatra</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/sinatra">http://www.rubydoc.info/gems/sinatra</a></li> -</ul> - - <p><strong>padrino-framework</strong> <blockquote>“The Godfather of Sinatra provides a full-stack agnostic framework on top of Sinatra”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.padrinorb.com/">http://www.padrinorb.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/padrino-framework">http://www.rubygems.org/gems/padrino-framework</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/padrino-framework">http://www.rubydoc.info/gems/padrino-framework</a></li> -</ul> - - <p><strong>merb-core</strong> <blockquote>“Merb. Pocket rocket web framework.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.merbivore.com/">http://www.merbivore.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/merb-core">http://www.rubygems.org/gems/merb-core</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/merb-core">http://www.rubydoc.info/gems/merb-core</a></li> -</ul> - - <p><strong>ramaze</strong> <blockquote>“Ramaze is a simple and modular web framework”</blockquote></p> -<ul> - <li>Web Page: <a href="http://ramaze.net/">http://ramaze.net/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/ramaze">http://www.rubygems.org/gems/ramaze</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/ramaze">http://www.rubydoc.info/gems/ramaze</a></li> -</ul> - - <p><strong>camping</strong> <blockquote>“minature rails for stay-at-home moms”</blockquote></p> -<ul> - <li>Web Page: <a href="http://camping.rubyforge.org/">http://camping.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/camping">http://www.rubygems.org/gems/camping</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/camping">http://www.rubydoc.info/gems/camping</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_26">Web and App Servers</h1></header> -<p><strong>passenger</strong> <blockquote>“Easy and robust Ruby web application deployment.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://www.modrails.com/">http://www.modrails.com/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/passenger">http://www.rubygems.org/gems/passenger</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/passenger">http://www.rubydoc.info/gems/passenger</a></li> -</ul> - - <p><strong>rack</strong> <blockquote>“Rack provides a minimal interface between webservers supporting Ruby and Ruby frameworks.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://rack.rubyforge.org/">http://rack.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/rack">http://www.rubygems.org/gems/rack</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/rack">http://www.rubydoc.info/gems/rack</a></li> -</ul> - - <p><strong>thin</strong> <blockquote>“A thin and fast web server”</blockquote></p> -<ul> - <li>Web Page: <a href="http://code.macournoyer.com/thin/">http://code.macournoyer.com/thin/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/thin">http://www.rubygems.org/gems/thin</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/thin">http://www.rubydoc.info/gems/thin</a></li> -</ul> - - <p><strong>unicorn</strong> <blockquote>“Unicorn is an <span class="caps">HTTP</span> server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://unicorn.bogomips.org/">http://unicorn.bogomips.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/unicorn">http://www.rubygems.org/gems/unicorn</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/unicorn">http://www.rubydoc.info/gems/unicorn</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_27">XML Parsing</h1></header> -<p><strong>hpricot</strong> <blockquote>“a swift, liberal <span class="caps">HTML</span> parser with a fantastic library”</blockquote></p> -<ul> - <li>Web Page: <a href="http://code.whytheluckystiff.net/hpricot/">http://code.whytheluckystiff.net/hpricot/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/hpricot">http://www.rubygems.org/gems/hpricot</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/hpricot">http://www.rubydoc.info/gems/hpricot</a></li> -</ul> - - <p><strong>nokogiri</strong> <blockquote>“An <span class="caps">HTML</span>, <span class="caps">XML</span>, <span class="caps">SAX</span>, & Reader parser with the ability to search documents via XPath or CSS3 selectors… and much more”</blockquote></p> -<ul> - <li>Web Page: <a href="http://nokogiri.org/">http://nokogiri.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/nokogiri">http://www.rubygems.org/gems/nokogiri</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/nokogiri">http://www.rubydoc.info/gems/nokogiri</a></li> -</ul> - - <p><strong>xml-simple</strong> <blockquote>“A simple <span class="caps">API</span> for <span class="caps">XML</span> processing.”</blockquote></p> -<ul> - <li>Web Page: <a href="http://xml-simple.rubyforge.org/">http://xml-simple.rubyforge.org/</a></li> - <li>Download: <a href="http://www.rubygems.org/gems/xml-simple">http://www.rubygems.org/gems/xml-simple</a></li> - <li>Documentation: <a href="http://www.rubydoc.info/gems/xml-simple">http://www.rubydoc.info/gems/xml-simple</a></li> -</ul> - -</section> - <nav class="navigation"><a href="/ruby-compendium/book/gems.html">Ruby Gems</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/resources.html">Resources</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,144 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Ruby Gems – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Ruby Gems</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/features.html">Advanced Language Features</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/gem-tips.html">What you can use for...</a></nav> - <p>Sure, the <a href="/ruby-compendium/book/core-stdlib.html#core-stdlib">Standard Library</a> is quite large but… no, it does not have everything you need. Luckily, it’s full of gems out there! Rubygems is Ruby’s packaging system, and the best way to distribute your own libraries and applications.</p> -<p>The Rubygems packaging system is now included in most Ruby implementation and distributions. Installing a gem and all its dependencies is as easy as issuing <code>gem install <name of the gem></code>. So for example if you want to install the <a href="https://rubygems.org/gems/rails">rails</a> gem, you can just run</p> -<p><code>gem install rails</code></p> -<p>…and it will be automatically downloaded and installed on your system, along with the other gems it depends on.</p> -<section class="section"> -<header><h1 id="h_16">RubyGems.org</h1></header> -There are over 1300 different gems publicly (and freely!) available. Luckily, the official gem host site, <a href="http://www.rubygems.org">RubyGems.org</a> makes it very easy to find what you're looking for: just search for a particular gem or a functionality you're looking for, and browse through the results. You can also register and <em>push</em> your own gems for other people to use. - -</section> -<aside class="box"> -<div class="box-title">What happened to RubyForge?</div> -<p>If you started to learn Ruby a few years ago, the <a href="http://www.rubyforge.org">RubyForge</a> was <em>the</em> place to find user-created ruby code and gems. The site is still there, but nowadays Rubyists prefer using <a href="http://www.github.com">GitHub</a> as host for their source code repositories and RubyGems.org as the home for their gems.</p> - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/features.html">Advanced Language Features</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/gem-tips.html">What you can use for...</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,207 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Versions and Implementations – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Versions and Implementations</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/ten-good-things.html">10 Good Things about Ruby</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/syntax.html">Syntax</a></nav> - <p>One thing that may appear unusual and even discouraging to newcomers is the different versions and implementations of the language. Ruby has two version branches:</p> -<ul> - <li><strong>1.8</strong> – The former stable version, which is still widely used in production and it is still updated.</li> - <li><strong>1.9</strong> – As of release 1.9.2, this is considered the current stable and recommended version of the language. Although most third-party libraries work with it, some old and now unmaintained libraries may not. The good news is that there are normally newer and better libraries available instead.</li> -</ul> -<p>Different implementations of Ruby offer different degrees of support to one or the other version. Compared to 1.8, Ruby 1.9 has some additional syntax for certain expressions, improved character encoding support and a few new bundled libraries and features.</p> -<p>If you’re new to Ruby and you have no particular restrictions or needs, you should start learning Ruby using version 1.9 (either <a href="#yarv">the official implementation</a>, <a href="#jruby">JRuby</a> or <a href="#macruby">MacRuby</a>)!</p> -<aside class="box"> -<div class="box-title">If you want to know more...</div> -<p>There are many articles and presentations online outlining the changes in Ruby 1.9, for example:</p> -<ul> - <li><a href="http://www.slideshare.net/komrade/piterrb-2-ruby-18-vs-ruby-19">Piter.rb #2 – Ruby 1.8 vs Ruby 1.9</a></li> - <li><a href="http://eigenclass.org/hiki/Changes+in+Ruby+1.9">Changes in Ruby 1.9</a></li> - <li><a href="http://slideshow.rubyforge.org/ruby19.html#1">Ruby 1.9: What to Expect</a></li> -</ul> - -</aside> -<section class="section"> -<header><h1 id="h_6">Official Ruby 1.8 Implementation</h1></header> -<p>The official Ruby 1.8 implementation was written in C by Yukihiru Matsumoto, the creator of Ruby.</p> -<ul> - <li>Current Version: <strong>1.8.7-p352</strong></li> - <li>Download: <a href="http://www.ruby-lang.org/en/downloads/">Official Ruby Web Site</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="yarv">Official Ruby 1.9 Implementation</h1></header> -<p>The official Ruby 1.9 implementation is based on a bytecode interpreter written Koichi Sasada.</p> -<ul> - <li>Current Version: <strong>1.9.2-p200</strong></li> - <li>Preview Version: <strong>1.9.2-preview1</strong></li> - <li>Download: <a href="http://www.ruby-lang.org/en/downloads/">Official Ruby Web Site</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="jruby">JRuby</h1></header> -<p>An implementation of the Ruby language running on the Java Virtual Machine, mature and usable in production. It offers real threading, performance improvements, and Java interoperability. Fully-compatible with both Ruby 1.8 and 1.9.</p> -<ul> - <li>Current Version: <strong>1.6.3</strong></li> - <li>Download: <a href="http://jruby.org/">JRuby Web Site</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_9">Rubinius</h1></header> -<p>A C++ and <a href="http://llvm.org/"><span class="caps">LLVM</span></a>-powered Ruby implementation. Although still not as mature as <span class="caps">YARV</span> or JRuby, it’s getting there. It currently aims at being compatible with Ruby 1.8.7, although support for Ruby 1.9 is planned.</p> -<ul> - <li>Current Version: <strong>1.2.4</strong></li> - <li>Download: <a href="http://rubini.us/">Rubinius Web Site</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="macruby">MacRuby</h1></header> -<p>A Mac-only Ruby implementation compatible with Ruby 1.9, specifically tuned for Mac OS X operating systems.</p> -<ul> - <li>Current Version: <strong>0.10</strong></li> - <li>Download: <a href="http://www.macruby.org/">MacRuby Web Site</a></li> -</ul> - -</section> -<section class="section"> -<header><h1 id="h_11">IronRuby</h1></header> -<p>A .<span class="caps">NET</span> implementation of the Ruby Programming Language, compatible with Ruby 1.8.6 (IronRuby 1.0) and 1.9 (IronRuby 1.1.1 onwards). Not as mature as the other implementations.</p> -<ul> - <li>Current Version: <strong>1.1.3</strong></li> - <li>Download: <a href="http://www.ironruby.net/">IronRuby Web Site</a></li> -</ul> - -</section> -<aside class="box"> -<div class="box-title">Try'em All!</div> -<p>Don’t know which Ruby to choose? You don’t have to! <a href="/ruby-compendium/book/rubyists.html#wayneeseguin"></a> created <a href="https://rvm.beginrescueend.com/">Ruby Version Manager</a> (<span class="caps">RVM</span>) to allow you to install, upgrade and manage several Ruby installation seamlessly on the same computer. If you’re on OS X or Linux, that is. If you’re on a Windows computer, <a href="https://github.com/vertiginous/pik">Pik</a> provides something similar.</p> - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/ten-good-things.html">10 Good Things about Ruby</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/syntax.html">Syntax</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -68,11 +68,7 @@ <section id="body-text" class="hyphenate glyph-index">
<nav class="contents"> <h1 class="toc-header" id="toc">Table of Contents</h1> <ol class="toc"> - <li class="frontmatter introduction"><a href="/ruby-compendium/book/intro.html#h_1">So you want to learn Ruby...</a></li><li><ol><li class="frontmatter section"><a href="/ruby-compendium/book/notes.html#h_2">About this Book</a></li></ol></li> -<li class="bodymatter chapter"><a href="/ruby-compendium/book/language.html#h_3">Quick Tour</a></li><li><ol><li class="bodymatter section"><a href="/ruby-compendium/book/ten-good-things.html#ten-good-things">10 Good Things about Ruby</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/implementations.html#implementations">Versions and Implementations</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/syntax.html#syntax">Syntax</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/core-stdlib.html#core-stdlib">The Core and the Standard Library</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/features.html#features">Advanced Language Features</a></li></ol></li> -<li class="bodymatter chapter"><a href="/ruby-compendium/book/gems.html#gems">Ruby Gems</a></li><li><ol><li class="bodymatter section"><a href="/ruby-compendium/book/gem-tips.html#h_17">What you can use for...</a></li></ol></li> -<li class="bodymatter chapter"><a href="/ruby-compendium/book/resources.html#resources">Resources</a></li><li><ol><li class="bodymatter section"><a href="/ruby-compendium/book/web-sites.html#websites">Web Sites</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/books.html#books">Books</a></li><li class="bodymatter section"><a href="/ruby-compendium/book/podcasts.html#podcasts">Podcasts and Screencasts</a></li></ol></li> -<li class="backmatter appendix"><a href="/ruby-compendium/book/rubyists.html#h_32">Notable Rubyists</a></li> + </ol> </nav> <nav id="sharing-buttons">
@@ -1,135 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>So you want to learn Ruby... – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>So you want to learn Ruby...</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/notes.html">About this Book</a></nav> - <p>…or maybe not. Maybe you’re <em>thinking</em> about it, but you’re not entirely convinced it’s a good idea. Maybe you have an annoying co-worker who constantly raves about it and made you curious. Whatever the case, this tiny book is about telling you all you need to know about the language before you actually start getting your hands dirty.</p> -<p>There are many different ways to learn new programming languages. Typically, you’d start reading tutorials online, try a few example programs, maybe buy a book and start reading it. That’s what most people do nowadays, and it works, in the end. The downside of this is that you may spend weeks or even months trying to get the hang of the language, spend a lot of time trying to find information about it, ask dumb questions in forums and mailing lists, re-invent the wheel only to find out —months later— that someone already made a library which does exactly the same thing as yours, but in a much better way.</p> -<p>You can learn through mistakes, but there’s no harm in starting with the right foot.</p> -<p>This <em>Ruby Compendium</em> gives you an overview of the Ruby Ecosystem from 10,000ft. It briefly describes the language, its libraries, and what resources you can find online. By the time you finish reading this, you will <em>not</em> know how to write Ruby programs (yet) but you’ll definitely know <em>how to learn</em> this amazing and powerful language and where to look for information and help.</p> -<p>Close your editor now, relax, and enjoy!</p> - <nav class="navigation"> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/notes.html">About this Book</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,140 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Quick Tour – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Quick Tour</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/notes.html">About this Book</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/ten-good-things.html">10 Good Things about Ruby</a></nav> - <p>Ruby is a relatively new programming language. It was created by <a href="/ruby-compendium/book/rubyists.html#matz">Yukihiro Matzumoto</a> (aka “Matz”) in 1995, but it took another ten years to become popular outside Japan, thanks to the <em>Ruby on Rails</em> web framework.</p> -<aside class="box"> -<div class="box-title">Isn't Ruby <em>slow?</em></div> -<p>Being a high-level, interpreted language, Ruby is slower than compiled languages like C or C++ or even other interpreted languages like Perl 5. However, this may vary depending on the implementation.</p> -<ul> - <li>If you are interested in Ruby benchmarks, check out Antonio Cangiano’s <a href="http://programmingzen.com/2010/07/19/the-great-ruby-shootout-july-2010/">Great Ruby Shootout</a>, which also includes data on <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> and <a href="http://ruby.gemstone.com/">MagLev</a> implementations.</li> - <li>If you are interested in benchmarks between Ruby implementations and other languages, the <a href="http://shootout.alioth.debian.org/">Computer Language Benchmark Game</a> is a good place to start.</li> -</ul> - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/notes.html">About this Book</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/ten-good-things.html">10 Good Things about Ruby</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,138 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>About this Book – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>About this Book</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/intro.html">So you want to learn Ruby...</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/language.html">Quick Tour</a></nav> - <p>This book was written by Fabio Cevasco and it is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.</p> -<p>This book was authored using <a href="http://www.h3rald.com/glyph">Glyph</a> and the <span class="caps">PDF</span> version was produced with <a href="http://www.princexml.org">Prince <span class="caps">XML</span></a>.</p> -<p>The Ruby logo is copyright © 2006, Yukihiro Matsumoto, and used under the terms of the <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.</p> -<p>Special thanks to the following individuals who contributed to the project, in some ways:</p> -<ul> - <li><a href="http://blog.dio.jp/">Akira Matsuda</a></li> - <li><a href="http://www.bitcetera.com/">Sven Schwyn</a></li> -</ul> - <nav class="navigation"><a href="/ruby-compendium/book/intro.html">So you want to learn Ruby...</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/language.html">Quick Tour</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,142 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Podcasts and Screencasts – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Podcasts and Screencasts</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/books.html">Books</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/rubyists.html">Notable Rubyists</a></nav> - - <p><strong><a href="http://5by5.tv/rubyshow">The Ruby Show</a></strong> – <em>The</em> Ruby podcast, with <a href="/ruby-compendium/book/rubyists.html#danbenjamin">Dan Benjamin</a> and <a href="/ruby-compendium/book/rubyists.html#jseifer">Jason Seifer</a>.</p> - - <p><strong><a href="http://ruby5.envylabs.com/">Ruby5</a></strong> – Frequently-released short podcasts on what’s new in the Ruby and Rails community. By <a href="/ruby-compendium/book/rubyists.html#greggpollack">Gregg Pollack</a>.</p> - - <p><strong><a href="http://rubyonrails.org/screencasts">Ruby On Rails Screencasts</a></strong> – Free Ruby on Rails screencasts</p> - - <p><strong><a href="http://sdruby.org/podcast">SD Ruby Podcast</a></strong> – Ruby podcasts by the San Diego Ruby community.</p> - - <p><strong><a href="http://www.rubypulse.com/">Ruby Pulse</a></strong> – Free Ruby-related podcasts.</p> - - <p><strong><a href="http://ruby-kickstart.com/">Ruby Kickstart</a></strong> – Hours of free screencast to teach you how to program in Ruby, with loads of free material, quizzes, and goodies.</p> - <nav class="navigation"><a href="/ruby-compendium/book/books.html">Books</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/rubyists.html">Notable Rubyists</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,133 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Resources – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Resources</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/gem-tips.html">What you can use for...</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/web-sites.html">Web Sites</a></nav> - <p>There are a lot of resources out there to help you get started or stay up-to-date with Ruby. The Ruby community is active and supportive, as long as you ask nicely.</p> -<p>The following section contains a small set of hand-picked web sites, books and podcasts which you should definitely have a look at. For even more community resources, check out the <a href="http://www.ruby-lang.org/en/community/">Community Page</a> on the Official Ruby Web Site.</p> - - <nav class="navigation"><a href="/ruby-compendium/book/gem-tips.html">What you can use for...</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/web-sites.html">Web Sites</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,395 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Notable Rubyists – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Notable Rubyists</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/podcasts.html">Podcasts and Screencasts</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | </nav> - - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="chad"></a><strong><a href="http://chadfowler.com/">Chad Fowler</a></strong> – <a href="http://twitter.com/chadfowler">@chadfowler</a> - </span> - <div style="margin-left: 30px;"> - -Pragmatic Programmer, published author, Ruby core committer. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="matz"></a><strong><a href="http://www.rubyist.net/~matz/">Yukihiro Matsumoto</a></strong> – <a href="http://twitter.com/yukihiro_matz">@yukihiro_matz</a> - </span> - <div style="margin-left: 30px;"> - -The creator of the Ruby Programming Language. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="davethomas"></a><strong><a href="http://pragdave.pragprog.com/">Dave Thomas</a></strong> – <a href="http://twitter.com/pragdave">@pragdave</a> - </span> - <div style="margin-left: 30px;"> - -Pragmatic Programmer, published author, Ruby core committer. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="dhh"></a><strong><a href="http://www.loudthinking.com/">David Heinemeier Hansson</a></strong> – <a href="http://twitter.com/dhh">@dhh</a> - </span> - <div style="margin-left: 30px;"> - -Creator of the Ruby on Rails framework. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="_why"></a><strong><a href="http://viewsourcecode.org/why/">why the lucky stiff</a></strong> – <a href="http://twitter.com/_why">@_why</a> - </span> - <div style="margin-left: 30px;"> - -Semi-legendary, prolific Ruby developer, core committer, blogger, book author. Mysteriusly disappeared in August 2009. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="wycatz"></a><strong><a href="http://www.yehudakatz.com/">Yehuda Katz</a></strong> – <a href="http://twitter.com/wycatz">@wycatz</a> - </span> - <div style="margin-left: 30px;"> - -Rails core committer, lead developer of the Merb project. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="jm"></a><strong><a href="http://www.jeremymcanally.com/">Jeremy McAnally</a></strong> – <a href="http://twitter.com/jm">@jm</a> - </span> - <div style="margin-left: 30px;"> - -Published author, blogger. Known for the Little Humble Ruby Book. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="obie"></a><strong><a href="http://obiefernandez.com/">Obie Fernandez</a></strong> – <a href="http://twitter.com/obie">@obie</a> - </span> - <div style="margin-left: 30px;"> - -Published author, editor of Addison-Wesley's Professional Ruby Series, enterpreneur. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="olabini"></a><strong><a href="http://olabini.com/blog">Ola Bini</a></strong> – <a href="http://twitter.com/olabini">@olabini</a> - </span> - <div style="margin-left: 30px;"> - -JRuby core committer, published author, blogger. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="peterc"></a><strong><a href="http://peterc.org/">Peter Cooper</a></strong> – <a href="http://twitter.com/peterc">@peterc</a> - </span> - <div style="margin-left: 30px;"> - -Published author, blogger, enterpreneaur. Creator of Ruby Inside. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="acangiano"></a><strong><a href="http://antoniocangiano.com/">Antonio Cangiano</a></strong> – <a href="http://twitter.com/acangiano">@acangiano</a> - </span> - <div style="margin-left: 30px;"> - -Technical Evangelist, blogger, published author, and Ruby's unofficial benchmarker. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="andyhunt"></a><strong><a href="http://blog.toolshed.com/">Andy Hunt</a></strong> – <a href="http://twitter.com/pragmaticandy">@pragmaticandy</a> - </span> - <div style="margin-left: 30px;"> - -Pragmatic Programmer, published author. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="satish"></a><strong><a href="http://satishtalim.com/">Satish Talim</a></strong> – <a href="http://twitter.com/indianguru">@indianguru</a> - </span> - <div style="margin-left: 30px;"> - -Creator of RubyLearning.com, one of the best resources for learning Ruby. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="dablack"></a><strong><a href="http://dablog.rubypal.com/">David A. Black</a></strong> – <a href="http://twitter.com/david_a_black">@david_a_black</a> - </span> - <div style="margin-left: 30px;"> - -Ruby core committer, published. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="jeg2"></a><strong><a href="http://blog.grayproductions.net/">James Edward Gray II</a></strong> – <a href="http://twitter.com/jeg2">@jeg2</a> - </span> - <div style="margin-left: 30px;"> - -Ruby core committer, conference organizer, published author and blogger. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="luislavena"></a><strong><a href="http://blog.mmediasys.com/">Luis Lavena</a></strong> – <a href="http://twitter.com/luislavena">@luislavena</a> - </span> - <div style="margin-left: 30px;"> - -Ruby core committer, maintainer of RubyInstaller for Windows. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="tenderlove"></a><strong><a href="http://tenderlovemaking.com/">Aaron Petterson</a></strong> – <a href="http://twitter.com/tenderlove">@tenderlove</a> - </span> - <div style="margin-left: 30px;"> - -Ruby core committer, blogger. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="greggpollack"></a><strong><a href="http://envylabs.com/">Gregg Pollack</a></strong> – <a href="http://twitter.com/greggpollack">@greggpollack</a> - </span> - <div style="margin-left: 30px;"> - -Founder of EnvyLabs, creator of many Ruby and Rails-related podcasts, including Ruby5. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="danbenjamin"></a><strong><a href="http://danbenjamin.com/">Dan Benjamin</a></strong> – <a href="http://twitter.com/danbenjamin">@danbenjamin</a> - </span> - <div style="margin-left: 30px;"> - -Founder of 5by5 Studios, creator and host of The Ruby Show podcast. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="jseifer"></a><strong><a href="http://jasonseifer.com/">Jason Seifer</a></strong> – <a href="http://twitter.com/jseifer">@jseifer</a> - </span> - <div style="margin-left: 30px;"> - -Co-host of The Ruby Show podcast. - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="wayneeseguin"></a><strong><a href="http://beginrescueend.com/">Wayne E. Seguin</a></strong> – <a href="http://twitter.com/wayneeseguin">@wayneeseguin</a> - </span> - <div style="margin-left: 30px;"> - -Creator of Ruby Version Manager (RVM). - </div> - -</section> - - <section class="section"> -<span style="padding-top: 20px;display: block;"> - -<a id="steveklabnik"></a><strong><a href="http://www.steveklabnik.com/">Steve Klabnik</a></strong> – <a href="http://twitter.com/steveklabnik">@steveklabnik</a> - </span> - <div style="margin-left: 30px;"> - -Maintainer of Hackety Hack, creator of rstat.us. - </div> - -</section> - <nav class="navigation"><a href="/ruby-compendium/book/podcasts.html">Podcasts and Screencasts</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | </nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,203 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Syntax – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Syntax</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/implementations.html">Versions and Implementations</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/core-stdlib.html">The Core and the Standard Library</a></nav> - <p> -Teaching you how to program in Ruby goes beyond the scope of this book, however, this section will show you at least what Ruby code looks like. If you know another programming language already, some things may already be familiar to you. If you don't, hopefully the following code will not appear too intimidating. -</p> -<div class="CodeRay"> - <div class="code"><pre><span class="no"> 1</span> <span class="c"># This is a comment and will not be executed </span> -<span class="no"> 2</span> <span class="c"># by the Ruby interpreter.</span> -<span class="no"> 3</span> <span class="c">#</span> -<span class="no"> 4</span> <span class="c"># This is not the usual 'Hello World' example, so </span> -<span class="no"> 5</span> <span class="c"># don't worry if you don't understand everything. </span> -<span class="no"> 6</span> <span class="c"># This example is meant to give you a general feeling </span> -<span class="no"> 7</span> <span class="c"># of what it is like to write Ruby programs.</span> -<span class="no"> 8</span> -<span class="no"> 9</span> require <span class="s"><span class="dl">'</span><span class="k">pathname</span><span class="dl">'</span></span> <span class="c"># Here we're requiring an external library</span> -<span class="no"><strong>10</strong></span> <span class="c"># which is part of the Ruby Standard Library.</span> -<span class="no">11</span> -<span class="no">12</span> <span class="r">class</span> <span class="cl">FilePrinter</span> -<span class="no">13</span> -<span class="no">14</span> <span class="c"># Constructor method</span> -<span class="no">15</span> <span class="r">def</span> <span class="fu">initialize</span>(path) -<span class="no">16</span> <span class="c"># This method expects a valid path, however Ruby is dynamically-typed</span> -<span class="no">17</span> <span class="c"># so anything can be passed to this method.</span> -<span class="no">18</span> <span class="c"># To check that the input value is valid, just check if if it behaves</span> -<span class="no">19</span> <span class="c"># like a path. This is called 'duck typing'.</span> -<span class="no"><strong>20</strong></span> raise <span class="co">RuntimeError</span>, <span class="s"><span class="dl">"</span><span class="k">Invalid path: </span><span class="il"><span class="idl">#{</span>path<span class="idl">}</span></span><span class="dl">"</span></span> <span class="r">unless</span> path.respond_to? <span class="sy">:basename</span> -<span class="no">21</span> <span class="iv">@path</span> = path -<span class="no">22</span> <span class="iv">@name</span> = <span class="iv">@path</span>.basename -<span class="no">23</span> <span class="r">end</span> -<span class="no">24</span> -<span class="no">25</span> <span class="r">def</span> <span class="fu">show</span> -<span class="no">26</span> <span class="c"># Ruby objects and expressions can be interpolated in strings</span> -<span class="no">27</span> puts <span class="s"><span class="dl">"</span><span class="k"> </span><span class="dl">#</span><span class="iv">@name</span><span class="k"> -- </span><span class="il"><span class="idl">#{</span><span class="iv">@path</span>.stat.size<span class="idl">}</span></span><span class="k"> bytes</span><span class="dl">"</span></span> -<span class="no">28</span> <span class="r">end</span> -<span class="no">29</span> -<span class="no"><strong>30</strong></span> <span class="r">end</span> -<span class="no">31</span> -<span class="no">32</span> <span class="r">class</span> <span class="cl">DirPrinter</span> < <span class="co">FilePrinter</span> <span class="c"># Definition of a child class</span> -<span class="no">33</span> -<span class="no">34</span> <span class="r">def</span> <span class="fu">initialize</span>(path) -<span class="no">35</span> <span class="r">super</span> <span class="c"># Call to the parent's constructur</span> -<span class="no">36</span> <span class="iv">@children</span> = <span class="iv">@path</span>.children -<span class="no">37</span> <span class="r">end</span> -<span class="no">38</span> -<span class="no">39</span> <span class="r">def</span> <span class="fu">show</span> -<span class="no"><strong>40</strong></span> puts <span class="s"><span class="dl">"</span><span class="k"> </span><span class="dl">#</span><span class="iv">@name</span><span class="k">/ -- </span><span class="il"><span class="idl">#{</span><span class="iv">@children</span>.length<span class="idl">}</span></span><span class="k"> item(s)</span><span class="dl">"</span></span> -<span class="no">41</span> <span class="r">end</span> -<span class="no">42</span> -<span class="no">43</span> <span class="r">end</span> -<span class="no">44</span> -<span class="no">45</span> <span class="c"># No parenthesys are required unless needed!</span> -<span class="no">46</span> pwd = <span class="co">Pathname</span>.new <span class="co">Dir</span>.pwd -<span class="no">47</span> -<span class="no">48</span> puts <span class="s"><span class="dl">"</span><span class="k">Current Directory: </span><span class="il"><span class="idl">#{</span>pwd<span class="idl">}</span></span><span class="dl">"</span></span> -<span class="no">49</span> -<span class="no"><strong>50</strong></span> <span class="c"># Get the children items of the current directory, </span> -<span class="no">51</span> <span class="c"># select only directories, </span> -<span class="no">52</span> <span class="c"># sort them alphabetically,</span> -<span class="no">53</span> <span class="c"># and for each one of them...</span> -<span class="no">54</span> pwd.children.select{|i| i.directory? }.sort.each <span class="r">do</span> |item| -<span class="no">55</span> <span class="c"># Call the show method, printing the </span> -<span class="no">56</span> <span class="c"># directory name and the number of child items</span> -<span class="no">57</span> <span class="co">DirPrinter</span>.new(item).show -<span class="no">58</span> <span class="r">end</span> -<span class="no">59</span> -<span class="no"><strong>60</strong></span> pwd.children.select{|i| !i.directory? }.sort.each <span class="r">do</span> |item| -<span class="no">61</span> <span class="co">FilePrinter</span>.new(item).show -<span class="no">62</span> <span class="r">end</span></pre></div> -</div> - -<aside class="box"> -<div class="box-title">Trying out Ruby...</div> -If your hands are itching to try writing Ruby code, but you don't want to install it just yet, head over to <a href="http://tryruby.org/">Try Ruby!</a>, a unique way to try the language right in your browser. Or, if you already installed Ruby, follow the <a href="http://www.ruby-lang.org/en/documentation/quickstart/">Ruby in 20 minutes</a> tutorial, using Interactive RuBy (IRB). - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/implementations.html">Versions and Implementations</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/core-stdlib.html">The Core and the Standard Library</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,147 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>10 Good Things about Ruby – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>10 Good Things about Ruby</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/language.html">Quick Tour</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/implementations.html">Versions and Implementations</a></nav> - <ol> - <li>It’s free and open source.</li> - <li>It’s high-level, no need to worry about memory allocation or similar.</li> - <li>It’s fully cross platform, or at least most of its <a href="/ruby-compendium/book/implementations.html#implementations">implementations</a> are.</li> - <li>It’s elegant. Really, Ruby <a href="/ruby-compendium/book/syntax.html#syntax">syntax</a> is truly beautiful, with no semicolons or braces, generally.</li> - <li>It has a large <a href="/ruby-compendium/book/core-stdlib.html#core-stdlib">core and Standard Library</a>.</li> - <li>It has over 1300 user-contributed <a href="/ruby-compendium/book/gems.html#gems">libraries</a> for almost anything you can think of.</li> - <li>It is multi-paradigm and offers many advanced language <a href="/ruby-compendium/book/features.html#features">features</a>.</li> - <li>It has a friendly and supportive community and plenty of useful <a href="/ruby-compendium/book/resources.html#resources">resources</a>.</li> - <li>There are loads of <a href="/ruby-compendium/book/web-sites.html#websites">web sites</a> about it and free online learning material.</li> - <li>A lot of <a href="/ruby-compendium/book/books.html#books">books</a> have been written about it.</li> -</ol> -<aside class="box"> -<div class="box-title">If you want to know more...</div> -For general information on Ruby and more introductory material, head over to the <a href="http://www.ruby-lang.org/">Official Ruby Web Site</a>, in particular to the <a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/">Ruby from Other Languages</a> articles, if you are already familiar with C, C++, Java, PHP, Perl, or Python. - -</aside> - <nav class="navigation"><a href="/ruby-compendium/book/language.html">Quick Tour</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/implementations.html">Versions and Implementations</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -1,155 +0,0 @@
-<!DOCTYPE html> -<html lang="en"> - <head> - <title>Web Sites – Ruby Compendium</title> - <link href='http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'> - - - - <meta charset="utf-8" /> - <meta name="author" content="Fabio Cevasco" /> - <meta name="copyright" content="Fabio Cevasco" /> - <meta name="robots" content="all, follow" /> - <meta name="Revisit-After" content="2 Days" /> - <meta name="language" content="en" /> - <meta name="target_country" content="en-us" /> - <meta name="country" content="United States" /> - <meta name="readability-verification" content="XmaVzRjmcFL5Bb2Fu9TZVdDKzhA3apQdxexTB2rK"/> - <meta name="description" content="H3RALD - Fabio Cevasco's Web Site" /> - - <meta name="keywords" content="h3rald, fabio cevasco, ruby-compendium" /> - <link rel="shortcut icon" href="/favicon.png" type="image/png" /> - <meta content="44.388041;9.073248" name="ICBM" /> - - <link rel="stylesheet" type="text/css" href="/styles/html5reset.css" /> - <link rel="stylesheet" type="text/css" href="/styles/style.css" /> - - <script src="http://www.google.com/jsapi?key=ABQIAAAAr6RY1Z6dchG_sX9WDLSy3xRlq2n1sm52B5HDRR5tm6o8XM18FhR56xHNNH6CsX86uN5VoTrglpyOyQ" type="text/javascript"></script> - <script src="/js/sevenup.js" type="text/javascript"></script> - <script src="/js/sevenup_black.js" type="text/javascript"></script> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> - <script src="/js/jquery-timeago.js" type="text/javascript"></script> - <script src="/js/jquery-easing.js" type="text/javascript"></script> - <script src="/js/jquery-fancybox.js" type="text/javascript"></script> - <script src="/js/date.js" type="text/javascript"></script> - <script src="/js/feeds.js" type="text/javascript"></script> - <script src="/js/hyphenator.js" type="text/javascript"></script> - <script src="/js/init.js" type="text/javascript"></script> - <script src="/js/search.js" type="text/javascript"></script> - </head> - <body> - <section id="container"> - - <header class="page"> - <nav class="home-link"> - <a href="/"> - <img src="/images/h3rald_small.png" alt="H3RALD" class="default"/> - <![if !IE]> - <img src="/images/h3rald_hover_small.png" alt="H3RALD" class="hover"/> - <![endif]> - </a> - </nav> - - <nav class="section"> - /<a href="/ruby-compendium/" rel="ruby-compendium">RUBY-COMPENDIUM</a> - </nav> - -</header> - <article class="page glyph-book"> - <header> - <hgroup> - <h1>Web Sites</h1> - <h2>Ruby Compendium</h2> - </hgroup> - </header> - <section id="body-text" class="hyphenate glyph-book"> - - <nav class="navigation"><a href="/ruby-compendium/book/resources.html">Resources</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/books.html">Books</a></nav> - - <p><strong><a href="http://www.ruby-lang.org/">Ruby-Lang.org</a></strong> – The official Ruby web site, completely maintained by members of the Ruby community and available in several languages.</p> - - <p><strong><a href="https://rubygems.org/">RubyGems.org</a></strong> – The home of all Ruby gems.</p> - - <p><strong><a href="http://rubykoans.com/">Ruby Koans</a></strong> – Learn Ruby (and testing) through Koans. Probably the coolest way to learn Ruby right now.</p> - - <p><strong><a href="http://rubylearning.com/">Ruby Learning</a></strong> – Ruby guru <a href="/ruby-compendium/book/rubyists.html#satish">Satish Talim</a>’s web site about learning the Ruby language. It contains tutorials, study notes, and even <a href="http://rubylearning.org/class/">online classes</a>.</p> - - <p><strong><a href="http://rubycorner.com/">Ruby Corner</a></strong> – The most comprehensive Ruby blog aggregator.</p> - - <p><strong><a href="http://www.rubyinside.com/">Ruby Inside</a></strong> – <em>The</em> Ruby blog, by <a href="/ruby-compendium/book/rubyists.html#peterc">Peter Cooper</a>.</p> - - <p><strong><a href="http://www.ruby-forum.com/">Ruby Forum</a></strong> – A mirror of the most important Ruby-related mailing lists.</p> - - <p><strong><a href="http://rubydoc.info/">RubyDoc.info</a></strong> – Your one-stop resource for reference documentation. Everything from Ruby core, Standard Library, gems, and even Github-hosted Ruby projects.</p> - - <p><strong><a href="http://www.rubyflow.com/">RubyFlow</a></strong> – Community-powered link blog. Created by <a href="/ruby-compendium/book/rubyists.html#peterc">Peter Cooper</a></p> - - <p><strong><a href="http://ruby-toolbox.com/">The Ruby Toolbox</a></strong> – A collection of ruby resources and libraries, organized by category and popularity.</p> - - <p><strong><a href="http://rubycommitters.org/">RubyCommitters.org</a></strong> – List of all the Ruby core committers. Created by <a href="/ruby-compendium/book/rubyists.html#tenderlove">Aaron Petterson</a>.</p> - - <p><strong><a href="http://rubylang.info/">RubyLang.info</a></strong> – <em>“RubyLang.info is a community driven web site, dedicated to helping both new and experienced Ruby developers.”</em></p> - - <nav class="navigation"><a href="/ruby-compendium/book/resources.html">Resources</a> | <a href="/ruby-compendium/book/index.html">Contents</a> | <a href="/ruby-compendium/book/books.html">Books</a></nav> - <nav id="sharing-buttons"> -<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="h3rald">Tweet</a> -<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> -<g:plusone size="medium"></g:plusone> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</nav> - </section> - </article> - - - <footer> - <section class="ads"> - <script type="text/javascript"><!-- - google_ad_client = "pub-2871497824158668"; - /* 728x90, created 9/10/10 */ - google_ad_slot = "3963343166"; - google_ad_width = 728; - google_ad_height = 90; - //--> - </script> - <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> - </script> - </section> - <section> - <nav> - <a href="/about/">ABOUT</a>|<a href="/contact/">CONTACT</a> - </nav> - <p>H3RALD Web Site v8.1.2 © 2004 — 2011 <em>Fabio Cevasco</em></p> - </section> - </footer> - </section><!-- #container end --> - - - <!-- Start Google Analytics --> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-18587377-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - <!-- End Google Analytics --> - <!-- Start of StatCounter Code --> - <script type="text/javascript"> - var sc_project=6193656; - var sc_invisible=1; - var sc_security="57f7ee2a"; - </script> - <script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script> - <!-- End of StatCounter Code --> - </body> -</html>
@@ -17,7 +17,7 @@ }
/* Logos */ -.logo { font-weight: normal; font-family: "Cardo", "Georgia", serif; margin-bottom: 2px;} +.logo { font-weight: normal; font-family: "Cardo", "Times New Roman", serif; margin-bottom: 2px;} .hrald { display: block; margin-top: 10px; font-size: 50px; } .h, .rald { font-size: 50px; } .three { display: block; margin-top: -15px; margin-left: -105px; font-size: 60px; }@@ -26,15 +26,6 @@ h1 .logo { display: block; margin-top: 20px; color: #333333; }
h1 .hrald { display: block; margin-top: 10px; font-size: 75px; } h1 .h, h1 .rald { font-size: 75px; } h1 .three { display: block; margin-top: -12px; margin-left: -155px; font-size: 90px; } - - -h1 .h_line { border-bottom: 2px solid #333333; margin-top: 3px; margin-left: -4px; width: 52px; display: block;} -h1 .rald_line {border-bottom: 2px solid #333333; margin-top: -2px; margin-left: 87px; width: 209px; display: block;} - -h1 .established { display: block; font-weight: bold; margin: auto; text-align: center; margin-top: -4px; font-size: 85%; } -h1 .established .d { vertical-align: super; font-size: 72%; text-decoration: underline; } -h1 .established .year { font-size: 110%; } -h1 .established:before, h1 .established:after { content: "~"; vertical-align: middle; font-size: 120%; } /* Navigation */@@ -55,17 +46,17 @@ padding-top: 10px;
margin: auto; width: 940px; text-align: center; - height: 60px; + height: 50px; &.home { nav.left { width: 270px; - height: 60px; - margin-top: -6px; + height: 50px; + margin-top: -10px; } nav.right { width: 270px; - height: 60px; - margin-top: -6px; + height: 50px; + margin-top: -10px; } h1 { float: left;
@@ -18,8 +18,6 @@ <h1>
<span class="logo"> <span class="hrald"><span class="h">H</span> <span class="rald">RALD</span></span> <span class="three">3</span> - <span class="h_line"></span><span class="rald_line"></span> - <span class="established"><span class="est">EST</span><span class="d">D</span> <span class="year">2004</span></span> </a> </span> </h1>