base64 - 0 : 이론 -

연습 2015. 10. 3. 23:15

 base64란, 컴퓨터가 표현하고 있는 문자 방식(1byte로 표현할 수 있는 최댓값)은 256가지이다.


 하지만, 이런 경우를 생각해보자.


 문서(문자열로만 구성된 파일)을 보내는데, 대상이 문서로 표현할 수 없는 데이터로 이루어 져있다면, 어떻게 보낼 것인가?


 여기서 모든 플랫폼에 서로 대응하는 형태를 가져야될 것이다.


 이것을 64가지(숫자, 알파벳 대/소문자, 기타 기호 몇개)로 표현하는 방식이다.


 이 방식의 문제점은 용량의 증가가 존재한다는 문제가 있다.(약 33%가량이 증가한다고 한다.)


 이 방식은 메일 및 기타 방식에 사용되며, 암호와는 전혀 관계가 없다.


 그냥 인코딩하는 것이다. 암호는 알고리즘과 키가 밝혀졌을때, 최대한 그 암호 문서를 늦게 풀어내는 것이 목적이다.(공개키) 하지만, Base64는 남에게 숨길려고 드는 목적을 가지고 있지 않다.


 심지어, Base64는 키라는 존재도, 특정한 존재에게만 열리도록 목적을 가지고 있지 않다.


 1. Base64는 암호용 알고리즘이 아니다.


 그렇다고 Base64가 암축용으로 만들어진 것도 아니다. 오히려 용량이 늘었으면 늘었지(256가지로 표현된 데이터를 64가지로 표현하기 때문에 늘어날 수 밖에 없다.) 줄어들 경우는 없다.


 2. Base64는 압축용 알고리즘이 아니다.


 그렇다면, 왜 Base64가 존재하는가?


 그것은 쉽게 이렇게 들수 있다.


 파일은 올릴 수 없고, 게시판에 이미지 파일을 올려야 될 경우에.

 Base64을 이용하면, 쉽게 사용이 가능하다.


 Base64와 HTML5을 이용한 비디오 출력


 다음과 같은 효과를 얻을 수 있으며, 음악, 사진, 동영상, 파일등 모두다 가능하다.


 그 외에도 메일(MIME)에도 사용이 가능하다.

'연습' 카테고리의 다른 글

- 잡소리 - 단일 처리와 병렬 처리  (0) 2015.10.05
base64 -1 : base64 응용 -  (0) 2015.10.04
OpenCL 프로그래밍 공부 -시작-  (0) 2015.10.02
CSS3 -3D Flip Animation-  (0) 2015.09.30
ffprobe 사용법 -영상 정보 보기-  (0) 2015.09.30
Posted by JunkMam
,
Your browser does not support the HTML5 canvas tag.

 공식
 h=(물체의 높이)
 M=(물체의 폭)
 y=(물체와 시점간의 거리)
 H=(물체와 시점간의 거리에 보이는 높이)

 x축의 거리는 
 x=(y*M*cos(q))/(y+M*sin(q))

 높이는 h을 계산하는건,
 h=H(√x^2+y^2)/(√y^2+2yMsin(q)+M^2)


-SRC-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<div id="content" style="width:630px; overflow:hidden;color:#333333;">
                                <canvas id="myCanvas" width="200" height="200" style="border:1px solid #d3d3d3;">
            Your browser does not support the HTML5 canvas tag.</canvas>
 
        <script>
        
            var x,y;
            
            function draws(){
                ctx.beginPath();
 
                ctx.clearRect(0,0,c.width, c.height);
 
                calcX=((line*(heights/2)*cos)/(line+(heights/2)*sin));
 
                calcY=heights/2;
                calcY=calcY*Math.sqrt(calcX*calcX+line*line);
                calcY=calcY/Math.sqrt(Math.pow(line,2)+(((2*line)*(rec/2))*sin)+Math.pow(rec/2,2));
 
                ctx.moveTo((c.width/2)-calcX,(c.height/2)-calcY);
 
                Thetas=(-Thetas);
 
                sin=Math.sin(Thetas),cos=Math.cos(Thetas);
 
                calcX=((line*(heights/2)*cos)/(line+(heights/2)*sin));
 
                calcY=heights/2;
                calcY=calcY*Math.sqrt(calcX*calcX+line*line);
                calcY=calcY/Math.sqrt(Math.pow(line,2)+(((2*line)*(rec/2))*sin)+Math.pow(rec/2,2));
 
                ctx.lineTo((c.width/2)+calcX,(c.height/2)-calcY);
                ctx.lineTo((c.width/2)+calcX,(c.height/2));
                ctx.lineTo((c.width/2)+calcX,(c.height/2)+calcY);
 
                Thetas=(-Thetas);
                sin=Math.sin(Thetas),cos=Math.cos(Thetas);
 
                calcX=((line*(heights/2)*cos)/(line+(heights/2)*sin));
 
                calcY=heights/2;
                calcY=calcY*Math.sqrt(calcX*calcX+line*line);
                calcY=calcY/Math.sqrt(Math.pow(line,2)+(((2*line)*(rec/2))*sin)+Math.pow(rec/2,2));
 
                ctx.lineTo((c.width/2)-calcX,(c.height/2)+calcY);
                ctx.lineTo((c.width/2)-calcX,(c.height/2));
                ctx.lineTo((c.width/2)-calcX,(c.height/2)-calcY);
 
                ctx.stroke();
 
            }
 
            var c=document.getElementById("myCanvas");
            var ctx=c.getContext("2d");
            ctx.lineWidth="2";
 
            var rec=c.height;
            var line=400;
            var heights=(rec*c.height)/line;
 
            var theta=90;
            var Thetas=Math.PI/180*theta;
            var sin=Math.sin(Thetas),cos=Math.cos(Thetas);
 
            var calcX, calcY;
 
            var centX,centY;
 
            c.addEventListener("mousedown",dragstart,false);
 
            centX=0;
            centY=line;
            
            setTimeout(ani,100);
            
            function ani(){
                theta=(theta+1)%180;
                Thetas=Math.PI/180*theta;
                draws();
                setTimeout(ani,10);
            }
            
            function dragstart(event){
                x=event.x;
                y=event.y;
                event.target.removeEventListener("mousedown",dragstart,false);
                event.target.addEventListener("mousemove",drag,false);
                event.target.addEventListener("mouseup",dragend,false);
            }
 
            function drag(event){
 
                Thetas=(Math.asin(event.x/Math.sqrt(Math.pow(event.x,2)+Math.pow(event.y,2)))-Math.asin(x/Math.sqrt(Math.pow(x,2)+Math.pow(y,2))));
 
                document.getElementById("text").innerHTML=(Math.asin(event.x/Math.sqrt(Math.pow(event.x,2)+Math.pow(event.y,2)))-Math.asin(x/Math.sqrt(Math.pow(x,2)+Math.pow(y,2))));
 
                draws();
 
            }
 
            function dragend(event){
                event.target.removeEventListener("mousemove",drag,false);
                event.target.removeEventListener("mouseup",dragend,false);
                event.target.addEventListener("mousedown",dragstart,false);
            }
 
        </script>
cs



Posted by JunkMam
,

 연립일차방정식이란,

 미지수 여러개에 대한 일차방정식은 방정식의 값과 계수가 실수 일때,

 일차(미지수간의 관계가 단일한 경우)인 방정식을 말한다.


 예을 들어서


 ax+by=F


 라고 할 수 있다.


 연립 방정식은 이러한 일차방정식이 연립(동일하게 존재하는)되어진 2개 이상의 방정식을 뜻한다.


 예을 들어서


 ax+by=F

 cx+dy=f


 이렇다면, ax+by=F와 cx+dy=f가 모두다 성립되는 방정식을 연립 방정식이라고 한다.


 연립일차 방정식이 성립되는 해를 연립일차방정식의 해집합이라고 한다.

 동일한 해집합을 가지는 두 해집합의 연립일차방정식을 동치라고한다.


 이 해집합을 그래프로 그리면, 기하학으로 표현이 가능하다.


 1. 기하학에서 교차되는 것은 연립일차방정식에선 유일한 해를 갖는다.

 2. 기하학에서 평행하는 것은 연립일차방정식에선 해를 갖지 않는다.

 3. 기하학에서 일치하는 것은 연립일차방정식에선 해가 무수히 많다.


 이 3개의 경우가 있으며, 사용이 용이한 것은 유일한 해를 가질때이다.(해를 갖지 않으면, 계산했을때, 쓸모가 없으며 무수히 많은 해를 가지게 되면, 난잡해진다.)


 유일한 해를 가지게 되는 것을 계산하는 것은 연립일차방정식을 푼다는 것이고, 연립일차방정식을 푸는 공식을 행렬식이라고한다.


 이 방법으로 다양한 방법 중에 반드시 값을 찾아내는 방법은 Gauss 소거법이 있다.

'연습' 카테고리의 다른 글

void_Linked_List -연습 addFront 구현-  (0) 2015.06.05
void_linked_list -연습-  (0) 2015.06.03
Linked_List -Playing with C-  (0) 2015.06.02
find 프로그램 만들기.  (0) 2015.05.11
void_stack 제작하기 -동적 할당-  (0) 2015.05.09
Posted by JunkMam
,