Hatena::Grouphaskell

eagletmtの日記 このページをアンテナに追加

 | 

2010-08-23

FFI を利用する (2) hsc2hs

| 18:14 |  FFI を利用する (2) hsc2hs - eagletmtの日記 を含むブックマーク はてなブックマーク -  FFI を利用する (2) hsc2hs - eagletmtの日記  FFI を利用する (2) hsc2hs - eagletmtの日記 のブックマークコメント

FFI とは直接関係は無いが,もう少し Haskell から使いやすい関数にしてみる.

定数オプション

まず htmlReadMemory に渡す定数オプションをそのまま数値として渡すのは使いにくい.

そこで hsc2hs を利用してもうちょっとわかりやすい形で指定できるようにする.

#include <libxml/HTMLparser.h>
newtype HtmlParserOption = HtmlParserOption { unHtmlParserOption :: CInt }
#{enum HtmlParserOption, HtmlParserOption
  , recover = HTML_PARSE_RECOVER
  , noError = HTML_PARSE_NOERROR
  , noWarning = HTML_PARSE_NOWARNING
  , pedantic = HTML_PARSE_PEDANTIC
  , noBlanks = HTML_PARSE_NOBLANKS
  , noNet = HTML_PARSE_NONET
  , noImplied = HTML_PARSE_NOIMPLIED
  , compact = HTML_PARSE_COMPACT
  }

foldOpts :: [HtmlParserOption] -> CInt
foldOpts = foldl (\a -> (a .|. ) . unHtmlParserOption) 0

data XmlDocTag
newtype XmlDoc = MkXmlDoc (ForeignPtr XmlDocTag)

parseHTML :: B.ByteString -> String -> String -> [HtmlParserOption] -> XmlDoc
parseHTML src url encoding opts = unsafePerformIO $ do
  ptr <- B.unsafeUseAsCStringLen src $
          \(cstr,len) -> withCString encoding $
            \e -> withCString url $
              \u -> c_htmlReadMemory cstr (fromIntegral len) e u (foldOpts opts)
  fptr <- newForeignPtr ptr $ c_xmlFreeDoc ptr
  return $ MkXmlDoc fptr
foreign import ccall "htmlReadMemory" c_htmlReadMemory :: CString -> CInt -> CString -> CString -> CInt -> IO (Ptr XmlDocTag)
foreign import ccall "xmlFreeDoc" c_xmlFreeDoc :: Ptr XmlDocTag -> IO ()

こんなかんじに LibXml.hsc に書いて

% hsc2hs `xml2-config --cflags` LibXml.hsc

とすると LibXml.hs が生成されて,recover, noError といった定数が適切に定義されている.

NULL と Maybe

ドキュメントによると htmlReadMemory の encoding は特に指定しないときは NULL を渡すらしい.

C のライブラリではこのような仕様の関数がよくある.

これを Haskell で表現するには Maybe が適当だろう.

ユーティリティとして

withMaybeCString :: Maybe String -> (CString -> IO a) -> IO a
withMaybeCString (Just str) act = withCString str act
withMaybeCString Nothing act = act nullPtr

なんかを定義して

parseHTML :: B.ByteString -> String -> Maybe String -> [HtmlParserOption] -> XmlDoc
parseHTML src url encoding opts = unsafePerformIO $ do
  ptr <- B.unsafeUseAsCStringLen src $
          \(cstr,len) -> withMaybeCString encoding $
            \e -> withCString url $
              \u -> c_htmlReadMemory cstr (fromIntegral len) e u (foldOpts opts)
  fptr <- newForeignPtr ptr $ c_xmlFreeDoc ptr
  return $ MkXmlDoc fptr

とするとよさそう.


さらに XmlDoc から文字列として XPath で指定した要素を返す関数として

xpath :: String -> XmlDoc -> Maybe ([Node],Int)

を定義してみる.

libxml 側の API としては http://www.xmlsoft.org/html/libxml-xpath.html にあるものを使う.

data NodeTag
newtype Node = MkNode (Ptr NodeTag)
data NodeSetTag
data XPathContextTag
data XPathObjectTag

xpath :: String -> XmlDoc -> Maybe ([Node],Int)
xpath s (MkXmlDoc docPtr) = unsafePerformIO $ do
  ctx <- withForeignPtr docPtr c_xmlXPathNewContext
  obj <- withCString s (`c_xmlXPathEvalExpression` ctx)
  if obj == nullPtr
    then return Nothing
    else do
      nodes <- (#peek xmlXPathObject, nodesetval) obj :: IO (Ptr NodeSetTag)
      if nodes == nullPtr
        then c_xmlXPathFreeObject obj >> return Nothing
        else do
          nr <- fromIntegral <$> ((#peek xmlNodeSet, nodeNr) nodes :: IO CInt)
          tab <- (#peek xmlNodeSet, nodeTab) nodes :: IO (Ptr (Ptr NodeTag))
          ns <- map MkNode <$> peekArray nr tab
          c_xmlXPathFreeObject obj
          return $ Just (ns,nr)
foreign import ccall "xmlXPathNewContext" c_xmlXPathNewContext :: Ptr XmlDocTag -> IO (Ptr XPathContextTag)
foreign import ccall "xmlXPathEvalExpression" c_xmlXPathEvalExpression :: CString -> Ptr XPathContextTag -> IO (Ptr XPathObjectTag)
foreign import ccall "xmlXPathFreeObject" c_xmlXPathFreeObject :: Ptr XPathObjectTag -> IO ()

NULL でエラーチェックとか懐しいですね!!

構造体のメンバにアクセスするには hsc2hs の機能を使って (#peek struct_type, member_name) で行える.

C の配列をリストとして Haskell の表現に直すときには peekArray が便利.

NourMaNourMa2013/03/29 15:14I just hope whoever wtiers these keeps writing more!

hmdicqgpubhmdicqgpub2013/03/30 14:30iW5Mb1 <a href="http://ygnnewkfwyhb.com/">ygnnewkfwyhb</a>

xpfxoyufxpfxoyuf2013/03/31 22:03Cz3Fh4 , [url=http://flknbtjovirt.com/]flknbtjovirt[/url], [link=http://kdoazlurskqz.com/]kdoazlurskqz[/link], http://fzjqgrfcplbs.com/

qvgopmulirqvgopmulir2013/04/01 10:49Ac343G , [url=http://csqammgdnmrq.com/]csqammgdnmrq[/url], [link=http://kbtjeonmbhzm.com/]kbtjeonmbhzm[/link], http://ntgiiffhvwpi.com/

ofiiceiyaofiiceiya2017/11/27 04:26http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

ociyyeegiqexoociyyeegiqexo2017/11/27 04:43http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

uunicohuunicoh2017/11/27 04:43http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

exefaiyexefaiy2017/11/27 04:56http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

oboavuqfixioboavuqfixi2017/11/27 04:58http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

ileimazooroileimazooro2017/11/27 05:01http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

ukalewowikexaukalewowikexa2017/11/27 05:14http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

eduvviyeduvviy2017/11/28 04:05http://price-of-levitra-20mg.mobi/ - price-of-levitra-20mg.mobi.ankor <a href="http://buyventolin-online.mobi/">buyventolin-online.mobi.ankor</a> http://buylevitrageneric.mobi/

vwccnetlermavwccnetlerma2018/03/22 01:22https://bitcoinstock.us.com - bitcoin trade
<a href=" https://bitcoinstock.us.com ">how do i buy bitcoin stock</a>
<a href="https://bitcoinstock.us.com">buying bitcoin</a>

AysjzdunseAysjzdunse2018/03/22 04:36http://dkjshye7s632.com
You made some first rate factors there. I looked on the web for the issue and located most people will go along with with your website.

aaotwpclermaaaotwpclerma2018/03/23 05:06https://bitcoinstock.us.com - what is bitcoin currency
<a href=" https://bitcoinstock.us.com ">bitcoin investment</a>
<a href="https://bitcoinstock.us.com">bit coin investment</a>

hethmImathethmImat2018/03/23 05:10https://buybitcoin.us.com - price of bitcoin today
<a href=" https://buybitcoin.us.com ">bitcoin futures trading</a>
<a href="https://buybitcoin.us.com">bitcoin trading platform</a>

ospapitkiospapitki2018/03/23 05:39https://howtoinvestinbitcoin.us.org - how to trade bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin price today</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin trading</a>

rldyijflermarldyijflerma2018/03/23 06:18https://bitcoinstock.us.com - is bitcoin a good investment 2017
<a href=" https://bitcoinstock.us.com ">best way to invest in bitcoin</a>
<a href="https://bitcoinstock.us.com">how to trade bitcoin</a>

naixlvdkinaixlvdki2018/03/23 06:38https://howtoinvestinbitcoin.us.org - bitcoin price today
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin investing</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin stock price</a>

budchImatbudchImat2018/03/23 07:10https://buybitcoin.us.com - bitcoin investing
<a href=" https://buybitcoin.us.com ">how does bitcoin work</a>
<a href="https://buybitcoin.us.com">bitcoin investment</a>

mctkpqzlermamctkpqzlerma2018/03/23 07:21https://bitcoinstock.us.com - investing in digital currency
<a href=" https://bitcoinstock.us.com ">invest bitcoin</a>
<a href="https://bitcoinstock.us.com">bitcoin cryptocurrency</a>

xxpstpdkixxpstpdki2018/03/23 07:21https://howtoinvestinbitcoin.us.org - today bitcoin price
<a href=" https://howtoinvestinbitcoin.us.org ">best way to invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">price of bitcoin today</a>

xsgrkvxkixsgrkvxki2018/03/23 08:21https://howtoinvestinbitcoin.us.org - how to buy bitcoin stock
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin conversion</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin trading platform</a>

tdlifuwlermatdlifuwlerma2018/03/23 08:40https://bitcoinstock.us.com - the next bitcoin investment
<a href=" https://bitcoinstock.us.com ">how much is bitcoin stock</a>
<a href="https://bitcoinstock.us.com">todays bitcoin value</a>

glnqwImatglnqwImat2018/03/23 09:33https://buybitcoin.us.com - bitcoin trading platform
<a href=" https://buybitcoin.us.com ">price of bitcoin today</a>
<a href="https://buybitcoin.us.com">should i invest in bitcoin</a>

oumntullermaoumntullerma2018/03/23 09:49https://bitcoinstock.us.com - how to trade bitcoin
<a href=" https://bitcoinstock.us.com ">where to buy bitcoin stock</a>
<a href="https://bitcoinstock.us.com">how do you invest in bitcoin</a>

zkmleuvkizkmleuvki2018/03/23 10:10https://howtoinvestinbitcoin.us.org - bitcoin investments
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin todays price</a>
<a href="https://howtoinvestinbitcoin.us.org">best way to invest in bitcoin</a>

gdmugaxlermagdmugaxlerma2018/03/23 10:59https://bitcoinstock.us.com - price of bitcoin today
<a href=" https://bitcoinstock.us.com ">bitcoin trust</a>
<a href="https://bitcoinstock.us.com">bitcoin stocks</a>

cqspwxakicqspwxaki2018/03/23 11:20https://howtoinvestinbitcoin.us.org - bitcoin price today
<a href=" https://howtoinvestinbitcoin.us.org ">investing in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin investment</a>

wmrychqkiwmrychqki2018/03/23 12:22https://howtoinvestinbitcoin.us.org - how to invest in bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">buying bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">how to invest in bitcoin for dummies</a>

igjregblermaigjregblerma2018/03/23 12:38https://bitcoinstock.us.com - how to invest in bitcoin
<a href=" https://bitcoinstock.us.com ">how to trade bitcoin</a>
<a href="https://bitcoinstock.us.com">best way to invest in bitcoin</a>

djmnqxslermadjmnqxslerma2018/03/23 15:09https://bitcoinstock.us.com - how to invest in digital currency
<a href=" https://bitcoinstock.us.com ">how to trade bitcoin online</a>
<a href="https://bitcoinstock.us.com">buy bitcoin</a>

buovoaukibuovoauki2018/03/23 15:14https://howtoinvestinbitcoin.us.org - what is bitcoin trading at
<a href=" https://howtoinvestinbitcoin.us.org ">is bitcoin a good investment 2017</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin stocks to invest in</a>

xhegxenkixhegxenki2018/03/23 16:11https://howtoinvestinbitcoin.us.org - is bitcoin a good investment 2017
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin investment trust gbtc</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin investing</a>

akaukrqlermaakaukrqlerma2018/03/23 16:23https://bitcoinstock.us.com - how to invest in digital currency
<a href=" https://bitcoinstock.us.com ">bitcoin stock</a>
<a href="https://bitcoinstock.us.com">trading bitcoin</a>

galnrImatgalnrImat2018/03/23 16:35https://buybitcoin.us.com - bitcoin futures trading
<a href=" https://buybitcoin.us.com ">how to trade bitcoin</a>
<a href="https://buybitcoin.us.com">bitcoin stock price</a>

difuxhvkidifuxhvki2018/03/23 17:09https://howtoinvestinbitcoin.us.org - bit coin investment
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin invest</a>
<a href="https://howtoinvestinbitcoin.us.org">how to invest in digital currency</a>

pzgovaflermapzgovaflerma2018/03/23 17:41https://bitcoinstock.us.com - bitcoin investment trust gbtc
<a href=" https://bitcoinstock.us.com ">best bitcoin trading platform</a>
<a href="https://bitcoinstock.us.com">bitcoin traders</a>

rsxfbtlkirsxfbtlki2018/03/23 18:03https://howtoinvestinbitcoin.us.org - real time bitcoin price
<a href=" https://howtoinvestinbitcoin.us.org ">invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin traders</a>

uagbdsnlermauagbdsnlerma2018/03/23 18:51https://bitcoinstock.us.com - bitcoin market price
<a href=" https://bitcoinstock.us.com ">how to trade bitcoin</a>
<a href="https://bitcoinstock.us.com">invest in bitcoin</a>

ulenwfnkiulenwfnki2018/03/23 18:57https://howtoinvestinbitcoin.us.org - best way to invest in bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">cryptocurrency bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">is bitcoin a good investment</a>

ylpxogvkiylpxogvki2018/03/23 19:57https://howtoinvestinbitcoin.us.org - bitcoin stock
<a href=" https://howtoinvestinbitcoin.us.org ">invest in bitcoin stock</a>
<a href="https://howtoinvestinbitcoin.us.org">how to trade bitcoin online</a>

ybasdoclermaybasdoclerma2018/03/23 20:16https://bitcoinstock.us.com - bitcoin investment trust
<a href=" https://bitcoinstock.us.com ">the next bitcoin investment</a>
<a href="https://bitcoinstock.us.com">today bitcoin price</a>

vmgkqslkivmgkqslki2018/03/23 20:53https://howtoinvestinbitcoin.us.org - bitcoin news today
<a href=" https://howtoinvestinbitcoin.us.org ">how to invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">trading bitcoin</a>

ivyjjoakiivyjjoaki2018/03/23 21:47https://howtoinvestinbitcoin.us.org - bitcoin trading price
<a href=" https://howtoinvestinbitcoin.us.org ">how to buy bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">how to invest in bitcoin stock</a>

xdnytImatxdnytImat2018/03/23 22:12https://buybitcoin.us.com - bitcoin trading platform
<a href=" https://buybitcoin.us.com ">bitcoin price today</a>
<a href="https://buybitcoin.us.com">bitcoin stock</a>

ngmjyqnkingmjyqnki2018/03/23 22:43https://howtoinvestinbitcoin.us.org - how to buy bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin market price</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin investments</a>

tijalzflermatijalzflerma2018/03/24 01:00https://bitcoinstock.us.com - where to buy bitcoin stock
<a href=" https://bitcoinstock.us.com ">bitcoin stocks</a>
<a href="https://bitcoinstock.us.com">invest in bitcoin stock</a>

huortylkihuortylki2018/03/24 01:36https://howtoinvestinbitcoin.us.org - how to buy bitcoin stock
<a href=" https://howtoinvestinbitcoin.us.org ">what is bitcoin trading at</a>
<a href="https://howtoinvestinbitcoin.us.org">real time bitcoin price</a>

njkmuhrlermanjkmuhrlerma2018/03/24 02:08https://bitcoinstock.us.com - how to trade bitcoin
<a href=" https://bitcoinstock.us.com ">best way to invest in bitcoin</a>
<a href="https://bitcoinstock.us.com">bitcoin stocks</a>

tgfvqtnkitgfvqtnki2018/03/24 02:27https://howtoinvestinbitcoin.us.org - bitcoin trade
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin stock price</a>
<a href="https://howtoinvestinbitcoin.us.org">is bitcoin a good investment 2017</a>

vqaurbylermavqaurbylerma2018/03/24 03:16https://bitcoinstock.us.com - invest in bitcoin
<a href=" https://bitcoinstock.us.com ">bitcoin cost today</a>
<a href="https://bitcoinstock.us.com">is bitcoin a good investment</a>

nvyxdrskinvyxdrski2018/03/24 03:17https://howtoinvestinbitcoin.us.org - what exactly is bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">buying bitcoin</a>

dkqjlImatdkqjlImat2018/03/24 03:19https://buybitcoin.us.com - how to buy bitcoin stock
<a href=" https://buybitcoin.us.com ">trade bitcoin</a>
<a href="https://buybitcoin.us.com">bitcoin futures trading</a>

esxvpoylermaesxvpoylerma2018/03/24 04:22https://bitcoinstock.us.com - investing in bitcoin
<a href=" https://bitcoinstock.us.com ">invest in bitcoin stock</a>
<a href="https://bitcoinstock.us.com">bitcoin investment calculator</a>

cmvkkImatcmvkkImat2018/03/24 04:26https://buybitcoin.us.com - bitcoin investment trust
<a href=" https://buybitcoin.us.com ">bitcoin investment trust</a>
<a href="https://buybitcoin.us.com">bitcoin investment</a>

iwcdgevkiiwcdgevki2018/03/24 04:29https://howtoinvestinbitcoin.us.org - bitcoin investment
<a href=" https://howtoinvestinbitcoin.us.org ">investing in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">is bitcoin a good investment 2017</a>

rhtohjblermarhtohjblerma2018/03/24 05:29https://bitcoinstock.us.com - investing in bitcoin
<a href=" https://bitcoinstock.us.com ">bitcoin trading platforms</a>
<a href="https://bitcoinstock.us.com">is bitcoin a good investment</a>

vdoudiskivdoudiski2018/03/24 05:30https://howtoinvestinbitcoin.us.org - is bitcoin a good investment
<a href=" https://howtoinvestinbitcoin.us.org ">how do you invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin fund</a>

ApdzkdunseApdzkdunse2018/03/24 06:20https://onlinecasinoplay24.com - top rated free online casino games
<a href="https://onlinecasinoplay24.com">safe online casinos real money</a>
<a href=" https://onlinecasinoplay24.com ">doubledown casino free slots</a>

lwtckxlkilwtckxlki2018/03/24 06:30https://howtoinvestinbitcoin.us.org - digital currency stocks
<a href=" https://howtoinvestinbitcoin.us.org ">is bitcoin a good investment</a>
<a href="https://howtoinvestinbitcoin.us.org">buy bitcoin</a>

vcokwnjlermavcokwnjlerma2018/03/24 06:36https://bitcoinstock.us.com - best way to invest in bitcoin
<a href=" https://bitcoinstock.us.com ">bitcoin stocks to invest in</a>
<a href="https://bitcoinstock.us.com">bitcoin current price</a>

wttmwwmkiwttmwwmki2018/03/24 07:21https://howtoinvestinbitcoin.us.org - best way to invest in bitcoin
<a href=" https://howtoinvestinbitcoin.us.org ">best way to invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">invest in bitcoin</a>

ltmfmbnkiltmfmbnki2018/03/24 08:13https://howtoinvestinbitcoin.us.org - bitcoin invest
<a href=" https://howtoinvestinbitcoin.us.org ">how to invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">how to buy bitcoin</a>

ndtsrImatndtsrImat2018/03/24 08:23https://buybitcoin.us.com - trading bitcoin
<a href=" https://buybitcoin.us.com ">trade bitcoin</a>
<a href="https://buybitcoin.us.com">bitcoin news today</a>

xspkffflermaxspkffflerma2018/03/24 08:52https://bitcoinstock.us.com - is bitcoin a good investment
<a href=" https://bitcoinstock.us.com ">bitcoin investment trust</a>
<a href="https://bitcoinstock.us.com">invest bitcoin</a>

nrfxzdmkinrfxzdmki2018/03/24 09:33https://howtoinvestinbitcoin.us.org - is bitcoin a good investment
<a href=" https://howtoinvestinbitcoin.us.org ">should i invest in bitcoin</a>
<a href="https://howtoinvestinbitcoin.us.org">how to buy bitcoin stock</a>

ggvtswblermaggvtswblerma2018/03/24 10:05https://bitcoinstock.us.com - buy bitcoin
<a href=" https://bitcoinstock.us.com ">bitcoin investments</a>
<a href="https://bitcoinstock.us.com">how does bitcoin work</a>

opgqqvtkiopgqqvtki2018/03/24 10:34https://howtoinvestinbitcoin.us.org - bitcoin stocks
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin trading price</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin current price</a>

jpzledakijpzledaki2018/03/24 11:27https://howtoinvestinbitcoin.us.org - bitcoin investment trust
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin investment trust</a>
<a href="https://howtoinvestinbitcoin.us.org">should i invest in bitcoins</a>

mpghalnlermampghalnlerma2018/03/24 11:37https://bitcoinstock.us.com - how to buy bitcoin
<a href=" https://bitcoinstock.us.com ">how to invest in digital currency</a>
<a href="https://bitcoinstock.us.com">bitcoin cost today</a>

fmdvlqkkifmdvlqkki2018/03/24 12:34https://howtoinvestinbitcoin.us.org - bitcoin investment trust gbtc
<a href=" https://howtoinvestinbitcoin.us.org ">digital currency stocks</a>
<a href="https://howtoinvestinbitcoin.us.org">bitcoin trade</a>

qeuomzglermaqeuomzglerma2018/03/24 13:08https://bitcoinstock.us.com - bitcoin traders
<a href=" https://bitcoinstock.us.com ">bitcoin what is it</a>
<a href="https://bitcoinstock.us.com">buying bitcoin</a>

nyejujckinyejujcki2018/03/24 13:34https://howtoinvestinbitcoin.us.org - bitcoin investment calculator
<a href=" https://howtoinvestinbitcoin.us.org ">bitcoin stocks to invest in</a>
<a href="https://howtoinvestinbitcoin.us.org">is bitcoin a good investment 2017</a>

トラックバック - http://haskell.g.hatena.ne.jp/eagletmt/20100823
 |