Skip to main content

로컬 웹서버 돌리기 - 1. Apache 설치

· 2 min read

APM_setup 은 좋은 선택이지만, PHP 버전업에 있어서 충돌이 너무 심하고 Nginx 도 좋은 선택이지만 나중에 정리하기로 하자.

아파치 다운로드

여기에서 운영체제에 맞는 버전을 다운로드 한다. image from hexo VC14, VC11 은 PHP 버전과도 관련있으니 다운받으면서 확인해 놓는다. 압축을 풀면 Apache24 폴더가 생기는데 이 폴더를 원하는 경로로 옮겨준다. (D:\Apache24)

경로 변경

C:\Apache24 에 압축을 풀었다면 #httpd-서비스-등록으로 넘어가자

Apache24/conf/httpd.conf를 열어 경로를 변경한다. image from hexo 초기 설치 상태에서 C:\로 검색시 4 개정도 찾아지는데 모두 변경해주면 된다.

httpd 서비스 등록

cmd 를 관리자 권한으로 실행 후 아래 명령어를 입력해준다.

  • Windows10 : 시작메뉴 우클릭 > 명령 프롬프트(관리자) 메뉴
  • Windows7 : 시작메뉴 > 모든 프로그램 > 보조 프로그램 > 명령 프롬프트 우클릭 > 관리자 권한으로 실행
httpd.exe -k install

image from hexo

httpd 구동

Apache24\bin\ApacheMonitor.exe 실행한 뒤 작업표시줄에서 Apache 아이콘 클릭 후 서비스를 시작한다. image from hexo

localhost 접근

image from hexo 👏👏👏 다음 장에서는 PHP 를 설치해 Apache 와 연동을 해보겠습니다.

sublime text custom shortcut

· 2 min read

서브라임 텍스트에서 단축키를 수정해보자.

설정

Preferences > Key Bindings 메뉴를 들어간다. Default 와 User 로 나눠진 창에서 User 창에 내 단축키를 등록하면 된다.

단축키

다른 환경과 호환되는 사용하기 편한 단축키

[
// ctrl+d 로 줄삭제
{
keys: ["ctrl+d"],
command: "run_macro_file",
args: { file: "res://Packages/Default/Delete Line.sublime-macro" },
},
// 기존 ctrl+d의 기능을 옮김
{ keys: ["ctrl+shift+k"], command: "find_under_expand" },
{ keys: ["ctrl+k", "ctrl+shift+k"], command: "find_under_expand_skip" },
// 들여쓰기 활성화
{ keys: ["f12"], command: "reindent", args: { single_line: false } },
// 파일 새로고침
{ keys: ["f5"], command: "revert" },
// f1키 누를시 package controller 띄우기 (기존 ctrl+shift+p 기능)
{
keys: ["f1"],
command: "show_overlay",
args: { overlay: "command_palette" },
},
// terminal package가 있을시 현재 프로젝트 터미널 띄우기
{ keys: ["ctrl+alt+t"], command: "open_terminal_project_folder" },
// sidebarEnhancement package가 있을시 파일명 변경
{ keys: ["f2"], command: "side_bar_rename" },
// sidebarEnhancement package가 있을시 새 파일 생성
{ keys: ["ctrl+n"], command: "side_bar_new_file2" },
];

Redmine Bitnami 플러그인 설치

· One min read

빛나미로 설치된 레드마인에 플러그인을 추가해보자

플러그인 폴더 이동

root 권한으로 접근해야한다.

cd /opt/redmine/apps/redmine/htdocs/plugins

플러그인 설치

git clone 플러그인

레드마인 쉘 접속

cd /opt/redmine
./use_redmine

레드마인 번들 업데이트

번들은 플러그인이라고 생각하면 된다.

cd apps/redmine/htdocs
rake redmine:plugins:migrate RAILS_ENV=production

rake 명령어가 실행이 안될시

bundle install --without development test
rake redmine:plugins:migrate RAILS_ENV=production

레드마인 재시작

exit
cd /opt/redmine
./ctlscript.sh restart

이제 레드마인 관리자에서 플러그인을 관리할 수 있다.

sublime text Recommanded Packages

· 2 min read

서브라임 텍스트 사용시 쓸만한 패키지를 모아봤다.

패키지

NameDescription
additional PHP SnippetsPHP 자동완성
All Autocomplete열려있는 모든 문서의 구문을 가져와 자동완성
Auto RefreshN초마다 자동 파일갱신
AutoFileName파일경로 입력시 자동으로 목록을 보여줌
BracketHighlighter괄호 하이라이터
Color HighlighterHEX 및 색상 하이라이터
ConvertToUTF8UTF8 환경 사용가능
DocBlockr괄호 자동생성
EJS2ejs 사용 가능
GitGit 사용 가능
IMESupport한글 및 기타 문자 사용가능
JavaScript & NodeJS Snippetsjs 및 node 자동완성
Javascript Beautify압축된 js의 아름답게
Javascript Completionsjs 자동완성
Javascript PatternsES5이하에서 최적화된 js패턴 사용
JSHint Gutterjs hint를 gutter 아이콘으로 표시
LESSless 사용 가능
MarkdownEditingmarkdown 사용 가능
Material Theme메테리얼 테마
SFTPftp 사용 가능
SideBarEnhancements기본 우클릭메뉴 강화
SublimeCodeIntelHTML 구문 자동완성
SublimeLinter문법 체크
SublimeLinter-jshintjs 문법체크
SublimeLinter-phpphp 문법체크
SublimeLinter-xmllintxml 문법체크
SyncedSideBar파일 선택시 사이드바의 폴더가 자동으로 열림
Terminal터미널
TortoiseSVNSVN 사용가능
TrailingSpaces빈공간 제거
TypeScriptts 사용 가능
UMD snippetsUMD 모듈패턴 자동완성

진하게 표시가 된 패키지들은 필수로 설치하는걸 추천한다.

Windows10 업데이트 후 80포트를 사용할 수 없을 때

· One min read

Windows10 Anniversary 업데이트 후에 갑자기 80 포트 또는 Apache 서비스를 사용할 수 없는 경우가 있다.

원인

WWW Publishing service 가 80 포트를 사용해서 충돌이 발생했다.

해결

services.msc 를 실행해 *WWW Publishing 서비스사용안함으로 체크한 뒤 재부팅해주면 된다. (로컬 웹을 돌릴 정도면 서비스창을 띄울 수 있을 것이라 믿는다) image from hexo

Windows10 Anniversary 업데이트 후 작업표시줄 폰트가 검게 보일 때

· One min read

Anniversary 업데이트 후 작업표시줄(taskbar)의 글꼴이 회색? 검정색? 이 되어 보이지가 않는 경우가 있다. image from hexo 이 부분과 날짜 표시 부분이 검게 변한다. 프로그램 제목이 안보이면 여간 불편한게 아니니 직접 변경해보자.

원인

업데이트시 theme 파일이 충돌되었다.

해결

바탕화면 우클릭 > 개인설정 > 테마 > 테마설정에 들어간다. image from hexo

테마를 Windows 기본값 테마로 바꾼 후 내 테마들을 우클릭 해 삭제해준다. image from hexo

그리고 다시 내 테마를 커스터마이징 하면 된다!

EditPlus 테마 설정

· 2 min read

에디트 플러스를 어쩔 수 없이 써야할 상황이 있다. 바로 FTP 에 붙어서 작업해야 될 경우인데, 기본 테마가 메모장이라 아쉽다.

그럴 때 서브라임텍스트 소다테마를 적용하면 된다.

설치

다운로드

파일을 다운받는다.

EditPlus 폴더 안에 theme 폴더를 만들고 그 안에 압출을 풀어주자. image from hexo

설정

도구 > 기본설정 > 일반 > 색상 탭에서 가져오기 버튼을 클릭하고 ini 파일을 읽어들인다. image from hexo

파일 > 설정 & 구문강조 탭에 가서 PHP를 선택 후 구문파일에 다운받은 php.stx 를 등록해준다. image from hexo

이제 예쁜 에디트플러스를 즐길 수 있다.

imageTTFtext 한글 깨짐 해결

· 2 min read

텍스트를 이미지로 만드는 경우에 사용하는 imageTTFtext 함수는 한글이 깨지는 문제가 있다.

해결

imageTTFtext 전에 아래 함수로 한글을 컨버팅해준다.

<?php
/**
* @author http://php.net/manual/en/function.imagettftext.php#57416
*/
function foxy_utf8_to_nce($utf = '') {
if (empty($utf)) {
return($utf);
}

$max_count = 5; // flag-bits in $max_mark ( 1111 1000 == 5 times 1)
$max_mark = 248; // marker for a (theoretical ;-)) 5-byte-char and mask for a 4-byte-char;

$html = "";
for ($str_pos = 0; $str_pos < strlen($utf); $str_pos++) {
$old_chr = $utf{$str_pos};
$old_val = ord( $utf{$str_pos} );
$new_val = 0;

$utf8_marker = 0;

// skip non-utf-8-chars
if ( $old_val > 127 ) {
$mark = $max_mark;
for($byte_ctr = $max_count; $byte_ctr > 2; $byte_ctr--) {
// actual byte is utf-8-marker?
if( ( $old_val &; $mark ) == ( ($mark << 1) &; 255 ) ) {
$utf8_marker = $byte_ctr - 1;
break;
}
$mark = ($mark << 1) & 255;
}
}

// marker found: collect following bytes
if ($utf8_marker > 1 && isset( $utf{$str_pos + 1} ) ) {
$str_off = 0;
$new_val = $old_val &; (127 >> $utf8_marker);
for($byte_ctr = $utf8_marker; $byte_ctr > 1; $byte_ctr--) {

// check if following chars are UTF8 additional data blocks
// UTF8 and ord() > 127
if( (ord($utf{$str_pos + 1}) & 192) == 128 ) {
$new_val = $new_val << 6;
$str_off++;
// no need for Addition, bitwise OR is sufficient
// 63: more UTF8-bytes; 0011 1111
$new_val = $new_val | ( ord( $utf{$str_pos + $str_off} ) & 63 );
}
// no UTF8, but ord() > 127
// nevertheless convert first char to NCE
else {
$new_val = $old_val;
}
}
// build NCE-Code
$html .= '&#'.$new_val.';';
// Skip additional UTF-8-Bytes
$str_pos = $str_pos + $str_off;
} else {
$html .= chr($old_val);
$new_val = $old_val;
}
}
return($html);
}

여담

원작자를 못 찾겠다.. 이걸 만든 사람은 binary 로 말을 할 것 같다.