전체 글에 해당하는 글 69

ModRSsim Key 오류, MSVCR100.dll 오류

Error|2023. 8. 28. 20:18

ModRSsim 프로그램을 modbus tcp 테스트를 위해 쓰고 있었다.

 

분명히 무료라고 하길래 받은 프로그램인데 프로그램을 키고 45분이 지나면 미친 프로그램이 키 값을 입력하지 않았다고 계속 널 귀찮게 할것이다 하는 알림창을 중첩해서 계속 띄운다.

 

짜증나서 바로 꺼버리는 바람에 캡처는 못했지만, 해결방법은 세가지 정도가 있다.

1) 홈페이지의 레지스터 등록 파일 같은걸 다운받아서 등록한다.

-> 홈페이지가 없어져있다. 아마 홈페이지 전체를 내린듯 하다. 

2) F1키를 눌러 나오는 도움말을 잘 찾아보면

  • Almost totally free, just mail the author for a key (or compile your own).

라고 써있다.

-> 홈페이지도 닫았는데 메일로 키를 보내줄까?

3) 직접 프로그램을 까서 고쳐라.

sourceforge 같은 사이트에 보면 버전별로 코드까지 다 올라와 있지만, 귀찮다.

 

그래서 ModRSsim2 는 안그럴까 싶어서 받아서 실행해봤는데 역시 옛날 프로그램이라 그런지 이런 오류가 뜬다.

윈도우 특성상 생기는 오류로, 없는 파일을 재설치 하거나 저 파일만 받아서 올바른 경로에 넣으면 된다.

 

어떤 분께서 블로그에 정말 감사하게도 자세히 설명을 해주셨다.

참고: https://m.blog.naver.com/eternalguard/221476085441

 

msvcr100.dll 오류, 다운로드 설치하기 3가지 방법

윈도우에 적합한 프로그램을 개발하기 위해선 윈도우가 제공하는 프로그램 제작 툴을 사용하는 것이 아무래...

blog.naver.com

운영체제를 Mac OS나 리눅스 같은걸 쓰는것도 아니고 윈도우의 버전업인데 이렇게 호환이 안되서야 되겠나?

이런거 좀 안불편하게 낮은버전에서 쓰던걸 좀 호환되게 갖고 올라오던가 마소에서 뭐 신경을 좀 써주면 좋겠다. 

또 귀신같이 공식 마소 링크로 들어가보면 지원 끊어놓았다.

 

며칠전에는 C++ 15-22, 오늘은 C++ 2010...  짜증난다.

'Error' 카테고리의 다른 글

user32.pdb not loaded  (0) 2024.11.15
UE5 컴파일시 Debug console만 뜨는 에러  (0) 2024.11.07
C++ LNK2005, LNK2001 에러  (2) 2024.10.07
응용프로그램의 side-by-side  (0) 2023.08.25

댓글()

응용프로그램의 side-by-side

Error|2023. 8. 25. 20:39

"응용 프로그램의 side-by-side 구성이 잘못되어 응용 프로그램을 시작하지 못했습니다. 자세한 내용은 응용 프로그램 이벤트 로그를 참조하거나 명령줄 sxstrace.exe 도구를 사용하십시오."

 

난생 처음보는 에러가 떳다. 

Modbus TCP 프로토콜을 수신하는 프로그램을 작성하던 중, 내가 작성하는 프로그램이 Client(Master) 이고 데이터를 보내줄 장비가 Server(Slave) 역할을 해서 테스트를 해야했다.

근데 될지 안될지도 모르는 프로그램을 코드 조금만 바꿔도 계속 테스트 해보고 싶은 내 성격상 장비 연결했다가 말았다가 계속 그러기엔 좀 눈치보여서 시뮬레이터로 테스트 해보고 싶었다.

 

근데 Modbus라는 프로토콜을 들어본지도 한달이 채 안지났는데 뭘 알아야 시뮬을 돌리지..

인터넷으로 찾다가 slave 역할을 해줄 프로그램으로 ModRSsim 프로그램을 찾았다.

어찌저찌 다운받고 실행해보니 오래된 프로그램이라 그런가 위와 같은 오류가 떳다.

 

구글링을 좀 해보다 완벽한 해결법을 찾아 기록을 남긴다.

참고 : https://kimazfactory.tistory.com/31

 

응용프로그램의 side-by-side 구성이 잘못되어.. 오류 해결방법

응용프로그램의 side-by-side 구성이 잘못되어.. 오류 해결방법 sxtrace.exe 도구를 사용하십시오 오류 메세지 해결방법 윈도우를 쓰다보면 이상한 프로그램을 지우다가 갑자기 잘 실행되던 프로그램

kimazfactory.tistory.com

심지어 필요한 vc버전도 똑같아 이분덕분에 무사히 고쳤다.

 

다만 글에 있는 링크는 들어가보니 옛날꺼라 그런가 지원을 안해서

https://www.microsoft.com/ko-kr/download/details.aspx?id=26368 

 

Download Microsoft Visual C++ 2008 Service Pack 1 재배포 가능 패키지 MFC 보안 업데이트 from Official Microsoft Dow

중요! 아래에서 언어를 선택하면 전체 페이지 내용이 해당 언어로 신속하게 변경됩니다. 독일어러시아어스페인어영어이탈리아어일본어중국어(간체)중국어(번체)프랑스어한국어 다운로드 Visual

www.microsoft.com

여기서 다운받았다.

따로 재부팅 없이도 잘 돌아갔다.

'Error' 카테고리의 다른 글

user32.pdb not loaded  (0) 2024.11.15
UE5 컴파일시 Debug console만 뜨는 에러  (0) 2024.11.07
C++ LNK2005, LNK2001 에러  (2) 2024.10.07
ModRSsim Key 오류, MSVCR100.dll 오류  (0) 2023.08.28

댓글()

http 통신, 소켓 통신

Network|2023. 8. 25. 19:38

들어가기 앞서

저번에 조사했던 http, 소켓 통신 등 여러 통신방식에 대한 정보를 필요로 했던 회의가 여러가지 이슈로 미뤄져 좀 더 조사해보게 되었다. 추가할 내용이 많아 따로 적어본다.

자바스크립트 기반의 웹 서비스에서 실시간으로 데이터를 주고받아야 할 필요성이 있다는게 핵심 요구 사항인데, 그러면 웹 소켓을 써야겠지만 짧은 내 생각으로는 꼭 소켓 통신을 써야하나? 라는 생각도 들고 여러가지 방법을 자세하게 조사해 달라는 말도 있어서 여러 방식을 알아봤다.

 

1) HTTP 통신

클라이언트가 요청하는 데이터를 서버에서 HTTP 통신 이용하여 전달

API 형식을 작성하여 클라이언트가 API 형식에 따라 데이터 요청하고 받아서 처리

웹 개발을 하는 사람이 데이터를 받고 원하는 형태로 가공하여 화면에 보여줌

 

서버는 제공하고자 하는 데이터나 기능을 제어할 수 있는 API로 만들면, 접근 권한이 있는 프로그램이 API를 통해 서버에서 제공하는 데이터를 요청해 사용 가능

클라이언트는 서버가 제공하는 API에 원하는 정보를 요청해 데이터를 받고 UI 등의 형태로 사용자에게 정보 제공

실시간 통신을 http 통신으로 구현해야 한다면 다음과 같은 방법이 존재

1. polling

클라이언트가 주기적으로 서버에 요청 보내는 방식

 

일정 시간마다 클라이언트가 서버로 요청 보내 데이터 갱신 확인, 갱신되면 응답받는 방식

계속 요청해야 하므로 리소스 낭비 발생

 

구현 단순하므로 요청 시 부담 적고 주기 넉넉하게 잡아도 될 정도로 실시간성이 중요하지 않다면, 데이터 갱신이 특정 주기 갖는다면 해당 방법이 적절

 

 
2. long polling

요청을 보내고 서버에서 변경이 일어날 때까지 대기

지속적 요청을 보내진 않기 때문에 polling보다 부담이 적음

 

만약 유지 시간이 짧으면 polling과 차이가 없고 다수의 클라이언트에게 동시에 이벤트 발생 시 순간적 부담 급증

이벤트 잦으면 부담 증가하므로 실시간 전달 중요하지만 상태가 빈번하게 갱신되진 않을 때 적절

 

3. SSE

 

서버에서 클라이언트로 변경이 필요한 데이터를 전송해주는 SSE (Server-sent Events) 기술 존재

서버에서 클라이언트에 업데이트가 필요한 시점에 단방향으로 데이터를 제공하므로 주식, 날씨 정보 등의 업데이트에 유용

IE에서 지원하지 않는다는 단점 존재하나, polyfill (브라우저에서 지원하지 않는 API 플러그인이나 자바스크립트로 흉내 내 구현)로 해결 가능

 

2) 소켓 통신

특정 포트를 통해 연결 유지하며 서버와 클라이언트가 양방향으로 데이터 주고받기 위해 사용

계속해서 연결을 들고 있어야 실시간 통신이 가능해 많은 리소스 소모

실시간 양방향 데이터 전송을 위해 클라이언트와 서버는 소켓 연결한 상태로 유지

 

웹 소켓 API는 기본적인 기능만 제공하므로 오픈소스 라이브러리 사용

 

Java script 기반 node.js 서버 socket.io 라이브러리는 웹 소켓 연결 장애 발생 시 자동으로 http long polling으로 대체하는 기능도 존재하나 데이터 이동이 활발할 시 비용 많이 발생

 

3) HTTP 통신과 소켓 통신의 차이

HTTP 통신은 클라이언트가 요청해야 서버가 응답

서버로부터 응답받은 후에는 연결 종료

 

소켓 통신은 특정 포트를 통해 양방향 통신

HTTP 통신에 비해 더 많은 리소스 소모

지속적인 양방향 데이터 통신처럼 보이기 위해서 http 통신은 계속해서 데이터 요청하는 polling 방식 사용

사실상 실시간 연결은 아니므로 대부분 연결이 길어지면 단방향 통신으로 설계되어 헤더가 무거운 http 통신 특성상 여러 문제 발생

 

소켓 통신이 실시간으로 데이터를 주고받는 상황에서 http 통신에 비해 더 유리하지만, 실시간 기능이 필요하지 않은 상황에 적용 시 http 통신에 비해 비용이 크기 때문에 적절한 선택 필요

 

4) DB

DB 서버를 기반으로 서비스에 필요한 데이터 제공

DB 접속 권한을 클라이언트나 웹서버에 부여하고 DB 서버에 데이터를 요청해 받아오기 위해 클라이언트나 웹서버에서 위의 HTTP 통신이나 소켓 통신 등을 구현하여 데이터를 제공

 

내 생각으로는 데이터를 주고받는다면 보통 DB가 기반이기 때문에, 사실상 DB와 어떤 방식으로 통신할지를 결정하는 것

 

'Network' 카테고리의 다른 글

02  (0) 2023.08.17
01  (0) 2023.08.16
00  (0) 2023.08.14

댓글()

백준 9461

Algorithm|2023. 8. 20. 20:04

이건 대놓고 수열이라 오히려 점화식이 금방 보였다.

DP 치고 쉬워서 이거 푼다음 자신감 붙어서 여러개 도전했다가 싹 머리 깨졌다.

DP 어렵다. 많이 해봐야 할 듯.

 

https://www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

using System;

namespace Padoban
{
    class b9461
    {
        static void solution(int N)
        {
            ulong[] P = new ulong[N];

            if(N < 3)
            {
                Console.WriteLine("1");
                return;
            }
            P[0] = 1; P[1] = 1; P[2] = 1;
            for (int i = 3; i < N; i++)
            {
                P[i] = P[i-2] + P[i-3];
            }
            Console.WriteLine(P[N-1]);
        }
        static void Main(string[] args)
        {
            int T = int.Parse(Console.ReadLine());
            for(int i = 0; i < T; i++)
            {
                int N = int.Parse(Console.ReadLine());
                solution(N);
            }
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2798  (0) 2023.08.18
백준 2839  (0) 2023.08.18

댓글()

백준 1149

Algorithm|2023. 8. 20. 17:02

예전에 DP를 제일 어려워했던 기억이 있어서 바로 DP 갈겨봤다.

아직 잘 못풀겠다. 그동안 연습을 안했으니 당연히 그대로 풀기 어려운거라 생각한다.

점화식을 찾아내서 그걸 코드로 바꾸는 부분에서 많이 헤멘다.

누군가의 점화식을 보고 풀었다.

그리고 동적 배열로 할당하니 

system.nullreferenceexception: object reference not set to an instance of an object.

라는 오류가 떠서 [][] 이모양 말고 [,] 으로 바꿔서 했다.

 

 

언젠간 잘하게 되겠지.

https://www.acmicpc.net/problem/1149

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net

namespace RGB_Street
{
    class b1149
    {
        static void solution(int N, int[,] cost)
        {
            for (int i = 1; i < N; i++)
            {
                cost[i,0] += Math.Min(cost[i - 1,1], cost[i - 1,2]);
                cost[i,1] += Math.Min(cost[i - 1,0], cost[i - 1,2]);
                cost[i,2] += Math.Min(cost[i - 1,0], cost[i - 1,1]);
            }
            int min = Math.Min(cost[N-1,0], cost[N-1,1]);
            min = Math.Min(cost[N-1,2], min);

            Console.WriteLine(min);
        }
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            int[,] cost = new int[N,3];
            for (int i = 0; i < N; i++)
            {
                string[] tmp = Console.ReadLine().Split(' ');
                for (int j = 0; j < 3; j++)
                {
                    cost[i,j] = int.Parse(tmp[j]);
                }
            }
            solution(N, cost);
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 9461  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2798  (0) 2023.08.18
백준 2839  (0) 2023.08.18

댓글()

백준 11866

Algorithm|2023. 8. 19. 18:54

스택도 했으니 큐도 한번 해봐야 하지 않을까? 해서 풀어본 문제.
확실히 스택이든 큐든 옛날에 C로 직접 구현했을땐 골때렸는데 라이브러리로 퉁치는게 쉽고 빠르다.

문제가 무슨말을 하는지 잘 이해안되서 그림판에다 해보니 바로 이해가 갔던..

 

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

using System;
using System.Collections;
using System.Collections.Generic;

namespace yosepus
{
    class b11866
    {
        static void solution(int N, int K)
        {
            Queue<int> SQ = new Queue<int>(N);
            int flag = N;
            int set = 1;
            Console.Write("<");
            for (int i = 1; i <= N; i++)
            {
                SQ.Enqueue(i);
            }
            while (SQ.Count() != 0)
            {
                int k = SQ.Dequeue();
                if(set != K)
                {
                    SQ.Enqueue(k);
                    set++;
                }
                else
                {
                    if(SQ.Count == 0)
                    {
                        Console.WriteLine("{0}>", k);
                        break;
                    }
                    Console.Write("{0}, ", k);
                    set = 1;
                }
               
                flag--;
                //SQ.TrimToSize();
            }
            //Console.Write(">");
        }
        static void Main(string[] args)
        {

            int N = 0, K = 0;
            string[] tmp = Console.ReadLine().Split(' ');

            N = int.Parse(tmp[0]);
            K = int.Parse(tmp[1]);


            solution(N, K);
            //Console.WriteLine("Input N: {0}, K: {1}", N, K);
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 9461  (0) 2023.08.20
백준 1149  (0) 2023.08.20
백준 12789  (0) 2023.08.19
백준 2798  (0) 2023.08.18
백준 2839  (0) 2023.08.18

댓글()

백준 12789

Algorithm|2023. 8. 19. 17:52

그래도 스택 자료구조는 한번 해봐야 하지 않을까? 해서 풀어본 문제

정답률이 꽤 낮아 풀어봤다.

아마 사이드에 빠졌다가 원래 있던 줄로 다시 돌아갈 수 없는데,

돌아갈 수 있다고 착각해서 틀린 나같은 사람이 많아서 정답률이 낮은것 같다.

 

https://www.acmicpc.net/problem/12789

 

12789번: 도키도키 간식드리미

인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두

www.acmicpc.net

using System;
using System.Collections.Generic;
using System.Net;

namespace Snack_Line
{
    class b12789
    {
        static string solution(Stack<int> num)
        {
            Stack<int> side = new Stack<int>();
            int check = 1;

            while(true)
            {
                if (num.Contains(check)){
                    int tmp = 0;
                    while (check != (tmp = num.Pop()))
                    {
                        side.Push(tmp);
                    }
                    //Console.WriteLine(tmp);
                }
                else if (side.Contains(check))
                {
                    while (true)
                    {
                        int tmp = side.Pop();
                        //Console.WriteLine(tmp);
                        if (check != tmp)
                        {
                            return "Sad";
                        }
                        //if(side.Count == 0)
                        //{
                        //    break;
                        //}
                        break;
                    }
                }
                else
                {
                    return "Sad";
                }
                if ((num.Count == 0) && (side.Count == 0))
                {
                    return "Nice";
                }
                check++;
                //break;
            }
        }

        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            string[] tmp = Console.ReadLine().Split(' ');
           
            Stack<int> number = new Stack<int>();

            for(int i = N-1; i >= 0; i--)
            {
                number.Push(int.Parse(tmp[i]));
            }
           
            Console.WriteLine(solution(number));
        }
    }
}

 

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 2798  (0) 2023.08.18
백준 2839  (0) 2023.08.18
시작한 계기  (0) 2023.08.18

댓글()

백준 2798

Algorithm|2023. 8. 18. 20:00

블랙잭 문제이다.

알고리즘은 브루트포스 알고리즘. 그냥 싹 다 돌려보는거에 이런 거창한 이름이 붙은 이유가 뭘까?

근데 틀렸다. 예시는 잘 나오는데 반례를 잘 찾아서 다시 풀어보자.

3중 for문 같은 코드 더럽게 만드는걸 굉장히 싫어하는데 이것도 고칠 방법을 찾아보고 싶다.

 

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

using System;

namespace BlackJack
{
    class b2798
    {
        static void Main(string[] args)
        {
            string[] input = Console.ReadLine().Split();
            string[] num = Console.ReadLine().Split();

            int[] num_list = new int[int.Parse(input[0])];
            for (int i = 0; i < num.Length; i++)
            {
                num_list[i] = int.Parse(num[i]);
            }

            b2798 sol = new b2798();
            int s = sol.solution(int.Parse(input[1]), num_list);
            Console.WriteLine(s);
        }
        public int solution(int target_number, int[] list)
        {
            int sol = 0;

            for(int i = 0; i < list.Length-2; i++)
            {
                for(int j = i+1; j < list.Length-1; j++)
                {
                    for(int k = i+2; k < list.Length; k++)
                    {
                        int sum = list[i] + list[j] + list[k];
                        if((sum <= target_number) && (sum > sol))
                        {
                            sol = sum;
                        }
                    }
                }
            }

            return sol;
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2839  (0) 2023.08.18
시작한 계기  (0) 2023.08.18

댓글()