Arduino 2020. 4. 13. 19:14

void setup(){
pinMode(13, OUTPUT);
}
void loop(){
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

'Arduino' 카테고리의 다른 글

[Arduino] C#으로 시리얼 입력하기  (0) 2020.04.13
posted by 핵커 커뮤니티
:
Python 2020. 4. 13. 19:06

Type "help", "copyright", "credits" or :license" for more information.
>>> import naverlogin
>>> from naverlogin import naversession
>>> from getpass import getpass
>>> id = 'fallazzgng'
>>> pw = getpass ()
Password:
>>> nsession = Naversession()
>>> nsession.login(id,pw)
True
>>> import re
>>> resp = nsession.get('주소)
>>> print re.search(ur'<strong>(.+)</strong> 님', resp.text).group(1)
(닉네임)

'Python' 카테고리의 다른 글

[Python] 파이썬 다운받기  (0) 2020.04.11
posted by 핵커 커뮤니티
:
Perl 2020. 4. 13. 19:00

Perl에서 시간을 Unix time (Epoch Time)으로 전환하는 방법입니다.
Epoch Time은 1970-01-01 00:00:00 UTC 시간 이후로 지나간 second(초)를 계산한 것을 말합니다.
Perl에서는 이 시간으로 전환하고 다시 일반 date로 전환하는 방법이 간혹 필요합니다.
또한 RRD 데이터베이스에서는 이 Epoch Time으로 저장이 되므로, 반드시 필요합니다.
Linux나 AIX에서는커맨드라인에서 date 명령어 수행시 %s 옵션을 이용하여
Epoch Time을 구할 수 있습니다.(HP-UX에서는 없음)
 
 
How to convert epoch / UNIX timestamps to normal readable date/time using Perl.
 

Getting current epoch time in Perl


Time returns an integer with the current epoch:

time

Converting from epoch to normal date in Perl

Using the internal localtime or gmtime functions, localtime and gmtime return an array:

my $time = time; # or any other epoch timestamp

my @months = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5];

# You can use 'gmtime' for GMT/UTC dates instead of 'localtime'

print "Unix time ".$time." converts to ".$months[$month]." ".$day.", ".($year+1900);

print " ".$hour.":".$min.":".$sec."\n";



But you can also use the scalar function to display your date with far less code:
print scalar localtime(946684800);returns Sat Jan 1 01:00:00 2000 (in my timezone).


For more advanced date manipulation, try using the DateTime module:

use DateTime;

$dt = DateTime->from_epoch( epoch => $epoch );

$year = $dt->year;

$month = $dt->month; # 1-12 - you can also use '$dt->mon'

$day = $dt->day; # 1-31 - also 'day_of_month', 'mday'

$dow = $dt->day_of_week; # 1-7 (Monday is 1) - also 'dow', 'wday'

$hour = $dt->hour; # 0-23

$minute = $dt->minute; # 0-59 - also 'min'

$second = $dt->second; # 0-61 (leap seconds!) - also 'sec'

$doy = $dt->day_of_year; # 1-366 (leap years) - also 'doy'

$doq = $dt->day_of_quarter; # 1.. - also 'doq'

$qtr = $dt->quarter; # 1-4

$ymd = $dt->ymd; # 1974-11-30

$ymd = $dt->ymd('/'); # 1974/11/30 - also 'date'

$hms = $dt->hms; # 13:30:00

$hms = $dt->hms('|'); # 13|30|00 - also 'time'

Converting from normal date to epoch in Perl

Using the Time::Local module:

use Time::Local;

my $time = timelocal($sec,$min,$hours,$day,$month,$year);

# replace 'timelocal' with 'timegm' if your input date is GMT/UTC



Using the DateTime module:

use DateTime;

$dt = DateTime->new( year => 1974, month => 11, day => 30, hour => 13, minute => 30,

second => 0, nanosecond => 500000000, time_zone => 'Asia/Taipei' );

$epoch_time = $dt->epoch;

Find more detailed information on CPAN: Time::Local,DateTime. You can also use Date::Manip if you need more advanced date manipulation routines.
Using the Date::Parse module (thanks to ericblue76):

use Date::Parse;

print str2time("02/25/2011 11:50AM");

The Perl Cookbook, Second Editiongives detailed information on manipulating dates and times in chapter 3 (pages 90-110).
 
 
 
**************************************************************************************************************
 
Epoch Time을 구하는 방법에는 여러가지 방법이 존재하는데, 아래는 그 예제들입니다.
 
 
Note that the month starts out as 0 for some inscrutable reason, so you'll have use
timelocal($sec,$min,$hours,$day,$month-1,$year); to get this to work.

'Perl' 카테고리의 다른 글

[Perl] 펄이란 무엇일까? 기초알아보자!  (0) 2020.04.13
posted by 핵커 커뮤니티
:
Perl 2020. 4. 13. 18:59

Perl의 세계에 온 것을 환영합니다.
Perl은 스크립팅 언어의 Swiss Army chainsaw(스위스 군용 전기 톱)이라고 합니다: 강력하고 이식성이 뛰어나기 때문입니다. Perl은 1980년대 후반 NASA에서 시스템 관리자로 일하던 언어학자인 Larry Wall에 의해, 보고서 처리를 보다 쉽게 하기 위해, 처음 개발되었습니다. 그 이후로 Perl은 아주 많은 역할을 하게 되었습니다: 다른 컴퓨터 시스템들 사이를 연결하여 시스템 관리를 자동화할 뿐만 아니라, 물론 웹 상에서 CGI 프로그래밍에 대해 가장 인기있는 언어의 하나가 되었습니다.

왜 Perl이 Web과 함께하며 그렇게 인기있게 되었을까요? 거기엔 2가지 이유가 있습니다: 첫째로 웹 상에서 수행되는 대부분의 것들은 text 형태로 일어나고, text 처리를 위해 고안된 언어에서 가장 잘 수행되기 때문입니다. 보다 중요하게, Perl은 사람들이 이용할 어떤 것이 필요할 때 다른 선택사항들보다 눈에 띄게 좋았습니다. C는 복잡하고 보안 문제를 일으킬 수 있었고 (특히 신뢰되지 않는 데이터일 경우), Tcl은 불편할 수 있고 Python은 정말 기반이 없었습니다.
또한 Perl은 사용하기 쉬운 친절한 언어이기 때문에 당신을 고통스럽게 하지는 않습니다. 당신의 개인적인 프로그래밍 스타일과 잘 어울릴 것입니다. Perl의 슬로건은 "그것을 하는데 하나 이상의 방법이 있다," 이며, 크고 작은 문제 모두 똑같이 유용할 것입니다.

연재의 첫번 째 부분에서, Perl에 대한 몇 가지 기본 사항을 배우고, 작은 샘플 프로그램을 볼 수 있습니다.
- Operating System에 대해
이 연재에서, Unix 시스템을 사용하고 Perl interpreter가 /usr/local/bin/perl에 위치하고 있다고 가정하겠습니다.
Windows를 구동해도 괜찮습니다: 대부분의 Perl 코드는 플랫폼과 무관합니다.

- 첫번째 Perl Program

아래 텍스트 내용으로 first.pl을 만드십시오:
#!/usr/local/bin/perl
print "Hi there!\n";

(전통적으로, 첫 프로그램은 Hello world! 라고 말하는게 일반적입니다^^)

이제, Perl 인터프리터로 실행하세요. 커맨드 라인에서, 파일이 있는 디렉토리로 가서 perl first.pl을 실행하면 아래와 같이 보게 될 것입니다.
Hi there!

\n은 newline 문자를 나타냅니다: 그것이 없다면, Perl은 스스로 텍스트의 new line으로 넘어갈 수 없습니다.

- 함수와 문장 (Functions and Statements)
Perl은 많은 함수 라이브러리를 갖고 있습니다. 그들은 인터프리터가 수행하는 명령들, Perl의 동사들입니다. perlfunc man 페이지에서 모든 내장 함수들의 목록을 확인할 수 있습니다. 거의 모든 함수들은 일련의 파라미터를 받을 수 있고, 그것들은 컴마에 의해 구분이 됩니다.
print 함수는 Perl의 가장 자주 사용되는 부분 중의 하나입니다. 스크린에 표시하거나 또는 파일에 정보를 보내기 위해 사용합니다. print 함수는 출력하기 위한 일련의 것들을 그것의 파라미터로서 가집니다.
print "This is a single statement.";
print "Look, ", "a ", "list!";

Perl 프로그램은 세미콜론으로 끝나는 문장들로 이루어져 있습니다. 문장들은 분리된 라인들일 필요는 없습니다; 하나의 줄에 다수의 문장들이 있거나 하나의 문장이 다수의 라인들에 분리되어 있을 수도 있습니다.

print "This is "; print "two statements.\n"; print "But this ",
"is only one statement.\n";
- 숫자, 문자열, 쌍따옴표 (Numbers, Strings and Quotes)
Perl에는 2개의 기본적인 데이터 형태가 있습니다: 숫자와 문자열
숫자는 쉽습니다; 우리는 그것들을 모두 다뤄왔습니다. 알아야 하는 것은 Perl에서 숫자 속에 컴마(,)나 스페이스를 넣으면 안된다는 것입니다. 10,000 또는 10 000이 아닌 10000이라고 항상 쓰세요.
문자열들은 보다 조금 복잡합니다. 문자열은 작은 따옴표 또는 큰 따옴표에 있는 문자들의 집합입니다:
'This is a test.'
"Hi there!\n"

작은 따옴표와 큰 따옴표의 차이는 큰 따옴표는 그 내용이 해석되어야(interpreted) 하는 것을 의미하는 반면, 작은 따옴표는 그 내용이 문자 그대로 받아들여져야 하는 것을 의미합니다.
예를 들면, 문자 시퀀스 \n은 큰 따옴표를 가진 문자열에서 나타나면 newline 문자이지만,
작은 따옴표에서 나타나면 문자 그대로 2개의 문자, 백슬래쉬와 n입니다.
print "This string\nshows up on two lines.";
print 'This string \n shows up on only one.';
(2개의 유용한 백슬래쉬 시퀀스는 탭 문자를 입력하는 \t 와, 큰 따옴표 안에 백슬래쉬를 입력하기 위한 \\입니다.)

- 변수(Variables)
함수들이 Perl의 동사라면, 변수들은 명사입니다. Perl은 3개 형식의 변수를 가지고 있습니다: 스칼라, 배열, 해쉬. 그것들을 "물건" "목록", "사전"이라고 생각하세요. Perl에서 모든 변수 이름들은 문자 또는 밑줄(_), 그리고 하나 이상의 영숫자 문자이거나 또는 밑줄들로 된 구두점 문자이다.
스칼라는 하나의 것들입니다. 숫자 또는 문자열일 수 있습니다. $abacus처럼 스칼라의 이름은 $ 표시로 시작합니다. 다음과 같이 = 기호를 사용하여 스칼라에 값을 할당할 수 있습니다:
$i = 5;
$pie_flavor = 'apple';
$constitution1776 = "We the People, etc.";

스칼라가 숫자인지 문자열인지 지정할 필요가 없습니다. Perl이 문자열로 처리해야 할 필요가 있을 때 그렇게 하고; 숫자로 처리해야 할 필요가 있을 때 그렇게 하기 때문에 문제가 되지 않습니다. 변환은 자동으로 일어납니다. (이것은 문자열들과 숫자들이 구별되는 데이터 형식인 다른 많은 언어들과는 다릅니다.)
큰 따옴표 문자열을 사용하는 경우, Perl은 문자열에 당신이 이름지은 스칼라 변수들의 값을 삽입할 것입니다. 이것은 문자열을 직접 채우는데 자주 사용한다:

$apple_count = 5;
$count_report = "There are $apple_count apples.";
print "The report is: $count_report\n";

이 코드의 마지막 출력은 The report is: There are 5 apples 입니다.
Perl의 숫자는 일반적인 수학적 연산으로 조작할 수 있습니다: 덧셈, 곱셈, 나눗셈과 뺄셈. (곱하기와 나누기는 Perl에서 *와 / 로 표시됩니다.)

$a = 5;
$b = $a + 10; # $b is now equal to 15.
$c = $b * 10; # $c is now equal to 150.
$a = $a - 1; # $a is now 4, and algebra teachers are cringing.

또한 ++, --, +=, -=, /=, *= 같은 특수 연산자를 사용할 수 있습니다. 이것들은 방정식의 2가지 요소를 필요로 하지 않고 스칼라의 값을 조작할 수 있습니다. 어떤 이들은 그것들을 좋아하고, 어떤 이들은 좋아하지 않습니다. 저는 그것들이 코드를 보다 명확하게 만들 수 있다는 사실을 좋아합니다.

$a = 5;
$a++; # $a is now 6; we added 1 to it.
$a += 10; # Now it's 16; we added 10.
$a /= 2; # And divided it by 2, so it's 8.

Perl의 문자열은 많은 유연성을 가지고 있지는 않습니다. 문자열에서 사용할 수 있는 유일한 기본 연산자는, "함께 합치다"고 말하는, 연결입니다. 연결 연산자는 마침표입니다. 연결과 더하기는 별개의 것입니다.

$a = "8"; # Note the quotes. $a is a string.
$b = $a + "1"; # "1" is a string too.
$c = $a . "1"; # But $b and $c have different values!

Perl은 필요할 때 숫자를 문자열로 변환한다는 것을 기억하세요, $b의 값을 얻기 위해서 Perl 인터프리터는 2개의 문자열 "8"과 "1"을 숫자로 변환하고, 그것들을 더합니다.
$b의 값은 숫자 9입니다. 하지만, $c는 연결을 사용했기 때문에, 그것의 값은 문자열 "81"입니다.
+ 표시는 숫자를 더하고 마침표(.)는 문자열들을 함께 합진다는 것을 꼭 기억하세요.
배열은 스칼라의 나열입니다. 배열 이름은 @로 시작합니다. 컴마(,)로 구분지어, 괄호() 안에 내용들을 나열함으로서 배열을 정의할 수 있습니다:

@lotto_numbers = (1, 2, 3, 4, 5, 6); # Hey, it could happen.
@months = ("July", "August", "September");

배열의 내용들은 0부터 시작하여 인덱싱됩니다. 배열의 요소들을 검색하려면, @ 표시를 $ 표시로 바꾸어야 합니다, 그리고 원하는 요소의 인덱스 위치를 가지고 따르면 됩니다. (스칼라 값을 얻는 것이기 때문에 $표시로 시작합니다.). 또한 다른 스칼라처럼, 위치에 있는 값을 수정할 수도 있습니다.

@months = ("July", "August", "September");
print $months[0]; # This prints "July".
$months[2] = "Smarch"; # We just renamed September!

그런데, 만일 배열이 존재하지 않을 경우, 그것의 요소중 하나에 값을 할당하려고 할 때 그 배열이 생성될 것입니다.

$winter_months[0] = "December"; # This implicitly creates @winter_months.

배열들은 같은 순서로 그것의 내용을 반환합니다; @months를 처음부터 끝까지 조사하면, 몇 번을 하더라도, July, August, September 순서대로 돌려받을 것입니다. 배열의 길이를 찾아내고 싶다면 $#array_name 값을 이용하세요. 이 값은 배열의 요소의 숫자보다 하나 작은 값입니다. 만일 그저 배열이 존재하지 않거나 비어있다면, $#array_name은 -1 입니다. 만일 배열의 크기를 조정하고 싶다면 그저 $#array_name의 값을 조정하면 됩니다.

@months = ("July", "August", "September");
print $#months; # This prints 2.
$a1 = $#autumn_months; # We don't have an @autumn_months, so this is -1.
$#months = 0; # Now @months only contains "July".

해시는 몇몇 프로그래밍 언어에서는 "사전"이라고 불립니다, 그리고 그들은 용어와 정의, 또는 보다 정확한 말로 키와 값입니다. 해시에서 각 키는 하나의 유일한 매치되는 값을 갖고 있습니다. %parents처럼 해시의 이름은 %표시로 시작합니다. 다음과 같이 컴마로 구분된 키와 값의 쌍에 의해 해시를 정의할 수 있습니다:

%days_in_summer = ( "July" => 31, "August" => 31, "September" => 30 );


'Perl' 카테고리의 다른 글

[Perl] Epoch Time 구해기 (Uxix Time)  (0) 2020.04.13
posted by 핵커 커뮤니티
:
Objective_C 2020. 4. 13. 18:57

1.메시지 문법
C++ : Reveiver.MessageWithOptionAandOptionB(23,23,23);
Objective-C : [Reveiver Message:23 withOptionA:23 WithOptionB:23]; //이름을 중간에 띄어서 처처리한다 생각하면될 듯
2. nil값을 가지는 클래스 인스턴스의 메소드 호출하지
Rectangle *anObject = nil;
[anObject description];
nil는 다른 언어의 'NULL' 과 동일한 개념
위 예제는 nil 값을 가지는 anObject 인스턴스의 description 메소드를 호출한다. 다른 언어에서는 당연히 런타임 에러가 발생하지만 Objective-C는 에러로 처리하지 않고 정상적 동작으로 인식하고 처리한다. 이값은 경우 메소드 호출 결과로 nil을 돌려준다
3. Objective-C의 데이터 타입
3-1. id 타입
id anObject;
id 는 Objective-C의 기본 데이터 타입이다. 이건 모든 종류의 객체들을 다룰수 있다.
참고로 일반적으로 id의 형태로 사용되고 id* 와 같은 형태로는 잘 사용되지 않는다.
3-2. BOOL 데이터타입
BOOL flag = YES;
if(flag ==YES){
flag = NO;
}
3-3. 함수 포인터 데이터 타입
Objective-C 는 C의 함수 포인터와 유사한 개념으로 'SEL' 이라는 데이터 타입을 지원한다. 이것은 @selector 지시어와 임의의 메소드 이름을 사용하여 값을 설정한다.
이때 메소드 이름에 콜론도 포함되는 것을 일지 말아야한다.
//함수 선언
-(void)setWidth:(NSInteger)myWidth height:(NSInteger)myHeight;
-(void)setCallback:(SEL)callback;
//함수 호출
SEL anObject = @selector(seWidth:height:);
 
[self setCallback:anObject];
[self setCallback:@selector(setWidth:height:)];
 
3-4 Objective-C의 클래스
3-4-1 클래스의 상속
-단일 클래스로부터의 상속 기능만 지원,
3-4-2 NSObject 클래스
-부모 클래스가 없는 루트 클래스인 NSObject는 Objective-C의 객체들을 위한 기본 프레임워크로, 객체 사이의 상호 작용을 정의한다.
그래서 이를 상속하는 클래스가 객체로 동작하게 하고, 런타임 시스템과 상호동작할수 있도록 해준다.
다른 클래스와 특별한 연관관계가 없는 클래스도 그것을 생성할 때는 반드시 NSObject를 상속해야한다.
클래스의 인스턴스들이 실행될 때 최소한 Objective-C의 객체로서 동작할 수 있어야 하기 때문에 클래스를 새로 설계할 떄 NSObject를 기본적으로 상속해야 함을 절대로 잊지말자. 만일 아무런 클래스도 상속하지 않는 독자적인 클래스를 만들게 되면 이 클래스는 Objective-C의 객체가 가져야 하는 기본적인 성질들을 가질 수 없게 된다.
 
3-4-3. 인스턴스 변수의 상속
한 클래스로부터 인스턴스를 만들면 , 그 인스턴스에는 해당 클래스에 정의되어 있는 인스턴스 변수는 물론 그 부모 클래스의 인스턴스 변수 그리고 또 부모의 부모 클래스의 인스턴스 변수까지, 최종적으로 루트 클래스의 인스턴스 변수까지 모두 포함된다.
3-4-4. 메소드의 상속
부모 클래스를 상속하는 자식 클래스는 부모 클래스뿐 아니라 최종적으로 루트 클래스에 이르기까지 상위에 있는 모든 클래스의 메소드들을 상속받아 사용할 수 있다. 즉 파운데이션 프레임워크 내의 한 클래스를 상속하면 해당 클래스 및 그 상위 클래스들이 가지고 있는 메소드들을 모두 사용할 수 있으며, 추가로 필요한 메소드만 선언하면된다.
3-4-5. 메소드 오버라이딩
메소드 오버라이딩(Overriding)이란 자식 클래스에서 부모 클래스의 메소드를 재정의해서 사용하는 것이다. (다른언어와 동일) 이를 통해 메소드의 동작을 완전히 재정의하거나 새로운 기능을 추가할수 있다.
아래의 코드는 자식 클래스에서 부모 클래스의 메소드(draw)를 오버라이딩하는 전형적인 예를 보여준다. 우선 부모 클래스의 메소드를 호출하여 원래 이메소드에 구현되어 있던 동작을 수행하고 이어서 새로운 기능을 수행하는 방식이다. 부모 클래스의 메소드를 호출할 때 super 지시어를 사용해야 한다는 점을 유의하자,.

-(void)draw{ //1.부모 클래스의 해당 메소드를 호출한다.
[super draw]; //2.새로운 기능을 추가한다.
}

단, Objective-C에서는 메소드 오버로딩(Overloading)은 지원하지 않음을 기억해두자
(오버로딩은 메소드의 이름은 같지만 입출력 값의 타입은 다르게 선언하는 것을 말한다.
3-4-6. 클래스의 생성
id myRectangle = [[Rectangle alloc] init];
 
alloc 메소드는 Rectangle 클래스의 인스턴스 변수들에 메모리를 할당하고 이를 리턴하게 된다.
그런데 이때 인스턴수들의 변수들을 모두 0의 값을 가지게 되므로 init 메소드를 호출하여 초기화를 수행해야함
실제로 모든 클래스는 메모리를 할당하고 초기화 하는 메소드를 적어도 하나 이상 가지고 있다. 파운데이션 프레임워크의 클래스들을 살펴보면 주로 사용하는 초기화 메소드의 이름 및 인자의 개수 등은 조금씩 다르지만 일반적으로 init으로 시작하는 이름의 초기화 메소드가 있음을 알수 있다.
3-4-7 클래스 타입
Rectangle *myRectangle = [[Rectangle alloc] init];
id idRectangle = myRectangle; // id 타입 변수에 저장가능
 
id는 Objective-C의 기본 데이터 타입이며, 어떠한 클래스도 이와 같은 방식으로 사용할 수 있다. 실제 프로그래밍에서 여러 클래스의 인스턴스를 사용하는 경우 이처럼 id 타입의 변수를 이용하는 것이 유용한 경우가 많다.
만약 Rectangle 의 부모가 Shape 라면 아래처럼도 가능한다.
 
Shape *myGraphic = myRectangle;
 
3-4-8. 타입 검사
-isKindOfclass & isMemberOfClass 는 NSObject 클래스를 상속하는 모든 클래스에서 이용할수 있다.
//딱 그 특정클래스의 인스턴스인지 알아내는 기능
if([anObject isMemberOfClass:[Shape class]]{ …}
//특정클래스 또는 그 하위에 속한 클래스인지 알아내는 기능
if([anObject isKindOfclass:[Shape class]]){…}
 
3-4-9. 동일성 검사
//두 인스턴스가 실제로 같은 메모리 주소를 가리키는 동일 인스턴스인지를 검사 같은 경우 참
if(anobject1 ==anObject2){ ..}
//메모리주소가 아닌 실제 두 객체가 가지고 있는 인스턴스 내의 값들이 같은지 검사하고 같은 경우 참
if([anObject1 isEaual:anObject2]){..}
 
3-4-10.메소드 검사
respondsToSelector : 메소드는 (NSObject에서 사용 가능) 인자로 받는 메소드가 자신을 호출하고 있는 객체내에서 정의되어 있는지 여부를 검사하는 역할을 수행

id anObject =nil;

if([anObject respondsToSelector:@selector(draw)])
{..}

anObject 인스턴스 안에 draw 메소드를 가지고 있는지 파악
4.클래스 선언 및 정의하기
4-1.헤더 파일과 소스파일 분리
.h 파일: 헤더파일
.m 파일: 소스파일
.mm 파일: C++소스를 포함하거나 참조하고 있는 파일
 
4-2.헤더 파일

#import<Foundation/Foundation.h>
#import "Shape.h"    //(1)
 
@class Circle;        //(2)
@interface Rectangle : Shape {    //(3)
    NSString *name;        //(4)
    NSInteger width;
    NSInteger height;
}
 
-(NSString *)description;    //(5)
-(void)setName:(NSString*)myName;
-(void)setWidth:(NSInteger)myWidth height:(NSInteger)myHeight;
-(void)draw;

'Objective_C' 카테고리의 다른 글

[Objective-C] 기초배우기 (4)  (0) 2020.04.14
[Objective-C] 기초배우기 (3)  (0) 2020.04.14
[Objective-C] 기초배우기 (2)  (0) 2020.04.14
posted by 핵커 커뮤니티
:
JSP 2020. 4. 13. 18:53

어떤 데이터를 서버가 아닌 클라이언트에 서버의 명령에 의해서 저장된 것을 쿠키(Cookie)라고 한다.
데이터를 클라이언트의 로컬에 저장하여 보안상 문제가 있기 때문에, 요즘에는 잘 사용하지 않는 기술이다.

데이터가 별로 중요하지 않고, 서버의 자원을 절약해야 할 경우에 사용할 수 있는 기법이다.

[Make Cookie]

<%
Cookie cookie= new Cookie("CookieName", "CookieValue");

// set valid time of cookie
// parameter is second.
cookie.setMaxAge(60*60);

// add cookie to response object
response.addCookie(cookie);
%>

쿠키 객체를 만들고, 쿠키의 유효 기간을 설정한다.

쿠키의 속성이 모두 정의되면 response객체에 쿠키를 추가한다.

[Get Cookies]

<%
Cookie[] cookies= request.getCookies();
  if(cookies!= null){
for(int i=0; i<cookies.length; i++){
out.println("cookies["+i+"] Name= "+ cookies[i].getName()+ "<br/>");
out.println("cookies["+i+"] Value= "+ cookies[i].getValue()+"<br/>");
out.println("================================"+"<br/>");
}
   }
%>

Cookie 객체를 가져올 때는 만들 때와는 반대로 request객체에서 받아온다.

Cookie는 여러 개일 수도 있으므로, Array type으로 받는다.

모든 쿠키를 탐색하기 위해 for문을 이용해 모든 Cookie 객체를 탐색한다.

getName()은 쿠키의 이름을, getValue()는 쿠키의 값을 반환한다.


[Delete Cookie]

<%
Cookie[] cookies= request.getCookies();
for(int i=0; i<cookies.length; i++){
String cookieName=cookies[i].getName();
if(cookieName.equals("CookieName")){
out.println("cookies["+i+"] Name= "+ cookies[i].getName()+ "<br/>");
out.println("cookies["+i+"] Value= "+ cookies[i].getValue()+"<br/>");

out.println("This Cookies will be deleted"+ "<br/>");

// This process that set valid period of cookie and save cookie means targetCookie is deleted.
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);

out.println("================================"+"<br/>");
}
}
%>

쿠키를 직접 삭제하는 어떤 특정 메소드가 존재하지 않는다.

그래서 특정 쿠키의 유효시간을 0으로 만들어 유효하지 않은 쿠키로 만들어 간접적으로 삭제하는 방법을 이용한다.

cookes[i].setMaxAge메소드의 인자값을 0으로 만들고 
유효시간이 만료된 쿠키를 response.addCookie()로 다시 추가해줌으로써 쿠키를 삭제하는 효과를 얻는다.

'JSP' 카테고리의 다른 글

[JSP] 기초 간단하게 정리  (0) 2020.04.13
posted by 핵커 커뮤니티
:
JSP 2020. 4. 13. 18:49

web page에서 java code를 사용하려면 기본적으로 .html이 아닌 .jsp파일을 이용한다.

[Java Code 사용을 Declare]

<% JavaCode.... %> 형식을 따른다.

예를 들어 <% int i=0; System.out,.println(i); %> 와 같은 형식으로 한다.
jsp파일에는 자바 코드가 드러나지만, 실제로 실행시키면 사용자에겐 html문서 형식으로 보여지며
JavaCode는 해당 요소로 변환되어 JavaCode는 보이지 않게 된다.

[Variable Print]

단순히 변수의 출력만을 원할 경우에는 <%= Variable %> 와 같은 형식으로 한다.
<% out,println(Variable); %>처럼 쓸 수도 있지만 코드가 길어질 염려가 있다.

[Import Other Class or Package]

<%@page import="Package or Class" %> 처럼 한다.
일반적인 자바의 import [package or class]; 문법과 같다.
효력은 이 태그가 사용된 페이지에 한해 import된다.

예를 들어 <%@page import="java.util.Arrays"%> 했다면


<%
int[] arr= {10,20,30};
out.println(Arrays.toString(arr));
%>

처럼 Arrays Class를 사용할 수 있다.

[Page in Page]

include Attribute를 이용하여 페이지에서 다른 페이지를 포함시킬 수도 있다.
홈페이지의 카테고리와 같이, 여러 페이지에서 공통되게 사용하는 부분들은 따로 만들어서 include하는 방식을 취한다.

<%@ include file="IncludedJSP.jsp" %>

[주석(Comment)]

<%-- --> 또는 자바에서와 같이 //나 /* */ 를 사용한다.

[페이지 속성 정의]
<%@ page language="java" contentType="text/html; charset="EUC-KR"
    pageEncoding="EUC-KR"%>

JSP파일을 만들면 이 태그는 자동으로 생성된다.

어떤 언어를 사용하고, 언어 인코딩 방식은 어떤 것으로 할지 정의하는 부분이다.

EUC-KR을 사용하지 않으면, 영어는 관계없지만 한국어는 문자가 깨져서 출력되게 되므로 반드시 설정한다.

'JSP' 카테고리의 다른 글

[JSP] 쿠키(Cookle) 클라이언트 서버 명령 소스  (0) 2020.04.13
posted by 핵커 커뮤니티
:
C언어 2020. 4. 13. 18:38

기본적인 C언어란 프로그래밍 언어이다.

컴퓨터와의 대화에 사용하기 위해 일종의 의사소통이다.

ex) 한국인 영어> 통역사(컴퓨터 본체) > 일본인
ex) > 한국말 영어> 통역사 > 일본말 > 일본인
이런식으로 가능한 조건이 C언어이다.
하지만 컴퓨터에서는 의사소통이 불가능이므로  C언어로 의사소통 할수있다.
ex) 한국어 C언어 > 컴파일러(C언어 기계어) > 컴퓨터
*컴파일러이란? > 프로그래밍 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역하는역할을합니다. (Compile)
*기계어란? 컴퓨터가 이해할 수 있도록 0과1로 구성된 언어체계입니다.

posted by 핵커 커뮤니티
: