본문 바로가기

전체 글617

728x90
반응형
[CentOS 7/8] MariaDB 인코딩 설정하기 MariaDB에서 기본적으로 사용할 인코딩을 지정해야 자동으로 무언가를 할 때든 협업할 때든 간에 일이 수월하게 풀린다. CentOS 7에 설치한 MariaDB의 인코딩을 바꾸는 방법은 다음과 같다. 1. MariaDB 설정 파일 열기 vi /etc/my.cnf.d/server.cnf 2. MariaDB 설정 파일 수정 적당한 곳에 인코딩 설정을 입력한다. 필자의 경우 UTF-8로 지정하기 위해 아래처럼 입력했다. character_set_server = utf8 이모지 활용을 위해 utf8mb4로 인코딩을 지정하고 싶다면 아래처럼 입력하면 된다. character_set_server = utf8mb4 2021. 3. 28.
[CentOS 7/8] 시스템 시간을 한국 시간으로 변경하기 CentOS를 설치할 때 별도 시간 설정 없이 진행하면 아래와 같이 한국 시간이 17시 53분이지만 뉴욕 시간으로 나타나서 로그 파일을 볼 때 상당히 불편하다. 아래와 같은 명령어로 서울 시간으로 시스템 시간을 변경하면 한국 시간으로 로그파일이 잘 나타나는 것을 확인할 수 있다. sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime 2021. 3. 27.
Typora에서 작성한 내용을 HTML로 변환하기 Typora에서 작성한 내용은 기본적으로 '*.md' 파일로 저장된다. 마크다운이라는 의미를 가진 확장자 '.md'로 저장되는 것인데 필요에 따라서는 다른 파일 형식으로 변환하여 사용할 필요가 있다. 이번 글에서는 HTML로 변환하는 것을 소개하고자 한다. Typora에서 '파일'-'내보내기'-'HTML'을 클릭하면 HTML로 변환하여 저장할 수 있다. 적당한 파일명을 입력하고 '저장'을 누른후 웹브라우저에서 생성된 파일을 실행하면 아래와 같이 화면이 나타난다. Gitbook 테마를 활용한 것이라 Gitbook 스타일로 HTML이 생성되었다. 2021. 3. 22.
Typora에 Gitbook 테마를 적용하기 Typora의 Gitbook 테마 취향에 맞는 디자인으로 마크다운 에디터 Typora를 쓰고 싶다면 테마를 바꾸는 방법이 있다. Typora에 Gitbook 테마를 적용하여 Gitbook 느낌이 나도록 할 수 있는데 방법은 다음과 같다. Typora의 Gitbook 테마 설치 Typora Gitbook 테마를 Github 저장소에 가서 다운로드 한다. Typora Gitbook 테마 주소 : https://github.com/16soundsofsilence/typora-gitbook-theme/releases/ Gitbook 테마 파일이 잘 다운로드 됬는지 확인하고 Typora 테마 폴더를 확인하기 위해 Typora로 이동한다. 'Typora 환경설정'-'모양'-'테마 폴더 열기'를 클릭하여 테마 폴더를.. 2021. 3. 22.
전자책 작성에 유용한 도구 Typora 소개 및 설치 전자책을 작성하는 방법은 다양하게 있다. 나는 전자책으로 발행하기 전에 각 장들을 온라인으로 게시하고 배포하여 여러 피드백을 받아보고자 한다. Github Pages에 전자책으로 쓸 초안을 나누어 HTML 문서로 업로드하여 내용을 공유하고 피드백을 받아가면서 온라인에서 수정과 배포가 지속적으로 일어나도록 한다음 몇 개월의 시간이 지나면 전자책을 발행하고자 한다. 저자가 나만 있는게 아니라 여러명이 있기에 아무래도 같은 에디터를 사용하여 최대한 비슷한 형식으로 글을 작성하는 것이 필요하기에 마크다운 에디터인 Typora를 사용하려고 한다. Typora는 무료로 사용할 수 있으며 윈도우와 리눅스, Mac OS X에서 동작한다. Typora 홈페이지 주소 : typora.io 다운로드 페이지로 이동하여 자신의.. 2021. 3. 22.
[버추얼박스] Failed to load unit 'lsilogicscsi'(VERR_SSM_LOADED_TOO_LITTLE) 해결법 버추얼박스(VirtualBox)를 사용하다보면 원하지 않았는 타이밍에 가상머신이 종료되는 경우가 있다. 이 경우 시작할 때 오류가 발생할 수 있는데 나의 경우 bitnami-gitlab 이미지를 테스트하던 중에 데스크톱 전원이 나가버려서 발생하게 되었다. 오류 메시지가 "Failed to load unit 'lsilogicscsi'(VERR_SSM_LOADED_TOO_LITTLE)" 이렇게 나온다. 이 경우 이미지를 오른쪽 클릭하여 '저장된 상태 삭제'를 눌러서 시작되지 않는 상태를 지운다. 상태를 지우면 정상적으로 잘 실행되는 화면을 확인할 수 있다. 2021. 3. 22.
라이믹스(XE1)에서 XEICON 오류가 발생할 때 대처법 최신 라이믹스(XE1)에서 SweetMobileBoard 스킨을 쓰려고 하면 아이콘이 나타나야할 부분에 네모박스들만 엄청나오는 오류가 발생한다. 이 네모박스는 XEICON이라는 폰트를 인식하지 못 해서 데이터들이 그저 네모로 나오는 것인데 이를 해결하기 위해서는 해당 스킨의 XEICON에 특정 코드를 추가하면 된다. 라이믹스(XE1) 공통 영역에 있는 XEICON의 스타일시트를 읽어오는 코드를 스킨의 header에 넣으면 해결된다. SweetMobileBoard의 경우는 '/modules/board/m.skins/sweetMobileBoard/_header.html'에 넣으면 된다. 정작 적용해보니 SweetMobileBoard의 경우 1.0.2 버전의 XEICON을 쓰고 있는데 최신의 라이믹스는 2.x.. 2021. 2. 21.
라이믹스(XE1) 글 공유시 페이스북(오픈그래프) 이미지 나오는 기능 분석 라이믹스(XE1)에는 SEO(Search Engine Optimization) 모듈이 기본적으로 탑재되어 있으며 이 모듈에서 오픈그래프 기능을 화성화하면 SNS에서 공유할 때 글과 글 이미지가 잘 정리되어서 나온다. 하지만 나의 경우 최근에 분명히 글에 이미지 파일이 있는데 오픈그래프 이미지로 나오지 않아서 어떤 식으로 동작하는지를 분석할 필요가 있었다. 오픈그래프 기능은 라이믹스의 경우 "/classes/display/HTMLDisplayHandler.php"에 545번줄에 구현되어 있다. 여기를 보면 글 내용에 이미지가 있는 경우와 이미지가 없는 경우를 구분하여 오픈그래프의 이미지 태그(og:image)가 생성이 되는데 글 본문에 이미지가 있음에도 이미지가 없다고 인식되는 경우였기에 "$documen.. 2021. 2. 13.
스프링 모바일을 추가하여 모바일 장치를 인식하자 스프링 프레임워크에서 모바일 장치를 인식하는 방법은 여러가지가 있겠지만 그 중 스프링 모바일을 가져와서 코드 몇줄만으로 장치를 인식하는 방법을 소개하려고 한다. 현재 기준으로 스프링 모바일은 2.0.0.M3가 안정적인 배포 버전이다. 메이븐으로 스프링 모바일을 프로젝트에 추가하는 방법은 아래와 같다. spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false 메이븐 저장소를 위의 코드처럼 추가한다. org.springframework.mobile spring-mobile-device 2.0.0.M3 그리고 스프링 모바일 라이브러리를 위의 코드처럼 추가한다. 그 후 스프링 모바일 인터셉터를 위의 코드처럼 서블릿 설정파일에 .. 2021. 2. 12.
라이믹스(XE1) 문서 조회수 설정 라이믹스(XE1)에서는 게시글의 조회수를 집계하는 방식을 수정할 수 있다. 운영하는 사이트의 정책에 따라 같은 사용자가 여러번 봐도 모두 조회수로 인정하는 것이 필요할 수가 있고 한 사용자는 최대 1개의 조회수만 올릴 수 있다는 정책을 적용하고 싶을 수 있다. 그 경우 '라이믹스 관리자 대시보드' - '콘텐츠' - '문서' - '기본 설정' - '조회 수 설정'에 가면 설정하는 것이 있다. 조회수 설정 화면으로 이동하면 아래의 사진 처럼 '모두 계산', '일부 계산', '중복 금지', '계산 안 함'을 설정할 수 있다. '모두 계산'은 게시글을 본 만큼 조회수를 증가시키는 것이며 '일부 계산'은 로그인 하지 않는 사용자라도 사이트에 접속(새로운 세션)한 다음 봤으면 최대 1번까지 인정해주는 것이고 '중복.. 2021. 2. 7.
구글 블로거 API의 글 등록은 사용량에 제한이 있다. 이전에 구글 블로거 API를 사용하는 방법을 소개하는 글을 썼었다. 그 중에 구글 클라우드 플랫폼 내의 API 사용량 자체는 제한이 없는데 구글 블로거 서비스에서 제한을 두고 있는 것을 찾았기에 기록하려고 글을 쓴다. 구글 블로거 API로 글을 등록하는 경우 하루에 글 등록이 최대 100개로 제한이 된다. 100개를 초과해서 글을 등록하려고 하면 다음과 같은 오류 메시지가 나타난다. "We're sorry, but one or more limits for the requested action have been exceeded. [403]" 403이라는 숫자는 HTTP에서 일반적으로 권한이 없음을 나타내는데 메시지 내용을 보아하니 요청한 액션을 수행할 수 있는 횟수를 초과한 것으로 나온다. 혹시나 싶어서 .. 2021. 1. 14.
[CentOS 8] 워드프레스를 설치할 때 주의점 워드프레스를 설치하여 몇 가지를 테스트해보려고 했는데 설치화면에서 오류가 발생하여 설치를 한참 진행하지 못 했다. 설치화면에서 오류가 나면 무슨 오류가 났는지를 알려주지 않기 때문에 고생했었는데 필자의 경우 해결방법이 다음과 같았다. php7.2.x 기준으로 워드프레스를 설치하는 중에 다음과 같은 오류가 발생하면 다음의 패키지를 설치하면 해결될 것이다. 워드프레스 설치 주소 : "http://도메인명/wp-admin/install.php" "There has been a critical error on this website."라고 오류메시지가 발생하면 워드프레스가 의존하는 php 패키지를 추가설치해줄 필요가 있다. 나의 경우 "php-json" 패키지가 없었다. 1. php-json 패키지 설치 yum.. 2021. 1. 10.
[CentOS 7/8] 아파치 웹서버(httpd)와 PHP를 설치하자 CentOS 8에 아파치(Apache) 웹서버(HTTPD)와 PHP를 설치해서 테스트할 것이 생겼다. 그래서 각종 자료를 열람하여 설치를 했는데 시행착오를 좀 겪어서 필자가 사용하기 좋게 정리를 하였다. 1. 의존성 라이브러리 패키지 설치 아래의 명령어를 입력하여 선행 설치 파일을 설치한다. yum install -y libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel 2. 아파치 웹서버(httpd) 설치 아래의 명령어로 아파치 웹서버를 설치한다. yum install -y httpd* 아래의 명령어로 설치한 아파치 웹서버가 잘 설치되었는지 확인한다. httpd -v 3. PHP 설치 아래의 명령어로 PHP 패키지를 설치한다. .. 2021. 1. 7.
[CentOS 7/8] MariaDB 설치하기 MariaDB 를 사용하는 이유 MariaDB는 무료로 사용할 수 있는 강력한 DBMS(DataBase Management System)이다. 나의 경우 취미생활로 즐겨사용한다. 하지만 업무를 할 때는 오라클의 데이터베이스 또는 티맥스의 티베로를 사용하고 있다. 아무래도 한국에서 기술지원 받기가 용이하고 대규모 처리능력이 검증된 것이기도 하며 데이터베이스를 선정하는 분이 오라클이나 티베로를 보통 선택하기 때문이다. 그럼에도 불구하고 MariaDB는 메뉴얼 등을 확인할 수 있는 생태계가 잘 형성되어 있고 무료로 제공되는 엔터프라이즈급 기능들이 있기에 많은 인기가 있는 제품이고 그렇기에 나도 즐겨사용한다. 이 MariaDB를 설치하는 방법은 다음과 같다. 1. MariaDB 저장소 추가 vi /etc/yum.. 2021. 1. 7.
ExpressVPN 환경에서 넷플릭스를 보는 것이 가능할까? 넷플릭스에서 시청이 제한된 콘텐츠를 보기 위해서는 VPN을 활용하여 우회하는 것이 필요하다. 하지만 VPN을 사용하는 경우 통신 속도가 많이 느려지는 문제가 있는데 이로 인해서 원하는 화질로 시청을 못할 수도 있다. 넷플릭스는 최강 OTT(Over The Top) 서비스 답게 해상도 대비 매우 적은 대역폭(인터넷 연결 속도)를 요구한다. 우리가 흔히 보는 720p 또는 1080p를 위해서는 5Mbps의 회선 대역폭이 필요하다. 필자는 한국에 있으며 ExpressVPN의 속도 실험 결과 여러 VPN 서버 위치에서 HD 영상 시청을 위한 대역폭인 5Mbps 이상을 제공하는 것을 확인할 수 있었다. ExpressVPN의 경우 널리 사용되고 있는 VPN 서비스이고 안정성이 검증되었으며 저녁에 사람들이 많을 때 .. 2021. 1. 4.
[C#] HttpClient로 이미지를 받아서 저장하기 HttpClient로 이미지를 받아서 저장하는 코드를 기록용으로 남겨둔다. 예제의 소스는 이해를 돕기 위해 주제와 관련된 기능 외에는 사용하지 않았다. using System.Net.Http; namespace Program { class Program { static async System.Threading.Tasks.Task Main(string[] args) { HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("https://www.google.com/logos/doodles/2021/new-years-day-2021-6753651837108820-law.gif"); byte[] res.. 2021. 1. 1.
[C#] 셀레니움에서 Timeout 또는 OutOfMemory가 발생하는 문제 C#에서 셀레니움을 활용하여 크롬 웹브라우저를 제어하고 있으면 몇시간 후에 크롬 웹브라우저로부터 응답이 없다고 Timeout 오류가 발생하거나 OutOfMemory에러가 발생하여 제어불능에 빠지는 상황이 발생한다. OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://localhost:65320/session/2c1547c846178882ccf6af559244ec4e/url timed out after 60 seconds. ---> System.Net.WebException: The operation has timed out. at System.Net.HttpWebRequest.Ge.. 2020. 12. 28.
[자바스크립트] img 태그의 데이터를 base64로 인코딩 하자 HTML의 img 태그의 src에 파일 경로가 아닌 데이터를 직접 넣어도 브라우저가 인식하는 시대가 왔다. 데이터를 넣을 때는 base64로 파일 데이터를 인코딩해서 넣으면 되고 다음과 같이 표현이 가능하다. BASE64로 인코딩된 img 태그 예시 위의 img 태그를 넣으면 아래와 같은 그림이 표현된다. 자바스크립트에서 기존의 이미지 파일을 base64로 인코딩하는 방법은 2가지가 있다. 하나는 HTML5 CANVAS를 이용하여 변환하는 것이고 또 다른 하나는 자바스크립트의 File API인 FileReader를 이용하여 변환하는 방법이 있다. HTML5 CANVAS를 이용하는 방법 CANVAS를 생성하고 이 CANVAS의 가로와 세로의 크기를 설정하고 그릴 것을 2D로 지정한다음 BASE64로 변호나.. 2020. 12. 27.
[C#] 셀레니움(Selenium)으로 크롬(Chrome)을 제어하자 #에서 브라우저를 제어하여 특정 정보를 읽어와야하는 경우가 있다 이 경우 셀레니움(Selenium)을 통해 브라우저를 제어할 수 있는 방법이 있다. 이번 포스트에서는 셀레니움으로 크롬(Chrome) 브라우저를 제어하는 예제를 소개하려고 한다. 매번 C# 관련 포스트에서 그러하듯이 우리의 친구 NuGet 패키지 관리자를 실행하여 셀레니움 관련 라이브러리를 설치하도록 하겠다. Visual Studio 2019 상단의 '도구'-'NuGet 패키지 관리자'-'솔루션용 NuGet 패키지 관리...'를 클릭하여 NuGet 패키지 관리자를 실행한다. Selenium을 입력하여 Selenium.WebDriver를 선택한 후 설치한다. 설치를 진행하기 위하여 변경될 내용을 미리 보여주는데 확인하고 '확인'을 누른다. 셀.. 2020. 12. 25.
[C#] 구글 블로거 API로 글 등록하는 법 한국을 소개하는 영어 블로그를 운영하려고 하는데 글을 편하게 쓰기 위하여 구글 블로거 API로 글을 등록하는 예제 프로그램을 작성해보았다. 글 등록 예제 소스코드 using System; using System.IO; using Google.Apis.Blogger.v3.Data; using Google.Apis.Blogger.v3; using Google.Apis.Auth.OAuth2; using Google.Apis.Util.Store; using Google.Apis.Services; using System.Threading; using System.Threading.Tasks; namespace InsertPost { class InsertPost { static void Main(string[] .. 2020. 12. 23.