hn 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/.rspec +1 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +33 -0
- data/Rakefile +10 -0
- data/hn.gemspec +25 -0
- data/lib/hn.rb +5 -0
- data/lib/hn/common.rb +3 -0
- data/lib/hn/engine.rb +13 -0
- data/lib/hn/models/entry.rb +10 -0
- data/lib/hn/parsers/entry_parser.rb +36 -0
- data/lib/hn/version.rb +3 -0
- data/spec/fixtures/home.html +24 -0
- data/spec/fixtures/newest.html +24 -0
- data/spec/hn/engine_spec.rb +17 -0
- data/spec/hn/parsers/entry_parser_spec.rb +48 -0
- data/spec/spec_helper.rb +11 -0
- metadata +129 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Forrest Ye
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Hn
|
2
|
+
|
3
|
+
A tiny gem to fetch Hacker News entries
|
4
|
+
|
5
|
+

|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'hn'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
require 'hn'
|
20
|
+
|
21
|
+
# return 30 homepage entries
|
22
|
+
HackerNews::Engine.homepage
|
23
|
+
|
24
|
+
# return 30 newest entries
|
25
|
+
HackerNews::Engine.newest
|
26
|
+
|
27
|
+
## Contributing
|
28
|
+
|
29
|
+
1. Fork it
|
30
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
31
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
32
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
33
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/hn.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/hn/version', __FILE__)
|
3
|
+
require File.expand_path('../lib/hn/common', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.authors = ["Forrest Ye"]
|
7
|
+
gem.email = ["afu@forresty.com"]
|
8
|
+
gem.description = HackerNews::DESCRIPTION
|
9
|
+
gem.summary = HackerNews::DESCRIPTION
|
10
|
+
gem.homepage = "https://github.com/forresty/hn"
|
11
|
+
|
12
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
13
|
+
gem.files = `git ls-files`.split("\n")
|
14
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
+
gem.name = "hn"
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.version = HackerNews::VERSION
|
18
|
+
|
19
|
+
gem.add_development_dependency 'rspec'
|
20
|
+
gem.add_development_dependency 'rake'
|
21
|
+
gem.add_development_dependency 'simplecov'
|
22
|
+
gem.add_development_dependency 'chronic'
|
23
|
+
|
24
|
+
gem.add_runtime_dependency 'nokogiri'
|
25
|
+
end
|
data/lib/hn.rb
ADDED
data/lib/hn/common.rb
ADDED
data/lib/hn/engine.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
require "open-uri"
|
3
|
+
|
4
|
+
module HackerNews
|
5
|
+
class EntryParser
|
6
|
+
def homepage
|
7
|
+
parse_entries 'http://news.ycombinator.com/'
|
8
|
+
end
|
9
|
+
|
10
|
+
def newest
|
11
|
+
parse_entries 'http://news.ycombinator.com/newest'
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def parse_entries(url)
|
17
|
+
# doc = Nokogiri::HTML(open('spec/fixtures/home.html'))
|
18
|
+
doc = Nokogiri::HTML(open(url))
|
19
|
+
tbody = doc.at_css('td.title').parent.parent
|
20
|
+
trs = tbody.css('tr').to_a
|
21
|
+
|
22
|
+
30.times.map do |i|
|
23
|
+
Entry.new do |entry|
|
24
|
+
entry.title = trs[i*3].at_css('td.title a').text
|
25
|
+
entry.link = trs[i*3].at_css('td.title a')['href']
|
26
|
+
entry.site = trs[i*3].at_css('td.title span.comhead').text.match(/\((.+)\)/)[1] rescue nil
|
27
|
+
entry.points = trs[i*3+1].at_css('td.subtext span').text.to_i rescue 0
|
28
|
+
entry.user = trs[i*3+1].at_css('td.subtext a').text
|
29
|
+
entry.time_string = trs[i*3+1].at_css('td.subtext a').next.text.sub('|', '').strip
|
30
|
+
entry.num_comments = trs[i*3+1].css('td.subtext a')[1].text.to_i
|
31
|
+
entry.id = trs[i*3+1].css('td.subtext a')[1]['href'].match(/\d+/)[0].to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/hn/version.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<html><head><link rel="stylesheet" type="text/css" href="http://ycombinator.com/news.css">
|
2
|
+
<link rel="shortcut icon" href="http://ycombinator.com/favicon.ico">
|
3
|
+
<script>
|
4
|
+
function byId(id) {
|
5
|
+
return document.getElementById(id);
|
6
|
+
}
|
7
|
+
|
8
|
+
function vote(node) {
|
9
|
+
var v = node.id.split(/_/); // {'up', '123'}
|
10
|
+
var item = v[1];
|
11
|
+
|
12
|
+
// hide arrows
|
13
|
+
byId('up_' + item).style.visibility = 'hidden';
|
14
|
+
byId('down_' + item).style.visibility = 'hidden';
|
15
|
+
|
16
|
+
// ping server
|
17
|
+
var ping = new Image();
|
18
|
+
ping.src = node.href;
|
19
|
+
|
20
|
+
return false; // cancel browser nav
|
21
|
+
} </script><title>Hacker News</title></head><body><center><table border=0 cellpadding=0 cellspacing=0 width="85%" bgcolor=#f6f6ef><tr><td bgcolor=#ff6600><table border=0 cellpadding=0 cellspacing=0 width="100%" style="padding:2px"><tr><td style="width:18px;padding-right:4px"><a href="http://ycombinator.com"><img src="http://ycombinator.com/images/y18.gif" width=18 height=18 style="border:1px #ffffff solid;"></img></a></td><td style="line-height:12pt; height:10px;"><span class="pagetop"><b><a href="news">Hacker News</a></b><img src="http://ycombinator.com/images/s.gif" height=1 width=10><a href="newest">new</a> | <a href="newcomments">comments</a> | <a href="ask">ask</a> | <a href="jobs">jobs</a> | <a href="submit">submit</a></span></td><td style="text-align:right;padding-right:4px;"><span class="pagetop"><a href="newslogin?whence=%6e%65%77%73">login</a></span></td></tr></table></td></tr><tr style="height:10px"></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td align=right valign=top class="title">1.</td><td><center><a id=up_4030746 href="vote?for=4030746&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030746></span></center></td><td class="title"><a href="http://www.cl.cam.ac.uk/~sps32/sec_news.html#Assurance">Backdoor found in a China-made US military chip </a><span class="comhead"> (cam.ac.uk) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030746>392 points</span> by <a href="user?id=turnersr">turnersr</a> 10 hours ago | <a href="item?id=4030746">109 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">2.</td><td><center><a id=up_4031595 href="vote?for=4031595&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031595></span></center></td><td class="title"><a href="http://patdryburgh.com/blog/buying-adobe-photoshop-cs6/">Buying Adobe Photoshop CS6</a><span class="comhead"> (patdryburgh.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031595>63 points</span> by <a href="user?id=petercooper">petercooper</a> 4 hours ago | <a href="item?id=4031595">32 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">3.</td><td><center><a id=up_4032030 href="vote?for=4032030&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032030></span></center></td><td class="title"><a href="http://www.newyorker.com/reporting/2012/06/04/120604fa_fact_gibson?currentPage=all">William Gibson: Seeing the Future in Science Fiction</a><span class="comhead"> (newyorker.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032030>9 points</span> by <a href="user?id=jseliger">jseliger</a> 51 minutes ago | <a href="item?id=4032030">1 comment</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">4.</td><td><center><a id=up_4031157 href="vote?for=4031157&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031157></span></center></td><td class="title"><a href="http://www.mobileinc.co.uk/2012/05/the-art-of-the-ios-icon/">The Art Of The iOS Icon</a><span class="comhead"> (mobileinc.co.uk) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031157>126 points</span> by <a href="user?id=muratmutlu">muratmutlu</a> 7 hours ago | <a href="item?id=4031157">35 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">5.</td><td><center><a id=up_4031682 href="vote?for=4031682&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031682></span></center></td><td class="title"><a href="http://www.forbes.com/sites/haydnshaughnessy/2012/05/26/why-crisis-in-spain-this-week-should-have-us-more-worried-than-greece/">Why Crisis in Spain This Week Became More Important Than Greece</a><span class="comhead"> (forbes.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031682>53 points</span> by <a href="user?id=Flemlord">Flemlord</a> 3 hours ago | <a href="item?id=4031682">17 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">6.</td><td><center><a id=up_4031812 href="vote?for=4031812&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031812></span></center></td><td class="title"><a href="http://jasonlefkowitz.net/2012/05/windows-live-is-dead/">Windows Live is dead</a><span class="comhead"> (jasonlefkowitz.net) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031812>20 points</span> by <a href="user?id=smacktoward">smacktoward</a> 2 hours ago | <a href="item?id=4031812">6 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">7.</td><td><center><a id=up_4031639 href="vote?for=4031639&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031639></span></center></td><td class="title"><a href="http://www.forbes.com/sites/philjohnson/2012/05/10/the-man-who-took-on-amazon-and-saved-a-bookstore/">The Man Who Took on Amazon and Saved a Bookstore</a><span class="comhead"> (forbes.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031639>30 points</span> by <a href="user?id=wyclif">wyclif</a> 4 hours ago | <a href="item?id=4031639">9 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">8.</td><td><center><a id=up_4031739 href="vote?for=4031739&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031739></span></center></td><td class="title"><a href="http://www.bostonglobe.com/opinion/2012/05/26/boston-bar-buzz-kill/KbPYBLYiTjLsykcpPi0mRJ/story.html">Boston Bar Buzz-Kill</a><span class="comhead"> (bostonglobe.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031739>22 points</span> by <a href="user?id=ryanwjackson">ryanwjackson</a> 3 hours ago | <a href="item?id=4031739">4 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">9.</td><td><center><a id=up_4030149 href="vote?for=4030149&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030149></span></center></td><td class="title"><a href="http://musicthing.blogspot.co.uk/2005/05/tiny-music-makers-pt-3-thx-sound.html">The THX Sound</a><span class="comhead"> (blogspot.co.uk) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030149>251 points</span> by <a href="user?id=harel">harel</a> 15 hours ago | <a href="item?id=4030149">34 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">10.</td><td><center><a id=up_4031241 href="vote?for=4031241&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031241></span></center></td><td class="title"><a href="https://www.eff.org/deeplinks/2012/05/megaupload-user-asks-court-files-back-again">Megaupload User Asks Court for Files Back. Again.</a><span class="comhead"> (eff.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031241>57 points</span> by <a href="user?id=bond">bond</a> 7 hours ago | <a href="item?id=4031241">12 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">11.</td><td><center><a id=up_4030884 href="vote?for=4030884&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030884></span></center></td><td class="title"><a href="http://www.etherealbits.com/?p=68">The Software Developer’s Guide to Fitness & Morning Productivity</a><span class="comhead"> (etherealbits.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030884>84 points</span> by <a href="user?id=tysont">tysont</a> 9 hours ago | <a href="item?id=4030884">32 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">12.</td><td><center><a id=up_4031225 href="vote?for=4031225&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031225></span></center></td><td class="title"><a href="http://www.nytimes.com/2012/05/28/technology/for-tech-startups-new-york-has-increasing-allure.html?pagewanted=all">For Tech Start-Ups, New York Has Increasing Allure</a><span class="comhead"> (nytimes.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031225>51 points</span> by <a href="user?id=mindblink">mindblink</a> 7 hours ago | <a href="item?id=4031225">19 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">13.</td><td><center><a id=up_4030812 href="vote?for=4030812&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030812></span></center></td><td class="title"><a href="http://web.stonehill.edu/compsci//History_Math/math-read.htm">How to Read Mathematics</a><span class="comhead"> (stonehill.edu) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030812>96 points</span> by <a href="user?id=espeed">espeed</a> 10 hours ago | <a href="item?id=4030812">17 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">14.</td><td><center><a id=up_4031912 href="vote?for=4031912&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031912></span></center></td><td class="title"><a href="http://www.washingtonpost.com/world/the_americas/center-of-gravity-in-oil-world-shifts-to-americas/2012/05/25/gJQAjeuVqU_story.html">Center of gravity in oil world shifts to Americas </a><span class="comhead"> (washingtonpost.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031912>12 points</span> by <a href="user?id=cwan">cwan</a> 1 hour ago | <a href="item?id=4031912">4 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">15.</td><td><center><a id=up_4030816 href="vote?for=4030816&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030816></span></center></td><td class="title"><a href="http://www.websocket.org/quantum.html">How WebSockets work vs polling/long polling/streaming</a><span class="comhead"> (websocket.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030816>75 points</span> by <a href="user?id=SkyMarshal">SkyMarshal</a> 10 hours ago | <a href="item?id=4030816">27 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">16.</td><td><center><a id=up_4031608 href="vote?for=4031608&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031608></span></center></td><td class="title"><a href="http://lists.fedoraproject.org/pipermail/devel-announce/2012-May/000933.html">Fedora 17 Final declared Gold</a><span class="comhead"> (fedoraproject.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031608>21 points</span> by <a href="user?id=mindcrime">mindcrime</a> 4 hours ago | <a href="item?id=4031608">4 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">17.</td><td><center><a id=up_4031866 href="vote?for=4031866&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031866></span></center></td><td class="title"><a href="http://chat.techcentroid.com/" rel="nofollow">Open Source Chat Server in Node.js with dynamic rooms</a><span class="comhead"> (techcentroid.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031866>6 points</span> by <a href="user?id=mlakkadshaw">mlakkadshaw</a> 1 hour ago | <a href="item?id=4031866">6 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">18.</td><td><center><a id=up_4031007 href="vote?for=4031007&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031007></span></center></td><td class="title"><a href="http://mewo2.github.com/nerdery/2012/05/27/eurovision-statistics-after-the-final/">Eurovision statistics analysis, and an apology to the people of Malta</a><span class="comhead"> (github.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031007>38 points</span> by <a href="user?id=mewo2">mewo2</a> 8 hours ago | <a href="item?id=4031007">8 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">19.</td><td><center><a id=up_4031004 href="vote?for=4031004&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031004></span></center></td><td class="title"><a href="http://blog.gaborcselle.com/2012/05/eight-emotions-every-user-enjoys.html">Emotions Every User Enjoys</a><span class="comhead"> (gaborcselle.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031004>35 points</span> by <a href="user?id=admp">admp</a> 8 hours ago | <a href="item?id=4031004">2 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">20.</td><td><center><a id=up_4031699 href="vote?for=4031699&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031699></span></center></td><td class="title"><a href="https://github.com/aseemk/json5">Show HN: JSON5 — modern JSON</a><span class="comhead"> (github.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031699>36 points</span> by <a href="user?id=aseemk">aseemk</a> 3 hours ago | <a href="item?id=4031699">55 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">21.</td><td><center><a id=up_4030665 href="vote?for=4030665&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030665></span></center></td><td class="title"><a href="http://techcrunch.com/2012/05/27/hey-kids-get-off-my-lawn-the-once-and-future-visual-programming-environment/">The Once and Future Visual Programming Environment</a><span class="comhead"> (techcrunch.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030665>54 points</span> by <a href="user?id=NelsonMinar">NelsonMinar</a> 11 hours ago | <a href="item?id=4030665">32 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">22.</td><td><center><a id=up_4031129 href="vote?for=4031129&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031129></span></center></td><td class="title"><a href="http://nicholasjacob.com/Javascript/2012/05/27/oauth--websockets-avoiding-the-redirect/">OAuth & One-Page Apps: Avoiding the Redirect</a><span class="comhead"> (nicholasjacob.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031129>27 points</span> by <a href="user?id=chucknibbleston">chucknibbleston</a> 8 hours ago | <a href="item?id=4031129">8 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">23.</td><td><center><a id=up_4031163 href="vote?for=4031163&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031163></span></center></td><td class="title"><a href="http://www.neowin.net/news/rim-rumored-to-lay-off-2000-more-workers-soon">RIM rumored to lay off 2,000 more workers soon</a><span class="comhead"> (neowin.net) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031163>24 points</span> by <a href="user?id=xtiy">xtiy</a> 7 hours ago | <a href="item?id=4031163">20 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">24.</td><td><center><a id=up_4030035 href="vote?for=4030035&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030035></span></center></td><td class="title"><a href="http://blog.hashtagify.me/2012/05/27/save-time-on-hacker-neww-mark-all-read/">Save Time On Hacker News: Mark All Read</a><span class="comhead"> (hashtagify.me) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030035>90 points</span> by <a href="user?id=danmaz74">danmaz74</a> 16 hours ago | <a href="item?id=4030035">56 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">25.</td><td><center><a id=up_4030689 href="vote?for=4030689&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030689></span></center></td><td class="title"><a href="http://visualwebsiteoptimizer.com/split-testing-blog/you-should-not-follow-me-on-twitter/">You should not follow me on Twitter</a><span class="comhead"> (visualwebsiteoptimizer.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030689>53 points</span> by <a href="user?id=paulgb">paulgb</a> 11 hours ago | <a href="item?id=4030689">18 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">26.</td><td><center><a id=up_4030033 href="vote?for=4030033&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030033></span></center></td><td class="title"><a href="http://blog.jerodsanto.net/2012/05/back-that-gmail-up/">Back That Gmail Up</a><span class="comhead"> (jerodsanto.net) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030033>81 points</span> by <a href="user?id=sant0sk1">sant0sk1</a> 16 hours ago | <a href="item?id=4030033">53 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">27.</td><td><center><a id=up_4030868 href="vote?for=4030868&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030868></span></center></td><td class="title"><a href="item?id=4030868">Remind HN: If you want feedback, add an email to your profile</a></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030868>85 points</span> by <a href="user?id=ekpyrotic">ekpyrotic</a> 10 hours ago | <a href="item?id=4030868">27 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">28.</td><td><center><a id=up_4030451 href="vote?for=4030451&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030451></span></center></td><td class="title"><a href="http://www.twilio.com/company/nine-values">Twilio's Nine Values</a><span class="comhead"> (twilio.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030451>62 points</span> by <a href="user?id=sunils34">sunils34</a> 13 hours ago | <a href="item?id=4030451">15 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">29.</td><td><center><a id=up_4030061 href="vote?for=4030061&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4030061></span></center></td><td class="title"><a href="http://blogs.adobe.com/digitalmarketing/personalization/conversion-optimization/understand-the-math-behind-it-all-bayesian-statistics/">Understand the Math Behind it All: Bayesian Statistics</a><span class="comhead"> (adobe.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4030061>80 points</span> by <a href="user?id=romil">romil</a> 16 hours ago | <a href="item?id=4030061">40 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">30.</td><td><center><a id=up_4029632 href="vote?for=4029632&dir=up&whence=%6e%65%77%73"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4029632></span></center></td><td class="title"><a href="http://danshipper.com/stop-taking-yourself-so-seriously">Stop Taking Yourself So Seriously</a><span class="comhead"> (danshipper.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4029632>148 points</span> by <a href="user?id=Peteris">Peteris</a> 21 hours ago | <a href="item?id=4029632">58 comments</a></td></tr><tr style="height:5px"></tr><tr style="height:10px"></tr><tr><td colspan=2></td><td class="title"><a href="news2">More</a></td></tr></table></td></tr><tr><td><img src="http://ycombinator.com/images/s.gif" height=10 width=0><table width="100%" cellspacing=0 cellpadding=1><tr><td bgcolor=#ff6600></td></tr></table><br>
|
22
|
+
<center><span class="yclinks"><a href="lists">Lists</a> | <a href="rss">RSS</a> | <a href="http://ycombinator.com/bookmarklet.html">Bookmarklet</a> | <a href="http://ycombinator.com/newsguidelines.html">Guidelines</a> | <a href="http://ycombinator.com/newsfaq.html">FAQ</a> | <a href="http://ycombinator.com/newsnews.html">News News</a> | <a href="item?id=363">Feature Requests</a> | <a href="http://ycombinator.com">Y Combinator</a> | <a href="http://ycombinator.com/apply.html">Apply</a> | <a href="http://ycombinator.com/lib.html">Library</a></span><br><br>
|
23
|
+
<form method=get action="http://www.hnsearch.com/search#request/all">Search: <input type=text name="q" value="" size=17></form><br>
|
24
|
+
</center></td></tr></table></center></body></html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<html><head><link rel="stylesheet" type="text/css" href="http://ycombinator.com/news.css">
|
2
|
+
<link rel="shortcut icon" href="http://ycombinator.com/favicon.ico">
|
3
|
+
<script>
|
4
|
+
function byId(id) {
|
5
|
+
return document.getElementById(id);
|
6
|
+
}
|
7
|
+
|
8
|
+
function vote(node) {
|
9
|
+
var v = node.id.split(/_/); // {'up', '123'}
|
10
|
+
var item = v[1];
|
11
|
+
|
12
|
+
// hide arrows
|
13
|
+
byId('up_' + item).style.visibility = 'hidden';
|
14
|
+
byId('down_' + item).style.visibility = 'hidden';
|
15
|
+
|
16
|
+
// ping server
|
17
|
+
var ping = new Image();
|
18
|
+
ping.src = node.href;
|
19
|
+
|
20
|
+
return false; // cancel browser nav
|
21
|
+
} </script><title>New Links | Hacker News</title></head><body><center><table border=0 cellpadding=0 cellspacing=0 width="85%" bgcolor=#f6f6ef><tr><td bgcolor=#ff6600><table border=0 cellpadding=0 cellspacing=0 width="100%" style="padding:2px"><tr><td style="width:18px;padding-right:4px"><a href="http://ycombinator.com"><img src="http://ycombinator.com/images/y18.gif" width=18 height=18 style="border:1px #ffffff solid;"></img></a></td><td style="line-height:12pt; height:10px;"><span class="pagetop"><b><a href="news">Hacker News</a></b><img src="http://ycombinator.com/images/s.gif" height=1 width=10><span class="topsel"><a href="newest">new</a></span> | <a href="newcomments">comments</a> | <a href="ask">ask</a> | <a href="jobs">jobs</a> | <a href="submit">submit</a></span></td><td style="text-align:right;padding-right:4px;"><span class="pagetop"><a href="newslogin?whence=%6e%65%77%65%73%74">login</a></span></td></tr></table></td></tr><tr style="height:10px"></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td align=right valign=top class="title">1.</td><td><center><a id=up_4032333 href="vote?for=4032333&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032333></span></center></td><td class="title"><a href="http://blog.silktide.com/2012/05/dear-ico-this-is-why-web-developers-hate-you/" rel="nofollow">Dear ICO: This Is Why Web Developers Hate You</a><span class="comhead"> (silktide.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032333>1 point</span> by <a href="user?id=oliveremberton">oliveremberton</a> 10 minutes ago | <a href="item?id=4032333">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">2.</td><td><center><a id=up_4032329 href="vote?for=4032329&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032329></span></center></td><td class="title"><a href="http://www.nytimes.com/2012/05/27/business/how-boaz-weinstein-and-hedge-funds-outsmarted-jpmorgan.html?pagewanted=all" rel="nofollow">How Boaz Weinstein and hedge funds outsmarted JPMorgan</a><span class="comhead"> (nytimes.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032329>1 point</span> by <a href="user?id=asto">asto</a> 11 minutes ago | <a href="item?id=4032329">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">3.</td><td><center><a id=up_4032324 href="vote?for=4032324&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032324></span></center></td><td class="title"><a href="https://www.youtube.com/watch?v=e7D3_eGaO5k&feature=related" rel="nofollow">Dr. Michio Kaku Says America Has A Secret Super Weapon (H1B)</a><span class="comhead"> (youtube.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032324>1 point</span> by <a href="user?id=DiabloD3">DiabloD3</a> 13 minutes ago | <a href="item?id=4032324">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">4.</td><td><center><a id=up_4032323 href="vote?for=4032323&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032323></span></center></td><td class="title"><a href="https://www.zipcar.com/members/choose-rate-plan" rel="nofollow">ZipCar's "extra value" Membership Option</a><span class="comhead"> (zipcar.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032323>1 point</span> by <a href="user?id=derwiki">derwiki</a> 13 minutes ago | <a href="item?id=4032323">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">5.</td><td><center><a id=up_4032312 href="vote?for=4032312&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032312></span></center></td><td class="title"><a href="item?id=4032312">Ask HN: Legality of price comparison scraping without permission</a></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032312>1 point</span> by <a href="user?id=aik48">aik48</a> 18 minutes ago | <a href="item?id=4032312">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">6.</td><td><center><a id=up_4032296 href="vote?for=4032296&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032296></span></center></td><td class="title"><a href="http://www.mondaynote.com/2012/05/27/facebook-the-collective-hallucination/" rel="nofollow">Facebook: The Collective Hallucination</a><span class="comhead"> (mondaynote.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032296>1 point</span> by <a href="user?id=mmayernick">mmayernick</a> 27 minutes ago | <a href="item?id=4032296">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">7.</td><td><center><a id=up_4032282 href="vote?for=4032282&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032282></span></center></td><td class="title"><a href="http://www.seomoz.org/blog/is-seo-the-answer-for-startup-marketing" rel="nofollow">Is SEO the Right Answer for Startups? Not Necessarily</a><span class="comhead"> (seomoz.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032282>1 point</span> by <a href="user?id=randfish">randfish</a> 34 minutes ago | <a href="item?id=4032282">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">8.</td><td><center><a id=up_4032251 href="vote?for=4032251&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032251></span></center></td><td class="title"><a href="http://www.sacvuittonfrance.com/" rel="nofollow">Louis vuitton</a><span class="comhead"> (sacvuittonfrance.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032251>1 point</span> by <a href="user?id=ibrkpf1614">ibrkpf1614</a> 44 minutes ago | <a href="item?id=4032251">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">9.</td><td><center><a id=up_4032248 href="vote?for=4032248&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032248></span></center></td><td class="title"><a href="http://klickverbot.at/blog/2012/05/purity-in-d/" rel="nofollow">Purity in D</a><span class="comhead"> (klickverbot.at) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032248>1 point</span> by <a href="user?id=klickverbot">klickverbot</a> 44 minutes ago | <a href="item?id=4032248">1 comment</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">10.</td><td><center><a id=up_4032242 href="vote?for=4032242&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032242></span></center></td><td class="title"><a href="http://owndj.com/" rel="nofollow">Show HN : A much better experience to build youtube playlist</a><span class="comhead"> (owndj.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032242>1 point</span> by <a href="user?id=serbrech">serbrech</a> 47 minutes ago | <a href="item?id=4032242">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">11.</td><td><center><a id=up_4032235 href="vote?for=4032235&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032235></span></center></td><td class="title"><a href="http://scrapbook.channel4.com" rel="nofollow">Channel4 - new scrapbook app</a><span class="comhead"> (channel4.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032235>1 point</span> by <a href="user?id=suchitpuri">suchitpuri</a> 52 minutes ago | <a href="item?id=4032235">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">12.</td><td><center><a id=up_4032219 href="vote?for=4032219&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032219></span></center></td><td class="title"><a href="http://blogs.wsj.com/tech-europe/2012/05/25/europe-caught-with-its-hand-in-the-cookie-jar/?mod=WSJBlog" rel="nofollow">Europe Caught in the Cookie Jar</a><span class="comhead"> (wsj.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032219>1 point</span> by <a href="user?id=voodoochilo">voodoochilo</a> 1 hour ago | <a href="item?id=4032219">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">13.</td><td><center><a id=up_4032213 href="vote?for=4032213&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032213></span></center></td><td class="title"><a href="http://cnnr.me/b/2012/05/your-first-node-dot-js-module/">Your first Node.js module</a><span class="comhead"> (cnnr.me) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032213>18 points</span> by <a href="user?id=c_t_montgomery">c_t_montgomery</a> 1 hour ago | <a href="item?id=4032213">3 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">14.</td><td><center><a id=up_4032197 href="vote?for=4032197&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032197></span></center></td><td class="title"><a href="http://www.thedailybeast.com/newsweek/2012/05/20/brian-greene-welcome-to-the-multiverse.html" rel="nofollow">Welcome to the Multiverse</a><span class="comhead"> (thedailybeast.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032197>1 point</span> by <a href="user?id=gruseom">gruseom</a> 1 hour ago | <a href="item?id=4032197">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">15.</td><td><center><a id=up_4032184 href="vote?for=4032184&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032184></span></center></td><td class="title"><a href="http://www.youtube.com/watch?v=jIWOR2bGC7c&feature=list_related&playnext=1&list=SPCDE38BA0F8AA9249" rel="nofollow">How Homomorphic Encryption Works</a><span class="comhead"> (youtube.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032184>3 points</span> by <a href="user?id=haliax">haliax</a> 1 hour ago | <a href="item?id=4032184">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">16.</td><td><center><a id=up_4032153 href="vote?for=4032153&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032153></span></center></td><td class="title"><a href="http://programmers.stackexchange.com/questions/149970/i-can-write-code-but-cant-design-well-any-suggestions" rel="nofollow">I can write code...but can't design well. Any suggestions? - Programmers</a><span class="comhead"> (stackexchange.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032153>1 point</span> by <a href="user?id=girishmony">girishmony</a> 1 hour ago | <a href="item?id=4032153">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">17.</td><td><center><a id=up_4032144 href="vote?for=4032144&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032144></span></center></td><td class="title"><a href="http://techcrunch.com/2012/05/27/facebook-phone-3/" rel="nofollow">It’ll Be A Miracle If The Facebook Phone Doesn’t Suck</a><span class="comhead"> (techcrunch.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032144>2 points</span> by <a href="user?id=daegloe">daegloe</a> 1 hour ago | <a href="item?id=4032144">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">18.</td><td><center><a id=up_4032142 href="vote?for=4032142&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032142></span></center></td><td class="title"><a href="http://www.danshapiro.com/blog/2012/05/what-if-you-could-only-speak-once-a-year/" rel="nofollow">What If You Could Only Speak Once a Year</a><span class="comhead"> (danshapiro.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032142>1 point</span> by <a href="user?id=danshapiro">danshapiro</a> 1 hour ago | <a href="item?id=4032142">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">19.</td><td><center><a id=up_4032137 href="vote?for=4032137&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032137></span></center></td><td class="title"><a href="http://fda.gov/" rel="nofollow">Many .gov domains fail to resolve without www.</a><span class="comhead"> (fda.gov) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032137>2 points</span> by <a href="user?id=zone411">zone411</a> 1 hour ago | <a href="item?id=4032137">1 comment</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">20.</td><td><center><a id=up_4032127 href="vote?for=4032127&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032127></span></center></td><td class="title"><a href="http://www.mpg.de/5809418/reactor_accidents" rel="nofollow">Risk of contamination from severe nuclear reactor accidents higher than expected</a><span class="comhead"> (mpg.de) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032127>2 points</span> by <a href="user?id=stfu">stfu</a> 1 hour ago | <a href="item?id=4032127">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">21.</td><td><center><a id=up_4032108 href="vote?for=4032108&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032108></span></center></td><td class="title"><a href="http://spectrum.ieee.org/biomedical/devices/bioengineers-make-dna-into-a-living-flash-drive" rel="nofollow">Bioengineers Make DNA Into a Living Flash Drive</a><span class="comhead"> (ieee.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032108>1 point</span> by <a href="user?id=tysont">tysont</a> 1 hour ago | <a href="item?id=4032108">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">22.</td><td><center><a id=up_4032065 href="vote?for=4032065&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032065></span></center></td><td class="title"><a href="http://www.theage.com.au/technology/technology-news/daring-to-fail-at-23-australias-hackathon-hero-20120525-1z98i.html" rel="nofollow">Daring to fail at 23: Australia's hackathon hero</a><span class="comhead"> (theage.com.au) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032065>3 points</span> by <a href="user?id=bootload">bootload</a> 2 hours ago | <a href="item?id=4032065">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">23.</td><td><center><a id=up_4032046 href="vote?for=4032046&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032046></span></center></td><td class="title"><a href="http://www.slate.com/articles/business/moneybox/2012/05/facebook_george_lucas_and_nimbyism_the_idiotic_rules_preventing_silicon_valley_from_building_the_houses_and_offices_we_need_to_power_american_innovation_.html/" rel="nofollow">Dumb rules prevent Silicon Valley from building needed houses and offices</a><span class="comhead"> (slate.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032046>3 points</span> by <a href="user?id=jseliger">jseliger</a> 2 hours ago | <a href="item?id=4032046">3 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">24.</td><td><center><a id=up_4032031 href="vote?for=4032031&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032031></span></center></td><td class="title"><a href="http://www.freenetpages.co.uk/hp/alan.gauld/tutfctnl.htm" rel="nofollow">Functional Programming in Python</a><span class="comhead"> (freenetpages.co.uk) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032031>3 points</span> by <a href="user?id=michaelkscott">michaelkscott</a> 2 hours ago | <a href="item?id=4032031">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">25.</td><td><center><a id=up_4032030 href="vote?for=4032030&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032030></span></center></td><td class="title"><a href="http://www.newyorker.com/reporting/2012/06/04/120604fa_fact_gibson?currentPage=all">William Gibson: Seeing the Future in Science Fiction</a><span class="comhead"> (newyorker.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032030>21 points</span> by <a href="user?id=jseliger">jseliger</a> 2 hours ago | <a href="item?id=4032030">9 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">26.</td><td><center><a id=up_4032020 href="vote?for=4032020&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032020></span></center></td><td class="title"><a href="https://github.com/mitchellh/html7">Show HN: HTML7 - Modern HTML</a><span class="comhead"> (github.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032020>11 points</span> by <a href="user?id=mitchellh">mitchellh</a> 2 hours ago | <a href="item?id=4032020">9 comments</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">27.</td><td><center><a id=up_4032017 href="vote?for=4032017&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4032017></span></center></td><td class="title"><a href="http://www.thecreatorsproject.com/blog/zeron-a-levitating-orb-gestural-interface-straight-out-of-sci-fi" rel="nofollow">A new 3D input device using computer controlled magnetic levitation</a><span class="comhead"> (thecreatorsproject.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4032017>1 point</span> by <a href="user?id=damian2000">damian2000</a> 2 hours ago | <a href="item?id=4032017">discuss</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">28.</td><td><center><a id=up_4031996 href="vote?for=4031996&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031996></span></center></td><td class="title"><a href="http://arxiv.org/abs/1205.5662" rel="nofollow">Google+ or Google-?: Active users represent 10.3% of the whole population</a><span class="comhead"> (arxiv.org) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031996>2 points</span> by <a href="user?id=friggeri">friggeri</a> 2 hours ago | <a href="item?id=4031996">1 comment</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">29.</td><td><center><a id=up_4031994 href="vote?for=4031994&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031994></span></center></td><td class="title"><a href="item?id=4031994">Why are we able to share any Facebook photo by copying its URL</a></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031994>1 point</span> by <a href="user?id=lemieux">lemieux</a> 2 hours ago | <a href="item?id=4031994">1 comment</a></td></tr><tr style="height:5px"></tr><tr><td align=right valign=top class="title">30.</td><td><center><a id=up_4031982 href="vote?for=4031982&dir=up&whence=%6e%65%77%65%73%74"><img src="http://ycombinator.com/images/grayarrow.gif" border=0 vspace=3 hspace=2></a><span id=down_4031982></span></center></td><td class="title"><a href="http://imgur.com/a/Z5bOM" rel="nofollow">Show HN: Concept UI for Everything [File searching app for Windows]</a><span class="comhead"> (imgur.com) </span></td></tr><tr><td colspan=2></td><td class="subtext"><span id=score_4031982>1 point</span> by <a href="user?id=elisk">elisk</a> 2 hours ago | <a href="item?id=4031982">discuss</a></td></tr><tr style="height:5px"></tr><tr style="height:10px"></tr><tr><td colspan=2></td><td class="title"><a href="/x?fnid=0zvVDJ3ZNE" rel="nofollow">More</a></td></tr></table></td></tr><tr><td><img src="http://ycombinator.com/images/s.gif" height=10 width=0><table width="100%" cellspacing=0 cellpadding=1><tr><td bgcolor=#ff6600></td></tr></table><br>
|
22
|
+
<center><span class="yclinks"><a href="lists">Lists</a> | <a href="rss">RSS</a> | <a href="http://ycombinator.com/bookmarklet.html">Bookmarklet</a> | <a href="http://ycombinator.com/newsguidelines.html">Guidelines</a> | <a href="http://ycombinator.com/newsfaq.html">FAQ</a> | <a href="http://ycombinator.com/newsnews.html">News News</a> | <a href="item?id=363">Feature Requests</a> | <a href="http://ycombinator.com">Y Combinator</a> | <a href="http://ycombinator.com/apply.html">Apply</a> | <a href="http://ycombinator.com/lib.html">Library</a></span><br><br>
|
23
|
+
<form method=get action="http://www.hnsearch.com/search#request/all">Search: <input type=text name="q" value="" size=17></form><br>
|
24
|
+
</center></td></tr></table></center></body></html>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module HackerNews
|
4
|
+
describe Engine do
|
5
|
+
subject { Engine }
|
6
|
+
let(:engine) { subject }
|
7
|
+
it { should respond_to :homepage }
|
8
|
+
|
9
|
+
it "should fetch homepage items" do
|
10
|
+
engine.homepage.count.should == 30
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should fetch newest items" do
|
14
|
+
engine.newest.count.should == 30
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "chronic"
|
3
|
+
|
4
|
+
module HackerNews
|
5
|
+
describe EntryParser do
|
6
|
+
subject { EntryParser.new }
|
7
|
+
it { should respond_to :homepage }
|
8
|
+
let(:parser) { subject }
|
9
|
+
|
10
|
+
context "homepage" do
|
11
|
+
it "should parse them right" do
|
12
|
+
parser.stub(:open).and_return(open('spec/fixtures/home.html'))
|
13
|
+
entries = parser.homepage
|
14
|
+
entries.count.should == 30
|
15
|
+
entries.first.should be_an Entry
|
16
|
+
entries.each do |entry|
|
17
|
+
entry.id.should > 4000000
|
18
|
+
entry.user.should =~ /\w+/
|
19
|
+
entry.link.should =~ /^http/ unless entry.site.nil?
|
20
|
+
entry.title.should_not be_empty
|
21
|
+
entry.num_comments.should > 0
|
22
|
+
entry.site.should_not =~ /^http/
|
23
|
+
entry.points.should > 0
|
24
|
+
Chronic.parse(entry.time_string).should < Time.now
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "newest" do
|
30
|
+
it "should parse them right" do
|
31
|
+
parser.stub(:open).and_return(open('spec/fixtures/newest.html'))
|
32
|
+
entries = parser.newest
|
33
|
+
entries.count.should == 30
|
34
|
+
entries.first.should be_an Entry
|
35
|
+
entries.each do |entry|
|
36
|
+
entry.id.should > 4000000
|
37
|
+
entry.user.should =~ /\w+/
|
38
|
+
entry.link.should =~ /^http/ unless entry.site.nil?
|
39
|
+
entry.title.should_not be_empty
|
40
|
+
entry.num_comments.should >= 0
|
41
|
+
entry.site.should_not =~ /^http/
|
42
|
+
entry.points.should >= 0
|
43
|
+
Chronic.parse(entry.time_string).should < Time.now
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hn
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Forrest Ye
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-28 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70199363409420 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70199363409420
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &70199363409000 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70199363409000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: simplecov
|
38
|
+
requirement: &70199363408580 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70199363408580
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: chronic
|
49
|
+
requirement: &70199363408160 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70199363408160
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: nokogiri
|
60
|
+
requirement: &70199363407740 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70199363407740
|
69
|
+
description: A tiny gem to fetch Hacker News entries
|
70
|
+
email:
|
71
|
+
- afu@forresty.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- .rspec
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- hn.gemspec
|
83
|
+
- lib/hn.rb
|
84
|
+
- lib/hn/common.rb
|
85
|
+
- lib/hn/engine.rb
|
86
|
+
- lib/hn/models/entry.rb
|
87
|
+
- lib/hn/parsers/entry_parser.rb
|
88
|
+
- lib/hn/version.rb
|
89
|
+
- spec/fixtures/home.html
|
90
|
+
- spec/fixtures/newest.html
|
91
|
+
- spec/hn/engine_spec.rb
|
92
|
+
- spec/hn/parsers/entry_parser_spec.rb
|
93
|
+
- spec/spec_helper.rb
|
94
|
+
homepage: https://github.com/forresty/hn
|
95
|
+
licenses: []
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
hash: 3803145340244818705
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
hash: 3803145340244818705
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 1.8.11
|
121
|
+
signing_key:
|
122
|
+
specification_version: 3
|
123
|
+
summary: A tiny gem to fetch Hacker News entries
|
124
|
+
test_files:
|
125
|
+
- spec/fixtures/home.html
|
126
|
+
- spec/fixtures/newest.html
|
127
|
+
- spec/hn/engine_spec.rb
|
128
|
+
- spec/hn/parsers/entry_parser_spec.rb
|
129
|
+
- spec/spec_helper.rb
|