'프로그래밍' 카테고리의 글 목록 :: 드라마 애니메이션 영화

이번에 블로그(https://cloudlog.kr/)를 리뉴얼했습니다.

퇴근 이후에 짬짬이, 그리고 주말에 조금씩 작업하다보니 몇달이 걸렸는데, 리뉴얼 완료하고 보니 보기도 좋고, 글 관리하기도 편하고 여러모로 잘된 리뉴얼이라 생각되네요. 한번씩 방문 부탁드립니다. ^_^

## 기존 블로그

  • Jekyll (Ruby, Liquid)
  • Documentation Theme

## 리뉴얼 블로그

  • Hugo (Go 언어)
  • Lotus Docs Theme

https://cloudlog.kr/

 

Simple Life Cloud Log

Simple Life Cloud Log Blog

cloudlog.kr

 

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

정적 사이트 생성기 (SSG, Static Sige Generator)중에서 Jekyll 다음으로 많이 사용되고 있는 Google의 Go 언어를 기반으로 만들어진 [Hugo]를 Windows 환경에서 설치하는 방법을 정리해보겠습니다. 설치하는 방법은 바이너리를 이용해서 설치하는 방법도 있지만 여기서는 간편하게 패키지 매니저를 사용해서 설치하는 방법을 사용해보겠습니다.

 

https://cloudlog.kr/programming/hugo/hugo-install-guide.html

 

Hugo 설치 하는 방법

Windows 환경에서 Hugo를 설치하는 방법을 정리해봤습니다.

cloudlog.kr

 

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

php에는 랜덤으로 숫자를 생성하는 함수로 rand()와  mt_rand()가 있습니다.


mt_rand는 메르센 트위스터 난수생성기(Mersenne Twister Random Number Generator)를 이용한 함수라고 합니다.


mt_rand사용 법은 2가지입니다.


1. mt_rand();

2. mt_rand(int $min, int $max);


1번은 파라미터 없이 사용하는 경우인데 이때에는 0부터 표현가능한 최대값 사이에서 랜덤한 숫자를 나타내줍니다.

2번은 최소값과 최대값 파라미터 사이에서 랜덤한 값을 보여줍니다.


사용법은 다음과 같습니다.


1
2
3
4
5
6
7
8
<?php
 
    $random_min = 0
    $random_max = 100;
    $random_number = mt_rand($random_min$random_max);
 
?>
 
cs


블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

AWS DevDay in Seoul 도시락 감상 후기


지난 9월 21일에 아마존에서 개발자들을 대상으로 여러가지 기술과 제품 소개를 하는 AWS DevDay in Seoul이 개최되었습니다.

AWS행사에 참여할 때마다 느끼는 것이지만 행사 도중에 지급해주는 도시락은 정말 맛있고 다양한 음식들이 나오기에 만족도가 매우 높습니다.

다른 IT 업체들은 오전만, 또는 오후에만 행사를 진행하거나 중간에 점심을 주는 경우에도 샌드위치 등의 간단한 음식이 나오는 경우가 많은데 아마존은 매번 만족도가 높은 도시락을 제공해주기에 다소 피곤하거나 일정이 바빠도 가능하면 AWS 세미나에 참석하려고 하는 사람들이 많다고 들었습니다.


AWS DevDay in Seoul 도시락 감상 후기



그러면 도시락이 어떻게 구성되어 있는지 확인해보겠습니다.


AWS DevDay in Seoul 도시락 감상 후기



이렇게 6개의 반찬과 밥, 국이 제공됩니다. 언뜻 보기에도 푸짐하고 맛있어 보이는 반찬이네요. 종류도 고기, 해산물, 야채 등 다양하게 구성되어 입맛이 다른 많은 개발자들을 만족시키려고 노력한 것이 보였습니다.

그러면 각각의 반찬이 어떤지 자세히 살펴 보도록 하겠습니다.



AWS DevDay in Seoul 도시락 감상 후기


메인 요리인 전복요리와 장어구이, 그리고 튀김요리가 한데 모여 있습니다. 너무 맛있습니다.



AWS DevDay in Seoul 도시락 감상 후기


생선 요리인 고등어구이와 버섯, 연근이 함께 들어 있는 요리입니다. 평소에 생선을 먹을 기회가 적은 개발자들에게 딱 좋은 음식이네요.




AWS DevDay in Seoul 도시락 감상 후기


반찬으로 나오는 소고기조림과 오징어젓갈, 채소말이 그리고 김치말이가 함께 제공됩니다. 



AWS DevDay in Seoul 도시락 감상 후기


해물샐러드인데 오이, 당근 등의 채소만 있는 것이 아니라 오징어, 새우 등의 해물이 듬뿍 들어 있어 맛있습니다.



AWS DevDay in Seoul 도시락 감상 후기


소고기 가지볶음인데 연하고 달달한 맛이 아주 좋습니다.



AWS DevDay in Seoul 도시락 감상 후기


오징어 볶음입니다. 살짝 매워서 저는 별로 였는데 매콤한 음식을 좋아하시는 분은 마음에 드실 듯합니다.



AWS DevDay in Seoul 도시락 감상 후기


이처럼 4차 산업혁명, AI, IoT, 무인편의점 아마존 고, 드론 택배 등 미래사회를 선도해가는 아마존이 개최하는 AWS 행사는 항상 맛있는 도시락이 함께 하니 기회가 되시면 꼭 참석해보시기 바랍니다.




블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

Auto Backup to AWS S3 (DB Backup etc.)


I used to use IDC only in the past, but recently I used AWS and I kept the DB backup file in AWS S3.


This method is available in both IDC -> AWS S3, AWS EC2 -> AWS S3, and it is not only DB backup but also important server source or file.


The approximate procedure is as follows and DB backup will be used as an example.


0. Server environment

  Windows 2008 R2 Standard

  SQL Server 2008 R2 Standard SP3


  Even if the server or DB environment is different, the method is not much different.



1. Set up the backup on the DB server.

  1-1: Set DB backup to be 1 full backup per day.

  1-2: Set to be one transaction backup per hour.

  1-3: When setting up the above two backups, set the backup file to be stored in a specific folder.


2. Set up a bucket where the DB will be backed up to AWS S3.

  In this case, distinguish the folder where the full backup and transaction backup files will be stored.


3. Install the AWS CLI on the DB server.

  (AWS CLI = AWS Command Line Interface)


  3-1: Download the installation file for your server environment.

      (Http://docs.aws.amazon.com/cli/latest/userguide/installing.html)

  3-2: Set AWS CLI environment. If you type aws configure in the command window, the following input screen appears in succession.


1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]: 
cs


  3-3: Input the value on the environment setting input screen to complete the setting. (Below is an example.)


1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
cs



4. Test copy (synchronization) of DB backup files.

  Enter the following command in the command window.

  Command: aws s3 sync [DB backup file folder] [S3 bucket path]

  example:

1
aws s3 sync E:\DB_BackUp s3://db.backup/DbBackup
cs


  The sync command is a command that synchronizes local files to the S3 side.

  This is convenient because you do not need to specify a file for each, and the cp command is for simple copying.


  Https://aws.amazon.com/cli/




5. Create a batch file to automate backup file copying.

  Create a batch file (bat) file and save the command you used in step 4 above.

  For example, add the command aws s3 sync E: \ DB_BackUp s3: //db.backup/DbBackup to the db_backup.bat file.


6. Add the schedule to the Task Scheduler.

  Set it in Control Panel - Administrative Tools - Task Scheduler so that the bat file created in # 5 above will run at the specified time.


7. In S3, set the deletion interval of the DB backup file.

  If the backup file is kept indefinitely, it will not be expensive, but since S3 cost is added, set the retention period and set it in S3 so that the backup file after a certain period of time is deleted.

  S3 is easy to apply because life cycle setting is not difficult.



@ Etc

If you have a DB server inside the same AWS, it is not too difficult to copy the backup file again, because there is no risk that the backup file will disappear because S3 is not 100% perfect, but it is very stable.


Next, let's take a look at AWS usage fees, AWS, Google Cloud, and MS Azure comparisons.

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

OWASP 에서 제작한 웹애플리케이션에서 가장 심각하다고 생각되는 10가지 보안 취약점에 대한 문서입니다.

 

한글판이니 자세히 읽어보고 자신의 웹사이트에 적용하면 좋으리라 생각됩니다.

 

간단한 요약은 다음과 같습니다.

 

입력값 검증 부재, 웹 요청 정보가 웹 애플리케이션에 의해 처리되기 이전에 적절한 검증이 이루어지고 있지 않다. 공격자는 이 취약점을 이용하여 웹 애플리케이션의 백엔드 컴포넌트를 공격할 수 있다.


취약한 접근 통제,  인증된 사용자가 수행할 수 있는 작업을 적절히 제한하지 않고 있다. 공격자는 이 취약점을 이용하여 다른 사용자의 계정에 접근하거나, 민감한 정보가 담긴 파일을 열람하거나, 허용되지 않은 작업을 수행할 수 있다.


취약한 인증 및 세션 관리,  계정 토큰과 세션 토큰이 적절히 보호되고 있지 않다. 공격자는 암호나 키, 세션 쿠키, 기타 인증 관련 토큰을 공격하여 인증을 우회하고 다른 사용자의 ID를 가장할 수 있다.


크로스 사이트 스크립팅(XSS), 취약점 웹 애플리케이션이 다른 사용자의 브라우저를 공격하는 도구로 사용될 수 있다. 공격이 성공하는 경우 일반 사용자의 세션 토큰이 노출되거나, 사용자의 컴퓨터를 공격하거나, 다른 사용자를 속이기 위해 위조된 컨텐츠를 보여주게 된다.


버퍼 오버플로우, 웹 애플리케이션 컴포넌트가 사용자의 입력값을 적절히 점검하지 않는 언어로 작성되어 다운될 수 있다. 특수한 경우에는 공격자가 해당 프로세스의 권한을 획득할 수 있다. 이 컴포넌트로는 CGI, 라이브러리, 하드웨어 드라이버, 웹 애플리케이션 서버 컴포넌트 등이 포함된다.




삽입 취약점, 웹 애플리케이션이 외부 시스템이나 자체 OS에 접근할 때 입력받은 인자를 그대로 전달한다. 공격자가 해당 인자로 악의적인 명령어를 삽입하는 경우, 해당 외부 시스템은 웹 애플리케이션으로 인해 입력받은 명령어를 실행할 수 있게 된다.


부적절한 에러 처리, 일상적인 운용 과정 중에 발생하는 에러 상황에 대해 적절한 처리가 이루어지지 않는다. 공격자가 웹 애플리케이션이 처리하지 못하는 에러가 발생하도록 유도하여, 해당 시스템에 대한 상세 정보를 획득하거나, 서비스를 방해하거나, 보안 메커니즘이 작동하지 않도록 할 수 있으며, 서버가 다운될 수도 있다.


취약한 정보 저장 방식, 웹 애플리케이션은 정보나 인증 관련 토큰을 보호하기 위해 암호화를 자주 사용한다. 암호화 관련 기능이나 코드는 적절하게 구현하기가 어려움이 이미 증명되었으며, 많은 경우 오히려 보안상 바람직하지 않은 결과를 초래한다.


서비스 방해 공격, 공격자가 다른 정당한 사용자가 사이트에 접속하거나, 애플리케이션을 사용하는 것을 방해하기 위해 웹 애플리케이션의 리소스를 고갈시킬 수 있다. 공격자는 또한 다른 사용자가 본인 소유의 계정을 사용하지 못하도록 계정을 잠글 수 있으며, 심지어 웹 애플리케이션 전체가 멈추도록 할 수 있다.


부적절한 환경 설정, 강화된 서버 환경 설정 표준을 보유하는 것은 안전한 웹 애플리케이션에 있어 결정적으로 중요한 부분이다. 해당 서버는 보안에 영향을 미치는 다양한 환경 설정 옵션이 있으며, 벤더 출하시에는 기본적으로 안전하지 않은 상태로 출시된다.

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

해쉬 알고리즘 MD5


현재는 사용하지 말도록 권유 받고 있는 알고리즘인데 예전에 2005년쯤 어떤 알고리즘을 사용할까 고민할 때 정리했었던 내용입니다.


MD5(Message Digest 5 ) 는 전자서명등의 보안과 관련된 곳에서 자주 사용하는 해쉬 알고리즘입니다.

128 비트 보안 체계이며, 32자리의 결과값을 출력하게 됩니다.

비슷한 것으로 SHA-1 이 있는데, 160 비트 보안을 사용하며 40자리의 결과값을 가지는데 현재 각종 보안관련된 곳에서 많이 사용되고 있습니다.

 

MD5 는 위험성이 발견되어 중요한 곳에서는 잘 사용하지 않고 있습니다.

 

둘다 해쉬 함수 이기 때문에 다음의 특징을 가집니다.

1. 단방향성

2. 충돌 회피성

 

예를 들어 설명하자면 문자 a 를 MD5 로 변환을 한 값 MD5("a") 은 0cc175b9c0f1b6a831c399e269772661 입니다.

 

여기서 0cc175b9c0f1b6a831c399e269772661 와 같은 결과값에서 원래 문자열 a 를 찾아낼 수가 없어야 한다는 것이 단방향성입니다.

 

그리고, 동일한 결과값 0cc175b9c0f1b6a831c399e269772661 을 가지는 특정한 문자열을 찾아내는 것이 불가능해야 한다는 것이 충돌 회피성입니다.

 

y = f(x) 라는 함수가 존재할때 y 값만을 가지고 x 를 찾아낼 수가 없어야 하고 동일한 y 값을 가지는 x 와 x' 를 계산해내는 것이 불가능해야 한다는 것이지요.


실제 업무에서는 아이디, 비밀번호, 각종 쿠키값등에서 MD5 등을 이용하면 악의적인 목적의 사용자가 임의로 값을 변경하거나 유추해내는 것이 사실상 불가능하다고 볼 수 있습니다.

하지만, 엄청난 전문가가 뚫을려고 맘 먹으면 못할리가 없을 것입니다.


그렇지만 그런 전문가가 뚫을려고 한다면 그 사이트는 돈 많이 버는 대박사이트라는 증거일테니 돈 많이 벌어서 좋겠네요.

 

사실 예전부터 MD5 는 위험성이 제기되어서 중요한 로직에서는 제외하고 있었다는데 올해초 중국의 한 전문가가 MD5 를 뚫었고, 국제학술회의에서 발표를 했습니다.

그리고 얼마뒤 SHA-1 까지도 뚫어버렸습니다. -_-  중국 사람들 대단합니다.

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

aspx 소스 감추기


오래 전에 ASP.NET 공부할 때 정리해두었던 내용인데 지금은 많이 변해서 쓸모가 있을지 모르겠습니다.


기존의  ASP.Net 1.x 버전에서는 코드비하인드 소스 즉 aspx.cs 파일에 들어있는 내용은 dll 파일로 컴파일되어서 동작하게 됩니다. 

그러므로 aspx.cs 파일의 소스는 볼 수가 없었습니다.

 

그런데 가끔 aspx 파일의 소스도 감추고 싶다거나 aspx 파일의 html 소스를 수정못하도록 하고 싶다는 경우가 있습니다.

 

ASP.Net 2.0 에서는 그런 기능이 있습니다. 

precompile 기능을 이용해서 aspx 소스도 모두 dll 에 포함시켜버리는 기능입니다.

 

이 경우 사이트에 제일 처음 접속할 경우 최초 컴파일을 하느라 한참동안의 시간이 필요한 것도 필요가 없습니다. 

이미 컴파일 되어 있기 때문에 더 이상 html 소스를 수정하는 것도 불가능합니다.

 

물론!!! 프로젝트를 열어서 원본 소스로 작업을 하는 것은 당연히 가능합니다.

 

방법은 다음과 같습니다.

Build 메뉴에서 Publish 기능을 선태합니다.

 

기능을 선택하고 나면 Allow this precompiled site to be updateable 항목이 보입니다.

이 항목에 체크가 되면 기존의 1.x 방식처럼 aspx 소스가 그대로 남아 있어서 수정이 가능한 상태입니다.

 

하지만 이 항목의 체크를 빼고 Publish 를 하게 되면 aspx  소스가 없어집니다.

직접 확인을 해보시기 바랍니다.

 

Allow this precompiled site to be updateable - 기존 방식입니다. 

 

Deny this precompiled site to be updateable - 2.0 에서 추가된 새로운 방식입니다. 

 

위에서 보시는 것처럼 aspx 파일의 소스가 전혀 없고 간단한 설명 문구가 있습니다만 전혀 관계가 없는 문장입니다.

하지만 해당 aspx 파일이 존재하지 않으면 오류가 발생합니다. 

404 Not Found 일텐데, 즉 aspx 파일의 소스는 dll 에 포함되어 있으므로 aspx 파일만 존재하면 된다는 것입니다.

 

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

AWS S3로 파일 자동 백업하기 (DB 백업 등)


회사에서 예전에 IDC만 이용하고 있다가 AWS도 이용하게 되면서 DB 백업 파일을 AWS S3에 보관하던 것을 정리해보았습니다.


이 방법은 IDC -> AWS S3, AWS EC2 -> AWS S3 모두 이용 가능한 방법이고 DB 백업 만이 아니라 중요한 서버 소스나 파일 등도 활용 가능한 방법입니다.


대략적인 절차는 다음과 같고 DB 백업을 사례로 설명하겠습니다.


0. 서버환경

  Windows 2008 R2 Standard

  SQL Server 2008 R2 Standard SP3


  서버나 DB 환경이 달라도 크게 다르지 않습니다.



1. DB 서버에서 백업을 설정합니다.

  1-1: 1일에 1번 DB 풀백업이 되도록 설정합니다.

  1-2: 1시간에 1번 트랜잭션 백업이 되도록 설정합니다.

  1-3: 위 2가지 백업을 설정할 때 백업 파일이 특정 폴더에 저장되도록 설정합니다.


2. AWS S3에 DB가 백업될 버킷을 설정합니다.

  이때는 풀백업과 트랜잭션 백업 파일이 저장될 폴더를 구분합니다.


3. DB 서버에 AWS CLI를 설치합니다.

  (AWS CLI = AWS Command Line Interface)


  3-1: 서버 환경에 맞는 설치 파일을 다운 받습니다. 

      (http://docs.aws.amazon.com/ko_kr/cli/latest/userguide/installing.html)

  3-2: AWS CLI 환경 설정합니다. 커맨드 창에서 aws configure를 입력하면 다음과 같은 입력화면이 차례로 나타납니다.


1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]: 
cs


  3-3: 환경설정 입력화면에 값을 입력하여 설정을 완료합니다. (아래는 예시입니다.)


1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
cs



4. DB 백업 파일 복사(동기화)를 테스트 합니다.

  커맨드 창에서 다음의 명령을 입력합니다.

  명령: aws s3 sync [DB 백업 파일 폴더] [S3 버킷 경로]

  예시:

1
aws s3 sync E:\DB_BackUp s3://db.backup/DbBackup
cs


  여기서 sync 명령어는 로컬의 파일을 S3쪽으로 동기화 하는 명령어입니다.

  일일이 파일을 지정하지 않아도 되므로 편리하며, 단순 복사용도로는 cp 명령이 있습니다.


  https://aws.amazon.com/ko/cli/




5. 백업 파일 복사를 자동화 하기 위해서 배치 파일로 만듭니다.

  배치파일(bat) 파일을 만들고 위 4번에서 사용했던 명령어를 추가해서 저장합니다.

  예를 들어 db_backup.bat 파일에 aws s3 sync E:\DB_BackUp s3://db.backup/DbBackup 명령어를 추가해서 저장합니다.


6. 작업 스케줄러에 일정을 추가합니다.

  위 5번에서 제작한 bat 파일이 지정된 시간에 실행될 수 있도록   제어판 - 관리도구 - 작업 스케줄러에 설정합니다.


7. S3에서 DB 백업 파일의 삭제 주기를 설정합니다.

  백업 파일을 무한정 보관하게 되면 많이 비싸지는 않겠지만 S3 비용이 추가되기 때문에   보관 기간을 설정해서 일정 기간이 지난 백업 파일은 삭제되도록 S3에서 설정합니다.

  S3는 Life Cycle 설정이 어렵지 않기에 간단하게 적용 가능합니다.



@ 기타

다른 곳에 백업하는 방법도 있겠지만 S3는 100% 완벽하지는 않겠지만 매우 안정적이어서 백업 파일이 사라질 위험도 없고 같은 AWS 내부에 DB 서버가 있는 경우는 백업 파일을 다시 복사하는 것도 어렵지 않아서 매우 편리한 방법입니다.



다음에는 AWS 이용 비용이나 AWS와 Google Cloud, MS Azure 비교 등에 대해서 정리해보도록 하겠습니다.

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,

▶ 윤년 계산이 필요 없다 ???!!!!!

 

보통 달력을 만들거나 해당 달이 몇일까지 있는지 혹은 그해가 윤년이 있는지 등을 알기 위해서  윤년 계산을 하게 됩니다.


즉 윤년은 400 으로 나누어지는 (나머지가 0 인경우) 경우와 4 로 나누어지면서 100 으로 나누어지지 않는 경우입니다.


 이렇게 해서 윤년인 해의 2월은 29일까지 평년인 경우 28일로 정하고, 나머지 달은 1, 3, 5, 7, 8, 10, 12 월은 31일  4, 6, 9, 11 월은 30 일로 설정하게 됩니다.


쉬운 방법이지만, 뭔가 좀 이상하고, 불편하다는 느낌이 듭니다.

PHP 에서는 해당달의 총일자를 구하는 함수도 있습니다. 물론 ASP ??없지요..

    


▣ PHP 에서의 경우


1
2
3
4
5
6
7
8
9
<?php
       //첫요일과 총일자 숫자로 얻기
        $intTimeStamp = mktime(0,0,0,$nowMonth,1,$nowYear);
              // 해당달($nowMonth) 의 1일의 타임스탬프 얻기
        $intFirstDayNum = date(w,$intTimeStamp);           
             // 해당달($nowMonth) 의 요일을 숫자로 얻어오기
        $cntMonthDay = date(t,$intTimeStamp);               
            // 해당달($nowMonth) 의 총일자수
?>
cs


 ASP 에서는 그런 함수가 없어서 윤년 계산법을 이용해야 하는 불편이 있었습니다.

 하지만 달력을 만들면서, 편법?, 꽁수?, Tip 을 찾았습니다.


▣ ASP 에서의 경우


1
2
3
4
5
6
7
<%
''= 그 달의 첫날의 요일과 총일자 숫자로 가져오기
    intFirstDayNum = WeekDay(nowYear & "-" & nowMonth & "-01")   
             '''= 해당월(nowMonth) 1일의 요일을 숫자로 반환
    cntMonthDay = Day(DateSerial(nowYear, nowMonth + 11 - 1))   
             '''= 해당달(nowMonth)의 총일자수
%>
cs





◈ 여기서 핵심은 DateSerial() 함수입니다.

 

함수에 대한 설명은 다음과 같이 되어 있습니다.

        

Returns a Variant of subtype Date for a specified year, month, and day.  DateSerial(year, month, day)

        

특정한 - 즉 지정한 년,월,일에 해당하는 날짜형식에 맞는 값을 반환합니다.


예를 들면..


1
2
3
4
5
<%
    Dim MyDate1, MyDate2
    MyDate1 = DateSerial(197011' Returns January 1, 1970.
    MyDate2 = DateSerial(1990 - 108 - 21 - 1' Returns May 31, 1980.
%>
cs


 즉 MyDate1 은 그냥 1970년 1월 1일을 그대로 반환합니다. 별볼일 없죠?  하지만 MyDate2 는 1990에서 10을 빼서 1980년, 8월에서 2를 빼서 6월  여기서 중요한 1일에서 1을 뺐으니 0이 되어야 합니다.


그러면 숫자계산으로는 1980년 6월 0일이 되겠죠? 하지만 날짜??0일이 없습니다.

여기는 DateSerial 함수는 +, 혹는 - 를 단순히 숫자계산이 아닌  해당 년,월,일에서 몇년, 몇월, 몇일 다음, 또는 이전을 뜻합니다.


즉 1990 - 10 은 1990년 보다 10년 전 년도를 뜻합니다.

그러므로 1 - 1 은 1일의 하루 전날 즉 그 전달의 마지막 날짜를 뜻합니다.

최종적으로 보면 1980년 6월 1일의 하루 전날 = 1980년 5월 31일이 됩니다.


그래서 이번달의 총일자수를 얻으려면 다음달 1일에서 하루 전날을 구해보면 되겠죠?

결국 Day(DateSerial(nowYear, nowMonth + 1, 1 - 1))

이렇게 이번달 nowMonth 에 1을 더한 다음달 에서

1일의 하루 전날 즉 이번달의 마지막 날을 구합니다.


 몇월달인지 윤년인지, 평년인지 상관할 필요없습니다.

 이미 컴퓨터는 윤년인지 아닌지 알고 있으니까요.


 오히려 제 설명 때문에 복잡하고 이상하죠? 그러면 그냥 함수 사용법만 익히시면 됩니다.

블로그 이미지

골드라이트

드라마 애니메이션을 중심으로 영화 생활정보 등도 소개합니다.

,