SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Offline Hoogleで何処でもはすはす


      Kiwamu Okabe
フグってますか?
もちろんですよ! 毎日がエブリディ!
でもちょっと不満が。。。
☆ インターネット不通でも使いたい
☆ 自作ライブラリを検索したい
☆ hoogleプロセス起動するのが面倒
とかとか
そこでDebian!
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 keyword
Converting keyword... done
Finished keyword
Data generation complete
Converting databases... done
Combining 3 databases


apache2とhoogleパッケージをインストール
するだけで...
パッケージ入れるだけでフグれちゃう!
ローカルドキュメント読めちゃう!
いやーDebianっていいもんですね!
おわり
だとヒドすぎるので
しくみを解説します。
まず、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
ちょっと危険なpatchをあてます
ローカルのファイル群が全部CGI経由で読め
ちゃう。危険!
$ git diff
diff --git a/src/Web/All.hs b/src/Web/All.hs
index 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
Hoogleをビルドしまっしょ
$ pwd
/home/kiwamu/src/hoogle
$ cabal install
--snip--
$ ls ~/.cabal/bin/hoogle
/home/kiwamu/.cabal/bin/hoogle*
$ ls ~/.cabal/share/hoogle-4.2.13
resources/


その後テンプレートをCGI対応させましょう。
$ ./misc/template-for-cgi
Hoogle Databaseを生成
$ ./misc/update-hoogle
--2012-10-13 16:54:50-- http://www.haskell.org/haskellwiki/
Keywords
www.haskell.org (www.haskell.org) をDNSに問いあわせています...
78.46.100.180
www.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 keyword
Converting keyword... done
Finished keyword
Data generation complete
Converting databases........................................ done
Combining 137 databases


keyword.txtを取得するのだけネット使う
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*


あと/etc/apache2/apache2.confとかいじ
らないといけないかもしれない。
後はブラウザで読みまくるだけさー
やったね!

Contenu connexe

Tendances

2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
airtoxin Ishii
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)
Kimiyuki Yamauchi
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
博文 斉藤
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
Satomi Tsujita
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
Kohei Noda
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
Naoya Inada
 

Tendances (20)

ネットワーク第9回
ネットワーク第9回ネットワーク第9回
ネットワーク第9回
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
Shizupptx
ShizupptxShizupptx
Shizupptx
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
Fig
FigFig
Fig
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
 
Web 02
Web 02Web 02
Web 02
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
Pycon2014 django performance
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performance
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
 

En vedette (7)

蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?蜘蛛の巣から抜け出すには?
蜘蛛の巣から抜け出すには?
 
Python Autotest pdc2008w
Python Autotest pdc2008wPython Autotest pdc2008w
Python Autotest pdc2008w
 
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す 後半
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す 後半第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す 後半
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す 後半
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)
 
初心者Scala in F@N 第3回 アイスブレイク
初心者Scala in F@N 第3回 アイスブレイク初心者Scala in F@N 第3回 アイスブレイク
初心者Scala in F@N 第3回 アイスブレイク
 
集合知プログラミング第2章推薦を行う
集合知プログラミング第2章推薦を行う集合知プログラミング第2章推薦を行う
集合知プログラミング第2章推薦を行う
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 

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

Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
do_aki
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
Atsushi Odagiri
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
tamtam180
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
id774
 

Similaire à Offline Hoogleで何処でもはすはす (20)

Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
Yohes kitchen
Yohes kitchenYohes kitchen
Yohes kitchen
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
 
HAWQをCDHで動かしてみた
HAWQをCDHで動かしてみたHAWQをCDHで動かしてみた
HAWQをCDHで動かしてみた
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
 
ゾウ使いへの第一歩
ゾウ使いへの第一歩ゾウ使いへの第一歩
ゾウ使いへの第一歩
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
 
Wiki設置するならgitit!
Wiki設置するならgitit!Wiki設置するならgitit!
Wiki設置するならgitit!
 

Offline Hoogleで何処でもはすはす