metainspector 5.8.0 → 5.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a349b7103e8b214dc3211da2bc46d830e8e88b85fa7bde9b734ff3ba13802be0
4
- data.tar.gz: fc4b691504551ee1c0ca6df5f92f5f5dbf5f2ebfa71415cff5259a67aff17c5f
3
+ metadata.gz: b88f82dd95de4917883dcadd783df5b6053613f8c014488828c20a41c41ea965
4
+ data.tar.gz: 5a46882cc6f225c80953fdb9e3209bab0ca84860daa5781593fafd20a5c130f1
5
5
  SHA512:
6
- metadata.gz: 1a268679f23f0ecfdd4358304999200175c78c2bef37ad1d5acdba641b46512ec6e6dca8d18005b87bc7fbc9b632592ac657818c99d540324685a56912a8985c
7
- data.tar.gz: 8f90160c9f923e69157cfc8c2d6b13f386dd394501d37330a6ede47e587d9474adbe9b932df86340fc3c14754eedd59538eef65944801f6567b26189be8db077
6
+ metadata.gz: d9c175ca8140e4fca246a5ab4c5acad327acfae672adc6c1eec499fd57d2ea552649f364c8e5e3b9a8c12be314fe96a3683296db0e0ace71438b8eb9c25323b5
7
+ data.tar.gz: f307118a739f0a48bd49f1ea062156406c245b2274522116fc178e1eaad222305bb5ff0ff06b66355d851dd273ce1fbc62fa7ed555dc8c38da0a7af6728b7590
@@ -1,5 +1,14 @@
1
1
  # MetaInpector Changelog
2
2
 
3
+ ## [Changes in 5.9](https://github.com/jaimeiniesta/metainspector/compare/v5.8.0...v5.9.0)
4
+
5
+ * Added #feeds method to retrieve all feeds of a page.
6
+ * Adds deprecation warning on #feed method.
7
+
8
+ ## [Changes in 5.8](https://github.com/jaimeiniesta/metainspector/compare/v5.7.0...v5.8.0)
9
+
10
+ * Added h1..h6 support.
11
+
3
12
  ## [Changes in 5.7](https://github.com/jaimeiniesta/metainspector/compare/v5.6.0...v5.7.0)
4
13
 
5
14
  * Avoids normalizing image URLs. https://github.com/jaimeiniesta/metainspector/pull/241
data/README.md CHANGED
@@ -73,7 +73,7 @@ page.root_url # Root url (scheme + host, like http://sitevalidator.co
73
73
  page.head_links # an array of hashes of all head/links
74
74
  page.stylesheets # an array of hashes of all head/links where rel='stylesheet'
75
75
  page.canonicals # an array of hashes of all head/links where rel='canonical'
76
- page.feed # Get rss or atom links in meta data fields as array
76
+ page.feeds # Get rss or atom links in meta data fields as array of hash in the form { href: "...", title: "...", type: "..." }
77
77
  ```
78
78
 
79
79
  ### Texts
@@ -49,7 +49,7 @@ module MetaInspector
49
49
 
50
50
  delegate [:parsed, :title, :best_title, :author, :best_author,
51
51
  :h1, :h2, :h3, :h4, :h5, :h6, :description, :best_description, :links,
52
- :images, :feed, :charset, :meta_tags,
52
+ :images, :feeds, :feed, :charset, :meta_tags,
53
53
  :meta_tag, :meta, :favicon,
54
54
  :head_links, :stylesheets, :canonicals] => :@parser
55
55
 
@@ -76,6 +76,7 @@ module MetaInspector
76
76
  'images' => images.to_a,
77
77
  'charset' => charset,
78
78
  'feed' => feed,
79
+ 'feeds' => feeds,
79
80
  'content_type' => content_type,
80
81
  'meta_tags' => meta_tags,
81
82
  'favicon' => images.favicon,
@@ -23,7 +23,7 @@ module MetaInspector
23
23
  extend Forwardable
24
24
  delegate [:url, :scheme, :host] => :@document
25
25
  delegate [:meta_tags, :meta_tag, :meta, :charset] => :@meta_tag_parser
26
- delegate [:head_links, :stylesheets, :canonicals, :feed] => :@head_links_parser
26
+ delegate [:head_links, :stylesheets, :canonicals, :feeds, :feed] => :@head_links_parser
27
27
  delegate [:links, :base_url] => :@links_parser
28
28
  delegate :images => :@images_parser
29
29
  delegate [:title, :best_title, :author, :best_author, :description, :best_description,
@@ -3,6 +3,10 @@ module MetaInspector
3
3
  class HeadLinksParser < Base
4
4
  delegate [:parsed, :base_url] => :@main_parser
5
5
 
6
+ KNOWN_FEED_TYPES = %w[
7
+ application/rss+xml application/atom+xml application/json
8
+ ].freeze
9
+
6
10
  def head_links
7
11
  @head_links ||= parsed.css('head link').map do |tag|
8
12
  Hash[
@@ -24,16 +28,25 @@ module MetaInspector
24
28
  @canonicals ||= head_links.select { |hl| hl[:rel] == 'canonical' }
25
29
  end
26
30
 
27
- # Returns the parsed document meta rss link
28
- def feed
29
- @feed ||= (parsed_feed('rss') || parsed_feed('atom'))
30
- end
31
+ def feeds
32
+ @feeds ||=
33
+ parsed.search("//link[@rel='alternate']").map do |link|
34
+ next if !KNOWN_FEED_TYPES.include?(link["type"]) || link["href"].to_s.strip == ''
31
35
 
32
- private
36
+ {
37
+ title: link["title"],
38
+ href: URL.absolutify(link["href"], base_url),
39
+ type: link["type"]
40
+ }
41
+ end.compact
42
+ end
33
43
 
34
- def parsed_feed(format)
35
- feed = parsed.search("//link[@type='application/#{format}+xml']").find{|link| link.attributes["href"] }
36
- feed ? URL.absolutify(feed['href'], base_url) : nil
44
+ def feed
45
+ warn "DEPRECATION: Use MetaInspector#feeds instead of #feed. The former gives you all feeds and their metadata, the latter will be removed."
46
+ @feed ||= begin
47
+ first_feed = feeds.find { |l| /\/(rss|atom)\+xml$/i =~ l[:type] } || {}
48
+ first_feed[:href]
49
+ end
37
50
  end
38
51
  end
39
52
  end
@@ -1,3 +1,3 @@
1
1
  module MetaInspector
2
- VERSION = '5.8.0'
2
+ VERSION = '5.9.0'
3
3
  end
@@ -1,11 +1,11 @@
1
1
  require File.expand_path('../lib/meta_inspector/version', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
- gem.authors = ["Jaime Iniesta"]
5
- gem.email = ["jaimeiniesta@gmail.com"]
4
+ gem.author = "Jaime Iniesta"
5
+ gem.email = "jaimeiniesta@gmail.com"
6
6
  gem.description = %q{MetaInspector lets you scrape a web page and get its links, images, texts, meta tags...}
7
7
  gem.summary = %q{MetaInspector is a ruby gem for web scraping purposes, that returns metadata from a given URL}
8
- gem.homepage = "https://github.com/jaimeiniesta/metainspector"
8
+ gem.homepage = "https://github.com/metainspector/metainspector"
9
9
  gem.license = "MIT"
10
10
 
11
11
  gem.files = `git ls-files`.split("\n")
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
  gem.version = MetaInspector::VERSION
16
16
 
17
- gem.add_dependency 'nokogiri', '~> 1.10.4'
17
+ gem.add_dependency 'nokogiri', '~> 1.10.7'
18
18
  gem.add_dependency 'faraday', '~> 0.17.0'
19
19
  gem.add_dependency 'faraday_middleware', '~> 0.13.1'
20
20
  gem.add_dependency 'faraday-cookie_jar', '~> 0.0.6'
@@ -27,7 +27,7 @@ Gem::Specification.new do |gem|
27
27
  gem.add_development_dependency 'rspec', '~> 3.9.0'
28
28
  gem.add_development_dependency 'webmock', '~> 3.7.6'
29
29
  gem.add_development_dependency 'awesome_print', '~> 1.8.0'
30
- gem.add_development_dependency 'rake', '~> 13.0.0'
30
+ gem.add_development_dependency 'rake', '~> 13.0.1'
31
31
  gem.add_development_dependency 'pry', '~> 0.12.2'
32
- gem.add_development_dependency 'rubocop', '~> 0.75.1'
32
+ gem.add_development_dependency 'rubocop', '~> 0.79.0'
33
33
  end
@@ -44,6 +44,7 @@ describe MetaInspector::Document do
44
44
  "images" => ["http://pagerankalert.com/images/pagerank_alert.png?1305794559"],
45
45
  "charset" => "utf-8",
46
46
  "feed" => "http://feeds.feedburner.com/PageRankAlert",
47
+ "feeds" => [{href: "http://feeds.feedburner.com/PageRankAlert", title: "PageRankAlert.com blog", type: "application/rss+xml"}],
47
48
  "h1" => [],
48
49
  "h2" => ["Track your PageRank changes"],
49
50
  "h3" => ["WHAT'S YOUR PAGERANK?"],
@@ -0,0 +1,23 @@
1
+ HTTP/1.1 200
2
+ date: Wed, 08 Jan 2020 23:21:58 GMT
3
+ content-type: text/html; charset=UTF-8
4
+ server: nginx/0.7.67
5
+
6
+ <!DOCTYPE html>
7
+ <html>
8
+ <head>
9
+ <title>a page with feeds</title>
10
+ <link rel="alternate" title="Articles - JSON Feed" type="application/json" href="https://example.org/feed.json" />
11
+ <link rel="alternate" title="Comments - JSON Feed" type="application/json" href="https://example.org/feed/comments.json" />
12
+ <link rel="alternate" title="Articles - RSS Feed" type="application/rss+xml" href="https://example.org/feed.rss" />
13
+ <link rel="alternate" title="Comments - RSS Feed" type="application/rss+xml" href="https://example.org/feed/comments.rss" />
14
+ <link rel="alternate" title="Articles - Atom Feed" type="application/atom+xml" href="https://example.org/feed.xml" />
15
+ <link rel="alternate" title="Comments - Atom Feed" type="application/atom+xml" href="https://example.org/feed/comments.xml" />
16
+
17
+ <link rel="alternate" title="Invalid Feed" />
18
+ <link rel="alternate" title="Feed with empty href" type="application/atom+xml" href="" />
19
+ </head>
20
+ <body>
21
+
22
+ </body>
23
+ </html>
@@ -39,7 +39,10 @@ describe MetaInspector do
39
39
  context "on page with some broken feed links" do
40
40
  let(:page){ MetaInspector.new('http://example.com/broken_head_links') }
41
41
  it "tries to find correct one" do
42
- expect(page.feed).to eq("http://www.guardian.co.uk/media/techcrunch/rss")
42
+ expected = [
43
+ { title: "TechCrunch RSS feed", href: "http://www.guardian.co.uk/media/techcrunch/rss", type: "application/rss+xml" }
44
+ ]
45
+ expect(page.feeds).to eq(expected)
43
46
  end
44
47
  end
45
48
  end
@@ -190,20 +190,37 @@ describe MetaInspector do
190
190
  end
191
191
  end
192
192
 
193
- describe "Feed" do
194
- it "should get rss feed" do
195
- @m = MetaInspector.new('http://www.iteh.at')
196
- expect(@m.feed).to eq('http://www.iteh.at/de/rss/')
197
- end
193
+ context "Feeds" do
194
+ let(:meta) { MetaInspector.new('http://feeds.example.com') }
195
+
196
+ describe "#feeds" do
197
+ it "should return all the document's feeds" do
198
+ expected = [
199
+ { title: "Articles - JSON Feed", href: "https://example.org/feed.json", type: "application/json" },
200
+ { title: "Comments - JSON Feed", href: "https://example.org/feed/comments.json", type: "application/json" },
201
+ { title: "Articles - RSS Feed", href: "https://example.org/feed.rss", type: "application/rss+xml" },
202
+ { title: "Comments - RSS Feed", href: "https://example.org/feed/comments.rss", type: "application/rss+xml" },
203
+ { title: "Articles - Atom Feed", href: "https://example.org/feed.xml", type: "application/atom+xml" },
204
+ { title: "Comments - Atom Feed", href: "https://example.org/feed/comments.xml", type: "application/atom+xml" }
205
+ ]
206
+ expect(meta.feeds).to eq(expected)
207
+ end
198
208
 
199
- it "should get atom feed" do
200
- @m = MetaInspector.new('http://www.tea-tron.com/jbravo/blog/')
201
- expect(@m.feed).to eq('http://www.tea-tron.com/jbravo/blog/feed/')
209
+ it "should return nothing if no feeds found" do
210
+ @m = MetaInspector.new('http://www.alazan.com')
211
+ expect(@m.feeds).to eq([])
212
+ end
202
213
  end
203
214
 
204
- it "should return nil if no feed found" do
205
- @m = MetaInspector.new('http://www.alazan.com')
206
- expect(@m.feed).to eq(nil)
215
+ describe "#feed" do
216
+ it "should return the first feed's href" do
217
+ expect(meta.feed).to eq("https://example.org/feed.rss")
218
+ end
219
+
220
+ it "should give a deprecation warning" do
221
+ warning = "DEPRECATION: Use MetaInspector#feeds instead of #feed. The former gives you all feeds and their metadata, the latter will be removed.\n"
222
+ expect { meta.feed }.to output(warning).to_stderr
223
+ end
207
224
  end
208
225
  end
209
226
  end
@@ -69,8 +69,6 @@ RSpec.configure do |config|
69
69
  stub_request(:get, "http://www.24-horas.mx/mexico-firma-acuerdo-bilateral-automotriz-con-argentina/").to_return(fixture_file("relative_og_image.response"))
70
70
  stub_request(:get, "http://www.alazan.com").to_return(fixture_file("alazan.com.response"))
71
71
  stub_request(:get, "http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups").to_return(fixture_file("guardian.co.uk.response"))
72
- stub_request(:get, "http://www.iteh.at").to_return(fixture_file("iteh.at.response"))
73
- stub_request(:get, "http://www.tea-tron.com/jbravo/blog/").to_return(fixture_file("tea-tron.com.response"))
74
72
  stub_request(:get, "http://www.theonion.com/articles/apple-claims-new-iphone-only-visible-to-most-loyal,2772/").to_return(fixture_file("theonion.com.response"))
75
73
  stub_request(:get, "http://www.youtube.com/watch?v=iaGSSrp49uc").to_return(fixture_file("youtube.response"))
76
74
  stub_request(:get, "http://www.youtube.com/watch?v=short_title").to_return(fixture_file("youtube_short_title.response"))
@@ -79,5 +77,6 @@ RSpec.configure do |config|
79
77
  stub_request(:get, "https://twitter.com/markupvalidator").to_return(fixture_file("twitter_markupvalidator.response"))
80
78
  stub_request(:get, "https://www.facebook.com/").to_return(fixture_file("https.facebook.com.response"))
81
79
  stub_request(:get, "http://example.com/meta_tags_empty").to_return(fixture_file("meta_tags_empty.response"))
80
+ stub_request(:get, "http://feeds.example.com").to_return(fixture_file("feeds.response"))
82
81
  end
83
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metainspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.0
4
+ version: 5.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaime Iniesta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.10.4
19
+ version: 1.10.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.10.4
26
+ version: 1.10.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 13.0.0
187
+ version: 13.0.1
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 13.0.0
194
+ version: 13.0.1
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: pry
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -212,18 +212,17 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 0.75.1
215
+ version: 0.79.0
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 0.75.1
222
+ version: 0.79.0
223
223
  description: MetaInspector lets you scrape a web page and get its links, images, texts,
224
224
  meta tags...
225
- email:
226
- - jaimeiniesta@gmail.com
225
+ email: jaimeiniesta@gmail.com
227
226
  executables: []
228
227
  extensions: []
229
228
  extra_rdoc_files: []
@@ -278,6 +277,7 @@ files:
278
277
  - spec/fixtures/encoding.response
279
278
  - spec/fixtures/example.response
280
279
  - spec/fixtures/facebook.com.response
280
+ - spec/fixtures/feeds.response
281
281
  - spec/fixtures/guardian.co.uk.response
282
282
  - spec/fixtures/head_links.response
283
283
  - spec/fixtures/headings.response
@@ -286,7 +286,6 @@ files:
286
286
  - spec/fixtures/invalid_byte_seq.response
287
287
  - spec/fixtures/invalid_href.response
288
288
  - spec/fixtures/invalid_utf8_byte_seq.response
289
- - spec/fixtures/iteh.at.response
290
289
  - spec/fixtures/largest_image_in_html.response
291
290
  - spec/fixtures/largest_image_using_image_size.response
292
291
  - spec/fixtures/malformed_href.response
@@ -304,7 +303,6 @@ files:
304
303
  - spec/fixtures/relative_links.response
305
304
  - spec/fixtures/relative_links_with_base.response
306
305
  - spec/fixtures/relative_og_image.response
307
- - spec/fixtures/tea-tron.com.response
308
306
  - spec/fixtures/theonion-no-description.com.response
309
307
  - spec/fixtures/theonion.com.response
310
308
  - spec/fixtures/title_best_choice.response
@@ -330,7 +328,7 @@ files:
330
328
  - spec/request_spec.rb
331
329
  - spec/spec_helper.rb
332
330
  - spec/url_spec.rb
333
- homepage: https://github.com/jaimeiniesta/metainspector
331
+ homepage: https://github.com/metainspector/metainspector
334
332
  licenses:
335
333
  - MIT
336
334
  metadata: {}
@@ -1,971 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Date: Mon, 30 May 2011 09:53:56 GMT
3
- Server: Apache/2.2.17 (EL)
4
- X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.0
5
- ETag: "7f0d9a099eacdb9364a706d38eefdc48"
6
- X-Rack-Cache: fresh
7
- X-Content-Digest: d74aee1c2774d20bccdbc80bc2345e2e6a7c440c
8
- X-Runtime: 4399
9
- Cache-Control: max-age=43200, public
10
- Age: 14200
11
- Content-Length: 54786
12
- Status: 200
13
- Vary: Accept-Encoding
14
- Connection: close
15
- Content-Type: text/html; charset=utf-8
16
-
17
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
18
- <html xmlns="http://www.w3.org/1999/xhtml">
19
- <head>
20
- <link href="/favicon.ico" rel="shortcut icon"/>
21
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
22
- <meta name="google-site-verification" content="fXzcn-aurR_Ep48_uTtLk6QzEv-iO9Uhrn2Q2a-aC_o" />
23
- <title>iTeh.solutions: iTeh - Edmund Haselwanter: Webdesign, Webhosting, EC2, AWS, Ruby, Rails, OpsChef, DevOps Consulting</title>
24
- <link href="/de/rss/" rel="alternate" title="RSS Feed Weblog" type="application/rss+xml" />
25
- <meta name="description" content="Internet und Intranet Applikationen Ruby on Rails, Content Management mit Radiant CMS, IT Infrastruktur Automatisierung mit Chef von Opscode" /><meta name="keywords" content="radiant, rails, chef, opscode, jquery, web 2.0" />
26
- <link rel="stylesheet" href="/sns-css/iteh.css?1270033400" type="text/css" media="all" charset="utf-8" />
27
- <if_url matches="blog">
28
- <link rel="stylesheet" type="text/css" href="http://ultraviolet.rubyforge.org/css/sunburst.css" />
29
-
30
- </if_url>
31
- <script type="text/javascript" src="/js/sifr.js"></script>
32
-
33
- <!--[if lt IE 8]> <script src="/js/IE8.js" type="text/javascript"></script> <![endif]-->
34
- <!--[if IE 6]> <link rel="stylesheet" href="/css/ie6.css" type="text/css" > <![endif]-->
35
- <!--[if IE 7]> <link rel="stylesheet" href="/css/ie7.css" type="text/css" > <![endif]-->
36
- </head>
37
-
38
- <body>
39
- <div id="header"><!-- begin header -->
40
- <div class="container_16"><!-- begin wrap -->
41
-
42
- <div id="topHeader"><!-- begin top header -->
43
- <ul class="simpleMenu">
44
- <li><a href="/de/rss">RSS</a></li>
45
- <li><a href="/sitemap">Site Map</a></li>
46
- <li><a href="/de/"><img src="/images/admin/de.gif" alt="" style="vertical-align:middle;border:0;padding:2px;"/></a></li>
47
- <li><a href="/en/"><img src="/images/admin/en.gif" alt="" style="vertical-align:middle;border:0;padding:2px;"/></a></li>
48
- </ul>
49
-
50
- <form class="search" action="">
51
- <!-- div>
52
- <input type="text" name="search" class="textInput" value="suchen ..."/>
53
- <input type="submit" value="Search" class="button"/>
54
- </div -->
55
- </form>
56
- </div><!-- end top header -->
57
-
58
- <div id="mainHeader"><!-- begin main header -->
59
- <div class="left"><div class="right">
60
-
61
- <a class="title" href="/" title="iTeh, Consulting und mehr ..."><img src="/images/logo.png" alt="iTeh"/></a>
62
- <p class="description">Wir machen Lösungen ...</p>
63
-
64
- <ul class="mainMenu">
65
- <li><a href="/de/ueber-uns">über uns</a></li>
66
- <li><a href="/de/services">services</a></li>
67
- <li><a href="/de/projekte">projekte</a></li>
68
- <li><a href="/de/blog">blog</a></li>
69
- <li><a href="/de/kontakt">kontakt</a></li>
70
- </ul>
71
-
72
- </div></div>
73
- </div><!-- end main header -->
74
-
75
-
76
- <div id="slider" class="coda-slider-wrapper"><!-- begin slider -->
77
- <div id="coda-slider-1" class="coda-slider preload">
78
-
79
- <div class="panel panel-wrapper"><!-- begin slide-->
80
- <div class="grid_8 text">
81
- <h1>Die Besten <b>Internet</b> Lösungen</h1>
82
- <h5>
83
- Sie suchen nach einer durchdachten Lösung für Ihr Geschäft iTeh kann Ihnen helfen...
84
- </h5>
85
-
86
- <div class="grid_4 column">
87
- <ul>
88
- <li><a class="simpleButton">Portfolio Präsentation</a></li>
89
- <li><a class="simpleButton">Geschäftsauftritt</a></li>
90
- </ul>
91
- </div>
92
-
93
- <div class="grid_4 column">
94
- <ul>
95
- <li><a class="simpleButton">Hotel oder Appartements</a></li>
96
- <li><a class="simpleButton">Andere Lösungen ...</a></li>
97
- </ul>
98
- </div>
99
-
100
- <div class="clear"></div>
101
-
102
- <a class="learnMore" href="/de/services">Mehr dazu</a>
103
- </div>
104
-
105
- <div class="grid_8 thumbnail">
106
- <img src="/content/imageSlideshow1.png" alt="Internet Lösungen"/>
107
- </div>
108
- <div class="clear"></div>
109
- </div><!-- end slide-->
110
-
111
- <div class="panel panel-wrapper"><!-- begin slide-->
112
- <div class="grid_8 text">
113
- <h1>Massgeschneiderte Webapplikationen</h1>
114
- <h5>
115
- Individuelle Lösung auf Basis neuester Internet Technologien
116
- </h5>
117
-
118
- <div class="grid_4 column">
119
- <ul>
120
- <li><a class="simpleButton">Ruby on Rails</a></li>
121
- <li><a class="simpleButton">Haml und Sass</a></li>
122
- <li><a class="simpleButton">Deployment auf EC2</a></li>
123
- </ul>
124
- </div>
125
-
126
- <div class="grid_4 column">
127
- <ul>
128
- <li><a class="simpleButton">Content Management mit Radiant</a></li>
129
- <li><a class="simpleButton">In Lösungen denken ...</a></li>
130
- </ul>
131
- </div>
132
-
133
- <div class="clear"></div>
134
-
135
- <a class="learnMore" href="/de/services">Mehr dazu</a>
136
- </div>
137
-
138
- <div class="grid_8 thumbnail">
139
- <img src="/content/codeMockup.png" alt="Massgeschneiderte Webapplikationen"/>
140
- </div>
141
- <div class="clear"></div>
142
- </div><!-- end slide-->
143
-
144
- <div class="panel panel-wrapper"><!-- begin slide-->
145
- <div class="grid_8 text">
146
- <h1>IT Infrastruktur Automatisierung</h1>
147
- <h5>
148
- Sie suchen nach einem Partner der Ihnen dabei hilft IT Infrastruktur Kosten zu sparen? Hier sind Sie richtig!
149
- </h5>
150
-
151
- <div class="grid_4 column">
152
- <ul>
153
- <li><a class="simpleButton">IT Infrastruktur Automatisierung</a></li>
154
- <li><a class="simpleButton">Continuous Integration</a></li>
155
- <li><a class="simpleButton">One Klick Deployment</a></li>
156
- </ul>
157
- </div>
158
-
159
- <div class="grid_4 column">
160
- <ul>
161
- <li><a class="simpleButton">Deployment in der Cloud</a></li>
162
- <li><a class="simpleButton">Amazon Web Services (EC2 ..)</a></li>
163
- <li><a class="simpleButton">und viele weitere Möglichkeiten</a></li>
164
- </ul>
165
- </div>
166
-
167
- <div class="clear"></div>
168
-
169
- <a class="learnMore" href="/de/services">Mehr dazu</a>
170
- </div>
171
-
172
- <div class="grid_8 thumbnail">
173
- <img src="/content/codeMockup.png" alt="IT Infrastruktur Automatisierung"/>
174
- </div>
175
- <div class="clear"></div>
176
- </div><!-- end slide-->
177
- </div>
178
- </div><!-- end slider -->
179
-
180
-
181
-
182
-
183
-
184
- </div><!-- end wrap -->
185
- </div><!-- end header -->
186
-
187
- <div id="breadcrumbs"><!-- begin breadcrumbs -->
188
- <div class="container_16">
189
-
190
-
191
-
192
- <p><b>Wilkommen bei iTeh:</b> IT Consulting und mehr. Wir machen Lösungen!</p>
193
- <!-- homepage slider navigation buttons -->
194
- <div id="sliderNav"></div>
195
-
196
-
197
-
198
-
199
-
200
- </div>
201
- </div><!-- end breadcrumbs -->
202
-
203
- <div id="center"><!-- begin center-->
204
- <div class="container_16"><!-- begin wrap -->
205
-
206
-
207
- <div id="tagline"><!-- begin tagline -->
208
- <div class="left"><div class="right">
209
-
210
- <div class="grid_12">
211
- <h3>Sie suchen nach einem Partner für die Umsetzung ihres Internetauftritts, Ihrer Webapplikation oder IT Infrastruktur Automatisierung?</h3>
212
- </div>
213
-
214
- <div id="tour" class="grid_4">
215
- <!-- <a class="videoThumb imageLightbox" href="/content/videoPlayer.png" title="Take the tour">
216
- <img src="/content/showreelThumb.jpg" alt="Take the tour" />
217
- </a>
218
- <p class="blue">take the tour</p>
219
- <small>Nice for showreel thumbnail...</small><br />
220
- <a class="simpleButton imageLightbox" href="/content/videoPlayer.png" title="Watch video">watch video</a> -->
221
- </div>
222
-
223
- </div></div>
224
- </div><!-- end tagline -->
225
-
226
- <div class="clear"></div>
227
-
228
-
229
-
230
- <div id="content" class="grid_12"><!-- begin content -->
231
-
232
- <h2>Wilkommen bei <b>iTeh</b></h2>
233
- <p>
234
- <b>iTeh</b> DI Edmund Siegfried Haselwanter ist ein Unternehmen mit dem klaren Fokus auf der Entwicklung von Internet und Intranet Applikationen mit dem Framework Ruby on Rails, Content Management für kleine Teams und Unternehmen mit dem ebenfalls in Rails entwickelten Content Management System RadiantCMS sowie der Automatisierung von IT Infrastruktur und des Entwicklungsprozesses mit Chef von Opscode und Cruise von Thoughtworks.
235
- </p>
236
-
237
- <hr />
238
-
239
- <h3>Was wir Ihnen anbieten</h3>
240
- <p>
241
- Wir bieten Consulting und Projektabwicklung zu einem fairen Preis in den folgenden drei Bereichen
242
- </p>
243
-
244
- <br />
245
-
246
-
247
- <div class="column noLeftMargin grid_4">
248
- <h3>IT Infrastruktur Automatisierung, Cloud Computing</h3>
249
- <small class="blue size11">Deployment und Infrastruktur</small>
250
- <p class="thumbnail"><img src="/assets/3/automation_small.jpg" alt="Deployment und IT Infrastruktur Automatisierung" /></p>
251
- <p>Sie möchten Ihre IT Infrastruktur Automatisieren um Kosten zu sparen? Sie sind an neue Möglichkeiten in der Software Entwicklung interessiert? EC2 Deployment oder Virtualisierung?</p>
252
- <a class="simpleButton size12" href="/de/services/it-automatisierung/" title="Mehr zu IT Infrastruktur Automatisierung, Cloud Computing">mehr</a>
253
- </div>
254
-
255
- <div class="column grid_4">
256
- <h3>Ihre Webpräsenz einfach selbst verwalten</h3>
257
- <small class="blue size11">Radiant CMS</small>
258
- <p class="thumbnail"><img src="/content/radiant_logo.png" alt="Design und Webauftritt" /></p>
259
- <p>Sie möchten Ihren Webauftritt mit einem einfachen Content Management System verwalten? <a href="http://radiantcms.org">Radiant <span class="caps">CMS</span></a> lässt sich sehr einfach für Ihre Wünsche anpassen und erweitern!. Natürlich können wir für Sie auf Wunsch auch Wordpress oder Typo3 einsetzen</p>
260
- <a class="simpleButton size12" href="/de/services/internet-auftritte/" title="Mehr zu Ihre Webpräsenz einfach selbst verwalten">mehr</a>
261
- </div>
262
-
263
- <div class="column noRightMargin grid_4">
264
- <h3>Applikations Entwicklung</h3>
265
- <small class="blue size11">Internet oder Intranet Anwendungen</small>
266
- <p class="thumbnail"><img src="/content/rails.png" alt="Anwendungs Entwicklung" /></p>
267
- <p> Wir verwenden <a href="http://rubyonrails.org/">Rails</a> als Basis für die Entwicklung von Web Anwendungen</p>
268
- <small><em>"Leistungsfähige Web Anwendungen, die zuvor Wochen und Monate an Aufwand gekostet haben, lassen sich mit Rails in wenigen Tagen realisieren"</em><br/><br/>
269
- - <a href="http://de.wikipedia.org/wiki/Tim_O%E2%80%99Reilly">Tim O'Reilly</a>, vom <a href="http://www.oreilly.de/">O'Reilly Verlag</a></small>
270
- </p>
271
- <a class="simpleButton size12" href="/de/services/applikations-entwicklung/" title="Mehr zu Applikations Entwicklung">mehr</a>
272
- </div>
273
-
274
-
275
-
276
- <h2>Was Kunden über uns sagen</h2>
277
- <div class="testimonial">
278
- <p>Edi was hired to set up and maintain our server infrastructure. He not only completed requests satisfying and in time, but also provided suggestions and new ideas often going beyond what was orginally ordered and discussed. I certainly can recommend Edi for business as a highly skilled system infracture level consultant. <small>(<a href="http://at.linkedin.com/pub/martin-lechner/14/7b7/a71">Martin Lechner -- CTO and Project Manager at Mobilizy GmbH.</a>)</small></p>
279
-
280
- </div>
281
- <div class="testimonial">
282
- <p>Edi has great knowledge in the IS/IT industry, especially with automated hosting, server services and customer support. And in addition he is very helpful, patient and supportive when it comes to critical and customer related issues. I would always again like to hire Edi for this kind of support<small>(<a href="http://at.linkedin.com/in/timotions">Harry Timons --Program Manager "World Summit Awards" at International Center for New Media</a>)</small></p>
283
-
284
- </div>
285
- <div class="testimonial">
286
- <p>I know Edmund from his contributions to many Radiant extensions, and from a few e-mail conversations about them. He seems like a very nice guy, and has helped me out on several occasions without expecting something in return. I therefore recommend Edmund to anybody who is considering hiring him for a job.<small>(<a href="http://be.linkedin.com/in/bennydegezelle">Benny Degezelle -- Owner & webdeveloper, Gorilla webdesign</a>)</small></p>
287
-
288
- </div>
289
- <div class="testimonial">
290
- <p>Edmund is a personable knowledgeable IT expert who delivers on time great results.<small>(<a href="http://at.linkedin.com/pub/christoph-doppelmeier/2/ba3/b47">Christoph Doppelmeier -- Infrastructure, Operations, Testing Manager bei Sony NetServices</a>)</small></p>
291
-
292
- </div>
293
-
294
-
295
- <h2>Die neuesten Blog Einträge</h2>
296
-
297
-
298
- <a href="/de/blog/2011/04/16/data-driven-deployment-einer-java-web-application-mit-chef-solo/">Data Driven Deployment einer Java Web Application mit Chef Solo</a><br/>
299
-
300
- <a href="/de/blog/2011/03/16/wordpress-ueber-json-api-mit-facebook-page-oder-tumblr-befuellen/">Wordpress über JSON Api mit Facebook Page oder Tumblr befüllen</a><br/>
301
-
302
- <a href="/de/blog/2010/12/07/fehler-bei-tomcat-too-many-open-files/">Fehler bei Tomcat: Too many open files</a><br/>
303
-
304
- <a href="/de/blog/2010/12/07/wordpress-lamp-stack-mit-einer-zeile-code-installieren/">Wordpress LAMP Stack mit einer Zeile Code installieren</a><br/>
305
-
306
- <a href="/de/blog/2010/12/05/vagrant-sind-sie-bereit-ihren-umgang-mit-it-infrastruktur-zu-revolutionieren/">Vagrant: Sind Sie bereit Ihren Umgang mit IT Infrastruktur zu revolutionieren? </a><br/>
307
-
308
- <a href="/de/blog/2010/11/25/die-offizielle-facebook-seite-aus-rechtlicher-sicht/">Die offizielle Facebook-Seite aus rechtlicher Sicht</a><br/>
309
-
310
- <a href="/de/blog/2010/07/01/was-ist-rss-und-warum-brauchen-sie-es-fuer-facebook/">Was ist RSS und warum brauchen Sie es für Facebook</a><br/>
311
-
312
- <a href="/de/blog/2010/06/14/chef-von-opscode-und-der-power-von-ruby/">Chef von Opscode und der Power von Ruby</a><br/>
313
-
314
- <a href="/de/blog/2010/06/10/radiant-das-no-fluff-just-stuff-rails-cms/">Radiant das No Fluff just Stuff Rails CMS</a><br/>
315
-
316
- <a href="/de/blog/2010/04/08/strings-in-ruby/">Strings in Ruby</a><br/>
317
-
318
-
319
-
320
-
321
- <div class="clear"></div>
322
- </div><!-- end content -->
323
-
324
- <div id="sidebar" class="grid_4"><!-- begin sidebar -->
325
- <div id="tabMenu"><!-- begin tabMenu -->
326
- <ul id="tabs">
327
- <li class="active"><a href="#tab1">Neuigkeiten</a></li>
328
- <li><a href="#tab2">Artikel</a></li>
329
- </ul>
330
-
331
- <div class="clear"></div>
332
-
333
- <div id="tabContainer">
334
- <div id="tabMask">
335
- <div id="tabHolder">
336
-
337
- <div id="tab1" class="tabContent jcarousel">
338
- <div class="jcarousel-clip">
339
- <ul class="jcarousel-list">
340
-
341
-
342
- <li>
343
- <img src="/content/news1.jpg" />
344
- <p>Chef mit verbessertem...</p>
345
- <a class="simpleButton" href="/de/news/2010/10/08/chef-mit-verbessertem-windows-und-solaris-support/" title="Chef mit verbessertem Windows und Solaris Support weiter lesen">weiter lesen</a>
346
- </li>
347
-
348
- <li>
349
- <img src="/content/news1.jpg" />
350
- <p>Neugestaltung Webauftritt...</p>
351
- <a class="simpleButton" href="/de/news/2010/10/05/neugestaltung-webauftritt-haselwanter/" title="Neugestaltung Webauftritt Haselwanter weiter lesen">weiter lesen</a>
352
- </li>
353
-
354
- <li>
355
- <img src="/content/news1.jpg" />
356
- <p>Twitter hat einen neuen Chef</p>
357
- <a class="simpleButton" href="/de/news/2010/10/05/twitter-hat-einen-neuen-chef/" title="Twitter hat einen neuen Chef weiter lesen">weiter lesen</a>
358
- </li>
359
-
360
- <li>
361
- <img src="/content/news1.jpg" />
362
- <p>Facebook Safety Center</p>
363
- <a class="simpleButton" href="/de/news/2010/07/27/facebook-safety-center/" title="Facebook Safety Center weiter lesen">weiter lesen</a>
364
- </li>
365
-
366
- <li>
367
- <img src="/content/news1.jpg" />
368
- <p>Miemingerplateau Seite nun...</p>
369
- <a class="simpleButton" href="/de/news/2010/07/22/miemingerplateau-seite-nun-auch-mit-twitter-und-veranstaltungen/" title="Miemingerplateau Seite nun auch mit Twitter und Veranstaltungen weiter lesen">weiter lesen</a>
370
- </li>
371
-
372
- <li>
373
- <img src="/content/news1.jpg" />
374
- <p>Xing OSX Addressbuch Sync</p>
375
- <a class="simpleButton" href="/de/news/2010/07/22/xing-osx-addressbuch-sync/" title="Xing OSX Addressbuch Sync weiter lesen">weiter lesen</a>
376
- </li>
377
-
378
- <li>
379
- <img src="/content/news1.jpg" />
380
- <p>Ruby und Puppet Workshop</p>
381
- <a class="simpleButton" href="/de/news/2010/07/13/ruby-und-puppet-workshop/" title="Ruby und Puppet Workshop weiter lesen">weiter lesen</a>
382
- </li>
383
-
384
- <li>
385
- <img src="/content/news1.jpg" />
386
- <p>Mieminger Plateau Seite...</p>
387
- <a class="simpleButton" href="/de/news/2010/06/18/mieminger-plateau-seite-relaunch/" title="Mieminger Plateau Seite Relaunch weiter lesen">weiter lesen</a>
388
- </li>
389
-
390
- <li>
391
- <img src="/content/news1.jpg" />
392
- <p>Die neue Seite ist online</p>
393
- <a class="simpleButton" href="/de/news/2010/03/31/die-neue-seite-ist-online/" title="Die neue Seite ist online weiter lesen">weiter lesen</a>
394
- </li>
395
-
396
-
397
- </ul>
398
- </div>
399
- <p class="viewAll"><a href="/de/news">alle neuigkeiten lesen</a></p>
400
- </div>
401
-
402
- <div id="tab2" class="tabContent jcarousel">
403
- <div class="jcarousel-clip">
404
- <ul class="jcarousel-list">
405
-
406
-
407
- <li>
408
- <p class="headline">Data Driven...</p>
409
- <small class="info">Posted: <a href="#">16.04.2011</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
410
- <p>Chef Application Cookbook Showcase Dieses Vagrant Projekt auf unserem Github Repository...</p>
411
- <a class="simpleButton" href="/de/blog/2011/04/16/data-driven-deployment-einer-java-web-application-mit-chef-solo/" title="Data Driven Deployment einer Java Web Application mit Chef Solo weiter lesen">weiter lesen</a>
412
- </li>
413
-
414
- <li>
415
- <p class="headline">Wordpress über...</p>
416
- <small class="info">Posted: <a href="#">16.03.2011</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
417
- <p>In diesem Beispiel zeigen wir die Installation von Wordpress in einem Ubuntu LAMP...</p>
418
- <a class="simpleButton" href="/de/blog/2011/03/16/wordpress-ueber-json-api-mit-facebook-page-oder-tumblr-befuellen/" title="Wordpress über JSON Api mit Facebook Page oder Tumblr befüllen weiter lesen">weiter lesen</a>
419
- </li>
420
-
421
- <li>
422
- <p class="headline">Fehler bei...</p>
423
- <small class="info">Posted: <a href="#">07.12.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
424
- <p>Das Symptom Tomcat reagiert nur mehr mit einer HTTP 500 Fehlermeldung. In den Catalina...</p>
425
- <a class="simpleButton" href="/de/blog/2010/12/07/fehler-bei-tomcat-too-many-open-files/" title="Fehler bei Tomcat: Too many open files weiter lesen">weiter lesen</a>
426
- </li>
427
-
428
- <li>
429
- <p class="headline">Wordpress LAMP...</p>
430
- <small class="info">Posted: <a href="#">07.12.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
431
- <p>Im Posting Vagrant: Sind Sie bereit Ihren Umgang mit IT Infrastruktur zu...</p>
432
- <a class="simpleButton" href="/de/blog/2010/12/07/wordpress-lamp-stack-mit-einer-zeile-code-installieren/" title="Wordpress LAMP Stack mit einer Zeile Code installieren weiter lesen">weiter lesen</a>
433
- </li>
434
-
435
- <li>
436
- <p class="headline">Vagrant: Sind Sie...</p>
437
- <small class="info">Posted: <a href="#">05.12.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
438
- <p>Vargant ist ein Tool für das Erstellen und Verbreiten von virtualisierten...</p>
439
- <a class="simpleButton" href="/de/blog/2010/12/05/vagrant-sind-sie-bereit-ihren-umgang-mit-it-infrastruktur-zu-revolutionieren/" title="Vagrant: Sind Sie bereit Ihren Umgang mit IT Infrastruktur zu revolutionieren? weiter lesen">weiter lesen</a>
440
- </li>
441
-
442
- <li>
443
- <p class="headline">Die offizielle...</p>
444
- <small class="info">Posted: <a href="#">25.11.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
445
- <p>Eine kleine Sammlung an Links zu Thema Facebook Fan Page und Recht: Die offizielle...</p>
446
- <a class="simpleButton" href="/de/blog/2010/11/25/die-offizielle-facebook-seite-aus-rechtlicher-sicht/" title="Die offizielle Facebook-Seite aus rechtlicher Sicht weiter lesen">weiter lesen</a>
447
- </li>
448
-
449
- <li>
450
- <p class="headline">Was ist RSS und...</p>
451
- <small class="info">Posted: <a href="#">01.07.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
452
- <p>Was versteckt sich hinter dem Kürzel RSS? &#8220;Was ist ein RSS Feed?&#8221;, wurden...</p>
453
- <a class="simpleButton" href="/de/blog/2010/07/01/was-ist-rss-und-warum-brauchen-sie-es-fuer-facebook/" title="Was ist RSS und warum brauchen Sie es für Facebook weiter lesen">weiter lesen</a>
454
- </li>
455
-
456
- <li>
457
- <p class="headline">Chef von Opscode...</p>
458
- <small class="info">Posted: <a href="#">14.06.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
459
- <p>Neuere Versionen von Chef von Opscode stellen eine interessante Ressource zur...</p>
460
- <a class="simpleButton" href="/de/blog/2010/06/14/chef-von-opscode-und-der-power-von-ruby/" title="Chef von Opscode und der Power von Ruby weiter lesen">weiter lesen</a>
461
- </li>
462
-
463
- <li>
464
- <p class="headline">Radiant das No...</p>
465
- <small class="info">Posted: <a href="#">10.06.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
466
- <p>Radiant ist ein auf das wesentliche reduzierte, Open Source Content Management System...</p>
467
- <a class="simpleButton" href="/de/blog/2010/06/10/radiant-das-no-fluff-just-stuff-rails-cms/" title="Radiant das No Fluff just Stuff Rails CMS weiter lesen">weiter lesen</a>
468
- </li>
469
-
470
- <li>
471
- <p class="headline">Strings in Ruby</p>
472
- <small class="info">Posted: <a href="#">08.04.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
473
- <p>In den vorangegangenen Artikeln haben wir schon Strings verwendet. Es gibt zwei Arten...</p>
474
- <a class="simpleButton" href="/de/blog/2010/04/08/strings-in-ruby/" title="Strings in Ruby weiter lesen">weiter lesen</a>
475
- </li>
476
-
477
- <li>
478
- <p class="headline">Grundlegende...</p>
479
- <small class="info">Posted: <a href="#">07.04.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
480
- <p>Wie bei jeder Programmiersprache muss man sich auch bei Ruby mit der grundlegenden...</p>
481
- <a class="simpleButton" href="/de/blog/2010/04/07/grundlegende-syntax-der-sprache-ruby/" title="Grundlegende Syntax der Sprache Ruby weiter lesen">weiter lesen</a>
482
- </li>
483
-
484
- <li>
485
- <p class="headline">Ruby Programmier...</p>
486
- <small class="info">Posted: <a href="#">06.04.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
487
- <p>Im Kern ist Ruby eine objektorientierte Sprache. Alles ist ein Objekt. Yukihiro „Matz“...</p>
488
- <a class="simpleButton" href="/de/blog/2010/04/06/ruby-programmier-paradigmen/" title="Ruby Programmier Paradigmen weiter lesen">weiter lesen</a>
489
- </li>
490
-
491
- <li>
492
- <p class="headline">Die...</p>
493
- <small class="info">Posted: <a href="#">05.04.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
494
- <p>Die Geburtsstunde der Sprache Ruby war der 24. Februar 1993. Der Erfinder von Ruby,...</p>
495
- <a class="simpleButton" href="/de/blog/2010/04/05/die-programmiersprache-ruby-einleitung/" title="Die Programmiersprache Ruby - Einleitung weiter lesen">weiter lesen</a>
496
- </li>
497
-
498
- <li>
499
- <p class="headline">Neue Seite Online</p>
500
- <small class="info">Posted: <a href="#">30.03.2010</a> by <a href="/de/ueber-uns">DI Edmund Haselwanter</a></small>
501
- <p>Die neue Firmenwebseite ist nun online Radiant CMS Die Webseite wurde mit dem Content...</p>
502
- <a class="simpleButton" href="/de/blog/2010/03/30/neue-seite-online/" title="Neue Seite Online weiter lesen">weiter lesen</a>
503
- </li>
504
-
505
-
506
- </ul>
507
- </div>
508
- <p class="viewAll"><a href="/de/blog">den weblog lesen</a></p>
509
- </div>
510
-
511
- </div>
512
- </div>
513
-
514
- <div id="tabNav">
515
- <div class="jcarouselPrev1 previous"></div>
516
- <div class="jcarouselNext1 next"></div>
517
-
518
- <div class="jcarouselPrev2 previous"></div>
519
- <div class="jcarouselNext2 next"></div>
520
-
521
- <p class="viewAll"></p>
522
- </div>
523
-
524
- <div class="clear"></div>
525
- </div>
526
- </div><!-- end tabMenu -->
527
- <!--NetworkedBlogs Start--><style type="text/css"><!--.networkedblogs_widget a {text-decoration:none;color:#3B5998;font-weight:normal;}.networkedblogs_widget .networkedblogs_footer a {text-decoration:none;color:#FFFFFF;font-weight:normal;}--></style><div id='networkedblogs_container' style='height:180px;padding-top:20px;'><div id='networkedblogs_above'></div><div id='networkedblogs_widget' style="width:120px;margin:0px auto;padding:0px 0px 3px 0px;font-family:'lucida grande',tahoma,Verdana,Arial,Sans-Serif;font-size:11px;font-weight:normal;text-decoration:none;background:#3B5998 none repeat scroll 0% 0%;border:none;line-height:13px;"><div id='networkedblogs_header' style="padding:1px 1px 2px 3px;text-align:left;"><a href='http://www.facebook.com/apps/application.php?id=9953271133' style="text-decoration:none;color:#FFFFFF;font-weight:normal;font-size:11px;background-repeat:no-repeat;">NetworkedBlogs</a></div><div id='networkedblogs_body' style="background-color:#FFFFFF;color:#444444;padding:4px;border-left:1px solid #D8DFEA;border-right:1px solid #D8DFEA;text-align:left;"><table cellpadding="0" cellspacing="0"><tr><td><span style="color:#777777;">Blog:</span></td></tr><tr><td><a target="_blank" href="http://networkedblogs.com/blog/iteh_news/" style="text-decoration:none;color:#3B5998;">iTeh News</a></td></tr><tr><td><div style="padding:0px;padding-top:5px;color:#777777;">Topics:</div></td></tr><tr><td><a target='_blank' href='http://networkedblogs.com/topic/social+media' style='text-decoration:none;color:#3B5998;'>social media</a>, <a target='_blank' href='http://networkedblogs.com/topic/web+applications' style='text-decoration:none;color:#3B5998;'>web applications</a></td></tr><tr><td><div id='networkedblogs_badges'>&nbsp;</div></td></tr><tr><td><div style='padding:0px;text-align:center;'><a target="_blank" href="http://networkedblogs.com/blog/iteh_news/?ahash=564a938cc798ed16402a1f7e195320c6" style="text-decoration:none;color:#666666;font-weight:normal;font-size:10px;">Follow my blog</a></div></td></tr></table></div></div><div id='networkedblogs_below' class='networkedblogs_below'></div></div><script type="text/javascript"><!--
528
- if(typeof(networkedblogs)=="undefined"){networkedblogs = {};networkedblogs.blogId=741811;networkedblogs.shortName="iteh_news";}
529
- --></script><script type="text/javascript" src="http://widget.networkedblogs.com/getwidget?bid=741811"></script><!--NetworkedBlogs End-->
530
-
531
- </div><!-- end sidebar -->
532
-
533
- <div class="clear"></div>
534
-
535
-
536
-
537
- <div id="portofolioSlider" class="grid_16"><!-- begin portofolioSlider -->
538
- <div class="left"><div class="right">
539
-
540
- <div class="carousel">
541
- <h3>Unsere Projekte</h3>
542
- <div class="jcarousel-clip">
543
- <ul class="jcarousel-list">
544
-
545
-
546
-
547
- <li>
548
- <a href="/de/projekte/applikations-entwicklung/fedor/">
549
-
550
-
551
- <img src="/assets/195/fedor_portfolio_small.jpg" alt="<r:children:each:title/>" />
552
-
553
-
554
-
555
- </a>
556
- <small class="title"><a href="/de/projekte/applikations-entwicklung/fedor/">Fedor</a></small>
557
- <small class="date"></small>
558
- </li>
559
-
560
- <li>
561
- <a href="/de/projekte/applikations-entwicklung/sun/">
562
-
563
-
564
- <img src="/assets/196/sun-t-online_portfolio_small.jpg" alt="<r:children:each:title/>" />
565
-
566
-
567
-
568
- </a>
569
- <small class="title"><a href="/de/projekte/applikations-entwicklung/sun/">Sun</a></small>
570
- <small class="date"></small>
571
- </li>
572
-
573
- <li>
574
- <a href="/de/projekte/applikations-entwicklung/remote-calendar/">
575
-
576
-
577
- <img src="/assets/197/remote-calendar_portfolio_small.jpg" alt="<r:children:each:title/>" />
578
-
579
-
580
-
581
- </a>
582
- <small class="title"><a href="/de/projekte/applikations-entwicklung/remote-calendar/">Remote Calendar</a></small>
583
- <small class="date"></small>
584
- </li>
585
-
586
- <li>
587
- <a href="/de/projekte/applikations-entwicklung/chances-risk-report/">
588
-
589
-
590
- <img src="/assets/201/report_portfolio_small.jpg" alt="<r:children:each:title/>" />
591
-
592
-
593
-
594
- </a>
595
- <small class="title"><a href="/de/projekte/applikations-entwicklung/chances-risk-report/">Chances Risk Report</a></small>
596
- <small class="date"></small>
597
- </li>
598
-
599
- <li>
600
- <a href="/de/projekte/applikations-entwicklung/soccered/">
601
-
602
-
603
- <img src="/assets/200/soccered_portfolio_small.jpg" alt="<r:children:each:title/>" />
604
-
605
-
606
-
607
- </a>
608
- <small class="title"><a href="/de/projekte/applikations-entwicklung/soccered/">Soccered</a></small>
609
- <small class="date"></small>
610
- </li>
611
-
612
-
613
-
614
- <li>
615
- <a href="/de/projekte/internet-auftritte/edmund-haselwanter-com/">
616
-
617
-
618
- <img src="/assets/192/edmund_portfolio_small.jpg" alt="<r:children:each:title/>" />
619
-
620
-
621
-
622
- </a>
623
- <small class="title"><a href="/de/projekte/internet-auftritte/edmund-haselwanter-com/">edmund.haselwanter.com</a></small>
624
- <small class="date"></small>
625
- </li>
626
-
627
- <li>
628
- <a href="/de/projekte/internet-auftritte/apart-elisabeth/">
629
-
630
-
631
- <img src="/assets/188/apart_portfolio_small.jpg" alt="<r:children:each:title/>" />
632
-
633
-
634
-
635
- </a>
636
- <small class="title"><a href="/de/projekte/internet-auftritte/apart-elisabeth/">Apart Elisabeth</a></small>
637
- <small class="date"></small>
638
- </li>
639
-
640
- <li>
641
- <a href="/de/projekte/internet-auftritte/cafe-maurer/">
642
-
643
-
644
- <img src="/assets/189/cafe_portfolio_small.jpg" alt="<r:children:each:title/>" />
645
-
646
-
647
-
648
- </a>
649
- <small class="title"><a href="/de/projekte/internet-auftritte/cafe-maurer/">Cafe Maurer</a></small>
650
- <small class="date"></small>
651
- </li>
652
-
653
- <li>
654
- <a href="/de/projekte/internet-auftritte/miemingerplateau/">
655
-
656
-
657
- <img src="/assets/190/mieming_portfolio_small.jpg" alt="<r:children:each:title/>" />
658
-
659
-
660
-
661
- </a>
662
- <small class="title"><a href="/de/projekte/internet-auftritte/miemingerplateau/">Miemingerplateau</a></small>
663
- <small class="date"></small>
664
- </li>
665
-
666
- <li>
667
- <a href="/de/projekte/internet-auftritte/transporte-haselwanter/">
668
-
669
-
670
- <img src="/assets/193/haselwanter_portfolio_small.jpg" alt="<r:children:each:title/>" />
671
-
672
-
673
-
674
- </a>
675
- <small class="title"><a href="/de/projekte/internet-auftritte/transporte-haselwanter/">Transporte Haselwanter</a></small>
676
- <small class="date"></small>
677
- </li>
678
-
679
- <li>
680
- <a href="/de/projekte/internet-auftritte/ecosyn365/">
681
-
682
-
683
- <img src="/assets/191/ecosyn_portfolio_small.jpg" alt="<r:children:each:title/>" />
684
-
685
-
686
-
687
- </a>
688
- <small class="title"><a href="/de/projekte/internet-auftritte/ecosyn365/">ecosyn365</a></small>
689
- <small class="date"></small>
690
- </li>
691
-
692
- <li>
693
- <a href="/de/projekte/internet-auftritte/the-cakemaker/">
694
-
695
-
696
- <img src="/assets/194/the-cakemaker_portfolio_small.jpg" alt="<r:children:each:title/>" />
697
-
698
-
699
-
700
- </a>
701
- <small class="title"><a href="/de/projekte/internet-auftritte/the-cakemaker/">The Cakemaker</a></small>
702
- <small class="date"></small>
703
- </li>
704
-
705
-
706
-
707
- <li>
708
- <a href="/de/projekte/it-automatisierung/netociety-snorre/">
709
-
710
-
711
- <img src="/assets/5/Screen_shot_2010-02-17_at_21.11.17_portfolio_small.png" alt="<r:children:each:title/>" />
712
-
713
-
714
-
715
- </a>
716
- <small class="title"><a href="/de/projekte/it-automatisierung/netociety-snorre/">Netociety Snorre</a></small>
717
- <small class="date"></small>
718
- </li>
719
-
720
- <li>
721
- <a href="/de/projekte/it-automatisierung/wikitude/">
722
-
723
-
724
- <img src="/content/portofolioImg2.jpg" alt=""/>
725
-
726
- </a>
727
- <small class="title"><a href="/de/projekte/it-automatisierung/wikitude/">Wikitude</a></small>
728
- <small class="date"></small>
729
- </li>
730
-
731
- <li>
732
- <a href="/de/projekte/it-automatisierung/dev-center/">
733
-
734
-
735
- <img src="/content/portofolioImg2.jpg" alt=""/>
736
-
737
- </a>
738
- <small class="title"><a href="/de/projekte/it-automatisierung/dev-center/">Dev Center</a></small>
739
- <small class="date"></small>
740
- </li>
741
-
742
-
743
-
744
- </ul>
745
- </div>
746
- </div>
747
-
748
- <div class="controls">
749
- <small class="counter">4/10</small>
750
-
751
- <div class="navigation">
752
- <a class="jcarousel-prev previous"></a>
753
- <a class="jcarousel-next next"></a>
754
- </div>
755
-
756
- <small class="link"><a href="/de/projekte">Portfolio ansehen</a></small>
757
- </div>
758
-
759
- </div></div>
760
- </div><!-- end portofolioSlider -->
761
-
762
- <div class="clear"></div>
763
-
764
-
765
-
766
-
767
- </div><!-- end wrap -->
768
- </div><!-- end center-->
769
-
770
- <div id="footer"><!-- begin footer -->
771
- <div class="container_16"><!-- begin wrap -->
772
-
773
- <div id="newsletter">
774
- <div class="grid_4 firstCol">
775
- <h3>Newsletter abbonieren</h3>
776
- <small>Bleiben Sie informiert. Unsere aktuellsten Neuigkeiten per Email</small>
777
- </div>
778
-
779
-
780
- <form action="/de/kontakt/newsletter/" method="post" enctype="multipart/form-data" id="mailer" name="mailer[newsletter]">
781
-
782
- <div class="grid_4 secondCol">
783
- <input type="text" value="Ihre E-mail" name="email" class="textInput" id="email" value="Ihre E-mail" />
784
-
785
- <small class="subscribe customRadioHere">
786
-
787
- <label for="subscribetrue">anmelden</label>
788
-
789
- </small>
790
- <small class="unsubscribe customRadioHere">
791
-
792
- <label for="subscribefalse">abmelden</label><!-- label id must match subscibe id -->
793
- </small>
794
-
795
-
796
- </div>
797
-
798
- <div class="grid_4 thirdCol">
799
- <small class="signUpOption customCheckboxHere">
800
- <input type="checkbox" checked="checked" value="true" id="signup" name="mailer[signup]" />
801
- <!-- r:checkbox name="signup" checked="checked" value="true" /-->
802
- <label for="signup">abbonieren!</label>
803
- </small>
804
- <div class="info">
805
- <small>Zusätzliche Informationen über unsere Produkte und Services</small>
806
- </div>
807
- </div>
808
-
809
- <div class="grid_4 fourthCol">
810
- <input type="submit" value="Search" class="signUpButton"/>
811
- </div>
812
- </form>
813
- <script type="text/javascript">
814
- function showSubmitPlaceholder()
815
- {
816
- var submitplaceholder = document.getElementById("submit-placeholder-part");
817
- if (submitplaceholder != null)
818
- {
819
- submitplaceholder.style.display="";
820
- }
821
- }
822
- </script>
823
-
824
- <div class="highlight"></div>
825
-
826
- <div class="clear"></div>
827
- </div>
828
-
829
- <div id="footerWidgets">
830
- <div class="grid_4">
831
- <h3>Über Uns</h3>
832
- <small>Eine kurze Beschreibung wer wir sind</small>
833
- <hr />
834
- <p>Wir sind ein junges Unternehmen spezialisiert auf Webauftritte, Implementierung von Web Applikationen in Rails und Automatisierung von IT Infrastruktur. Wir verwenden die neusten Technologien um Ihnen kostengünstig Lösungen anbieten zu können.
835
- </p>
836
- </div>
837
-
838
- <div class="grid_4 lastComments">
839
- <h3>Was Kunden über uns sagen</h3>
840
- <small></small>
841
- <hr />
842
- <ul>
843
- <li>
844
- <p>Edmund is a personable knowledgeable IT expert who delivers on time great results</p>
845
- <small>von <a href="http://at.linkedin.com/pub/christoph-doppelmeier/2/ba3/b47">Christoph Doppelmeier</a> am <a href="#">06.03.2009</a></small>
846
- </li>
847
- <li>
848
- <p>Edi has great knowledge in the IS/IT industry, especially with automated hosting, server services ... I would always again like to hire Edi ...</p>
849
- <small>von <a href="http://at.linkedin.com/in/timotions">Harry Timons</a>am <a href="#">18.08.2010</a></small>
850
- </li>
851
- </ul>
852
- </div>
853
-
854
- <div class="grid_4">
855
- <h3>Twitter Meldungen</h3>
856
- <small>Aktuellste Tweets ..</small>
857
- <hr />
858
- <ul>
859
-
860
-
861
-
862
- <li>
863
- <p>#Chef Whips Up a Mediawiki #LAMP Stack for You! <a class="twitter_link" href="http://j.mp/mzCRzi">http://j.mp/mzCRzi</a></p>
864
- <small><a href="#">2 Tage</a> zuvor, von <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a></small>
865
- </li>
866
-
867
- <li>
868
- <p>RT <a class="twitter_link" href="http://twitter.com/patrickdebois">@patrickdebois</a>: good read on deploying window stuff with #opscode chef - <a class="twitter_link" href="http://bit.ly/khy0qb">http://bit.ly/khy0qb</a></p>
869
- <small><a href="#">4 Tage</a> zuvor, von <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a></small>
870
- </li>
871
-
872
- <li>
873
- <p>“<a class="twitter_link" href="http://twitter.com/github_rb">@github_rb</a>: chef-dominodes - A #Chef resource for mutual exclusion of blocks of recipe code. Useful for cross-cluster <a class="twitter_link" href="http://t.co/05Hks96”">http://t.co/05Hks96”</a></p>
874
- <small><a href="#">5 Tage</a> zuvor, von <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a></small>
875
- </li>
876
-
877
-
878
-
879
- </ul>
880
- <a href="http://twitter.com/_iteh_" class="simpleButton">folgen Sie iTeh auf Twitter</a>
881
-
882
- </div>
883
-
884
- <div class="grid_4">
885
- <h3>in Kontakt treten?</h3>
886
- <small>Sie brauchen ein Angebot, oder wollen einfach in Kontakt treten?</small>
887
- <hr />
888
-
889
- <form action="/de/kontakt/" method="post" enctype="multipart/form-data" id="mailer">
890
- <div class="contactForm">
891
- <p>
892
- <input type="text" value="Ihr Name" name="name" class="name textInput" id="name" value="Ihr Name" />
893
- </p>
894
- <p>
895
- <input type="text" value="Ihre E-Mail" name="email" class="email textInput" id="email" value="Ihre E-Mail" />
896
- </p>
897
- <div class="textarea">
898
- <div class="top"></div>
899
- <textarea class="message textInput required true" id="message" rows="11" cols="25" name="mailer[message]">Ihre Nachricht</textarea><input type="hidden" name="mailer[required][message]" value="true" />
900
- <div class="bottom"></div>
901
- </div>
902
- <small>Alle Felder sind notwendig</small>
903
- <input class="button" type="submit" value="Send" />
904
- <img class="loadingImage noBorder" src="/images/loadingBlack.gif" alt="Loading" />
905
- <div class="responseText"></div>
906
- </div>
907
- </form>
908
- <script type="text/javascript">
909
- function showSubmitPlaceholder()
910
- {
911
- var submitplaceholder = document.getElementById("submit-placeholder-part");
912
- if (submitplaceholder != null)
913
- {
914
- submitplaceholder.style.display="";
915
- }
916
- }
917
- </script>
918
-
919
- </div>
920
-
921
- <div class="clear"></div>
922
- </div>
923
-
924
- <hr />
925
-
926
- <div id="bottomFooter" class="grid_16">
927
- <p class="copyright">Copyright &copy; 2010 iTeh DI Edmund Siegfried Haselwanter. Alle Rechte vorbehalten. <br/>Leitnergasse 16, 8010 Graz. Tel.: +43 676 3282554</p>
928
- <ul class="simpleMenu">
929
- <li><a href="/de/ueber-uns">ÜBER UNS</a></li>
930
- <li><a href="/de/services">SERVICES</a></li>
931
- <li><a href="/de/projekte">PROJEKTE</a></li>
932
- <!-- li><a href="/de/fallstudien">FALL STUDIEN</a></li -->
933
- <li><a href="/de/blog">WEBLOG</a></li>
934
- <li><a href="/de/kontakt">KONTAKT</a></li>
935
- <li><a href="/de/impressum">IMPRESSUM</a></li>
936
- <li><a href="/de/agb">AGB</a></li>
937
- <li><a href="/rss">RSS</a></li>
938
- </ul>
939
-
940
- </div>
941
-
942
- <div class="clear"></div>
943
-
944
- </div><!-- end wrap -->
945
- </div><!-- end footer -->
946
-
947
- <script src="/sns-js/iteh.js?1270111432" type="text/javascript"></script>
948
-
949
-
950
- <script type="text/javascript" src="/js/homepage.js"></script>
951
-
952
-
953
-
954
- <script type="text/javascript" charset="utf-8">
955
- $(document).ready(function(){
956
- $.prettySociable();
957
- });
958
- </script>
959
- <script type="text/javascript" src="/js/projectspage.js"></script>
960
- <script type="text/javascript">
961
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
962
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
963
-
964
- </script>
965
- <script type="text/javascript">
966
- var pageTracker = _gat._getTracker("UA-4839558-9");
967
- pageTracker._initData();
968
- pageTracker._trackPageview();
969
- </script>
970
- </body>
971
- </html>