文系プログラマが問題を解決するまでの思考回路_はじめてAzure触ってみた編

遅ればせながら、Azureを使用してみようと思い立ち、

ネットに転がっている情報から、

以下のサイトにたどり着いて、一通りAzure上で動くところまでやってみた。

 

nakaji.hatenablog.com

 

やってみた感想としては、

大部分は、そのまま流れに沿ってやればできた。

 

が、最後にハニートラップに阻まれた。

(ブログの方はきっと悪くない。当時は動いたのだろう。)

 

ローカルでWebApplicationをスタートアップに設定し、

実行するところまでは何とか行けたが、

一番最後の

「Azure上で動作確認」

が、どうしても失敗してしまっていた。(502 Bad Gateway ...)

 

これを解決するのに結局一日かかった。

 

どうやら、GoogleAPIの認証をするための証明書がうまく作れずに

エラーになってしまっているらしい。

ということで、一行ソースを書き換えたらうまくいった。

 

var certificate = new X509Certificate2(analyticsKeyFile, "notasecret", X509KeyStorageFlags.Exportable);

var certificate = new X509Certificate2(analyticsKeyFile, "notasecret", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);

 

因みにこんなサイトを参考にしました。

stackoverflow.com

 

 

どうすればもっと早く解決できたかなー。

ここからは文系プログラマがどういう思考回路で解決まで至ったか、

参考にして頂ければと思います。

こう考えていればもっと早かったんじゃない!?とか助言を頂けるとすごく嬉しい。

 

自分の解決までの道のり

3/12 17:00 エラーが出てTwitterに連携されない。

 

3/12 17:00 ~ 21:00 

⇒エラーの内容で検索をしてみるが、いい解決策が見つからない

 

3/12 22:00 ~ 08:00

⇒ふて寝

 

3/13 08:00 ~ 11:00

⇒作者のGitからソリューション取得、Azureに上げてみると一度成功(?)

 

3/13 11:00 ~ 14:00

 ⇒自分のソースと作者のソースコードの差分を必死でなくそうとする

 (app.config,web.config,参照dllのバージョン、.Net Frameworkのバージョン。。。。)

⇒でもやっぱりうまくいかない。もう一度作者のソリューションでAzureに上げたやつ

 を動かしてみる→動かないやんけ!!

 (T-T)

 

3/13 14:00 ~ 16:00

⇒「C# Azure 502」とかでGoogleさんに聞いても解決せず。

 (もういいよ。。。どうせ自分にはプログラミングのセンスがないんだろ。。。)

 

3/13 16:00 ~ 17:00

 ⇒作者のブログに、Google AnaliticsはB1 Basicプラン以上じゃないと動かないという

 記述を見つけ、無料試用期間の自分にはそもそも動かせなかったプログラムじゃない

 かとあきらめつつ検索

 (ここまで来たら明日まで粘ってやっからな。。。覚悟しとけAzureさんよぉ!)

 

⇒「azure google analytics」で検索してたら、

 認証時にAzureがうまく動いてくれてない(?)という記事を見つける

 

⇒StackOverFlowの記事を見つけて適用してみたら動いた

 \(T_T)/

 

 

今日はみんなよい休日を過ごせたでしょうか。

プログラミングの環境構築Tips

・本に書いてある環境構築方法を実践するときには、

 バージョンは「かならず」同じものを使用する。

 (セキュリティー面で最新のものを…、バグが治ってるかもしれないからとりあえず最新を…とかやってるとバージョン差異でうまく動かくなることが多い)

 

ruby on rails(windows 8.1 64bit時)

 ruby on rails4 アプリケーションプログラミングを読みながら環境構築した際、

 以下のエラーが出て詰まった。

 C:/Ruby200/lib/ruby/gems/2.0.0/gems/tzinfo-1.2.2/lib/tzinfo/data_source.rb:182:i
n `rescue in create_default_data_source': No source of timezone data could be fo
und. (TZInfo::DataSourceNotFound)

 

 解決方法:

 C:\data\railbook\Gemfileをメモ帳などのテキストエディタで開き、

 一番下に、

 gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

 を追記。

 コマンドプロンプトでその後、以下のように実行

 c:\data\railbook>bundle update

 c:\data\railbook>rails server

 

 教えてくれたブログに感謝。

        /// <summary>
        /// 指定したビットフラグが立っているか
        /// </summary>
        /// <param name="binaryData"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        public static bool GetBitFlg(byte binaryData, int location)
        {
            string result = Convert.ToString(Convert.ToInt32(binaryData), 2).PadLeft(8, '0');

            return result.Substring(result.Length - location, 1) == "1" ? true : false;
        }

XE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )


metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XE;USER ID=/"

metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XE;DBA PRIVILEGE=SYSDBA;USER ID=/"

'シートのデータを複数シートに反映
Private Sub 共通()
    Dim common_s As Worksheet
    Dim common_data As Variant
    Dim loop_colCnt As Integer
    Dim table_names As Object
    Dim loop_rowCnt As Integer
    Dim write_s As Worksheet
    Dim write_colData As Variant
    Dim loop_wCnt As Integer
    Dim loop_outCnt As Long
    Dim out_data() As String
    
    Set table_names = CreateObject("Scripting.Dictionary")
    Set common_s = ThisWorkbook.Sheets("共通")
    
    '★
    common_data = common_s.Range("D7:G9")
    
    common_data = common_data
    
    '列部分取得
    For loop_colCnt = LBound(common_data, 2) To UBound(common_data, 2)
        If common_data(1, loop_colCnt) <> "" Then
            table_names.Add loop_colCnt, common_data(1, loop_colCnt)
        End If
    Next loop_colCnt
    
    'メイン処理
    For loop_rowCnt = 2 To UBound(common_data)
        For loop_colCnt = 3 To UBound(common_data, 2)
            If common_data(loop_rowCnt, loop_colCnt) = "〇" Then
                Set write_s = ThisWorkbook.Worksheets(table_names(loop_colCnt))
                
                '★列数を取得、格納
                write_colData = write_s.Range("A2:B2")
                
                For loop_wCnt = LBound(write_colData, 2) To UBound(write_colData, 2)
                    '列名を比較
                    If write_colData(1, loop_wCnt) = common_data(loop_rowCnt, 1) Then
                        '★行数分一括でデータセット
                        For loop_outCnt = 0 To 0
                            ReDim Preserve out_data(loop_outCnt) As String
                            '値を取得
                            out_data(loop_outCnt) = common_data(loop_rowCnt, 2)
                        Next
                        '★
                        write_s.Range(write_s.Cells(3, loop_wCnt).Address & ":" & write_s.Cells(3, loop_wCnt).Address) = out_data
                    End If
                Next
            End If
        Next loop_colCnt
    Next loop_rowCnt
End Sub