레이저 문법이란 Html 문법에 자연스럽게 프로그래밍 언어를 녹여내리는 일이라고 봅니다.

그렇기 때문에 Razor makup 이라는 명칭이 생긴 것이라 생각합니다.

아래와 같이 @커맨드를 사용하여 DateTime 객체를 간편하게 사용하는 예를 볼 수 있습니다.

< html lang="en">
< head>

Web Pages Demo
< /head>
< body>

   <h1>Hello Web Pages</h1>

   <p>The time is @DateTime.Now</p>
< /body>
< /html>

 

아래의 코드와 같이 직접 C# 코드를 삽입할 수 있습니다.

변수선언, 사용, Razor 문법 활용 등을 볼 수 있습니다.

ASP 문법이랑 비교하면 조금 더 세련됬다고 느낄 수 있네요.

<!-- Single statement block -->

@{   var myMessage = "Hello World";  }

<!-- Iniline expression or variable -->

<p>The value of myMessage is: @myMessage</p>

 

<!-- Multi-statement block -->

@{

var greeting = "Welcome to our site!";

var weekDay = DateTime.Now.DayOf Week;

var greetingMesasage = greetinig + " Thodya is: " + weekDay;
}

 

<p>The greeting is: @greetingMessage</p>

 


WebPages Global

 

웹사이트의 일부는 클라이언트 프로그램처럼 작동하는 부분이 있습니다.

실제로 어느 단계에서 프로그램이 시작되고 끝나는지를 알아야 디버깅이 용이합니다.

ASP에서는 이렇듯이 웹페이지가 시작할 때 작동하는 페이지를 Global Pages라고 합니다.

 

다음의 두 가지 PageStart 이벤트를 볼 수 있습니다.

 

Before Web startup: _AppStart

실제로 서버에 웹사이트가 올라가고 처음 시작될 때 사용됩니다.

서버에서 웹사이트가 구축되어 작동할 때, 항시 웹서버가 작동하는 것은 아닙니다.

서버 자체가 재시작 될 경우, 웹사이트 자체가 중단되거나 재시작 되는 경우가 존재합니다.

따라서, ASP가 시작되는 경우를 아는 것은 중요하다고 생각됩니다.

 

Before Every Page: _PageStart

웹페이지가 매번 시작될 때 사용됩니다.

각 폴더에 있는 매 페이지가 사용될 때 불리게 되는 페이지입니다.

 

특정 페이지에 대하여 특별한 코드를 삽입할 필요가 있을 때 사용됩니다.

예를 들면, 어느 사용자가 어떤 페이지를 사용하는지 알고 싶을 때 말이죠.

혹은 특정 페이지에서만 사용할 데이터를 특정 지을 때 도 좋을 것 같습니다.

 

'ASP' 카테고리의 다른 글

ASP Procedures (ASP 프록시, 함수)  (0) 2019.06.16
ASP Classic Variable (변수 선언)  (0) 2019.06.16

 

사용 예시1

 

<%

function command1(inputText, inputNum)

{

Response.Write(inputText);

Response.Write(" Value: " + inputNum*2 );

}

%>

 

<body>

 

<p>Result: <%command("Product", "4700")%></p>

 

</body>

 

 

사용 예시2

 

함수의 선언이 우선시 되어야 한다.

리턴 값이 어떻게 전달되어야 하는지 배워보자.

 

함수의 선언부

Sub mysub()

   some statesments

   mysub = "Game is not bad thing!"

   response.write(" Continue !");

End Sub

 

명명한 함수 명에 값을 전달함으로서 함수의 리턴 값을 정의할 수 있다.

 

 

함수의 호출부는 다음과 같다.

 

1. 함수의 결과값을 다음같이 이용하거나

response.write(mysub())

 

2. 함수를 호출함으로서 결과 값을 이용할 수 있다.

Call mysub()

 

3. 함수명과 함께 지정 변수를 던진다. 

mysub argu1, argu2

 

 

! VisualBasic 에서는 전역변수의 사용이 때때로 필요하다. 따라서 변수의 사용범위와 명명에 중요성을 기억하도록 하자.

'ASP' 카테고리의 다른 글

Razor Code  (0) 2019.06.25
ASP Classic Variable (변수 선언)  (0) 2019.06.16

 

ASP에서 사용되는 문법은 2가지로 ASP Language와 VB Script로 나뉜다.

 

ASP Language로 작성되는 변수 선언은 다른 스크립트 언어와 다르지 않으므로 간략히 사용한다.

 

foo = 3;

bar = "Later";

 

VB Script로 선언하자면 다음과 같은 문법이 사용된다.

 

Dim [variable Name]

Dim [variable name](n)

 

해당 선언 후 다음과 같이 사용된다.

 

Name = "4" ;

name(0) = "kinda" ;

name(1) = "gotta" ;

...

 

사용 시에는 선언문과 동일하게 변수명을 그대로 불러 이용하면 된다.

 

또 다른 예의 사용으로, 2차 배열 선언에 관해서는 여기를 누르면 된다.

 

'ASP' 카테고리의 다른 글

Razor Code  (0) 2019.06.25
ASP Procedures (ASP 프록시, 함수)  (0) 2019.06.16

자바 로그 유틸입니다.

해당 파일 다운받아서 사용하시면 될 듯해요.

 

https://github.com/Deamin-Will/LogUtil/commit/b9a6f40ca91f095aa0a93cdf503d913847483022

 

Create Log.java · Deamin-Will/LogUtil@b9a6f40

Permalink Browse files Create Log.java Loading branch information... Showing 1 changed file with 51 additions and 0 deletions. +51 −0 src/com/megabit/utils/log/Log.java @@ -0,0 +1,51 @@ package com.megabit.utils.log; import java.io.File; import java.io.Fil

github.com

 

 

웹 개발이라 하면 장점은 통일된 클라이언트 환경에서 서비스를 제공함을 들 수 있다.

그렇기에 프로그램의 많은 부분이 클라이언트나 (OS에서 구동되는) 프로그램으로도 구현이 가능함에 불구하고, 웹으로 구현된 프로그램이 많다.

 

공학이론에서 배운 중앙집중시스템에 대한 관점에서 보더라도 반복적으로 쓰이는 중심 기능들은 집중화된 서버에서 이루어져 함에 관리 및 개발이 용이함을 알 수 있다. 

최근에는 윈도우의 버전이 통합됨에 따라 호환성의 많은 부분이 해결되었다고 볼 수 있지만 그 외의 운영체제를 사용하는 사용자 수는 결코 작지 않다.

 

익스플로러가 제공하는 다양한 기능에는 사용자들이 접해보지 못한 기능들이 많이 존재한다.

그러한 기능들을 이용자들에게 하여금 보여줄 수 없는 이유는, 지금의 웹환경 생태가 브라우저 호환성을 요구하고 있다는 점이다. 또한, 이러한 최신 기능 트랜드들을 선두할 주체가 없다는 점이다.

 

그렇기에 오래전에 발표된 익스플로러의 기능들이 있음에, 이를 이용하기 보다는 웹서버를 사용하곤 한다. 하지만 이는 결코 단순한 부분이 아니다. 사용자 입장에서는 클라이언트, 즉 보이는 부분에만 민감하고 어떤 기능이 되고 안되고만을 느끼기에 기술적인 어려움을 느끼기 힘들다.

 

브라우저 호환성을 갖추기 위하여 최근의 트랜드는 웹서버와 웹클라이언트 간의 소통이 가능한 구조로 개발을 진행하는 중에 있다. 글쓴이는 이러한 부분에 있어서 경험이 적은 데 그 부분이 아쉽다. (아에 없는 않다. 하지만 상용화된 서비스에 이러한 기술을 적용한 실무진들이 부러울 따름...)

 

이 기능, 저 기능 안된다고 불만을 표하는 것은 좋으나, 개발이 쉽지 않은 부분을 이해해주었으면 한다. 보통의 프로그램으로 가능한 역할 (흔히 쓰는 유틸, 컨텐츠 뷰어) 등을 웹으로 구현하려면 3배 이상의 노력이 수고됨이 일반 독자들에게 말하고 싶은 점이다. 더군다나, 요즘의 새로 나온 트랜드라... 개발자끼리의 자료 공유나 리소스를 찾기 어려운 점도 그러한 이유다.

 

호환성이라는 놈은 결코 만만한 녀석이 아닌 것이다.

 

파이썬에는 Web Request를 사용하기 위한 다양한 Library가 존재한다.

문제점은 해당 라이브러리를 사용하면 결과를 쉽게 얻을 수 있지만 디버깅의 어려움이 있다는 점이다.

그렇기 때문에 다른 프로그램에 의존을 할 필요가 있다.

 

해당 프로그램명이나 노하우는 개발자의 개인적인 비밀이므로 약간의 힌트만 주고자 한다.

 

1. Web API(Restful) 소통을 위하여 당연시 되는 것은 Http Header, Cookiee, Protocol, Body 등의 구성이다.

남의 라이브러리를 손에 익힌다는 것을 쉬운 일이 아니다.

디버깅을 위해서는 Web Reuqest를 받을 서버가 필요하다. 왜냐하면 위의 값들이 제대로 구성되어 있는지 확인이 필요하기 때문이다.

 

2. 디버깅의 수련이 필요하다. Web Request 관련하여 Library를 2종류 써보았는데, 에러 메시지가 친절하게 뜨진 않는다. 왜 되지 않는지 알기 위해서는 Http protocol 및 모듈의 구성에 대한 지식이 필요하다. 실질적인 업무를 수행할 기회가 된다면 이러한 부분에 있어서 노력을 함이 좋을 것이다.

 

3. 브라우저의 기능을 적극 활용하자.

 

 

웹개발이라는 분야는 흥미롭고 재미있는 분야이다.

파이썬을 쉬운 모듈이라는 장점을 가지고 있지만, 그에 반대되는 단점도 극복해야할 것이다.

'Python' 카테고리의 다른 글

왜 파이썬을 써야 하는가? Python을 추천하는 이유 !  (0) 2019.06.06

근래 사용하는 언어들을 보면 Nodejs가 Python보다 인기 있음을 느낀다.

노드(Nodejs)를 사용하지 않은 입장에서는 약간 기분이 좋지 않다.

 

파이썬이 좋은 이유를 설명하자면 다음의 장점이 있는데...

 

1. 컴파일이 없이 돌아가는 dynamical한 언어이다.

소스코드를 작성하고 원본의 프로그램을 고칠 때면 매번 느끼는 부담감은 컴파일이다.

프로젝트 규모가 작거나 혼자 사용할 때에는 문제가 없지만, 만약에 한 팀이 사용하는 프로젝트를 수정할 때 머리가 아픔을 느낀다. 빌드하랴 버전 마추느랴 거기에 컴파일을 하면, 또 다른 기능이 정상적으로 작동하는지 테스트도 해야하지 않나!!!

 

그래서 dynamical programming이 가능한 파이썬은 에러를 단번에 잡고 컴파일의 수고를 덜어준다.

 

2. 초심자가 쓰기 좋다 ! 좋다 ! 좋다 !

왜냐고?

쉽게 이용하자라는 개념이 있기 때문에 사용법이 매우 쉽다.

파이썬은 모듈의 단위로 기능을 import 하고 코드를 사용하는데 독립적인 기능을 쉽게 추가할 수 있다는 장점이 있다.

 

Post, Get 등 Restful API가 몇 줄안에 해결된다는 점이 그 장점이다.

 

3. 작은 기능을 사용하기에 아주 좋다.

파이썬은 설치 환경을 구축하거나 실행 환경을 만들기 쉽다.

작은 웹서버를 구축하거나 로컬로 작동하는 경량화 프로그램 혹은 서버를 만들 때 용이하다.

 

왜냐하면 모듈화의 장점이 있기 때문에 작은 프로그램을 간단히 만들고 이를 다시 운영환경에 셋팅하는 과정이 빠른 시간에 가능하다는 것 때문이다.

 

'Python' 카테고리의 다른 글

파이썬에서 Restful을 구현하기 위한 노하우  (1) 2019.06.06

Returning File as response to REST Request

8 Feb 2016
Returning File as response to REST Request

Introduction

This article demonstrates how to get a file as response to a REST request. I have posted my workng solution here for reference. This would help general user to write the code to implement this functionality.

Background

I was assigned a project to create a Web API which is used by SharePoint Link-To-Document, to return a file from a network drive which is different from the SharePoint Server machine. The user's requirement was that the file should be returned to user which he/she click on L-To-D  on a SharePoint site. As I struggled to find a working code the purpose, so, I decided to share my sample code for the reference of other developers.

Using the code

Here we see the step by step approach to create a Web API service which return files as response. During this demo project I will be using Visual Studio (VS) 2012 as IDE.

Step 1: In VS IDE, click on Add New Project. Select Web from Templates and then select Visual Studio 2012 under Web. Select ASP.Net MVC 4 Web Application from types of application (as shown below). Give Name of the solution as ReturnFile and click on OK. 

Step 2: Once you click on OK you will be prompted will another pop-up. In the second pop-up select template as Web API and click on OK. VS will take a moment to create a solution for you and your FileService solution will be ready.

Step 3: Right Click on controller folder and select Add -> Controller. Give Name of the controller as FileController, and click OK. FileController.cs will be added to your Controllers folder.

Step 4: Open FileController.cs and and delete the default methods inside class FileController.cs. Now add a method GetFile, which will called from the REST request.

public HttpResponseMessage GetFile(string networkPath, string siteCollection, string library, 
          string folder, string fileName, string fileExtension)
{
     string filePath = string.Format(@"{0}\{1}\{2}\{3}\{4}.{5}", networkPath, siteCollection, library, 
                           folder, fileName, fileExtension);
     string file = string.Format("{0}.{1}", fileName, fileExtension);

     return DownloadFile(filePath, file);
}

The above method acts as a wrapper, formats the strings and calls another method which do processing as returns file stream in Message Response.

Step 5: Create method DownloadFile to search, process and return file in HttpMessageResponse.

private HttpResponseMessage DownloadFile(string downloadFilePath, string fileName)
{
    try
    {
          //Check if the file exists. If the file doesn't exist, throw a file not found exception
          if (!System.IO.File.Exists(downloadFilePath))
          {
                throw new HttpResponseException(HttpStatusCode.NotFound);
          }

          //Copy the source file stream to MemoryStream and close the file stream
          MemoryStream responseStream = new MemoryStream();
          Stream fileStream = System.IO.File.Open(downloadFilePath, FileMode.Open);

          fileStream.CopyTo(responseStream);
          fileStream.Close();
          responseStream.Position = 0;

          HttpResponseMessage response = new HttpResponseMessage();
          response.StatusCode = HttpStatusCode.OK;

          //Write the memory stream to HttpResponseMessage content
          response.Content = new StreamContent(responseStream);
          string contentDisposition = string.Concat("attachment; filename=", fileName);
          response.Content.Headers.ContentDisposition = 
                        ContentDispositionHeaderValue.Parse(contentDisposition);
          return response;
      }
      catch
      {
          throw new HttpResponseException(HttpStatusCode.InternalServerError);
      }
}

Points of Interest

The code above work for the file type like pdf, doc, mov, mp3, PNG, TIF, JPEG, etc. We don't need to write a separate logic based on filetype.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


+ Recent posts