livid / olivida-start (http://start.olivida.com/)
OLIVIDA Start Page project. Livid's most visited links and playground of new web technologies.
$ hg clone http://bitbucket.org/livid/olivida-start
Changed (Δ17.0 KB):
app.yaml (15 lines added, 0 lines removed)
index.yaml (11 lines added, 0 lines removed)
main.py (22 lines added, 0 lines removed)
static/css/style.css (140 lines added, 0 lines removed)
static/img/bg_blended.png (binary file changed)
static/img/confused.png (binary file changed)
static/img/heart.png (binary file changed)
tpl/index.html (234 lines added, 0 lines removed)
1 |
application: olivida-start |
|
2 |
version: 1 |
|
3 |
runtime: python |
|
4 |
api_version: 1 |
|
5 |
||
6 |
handlers: |
|
7 |
- url: /favicon.ico |
|
8 |
static_files: static/shared/favicon.ico |
|
9 |
upload: static/shared/favicon.ico |
|
10 |
||
11 |
- url: /static |
|
12 |
static_dir: static |
|
13 |
||
14 |
- url: .* |
|
15 |
script: main.py |
1 |
indexes: |
|
2 |
||
3 |
# AUTOGENERATED |
|
4 |
||
5 |
# This index.yaml is automatically updated whenever the dev_appserver |
|
6 |
# detects that a new type of query is run. If you want to manage the |
|
7 |
# index.yaml file manually, remove the above marker line (the line |
|
8 |
# saying "# AUTOGENERATED"). If you want to manage some indexes |
|
9 |
# manually, move them above the marker line. The index.yaml file is |
|
10 |
# automatically uploaded to the admin console when you next deploy |
|
11 |
# your application using appcfg.py. |
1 |
#!/usr/bin/env python |
|
2 |
||
3 |
import os |
|
4 |
||
5 |
from google.appengine.ext import webapp |
|
6 |
from google.appengine.ext.webapp import util |
|
7 |
from google.appengine.ext.webapp import template |
|
8 |
||
9 |
class MainHandler(webapp.RequestHandler): |
|
10 |
def get(self): |
|
11 |
template_values = {} |
|
12 |
path = os.path.join(os.path.dirname(__file__), 'tpl', 'index.html') |
|
13 |
output = template.render(path, template_values) |
|
14 |
self.response.out.write(output) |
|
15 |
||
16 |
def main(): |
|
17 |
application = webapp.WSGIApplication([('/', MainHandler)], |
|
18 |
debug=True) |
|
19 |
util.run_wsgi_app(application) |
|
20 |
||
21 |
if __name__ == '__main__': |
|
22 |
main() |
Up to file-list static/css/style.css:
1 |
@charset "utf-8" |
|
2 |
||
3 |
/* |
|
4 |
OLIVIDA Start Page CSS |
|
5 |
||
6 |
Author: Livid <v2ex.livid@me.com> |
|
7 |
Web: http://picky.olivida.com/ |
|
8 |
||
9 |
This is the preferred look-n-feel for our start page. |
|
10 |
||
11 |
The best way to wipe IE6 from this planet is to forget it all since the beginning of your every new project. |
|
12 |
*/ |
|
13 |
||
14 |
html { |
|
15 |
height: 100%; |
|
16 |
} |
|
17 |
||
18 |
body { |
|
19 |
padding: 0px; |
|
20 |
margin: 0px; |
|
21 |
font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "STHeiti"; |
|
22 |
background-color: #e2e2e2; |
|
23 |
min-width: 900px; |
|
24 |
} |
|
25 |
||
26 |
a:link, a:visited, a:active { |
|
27 |
color: #1c7fdb; |
|
28 |
text-decoration: none; |
|
29 |
} |
|
30 |
||
31 |
a:hover { |
|
32 |
color: #1785eb; |
|
33 |
text-decoration: underline; |
|
34 |
} |
|
35 |
||
36 |
a.orange:link, a.orange:visited, a.orange:active { |
|
37 |
color: #ff9900; |
|
38 |
text-decoration: none; |
|
39 |
} |
|
40 |
||
41 |
a.orange:hover { |
|
42 |
color: #e18700; |
|
43 |
text-decoration: underline; |
|
44 |
} |
|
45 |
||
46 |
/* IDs */ |
|
47 |
||
48 |
#Root { |
|
49 |
width: 800px; |
|
50 |
margin: 20px auto 0px auto; |
|
51 |
background-color: #fff; |
|
52 |
-moz-border-radius: 10px; |
|
53 |
-webkit-border-radius: 10px; |
|
54 |
border-radius: 10px; |
|
55 |
padding: 10px; |
|
56 |
font-size: 15px; |
|
57 |
-webkit-box-shadow: 0px 1px 15px rgba(0, 0, 0, 0.2); |
|
58 |
-moz-box-shadow: 0px 1px 15px rgba(0, 0, 0, 0.2); |
|
59 |
} |
|
60 |
||
61 |
#Bottom { |
|
62 |
width: 800px; |
|
63 |
margin: 0px auto 20px auto; |
|
64 |
font-size: 10px; |
|
65 |
color: #999; |
|
66 |
padding: 5px 10px 0px 10px; |
|
67 |
text-align: right; |
|
68 |
} |
|
69 |
||
70 |
/* CLASSes */ |
|
71 |
||
72 |
.sep { |
|
73 |
margin: 10px 0px 10px 0px; |
|
74 |
border-top: 1px solid #f0f0f0; |
|
75 |
} |
|
76 |
||
77 |
.column { |
|
78 |
float: left; |
|
79 |
font-size: 12px; |
|
80 |
margin-right: 10px; |
|
81 |
background-color: #f9f9f9; |
|
82 |
padding: 10px; |
|
83 |
-moz-border-radius: 10px; |
|
84 |
-webkit-border-radius: 10px; |
|
85 |
border-radius: 10px; |
|
86 |
-webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); |
|
87 |
-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); |
|
88 |
} |
|
89 |
||
90 |
.column_title { |
|
91 |
color: #ccc; |
|
92 |
font-size: 10px; |
|
93 |
font-weight: bold; |
|
94 |
} |
|
95 |
||
96 |
.clear { |
|
97 |
clear: both; |
|
98 |
} |
|
99 |
||
100 |
ul.nav { |
|
101 |
padding: 0px; |
|
102 |
margin: 6px 0px 0px 0px; |
|
103 |
list-style: none; |
|
104 |
} |
|
105 |
||
106 |
ul.nav li { |
|
107 |
padding: 4px 0px 0px 0px; |
|
108 |
font-size: 14px; |
|
109 |
} |
|
110 |
||
111 |
.sl { |
|
112 |
padding: 3px; |
|
113 |
-moz-border-radius: 5px; |
|
114 |
-webkit-border-radius: 5px; |
|
115 |
border-radius: 5px; |
|
116 |
width: 400px; |
|
117 |
font-size: 16px; |
|
118 |
color: #000; |
|
119 |
background-color: #fff; |
|
120 |
border: 1px solid #ccc; |
|
121 |
font-family: "Panic Sans", Luxi Mono, "Courier New", Monaco; |
|
122 |
} |
|
123 |
||
124 |
.olive { |
|
125 |
color: #3b3; |
|
126 |
} |
|
127 |
||
128 |
.super.button { |
|
129 |
background-image: url("/static/img/bg_blended.png"); |
|
130 |
padding: 4px 15px 4px 15px; |
|
131 |
border: 1px solid rgba(0,0,0,.25); |
|
132 |
border-bottom-color: rgba(0,0,0,.35); |
|
133 |
-webkit-border-radius: 15px; |
|
134 |
-moz-border-radius: 15px; |
|
135 |
font-size: 12px; |
|
136 |
line-height: 12px; |
|
137 |
} |
|
138 |
||
139 |
.normal.button { background-color: #fff; color: #333; text-shadow: 0px 1px 1px #fff; text-decoration: none; font-weight: bold; } |
|
140 |
.normal.button:hover { background-color: #f0f0f0; color: #333; text-shadow: 0px 1px 1px #fff; text-decoration: none; text-decoration: none; font-weight: bold; cursor: pointer; } |
Up to file-list static/img/bg_blended.png:
Up to file-list static/img/confused.png:
Up to file-list static/img/heart.png:
Up to file-list tpl/index.html:
1 |
<!DOCTYPE html> |
|
2 |
<html lang="zh-CN"> |
|
3 |
<head> |
|
4 |
<meta charset="UTF-8" /> |
|
5 |
<title>OLIVIDA Start Page</title> |
|
6 |
<link rel="stylesheet" type="text/css" media="screen" href="/static/css/style.css" /> |
|
7 |
<link rel="shortcut icon" href="/favicon.ico" /> |
|
8 |
</head> |
|
9 |
<body> |
|
10 |
<div id="Root"><div style="float: right"><a href="https://mail.google.com/" target="_blank">Gmail</a> <a href="https://www.google.com/reader" target="_blank">Reader</a> <a href="https://www.google.com/analytics" target="_blank">Analytics</a> <a href="https://www.google.com/adsense" target="_blank">AdSense</a></div> |
|
11 |
<strong style="color: #999"><img src="/static/img/confused.png" align="absmiddle" style="margin-top: -4px;" /> OLIVIDA Start Page</strong> |
|
12 |
<div class="sep"></div> |
|
13 |
<form target="_blank" method="get" action="http://www.google.com/search"> |
|
14 |
<input type="hidden" name="forid" value="1" /> |
|
15 |
<input type="hidden" name="ie" value="UTF-8" /> |
|
16 |
<input type="hidden" name="hl" value="en-US" /> |
|
17 |
<input type="text" name="q" id="google" class="sl" /> <input type="submit" value="Google Search" class="super normal button" /> |
|
18 |
</form> |
|
19 |
<div class="sep"></div> |
|
20 |
<div class="column"> |
|
21 |
<div class="column_title">MOST VISITED</div> |
|
22 |
<ul class="nav"> |
|
23 |
<li><a href="http://www.google.com/" target="_blank">Google</a></li> |
|
24 |
<li><a href="http://www.techmeme.com/" target="_blank">Techmeme</a></li> |
|
25 |
<li><a href="http://hg.io/" target="_blank">hg.io</a></li> |
|
26 |
<li><a href="http://www.youtube.com/" target="_blank">YouTube</a></li> |
|
27 |
<li><a href="http://www.imdb.com/" target="_blank">IMDB</a></li> |
|
28 |
</ul> |
|
29 |
</div> |
|
30 |
<div class="column"> |
|
31 |
<div class="column_title">CHINESE</div> |
|
32 |
<ul class="nav"> |
|
33 |
<li><a href="http://www.mtime.com/" target="_blank">时光</a></li> |
|
34 |
<li><a href="http://www.douban.com/" target="_blank">豆瓣</a></li> |
|
35 |
<li><a href="http://www.renren.com/" target="_blank">人人</a></li> |
|
36 |
<li><a href="http://news.sina.com.cn/" target="_blank">新浪新闻</a></li> |
|
37 |
<li><a href="http://www.ifeng.com/" target="_blank">凤凰网</a></li> |
|
38 |
<li><a href="http://news.qq.com/" target="_blank">QQ 新闻</a></li> |
|
39 |
</ul> |
|
40 |
</div> |
|
41 |
<div class="column"> |
|
42 |
<div class="column_title">GEEK</div> |
|
43 |
<ul class="nav"> |
|
44 |
<li><a href="http://news.mydrivers.com/blog/" target="_blank">驱动之家</a></li> |
|
45 |
<li><a href="http://www.lifehacker.com/" target="_blank">Lifehacker</a></li> |
|
46 |
<li><a href="http://www.engadget.com/" target="_blank">Engadget</a></li> |
|
47 |
<li><a href="http://www.apple4.us/" target="_blank">Apple4us</a></li> |
|
48 |
<li><a href="http://www.ifanr.com/" target="_blank">iFanr</a></li> |
|
49 |
<li><a href="http://www.tektalk.org/" target="_blank">弯曲评论</a></li> |
|
50 |
<li><a href="http://www.usesthis.com/" target="_blank">The Setup</a></li> |
|
51 |
</ul> |
|
52 |
</div> |
|
53 |
<div class="column"> |
|
54 |
<div class="column_title">TWITTER</div> |
|
55 |
<ul class="nav"> |
|
56 |
<li><a href="http://www.twitter.com/" target="_blank">Twitter</a></li> |
|
57 |
<li><a href="http://apiwiki.twitter.com/" target="_blank">Twitter API Wiki</a></li> |
|
58 |
<li><a href="https://www.rabr.in/" target="_blank">Rabr</a></li> |
|
59 |
<li><a href="http://www.brizzly.com/" target="_blank">Brizzly</a></li> |
|
60 |
<li><a href="http://t.sina.com.cn/" target="_blank">新浪微博</a></li> |
|
61 |
</ul> |
|
62 |
</div> |
|
63 |
<div class="column"> |
|
64 |
<div class="column_title">SOFTWARE</div> |
|
65 |
<ul class="nav"> |
|
66 |
<li><a href="http://www.google.com/chrome/" target="_blank">Google Chrome</a></li> |
|
67 |
<li><a href="http://www.getfirefox.com/" target="_blank">Mozilla Firefox</a></li> |
|
68 |
<li><a href="http://pc.qq.com/" target="_blank">QQ 软件</a></li> |
|
69 |
<li><a href="http://www.splayer.org/" target="_blank">射手播放器</a></li> |
|
70 |
<li><a href="http://pinyin.sogou.com/" target="_blank">搜狗输入法</a></li> |
|
71 |
<li><a href="http://www.xunlei.com/" target="_blank">迅雷</a></li> |
|
72 |
</ul> |
|
73 |
</div> |
|
74 |
<div class="column"> |
|
75 |
<div class="column_title">GAMES</div> |
|
76 |
<ul class="nav"> |
|
77 |
<li><a href="http://ps3.tgbus.com/" target="_blank">TGBUS</a></li> |
|
78 |
<li><a href="http://www.gamespot.com/" target="_blank">GameSpot</a></li> |
|
79 |
<li><a href="http://www.steampowered.com/" target="_blank">Steam</a></li> |
|
80 |
<li><a href="http://www.kotaku.com/" target="_blank">Kotaku</a></li> |
|
81 |
</ul> |
|
82 |
</div> |
|
83 |
<div class="column"> |
|
84 |
<div class="column_title">TECH PEOPLE</div> |
|
85 |
<ul class="nav"> |
|
86 |
<li><a href="http://www.joehewitt.com/" target="_blank">Joe Hewitt</a></li> |
|
87 |
<li><a href="http://www.al3x.net/" target="_blank">Alex Payne</a></li> |
|
88 |
<li><a href="http://dekorte.com/blog/blog.cgi" target="_blank">Steve Dekorte</a></li> |
|
89 |
<li><a href="http://www.brandonwalkin.com/" target="_blank">Brandon Walkin</a></li> |
|
90 |
<li><a href="http://diveintomark.org/" target="_blank">Mark Pilgrim</a></li> |
|
91 |
<li><a href="http://www.daringfireball.net/" target="_blank">John Gruber</a></li> |
|
92 |
<li><a href="http://www.aaronsw.com/weblog/" target="_blank">Aaron Swartz</a></li> |
|
93 |
</ul> |
|
94 |
</div> |
|
95 |
<div class="clear"></div> |
|
96 |
<div class="sep"></div> |
|
97 |
<div class="column"> |
|
98 |
<div class="column_title">OLIVIDA</div> |
|
99 |
<ul class="nav"> |
|
100 |
<li><a href="http://picky.olivida.com/" target="_blank">Project Picky</a></li> |
|
101 |
<li><a href="http://o.olivida.com/" target="_blank">O</a></li> |
|
102 |
</ul> |
|
103 |
</div> |
|
104 |
<div class="column"> |
|
105 |
<div class="column_title">COCOA</div> |
|
106 |
<ul class="nav"> |
|
107 |
<li><a href="http://www.cocoawithlove.com/" target="_blank">Cocoa with Love</a></li> |
|
108 |
<li><a href="http://cocoasamurai.blogspot.com/" target="_blank">Cocoa Samurai</a></li> |
|
109 |
<li><a href="http://cocoadevcentral.com/" target="_blank">Cocoa Dev Central</a></li> |
|
110 |
</ul> |
|
111 |
</div> |
|
112 |
<div class="column"> |
|
113 |
<div class="column_title">MAC & IPHONE</div> |
|
114 |
<ul class="nav"> |
|
115 |
<li><a href="http://www.apple.com/" target="_blank">Apple</a></li> |
|
116 |
<li><a href="http://www.smokingapples.com/" target="_blank">Smoking Apples</a></li> |
|
117 |
<li><a href="http://nodpad.com/" target="_blank">No DPad</a></li> |
|
118 |
<li><a href="http://www.tuaw.com/" target="_blank">TUAW</a></li> |
|
119 |
<li><a href="http://www.freeappaday.com/" target="_blank">Free App a Day</a></li> |
|
120 |
</ul> |
|
121 |
</div> |
|
122 |
<div class="column"> |
|
123 |
<div class="column_title">DESIGN</div> |
|
124 |
<ul class="nav"> |
|
125 |
<li><a href="http://www.smashingmagazine.com/" target="_blank">Smashing Magazine</a></li> |
|
126 |
<li><a href="http://www.tutorial9.net/" target="_blank">Tutorial9</a></li> |
|
127 |
<li><a href="http://www.fullyillustrated.com/" target="_blank">Fully Illustrated</a></li> |
|
128 |
<li><a href="http://www.deviantart.com/" target="_blank">deviantART</a></li> |
|
129 |
<li><a href="http://sixrevisions.com/" target="_blank">Six Revisions</a></li> |
|
130 |
</ul> |
|
131 |
</div> |
|
132 |
<div class="column"> |
|
133 |
<div class="column_title">FRIENDS</div> |
|
134 |
<ul class="nav"> |
|
135 |
<li><a href="http://www.bangumi.tv/" target="_blank">Bangumi</a></li> |
|
136 |
<li><a href="http://www.leica.org.cn/" target="_blank">Leica 中文</a></li> |
|
137 |
<li><a href="http://www.6.cn/" target="_blank">6rooms</a></li> |
|
138 |
<li><a href="http://www.dbanotes.net/" target="_blank">DBA Notes</a></li> |
|
139 |
</ul> |
|
140 |
</div> |
|
141 |
<div class="column"> |
|
142 |
<div class="column_title">ENTERTAINMENT</div> |
|
143 |
<ul class="nav"> |
|
144 |
<li><a href="http://www.slashfilm.com/" target="_blank">/Film</a></li> |
|
145 |
<li><a href="http://www.empireonline.com/" target="_blank">Empire</a></li> |
|
146 |
<li><a href="http://www.xiami.com/" target="_blank">虾米</a></li> |
|
147 |
<li><a href="http://www.last.fm/" target="_blank">Last.fm</a></li> |
|
148 |
</ul> |
|
149 |
</div> |
|
150 |
<div class="clear"></div> |
|
151 |
<div class="sep"></div> |
|
152 |
<div class="column"> |
|
153 |
<div class="column_title">PROGRAMMING</div> |
|
154 |
<ul class="nav"> |
|
155 |
<li><a href="http://iolanguage.com/" target="_blank">io</a></li> |
|
156 |
<li><a href="http://developer.apple.com/iphone/library/navigation/" target="_blank">iPhone OS</a></li> |
|
157 |
<li><a href="http://developer.apple.com/mac/library/navigation/" target="_blank">Mac OS X</a></li> |
|
158 |
<li><a href="http://www.python.org/" target="_blank">Python</a></li> |
|
159 |
<li><a href="http://www.php.net/" target="_blank">PHP</a></li> |
|
160 |
</ul> |
|
161 |
</div> |
|
162 |
<div class="column"> |
|
163 |
<div class="column_title">OPEN SOURCE</div> |
|
164 |
<ul class="nav"> |
|
165 |
<li><a href="http://www.cocos2d-iphone.org/" target="_blank">cocos2d</a></li> |
|
166 |
<li><a href="http://code.google.com/appengine/" target="_blank">App Engine</a></li> |
|
167 |
<li><a href="http://code.google.com/p/redis/" target="_blank">Redis</a></li> |
|
168 |
<li><a href="http://www.mongodb.org" target="_blank">MongoDB</a></li> |
|
169 |
<li><a href="http://couchdb.apache.org/" target="_blank">CouchDB</a></li> |
|
170 |
</ul> |
|
171 |
</div> |
|
172 |
<div class="column"> |
|
173 |
<div class="column_title">MAC SOFTWARE</div> |
|
174 |
<ul class="nav"> |
|
175 |
<li><a href="http://www.caminobrowser.org/" target="_blank">Camino</a></li> |
|
176 |
<li><a href="http://www.appzapper.com/" target="_blank">AppZapper</a></li> |
|
177 |
<li><a href="http://www.transmissionbt.com/" target="_blank">Transmission</a></li> |
|
178 |
<li><a href="http://www.adium.im/" target="_blank">Adium</a></li> |
|
179 |
<li><a href="http://www.panic.com/transmit" target="_blank">Transmit</a></li> |
|
180 |
</ul> |
|
181 |
</div> |
|
182 |
<div class="column"> |
|
183 |
<div class="column_title">FIREFOX ADD-ONS</div> |
|
184 |
<ul class="nav"> |
|
185 |
<li><a href="http://getfirebug.com/" target="_blank">Firebug</a></li> |
|
186 |
<li><a href="https://mozillalabs.com/weave/" target="_blank">Weave Sync</a></li> |
|
187 |
<li><a href="http://echofon.com/twitter/firefox/" target="_blank">Echofon</a></li> |
|
188 |
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/60" target="_blank">Web Developer</a></li> |
|
189 |
</ul> |
|
190 |
</div> |
|
191 |
<div class="column"> |
|
192 |
<div class="column_title">ONLINE SERVICES</div> |
|
193 |
<ul class="nav"> |
|
194 |
<li><a href="http://simple-note.appspot.com/" target="_blank">Simplenote</a></li> |
|
195 |
<li><a href="http://www.me.com/" target="_blank">MobileMe</a></li> |
|
196 |
<li><a href="http://www.meebo.com/" target="_blank">Meebo</a></li> |
|
197 |
<li><a href="http://www.todoist.com/" target="_blank">Todoist</a></li> |
|
198 |
</ul> |
|
199 |
</div> |
|
200 |
<div class="column"> |
|
201 |
<div class="column_title">HOSTING</div> |
|
202 |
<ul class="nav"> |
|
203 |
<li><a href="https://ac.mediatemple.net/" target="_blank">Media Temple</a></li> |
|
204 |
<li><a href="http://www.linode.com/" target="_blank">Linode</a></li> |
|
205 |
<li><a href="https://appengine.google.com/dashboard?&app_id=v2ex-picky" target="_blank">GAE: v2ex-picky</a></li> |
|
206 |
<li><a href="https://appengine.google.com/dashboard?&app_id=olivida-start" target="_blank">GAE: olivida-start</a></li> |
|
207 |
</ul> |
|
208 |
</div> |
|
209 |
<div class="column"> |
|
210 |
<div class="column_title">BUY</div> |
|
211 |
<ul class="nav"> |
|
212 |
<li><a href="http://www.newegg.com.cn/" target="_blank">新蛋</a></li> |
|
213 |
<li><a href="http://www.360buy.com/" target="_blank">京东</a></li> |
|
214 |
<li><a href="http://www.taobao.com/" target="_blank">淘宝</a></li> |
|
215 |
<li><a href="http://www.alipay.com/" target="_blank">支付宝</a></li> |
|
216 |
<li><a href="http://www.10010.com/" target="_blank">联通</a></li> |
|
217 |
</ul> |
|
218 |
</div> |
|
219 |
<div class="clear"></div> |
|
220 |
</div> |
|
221 |
<div id="Bottom">© 2010 OLIVIDA - making things easier<br />Powered by Google App Engine</div> |
|
222 |
<script type="text/javascript"> |
|
223 |
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); |
|
224 |
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); |
|
225 |
</script> |
|
226 |
<script type="text/javascript"> |
|
227 |
try { |
|
228 |
var pageTracker = _gat._getTracker("UA-11940834-3"); |
|
229 |
pageTracker._setDomainName("none"); |
|
230 |
pageTracker._setAllowLinker(true); |
|
231 |
pageTracker._trackPageview(); |
|
232 |
} catch(err) {}</script> |
|
233 |
</body> |
|
234 |
</html> |
