alunote’s blog

C#,SQL,JavaScriptなどの技術メモをゆっくり投稿しています。

サイトを移行します。

4年ほど続けてきました「はてなブログ」ですが、
重たい腰をようやく上げることができ、個人ブログを作成することとなりました。
途中更新を怠る場面を多発しましたが、
ありがたいことに一定数の閲覧をいただけており感謝感謝でございます。
移行先についてはまだ工事中のため、お見苦しい状態ですが下記リンクから遷移願います。
Alunote Log|エンジニアの備忘録

以上、有益な情報を投稿できるよう善処致しますので、
引き続きよろしくお願いいたします。

【Python】pyodbcでOperationalError:'08001'が発生した際に確認すること

PythonSQLServerに接続する際、pyodbcを利用する方法があります。
Python超初心者の自分は、各設定内容を共通ファイル(config.ini)から取得し
pyodbc.connectで下記エラーを発生させたので、二度と同じ過ちを繰り返さぬよう記録します。

【エラー内容】
pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (xxx)')

【前提条件】
各設定内容は共通ファイル(config.ini)から取得する。

def db_connect(sect):
    # config.ini取得
    configifile = (r"config.ini")
    config_ini = configparser.ConfigParser()
    config_ini.read(configifile, encoding="utf-8")
    # 各設定値指定
    instance = config_ini[sect]["instance"]
    db = config_ini[sect]["db"]
    user = config_ini[sect]["user"]
    pasword = config_ini[sect]["pasword"]
    # SQLServer接続
    connection =    "DRIVER={SQL Server}" + ";"\
                    "SERVER=" + instance + ";"\
                    "DATABASE=" + db + ";"\
                    "uid=" + user + ";" \
                    "pwd=" + pasword
    print(connection)
    return pyodbc.connect(connection)

con = db_connect("DB")
sql = "select * from TEST"
df = pandas.read_sql(sql, con)
print(df)
[DB]
instance = "xxxx\xxxx"
user = "xxxx"
pasword = "xxxx"
db = "xxxx"

【解決方法】
config.iniの設定値からダブルクォーテーションを削除する

[DB]
instance = xxxx\xxxx
user = xxxx
pasword = xxxx
db = xxxx

config.iniから値を取得した場合にダブルクォーテーションごと設定されるとは思いませんでした。
このような誤りをするのは自分くらいだと思いますが、困っている人もいると思いますのでメモします。

【PHP】includeすると<head>が<body>内に出力される

PHPでなどを共通パーツとして読み込む方式にしたいと考え、
includeにて構築しようとした際に生じた謎現象の解決方法です。
※あくまでも自分の解決方法メモとなります。

障害:PHPでをincludeすると内に内容が出力される。
原因:文字エンコードが「UTF-8 BOM付き」になっていた。
解決方法:「BOM」の設定を外して「UTF-8」にする。

IEの信頼済みサイトを削除する

IEの信頼済みサイトを削除しても、設定が反映されず困ったので対応策をメモ。

▼対応策
 レジストリ エディターから直接設定値を削除する。

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains
 に存在する対象の設定値を削除する。

▼手順
 1. Windowsキー + R で「ファイル名を指定して実行」画面を呼び出す。
 2. regedit と入力して「レジストリエディター」画面を呼び出す。
 3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains
  まで階層をたどる。
 4. 対象の設定値を削除する。

▼注意
 レジストリ エディターを操作する際は、細心の注意払って作業すること。
 バックアップ重要!

【Excel】開発機能を有効にする方法について

今回は、Excel2016で開発機能を有効にする方法について記述します。

開発タブには、マクロやVisual Basicやアドインなどの設定がまとめられています。
Excelを使用していて「あれ?マクロってどこから設定するの?」という疑問が、
開発タブを表示することで解決されます。
※本記事はExcel2016の方法です。

手順1.ファイルを押下しメニューを表示する。
f:id:alunote:20181115145225p:plain

手順2.オプションを押下しExcelのオプション画面を表示する。
f:id:alunote:20181115145241p:plain

手順3.リボンのユーザー設定を押下し、開発にチェックしOKを押下する!
f:id:alunote:20181115145254p:plain
f:id:alunote:20181115145302p:plain

以上!!

以上です。
この記事が誰かの役に立つことを祈ります。

【C#】元利計算をするプログラムを作ってみた

今回は、元利計算をするプログラムについて記述します。
借入金額・利息・期間を入力し1期間ごとの元利合計を計算します。

◆元利計算のソースコード

using System;

class Ganri
{
    public static void Main()
    {
        decimal total;
        Console.Write("借入金額:");
        decimal kari = decimal.Parse(Console.ReadLine());
        Console.Write("利息(%):");
        decimal riso = decimal.Parse(Console.ReadLine());
        Console.Write("期間数:");
        int kikan = int.Parse(Console.ReadLine());
        
        decimal r = riso / 100M;

        for (int i = 1; i <= kikan; i++)
        {
            total = kari * (1M + r);
            kari = total;
            Console.WriteLine("{0}期間後の元利合計は{1:c}です", i, kari);
        }
    }
}

◆元利計算の実行結果
f:id:alunote:20181112124010p:plain

以上です。
この記事が誰かの役に立つことを祈ります。

【C#】配列の合計値と平均値を求める

今回は、配列の合計値と平均値を求めるプログラムにについて記述します。
処理の流れは下記の通りです。
1.ArrayListクラスを使用して配列を作る。
2.ユーザーに入力させる。(数値以外が入力されるまで)
3.配列を読み込み合計値を計算する。
4.個数をカウントする。
5.合計値÷個数で平均値を計算する。
6.出力する。
以上です。

◆配列の合計値と平均値のソースコード

using System;
using System.Collections;

class Average{
    public static void Main(){
        bool eflag = false;
        string strData;
        double sum = 0.0;
        ArrayList inputArray = new ArrayList();
        Console.WriteLine("(数値以外を入力すると終了)");

        while (true){
            Console.Write("データ入力: ");
            strData = Console.ReadLine();
            //入力値判断
            if (!Char.IsDigit(strData[0]) && strData[0] != '-'){
                eflag = true;
            }else{
                //配列に追加
                inputArray.Add(double.Parse(strData));
            }
            //処理から抜ける
            if (eflag){
                break;
            }
        }

        //合計値計算
        for(int i = 0; i < inputArray.Count; i++){
            Console.WriteLine("Data[{0}] = {1}", i + 1, inputArray[i]);
            sum += (double)inputArray[i];
        }
        int count = inputArray.Count;
        //平均値計算
        double avr = sum / count;
        Console.WriteLine("データ個数: {0}", count);
        Console.WriteLine("平均値: {0}", avr);
    }
}

◆配列の合計値と平均値の実行結果
f:id:alunote:20181112123936p:plain

以上です。
この記事が誰かの役に立つことを祈ります。