Windows Server에서 Hyper-V에 Docker를 올려서 Docker gitlab을 잘 사용하다가 gitlab의 무거움에(...) 포기하고 Bonobo Git Server로 다시 갈아탔습니다.

사실 아직 저는 학생인지라 개인적으로 개발하는게 많아 이슈 관리 따위 그다지 필요하지 않지만 그래도 있는게 없는것보단 재밌잖아요?
오늘도 시간이 없는 여러분 대신에 시간이 넘쳐나는 제가 삽을 들어보았습니다. 짞짞. 잉여인간 만세.

IIS의 웹 플렛폼 설치 관리자를 이용하면 쉽게 Redmine 2.3버전을 설치 할 수 있습니다.
3.2.0 버전도 이를 이용하면 아주 쉽게 설치 가능합니다.
그래서 오늘의 주인공은 이걸 아주 쉽게 해주는 웹 플렛폼 설치 관리자 Helicon Zoo 입니다!

자 먼저 웹 플랫폼 설치 관리자를 설치해야합니다.

https://www.microsoft.com/web/downloads/platform.aspx


링크 따라 가셔서 설치하신 후에는 Helicon Zoo를 설치해야합니다.
설치 방법은 공홈에 아주 잘 나와있네요.

http://www.helicontech.com/zoo/install.html

이 과정까지 완료하셨다면 웹 플랫폼 설치 관리자의 탭에 Zoo 가 추가되었을 겁니다.
Zoo를 클릭해서 스크롤 내리시다보면 Redmine 2.3 버전을 발견하실 수 있습니다.

구버전 쓰시려면 여기까지만 따라하셔도 상관 없습니다. 2.3 버전도 있을 기능 다 있습니다.

이제 본격적으로 시작해봅니다.

준비물 :

1. 위 작업 완료
2. SQL Server, MariaDB, MySql, etc...
3. 아래 링크에서 프로그램 다운로드 받기.

http://www.redmine.org/projects/redmine/wiki/Download
http://railsinstaller.org/en (2.00 버전 추천)

작업 시작

1. railsinstaller을 설치합니다. path는 되도록이면 Ruby200과 같이 해주세요.(C:\Ruby200) 나중에 applicationHost.config를 변경하면 되니 그냥 설치하셔도 됩니다. 뒤에 200은 버전이니 상황에 맞게 잘 변경해주세요.

P.S. 이미 Ruby를 설치하신 분들만 보시면 됩니다. 위 과정 따라오신 분은 2로 넘어가주세요.
사실 이 과정을 한다고 해서 진짜로 되는지에 대한 테스트는 해보지 않았습니다. 양해부탁드립니다.

아래 과정으로 안되면 Helicon Zoo에서 Redmine을 설치하신 후 Ruby190 폴더의 devkit폴더에서 mingw폴더를 복사하여 Ruby200에 붙여넣기, 중복된 파일은 건너띄기 해주시기 바랍니다.

http://rubyinstaller.org/downloads/

위 링크에서 자신의 Ruby 버전과 맞는 Developer kit을 다운로드 받아주신후 설치해주세요.
설치는 http://broken-radio.tistory.com/9 글의 3번 과정을 따라하시면 됩니다.

그 후 아래 링크를 클릭하셔서 iconv를 다운로드 받습니다. 아래는 mingw 32bit버전입니다. mingw64 쓰시는 분은 64비트로 받으셔야 할겁니다.

http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-3/libiconv-1.14-3-mingw32-dll.tar.lzma/download

다운로드 받은 iconv의 압축을 해제하고 나온 dll을 아래 두 폴더에 복사해줍니다.

[Ruby Devkit Path]\mingw\bin\
[Ruby Devkit Path]\mingw\libexec\gcc\mingw32\[Version]\

아래의 3번 과정을 진행하셔서 나온 커맨트 창에

gem install json -v 1.8.3
gem install tiny_tds -v 0.6.2


2. 다운로드 받은 Redmine 3.2.0을 inetpub나 Redmine을 돌릴 디렉터리에 압축을 풀어줍니다. 그 후 IIS에 사이트를 추가해줍니다.

3. 시작 - 모든 프로그램 - Ruby[Version] - Start Command Prompt with Ruby를 관리자 권한으로 실행해줍니다.

4. Redmine 압축을 해제한 폴더로 들어갑니다. 여기서는 그냥 C:\inetpub\Redmine으로 하겠습니다.

 cd C:\inetpub\Redmine
 gem install bundler
 bundle install -–without development test rmagick
 bundle exec rake generate_secret_token

명령어를 순서대로 입력해줍니다.

5. DB를 설정합니다. C:\inetpub\Redmine\config\database.yml.example을 복사 합니다.
  5.1 복사한 파일에서 .example을 지우고 notepad++과 같은 편집기를 이용해서 열어봅니다.
  5.2 exapmle을 보면서 자기에게 맞는 DB를 설정합니다. 인터넷에 Redmine DB설정 방법은 많이 있습니다.

6. rake db:migrate 명령어를 입력합니다.
  tiny_tds 문제가 발생하시는 분은 알려주세요. 아마 1번에서 PS과정을 따라하신 분은 이 에러가 발생할 수 있습니다.

7. IIS를 설정합니다.
  7.1 Ruby의 설치 경로가 C:\Ruby200이 아니신 분이나 버전이 더 높으신 분은 아래 작업을 해주세요.
       - C:\Windows\System32\inetsrv\config\applicationHost.config를 메모장이나 편집기로 열어주세요.
       - 각자 사용하고 계신 편집기의 찾기 기능으로 ruby를 검색해주세요.
       - 아래 사진의 빨간색 부분과 주황색 부분을 확인하신 후 주황색 부분을 Ruby의 인스톨 경로로 변경해주세요.


  7.2 IIS를 실행합니다.
  7.3 추가한 Redmine사이트를 누르신 후 IIS 그룹에서 Helicon Zoo 아이콘을 클릭합니다.
  7.4 상단의 New 버튼을 누릅니다. 이름은 상관 없는것 같습니다. 다른 누군가가 볼 때 이해 할 수 있는 범위에서 알아서..
  7.5 상단에 Engine을 누르신 후 7.1과정에서 변경한 name을 가진 아이를 선택하고 확인을 누릅니다.
  7.6 나머지는 사진을 참고해서 설정해주세요. 특히 빨간색 테두리는 자신의 환경에 맞게 잘 설정해주셔야합니다. GEM_HOME같은 경우에는 Ruby의 gem이 설치되는 디렉터리로 설정해주시면 됩니다.




삽질하는데 도움을 준 사이트 :

http://coreboarder.com/blog/?p=465

'Web > IIS' 카테고리의 다른 글

IIS8 에서 LetsEncrypt simple windows 문제  (0) 2017.04.16
IIS 핫링크 방지하기 (Hotlink Protection)  (0) 2014.08.04

출처: https://nas.moe/archives/126


5.2-5644.4 (23/12/2015) 이번 버전에서 바뀐 사항은 다음과 같습니다.

  • !!! Possible iSCSI issues with this build !!!
  • 이번 빌드로 iSCSI 문제가 있을 수 있음
  • Fix latest 5644 pat issue
  • 최근 5644 pat 문제 해결
  • Fix broadcom issues (add missing firmwares)
  • broadcom 칩셋 문제 해결 (빠진 펌웨어 추가)
  • Add Marvell 88SE9485 support on ASUS P9A-I boards
  • ASUS P9A-I 보드, Marvell 88SE9485 지원
  • Add USB to LAN adapter 10/100/1000 support for asix and realtek (r8152/r8153) chips
  • asix 그리고 realtek (r8152/r8153) 칩들에 대한 USB to LAN (10/100/1000) 어댑터 지원
  • Fix black/blank screen at boot with nvidia cards
  • 검은/빈 화면으로 부팅되던 엔비디아 카드 문제 해결
  • Disable old crappy realtek r8169 module, update r8101 / r8168 / r8169 driver
  • 형편없고 오래된 realtek r8169 모듈을 제거, 업데이트 된 r8101 / r8168 / r8169 드라이버 지원

 

XPEnoboot 5.2-5644.4 다운로드

XPEnoboot 5.2-5644.4 DS3615xs
IMAGEFORMATLINKMD5
XPEnoboot DS3615xs5.2-5644.4IMGdownload59E96A63333B5C6D8911F902A23CA99F
XPEnoboot DS3615xs5.2-5644.4ISOdownloadBFA92964103438ABD0F93C4EF58D0E38
XPEnoboot DS3615xs5.2-5644.4VMDKdownload860259EAA222186860BC52BD6DFF4919

 

001

'NAS > XPEnology' 카테고리의 다른 글

XPEnoboot 5.2-5644.5 출시!  (0) 2016.02.15
Synology Version: 5.2-5644  (2) 2015.10.31
XPEnoboot 5.2-5592.2 (05/08/2015) released  (0) 2015.08.05
XPEnoboot 5.2-5592.1 released  (0) 2015.07.31
Synology Version: 5.2-5565 Update 2  (0) 2015.06.10





설치 가이드 아닙니다.


DL: 

EFI.zip



config.plist 파일은 꼭 수정해서 써야합니다.

/EFI/CLOVER/kexts/10.11 kext 일부는 제외시켜 놓았으니 필요하시면 직접 넣어서 쓰시면 됩니다.


OS X El Capitan 10.11.3 (15D21)

Bootloader: Clover EFI bootloader 3330

Bootloader bootflags: -v darkwake=0 kext-dev-mode=1 rootless=0 

SMBIOS: MacBookPro11,2

BIOS: W740SU 1.03.05/EC 1.03.03 개조판 (링크 참조)

http://x86osx.com/bbs/view.php?id=after&no=8090


CPU: Intel® Core™ i7-4750HQ, i7-4760HQ, i7-4770HQ

  • Speed Booster - 가능, Turbo Boost - 안됨(?)

VGA: Intel® Iris™ Pro Graphics 5200 (BIOS 개조판 패치 기준 Framebuffer: 0x0D260007)

  • 1080P@60Hz, QE/CI, 밝기 조절, HDMI - 가능
  • Mini DisplayPort 케이블 및 모니터가 없어서 확인 불가

Audio: VIA VT1802_1 (Audio Device: 0x80868C20, SubDevice: 0x15587410, Codec ID: 0x11068446, Revision: 0x0000)

Intel HDMI Audio (Audio Device: 0x80860D0C, SubDevice: 0x15587410, Codec ID: 0x80862807, Revision: 0x0000)

  • 헤드폰, 내장 스피커, 내장 마이크, HDMI Audio - 가능 (BIOS 개조판 패치 기준 Audio layout-id 3)
  • 헤드셋 마이크 - 사용 불가

Webcam: 1.0M BisonCam, NB Pro

  • 부팅 후 Fn + F10 수동으로 활성화시 사용 가능 (on/off 가능)

Wireless: Intel® Dual Band Wireless-AC 3160

  • 사용 불가이며 자가 교체 필요, 추천 제품 - Broadcom BCM94352HMB / AzureWave AW-CE123H

Ethernet: Intel Corporation, Ethernet Connection I217-V

  • 사용 가능 (AppleIntelE1000e.kext)
  • WOL 확인 안함

Bluetooth

  • 사용 불가이며 자가 교체 필요, 추천 제품 - Broadcom BCM94352HMB / AzureWave AW-CE123H

PS/2 Touchpad, PS/2 keyboard

  • 사용 가능, 부팅시 로그인 화면 임시적 프리징 발생 (VoodooPS2Controller.kext)

USB 2.0, 3.0: Intel Corporation, 8 Series/C220 Series Chipset Family USB xHCI

  • AppleUSBXHCIPCI 15 포트 제한 해제, 개조판 BIOS 사용시 change XHC1 to XHCA DSDT 패치 필요

Card Reader: Realtek Semiconductor Co., Ltd., RTS5229 PCI Express Card Reader

  • 사용 불가

Battery

Sleep

  • 문제 없음


개인적으로 시놀에서 제일 잘 쓰고 있는 기능 중 하나이며 이번에 소개하려고 글을 작성하게 되었습니다.


애니메이션을 좋아하기에 Nyaa 토렌트 사이트를 예시로 설명하겠습니다.

먼저 RSS 주소가 필요합니다.

없으시다면 알아서 RSS 페이지를 만들어내세요. ㅎㅎ... 


카테고리, 글쓴이 기타 등등 편하신걸로 RSS 주소를 먼저 선별 해주세요.


3분기 완결작인 오버로드는 대략 이런 기준으로 되어있습니다.

[Ohys-Raws] Overlord - 01 (AT-X 1280x720 x264 AAC).mp4

[Ohys-Raws] Overlord - OP (AT-X 1280x720 x264 AAC).mp4

[Ohys-Raws] Overlord - ED (AT-X 1280x720 x264 AAC).mp4

[Ohys-Raws] Overlord - SP1 (AT-X 1280x720 x264 AAC).mp4

[Ohys-Raws] Overlord - 13 END (AT-X 1280x720 x264 AAC).mp4

[Ohys-Raws] Overlord Vol.1 (BD 1280x720 x264 AAC)

[Ohys-Raws] Overlord (AT-X 1280x720 x264 AAC)


OP, ED, SP1, BD, 통합본을 받지 않고 매주 1화씩 나온다는 기준으로 01~13화까지만 받는 방법입니다.

정규식을 사용하여 구문 분석을 꼭 체크해야합니다.

이름: 원하시는걸로 아무거나

일치: \[Ohys-Raws\] 애니명 - \d

일치하지 않음: BD|DVD|OAD|OVA

대상: 원하시는 다운로드 폴더


이러고 저장하시면 끝났습니다.

어때요 참 쉽죠?


예를들어 다른 릴로 받고싶다면

\[Leopard-Raws\] 애니명 - \d 이런씩으로 바꿔주면 됩니다.


정규식이 뭐고 \, \d 같은 기호나 문자는 뭔가요?

제가 설명을 엄청 못합니다.

위키 페이지로 대신 답변해드리겠습니다.

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

그리고 도움이 되는 사이트가 하나 더 있는데 이 곳에서 직접 테스트도 가능합니다.

http://www.regexr.com/


한국 토렌트 사이트도 가능한가요?

네 가능합니다. 하지만 대부분 RSS 기능이 없거나 표준을 지키지 않았기에 불가능한 사이트가 대부분이므로 직접 RSS 사이트를 만들지 않는 이상 답이 없습니다.

http://freespiritslab.blogspot.kr/2015/07/synology-rss-downloadstation.html

아니면 되는 사이트를 찾아내셔야하고요.


마지막으로 RSS 다운로드 방식은 나오자마자 바로 받으려는 기능이지 검색해서 아주 오래된 자료를 받는 방법이 절대로 아닙니다.

그럴 땐 BT 검색을 사용해야하며 검색 엔진을 직접 만드시고 추가하셔야합니다.

이 부분에 대해서는 자세하게 언급하지 않을 예정입니다.


먼저 letsencrypt-win-simple 최신버전을 받아주세요.

https://github.com/Lone-Coder/letsencrypt-win-simple/releases


먼저 압축을 풀어줍니다.


압축을 푸신 뒤 letsencrypt.exe 실행 해봅시다.

아마 처음에 이메일 입력하는 부분이 나올텐데 제대로 입력하시면 이렇게 IIS에 설치된 주소들이 나옵니다.


대충 원하시는걸로 번호를 선택하시고 엔터치시면 자연스럽게 알아서 다 설정을 해주며 IIS에 SSL까지 자동설치 해줍니다

거기에 편하게 자동으로 SSL 갱신을 위한 작업 스케줄러까지 등록이 한방에!



넵 끝났습니다.

너무나도 쉽게 무료로 SSL 발급에서 설치까지 정말로 편합니다.



가끔 안되는 분들이 계실텐데 "localhost\.well-known\acme-challenge\web.config" 파일을 수정 해주셔야합니다.

문제는 letsencrypt.exe 실행시 web.config 파일을 강제로 바꿔버리는 문제가 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?xml version = "1.0" encoding="UTF-8"?>
 <configuration>
     <system.webServer>
         <staticContent>
             <mimeMap fileExtension = ".*" mimeType="text/json" />
         </staticContent>
         <handlers>
              <add name="StaticFileModule" path="*" verb="*" modules="StaticFileModule" resourceType="File" />
        </handlers>
     </system.webServer>
 </configuration>


문제가 된 부분에 소스는 밑에 주소에 있으며 54~60번줄 사이에 위에 올린 코드에 빠진 부분을 넣으시고 빌드하시면 됩니다.

수정된 파일을 공유하지 않은 이유는 바이러스를 배포하니 안하니 이런 문제를 사전에 막기위해 공유하지 않았으니 직접 빌드하세요.

https://github.com/Lone-Coder/letsencrypt-win-simple/blob/master/letsencrypt-win-simple/Plugin/IISPlugin.cs


제가 해본 결과 Windows Embedded 8.1 Industry Pro, Windows Server 2012 R2에서는 문제 없이 됐습니다.

시작하기전에 유니코드에는 BOM이 필요 없다고 울부짖는 분들에게 분노의 글 좀 적겠습니다.

전부터 무언가 만들어 볼 때 마다 항상 제 발목을 붙잡는 녀석이 있었습니다. 그게 바로 인코딩이죠.
Linux에서는 UTF-8이 기본이니까 그냥 UTF-8로 열어서 보여줘버리면 그만인데 Windows는 그게 아니란말이죠.

세상에는 여러 인코딩이 존재합니다. 그런 인코딩의 존재를 깡그리 무시해버리고 'UTF-8이 진리다'를 외치며 BOM을 달지도 않고 텍스트를 배포하시는 불친절한 분들 덕분에 언제나 우리는 고생합니다. BOM을 달면 유니코드 계열은 8 16 32 등등 을 아주 쉽게 구분할 수 있는데도 불구하고 그 3바이트를 아낀다고 아무도 저장하지 않아요. 이 얼마나 무식한 짓인지;

저 BOM을 달지 않아서 벌어지는 일들을 볼까요?
자주 나오는 글자들의 각 인코딩별 저장되는 비트값을 확인하여 "확률"적으로 이 텍스트 파일은 UTF-8이다 16이다를 계산하고 앉아있습니다;
3바이트만 체크하면 끝나는걸;
더 나아가볼까요?
모질라에서 만든 캐릭터 디텍터라던가 모두 제대로 작동할 것 같나요? 글자 수가 적으면 적을수록 감출 확률은 떨어지고 그 만큼 실패할 확률도 올라갑니다.
그 뿐인가요? 그 캐릭터 디텍터는 누가 개발하나요. 라이브러리 주워다가 쓰면 가능하지만 그게 제대로 작동하는 라이브러리인지 아닌지는 테스트 하기 전까지는 모릅니다. 그 수 많은 라이브러리 테스트해서 사용하실려구요? BOM 달면 3바이트만 체크하면 되는데? 여러분의 하드는 2.5인치 플로피 디스켓 보다 작아서 3바이트를 저장하면 큰일인가요?

아직도 BOM이 필요 없다고 주장하실 생각이신가요? '이 세상에 워드프로세서따위 한글과 컴퓨터에서 개발한 한글밖에 없으면 모두가 hwp파일을 쓸테니 걱정이 없다.' 와 같은 의견으로 들릴 뿐입니다.

그런관계로 여러분 제발 유니코드엔 BOM좀 달아주세요. 제발 이게 세계 표준이되길 바랍니다. 힘들거든요 -ㅅ-;

자 그래서. 시작해보죠.

ASP.Net에서 이 인코딩 디텍터를 사용할 일이 있는데 C#에서 COM+쓰는 방법을 모르겠더라구요...
그래서 조금 찾아보려다가 그냥 C++/CLI로 만든 다음 ASP.Net 프로젝트에 참조 추가했습니다;

ASP.Net에서 C++/CLI로 만든 dll을 사용하는 방법은 다음에 써보겠습니다. 근대 무지 쉽습니다.

Windows는 XP의 서비스팩 몇인진 기억이 안나지만(...) 쨋든 이후로 MLang라는 녀석을 제공해주고 있습니다.
인코딩 관련 COM+ 라이브러리인데 굉장히 잘 작동해서 맘에듭니다. 이 녀석을 써보도록 하죠.


#include <MLang.h>
using namespace System;

namespace EncodingUtility {
	public ref class EncodingDetector
	{
	public:
		EncodingDetector();
		~EncodingDetector();

		int GetEncodingFromFile(String^ fileName);
		int GetEncodingFromBinary(char* binary, int size);

	private:
		IMultiLanguage2* mlang2;
	};
}


헤더파일입니다. 무지간단하네요; 바로 cpp코드를 보죠.


#include "EncodingDetector.h"

using namespace System::IO;
using namespace System::Text;

EncodingUtility::EncodingDetector::EncodingDetector()
	: mlang2(nullptr)
{
	IMultiLanguage2* tmpMlang = nullptr;
	auto result = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_ALL, IID_IMultiLanguage2, (void**)&tmpMlang);
	mlang2 = tmpMlang;

	if (result != S_OK)
		throw gcnew System::Exception("에러");
}

EncodingUtility::EncodingDetector::~EncodingDetector()
{
	if (mlang2 != nullptr)
		mlang2->Release();
}

int EncodingUtility::EncodingDetector::GetEncodingFromFile(String^ fileName)
{
	FileStream^ fs = gcnew FileStream(fileName, FileMode::Open, FileAccess::Read, FileShare::Read);
	BinaryReader^ br = gcnew BinaryReader(fs);
	
	// 필요하시다면 아래 4096 사이즈를 더 높여주세요. 많이 읽을 수록 검출율은 높아집니다.
	auto buffer = br->ReadBytes(4096);
	pin_ptr<System::Byte> pinBuffer = &buffer[0];
	unsigned char* pBuffer = pinBuffer;

	int length = buffer->Length;
	DetectEncodingInfo info;
	int score = 1;
	HRESULT result = mlang2->DetectInputCodepage(0, 0, reinterpret_cast<char*>(pBuffer), &length, &info, &score);

	fs->Close();
	if (result == S_OK)
		return info.nCodePage;
	else
		return -1;
}

int EncodingUtility::EncodingDetector::GetEncodingFromBinary(char * binary, int size)
{
	int length = size;
	DetectEncodingInfo info;
	int score = 1;
	HRESULT result = mlang2->DetectInputCodepage(0, 0, binary, &length, &info, &score);

	if (result == S_OK)
		return info.nCodePage;
	else
		return -1;
}


역시 간단하네요. COM을 사용하니까 클래스 사용 전 CoInitialize() 함수 호출하시는거 잊지 마시구요!

DetectInputCodepage에 관한 자세한 내용은 MSDN을 참고해주시기 바랍니다.

대략적으로 이 함수는 한번에 여러 개의 인코딩을 리턴 할 수 있습니다.
왜 여러개를 리턴하냐구요? BOM이 없는 텍스트 파일이 있기 때문이죠 ㅡㅡ;
지금 위의 코드에서는 가장 확률이 높은 1개만 가져오게 해놨지만 BOM이 없을 경우 UTF-16일 수도 있고 UTF-8일 수도 있기 때문에 가장 확률이 높은 인코딩부터 순서대로 인덱스에 넣어주는 모양입니다.

코드페이지에 대한 결과 역시 MSDN을 참고해주세요. 윈도우 개발자는 MSDN이 있어서 행복합니다...
https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx


C#에서는 Encoding.GetEncoding(GetEncodingFromFile("test.txt")) <- 이런 식으로 사용하실 수 있습니다.
감지 실패시 -1을 리턴하므로 예외처리 해주시면되겠습니다.

뭐 이건 간단하게 만들어본 SafeComInitializer이라는 클래스입니다.
헤더는 올릴 필요가 없어보이므로 그냥 cpp 코드만 올리겠습니다.


#include "SafeComInitializer.h"

bool SafeComInitializer::ComInitialize()
{
	static SafeComInitializer initializer;
	return initializer.isInitialized;
}


SafeComInitializer::~SafeComInitializer()
{
	if (canUninitialize == true)
		CoUninitialize();
}


SafeComInitializer::SafeComInitializer()
	: isInitialized(false), canUninitialize(false)
{
	if (isInitialized == false)
	{
		auto result = CoInitializeEx(NULL, COINIT_MULTITHREADED);
		if (result == S_OK)
		{
			isInitialized = true;
			canUninitialize = true;
		}
		else if (result == S_FALSE)
		{
			isInitialized = true;
			canUninitialize = false;
		}
	}
}


+ Recent posts