분류 전체보기(324)
-
simple_sqli 풀이
우선 항상 하던대로 접속정보를 따라 웹페이지에 접속하고 문제 파일을 다운받았습니다. 이번 문제 역시 Python 파일입니다. 로그인을 하기 전에 우선 코드를 보겠습니다. 코드 하단 부분에 if userid=='admin': 라는 부분이 있습니다. 우리가 로그인 해야 할 관리자 계정의 id는 admin으로 고정되어 있다는겁니다. res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"') 라는 부분은 우리가 로그인 할 때 쓰여지는 쿼리문을 나타냅니다. 여기서 {userid}를 admin으로 바꿔 작성해보면 res = query_db(f'select * from users where userid=..
2021.05.08 -
오답노트-2
문제 10명의 사람들이 순서대로 줄을 서 있다. 앞에 있는 사람부터 차례대로 가지고 있는 구슬의 수가 10, 13, 26, 11, 15, 12, 18, 13, 25, 7개이다. 사람들이 가지는 구슬의 개수를 모두 같게 하기 위하여 분배작업을 수행하려 한다. 분배작업 1회는 다음과 같다. 어떤 한 명이 인접한 한 사람에게 자신이 가지고 있는 구슬 중 일부를 준다. 모든 사람이 같은 수의 구슬을 가지게 하는데 필요한 분배작업의 최소 횟수는 얼마인가? 풀이 [10, 13, 26, 11, 15, 12, 18, 13, 25, 7] 이 구슬들을 모두 더하면 150이고, 이를 사람의 수인 10으로 나누면 15가 된다. 위 과정을 통해 한 사람에게 주어져야할 구슬의 수는 15임을 알아낸 것이다. 이제 왼쪽에서 오른쪽의..
2021.05.06 -
오답노트-1
문제 이차원 평면의 원점 (0, 0)에서 시작해서 한 번에 왼쪽, 오른쪽, 위쪽, 아래쪽 중 한 방향을 마음대로 정해 그 방향으로 거리 1만큼 이동하려고 한다. (0, 0)에서 한 번의 이동으로 갈 수 있는 곳은 (0, 1), (1, 0), (0, -1), (-1, 0)으로 모두 네 점이다. 그렇다면 정확히 10번 이동해서 도달할 수 있는 서로 다른 점의 개수는 몇 개인가? 풀이 이런 식으로 그림을 그려 확인해보면 규칙이 두 가지 보인다. 1. 최대로 갈 수 있는 경우는 (10,0), (-10,0), (0,10), (0,-10)이다. 2. 좌표값의 합의 절댓값이 짝수인 경우에만 갈 수 있다. 2번 규칙에 주목을 해서 문제를 풀어보면 식은 아래와 같다. (10+8+6+4+2)*4+1 (10 이하의 모든 좌..
2021.05.02 -
임베디드(UART 찾기, 칩 종류/역할)
- UART란? 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종 보통은 4핀의 형식으로 구성 되어있다. (*VCC, *RX, *TX, *GND) * 전압 공급(전원 핀) * 데이터 수신 핀 * 데이터 송신 핀 * 보드의 기준 전압을 맞춰주는 핀(그라운드라 부른다) UART의 핀 구조도 알았겠다, 이제 위에 있는 보드 사진에서 어느 부분이 UART 핀인지 알 수 있을 것이다. 사진에서 중앙에서 왼쪽으로 조금 가보면 위와 같이 4핀으로 구성된 무언가를 끼우는 핀홀이 있을 것이다. 이 홀이 UART 홀이다. - 무슨 칩일까?(1) 처음에 보곤 무슨 칩인지 잘 모르겠어서 2분 정도는 고민을 했다. 그러다 칩에 써져있는 MEDIATEK가 회사명, 아래에 적혀있는 것들이 모델명..
2021.04.20 -
Speculation Execution, Meltdown, Spectre에 대하여
- Speculation Execution이란? Speculation Execution은 프로그램의 논리 흐름상 실행 여부가 불확실한 상태에서, 예측 실행을 하는 기법이다. 이렇게만 말하면 이해가 잘 되지 않을 것이다. 그러므로 아래의 예시 if문 코드를 보며 설명을 적어보겠다. #include #include using namespace std; int main(){ int a,b=1; cin>>a; if(a>15){ b=5; } cout15 (true는 3번으로, false는 4번으로 이동) 완료 b=5 실행값 폐기 이렇게 실행을 했을 때의 장점은 시간 단축이다. 위의 과정에서 2단계가 true값으로 나왔으면 굉장한 시간 단축이 될 것이고 false가 나오면 b=5의 실행값을 폐기하여 없던일로 처리한..
2021.04.17 -
Pipelining, Out-of-order Execution, Branch prediction
- Pipelining이란? 명령어를 순차적으로 실행시키는 프로세서에서 적용되는 기술이다. 하나의 명령어를 실행시키면서 동시에 다른 명령어도 순차적으로 실행시키는 기술이다. 이미지로 구현시키면 여러개의 바를 나열시킨 모양으로 그려진다. 이렇게 여러개의 명령어를 동시에 실행시키면서 처리량을 증폭시키는 것이 Pipelining의 핵심 목표다. +) 그렇다고 해서 동작속도가 빨라지는 것은 아니다. - Pipelining의 효율성을 높히기 위한 조건 각 단계별 처리시간이 일정해야한다. 각 명령의 처리단계가 균일해야한다. - Hazard란? 위 조건이 만족되지 않았을 때 발생하는 문제를 뜻한다. - Hazard의 종류? Hazard의 종류는 총 3개가 있다. 구조적 해저드(structural hazard) 데이터..
2021.04.17