본문 바로가기
728x90
반응형

분류 전체보기283

[JLPT] 2024년 JLPT 1회차 시험 접수 회원 가입 시 '아이디 조건이 맞지 않습니다' 오류 발생. 급하게 정보를 공유한다. [ 이슈 정리 ] - JLPT 사이트 회원 가입 시, "아이디 조건이 맞지 않습니다" 라는 문구와 함께 회원 가입이 이루어지지 않는 현상 [ 원인 ] ID 조건이 영문 및 숫자 조합 5~12 자리이나, ID 조건을 벗어나는 값이 입력되었을 때, 이 부분에 대해 사용자에게 명확한 설명이 없음. [ 해결 방법 ] ID 길이를 5~12 자리로 지정한 뒤, 중복 검사 및 회원 가입 진행 스크린 샷도 같이 올리고 싶은데, 이미 회원 가입을 해버려서 글을 작성할 만한 소스가 없다... 프론트 엔드 쪽을 아시는 분들이라면 회원 가입 폼 입력 사이트에서 개발자 도구를 들어간 뒤, HTML 파일 내에 작성된 Javascript의 chk_id 함수를 확인하시면 된다. 끝. 2024. 4. 5.
CSS - 박스 배치, 리스트/표/ 디자인 1. 박스 종류 - 블록 박스 : 등 - 인라인 박스 : 등 블록 박스는 새 라인에서 시작하며, 옆에 다른 태그 배치가 불가함. 인라인 박스는 블록 내부에 배치하며, 다른 인라인 박스 배치가 가능함. 2. 박스 배치 속성 * display: block | inline | inline-block | none --> block: 블록 박스 배치(width 및 height 지정 후 box 배치) --> inline: 인라인 박스 배치새 라인에서 시작 불가 --> inline-block : 새 라인에서 시작 불가. 인라인 박스 배치(width 및 height로 크기 지정 가능) --> none: 박스 공간을 할당하지 않음. invisible. * position : static | re.. 2024. 4. 3.
46. Linux 방화벽 제어 - firewall-cmd, rich-rule 등록 Linux firewall-cmd를 사용한 Linux 방화벽 정책 생성 및 제어의 마지막 포스팅이다. 지난 포스팅에서는 각 Zone에 간단한 객체를 추가/삭제함으로써 외부에서의 Linux 접속 허용/차단 여부를 확인해보았다. 지난 포스팅에서도 언급했듯이, firewall-cmd로 방화벽 정책을 간편하게 만들 수 있게 되었지만 조금 더 세부적으로 정책을 설정해야하는 경우 firewall-cmd의 옵션만으로는 디테일한 정책을 생성하기 어렵다. 따라서 firewall-cmd는 아키텍처 내부에 존재하는 iptables 명령어를 고스란히 사용하여 정책을 설정할 수 있도록 rich-rule이라는 옵션을 제공하는데, 이번 포스팅에서는 이 rich_rule의 사용 방법에 대해 정리해보려한다. 1. Rich-Rule 사.. 2024. 3. 27.
11. Python - Thread를 사용한 여러 기능 동시 실행(1) 최근 필자는 완성하지 못한 개인 프로젝트를 싸그리 중단하고 from the scratch로 다시 하나씩 코드를 작성해나가는 중이다(Linux 제어 코드부터 진행중이다. PEP8 Convention도 맞추고, 몇 개월 지나면 알아볼 수도 없는 코드도 줄일 겸). 필자가 진행 중인 프로젝트 중 하나를 잠깐 소개하자면, Linux로 인가받지 않은 사용자가 로그인을 시도하는 경우 해당 침입자의 IP를 firewalld에 Drop 정책으로 등록하는 과정을 실시간 + 자동으로 진행하도록 만드는 프로그램의 제작이다(필자가 만들고자하는 프로그램과 유사한 프로그램이 오픈 소스로 있었는데 이름을 잊어버렸다...). Linux에 로그인을 시도하는 사용자의 정보는 보통 /var/log/secure 파일에 저장된다. 위의 스크.. 2024. 3. 22.
[자료구조 with Python] 16. 선형 자료 구조 - Queue(1) 이 블로그에서 다루는 선형 자료구조의 마지막, Queue에 대해 글을 작성하려한다. Queue는 네트워크나 보안 장비와 연관있는 곳에서 개발 관련 업무를 진행한다면 무의식적으로라도 사용하게 되는 자료구조인데, 하드웨어 프로그래밍이건 웹 프로그래밍이건 사용하는 곳이 많아 알아두면 쓸 데가 많다. 필자의 경우도 회사에서 판매하는 보안 장비가 전송하는 Syslog를 실시간으로 받아, 해당 Syslog를 변형하여Splunk로 다시 전송하는 프로그램을 Queue와 Thread로 만들었던 경험이 있다. 물론, 그 때는 Queue라는 의식도 안하고 작성했지만 말이다... 1. Queue 개요 Queue도 Stack처럼 개념 자체가 어려운 자료구조는 아니다. 단지 Stack과 달리 양 방향이 뻥 뚤린 파이프 모양을 띄.. 2024. 3. 20.
[자료구조 with Python] 15. 선형 자료 구조 - Stack 또 순서가 어그러졌다. 원래 힙 정렬(Heap Sort)에 대해 포스팅을 작성하려했는데, 힙 정렬 포스팅을 하려니 Heap이 발목을 잡고, Heap을 포스팅하려니 이진 트리(Binary Tree)가 발목을 잡는다. 물론 바로 힙 정렬 내용을 포스팅하고 추후 링크로 연관된 내용에 대한 포스팅을 연결해도 되지만, 그래도 직접 코드도 작성해보지 않고 포스팅하기에는 틀린 내용도 있을까봐 자신도 없고 해서 테스트 후에 천천히 작성을 하려 한다. 조금 시간도 벌 겸, 필자가 이전 회사 업무 중에 많이 사용했던 Stack과 Queue에 대해서 조금 다루어볼까 한다. 먼저 이번 포스팅은 Stack 부터. ** Java의 Stack과 Queue는 이 포스팅을 참고하자 1. Stack 개요 맨날 숫자 줄 세우기 놀이만 하.. 2024. 3. 19.
[자료구조 with Python] 14. 정렬 알고리즘(7), 쉘 정렬(Shell Sort) 사실, 오늘 포스팅으로 다룰 쉘 정렬은 지난 포스팅에서 언급한 퀵 정렬 이전, 그러니까 삽입 정렬 바로 이후에 다루어야 했던 포스팅이다. 그럼에도 불구하고 지금에서야 쉘 정렬(Shell Sort)에 대해 이제야 다루게 된 것은... 엊그제 무렵 쉘 정렬에 대해 알게 되어서다... (포스팅 구성 다 꼬이네..) 1. 쉘 정렬(Shell Sort) 개요 쉘 정렬은 삽입 정렬과 연관이 있다고 필자가 위에서 힌트처럼 언급을 했으니, 다시 삽입 정렬을 살펴보자. 삽입 정렬은 좌측 또는 우측 끝단에 위치한 원소를 제외한 나머지 원소 중 하나를 선택한 뒤, 극값과의 크기 비교를 통해 자리 교체를 진행하는 정렬 방식이다. 그런데 원소의 교대 방식이 버블 정렬과 상당히 유사하기 때문에, 특수한 상태의 배열 정렬를 진행함.. 2024. 3. 18.
[자료구조 with Python] 13. 정렬 알고리즘(6), 퀵 정렬(Quick Sort) 선형 자료 구조 내에 저장된 데이터를 빠르게 정렬하는 방법의 두 번 째 포스팅이다. 지난 번에는 병합 정렬 과정을 구현하고 실행함으로써 중첩 Loop 문으로 진행하는 정렬 알고리즘보다 빠른 정렬이 가능함을 알아보았다. 이번에는 퀵 정렬(Quick Sort)이라고 하는, 이름만 들어도 무진장 빠를 듯한 정렬에 대한 내용이다. 1. 퀵 정렬 (Quick Sort) 퀵 정렬은 의외로 개념은 단순하다(구현은 생각보다 머리가 아프다). 먼저 배열 내 가운데에 위치한 값을 하나 지정한다. 이 값을 Pivot - 농구를 하셨던 분들이라면 익숙할 - 이라고 하는데, 말 그대로 배열 내 원소를 교대하는 일종의 축 또는 기준점을 말한다. 8, 4, 2, 5, 1, 3, 7 -> Pivot으로 배열 한 가운데에 위치한 5를.. 2024. 3. 15.
[자료구조 with Python] 12 - 정렬 알고리즘(5), 병합 정렬(Merge Sort) 선형 자료의 정렬과 관련된 내용을 지난 4개의 포스팅을 통해 살펴보았다. 조금만 정리를 하고 넘어가자면, 각각 버블, 삽입, 선택 정렬에 대한 내용이었으며 이들은 모두 중첩된 Loop 문을 사용하기에 시간 복잡도가 BigO(N^2)으로 나타난다. 그럼, 이런 의문이 들 수 밖에 없다. "선형 자료를 정렬하는 더 빠른 방법은 없는 것일까요?" 왜 없을까. 머리 좋은 선구자들은 이미 자기들도 문제를 인지하고 머리 싸맸던 역사가 있다. 선형 정렬을 빠르게 할 수 있는 방법으로는 병합 정렬, 퀵 정렬, 쉘 정렬 등이 있는데, 그 중에 오늘은 병합 정렬(Merge Sort)라고 불리는 알고리즘에 대해 정리하려한다. 1. 병합 정렬(Merge Sort)의 개요 이름이 참 요상하다. 분명 정렬해야하는 배열은 하나인데.. 2024. 3. 13.
[자료구조 with Python] 11 - 정렬 알고리즘(4), 선택 정렬(Selection Sort) 이번 포스팅은 정렬 알고리즘의 하나인 선택 정렬(Selection Sort)에 대한 내용이다. 지난 포스팅에서 살펴본 삽입 정렬과 매우 유사한 형태로 동작하는 코드이나, 처음 코드를 구현하는 단계라면 삽입 정렬보다 오히려 쉽다(삽입 정렬은 필자가 빠가라 이해를 잘못한 거고..). 바로 시작해보자. 1. 선택 정렬의 개요 선택 정렬은 삽입 정렬과 유사하다. 삽입 정렬처럼 원소 하나를 선택하고, 최소값을 판별하는 경우 자신의 왼쪽, 그렇지 않은 경우 자신의 오른쪽의 원소와 비교하는 것은 동일하다(오름차순을 기준으로). 다만 삽입 정렬과 큰 차이점이 있다면, 삽입 정렬은 선택하는 원소를 배열의 index 순서로 진행하나, 선택 정렬은 최소값을 선택한다는 차이점이 하나 있고, 선택한 값을 버블 정렬로 이동시키는.. 2024. 3. 12.
[자료구조 with Python] 10 - 정렬 알고리즘(3), 삽입 정렬(Insertion Sort) 최근 필자가 정렬과 관련된 알고리즘을 개요정도만 익히고 Python으로 직접 코드를 구현해보는 일이 몰두하고 있다. IT 기술 분야는 백 번 듣는 것 보다는 한 번 보는게 낫고, 백 번 보는 것보다는 한 번 해 보는것이 낫다는 것을 이미 일을 해 오면서 느껴왔었기 때문이다. 물론, 고생은 조금 많이 하고 있다. 아무래도 컴퓨터를 전공한 사람이 아니라 야매(?)로 개발을 시작했다보니, 컴퓨터처럼 논리를 만드는 일에 있에서는 확실히 버벅일 수 밖에 없다. 이번 포스팅에서는 자료를 정렬하는 알고리즘 중 하나인 삽입 정렬(Insertion Sorting)에 대해 알아보려한다. 다른 기본 알고리즘은 몇몇 빼고 구현이 크게 어렵지 않았는데, 삽입 정렬은 필자가 논리를 영 이상하게 세워버리는 바람이 그 논리 회로 뜯.. 2024. 3. 11.
[자료구조 with Python] 9. 정렬 알고리즘(2) - 버블 정렬과 Shaker 정렬 지난 포스팅에서 구현한 버블 정렬 코드로 데이터를 돌려본 결과, 일부 배열을 정렬할 때, 버블 정렬 Loop가 완전히 종료되지 않았음에도 이미 배열 정렬이 완료된 케이스에 대해 마지막에 소개를 잠깐 했었다. 버블 정렬을 위해 Loop를 도는 와중에 정렬이 완료되어버리면, 사실 그 이후에는 배열을 돌면서 비교를 하는 행위가 무의미해진다. 즉, 컴퓨터한테 쓸데없는 일을 시키는 것이다. 그럼, 어느정도 정렬이 된 배열을 조금 더 빠르게 수행하도록 만들 방법은 없을까? 이번 포스팅에서는 일반 버블 정렬의 개선 방안과 쉐이커 버블 정렬에 대해 알아보려 한다. 1. 일반 버블 정렬의 개선 방안 일반 버블 정렬의 코드를 보자. 잘 보면 while 조건문은 무조건 비교해야하는 배열의 크기가 2가 될 때까지 버블 정렬을.. 2024. 3. 8.
728x90
반응형