1. tomcat6, eclipse, java6 설치

 yaourt jdk6

 pacman -S tomcat6

 yaourt eclipse-indigo


2. wdt 설치

 eclipse --> help --> Install New SoftWare... --> Add... --> http://download.eclipse.org/releases/indigo 추가후 업데이트

 eclipse --> help --> Install New SoftWare... --> Add... --> Web Tools Platform SDK 3.3.2 설치.


3. eclipse 사용할 계정 tomcat 그룹에 추가.

 # gpasswd -a $USER tomcat


4. eclipse tomcat6 서버 설정

 eclipse --> window --> Preferences --> Server --> Runtime Environments --> Add

 tomcat6 선택 --> Tomcat Directory :  /usr/share/tomcat6 --> Finish



ASP.NET에서 예외 처리 로그를 출력하게 하는 것을 구현


LogMgr 클래스 만들기

public class LogMgr

{

static string prefixMsg = "\r\n-------------------------------------------";


// 일반 로그 남기기

static public void Log(string msg)

{

try

{

string logFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log";

StreamWriter tw = File.AppendText(logFileName);

tw.WriteLine(prefixMsg);

tw.WriteLine(msg);

tw.Close();

}

catch (Exception)

{

}

}


// 예외 로그

static public void ExceptionLog(Exception ex, string titleString = null)

{

string msg = "";

if (!string.IsNullOrEmpty(msg))

{

msg = titleString + "\r\n";

}


msg += GetExceptionMessage(ex);

msg = "예외 발생 일자 : " + DateTime.Now.ToString() + msg + "\r\n";

Log(msg);

}

// 마지막 예외 로그

static public void LastExceptionLog(string titleString = null)

{

//예외를 데이터베이스나 파일에 로깅한다

Exception ex = HttpContext.Current.Server.GetLastError();

ExceptionLog(ex, titleString);

}



// 예외 메세지 만들기

static private string GetExceptionMessage(Exception ex)

{

string err = "\r\n 에러 발생 원인 : " + ex.Source +

"\r\n 에러 메시지 :" + ex.Message +

"\r\n Stack Trace : " + ex.StackTrace.ToString();


if (ex.InnerException != null)

{

err += GetExceptionMessage(ex.InnerException);

}


return err;

}

}


사용)

Global.asax 파일에 전역 예외처리 로그 작성(try catch 잡지 않은 예외를 로그파일에 출력)

public class Global : System.Web.HttpApplication

{


...

...

protected void Application_Error(object sender, EventArgs e)

{

// 예외 처리구간에서 예외가 나왔을때는 예외처리를 하지 않는다.

try

{

LogMgr.LastExceptionLog("Application_Error");

}

catch(Exception)

{

}

}

}


try catch 예외 처리 로그로 사용.

DBConn conn = new DBConn();

try

{

conn.Open();

conn.CreateCommand(sql);

conn.AddParam("@USER_CODE", userName);


SqlDataReader reader = conn.ExecuteReader();


if (reader.Read())

{

playername = reader["USER_NAME"].ToString();

ret = true;

}

}

catch (Exception e)

{

LogMgr.ExceptionLog(e);

}

finally

{

conn.Close();

}

return ret;


일반 로그로 사용.

LogMgr.Log("하이 로그 테스트");


ASP.NET 에서 돌아가는 스케줄러 구현


루트에 Global.aspx 생성

public class Global : System.Web.HttpApplication

{

protected void Application_Start(object sender, EventArgs e)

{

StartScheduler();

}


...

...


//////////////////////////////////////////////////////////////////////////

// 스케줄러 소스 시작

private static DateTime whenTaskLastRan = DateTime.Now; // 마지막 스케줄러가 실행된 시간


private void StartScheduler()

{

ThreadStart tsTask = new ThreadStart(ScheduleTaskLoop);

Thread MyTask = new Thread(tsTask);

MyTask.Start();

}


static void ScheduleTaskLoop()

{

while (true)

{

DateTime oneDayAgo = DateTime.Now.AddDays(-1);


// 하루가 지났으면(새벽 4~ 6사이)

if ((whenTaskLastRan < oneDayAgo) && (4 <= oneDayAgo.Hour && oneDayAgo.Hour <= 6))

{

if(ScheduledTask())

whenTaskLastRan = DateTime.Now;

}

// 한시간 동안 Sleep

System.Threading.Thread.Sleep(TimeSpan.FromHours(1));

}

}


static bool ScheduledTask()

{

bool ret = false;

try

{

// DoSomething... 스케줄 걸 작업들.

ret = true;

}

catch (Exception e)

{

}

return ret;

}


// 스케줄러 소스 종료

//////////////////////////////////////////////////////////////////////////

}


}


1. MSSQL에서 CustomMemberShip Database 생성및 계정 추가


2. cmd 실행

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319>

aspnet_regsql.exe


DB 이름 선택, 연결 하여 끝냄


3. web.config 설정


<configuration>

  <connectionStrings>

    <add name="ConnectionString" 

connectionString="server=SERVERNAME;

database=CustomMembership;uid=userid;password=userpassword;"/>

  </connectionStrings>

  <system.web>

<roleManager defaultProvider="CustomProvider" enabled="true">

<providers>

<add connectionStringName="ConnectionString" 

name="CustomProvider"

type="System.Web.Security.SqlRoleProvider" />

</providers>

</roleManager>


<membership defaultProvider="CustomMembershipProvider">

<providers>

<add name="CustomMembershipProvider"

type="System.Web.Security.SqlMembershipProvider"

connectionStringName="ConnectionString" />

</providers>

</membership>



참고 URL : http://blog.naver.com/PostView.nhn?blogId=knight50&logNo=80101563731&redirect=Dlog&widgetTypeCall=true

1. 빌드 & publish 
  


 


 d:\tmp\bak 로 소스 출력됨


2. 컴파일

aspnet_compiler.exe -p d:\tmp\bak -v / d:\tmp\bak1 -errorstack

 입력 d:\tmp\bak -->  출력 d:\tmp\bak1
 



  C:\> C:
  C:\>cd \Windows\Microsoft.NET\Framework64\v4.0.30319
  C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_compiler.exe -p d:\tmp\bak -v / d:\tmp\bak1 -errorstack
  Utility to precompile an ASP.NET application
  Copyright (C) Microsoft Corporation. All rights reserved.

  C:\Windows\Microsoft.NET\Framework64\v4.0.30319>

3 배포
 d:\tmp\bak1 --> 웹사이트에 배포함.
 



스마트 에디터 2.1.1 다운로드

http://dev.naver.com/projects/smarteditor/download 


asp.net 프로젝트 생성(naver01로 생성했음) 첨부 파일 참고 


smartedtor2.1_aspnet_v2.zip



프로젝트 se 디렉토리에 복사.


/se/popup/quick_photo/FileUploader.aspx 생성및 작성


private string UploadDir = "/UploadFiles/"; // Upload dirctory


// 이미지 파일을 서버에 저장하고 저장한 정보를 클라이언트에 보내줌.

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

HttpFileCollection uploadedFiles = Request.Files;

string callback_func = Request.Form["callback_func"];


// 다수의 파일을 다운로드 하여 파일을 저장함

for (int j = 0; j < uploadedFiles.Count; j++)

{

HttpPostedFile userPostedFile = uploadedFiles[j];


// 파일 내용이 있을경우

if (userPostedFile.ContentLength > 0)

{

string fileName = Path.GetFileName(userPostedFile.FileName);

string fileUrl = UploadDir + fileName; // 업로드 디렉토리 + 파일명.


// 파일 저장  (같은 파일명일경우 에러 처리 필요)

userPostedFile.SaveAs(Server.MapPath(fileUrl));


// 클라이언트에 저장한 파일 정보를 보내 줌

string returnUrl = string.Format("callback.html?callback_func={0}&bNewLine=true&sFileName={1}&sFileURL={2}",

callback_func, fileName, fileUrl);


Response.Redirect(returnUrl);

}


}

}

}



/se/popup/quick_photo/QuickPhotoPopup.js 수정

function callFileUploader (){

oFileUploader = new jindo.FileUploader(jindo.$("uploadInputBox"),{

sUrl: location.href.replace(/\/[^\/]*$/, '') + '/FileUploader.aspx', // FileUploader.aspx 경로


/se/popup/quick_photo/callback.html 수정

document.domain = location.protocol + "//" + location.host; // 자기 서버 URL



/Write.aspx 생성 및 작성

제일 상단 내용에 ValidateRequest="false" 추가.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Write.aspx.cs" Inherits="naver01.Write" %>

를 아래와 같이

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Write.aspx.cs" Inherits="naver01.Write" ValidateRequest="false" %>

나머지는 소스 참고.


web.config 설정 파일에 아래내용 추가

    <system.web>

<httpRuntime requestValidationMode="2.0" />

</system.web>



참고 URL

http://dev.naver.com/projects/smarteditor/tech/39360



환경 visual stodio 2010,  SmartEditor 2.1.1


smartedtor2.1_aspnet_v2.zip



cmd.exe 를 관리자 모드로 실행하고

서비스팩 제거
 DISM /online /Cleanup-Image /SpSuperseded
 

명령을 치면 서비스 팩 설치 시 만들어진 백업 파일을 제거합니다.
약 2G 용량을 확보하네요.

최대 절전모드 해제 - 데스크탑만 하세요. c:\hiberfil.sys 파일 삭제.
 powercfg -h off
참고 링크 : http://blog.naver.com/psy2993/90098898571

가상 메모리를 줄이기(메모리 4기가 이상시에만 추천함)
winkey + Break --> 고급 시스템설정 --> 성능설정 --> 고급 --> 가상메모리변경 --> 처음크기, 최대크기 512

참고 링크 : http://blog.naver.com/psy2993/90098898571


시스템보호기능 제거.
...
모니터 4:3 19인치 LCD가 고장나서 용산 전자 상가에 갔습니다. (기종은 pcbank pbm-980tvro)



수리비 3만원을 초과하면 그냥 새거 살려고 생각하고 갔습니다.

선인 상가 21동 1층에 구글 검색하면 나오는 하트 전자에 갈려고 했더니
어떤분이 가고 있어서 가격협상하기 힘들겠다 싶어서 포기하고 1층 LCD수리하는곳 아무곳이나 나오길래 갔더니 기본이 2만 5천원이고 인버터 등이 나갔으면 3만5천원까지 달라고 하더군요.

3만원 넘으면 생각해 보겠다고 하니 2층에 가보라고 해서 2층에 갔습니다.
2층에 알아본 딴 업체에 갈려고 했더니 모니터 수리하냐면서 붙잡는 용순이....
4만원 부르네요 ㅡ.ㅡ;;;

2층에 알아본 딴 업체 가다가 수리만 하는 업체들이 즐비한 곳을 발견하고 맨 처음 업체에 가격 물어보니....
2만 5천원에 고쳐준답니다.

모니터 분해해보고 인터버 고장 확인후 바로 교체하는데 생각으로는 으악 만원 더 올라가는거 아닌가 생각하고 좌절하고 있었는데...

15분도 안되서 수리 완료하고 수리비 2만 5천원 줬습니다 ^^//

그래서 그 상호를 알아왔죠 ㅎㅎ

인터넷 사이트도 없고 한 3~5평 정도 되는 조그마한 회사인것 같네요.

한솔컴퓨터 선인 21동 2층 229호 02-718-6798

그냥 수리 싸게 해서 올려놔봅니다^^


완전구현은 하지 않았습니다.
주석부분을 구현하면 됩니다.
구현부분은 어렵지 않은코드입니다.
private function copyDir(dirName:String, toDir:String):void
{
	var directory:File = new File(dirName);
	var contents:Array = directory.getDirectoryListing(); 
	for (var i:uint = 0; i < contents.length; i++) 
	{
		var f:File = contents[i] as File;
		if( f.isDirectory )
			copyDir(f.nativePath, toDir + "\\" + f.name);
		else
			copyFile(f, toDir); 
	}
}

private function copyFile(srcFile:File, toDir:String):void
{
	// 대상 디렉토리가 없으면 디렉토리 생성.
	
	// 대상 파일이 있으면 삭제.
	var newFileName:String = toDir + "\\" + srcFile.name;
	
	// 대상 파일이동 혹은 복사.
	
	trace("copy", srcFile.nativePath, newFileName);
}
	
protected function btnFileCopy_clickHandler(event:MouseEvent):void
{
	copyDir("d:\\tmp", "d:\\TT");
}

http://gleamynode.net/articles/1543/bash-here-context-menu-with-puttycyg
에서 bash-here.zip 다운로드

http://rapzzard.egloos.com/1851769
에서 dputty 다운로드

1. cygwin 설치 ( chere 패키지 필수 설치 )

2. 다운로드 받은 dputty를 c:\cygwin\bin에 압축풀기

3. bash-here.reg를 병합.

4. cygwin 한글 설정
 ~/.inputrc
 # Allow 8-bit input/output
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

~/.bashrc
 export LANG=ko_KR.UTF-8

5. dputty 실행후 기본설정 UTF-8 설정








끝)









+ Recent posts