13
Offline Hoogleで何処でもはすはす Offline Hoogleで何処でもはすはす Offline Hoogleで何処でもはすはす Offline Hoogleで何処でもはすはす Offline Hoogleで何処でもはすはす Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe

Offline Hoogleで何処でもはすはす

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Offline Hoogleで何処でもはすはす

Offline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはす

Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe

Page 2: Offline Hoogleで何処でもはすはす

フグってますか?フグってますか?フグってますか?フグってますか?フグってますか?

もちろんですよ! 毎日がエブリディ!もちろんですよ! 毎日がエブリディ!もちろんですよ! 毎日がエブリディ!もちろんですよ! 毎日がエブリディ!もちろんですよ! 毎日がエブリディ!

Page 3: Offline Hoogleで何処でもはすはす

でもちょっと不満が。。。でもちょっと不満が。。。でもちょっと不満が。。。でもちょっと不満が。。。でもちょっと不満が。。。

☆ インターネット不通でも使いたい☆ インターネット不通でも使いたい☆ インターネット不通でも使いたい☆ インターネット不通でも使いたい☆ インターネット不通でも使いたい

☆ 自作ライブラリを検索したい☆ 自作ライブラリを検索したい☆ 自作ライブラリを検索したい☆ 自作ライブラリを検索したい☆ 自作ライブラリを検索したい

☆ hoogleプロセス起動するのが面倒☆ hoogleプロセス起動するのが面倒☆ hoogleプロセス起動するのが面倒☆ hoogleプロセス起動するのが面倒☆ hoogleプロセス起動するのが面倒

とかとかとかとかとかとかとかとかとかとか

Page 4: Offline Hoogleで何処でもはすはす

そこでDebian!そこでDebian!そこでDebian!そこでDebian!そこでDebian!

Offline対応Hoogleパッケージが入るらしい。Offline対応Hoogleパッケージが入るらしい。Offline対応Hoogleパッケージが入るらしい。Offline対応Hoogleパッケージが入るらしい。Offline対応Hoogleパッケージが入るらしい。$ sudo apt-get install apache2$ sudo dpkg -i hoogle_4.2.10-2_amd64.deb以前に未選択のパッケージ hoogle を選択しています。(データベースを読み込んでいます ... 現在 598057 個のファイルとディレクトリがインストールされています。)(hoogle_4.2.10-2_amd64.deb から) hoogle を展開しています...hoogle (4.2.10-2) を設定しています ...Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases... doneCombining 3 databases

$ sudo apt-get install apache2$ sudo dpkg -i hoogle_4.2.10-2_amd64.deb以前に未選択のパッケージ hoogle を選択しています。(データベースを読み込んでいます ... 現在 598057 個のファイルとディレクトリがインストールされています。)(hoogle_4.2.10-2_amd64.deb から) hoogle を展開しています...hoogle (4.2.10-2) を設定しています ...Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases... doneCombining 3 databases

$ sudo apt-get install apache2$ sudo dpkg -i hoogle_4.2.10-2_amd64.deb以前に未選択のパッケージ hoogle を選択しています。(データベースを読み込んでいます ... 現在 598057 個のファイルとディレクトリがインストールされています。)(hoogle_4.2.10-2_amd64.deb から) hoogle を展開しています...hoogle (4.2.10-2) を設定しています ...Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases... doneCombining 3 databases

$ sudo apt-get install apache2$ sudo dpkg -i hoogle_4.2.10-2_amd64.deb以前に未選択のパッケージ hoogle を選択しています。(データベースを読み込んでいます ... 現在 598057 個のファイルとディレクトリがインストールされています。)(hoogle_4.2.10-2_amd64.deb から) hoogle を展開しています...hoogle (4.2.10-2) を設定しています ...Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases... doneCombining 3 databases

$ sudo apt-get install apache2$ sudo dpkg -i hoogle_4.2.10-2_amd64.deb以前に未選択のパッケージ hoogle を選択しています。(データベースを読み込んでいます ... 現在 598057 個のファイルとディレクトリがインストールされています。)(hoogle_4.2.10-2_amd64.deb から) hoogle を展開しています...hoogle (4.2.10-2) を設定しています ...Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases... doneCombining 3 databases

apache2とhoogleパッケージをインストールするだけで...apache2とhoogleパッケージをインストールするだけで...apache2とhoogleパッケージをインストールするだけで...apache2とhoogleパッケージをインストールするだけで...apache2とhoogleパッケージをインストールするだけで...

Page 5: Offline Hoogleで何処でもはすはす

パッケージ入れるだけでフグれちゃう!パッケージ入れるだけでフグれちゃう!パッケージ入れるだけでフグれちゃう!パッケージ入れるだけでフグれちゃう!パッケージ入れるだけでフグれちゃう!

Page 6: Offline Hoogleで何処でもはすはす

ローカルドキュメント読めちゃう!ローカルドキュメント読めちゃう!ローカルドキュメント読めちゃう!ローカルドキュメント読めちゃう!ローカルドキュメント読めちゃう!

Page 7: Offline Hoogleで何処でもはすはす

いやーDebianっていいもんですね!いやーDebianっていいもんですね!いやーDebianっていいもんですね!いやーDebianっていいもんですね!いやーDebianっていいもんですね!

おわりおわりおわりおわりおわり

Page 8: Offline Hoogleで何処でもはすはす

だとヒドすぎるのでだとヒドすぎるのでだとヒドすぎるのでだとヒドすぎるのでだとヒドすぎるので

しくみを解説します。しくみを解説します。しくみを解説します。しくみを解説します。しくみを解説します。

まず、Offline対応Hoogleをgit cloneしましょう。まず、Offline対応Hoogleをgit cloneしましょう。まず、Offline対応Hoogleをgit cloneしましょう。まず、Offline対応Hoogleをgit cloneしましょう。まず、Offline対応Hoogleをgit cloneしましょう。$ pwd/home/kiwamu/src$ git clone git://github.com/master-q/hoogle.git$ cd hoogle/$ git checkout -b cgi_application origin/feature/cgi_application

$ pwd/home/kiwamu/src$ git clone git://github.com/master-q/hoogle.git$ cd hoogle/$ git checkout -b cgi_application origin/feature/cgi_application

$ pwd/home/kiwamu/src$ git clone git://github.com/master-q/hoogle.git$ cd hoogle/$ git checkout -b cgi_application origin/feature/cgi_application

$ pwd/home/kiwamu/src$ git clone git://github.com/master-q/hoogle.git$ cd hoogle/$ git checkout -b cgi_application origin/feature/cgi_application

$ pwd/home/kiwamu/src$ git clone git://github.com/master-q/hoogle.git$ cd hoogle/$ git checkout -b cgi_application origin/feature/cgi_application

Page 9: Offline Hoogleで何処でもはすはす

ちょっと危険なpatchをあてますちょっと危険なpatchをあてますちょっと危険なpatchをあてますちょっと危険なpatchをあてますちょっと危険なpatchをあてます

ローカルのファイル群が全部CGI経由で読めちゃう。危険!ローカルのファイル群が全部CGI経由で読めちゃう。危険!ローカルのファイル群が全部CGI経由で読めちゃう。危険!ローカルのファイル群が全部CGI経由で読めちゃう。危険!ローカルのファイル群が全部CGI経由で読めちゃう。危険!$ git diffdiff --git a/src/Web/All.hs b/src/Web/All.hsindex 97295bf..d9755d1 100644--- a/src/Web/All.hs+++ b/src/Web/All.hs@@ -24,7 +24,7 @@ action q = do where go t d p | "/res/" `isPrefixOf` p = serveFile True $ d </> "resources" </> takeFileName p- go t d p | "/file/usr/share/doc/" `isPrefixOf` p =+ go t d p | "/file/" `isPrefixOf` p = let p' = if "/" `isSuffixOf` p then p ++ "index.html" else p in rewriteRootLinks =<< serveFile False (fromJust (stripPrefix "/file" p')) go t _ _ = rewriteRootLinks =<< response responseArgs{templates=t} q

$ git diffdiff --git a/src/Web/All.hs b/src/Web/All.hsindex 97295bf..d9755d1 100644--- a/src/Web/All.hs+++ b/src/Web/All.hs@@ -24,7 +24,7 @@ action q = do where go t d p | "/res/" `isPrefixOf` p = serveFile True $ d </> "resources" </> takeFileName p- go t d p | "/file/usr/share/doc/" `isPrefixOf` p =+ go t d p | "/file/" `isPrefixOf` p = let p' = if "/" `isSuffixOf` p then p ++ "index.html" else p in rewriteRootLinks =<< serveFile False (fromJust (stripPrefix "/file" p')) go t _ _ = rewriteRootLinks =<< response responseArgs{templates=t} q

$ git diffdiff --git a/src/Web/All.hs b/src/Web/All.hsindex 97295bf..d9755d1 100644--- a/src/Web/All.hs+++ b/src/Web/All.hs@@ -24,7 +24,7 @@ action q = do where go t d p | "/res/" `isPrefixOf` p = serveFile True $ d </> "resources" </> takeFileName p- go t d p | "/file/usr/share/doc/" `isPrefixOf` p =+ go t d p | "/file/" `isPrefixOf` p = let p' = if "/" `isSuffixOf` p then p ++ "index.html" else p in rewriteRootLinks =<< serveFile False (fromJust (stripPrefix "/file" p')) go t _ _ = rewriteRootLinks =<< response responseArgs{templates=t} q

$ git diffdiff --git a/src/Web/All.hs b/src/Web/All.hsindex 97295bf..d9755d1 100644--- a/src/Web/All.hs+++ b/src/Web/All.hs@@ -24,7 +24,7 @@ action q = do where go t d p | "/res/" `isPrefixOf` p = serveFile True $ d </> "resources" </> takeFileName p- go t d p | "/file/usr/share/doc/" `isPrefixOf` p =+ go t d p | "/file/" `isPrefixOf` p = let p' = if "/" `isSuffixOf` p then p ++ "index.html" else p in rewriteRootLinks =<< serveFile False (fromJust (stripPrefix "/file" p')) go t _ _ = rewriteRootLinks =<< response responseArgs{templates=t} q

$ git diffdiff --git a/src/Web/All.hs b/src/Web/All.hsindex 97295bf..d9755d1 100644--- a/src/Web/All.hs+++ b/src/Web/All.hs@@ -24,7 +24,7 @@ action q = do where go t d p | "/res/" `isPrefixOf` p = serveFile True $ d </> "resources" </> takeFileName p- go t d p | "/file/usr/share/doc/" `isPrefixOf` p =+ go t d p | "/file/" `isPrefixOf` p = let p' = if "/" `isSuffixOf` p then p ++ "index.html" else p in rewriteRootLinks =<< serveFile False (fromJust (stripPrefix "/file" p')) go t _ _ = rewriteRootLinks =<< response responseArgs{templates=t} q

Page 10: Offline Hoogleで何処でもはすはす

HoogleをビルドしまっしょHoogleをビルドしまっしょHoogleをビルドしまっしょHoogleをビルドしまっしょHoogleをビルドしまっしょ$ pwd/home/kiwamu/src/hoogle$ cabal install--snip--$ ls ~/.cabal/bin/hoogle/home/kiwamu/.cabal/bin/hoogle*$ ls ~/.cabal/share/hoogle-4.2.13resources/

$ pwd/home/kiwamu/src/hoogle$ cabal install--snip--$ ls ~/.cabal/bin/hoogle/home/kiwamu/.cabal/bin/hoogle*$ ls ~/.cabal/share/hoogle-4.2.13resources/

$ pwd/home/kiwamu/src/hoogle$ cabal install--snip--$ ls ~/.cabal/bin/hoogle/home/kiwamu/.cabal/bin/hoogle*$ ls ~/.cabal/share/hoogle-4.2.13resources/

$ pwd/home/kiwamu/src/hoogle$ cabal install--snip--$ ls ~/.cabal/bin/hoogle/home/kiwamu/.cabal/bin/hoogle*$ ls ~/.cabal/share/hoogle-4.2.13resources/

$ pwd/home/kiwamu/src/hoogle$ cabal install--snip--$ ls ~/.cabal/bin/hoogle/home/kiwamu/.cabal/bin/hoogle*$ ls ~/.cabal/share/hoogle-4.2.13resources/

その後テンプレートをCGI対応させましょう。その後テンプレートをCGI対応させましょう。その後テンプレートをCGI対応させましょう。その後テンプレートをCGI対応させましょう。その後テンプレートをCGI対応させましょう。$ ./misc/template-for-cgi$ ./misc/template-for-cgi$ ./misc/template-for-cgi$ ./misc/template-for-cgi$ ./misc/template-for-cgi

Page 11: Offline Hoogleで何処でもはすはす

Hoogle Databaseを生成Hoogle Databaseを生成Hoogle Databaseを生成Hoogle Databaseを生成Hoogle Databaseを生成$ ./misc/update-hoogle--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/Keywordswww.haskell.org (www.haskell.org) をDNSに問いあわせています... 78.46.100.180www.haskell.org (www.haskell.org)|78.46.100.180|:80 に接続しています... 接続しました。--snip--2012-10-13 16:54:52 (48.8 KB/s) - `download/keyword.txt' へ保存終了 [81442]

Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases........................................ doneCombining 137 databases

$ ./misc/update-hoogle--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/Keywordswww.haskell.org (www.haskell.org) をDNSに問いあわせています... 78.46.100.180www.haskell.org (www.haskell.org)|78.46.100.180|:80 に接続しています... 接続しました。--snip--2012-10-13 16:54:52 (48.8 KB/s) - `download/keyword.txt' へ保存終了 [81442]

Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases........................................ doneCombining 137 databases

$ ./misc/update-hoogle--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/Keywordswww.haskell.org (www.haskell.org) をDNSに問いあわせています... 78.46.100.180www.haskell.org (www.haskell.org)|78.46.100.180|:80 に接続しています... 接続しました。--snip--2012-10-13 16:54:52 (48.8 KB/s) - `download/keyword.txt' へ保存終了 [81442]

Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases........................................ doneCombining 137 databases

$ ./misc/update-hoogle--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/Keywordswww.haskell.org (www.haskell.org) をDNSに問いあわせています... 78.46.100.180www.haskell.org (www.haskell.org)|78.46.100.180|:80 に接続しています... 接続しました。--snip--2012-10-13 16:54:52 (48.8 KB/s) - `download/keyword.txt' へ保存終了 [81442]

Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases........................................ doneCombining 137 databases

$ ./misc/update-hoogle--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/Keywordswww.haskell.org (www.haskell.org) をDNSに問いあわせています... 78.46.100.180www.haskell.org (www.haskell.org)|78.46.100.180|:80 に接続しています... 接続しました。--snip--2012-10-13 16:54:52 (48.8 KB/s) - `download/keyword.txt' へ保存終了[81442]

Starting keywordConverting keyword... doneFinished keywordData generation completeConverting databases........................................ doneCombining 137 databases

keyword.txtを取得するのだけネット使うkeyword.txtを取得するのだけネット使うkeyword.txtを取得するのだけネット使うkeyword.txtを取得するのだけネット使うkeyword.txtを取得するのだけネット使う

Page 12: Offline Hoogleで何処でもはすはす

CGIの設定CGIの設定CGIの設定CGIの設定CGIの設定

たぶんこんな感じ。たぶんこんな感じ。たぶんこんな感じ。たぶんこんな感じ。たぶんこんな感じ。$ cd /usr/lib/cgi-bin$ sudo cp ~/.cabal/bin/hoogle ./$ ls -l hoogle-rwxr-xr-x 1 root root 17085624 10月 13 17:04 hoogle*

$ cd /usr/lib/cgi-bin$ sudo cp ~/.cabal/bin/hoogle ./$ ls -l hoogle-rwxr-xr-x 1 root root 17085624 10月 13 17:04 hoogle*

$ cd /usr/lib/cgi-bin$ sudo cp ~/.cabal/bin/hoogle ./$ ls -l hoogle-rwxr-xr-x 1 root root 17085624 10月 13 17:04 hoogle*

$ cd /usr/lib/cgi-bin$ sudo cp ~/.cabal/bin/hoogle ./$ ls -l hoogle-rwxr-xr-x 1 root root 17085624 10月 13 17:04 hoogle*

$ cd /usr/lib/cgi-bin$ sudo cp ~/.cabal/bin/hoogle ./$ ls -l hoogle-rwxr-xr-x 1 root root 17085624 10月 13 17:04 hoogle*

あと/etc/apache2/apache2.confとかいじらないといけないかもしれない。あと/etc/apache2/apache2.confとかいじらないといけないかもしれない。あと/etc/apache2/apache2.confとかいじらないといけないかもしれない。あと/etc/apache2/apache2.confとかいじらないといけないかもしれない。あと/etc/apache2/apache2.confとかいじらないといけないかもしれない。

Page 13: Offline Hoogleで何処でもはすはす

後はブラウザで読みまくるだけさー後はブラウザで読みまくるだけさー後はブラウザで読みまくるだけさー後はブラウザで読みまくるだけさー後はブラウザで読みまくるだけさー

やったね!やったね!やったね!やったね!やったね!