목록전체 글 (303)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cY9nhP/btrI3uqKL2r/lbR2nIFVEuLckofbYotYV0/img.png)
이렇게 새 브랜치를 생성할 때 에러가 뜨면서 브랜치 생성이 안됐다. Not a valid object name: 'master' (유효한 개체 이름이 아닙니다.) 아직 한 번도 commit 하지 않은 repository에서 브랜치를 생성했기 때문에 생긴 오류 해결 방법 저장소에서 최소 한 번이상 commit을 하면 된다. 적어도 commit을 한 번은 해야 브랜치가 생성된다는 사실을 명심해두자. 참고 : https://somjang.tistory.com/entry/Git-fatal-Not-a-valid-object-name-master-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95
"struct object * obj" (?obj@@3PAUobject@@A)이(가) head.obj에 이미 정의되어 있습니다. 파일 분할 후 컴파일 하려했더니 생긴 오류이다. 오류의 원인 헤더파일을 만들어 파일 분할을 했을때 변수가 중복 선언되서 발생 해결 방법 헤더 파일 안에다 전역변수를 선언하지 않으면 된다. 필자의 경우 구조체를 정의하고 그 밑에다 구조체 변수를 바로 선언해버려서 이러한 오류가 생겼다. 뿐만아니라 헤더 파일 안에다 전역변수를 선언하면 안되는 이유가 더 있다. 헤더 파일에 전역 변수를 선언했을 때 헤더 파일을 사용하는 소스 파일이 하나라면 문제가 없지만, 여러 소스 파일에서 헤더 파일을 사용하면 컴파일 에러가 발생하게 된다. 왜냐하면 소스 파일에서 헤더파일을 포함할 때마다 전역 변수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cpATNm/btrCwHCnYF4/X8UKOh1el62x47b9akMrtK/img.png)
Blind numeric sql injection 쿼리가 참일때와 거짓일 때의 서버의 반응 만으로 암호 데이터(숫자)를 얻어내는 기술이다. 마치 장님(The blind)이 지팡이를 이용하여 장애물이 있는지 없는지를 판단하는 것처럼 공격코드를 찾아내는 것이다. 하나하나 짚어가면서 찾는 것이라고 생각하면 쉽다.` 공격 시나리오 예시 첫번째 범위 찾기 : 101 and 'pin번호 > 10000' -> false 두번째 범위 찾기 : 101 and 'pin번호 > 8000' -> true 마지막 범위 찾기 : 101 and 'pin번호 = 8001' -> false 마지막 범위 찾기 : 101 and 'pin번호 = 9000' -> true --> pin 번호가 9000인 걸 알 수 있음 일반 SQLInjec..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/M1lkG/btrCQwUKec5/Sk0cjMTVLr69LByF5cDE2K/img.jpg)
프로젝트명 : Rayman 기간 : 2021-11-07 ~ 2021-12-20, 2022-05-22 ~ 설명 : 겜지기 동아리에서 만든 레이맨 프로젝트 OpenGL(오픈 그래픽 라이브러리)와 C언어를 사용하여 제작 File pointer와 fopen_s(), fread() 같은 파일 함수를 사용해 화면에 이미지 직접 출력 구현한 기능 : 레이맨 출력, 애니메이션, 이동(점프, 기어다니기, 걷기), 플레이어 중력, 충돌처리, 화면 스크롤 버전관리(github) https://github.com/soyoungkimm/Rayman 동영상
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NXhpI/btrCkLR9pTx/GvBu5Q6K6kkhafjrH4KuA0/img.jpg)
Reactive Programming 데이터 흐름과 전달에 관한 프로그래밍 패러다임 기존 PULL 방식이 아닌 PUSH 메커니즘 우리는 주로 절차를 명시하여 순서대로 실행되는 Imperative Programming(명령형 프로그래밍)을 한다. 반면 Reactive Programming이란 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관된 작업이 실행된다. 즉 프로그래머가 어떠한 기능을 직접 정해서 실행하는 것이 아닌, 시스템에 이벤트가 발생했을 때 알아서 처리되는 것이다. 기존의 프로그래밍 방식을 Pull 방식, Reactive 프로그래밍 방식을 Push 방식이라고도 한다. Pull 방식은 데이터를 사용하는 곳(Consumer)에서 데이터를 직접 가져와서 사용한다면, Push 방식은 데이터의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czGct6/btrBMGd9Kpg/khaErQ0Z0sZQ4uNjiQ8xj1/img.png)
SQL 구분 데이터 조작어(DML) : select, insert, delete, update 데이터 정의어(DDL) : create, alter, drop 데이터 제어어(DCL) : GRANT, REVOKE 조원 사이트로 가서 관리자 해킹 1단계 : SQL Injection 공격을 통해 정확한 패스워드 없이 관리자(‘Neville’)로 로그인 injection flaws -> LAB : SQL injection -> Stage 1: String SQL Injection 클릭 Neville Bartholomew(admin)’을 선택하고 Password에 아무 값이나 입력 -> 로그인 실패(패스워드 틀림) 패스워드 창에다 'or''=' 입력 로그인 성공! (SQL Injection성공) 로그인이 성공하면 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2eB0y/btrDkvJkuV2/o0xqNDofhEqTNNIM9tq2nk/img.png)
라라벨은 내장된 도구 세트가 있기 때문에 websocket을 사용하기 매우 쉽다. 생성된 이벤트를 웹소켓 서버로 브로드캐스트 해야한다. 브로드캐스팅(broadcasting)은 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식이다. pusher 세팅 브로드캐스트를 이용하려면 composer package인 pusher을 가져와야 한다. 터미널을 켜고 프로젝트 파일 경로 안에서 아래의 명령어를 친다. composer require pusher/pusher-php-server pusher가 잘 깔렸는지 확인하려면 /composer.lock 폴더로 가서 'pusher'을 검색해본다. 그럼 이렇게 pusher가 잘 깔린 것을 확인할 수 있다. 그 다음 pusher.com으로 가서 로그인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnSAPb/btrBynFHzq2/eqEE74x63pAcXP18XnK2Yk/img.png)
팝업 메뉴 뷰에 부착된 모달 메뉴(modal menu)를 팝업 메뉴라 한다. API 레벨 11부터 제공하기 시작했으며 용도는 아래와 같다. 오버플로우 스타일 메뉴 제공 서브 메뉴의 역할 드롭다운 메뉴 팝업메뉴 만들기 1. res 아래에 menu 디렉토리 만들기 2. 그 밑에 popup.xml 만들기 popup.xml activity_main.xml MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activit..