Profile img

고남현

@gnh1201@hackers.pub · 1 following · 20 followers

Mastodon
@gnh1201@catswords.social
GitHub
@gnh1201

압축 요청 헤더 지원 여부에 따른 HTTP Client 이중화

고남현 @gnh1201@hackers.pub

이 글에서는 .NET 환경에서 HTTP를 통한 파일 전송 시 압축을 활용하여 로딩 시간을 단축하는 방법에 대해 설명합니다. 특히, `Accept-Encoding` 헤더를 이용한 압축 요청이 서비스별로 다르게 처리될 수 있는 문제점을 지적하고, 이를 해결하기 위해 HTTP Client를 이중화하는 방법을 제시합니다. 미리 압축된 파일을 우선적으로 다운로드하고, 실패 시 압축 요청 헤더를 포함한 요청을 보내는 방식으로 압축 전송을 보장합니다. 실제 적용 사례인 `AssemblyLoader.cs` 파일의 예시를 통해, 이 방법이 어떻게 라이브러리 로딩 속도를 향상시키는지 확인할 수 있습니다. 이 글은 네트워크를 통한 라이브러리 로딩 시 안정성 확보와 성능 향상을 동시에 추구하는 개발자에게 유용한 인사이트를 제공합니다.

Read more →
1

고남현 replied to the below article:

DLL을 JS 처럼 import 단계에서 네트워크로 동적 로딩하기

고남현 @gnh1201@hackers.pub

이 글은 .NET 기반 Windows 앱 개발 시 발생하는 "DLL Hell" 문제를 해결하기 위한 새로운 접근 방식을 소개합니다. 기존의 어셈블리 병합 방식 대신, 네트워크에서 동적으로 어셈블리를 로드하는 방법을 제안합니다. C#의 `using` 키워드 해결 과정에 개입하여 CDN(Azure Blob Storage)을 통해 어셈블리를 로드하고, 코드 서명 검증을 통해 보안을 강화합니다. .NET IL뿐만 아니라 네이티브 어셈블리 로딩도 지원하며, 실제 코드 예시를 통해 구현 방법을 설명합니다. 이 방법은 배포 시 추가 어셈블리 누락으로 인한 오류를 방지하는 데 도움을 주지만, 여전히 추가 어셈블리를 함께 배포하는 것을 권장합니다. 이 글을 통해 개발자는 어셈블리 관리의 유연성을 높이고 잠재적인 배포 문제를 해결하는 데 도움이 되는 유용한 정보를 얻을 수 있습니다.

Read more →
6
0

DLL을 JS 처럼 import 단계에서 네트워크로 동적 로딩하기

고남현 @gnh1201@hackers.pub

이 글은 .NET 기반 Windows 앱 개발 시 발생하는 "DLL Hell" 문제를 해결하기 위한 새로운 접근 방식을 소개합니다. 기존의 어셈블리 병합 방식 대신, 네트워크에서 동적으로 어셈블리를 로드하는 방법을 제안합니다. C#의 `using` 키워드 해결 과정에 개입하여 CDN(Azure Blob Storage)을 통해 어셈블리를 로드하고, 코드 서명 검증을 통해 보안을 강화합니다. .NET IL뿐만 아니라 네이티브 어셈블리 로딩도 지원하며, 실제 코드 예시를 통해 구현 방법을 설명합니다. 이 방법은 배포 시 추가 어셈블리 누락으로 인한 오류를 방지하는 데 도움을 주지만, 여전히 추가 어셈블리를 함께 배포하는 것을 권장합니다. 이 글을 통해 개발자는 어셈블리 관리의 유연성을 높이고 잠재적인 배포 문제를 해결하는 데 도움이 되는 유용한 정보를 얻을 수 있습니다.

Read more →
6

고남현 shared the below article:

일본 서버를 한국과 거의 비슷한 속도로 원격 접속하기

고남현 @gnh1201@hackers.pub

이 글에서는 한국에서 일본 서버를 사용할 때 발생하는 네트워크 지연 문제를 다루고, 해저 케이블망을 활용하여 이를 개선하는 방법을 소개합니다. 저렴한 일본 서버를 선택했지만, 실제 한국에서의 통신 속도가 예상보다 훨씬 느린 250ms에 달해 미국 시애틀보다도 못한 상황을 겪었습니다. 하지만 Microsoft Azure의 한국 리전을 중간 서버로 활용하여 데이터 센터 간 통신을 시도한 결과, 핑 시간을 30ms대로 크게 단축시키는 데 성공했습니다. 이는 86%의 속도 향상으로, RDP를 통해 원격 데스크탑을 사용하는 환경에서 체감 속도를 극적으로 개선했습니다. 이 글은 해외 서버를 사용할 때 네트워크 지연을 줄이는 실질적인 해결책을 제시하며, 독자에게 더 빠르고 효율적인 원격 작업 환경을 구축하는 데 도움을 줄 수 있습니다.

Read more →
8
1
0

일본 서버를 한국과 거의 비슷한 속도로 원격 접속하기

고남현 @gnh1201@hackers.pub

이 글에서는 한국에서 일본 서버를 사용할 때 발생하는 네트워크 지연 문제를 다루고, 해저 케이블망을 활용하여 이를 개선하는 방법을 소개합니다. 저렴한 일본 서버를 선택했지만, 실제 한국에서의 통신 속도가 예상보다 훨씬 느린 250ms에 달해 미국 시애틀보다도 못한 상황을 겪었습니다. 하지만 Microsoft Azure의 한국 리전을 중간 서버로 활용하여 데이터 센터 간 통신을 시도한 결과, 핑 시간을 30ms대로 크게 단축시키는 데 성공했습니다. 이는 86%의 속도 향상으로, RDP를 통해 원격 데스크탑을 사용하는 환경에서 체감 속도를 극적으로 개선했습니다. 이 글은 해외 서버를 사용할 때 네트워크 지연을 줄이는 실질적인 해결책을 제시하며, 독자에게 더 빠르고 효율적인 원격 작업 환경을 구축하는 데 도움을 줄 수 있습니다.

Read more →
8
1
0

고남현 replied to the below article:

jQuery로 SPA 앱 최소 구현하기

고남현 @gnh1201@hackers.pub

이 글은 jQuery만을 사용하여 SPA(Single-page application)를 구현하는 방법을 소개합니다. React나 Vue와 같은 현대적인 프레임워크 없이도 jQuery와 몇 가지 유용한 라이브러리(URI.js, jQuery Form, jsRender)를 활용하여 SPA를 구축할 수 있음을 보여줍니다. 핵심은 `$.fn.App` 객체를 통해 라우팅 규칙, 템플릿 렌더링, 데이터 연결을 처리하는 것입니다. 특히 `pushState`와 `popState`를 사용하여 브라우저의 히스토리 관리를 구현, 일반 웹사이트와 유사한 탐색 경험을 제공합니다. 이 글은 SPA 개발 경험이 없는 개발자가 주류 프레임워크의 작동 방식을 이해하는 데 도움을 줄 뿐만 아니라, jQuery 환경에서 SPA를 구축해야 하는 상황에 대한 실질적인 해결책을 제시합니다.

Read more →
0

클릭 초기화를 빼먹었네. 다음과 같이 하면 돼.

        // (...omitted...)
        "initClicks": function(_options) {
            return function(e) {
                if($(this).attr("href").indexOf(":/") < 0) {
                    e.preventDefault();
                    $().App.renderTemplate($(this).attr("href"), $().App.routes, false, _options);
                }
            }
        },
        // (...omitted...)

읽어줘서 고마워 :)

0

jQuery로 SPA 앱 최소 구현하기

고남현 @gnh1201@hackers.pub

이 글은 jQuery만을 사용하여 SPA(Single-page application)를 구현하는 방법을 소개합니다. React나 Vue와 같은 현대적인 프레임워크 없이도 jQuery와 몇 가지 유용한 라이브러리(URI.js, jQuery Form, jsRender)를 활용하여 SPA를 구축할 수 있음을 보여줍니다. 핵심은 `$.fn.App` 객체를 통해 라우팅 규칙, 템플릿 렌더링, 데이터 연결을 처리하는 것입니다. 특히 `pushState`와 `popState`를 사용하여 브라우저의 히스토리 관리를 구현, 일반 웹사이트와 유사한 탐색 경험을 제공합니다. 이 글은 SPA 개발 경험이 없는 개발자가 주류 프레임워크의 작동 방식을 이해하는 데 도움을 줄 뿐만 아니라, jQuery 환경에서 SPA를 구축해야 하는 상황에 대한 실질적인 해결책을 제시합니다.

Read more →
0

고남현 replied to the below article:

CSI Cyber 에피소드 정리 (1화 - 4화)

고남현 @gnh1201@hackers.pub

CSI Cyber 1화부터 4화까지의 주요 내용을 요약하면 다음과 같습니다. 1화에서는 홈 카메라 해킹을 통해 아이가 납치되는 충격적인 사건을 다루며 C&C 서버, 펌웨어, 악성코드 등 정보보안의 주요 개념을 소개합니다. 2화에서는 롤러코스터 프로포즈 중 벌어진 폭발 사고를 통해 블루투스 해킹, 하드웨어 해킹, 산업제어시설 해킹의 위험성을 경고합니다. 3화에서는 택시 호출 기록의 미스터리를 통해 악의적으로 설치된 공개 와이파이의 위험성을 보여줍니다. 마지막으로 4화에서는 IoT 해킹으로 인해 집 전체가 화염에 휩싸이는 사건을 통해 적절한 보안 처리가 되어있지 않은 와이파이의 위험성을 강조합니다. 이 드라마는 현실적인 정보보안 문제를 흥미롭게 풀어내어 시청자들에게 보안의 중요성을 일깨워줍니다.

Read more →
2
0

CSI Cyber 에피소드 정리 (1화 - 4화)

고남현 @gnh1201@hackers.pub

CSI Cyber 1화부터 4화까지의 주요 내용을 요약하면 다음과 같습니다. 1화에서는 홈 카메라 해킹을 통해 아이가 납치되는 충격적인 사건을 다루며 C&C 서버, 펌웨어, 악성코드 등 정보보안의 주요 개념을 소개합니다. 2화에서는 롤러코스터 프로포즈 중 벌어진 폭발 사고를 통해 블루투스 해킹, 하드웨어 해킹, 산업제어시설 해킹의 위험성을 경고합니다. 3화에서는 택시 호출 기록의 미스터리를 통해 악의적으로 설치된 공개 와이파이의 위험성을 보여줍니다. 마지막으로 4화에서는 IoT 해킹으로 인해 집 전체가 화염에 휩싸이는 사건을 통해 적절한 보안 처리가 되어있지 않은 와이파이의 위험성을 강조합니다. 이 드라마는 현실적인 정보보안 문제를 흥미롭게 풀어내어 시청자들에게 보안의 중요성을 일깨워줍니다.

Read more →
2

ChakraCore를 JSON 디코더 및 인코더로 활용하기

고남현 @gnh1201@hackers.pub

이 글에서는 .NET 환경에서 JSON을 처리할 때 기존 라이브러리가 가진 한계를 극복하고, JavaScript 스타일을 최대한 유지하면서 효율적인 JSON 입출력을 구현하기 위한 고민과 해결책을 제시합니다. 표준 라이브러리의 크기, 신뢰성 문제, 그리고 JavaScript 스타일과의 괴리를 해결하기 위해 ChakraCore 엔진을 활용한 방법을 소개합니다. ChakraCore 엔진을 통해 JSON 직렬화 및 파싱을 수행하는 C# 코드를 예시로 보여주며, 기존 .NET의 XML 처리 방식과 유사하면서도 JavaScript 스타일에 가까운 JSON 입출력을 가능하게 합니다. 이 접근 방식은 다른 프로그래밍 환경에서도 JSON 포맷 처리 시 유사한 문제에 대한 해결책을 제공할 수 있습니다.

Read more →
4

인간관계에 있어 일을 주든, 투자를 해주든, 내가 영업하는 제품을 구매해주든 어느 한쪽 또는 양쪽에 이익을 가져다주지 못하는 관계인 경우 아예 연락이 끊기는 정도의 수순을 밟게 되는 것이 일반적임.

오픈소스 활동의 좋은 점은 저런 명확한 이익관계가 없더라도 한번 서로 인지된 사람이면은 가늘더라도 꽤 오랫동안 서로 연락하는 관계를 유지할 수 있다는 점임.

개발자도 우울증 많다고 얘기는 많이 들었다.

이런 점에 비춰봤을 때 오픈소스는 개발자의 우울감과 소외감 극복에 도움이 될 수 있다고 생각한다.

6

국산 암호 .NET에서 사용해보자 (SEED, ARIA, HIGHT 등)

고남현 @gnh1201@hackers.pub

.NET 환경에서 국산 암호 알고리즘을 사용하려 할 때, 기존 구현체들의 테스트 벡터 검증 부재, 표준에 맞지 않는 패딩 방식 등의 문제점을 해결하고자 VB.NET으로 SEED, ARIA, HIGHT 알고리즘의 ECB 모드를 구현했다. .NET Standard 2.0 기반으로 개발되어 C# 등 다른 .NET 언어 프로젝트에서도 참조 가능하며, 공식 테스트 벡터를 사용하여 알고리즘을 검증했다. 이 프로젝트는 언어 선택으로 인한 호불호를 줄이고, 최신 시스템에서 사용 가능한 국산 암호 알고리즘을 제공하는 데 중점을 둔다. 자세한 개발 과정은 이슈 링크에서, 소스 코드는 GitHub 저장소에서 확인할 수 있다.

Read more →
5

고남현 shared the below article:

불경하다! 어딜 데이터베이스를 깔려고 하느냐? ESENT (ESE) DB 활용기

고남현 @gnh1201@hackers.pub

이 글에서는 외부 개발 도구 사용이 제한된 환경에서 데이터베이스를 활용해야 하는 상황에 대한 해결책을 제시합니다. 필자는 Windows 운영체제에 기본 탑재된 ESENT (ESE) 데이터베이스를 활용하여 칼럼, 스키마, CRUD(생성, 읽기, 수정, 삭제) 기능을 추상화하는 API를 직접 구현했습니다. 이를 통해 개발자는 상용 데이터베이스 없이도 어플리케이션 개발에 필요한 데이터베이스 기능을 사용할 수 있게 되었습니다. 제시된 C# 코드 예제를 통해 ESENT 데이터베이스를 초기화하고, 데이터를 삽입하고, 조회하는 방법을 보여주며, 이를 통해 개발 생산성을 향상시킬 수 있음을 강조합니다.

Read more →
5

불경하다! 어딜 데이터베이스를 깔려고 하느냐? ESENT (ESE) DB 활용기

고남현 @gnh1201@hackers.pub

이 글에서는 외부 개발 도구 사용이 제한된 환경에서 데이터베이스를 활용해야 하는 상황에 대한 해결책을 제시합니다. 필자는 Windows 운영체제에 기본 탑재된 ESENT (ESE) 데이터베이스를 활용하여 칼럼, 스키마, CRUD(생성, 읽기, 수정, 삭제) 기능을 추상화하는 API를 직접 구현했습니다. 이를 통해 개발자는 상용 데이터베이스 없이도 어플리케이션 개발에 필요한 데이터베이스 기능을 사용할 수 있게 되었습니다. 제시된 C# 코드 예제를 통해 ESENT 데이터베이스를 초기화하고, 데이터를 삽입하고, 조회하는 방법을 보여주며, 이를 통해 개발 생산성을 향상시킬 수 있음을 강조합니다.

Read more →
5
0