목록전체 글 (303)
처음부터 차근차근
Splash Screen 이미지나 로고, 현재 버전의 소프트웨어를 포함한 그래픽 요소를 보여주는 화면으로 보통 프로그램이 실행되고 있을 때 나오는 화면이다. 앱이 처음 실행될 때 나타난다. 만드는 방법 1. res / drawable 에 splash할 이미지 파일을 넣는다 2. res / values 에 style.xml 파일 새로 생성한 ... 이런식으로 style을 추가한다. 3. MainActivity.java 있는 위치(java / 패키지명)에서 SplashActivity.java 새로 생성 SplashActivity.java public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle..
안드로이드에서의 그래픽 안드로이드는 XML 파일로 그래픽이나 애니메이션을 정의한다. 그리는 작업은 안드로이드 시스템이 담당한다. onDraw() 메소드 안에 draw...()와 같은 메소드를 호출하여 직접 그린다. 전체적인 구조 public class MyView extends View { ... @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); // 여기에 그림그리는 코드 } ... } public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate..
다중 로그인 서비스 거부 공격 사용자가 사이트에 접속해서 서비스를 이용하려면 서버 내에서 DB를 연결해야한다.그래서 한 사용자마다 하나의 DB connection이 필요하다. multi login(다중 로그인)을 구현하려면 DB connection이 최대 접속자 수 만큼 있어야한다. 만약 최대 2명까지 멀티 로그인을 할 수 있는 사이트가 있다고 가정해보자. 사이트에 2명이 로그인을 한 다음 또 다른 사람이 로그인을 하고싶어한다. 하지만 DB 커넥션이 부족하기 때문에 나머지 한 사람은 로그인을 하고 싶어도 하지 못하고 계속 기다려야한다. 이런 점을 이용하여 공격을 하는 것을 다중 로그인 서비스 거부 공격이라한다. DB connection pool DB connection pool은 동시접속 문제를 해결 할..
쿠키와 세션의 차이점 쿠키 세션 저장되는 곳 클라이언트 서버 저장형태 텍스트 형식 Object 형 만료기간 저장시 설정하는데 설정하지 않으면 브라우저 종료시 소멸 정확한 시점을 알 수 없음 자원 한 도메인에 20개, 쿠키당 4KB, 총 300개 서버가 허용하는 한 용량에 제한 없음 인증쿠키값 속이기(Spoof Authentication Cookie) -> 쿠키 에디터(Cookie Editor)를 사용해서 쿠키 값을 바꿔 로그인 세션을 변경한다. 절차 정리 1. ID:webgoat로 로그인하여 sessionID1를 생성한 후, sessionID1의 쿠키를 저장 2. 다른 사용자 ID:aspect로 로그인하여 sessionID2의 쿠키를 저장 3. 다시 ID: aspect로 로그인 4. 쿠키에디터를 이용하여..
REST API를 개발할 때 update 부분 : PostMapping -> PutMapping delete 부분 : GetMapping -> DeleteMapping 으로 변경해보라는 조언을 받아 공부하게 되었다. @DeleteMapping DeleteMapping은 데이터를 delete할 때 사용하는 매핑이다. html 삭제 form에다 method="delete" 이렇게 하면 정상적으로 되지 않고, 저런식으로 hidden type을 생성하고 name="_method" value="delete" 해야 delete method로 보낼 수 있다. controller @DeleteMapping("/{id}/delete") public String deleteMovie(@PathVariable int id)..
Tcp 소켓 생성 #include // c 언어 파일 작성할 때 필요한 헤더 #include // unix 계열 헤더 #include #include #include #define MAX_FD 4 int main(void) { int fd[MAX_FD] = { -1, }; // 소켓 기술자 선언 int i = 0; // 프로세스 id 출력 printf("Process ID : %d\n", getpid()); // 소켓 생성하여 fd 배열 안에다 대입 // PF_INET : IPv4 인터넷 프로토콜, SOCK_STREAM : TCP for (i = 0; i < MAX_FD; i++) { fd[i] = socket(PF_INET, SOCK_STREAM, 0); } // enter 키 받아서 socket fd..
사전 지식 1급 객체(first class object), 1급 시민(first class citizen) Swift의 함수는 1급 객체이다. 1급 객체의 조건 1) 변수에 저장할 수 있다. func inchesToFeet (inches: Float) -> Float { return inches * 0.0833333 } let toFeet = inchesToFeet print(toFeet(10)) 2) 매개변수로 전달할 수 있다. func inchesToFeet (inches: Float) -> Float { return inches * 0.0833333 } func outputConversion(converterFunc: (Float) -> Float, value: Float) {//함수를 매개변수로 ..
RESTful = Representational State Transfer REST는 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 이 REST 설계 지침을 따르는 웹 서비스를 RESTful이라 한다. HTTP 기반의 소프트웨어 아키텍처 스타일이고, 로이 필딩(Roy Fielding)이 2000년에 UC 어바인에서 "Architectural Styles and the Design of Network-based Software Architectures"라는 박사 학위 논문에 REST를 정의했다. RES..