분류 전체보기
-
[한글] 이미지 파일 용량 줄이기유틸리티/문서 작업 2023. 12. 14. 11:41
한글 파일 용량 줄이기: 이미지 압축 많은 조직에서는 K-에듀파인이나 KROUS, 문서 24와 같은 공문 시스템을 통해 문서를 주고받는다. 그런데 첨부파일 용량 제한이 10MB로 제한되어 있어, 공문을 작성할 때 대용량의 한글 파일을 첨부하는 것은 항상 고민거리이다. 이런 상황에서 효과적으로 한글 파일의 용량을 줄이는 방법을 알고 있다면, 원활한 업무처리가 가능하다. 보통 대부분의 게시글에서는 알집이나, 반디집으로 압축하는 방법을 알려주거나 pdf 파일로 변환하여 첨부하라거나 하는 등의 방식을 알려준다. 하지만 요즘은 고화질의 이미지가 보편화되면서 해당 파일을 첨부한 한글 파일이 커지는 현상이 일어나므로 위의 방법으로는 근본적인 문제를 해결할 수 없다. 본 포스팅에서는 한글 파일에 첨부된 이미지 파일의 ..
-
[Ubuntu, Docker] Docker 설치하기백엔드/Linux(Ubuntu) 2023. 12. 13. 15:01
Docker 도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 패키징하고 배포하는 데 사용한다. 컨테이너는 애플리케이션과 그 의존성을 컨테이너에 패키징하여 이식성이 뛰어나며 환경 간에 일관성 있는 실행을 제공한다. 도커는 이러한 컨테이너 기술을 쉽게 사용할 수 있도록 도와주는 도구와 플랫폼을 일컽는다. ※ 본 게시글은 Ubuntu 22.04 LTS 버전을 기준으로 작성되었습니다. 1. 이전 버전 및 비공식 버전 제거하기 Docker 엔진을 설치하기 전에 충돌하는 패키지를 모두 제거해야 한다. APT에서 비공식 Docker 패키지를 배포하는데, 이러한 패키지를 제거해야만 공식 버전의 Docker Engine을 설치할 수 있다. for pkg in docker.io docker-doc do..
-
[HustOJ] 한국어로 설정하기유틸리티/HustOJ 2023. 12. 13. 10:49
현재 HustOJ를 설치하면 /home/judge/src/web/include/db_info.inc.php의 $OJ_LANG와 HTTP_ACCEPT_LANGUAGE 헤더를 바탕으로 언어를 자동으로 설정해준다. 또한, 기본적으로 syzoj라는 템플릿을 사용하여 사이트를 구성한다. 하지만, syzoj 템플릿은 중국인이 개발하여 배포하는 만큼 일부분 한글화가 부족하여 중국어나 영어가 섞여있다. 이와 같은 불편함을 해결하고자 수정한 템플릿을 원본 License인 GPL3에 따라 템플릿을 배포한다. https://github.com/syudal/SYZOJ-Kor GitHub - syudal/SYZOJ-Kor: Korean version of the HustOJ SYZOJ theme. Korean version o..
-
[C#] 생산자 소비자 문제에 사용 가능한 Concurrent Class 사용하기프로그래밍/C# + Unity 2023. 12. 12. 09:11
생산자-소비자 문제 생산자-소비자 문제(Producer-Consumer Problem)는 컴퓨터 과학에서 다중 스레드 또는 프로세스 간 협력 및 동기화에 관련된 전형적인 문제 중 하나이다. 여기서 생산자(Producer)는 공유 자원(버퍼나 큐 등)에 데이터를 생성하고 삽입하는 작업을 수행하고, 소비자(Consumer)는 공유 자원에서 데이터를 제거하고 소비하는 작업을 수행한다. 이때 발생할 수 있는 문제들은 크게 4가지로 분류한다. 동시성(Concurrency): 여러 생산자와 소비자가 동시에 실행될 수 있으므로, 공유 자원에 대한 안전한 액세스 보장 순서 보장(Ordering): 생산자가 데이터를 생성하고 삽입하는 순서와 소비자가 데이터를 제거하고 소비하는 순서 일치 공유 자원 보호: 여러 스레드 또..
-
[C#] DLLImport로 외부 DLL 함수 호출하기프로그래밍/C# + Unity 2023. 12. 11. 11:39
DLLImport DllImport는 P/Invoke(플랫폼호출) 방법 중 하나로 C#에서 .NET 외의 코드나 라이브러리, 특히 C나 C++로 작성된 코드를 호출할 때 사용한다. 이를 사용하여 C# 코드에서 외부 DLL 함수를 호출한다. 소스 코드 아래는 DllImport를 사용하는 기본적인 예제로 kernel32.dll에 있는 MessageBox 함수를 호출한다. using System; using System.Runtime.InteropServices; class Program { // kernel32.dll에 있는 MessageBox 함수 선언 [DllImport("kernel32.dll", SetLastError = true)] public static extern int MessageBox(I..
-
[Ubuntu, Nginx] PHPMyAdmin 설치하기백엔드/Linux(Ubuntu) 2023. 12. 5. 10:16
PHPMyAdmin ? php로 작성된 PHPMyAdmin은 MySQL 데이터베이스를 관리하기 위한 웹 기반의 오픈 소스 관리도구이다. 웹 브라우저를 통해 MySQL 데이터베이스에 접속하여 데이터베이스를 관리, 조작하는 등 데이터베이스 안의 테이블을 만들고 수정하고, 데이터를 삽입, 수정, 삭제할 수 있다. ※ 본 게시글은 Ubuntu 22.04 LTS 버전을 기준으로 작성되었습니다. 1. php 설치 및 연동하기 https://syudal.tistory.com/entry/Ubuntu-Nginx-PHP-연동하기 [Ubuntu, Nginx] PHP 연동하기 Nginx와 PHP를 연동하기 위해서는 FastCGI를 사용한다. Nginx는 PHP를 직접 지원하지 않으므로, PHP를 먼저 설치해야한다. 이때 설치..
-
[C#] 비동기 이벤트 기반 소켓 서버 구현하기프로그래밍/C# + Unity 2023. 12. 4. 13:03
서버의 종류 서버를 구현하는 방식에는 크게 단일 스레드 기반 서버와 다중 스레드 기반 서버로 나뉜다. 다중 스레드 기반 서버의 경우, 각각의 스레드가 연결을 담당하여 통신하므로 이해가 쉽다. 하지만, 단일 스레드인데 어떻게 여러 클라이언트의 접속을 해결하느냐는 의문이 든다. Node.js의 libuv 구현체의 Event Loop를 사용하여 구현한 서버를 보면 이해할 수 있다. C#의 SocketAsyncEventArgs에서도 운영체제에서 제공하는 IOCP( I/O Completion Port)와 같은 메커니즘을 ThreadPool을 사용하여 비동기 작업을 처리한다. 소스 코드 아래는 SocketAsyncEventArgs를 사용하여 비동기 이벤트 기반의 에코 서버를 구현하는 코드이다. using Syste..
-
[C#] 콜백 함수프로그래밍/C# + Unity 2023. 12. 1. 09:09
콜백 함수 ? 콜백 함수(callback function)는 프로그래밍에서 특정 이벤트가 발생했을 때 호출되는 함수를 가리킨다. 콜백 함수는 다른 함수나 컴포넌트에 의해 호출되는 함수로서, 보통 이벤트 핸들러로 비동기적인 프로그래밍이나 이벤트 기반 프로그래밍에서 자주 사용된다. 이벤트 처리(Event Handling): 사용자가 버튼을 클릭하거나 다른 이벤트가 발생했을 때 특정 작업 수행 비동기 작업(Asynchronous Operations): 비동기 작업이 완료되었을 때 실행되는 함수를 콜백으로 등록하여 작업이 끝날 때까지 대기하지 않고 다른 작업 수행 타이머 및 인터벌(Timeouts and Intervals): 특정 시간 간격으로 실행되는 작업 수행 C#에서 콜백 함수는 델리게이트(delegate..