본문 바로가기

C#/근웹 연대기

(29)
c#으로 근본 없는 웹서버 개발기 21 : cshtml 파싱 - tokenize ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 1. 횡설수설(橫說竪說) 머릿속에서 정리되지 않는 것들에 몰두하다 보니. 포스팅을 한 박자 쉬어버렸다. 그러나 두 박자 쉬고 세 박자 마저 쉬더라도 네박자 이상은 건너뛰지 않으려고 한다. 나 자신의 메타인지에 근거하여 네박자 이상 쉬면 글쓰기에 대한 생각이 휘발성 메모리처럼 완전히 날아가버릴 것 같기 때문이다. 그렇다 자기자신을 통제하기 힘들 때는 습관을 만드는 것이 중요하다. 생각이 바뀌면 행동이 바뀌고 행동이 바뀌면 습관이 바뀌고 습관이 바뀌면 인격이 바뀌고 인격이 바뀌면 운명이 바뀐다 윌리엄 제임스 2. 파싱에 대한 심득(心得) 지금까지 행하여 왔던 파싱작업에 비하면 지금 진행하려는 작업은 꽤나 복잡하다. 때때로,..
c#으로 근본 없는 웹서버 개발기 20 : cshtml layout (이론) ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 1. 분석 asp.net MVC의 페이지 레이아웃 구조를 살펴보았는데, 부모 페이지와 자식 페이지의 관계의 구분이 처음 배우는 사람의 입장으로서 조금 혼란스럽게 되어있다. 우선 베이스 페이지가 되는 _Layout.cshtml에 대해 살펴보자. 이미지의 RenderBody라는 인터페이스를 virtual 키워드로 자식 페이지에서 상속받게 되어 있는데 이것을 만약에 연속적으로 상속 받을 경우 손자 페이지가 오버라이드 되어서 아빠 페이지의 내용이 무시 될 텐데, 어쩐지 무사히 아빠 페이지의 내용까지 잘 나온다. 즉 서브페이지 일 때, 같은 이름의 인터페이스를 상속 받는다면 불가능한 경우다. 이것에 대한 메커니즘을 알아보는 것은..
c#으로 근본 없는 웹서버 개발기 19 : cshtml 파리미터 분석(이론) ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 전편에 이어 이번에는 파라미터 대한 자료를 찾아보았다. 이미지처럼 View구조 자체는 다른 서버 페이지와 별반 차이가 없다. 제대로 알려면 교과서라도 하나 구해서 조목조목 알아봐야 하지만 웹의 프레임워크 자체는 10년 전이나 지금이나 크게 다르지 않다. SPA라는 것으로 패러다임 자체는 조금 변했지만, 전통적인 웹에서도 비동기 통신을 이용하여 간간이 이용했던 방법이다. ... 컨트롤러에서 넘겨주는 파라미터. Request, Response 객체 이외에 구현에 필요한 파라미터는 4가지다 Model ViewData ViewBag TempData 1. Model @model List @foreach(var str in Mod..
c#으로 근본 없는 웹서버 개발기 18 : cshtml 구문 분석(이론) ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 전편에서 언급한 내용의 과정 중에 중요한 부분인 .cshtml을 .cs로 변환하는 것은 파싱 작업이다. 파싱 코드를 작성하기 위해서는 일단 그 대상에 대하여 주의 깊게 관찰해야 할 필요가 있다. 저자는 cshtml의 razor에 대한 경험이 없으므로 간단히 몇 가지 문법에 대해서 알아보았다. 일단 구현에 당장 필요할 것 같은 부분을 3가지로 구분 지었다. 인라인 표현식 코드 블록 코드 블록을 가지고 있는 예약어 (for, if, while...) 1. 인라인 표현식 @str.??? //1 @str.aaa //2 오류 @str.### //3 @str?.??? //4 오류 @str??"ss" //5 @str() //6 오류..
c#으로 근본 없는 웹서버 개발기 17 : 서버페이지 렌더링 계획 ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 이번만큼은 글로 쓰려고 한다면 복잡한 내용이 더 복잡해질 것 같아 PPT를 준비했다. (이미지를 클릭하여 보는 것을 추천)
c#으로 근본 없는 웹서버 개발기 16 : node express? ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 포스팅 텀이 자꾸 길어지고 있다. 앞으로 더 진행해야 할 부분이 DB 연동과 서버 페이지 랜더링인데, 외부 패키지 없이 진행하려니.. 둘 다 쉽지가 않다. 그래서 중간에 텀 또는 시행착오가 없는 내용을 포스팅을 하기가 힘들 거 같다. DB는 MS의 것을 쓰려고 해도 최소 ado.net을 설치해야 한다. 그러면 외부 패키지를 쓰지 않는다는 조건을 만족할 수 없다. 그렇다 이제 와서 약한척 안된다는 척 뒤로 무를 수는 없다. 그렇다 타인과의 약속은 못 지키더라도 자기 자신과의 약속은 지켜야 한다. 그렇다 나는 이제 나의 한계점에 도전해야 한다. 우선, 숨고르기로. 랜더링 엔진을 만들기에 앞서 지금까지 작성한 소스를 정리하기..
c#으로 근본 없는 웹서버 개발기 15 : multipart/form-data 파일전송 ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 multipart/form-data는 명칭에서 유추해볼 수 있듯이 여러 개의 파일이나 텍스트를 form에 쟁여서 전송이 필요할 때 사용하게 되는 Content-type이다. 전송 데이터를 확인하기 위하여 다음과 같이 html form을 작성하였다. First name: Last name: file: file: 그리고 다음과 같이 입력을 하고. Submit을 누르면 콘솔 창에서 아래와 같이 헤더 값이 나온다. method: POST url: /test/multipart http: HTTP/1.1 Host: localhost Connection: keep-alive Content-Length: 52251 Cache-Cont..
c#으로 근본 없는 웹서버 개발기 14 : json parse 만들기 ⚠WARNING ASP.NET에 대한 포스팅이 아닙니다 나가실 문은 오른쪽 하단입니다 파싱 작업이라는 것은 언제나 몇 번이라도. 적지 않는 정신력을 소모한다. 단순히 문자열을 틀에 맞추는 작업일 뿐인데, 깔끔하게 처리하기가 여간 까다롭다. 그런데도 마음속 어딘가에서는 끌리는 매력을 느낀다. 아마도 첫 직장 첫 제안으로 했던 풋풋함이 심층 깊은 골목의 한켠에 녹아들어 있다고 납득하고 싶다. 그날 그 여름날에는.. 반복적인 SQL을 입력하는 단순 노가다에 어떠한 패턴을 느껴버리고 나서, 어지간히도 자동화를 외치고 싶었다. 신입이었던 나는 정규식도, 문자열을 조작하는 메서드도 그러한 테크닉도 몰랐다. (물론 지금도 잘 모른다.) 그냥 IndexOf 로 상황에 맞는 단어가 나오면 거기에 맞게 문자열을 바꾸는 방..