일단 링크만 모아놓고 나중에 봐야겠다. ㅜㅠ

 

설치 (윈도우)

http://icodebroker.tistory.com/4964

설치(Mac, Ubuntu)

http://blog.saltfactory.net/install-rabbitmq/

 

왜 써야하는가?

http://heowc.tistory.com/36?category=677973

 

메세지손실 최소화

https://m.blog.naver.com/PostView.nhn?blogId=tmondev&logNo=221051503100&proxyReferer=http%3A%2F%2Fwww.google.co.kr%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D10%26ved%3D0ahUKEwiR7fL6ssjZAhUFKJQKHcqrCewQFghjMAk%26url%3Dhttp%253A%252F%252Fm.blog.naver.com%252Ftmondev%252F221051503100%26usg%3DAOvVaw2CAnDXafK6JH2x8ydHwNOF

 

소스

https://github.com/hjb417/rabbitmq-wcf-transports (RabbitMQ transports for WCF)

 

다른것과 비교

https://atinjin.github.io/blog/rabbitmq/

http://heowc.tistory.com/35?category=677973

 

결론을 요약하면 (직접 좀 많이 구현을 해야 하지만...) ZeroMQ가 제일 성능이 좋지만 RabbitMQ도 괜찮다.

◦ZeroMQ broker outperforms all others. This means that unless you have a need for complex broker features, ZeroMQ is a perfect message dispatcher among processes.

◦Except for big messages, RabbitMQ seems to be the best bet as it outperforms others by a factor of 3.

'C#' 카테고리의 다른 글

(C#) 방화벽 뚫기 코드  (0) 2018.03.03
How to generate a PDF from HTML using wkhtmltopdf with C# in WinForms  (0) 2018.03.02
RabbitMQ - 링크  (0) 2018.02.28
(C#) ShuffleArray  (0) 2018.02.24
(C#) xps to png  (0) 2018.02.24
(C#) 프린터 출력시 이벤트 처리하기  (0) 2018.02.24
        /// <summary>
        /// Array 내용을 랜덤하게 뽑아오되 앞에서 뽑힌내용은 제외하고 뽑아올때 사용됩니다.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="array"></param>
        /// <param name="seed"></param>
        /// <returns></returns>
        public static T[] ShuffleArray<T>(T[] array, int seed)
        {
            System.Random r = new System.Random(seed);

            for (int i = 0; i < array.Length - 1; i++)
            {
                int randomIndex = r.Next(i, array.Length);
                T tempItem = array[randomIndex];
                array[randomIndex] = array[i];
                array[i] = tempItem;
            }
           
            return array;
        }

'C#' 카테고리의 다른 글

How to generate a PDF from HTML using wkhtmltopdf with C# in WinForms  (0) 2018.03.02
RabbitMQ - 링크  (0) 2018.02.28
(C#) ShuffleArray  (0) 2018.02.24
(C#) xps to png  (0) 2018.02.24
(C#) 프린터 출력시 이벤트 처리하기  (0) 2018.02.24
(C#)프린터 목록 가져오기  (0) 2018.02.24

       

 xps 파일을  png 파일로 변경하는 코드

        public int XpsToPng(string xps_file)
        {
            // Make sure this is an xps file.
            if (!xps_file.ToLower().EndsWith(".xps"))
                throw new ArgumentException(
                    "Method XpsToPng only works for .xps files.");

            // Get the file's name without the .xps on the end.
            string file_prefix =
                xps_file.Substring(0, xps_file.Length - 4);

            // Load the XPS document.
            XpsDocument xps_doc = new XpsDocument(xps_file, FileAccess.Read);

            // Get a fixed paginator for the document.
            IDocumentPaginatorSource page_source =  xps_doc.GetFixedDocumentSequence();
            DocumentPaginator paginator =  page_source.DocumentPaginator;

            // Process the document's pages.
            int num_pages = paginator.PageCount;
            for (int i = 0; i < num_pages; i++)
            {
                using (DocumentPage page = paginator.GetPage(i))
                {
                    // Render the page into the memory stream.
                    int width = (int)page.Size.Width;
                    int height = (int)page.Size.Height;
                    RenderTargetBitmap bitmap =
                        new RenderTargetBitmap(
                            width, height, 96, 96,
                            PixelFormats.Default);
                    bitmap.Render(page.Visual);

                    // Save the PNG file.
                    PngBitmapEncoder encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(bitmap));

                    using (MemoryStream stream = new MemoryStream())
                    {
                        encoder.Save(stream);

                        using (FileStream file = new FileStream(
                            file_prefix + (i + 1).ToString() + ".png",
                            FileMode.Create))
                        {
                            file.Write(stream.GetBuffer(), 0,
                                (int)stream.Length);
                            file.Close();
                        }
                    }
                }
            }
            return num_pages;
        }

'C#' 카테고리의 다른 글

RabbitMQ - 링크  (0) 2018.02.28
(C#) ShuffleArray  (0) 2018.02.24
(C#) xps to png  (0) 2018.02.24
(C#) 프린터 출력시 이벤트 처리하기  (0) 2018.02.24
(C#)프린터 목록 가져오기  (0) 2018.02.24
ICollection 과 IEnumerable 또는 List <T> 의 차이 - 링크  (0) 2018.02.18
            System.Management.ManagementScope oMs = new System.Management.ManagementScope(@"\\" + host + @"\root\cimv2");
            oMs.Connect();
            manEWatch = new ManagementEventWatcher(oMs, new EventQuery("SELECT * FROM    __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_PrintJob'"));

            manEWatch.EventArrived += new EventArrivedEventHandler(mewPrintJobs_EventArrived);
            manEWatch.Start();

프린터에서 인쇄 이벤트가 발생될 경우 이벤트를 받아서 처리하는 코드..

 

        static void mewPrintJobs_EventArrived(object sender, EventArrivedEventArgs e)
        {
            foreach (PropertyData prop in e.NewEvent.Properties)
            {
                string val = prop.Value == null ? "null" : prop.Value.ToString();

            }

            ManagementBaseObject printJob = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value;
            string v = "";
            foreach (PropertyData propp in printJob.Properties)
            {
                string name = propp.Name;
                string val = propp.Value == null ? "null" : propp.Value.ToString();
                val += "\n";
                v += name + ":" + val;

            }
            System.Windows.Forms.MessageBox.Show(v);
        }

 

이벤트에서 ManagementBaseObject 값을 출력해 보면 아래와 같다.

 

 

 

List<string> printerList = new PrintServer().GetPrintQueues().Select(c => c.Name).ToList();

컴퓨터에 설치된 프린터 목록의 이름만 가져오는 코드입니다.

foreach (PrintQueue pq in ps.GetPrintQueues())

foreach 를 이용하여 PrintQueue 의 항목에서 설치된 프린터 정보들을 가져올 수 있습니다.

https://stackoverflow.com/questions/10113244/why-use-icollection-and-not-ienumerable-or-listt-on-many-many-one-many-relatio

Json 문자열을 Deserialize 하여 사용할때 Class 로 만들면 접근하기가 좋다

헌데 복잡한 문자열은 Class 화 하기가 머리아픈데 아래 사이트가면 간단하게 만들수 있다.

 

http://json2csharp.com/

 

변환하면 RootObject Class 가 가장 상위단의 Class 이며 RootObject 로 DeserializeObject 하면 된다.

RootObject data= JsonConvert.DeserializeObject<RootObject>(jsonString);

 

예시 (카카오 쳇봇 중)

{
  "message": {
    "text": "귀하의 차량이 성공적으로 등록되었습니다. 축하합니다!",
    "photo": {
      "url": "https://photo.src",
      "width": 640,
      "height": 480
    },
    "message_button": {
      "label": "주유 쿠폰받기",
      "url": "https://coupon/url"
    }
  },
  "keyboard": {
    "type": "buttons",
    "buttons": [
      "처음으로",
      "다시 등록하기",
      "취소하기"
    ]
  }
}

변환

public class Photo
{
    public string url { get; set; }
    public int width { get; set; }
    public int height { get; set; }
}

public class MessageButton
{
    public string label { get; set; }
    public string url { get; set; }
}

public class Message
{
    public string text { get; set; }
    public Photo photo { get; set; }
    public MessageButton message_button { get; set; }
}

public class Keyboard
{
    public string type { get; set; }
    public List<string> buttons { get; set; }
}

public class RootObject
{
    public Message message { get; set; }
    public Keyboard keyboard { get; set; }
}

1) ‘시작|실행’ 을 선택하여 cmd 를 입력하여 Command 입력 윈도우를 연다.

2) .NET Framework 가 설치된 디렉토리로 이동한다. ( 보통의 경우 : cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 )

3) aspnet_regiis –i 를 실행한다.

4) 등록 메시지가 화면에 표시되면서 ASP.NET를 웹 사이트에 등록된다. ( <그림 1> 참조 )

5) 웹 사이트 등록정보 HTTP 헤더 탭에서 ASP.NET 등록을 확인한다.

 

 

펌 : http://www.autobase.biz/Korean/AutoBaseHelp/Help10/network/NetworkWebServerAspNetInstall.htm

2015 를 쓰면서 자주 사용했던 기능들이 2017 을 가니

비활성화 되어있거나 다르게 동작하는 것들이 있다.

내가 기억하기 위해 적어본다. (자꾸 잊어먹음;;)

 

1. 솔루션 탐색기에서 활성화된 항목 추적 : 내가 작업하고 있는 소스가 있다면 이 항목이 솔루션 탐색기에서 선택되어있도록 한다.

2. 빌드를 시작할 때 [출력] 창에 표시 : 빌드시 하단 창들중 출력 창을 보여준다.

 

3. 자동 중괄호 완성 : 체크하면 { 입력시 } 가 자동으로 입력된다. 난 체크 해제하고 쓰는게 편하다. 습관이 되서 자꾸 자동으로 추가된 } 을 지운다.;

 

4. 정의로 축소 할때 #region 축소 :  region 단위로 소스를 보고자할 때 region 단위로 소스를 축소한다.
                                              체크 되어있지 않으면 메서드 주석이 남은 상태로 region 처리가 되어 보여진다.

 

5. /* */ 주석을 작성할 때 새 줄의 시작 부분에 * 삽입 : 주석앞에 * 이 자동으로 붙는 기능인데 난 없는게 좋다.

 

6. 마우스를 클릭하면 정의로 이동하도록 허용 : 솔직히 이건 왜 이렇게 한건지 모르겠다 F12 누르면 정의로 이동하는데..;

원래 Ctrl+마우스 좌 클릭하면 문자열 단위로 선택이 되어 편하게 썼는데 그 기능과 겹친다.; 그래서 체크 해제

Visual Studio 2017 을 설치하고 프로젝트를 열었는데

system.windows.interactivity 관련 에러가 발생되었다.

dll 참조에 느낌표가 발생된것이다.

Visual Studio 2015 에서는 잘 돌아갔던 소스였는데.. 머지 하고 검색해 보니

Nuget 을 이용해서 설치하라는데.. 이건 프로젝트와 상관이 없는데... 왜 Nuget 에서 설치를 해야하지?

하고 찾고 있었는데 역시나 환경 문제 였다.

Visual Studio 에서 도구 및 기능 가져오기 로 진입

 

아래와 같은 화면이 나오면 우선 Vusial Studio 를 종료하고

상단의 개별 구성 요소 진입

 

SDK 라이브러리 및 프레임워크 에서 .NET 용 Blend for Visual Studio SDK 를 체크하여 설치를 진행하면 된다.

+ Recent posts