레이블이 프로그래밍인 게시물을 표시합니다. 모든 게시물 표시
레이블이 프로그래밍인 게시물을 표시합니다. 모든 게시물 표시

2020년 7월 23일 목요일

C++ 의 List와 Vector의 차이

https://thispointer.com/difference-between-vector-and-list-in-c/

이 문서는 C++의 std::vector 와 std::list의 다른 점에 대하여 논의할 것이다.

Vector와 List는 C++에서 Sequential한 Container이다.
Standard Template Library 이다.
이 두 Container의 내부 구현은 다른점이 많다.

List는 연속적이지 않은 Memory 장소에 각 요소들을 저장하고 있다. 다른말로 하면 double linked list로 구현이 되어 있다.

반면에 Vector는 각 요소들을 연속적인 Memory 장소에 저장하고 있다.

std::vector vs std::list
1.) Insertion and Deletion
List는 Vector에 비하여 삽입과 삭제가 효율적이다. 앞, 뒤, 중간 어디에서 작업을 하던지 몇개의 pointer만을 바꿔주면 되기 때문이다.

반면에 Vector는 앞이나 중간에 삽입이나 삭제를 하면 전체 요소들이 전부 이동을 해야 한다. 새로운 장소를 찾아야 하고 모든 값들이 복사되어야 한다.

2.) Random Access:
List가 내부적으로 Double Linked List로 구현되어 있기 때문에, random access 는 허용되지 않는다. 예를 들어 15번째 요소에 접근하려고 하면 iterator를 통하여 14개의 요소를 통과해야 한다는 것이다.

반면에 Vector는 Array 처럼 요소들을 연속된 Memory에 저장하고 있다. 그래서 Vector는 random access 가 가능하다. 예를 들어 15번째 요소에 접근 하려면
std::vector<int> vec(2);
vec[15] = 10;

그래서, List는 random access 가 필요한 STL algorithm 은 사용하지 못한다.

3.) Iterator Invalidation
List에서는 삭제나 삽입작업이 interator를 무효화 하는 경우가 없다. 왜냐하면 삽입이나 삭제할 경우에도 요소가 움직이는 경우가 없이 몇개의 포인터만 변경되기 때문이다.

4.) Special Member Fucntion
std::list 가 random access 를 제공하지 않기 때문에 많은 random access 를 사용하는 많은 STL 알고리즘들이 List에서 사용되지 못한다. 그래서 std::lisst에서는 추가적인 함수들을 제공하는데 이들은 Sorting, Spicing, Removing 인 것들이다.

2020년 5월 7일 목요일

MATLAB IDE 관련

1. 현재 폴더의 column 항목을 변경하고 싶을 때
    - 현재폴더 window의 오른쪽 위 화살표를 누르면 아래 이미지를 찾을 수 있고, 표시에서 변경하면 된다.

2020년 4월 26일 일요일

Notepad++, Notepad PlusPlus

1. Tab 을 한눈에 보고 싶을 때
    - Setting - General - Tab Bar - Multiline checked

Terminal, cmd, Teraterm

1. Terminal 에서 사용가능한 Font 설치
    - 마음에 드는 font 찾기
    - 설치(DejaVu) -> download 받은 후 ttf
    - console 에서는 monospace 설치 가능
 

    - 관련 정보
        1) monospace: 고정너비
        2) Command Prompt will recognize only monospace fonts

2. 색상 변경
    - 마음에 드는 색상 찾기
        - R:0, G:240, B:0 이 눈에 편했다.
    - Teraterm: setup-window 에서 색상 변경
    

2020년 4월 24일 금요일

C++ 시험공부

1. namespace
    scope 을 구분해 주는 역할을 한다.
    namespace 의 이름을 지정해 주면 using 혹은 name:: 을 통해서 접근이 가능하다.
    namespace without name
        - It's called an unnamed namespace / anonymous namespace. It's use is to make functions/objects/etc accessible only within that file. It's almost the same as static in C.

2. C++ 에서의 struct
    class 와 동일하게 동작하여 상속 등을 사용할 수 있다.
    다른점은 class 가 기본 접근지시자가 private 이라면 struct 는 public 이다.

3.  C++ 생성자와 초기화
    이렇게 하면 argument 로 member 변수가 초기화 된다.
    class name  {
        int member_x;
        int member_y;
    name(int arg1, int arg2) : member_x(arg1), member_y(arg2);
}


2020년 4월 22일 수요일

Source Insight

1. 지금 보고있는 file 의 Folder 열기
    1) cutom command 설정
    2) key 설정에서 해당 command 의 단축키 설정
        - ex> explorer %d 하니까 가능

2. Line Number
    1) Options -> Document Options
    2) 'Document Options' Dialog box -> Show line numbers 

2020년 4월 1일 수요일

python 가상환경

1. 가상환경을 만든다.
2. 가상환경을 사용한다.

1. 가상환경을 만든다.
    option 1) python -m venv "내가상환경폴더이름"
        - venv 라는 module 을 사용해서 가상환경을 만들어라
    option 2) virtualenv "내가상환경폴더이름"
        - option 1과 동일한 작업을 수행한다.
        - python 과 virtualenv 를 바로 사용할 수 있는것은 내 컴퓨터에 해당 exe 가 있는 폴더가 환경변수 path 로 등록되었기 때문

2. 가상환경을 사용한다.
    - 가상환경 폴더에 scripts 라는 폴더가 생기고 그 안에 python.exe 파일을 사용할 수 있다.

2019년 10월 29일 화요일

matlab file load, save

1. what is mat file
MAT-files are binary MATLAB® files that store workspace variables.
matlab 에서 사용하는 binary 파일이다. 세부 형식은 matlab 고유의 방식이지 않을까

Starting with MAT-file Version 4, there are several subsequent versions of MAT-files that support an increasing set of features. MATLAB releases R2006b and later all support all MAT-file versions.
지금까자 여러 버전의 mat 파일이 존재하며 R2006b 부터는 모든 mat 파일이 지원된다고 하니 이후에는 업데이트 된 것이 없다고 봐야 하는 것인가.


2. load function
load('filename') 일 때는 filename 에 확장자가 명시되어 있으며 확장자를 따른다. mat 형식이나 ascii 형식이 있을 수 있다. 그래서 mat 이라고 적혀있지 않으면 ascii 형식으로 load 한다.
그래서 load('filename', '-mat') 으로 하면 확장자에 구애하지 않고 mat 파일을 load 한다.

3. save function
save('filename', '-struct', structName) 일 때 structName 구조체의 값들을 filename 에 개별 변수로 저장한다.
이 때 이렇게 저장한 filename 을 tmp_name = load('filename', 'mat') 으로 load 하면 tmp_name 이 structName 의 모든 변수를 가진 구조체가 된다.

2019년 7월 21일 일요일

MATLAB

단축키
    - 여러줄 주석 처리 ctrl + r
    - 여러줄 주석 해제 ctrl + t

2019년 7월 20일 토요일

Visual Studio Code - Python

1. python 실행파일 경로 연결할 때
    - settings.json 에서 경로를 지정해 준다.
{
"python.pythonPath": "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\python.exe",
"scm.alwaysShowActions": true,
"window.zoomLevel": -1,
"python.jediEnabled": false
}

2. Argument 줄 때
    - launch.json 에서 아래와 같이 args 안에 순서대로 입력

"configurations": [
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"-s",
"00003521"
],
"cwd": "${fileDirname}"
},

3. file explorer 부를 때
    - ctrl + shift + E

4. 모든 커맨드를 실행할 때
    - ctrl + shift + p
    - show all command 라고 부른다.

5. 특정 파일을 부를 때
    - show all command 한 다음 launch.json 이나 settings.json 을 친다.

6. debug 진행
---
A debug toolbar appears along the top with the following commands from left to right: continue (F5), step over (F10), step into (F11), step out (Shift+F11), restart (Ctrl+Shift+F5), and stop (Shift+F5).
---
 
7. python version check
python -V

8. pyhton computer check
$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

9. turtle 로 그림 그리기
    1) turtle 로 라인 그리기
    2) turtle 의 screen size 조정하기
    3) turtle 의 origin 설정하기
    4) pen  color 설정하기
    5) svg 이미지로 저장하기
    6) svg 이미지를 png 로 변환하기 https://pypi.org/project/svglib/













2019년 5월 19일 일요일

MFC C++ Note

특정 Cotrol 의 색을 변경하고 싶을 때
1. Dialog 의 Window Message 중 WM_CTLCOLOR 을 Enable 한다.
2. OnCtlColor 함수가 자동으로 생긴다.
3. OnCtlColor 함수는 Control이 보여주는 이벤트가 생길 때(Test 를 쓰거나 등) 불리게 된다. (참조: Link)
4. OnCtlColor 함수를 적어준다. (참조: Link)
5. 내가 원하는 특정 Control 만을 변경시키고 싶으면 각 case 안 해당 코드에 if 를 넣어주면 된다.



No 4
HBRUSH Cxxxxxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  Change any attributes of the DC here
switch(nCtlColor){
case CTLCOLOR_DLG:   /// 다이얼로그 배경색을 white로.
{        return (HBRUSH)GetStockObject(WHITE_BRUSH);
        break;
}
case CTLCOLOR_BTN :    // 버튼의 배경색을 투명으로...
{
        pDC->SetBkMode(TRANSPARENT);
                  return (HBRUSH)::GetStockObject(NULL_BRUSH);
        }
         case CTLCOLOR_STATIC:
        {
               pDC->SetTextColor(RGB(0,255,255));  // static text 글자색 변경
                 pDC->SetBkMode(TRANSPARENT);   // static text 배경색 투명
                 return (HBRUSH)::GetStockObject(NULL_BRUSH);
        }
}
// TODO:  Return a different brush if the default is not desired
return hbr;
}

2019년 4월 22일 월요일

Matlab

   
CSV 로 출력할 때
simulation_results = [FP_2_x(h,i), FP_2_y(h,i), R_2(1,i), R_2(2,i)-Da];
dlmwrite('C:\simulaton_results.csv', simulation_results, '-append');

dlmwrite('C:\FP_2_x__h_i.csv', FP_2_x(h,i));

2018년 12월 12일 수요일

Byte Order

인텔계열 PC 에서는 Byte단위로 Little Endian 이다.
Sensor 단위에서는 Big Endian 이다.

그래서 PC 에서 읽은 다음에 무조건 방향을 바꾸어 주어야 한다.

2018년 6월 1일 금요일

모두 같은 값으로


1. Macro Code
    - cell merge
Sub register_merge()

' register_merge 매크로

Set r = ActiveCell
Dim i As Integer
    For i = 1 To 1000
        If Selection.Offset(1, 0) <> "" Then
            Selection.Offset(1, 0).Select
        Else
            Selection.End(xlDown).Select
            Selection.Offset(-1, 0).Select
            Range(Selection, Selection.End(xlUp)).Select
            Selection.Merge
            Selection.Offset(1, 0).Select
        End If
    Next i
End Sub

2. 빈칸을 모두 같은 값으로
홈 - 편집 - 찾기 및 선택 - 이동옵션 - blank

제일 위의 cell 에 넣을 수식 입력한 다음 ctrl + enter

2018년 5월 12일 토요일

Excel VBA 기본

목적: 간단한 VBA 코드가 필요할 경우(Macro 작성) 기본 문법도 모두 검색해서 찾아보기 때문에 효율성이 떨어지고 내가 제대로 알고 있는지 의구심이 들 때가 있기 때문에

프로그램 설명: 1번 Row 부터 800번 Row 까지 이동하면서 1번 Column 에 특정 문자열이 들어 있으면 특정 명령을 수행한다.

1) 코드에는 아래와 같이 쓴다. Sub 와 함수 이름을 작성하고 괄호를 열고 닫은 후 엔터를 치면 End Sub 가 자동으로 나타난다. 이 말은 문법이 아직까지 틀린적이 없다는 것이다.
Sub MakeIndent()
End Sub

2) 사용할 변수 선언
Sub MakeUndext()
    Dim i, j, K As Integer
End Sub

3) For 구문 작성
Sub Makeindent()
    Dim i, j, K As Integer
    For i=1 To 800 
    Next
End Sub

4)  특정 문자열이 있는지 확인
Sub Makeindent()
    Dim i, j, K As Integer
    For i=1 To 800
        if ( inStr(Cells(i, 1), "Heading") ) Then
        Endif
    Next
End Sub

5) 특정 행동을 실행
Sub Makeindent()
    Dim i, j, K As Integer
    For i=1 To 800
        if ( inStr(Cells(i, 1), "Heading") ) Then
            j = MID(Cells(i, 1), 9, inStr(Cells(i, 1), "&") - 9)
            For k To j
                ' 오른쪽으로 Shift 하는 코드를 넣는데 이런 부분은 Macro 기록으로 실행한 뒤 복사해서 사용하면 된다.
            Next
        Endif
    Next

2017년 10월 6일 금요일

excel 강좌 "업무가 100배 빨라지는 엑셀 데이터 활용과 분석 노하우" review

빈셀 선택 - ctrl + enter
choose
getpivotdata - 위, 좌 참조 - 현재셀$$
셀서식 - 사용자정의 - 양수;음수;0;문자
조건부 서식 =(조건)  -> =A4>=0

OSI 7 Layer explained

Layer 1: Physical Layer

The physical layer defines the electrical and physical specifications of the data connection. It defines the relationship between a device and a physical transmission medium (for example, an electrical cable, an optical fiber cable, or a radio frequency link). This includes the layout of pins, voltages, line impedance, cable specifications, signal timing and similar characteristics for connected devices and frequency (5 GHz or 2.4 GHz etc.) for wireless devices. It is responsible for transmission and reception of unstructured raw data in a physical medium. Bit rate control is done at the physical layer. It may define transmission mode as simplex, half duplex, and full duplex. It defines the network topology as bus, mesh, or ring being some of the most common.
The physical layer of Parallel SCSI operates in this layer, as do the physical layers of Ethernet and other local-area networks, such as token ring, FDDI, ITU-T G.hn, and IEEE 802.11 (Wi-Fi), as well as personal area networks such as Bluetooth and IEEE 802.15.4.
The physical layer is the layer of low-level networking equipment, such as some hubs, cabling, and repeaters. The physical layer is never concerned with protocols or other such higher-layer items. Examples of hardware in this layer are network adapters, repeaters, network hubs, modems, and fiber media converters.

물리 계층은 데이터의 연결에 대한 전기적인, 물리적인 스펙을 이야기 한다. 장치 간의 물리적인 중간 매체(예를 들어, 전기 케이블, 광섬유 케이블, 혹은 라디오 주파수 등)를 정의한다. 여기에는 핀의 배치도, 사용되는 전압, 선의 저항값, 케이블의 스펙, 전송 신호의 타이밍, 무선 장치에서의 전송 주파수 등 비슷한 스펙들을 포함하고 있다. 물리적인 장치를 통해서 구조화 되지 않은 raw 데이터를 보내고 받는 것에 관련된 책임을 가지고 있다. bit rate는 물리 계층에서 이루어 진다. 여기에는 데이터 전송이 simplex인지 half duplex인지 full duplex인지도 정의되어 있다. network구조의 경우 bus, mesh, 나 ring 등 가장 일반적인 것들도 정의하고 있다. 병렬 SCSI의 물리적 계층은 이 계층에서 작동하며 이는 이더넷 및 기타 로컬 영역 네트워크의 토큰 링, FDDI, ITU-T G.hn 및 IEEE 802.11 (Wi-Fi)이나 개인영역 네트워크의 Bluetooth 및 IEEE 802.15.4와 동일한 역할이다.
물리 계층은 일부 허브, 케이블 링 및 중계기와 같은 하위 수준 네트워킹 장비의 계층이다. 물리 계층은 프로토콜 또는 기타 상위 계층 항목과 관련이 없다. 이 계층의 하드웨어의 예로는 네트워크 어댑터, 중계기, 네트워크 허브, 모뎀 및 광섬유 미디어 변환기가 있다.


Layer 2: Data Link Layer

The data link layer provides node-to-node data transfer—a link between two directly connected nodes. It detects and possibly corrects errors that may occur in the physical layer. It defines the protocol to establish and terminate a connection between two physically connected devices. It also defines the protocol for flow control between them.
IEEE 802 divides the data link layer into two sublayers:[5]
Media access control (MAC) layer – responsible for controlling how devices in a network gain access to a medium and permission to transmit data.
Logical link control (LLC) layer – responsible for identifying and encapsulating network layer protocols, and controls error checking and frame synchronization.
The MAC and LLC layers of IEEE 802 networks such as 802.3 Ethernet, 802.11 Wi-Fi, and 802.15.4 ZigBee operate at the data link layer.
The Point-to-Point Protocol (PPP) is a data link layer protocol that can operate over several different physical layers, such as synchronous and asynchronous serial lines.
The ITU-T G.hn standard, which provides high-speed local area networking over existing wires (power lines, phone lines and coaxial cables), includes a complete data link layer that provides both error correction and flow control by means of a selective-repeat sliding-window protocol.

데이터 링크 레이어는 node 와 node간의 데이터 전송(연결된 두개의 node)을 담당한다. 물리 계층에서의 데이터 전송간의 error를 감지하고 가능하면 error를 바로잡는다. 두 연결된 장치간의 연결의 확립과 종결과 관련된 프로토콜을 정의한다. flow control도 정의한다.  IEEE 802는 데이터 링크를 더 세부적인 서브 레이어들로 나눈다.
Media access control(MAC)
Logical link control(LLC)

Layer 3: Network Layer

서로 다른 네트워크에 접속하는 레이어

Layer 4: Transport Layer

데이터 전송간의 데이터가 제대로된 길이로 갔는지 확인할 수 있는 것
네트워크 간에 로스가 될 수 있으니

Layer 5: Session Layer
특정한 세션을 구축하는지의 문제, 로그인을 한 상태를 구분하는 것 등

Layer 6: Presentation Layer
데이터의 표현 방식에 대한 것으로 암호화가 된 것과 안된것을 구분하는 것 등

Layer 7: Application Layer
실제 필요한 데이터를 사용하는 것

2017년 4월 3일 월요일

Image processor

이미지 프로세서를 이해하기 위해서 Wikipedia 내용을 번역

An image processor, image processing engine, also called media processor, is a specialized digital signal processor (DSP) used for image processing in digital cameras, mobile phones or other devices.[1][2] Image processors often employ parallel computing even with SIMD or MIMD technologies to increase speed and efficiency. The digital image processing engine can perform a range of tasks. To increase the system integration on embedded devices, often it is a system on a chip with multi-core processor architecture.
이미지 프로세서(이미지 프로세싱 엔진, 그리고 미디어 프로세서로 불리는)는 디지털 카메라, 핸드폰 그리고 다른 장치들에서 사용되는 특화된 디지털 시그널 프로세서(DSP)를 말한다. 이미지 프로세서는 스피드오 효율성을 위해서 SIMD 나 MIMD 와 같은 병렬 컴퓨팅를 사용한다. 디지털 이미지 프로세싱 인진은 여러 Task 를 사용할 수 있다. 임베디드 시스템에서의 시스템 통합을 위해서, 멀티코어 프로세서 시스템 구성을 가진 칩 위에서 사용된다.


Function

Bayer transformation
The photodiodes employed in an image sensor are color-blind by nature: they can only record shades of grey. To get color into the picture, they are covered with different color filters: red, green and blue (RGB) according to the pattern designated by the Bayer filter - named after its inventor. As each photodiode records the color information for exactly one pixel of the image, without an image processor there would be a green pixel next to each red and blue pixel. (Actually, with most sensors there are two green for each blue and red diodes.)
This process, however, is quite complex and involves a number of different operations. Its quality depends largely on the effectiveness of the algorithms applied to the raw data coming from the sensor. The mathematically manipulated data becomes the photo file recorded.
이미지 센서에 사용된 포토 다이오드(감광성의 반도체 장치)는 자연에 의한 color-blind 이다: 회색 그림자만을 저장할 수 있다. 그림에 색을 넣기 위해서는, 서로 다른 Bayer Filter(만든사람 이름)로 디자인된 색 필터가 사용되어야 한다: 빨간색, 녹색 그리고 파란색(RGB). 각각의 포토 다이오드는 하나의 색 정보(RGB 중 1개) 밖에 없기 때문에 이미지 프로세서가 없다면 그냥 녹색 픽셀 옆에 파란색 그 옆에 빨간색 픽셀이 있는 것이다?(실제로는 파란색, 빨간색 하나씩에 녹색은 2개가 있다.)
하지만 이 프로세스는 꽤 복잡하며 많은 작업들이 연관되어 있다. 품질은 sensor 에서 받은 raw 데이터에 대한 알고리즘의 효과성에 달려 있다. 수학적으로 조작된 데이터는 사진 파일이 된다.

Demosaicing
As stated above, the image processor evaluates the color and brightness data of a given pixel, compares them with the data from neighboring pixels and then uses a demosaicing algorithm to produce an appropriate colour and brightness value for the pixel. The image processor also assesses the whole picture to guess at the correct distribution of contrast. By adjusting the gamma value (heightening or lowering the contrast range of an image's mid-tones) subtle tonal gradations, such as in human skin or the blue of the sky, become much more realistic.
이미지 프로세서는 픽셀에 있는 색과 밝기를 평가하고 옆에 있는 픽셀들과 비교하여 demosaicing 알고리즘을 적용하고 나면 적절한 색과 밝기를 생산해 낸다. 이미지 프로세서는 전체 사진에 대해 판단하여 정확한 대비의 분배를 추측한다. gamma 값을 조정하여(이미지의 mid-tone 대비값을 강조하거나 낮추거나 해서) 미묘한 톤의 단계적 차이를 현실감 있게(피부 및 하늘의 파란 색 등) 표현한다.
- 디지털 카메라의 모자이크 형태의 컬러필터배열(CFA)에 의해 만들어진 샘플을 풀컬러 이미지로 변환하는 것(Link)

Noise reduction
Noise is a phenomenon found in any electronic circuitry. In digital photography its effect is often visible as random spots of obviously wrong colour in an otherwise smoothly-coloured area. Noise increases with temperature and exposure times. When higher ISO settings are chosen the electronic signal in the image sensor is amplified, which at the same time increases the noise level, leading to a lower signal-to-noise ratio. The image processor attempts to separate the noise from the image information and to remove it. This can be quite a challenge, as the image may contain areas with fine textures which, if treated as noise, may lose some of their definition.
노이즈는 어느 전기적 회로에나 있는 현상이다. 디지털 사진에서 random 하게 명확하게 잘못된 값들이 관찰되게 된다. 노이즈는 온도에 따르거나 노출 시간에 따라 증가되게 된다. 이미지 센서가 증폭될 때에 높은 ISO 셋팅이 사용되면 노이즈 도 같이 증폭되게 된다. 이미지 프로세서는 이미지 정보와 노이즈를 분리하려고 시도한 뒤 노이즈를 제거한다. 이런 것은 꽤 challenge 가 될 수 있다. 이미지에서 정제된 질감을 가질 때는 노이즈로 취급되어 사라질 수도 있다.


Image sharpening
As the color and brightness values for each pixel are interpolated some image softening is applied to even out any fuzziness that has occurred. To preserve the impression of depth, clarity and fine details, the image processor must sharpen edges and contours. It therefore must detect edges correctly and reproduce them smoothly and without over-sharpening.
각 픽셀의 색과 밝기 값들이 interpolate 되어 보풀같은 것들이 일어났을 때 이미지를 부드럽게 만들어낼 때 쓰인다. depth, clarity, fine detail 의 인상을 보존하고 싶을 때, 이미지 프로세서는 에지나 윤곽을 날카롭게 한다.    그래서 에지들을 명확하게 감지하고 그것들을 부드럽게 재현하는 것 그리고 Over sharpening 하는 것이 없어야 한다.

참조: Link

2017년 2월 12일 일요일

service primitives

Primitive: 가장 작은 수행 단위
Service Primitive: OSI 참조 모델에서 수행해야 하는 가장 작은 수행단위로, request, indication, response, confirmation 네 가지가 있다.

보통
T_Data.ind, T_Data.con, T_Data.req 혹은
S_Data.ind, S_Data.con, S_Data.req 등으로 사용 되는데
여기서 T 는 Transport Layer에서 붙인 Header, S 는 Session Layer 에서 붙인 Header를 의미한다.

req 는 request 를 의미하여 보내는 것을 시작했다?
con 는 confirm 으로 다 보냈다.
ind 는 indication 보낸 것을 받았다?
의미가 모호하지만 어느 지점인 것 까지는 이해했다.
When receiving a request from an upper layer, the function in the Network Layer is performed by a Request primitive.
When the Request is received, a Confirm primitive returns confirmation of that receipt to the upper requesting layer.
In some cases, when the requested event has been completed, there is an Indication primitive sent to the upper layer to inform it of the event.
참조: http://www.cel.com/pdf/misc/zic08_nwk_api.pdf



https://en.m.wikipedia.org/wiki/Language_primitive
https://www.rivier.edu/faculty/vriabov/CS553_ST7_Ch02-ProtocolArchitecture.ppt
https://en.m.wikipedia.org/wiki/Service_primitives

2016년 12월 8일 목요일

Confluence 의 table을 csv(excel)로 export 하기

회사에서 Confluence(atlassian 의 S/W) 를 사용하고 있습니다. 

Wiki 로 프로젝트 관리, 정보공유 등을 (저렴한 가격으로)진행할 수 있어 최근 가장 유명한 S/W 로 알고 있고 정말 편리 합니다.

 Excel을 import 시켜도 Excel 화면을 화면에서 바로 볼 수 있어 유용하지만, Table 형태로 사용하는 경우도 있습니다.


그런 Table은 현재 Word 나 PDF 로만 export 가 가능하도록 되어 있습니다.

저의 경우 Table 형태로 된 데이터를 다루기에는 Excel 이 가장 편리한데 Excel 로 바로 export 할 수 없어서 불편함을 느끼고 있었습니다.


개선을 위해서 검색해 보니 html(confluence page 포함) 에서 table을 빼 내는 javascript Code를 공유해 준 블로그가 있어 적용을 해 보았는데 100% 만족 하였습니다.

사용 방법
1. 관련 자바 스크립트(Export To CSV)를 bookmark로 지정하고(Explorer 10이상)
    - 위 링크를 드래그 하여 bookmark로 등록 하면 됩니다.

2. 원하는 페이지에서 해당 bookmark 를 실행 시킵니다.

3. 해당 페이지의 Table 위에 export to csv 라는 링크가 생기고

4. 그 링크를 click 하면 Table이 csv 형태로 저장 됩니다.

(추가)
5. 해당 csv 를 click 하면 default 로 excel로 열리는데 한글은 깨져 있습니다.
6. notepad++ 등 다른 editor로 열면 한글이 살아 있습니다.
    -> 이 부분은 인코딩 문제인 것 같은데... 잘 몰라서 공부해야 할듯 합니다...
(코드)
7. 해당 코드는 원본 블로그에서 보실 수 있으며 위 bookmark로 지정한 링크에서도 보실 수 있습니다.

(161210)
8. csv 파일과 자동 연결되는 Excel 로 열면 한글이 깨져 있지만 Notepad++ 와 같은 에디터로 여니 깨지지 않았습니다. UTF-8로 되어있기 때문?
9. Notepad++ 로 연 상태에서 전체 텍스트를 복사한 다음 notepad를 새로 만들어서 붙여넣고 저장하면 새로 열었을 때 깨지지 않았습니다. 이는 window에서 파일을 만들면 자동으로 ms949 로 인코딩을 하기 때문? 입니다.