2012年3月28日水曜日

vbaを使ってwebページを取り込むサンプル

Sub readUrl()

    Dim url As String
    Dim mySheet As String
    
    url = "http://typhoon.yahoo.co.jp/weather/jp/earthquake/list/"
    ActiveSheet.Range("A1").Select

    With ActiveSheet.QueryTables.Add(Connection:="URL;" & url, Destination:=ActiveSheet.Range("A1"))
        .Name = "test"
        .FieldNames = True
        .RowNumbers = False
        .Refresh BackgroundQuery:=False
        .RefreshPeriod = 0
        .RefreshOnFileOpen = False
        .PreserveFormatting = True
        .AdjustColumnWidth = True
        .FillAdjacentFormulas = False
        .RefreshStyle = xlInsertEntireRows
        .SavePassword = False
        .SaveData = True
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = True
        .Refresh
        .Parent.Names(.Name).Delete
    End With
    
End Sub

2012年3月25日日曜日

amchartのamstockとRuby on Railsでファンドの基準価額を描画する、

javascriptベースのamchartではなく一つ古いのflash版でやりました。http://www.amcharts.com/

amchartに食わせるデータは基本2つ:
①チャートの設定ファイル、よくあるのはsettings.xml
②データファイル、xml,csv,jsonなど対応して、実際の描画用のデータが渡される。
※データファイルが設定ファイルの中にインクルードされる方法と、設定ファイルの中に直接データを書き出し(データファイルが無くでもいける)

今回はsetting.xmlを固定ファイルにして、データだけrailsで動的に生成するやり方で作った

setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Only the settings with values not equal to defaults are in this file. If you want to see the
full list of available settings, check the amstock_settings.xml file in the amstock folder. -->
<settings>
  <margins>0</margins>
  <text_size>10</text_size>

  <number_format>
    <letters>
       <letter number="1000">千</letter>
       <letter number="1000000">百万</letter>
       <letter number="1000000000">億</letter>
    </letters>
  </number_format>

  <date_formats>
    <x_axis>
      <days>MM/DD</days>
      <months>MM</months>
    </x_axis>
    <legend>
      <days>YYYY/MM/DD</days>
      <weeks>YYYY/MM/DD</weeks>
      <months>YYYY/MM/DD</months>
    </legend>
  </date_formats>
  
  <data_sets>
    
    <data_set did="0">
       <title>ファンドA</title>
       <color>FF0000</color>
       <file_name>../../fund/search/data/123</file_name>
       <main_drop_down selected="true"></main_drop_down>
       <csv>
         <reverse>true</reverse>
         <separator>,</separator>
         <date_format>YYYY-MM-DD</date_format>
         <decimal_separator>.</decimal_separator>
         <columns>
           <column>date</column>
           <column>close</column>
         </columns>
       </csv>
    </data_set>

    <data_set did="1">
       <title>ファンドB</title>
       <color>FF00BB</color>
       <short>[ぶどうの実]</short>
       <file_name>../../fund/search/data/456</file_name>
       <csv>
         <reverse>true</reverse>
         <separator>,</separator>
         <date_format>YYYY-MM-DD</date_format>
         <decimal_separator>.</decimal_separator>
         <columns>
           <column>date</column>
           <column>close</column>
         </columns>
       </csv>
    </data_set> 

    <data_set did="3">
       <title>日経平均株価(日経225)</title>
       <short>日経255</short>
       <compare_list_box selected="true"></compare_list_box>
       <color>999999</color>
       <file_name>../../fund/search/data/634</file_name>
       <csv>
         <reverse>true</reverse>
         <separator>,</separator>
         <date_format>YYYY-MM-DD</date_format>
         <decimal_separator>.</decimal_separator>
         <columns>
           <column>date</column>
           <column>close</column>
         </columns>
       </csv>
    </data_set>

  </data_sets>

  <charts>
   <chart cid="0">
    <bg_color>f5f5f5,ffffff</bg_color>
      <border_color>#CCCCCC</border_color>
      <border_alpha>100</border_alpha>
     
      <grid>
        <x>
          <dashed>true</dashed>
        </x>
        <y_right>
          <color>cccccc</color>
          <alpha>100</alpha>
          <dashed>true</dashed>
        </y_right>
      </grid>

      <legend>
        <show_date>true</show_date>
      </legend>

    <graphs>
     <graph gid="0">
       <axis>right</axis>
      <type>line</type>
      <data_sources>
        <close>close</close>
          </data_sources>
          
          <compare_source>close</compare_source>

        <legend>
            <date key="true" title="true"><![CDATA[<b>{close}</b>]]></date>
            <period key="true" title="true"><![CDATA[open:<b>{open}</b> low:<b>{low}</b> high:<b>{high}</b> close:<b>{close}</b>]]></period>
            <date_comparing key="true" title="true"><![CDATA[{close.percents}]]></date_comparing>
            <period_comparing key="true" title="true"><![CDATA[{close.percents}]]></period_comparing>
          </legend>
     </graph>
    </graphs>
   </chart>
  </charts>
  
  
  <data_set_selector>
  <position>top</position>
    <width>300</width>
    <max_comparing_count>4</max_comparing_count>
   <main_drop_down_title>選択</main_drop_down_title>
   <compare_list_box_title>比較</compare_list_box_title>
  </data_set_selector>
  
  <period_selector>
    <button>
      <bg_color_hover>b81d1b</bg_color_hover>
      <bg_color_selected>b81d1b</bg_color_selected>
      <text_color_hover>ffffff</text_color_hover>
      <text_color_selected>ffffff</text_color_selected>
    </button>
  
  <periods>  
     <period type="MM" count="1">1ヶ月</period>
     <period type="MM" count="3">3ヶ月</period>
     <period type="MM" count="6">6ヶ月</period>
     <period selected="true" type="YYYY" count="1">1年</period>
     <period type="YYYY" count="3">3年</period>
     <period type="YYYY" count="5">5年</period>
     <period type="YYYY" count="7">7年</period>
     <period type="MAX">設定来</period>
  </periods>
  
  <periods_title>期間:</periods_title>
  <custom_period_title>任意期間:</custom_period_title>
  </period_selector>

  <header>
    <enabled></enabled>
    <text><![CDATA[<b>{title}</b> {short} {description}]]></text>
    <text_size>12</text_size>
  </header>

  <plot_area>
    <border_color>cccccc</border_color>
  </plot_area>

  <scroller>
    <enabled>true</enabled>
    <height>50</height>
    <graph_data_source>close</graph_data_source>
    <bg_color>f5f5f5,ffffff</bg_color>
    <resize_button_color>b81d1b</resize_button_color>
  </scroller>

</settings>

controllers/fund/search_controller.rbに追加
3年以内の分配金再投資基準価額を純資産降順でcsv作成、csvは行は「yyyy-mm-dd,修正基準価額」になっている
.....
.....
  def data
    @fundCorrectionIndex = FundCorrectionIndex.find(:all, :conditions => ["fund_id=? and as_of_date >= (NOW() - INTERVAL 3 YEAR)",  params[:id]], :order => 'as_of_date desc')
    csv_data = ""
    @fundCorrectionIndex.each do |rec|
      csv_data += "#{rec.as_of_date.strftime("%Y-%m-%d")},#{rec.correction_value}\r\n"
    end
    render :text => csv_data
  end
.....
.....

htmlは
<!-- headに -->
<script type="text/javascript" src="/rsrc/amcharts/swfobject.js"></script>
<script type="text/javascript" src="/rsrc/amcharts/stockchart.js"></script>

<!-- bodyに -->
<body onLoad="draw_stock('stock','/market/special/asia/settings.xml')">

<!-- 描画用divを追加 -->
<div id="stock"></div>

stockchart.js
function draw_stock(id,setting_url,width,height) {
 if(width == undefined){
  width = "700"; 
  } 
 if(height == undefined){
  height = "500"; 
  } 
 if(setting_url == undefined){
  setting_url = "settings.xml"
  }

 var params = {
   bgcolor:"#FFFFFF"
  };
 var flashVars = {
   path: "/rsrc/amcharts/",
   settings_file: setting_url,
   data_file: "data.xml",
   chart_id: id
  };
 swfobject.embedSWF("/rsrc/amcharts/amstock.swf", id, width, height, "8.0.0", "/rsrc/amcharts/expressInstall.swf", flashVars, params);
}

お名前のニュース配信を解除

http://www.onamae.com/support/faq/dom_other/other_01.php

Q.お名前.com会員に配信される「お名前.comドメインニュース」を配信停止してほしい

A.お名前.comドメインニュースの配信停止方法につきましては、下記手順にてお手続きください。


■ドメインニュースの配信停止方法の流れ

ドメインNavi にアクセスし、ユーザーID(お名前ID)とパスワードでログイン
上部メニューバーの「お名前.com会員情報」をクリック
会員情報設定の「会員情報の編集」をクリック
現在の会員情報が表示されますので、 「ドメインニュース配信」にて「配信無し」をご選択の上、「確認画面へ進む」をクリック
※その他、会員情報にご変更があれば最新の情報にあわせてご変更ください
ご入力内容をご確認の上、「設定する」をクリック
受付画面が表示され、変更された会員情報を記載したメールがお名前.com会員情報のご連絡先メールアドレス宛に送信されます

結構探した…本当にうるさかった。

2012年3月24日土曜日

bloggerをgoogle siteに埋め込む(embed)方法

<iframe src ="http://kagen88.blogspot.jp/" width="755px" height="3000">
<p>あなたのブラウザがiframeを対応していないみたい</p>
</iframe>
google siteのページのhtmlを編集して保存すれば、google siteにブログを貼ることができる。
もう一回編集してみると、先のiframタグが訳がわからないタグに変わった、多分サイトがiframeタグを
よろしく変更してくれたね。
横スクロールを非表示や、縦スクロールの範囲指定等色々やりたいができないことも有ります。
googleがbloggerを埋め込む用のガジェットを作ってくれないかなぁー

2012年3月23日金曜日

javascriptでXMLを読み込むライブラリーjkl-parsexml.js

ライブラリーはここからダウンロード
http://www.kawa.net/works/js/jkl/parsexml.html

そして読み込むXMLを作成、ファイル名をuser.xmlにします。
<?xml version="1.0" standalone="yes"?>
<Users>
    <User>
        <Id>1</Id>
        <Name>田中</Name>
    </User>
    <User>
        <Id>2</Id>
        <Name>佐藤</Name>
    </User>
</Users>

HTMLはこちら
<html>
<head>
<title>XMLファイルの読み込み</title>
<script type="text/javascript" src="jkl-parsexml.js"></script>
<script type="text/javascript">
<!--
function requestFile(url){
    var xml = new JKL.ParseXML( url );
    var data = xml.parse();
    var strHtml = "<table border=1>";
    for (var u in data.Users.User){
      strHtml += "<tr>";
      strHtml += "<td>" + data.Users.User[u].Id + "</td><td>" + data.Users.User[u].Name + "</td>";
      strHtml += "</tr>";
    }
    strHtml += "</table>";
    document.getElementById("resultDiv").innerHTML = strHtml;
}
// -->
</script>
</head>
<body>
<input id="Button" type="button" value="実行" onclick="javascript:requestFile('./user.xml')">
<div id="resultDiv">
</div>
</body>
</html>
結果はこんな感じ
1田中
2佐藤

2012年3月21日水曜日

RailsのActiveRecordのfindメソッドの基礎的書き方の一例

FundIndex.find(:all,
                    :select =>["fund_id,value,as_of_date"],
                    :conditions => ["fund_id=? and fund_index_type_id=?", 564,2],
                    :limit => 100)

2012年3月15日木曜日

次は千葉沖か?!!...

なんか怖いですね、最近二日千葉沖の地震が多すぎるでしょう!ドッカンはいつ来るでしょうか!

2012年3月8日木曜日

なぜ"-f"(--force)オプションが効かないだろう

普通にCPコマンドを叩いたら

$ cp -rf from/dir_a to/
cp: `........................' を上書きしてもよろしいですか(yes/no)?

あれ、forceオプション追加したじゃないですか、なぜいちいち聞くの?と思ったらaliasで見たら

$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

"-i"か!なるほど。ちなみに解決は

$ unalias cp
または
$ \cp -rf from/dir_a to/

2012年3月1日木曜日

railsコンソールでモデルのfindメソッドで関節的に関係を持つデーブルへのアクセス

3つのテーブルそれそれ下記の関係

tmp_fund_index ○----● fund ●----○ fund_ranking

#models/fund.rb
class Fund < ActiveRecord::Base
  has_many :fund_rankings
end

#models/fund_ranking.rb
class FundRanking < ActiveRecord::Base
  belongs_to :fund
end

#models/tmp_fund_index.rb
class TmpFundIndex < ActiveRecord::Base
  belongs_to :fund
end
まずコンソールで確認すると、出ました $ ruby script/console Loading development environment.
>> FundRanking.find(:all, :limit => 1, :include => [:fund => [:tmp_fund_index]])
コントローラでは
#controllers/fund/ranking_controller.rb
  @rank_dtl = FundRanking.find :all,
                               :include => [{:fund => :tmp_fund_index}],

ビューアーでは、こうやって参照できる
#views/fund/ranking/detail.rhtml
<%- if @rank_dtl -%>
  <%- @rank_dtl.each_with_index do |rank, idx| -%>
    <%= rank.fund.tmp_fund_index.standard_price %>
  <%- end -%>
<%- end -%>