asp.net으로 rest api개발할 때 Swashbuckle.AspNetCore 패키지를 많이 사용할 것입니다.

그런데 기본 설정으로는 소스코드의 주석이 swagger주석으로 출력되지 않기 때문에 다음 설정을 해줘야합니다.

 

1. 프로젝스 설정 > 빌드 > 설명서 파일을 체크.

 

2. Program.cs 에 AddSwaggerGen 부분의 코드를 아래와 같은 형태로 변경

            builder.Services.AddSwaggerGen(options =>
            {
                // using System.Reflection;
                var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));
            });

 

k8s에서 sidecar 테스트를 위해 진행했는데... 잘 되는 것 확인!

 

윈도우에서도 잘 된다.!

            var builder = WebApplication.CreateBuilder(args);

            var socketName = "my.socket";
            var socketPath = Path.Join(Path.GetTempPath(), socketName);
            if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                socketPath = Path.Join("/tmp", socketName);

            if (File.Exists(socketPath))
                File.Delete(socketPath);

            // Configure Kestrel to listen at the UDS path
            builder.WebHost.ConfigureKestrel(
                opts => opts.ListenUnixSocket(socketPath));

 

inkscape는 훌륭한 벡터이미지 편집기입니다.

상용프로그램인 Adobe illustrator에 비할는 아니지만,

적절하게 벡터이미지가 필요할 경우 조금 시간을 들이면 원하는 이미지를 만들 수 있습니다.

 

다만, 도형으로 만들다보면 객체들이 많이 생겨서 나중에 svg리소스를 프로그램에서 활용하고자할때 좀 무겁게 됩니다.

 

하나의 path로 만들고 싶을때 적용하는 방법입니다.

 

1. 그린 개체들을 모두 선택 한 후

 

2.객체를 경로로 변경합니다.

 

 

3. 이후 경로 합치기를 하거나, 여러가지 도형에 대한 적절한 오퍼레이션을 합니다.

 

4. 경로가 합쳐지기 때문에 색상이 통일 됨을 주의합니다.

 

5. 파일 문서 속성에서 Resize to content를 누르면 컨텐츠에 맞게 여백이 사라집니다.

iframe과 부모창간의 메시지 통신예제입니다.

 

 

 

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Main</title>
    <style>
      html,
      body {
        width: 100%;
        height: 100%;
      }
      textarea {
        border: 1px solid #ccc;
        box-sizing: border-box;
        width: 100%;
        resize: none;
        height: 30vh;
        padding: 1em;
      }
      textarea:focus {
        outline: none;
      }
    </style>
  </head>
  <body>
    <iframe src="chart.html" width="100%" height="300"></iframe>
    <textarea id="log"></textarea>
    <script>
      window.addEventListener("message", (event) => {
        // if (event.origin !== "https://parent-origin.com") {
        //   return;
        // }

        const logElement = document.getElementById("log");
        const message = event.data;
        if (message.type !== "chart") return;
        logElement.textContent += JSON.stringify(message) + "\r\n";
        logElement.scrollTop = logElement.scrollHeight; //스크롤 내리기
      });
    </script>
  </body>
</html>

 

 

chart.html

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Chart</title>
    <style>
      html,
      body {
        width: 100%;
        height: 100%;
        background-color: #ccc;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    CHART
    <br />
    <button type="button" onclick="sendMessage(event)">이벤트 전송</button>
    <br />
    <script>
      function sendMessage(event) {
        const message = {
          type: "chart",
          time: new Date(),
          text: "Message from chart",
          data: [0, 1, 2, 3],
        };
        window.parent.postMessage(message, "*");
      }
    </script>
  </body>
</html>

 

 

소스 다운

iframe_event.zip
0.00MB

 

먼저 볼륨 이름을 확인,

sudo lvdisplay

 

sudo lvscan

 

우분투 리눅스 논리 볼륨 확장하기

sudo lvextend -l +100%FREE  /dev/ubuntu-vg/ubuntu-lv

 

 

확장 전 100G만 사용중이다.

 

확장 후 모습. /에 473.9(500G)사용할 수 있도록 하였다.

 

 

# sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

sudo resize2fs [경로]

PS D:\Work\ozstack-n2> npm run dev  

> ozstack-n2@0.0.0 dev
> vite

error when starting dev server:
Error: listen EACCES: permission denied 127.0.0.1:5173
    at Server.setupListenHandle [as _listen2] (node:net:1313:21)
    at listenInCluster (node:net:1378:12)
    at GetAddrInfoReqWrap.doListen [as callback] (node:net:1516:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:73:8)

 

 

> 해결

cmd 관리자모드에서 아래 명령어 실행 후 재 시도.

 

net stop winnat

net stop winnat

# ilspy를 이용한 모델 추출 스크립트

dotnet tool install ilspycmd

dotnet ilspycmd  .\MyModels\bin\Debug\net6.0\MyModels.dll --list c | `
                 Where-Object {$_ -like '*MyModel*'} | `
                 %{ $_.replace("Class MyModels.","") } | `
                 ConvertTo-Json -Compress

가끔씩 쓰는데 명령어가 헷갈릴 때가 있어 남겨둡니다.

bash 쉘에서 base64 툴 이용 시.

# base64 인코딩
echo "test" | base64

# base64 디코딩
echo "dGVzdAo=" | base64 -d

#  without new line
echo -n "test" | base64 -w 0

powershell에서 base64 툴 이용 시

# base64 인코딩
echo "test" | %{ [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($_)) }

# base64 디코딩
echo "dGVzdA==" | %{ [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($_)) }

# %{ } 는 foreach의 shorthand다.

+ Recent posts