output parameter 값을 읽어올때는 using(reader){} 가 끝난 이후에 해야 한다.


그전에는 string 타입의 값을 못가져왔다.


output value 가져올 때 System.DBNull 타입체크를 먼저 하고 형 변환해야 한다.


using (MySqlConnection conn = new MySqlConnection(procedure.ConnectString))
{
	using (MySqlCommand cmd = new MySqlCommand(procedure.ToString()))
	{
		cmd.Connection = conn;
		cmd.CommandType = CommandType.StoredProcedure;

		//
		// 파라미터 설정
		//

		using (MySqlDataReader reader = cmd.ExecuteReader())
		{
			//
			// 쿼리 결과 가져오기
			//
		}
		
		//
		// out 파라미터 값 가져오기
		//
	}
}






'Develop' 카테고리의 다른 글

android gcm push  (0) 2016.05.25
mysql grants  (0) 2016.05.25
SyntaxHighlighter brushes  (0) 2016.05.24
Mysql Procedure Out Parameter  (0) 2016.05.24
윈도우에서 하위 폴더 svn add  (0) 2016.05.18

http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/

'Develop' 카테고리의 다른 글

mysql grants  (0) 2016.05.25
c# mysqlclient output parameter  (0) 2016.05.25
Mysql Procedure Out Parameter  (0) 2016.05.24
윈도우에서 하위 폴더 svn add  (0) 2016.05.18
mysql while loop  (0) 2016.05.13
public override void InputParam(MySqlCommand cmd)
{
	cmd.Parameters.AddWithValue("@pi_UserIdx", pi_UserIdx);
	cmd.Parameters.AddWithValue("@pi_WORLD", pi_WORLD);

    cmd.Parameters.Add("@po_ErrorMessage", MySqlDbType.VarChar, 50);            // 이렇게 해야 함
    //cmd.Parameters.AddWithValue("@po_ErrorMessage", MySqlDbType.String);      // 이렇게 하면 안됨

    cmd.Parameters["@po_ErrorMessage"].Direction = System.Data.ParameterDirection.Output;
}


------

 

참고 http://www.codeproject.com/Articles/36484/Working-C-code-for-MySql-Stored-Procedures-IN-OUT






'Develop' 카테고리의 다른 글

c# mysqlclient output parameter  (0) 2016.05.25
SyntaxHighlighter brushes  (0) 2016.05.24
윈도우에서 하위 폴더 svn add  (0) 2016.05.18
mysql while loop  (0) 2016.05.13
사용자 정의 예외 만들기  (0) 2016.05.11
Get-ChildItem 상위폴더 -Recurse | % {
    svn add $_.FullName --force
}

'Develop' 카테고리의 다른 글

SyntaxHighlighter brushes  (0) 2016.05.24
Mysql Procedure Out Parameter  (0) 2016.05.24
mysql while loop  (0) 2016.05.13
사용자 정의 예외 만들기  (0) 2016.05.11
c# task overhead  (0) 2016.05.11

영웅이 1~6성까지 존재

영웅간의 차이는 10


아래 구문은 11 부터 466 까지 도는 loop다


WHILE i <= 460 DO
	SET j = i + 1;
	WHILE MOD(j, 10) <= 6 DO
		SET v_card_seq = ~~~~~~~~~~~~~~~~~
		SET j = j + 1;
	END WHILE;
	SET i = i + 10;
END WHILE; 




'Develop' 카테고리의 다른 글

Mysql Procedure Out Parameter  (0) 2016.05.24
윈도우에서 하위 폴더 svn add  (0) 2016.05.18
사용자 정의 예외 만들기  (0) 2016.05.11
c# task overhead  (0) 2016.05.11
CppUnitTestFramework 실행 순서  (0) 2016.05.10

    public class InvaildSessionException : System.Exception

    {

        public InvaildSessionException() : base() {}

        public InvaildSessionException(string message) : base(message) { }

        public InvaildSessionException(string message, System.Exception inner) : base(message, inner) { }


        // A constructor is needed for serialization when an

        // exception propagates from a remoting server to the client. 

        protected InvaildSessionException(System.Runtime.Serialization.SerializationInfo info,

            System.Runtime.Serialization.StreamingContext context)

        { }

    }




https://msdn.microsoft.com/ko-kr/library/ms173163.aspx

'Develop' 카테고리의 다른 글

윈도우에서 하위 폴더 svn add  (0) 2016.05.18
mysql while loop  (0) 2016.05.13
c# task overhead  (0) 2016.05.11
CppUnitTestFramework 실행 순서  (0) 2016.05.10
gcm push  (0) 2016.04.20


코드 1


    public class TaskTest

    {

        public static async Task<int> MultiTask(int i)

        {

            if(i == 0)

            {

                return 0;

            }


            Console.Write(" ");

            return await MultiTask(--i);

        }

        public static async Task<int> SingleTask(int i)

        {

            for (int j = 0; j < i; ++j)

            {

                Console.Write(" ");

            }

            return i;

        }


        public static async void Test1()

        {

            Console.WriteLine("start");


            List<Int64> multi = new List<long>();

            List<Int64> single = new List<long>();


            for (int i=0; i<1000; ++i)

            {

                Stopwatch sw = new Stopwatch();

                sw.Reset();

                sw.Start();

                var ret = await MultiTask(1000);

                sw.Stop();


                multi.Add(sw.ElapsedMilliseconds);

                //Console.WriteLine("m" + sw.ElapsedMilliseconds.ToString());


                sw.Reset();

                sw.Start();

                ret = await SingleTask(1000);

                sw.Stop();


                single.Add(sw.ElapsedMilliseconds);

                //Console.WriteLine("s" + sw.ElapsedMilliseconds.ToString());

            }


            Console.WriteLine("m avg:" + multi.Average());

            Console.WriteLine("s avg:" + single.Average());

        }

    } 

    결과 :
    m avg:32.567
    s avg:32.474


task를 중첩해서 사용했을 때 overhead가 얼마나 있을것인가에 대한 실험인데

제대로 실험이 된건지 잘 모르겠다.


그래서 동시에 다른 스레드들과 섞어서 실험을 해봤다


코드 2


    public class TaskTest

    {

        public static async Task<int> MultiTask(int i, int marker)

        {

            if(i == 0)

            {

                return 0;

            }


            Console.Write(marker);

            return await MultiTask(--i, marker);

        }

        

        public static async Task<int> MultiTask1(int i, int marker)

        {

            for (int j = 0; j < i; ++j)

            {

                new Task<int>(() => { Console.Write(marker); return 0; }).Start();

            }


            return 0;

        }

        public static async Task<int> SingleTask(int i, int marker)

        {

            for (int j = 0; j < i; ++j)

            {

                Console.Write(marker);

            }

            return i;

        }

        public static int SingleTaskR(int i, int marker)

        {

            if (i == 0)

            {

                return 0;

            }


            Console.Write(marker);

            return SingleTaskR(--i, marker);

        }

        public static int SingleTaskNR(int i, int marker)

        {

            for (int j = 0; j < i; ++j)

            {

                Console.Write(marker);

            }

            return i;

        }

        public static async void Test1()

        {

            Console.WriteLine("start");


            List<Int64> multi = new List<long>();

            List<Int64> single = new List<long>();

            List<Int64> singleR = new List<long>();

            List<Int64> singleNR = new List<long>();


            for (int i = 0; i < 20; ++i)

            {

                var ret2 = MultiTask1(1000, 1);


                Stopwatch sw = new Stopwatch();

                sw.Reset();

                sw.Start();

                var ret = MultiTask(1000, 2);

                sw.Stop();


                multi.Add(sw.ElapsedMilliseconds);

                //Console.WriteLine("m" + sw.ElapsedMilliseconds.ToString());


                Task.WaitAll(new []{ ret2, ret }, 5000);


                Thread.Sleep(500);


                var ret3 = MultiTask1(1000, 3);


                Stopwatch sw1 = new Stopwatch();

                sw1.Reset();

                sw1.Start();

                var ret4 = SingleTask(1000, 4);

                sw1.Stop();


                single.Add(sw1.ElapsedMilliseconds);

                //Console.WriteLine("s" + sw.ElapsedMilliseconds.ToString());


                Task.WaitAll(new[] { ret3, ret4 }, 5000);


                Thread.Sleep(500);


                Stopwatch sw2 = new Stopwatch();

                sw2.Reset();

                sw2.Start();

                SingleTaskR(1000, 5);

                sw2.Stop();


                singleR.Add(sw2.ElapsedMilliseconds);

                

                Stopwatch sw3 = new Stopwatch();

                sw3.Reset();

                sw3.Start();

                SingleTaskR(1000, 6);

                sw3.Stop();


                singleNR.Add(sw3.ElapsedMilliseconds);


            }

            

            Console.WriteLine("m avg:" + multi.Average());

            Console.WriteLine("s avg:" + single.Average());

            Console.WriteLine("sR avg:" + singleR.Average());

            Console.WriteLine("sNR avg:" + singleNR.Average());

        }

    }

    결과 :

    m avg:119.1 

    s avg:92.9 

    sR avg:45.4 

    sNR avg:41.1


출력결과를 보니 적당히 섞여서 실행 되는거 같다.

task가 중첩이 되면 비용이 더 들기는 한가보다


task 없이 재귀가 재귀보다 약 10% 느리고

task 사용하고 재귀가 안재귀보다 약 28% 느리다


task를 사용하면 사용하지 않았을때보다 약 225% 느리다



'Develop' 카테고리의 다른 글

mysql while loop  (0) 2016.05.13
사용자 정의 예외 만들기  (0) 2016.05.11
CppUnitTestFramework 실행 순서  (0) 2016.05.10
gcm push  (0) 2016.04.20
powershell invoke-XXXX  (0) 2016.02.16

https://msdn.microsoft.com/ko-kr/library/hh694604.aspx


////////////////////////////////////////////////////////////
/* USAGE EXAMPLE
// The following is an example of VSCppUnit usage.
// It includes examples of attribute metadata, fixtures,
// unit tests with assertions, and custom logging.

#include <CppUnitTest.h>

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

BEGIN_TEST_MODULE_ATTRIBUTE()
    TEST_MODULE_ATTRIBUTE(L"Date", L"2010/6/12")
END_TEST_MODULE_ATTRIBUTE()

TEST_MODULE_INITIALIZE(ModuleInitialize)
{
    Logger::WriteMessage("In Module Initialize");
}

TEST_MODULE_CLEANUP(ModuleCleanup)
{
    Logger::WriteMessage("In Module Cleanup");
}

TEST_CLASS(Class1)
{

public:

    Class1()
    {
        Logger::WriteMessage("In Class1");
    }

    ~Class1()
    {
        Logger::WriteMessage("In ~Class1");
    }

    TEST_CLASS_INITIALIZE(ClassInitialize)
    {
        Logger::WriteMessage("In Class Initialize");
    }

    TEST_CLASS_CLEANUP(ClassCleanup)
    {
        Logger::WriteMessage("In Class Cleanup");
    }

    BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
        TEST_OWNER(L"OwnerName")
        TEST_PRIORITY(1)
    END_TEST_METHOD_ATTRIBUTE()

    TEST_METHOD(Method1)
    {   
        Logger::WriteMessage("In Method1");
        Assert::AreEqual(0, 0);
    }

    TEST_METHOD(Method2)
    {
        Assert::Fail(L"Fail");
    }
};





실행 결과


------ Run test started ------

In Module Initialize

In Class Initialize

In Class1

In Method1

In ~Class1

In Class1

In Method2

In ~Class1

In Class Cleanup

In Module Cleanup



'Develop' 카테고리의 다른 글

사용자 정의 예외 만들기  (0) 2016.05.11
c# task overhead  (0) 2016.05.11
gcm push  (0) 2016.04.20
powershell invoke-XXXX  (0) 2016.02.16
windows server add webservice  (0) 2016.01.12

use node.js




var gcm = require('node-gcm');

var fs = require('fs');

var message = new gcm.Message();

var message = new gcm.Message({

    collapseKey: 'demo',

    delayWhileIdle: true,

    timeToLive: 3,

    data: {

        badge: 1,

        alert: 'test msg',

        fftbar: 'test title',

        ttimagesrc: 'http://icon.four53.co.kr/hwal.jpg',

        fttstyle: 'bc:#FFFFFFFF,tc:#FFFFFFFF',

        sound: 'arrow'

    }

});


var server_api_key = 'AIzaS-----------------------------STEs0';

var sender = new gcm.Sender(server_api_key);

var registrationIds = [];

var token = 'APA91bHUE3R-------------------------------------------------------------------------------------------------------------------------wpHfNdeQ'


registrationIds.push(token);


sender.send(message, registrationIds, 4, function (err, result) {

    console.log(result);

});




use http




curl --header "Authorization: key=AIzaS-----------------------------STEs0" \

--header Content-Type:"application/json" https://gcm-http.googleapis.com/gcm/send \

-d "{\"data\":{\"collapse_key\":\"do_not_collapse\",\"badge\":1,\"alert\":\"this is test message\",\"fttbar\":\"test message title\",\"fttimagesrc\":\"http://icon.four53.co.kr/hwal.jpg\",\"fttstyle\":\"bc:#FFFFFFFF,tc:#FFFFFFFF\",\"sound\":\"arrow\"},\"to\":\"APA91bHUE3R-------------------------------------------------------------------------------------------------------------------------wpHfNdeQ\"}"



'Develop' 카테고리의 다른 글

c# task overhead  (0) 2016.05.11
CppUnitTestFramework 실행 순서  (0) 2016.05.10
powershell invoke-XXXX  (0) 2016.02.16
windows server add webservice  (0) 2016.01.12
newtonsoft json assembly conflict  (0) 2015.11.18

1. 접속권한


Enable-PSRemoting -SkipNetworkProfileCheck -Force

-SkipNetworkProfileCheck : 동일 subnet check 안함


Set-NetFirewallRule –Name "WINRM-HTTP-In-TCP-PUBLIC" –RemoteAddress Any

-SkipNetworkProfileCheck 옵션을 사용후 ip 대역 설정


https://technet.microsoft.com/en-us/library/hh849694.aspx


2. 실행정책


Set-ExecutionPolicy -ExecutionPolicy ByPass

-ByPass : import-module 실행에도 관여함


https://technet.microsoft.com/ko-KR/library/hh847748.aspx


3. 접속 허용


Set-Item wsman:\localhost\Client\TrustedHosts -value *

'Develop' 카테고리의 다른 글

CppUnitTestFramework 실행 순서  (0) 2016.05.10
gcm push  (0) 2016.04.20
windows server add webservice  (0) 2016.01.12
newtonsoft json assembly conflict  (0) 2015.11.18
VS filter 분류 정규표현식  (0) 2015.02.01

+ Recent posts