분류 전체보기
- C# 1.0에서 4.0까지의 변화를 정리한 글입니다^^ 2014.06.10
- MSSQL 프로시저 작성 규칙 2014.05.22
- 외부 css에 정의된 font-size 변경 방법 (jQuery 이용) 2014.05.15
- 자바스크립트 문자열 배열을 JSON 포맷으로 변경하기 2014.04.28
- MSSQL Update Join 2014.03.26
- ASP.NET MVC4 File Upload 방법 2014.03.25
- C#에서 HttpWebRequest POST 요청 데이터 인코딩 처리 2014.02.28
- C# FTP 파일 전송 코드 2014.02.12 1
C# 1.0에서 4.0까지의 변화를 정리한 글입니다^^
MSSQL 프로시저 작성 규칙
프로시저를 만들때 sql 스크립트 작성시 항상 혼란 스러웠던 부분이라 이렇게
정리하게 되었다. 단순 나만의 기준으로 정했기 때문에 혹시라도 이것을 참고하시는
분께서는 오해 없으시기 바랍니다. (괜히 이게 정답!! 이러면 곤란합니다
- 파스칼 표기법
모든 단어의 시작을 대문자로 하는 방법 (GetList)
- 카멜 표기법
단어와 단어 사이를 대문자로 구분하는 방법 (getList)
- 밑줄 표기법
언더스코어 표기법은 변수를 만들 때, 각 단어를 구분하기 위하여 언더스코어를 사용한다.
1. 키워드, 테이블명는 무조건 대문자로 표시 (단, 자료형은 카멜)
2. 변수는 파스칼 표기법
3. 프로시저명은 파스칼 + 밑줄 표기법
그냥 이정도 이다.
네이밍은 정해진 규약이 없다.
같은 환경에서 개발하는 팀간의 약속으라고 생각하면 될 것 같다.
프로젝트가 진행되기 전이나 사전에 어떠한 네이밍 규칙을 사용할 것인지
정하는 것도 개발 단계의 한 부분이라고 생각이 든다.
외부 css에 정의된 font-size 변경 방법 (jQuery 이용)
외부 css에 정의된 스타일을 가져오기 위해
DOM으로 처리를 할려고 했지만 HTML 태그 내부 인라인으로 정의된 style만 접근이
가능하기 때문에 아래 코드를 쓰게 되면 값이 가져오지를 못한다.
document.getByElementById("font1").style.fontSize
왜?? id가 "font1"이라는 div 태그안에는 style이 직접적으로 정의가 되어있지 않기 때문이다.
그래서 jQuery를 이용해서 객체를 생성하고 css의 값을 가져오도록 했다.
물론 Javascript로 할 순 있지만 코드만 길어지고 정신적인 스트레스가 올 것 같다.
아래 코드는 "+" 버튼을 클릭하면 div 내부의 현재 font-size에서 5px 증가한 값으로 변환시키고, "-" 버튼을 클릭하면 5px 감소한 값으로 변환시킨다.
HEADER
<link rel="stylesheet" type="text/css" href="common.css" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(function () {
var div = $("div");
$("#btnIncrease").click(function () {
div.css("font-size", "+=5");
});
$("#btnDecrease").click(function () {
div.css("font-size", "-=5");
});
});
</script>
CSS (외부 파일 common.css)
.font1 { font-size:11px; }
.font2 { font-size:20px; }
HTML
<input type="button" id="btnIncrease" value="+" />
<input type="button" id="btnDecrease" value="-" />
<div id="font1" class="font1">테스트1</div>
<div id="font2" class="font2">테스트2</div>
자바스크립트 문자열 배열을 JSON 포맷으로 변경하기
자꾸 까먹네.
잊어버리기 전에!!
var arr = new Array();
var item1 = new Object();
item1.KeyName1 = value1;
item1.KeyName2 = value2;
var item2 = new Object();
item2.KeyName1 = value1;
item2.KeyName2 = value2;
arr_coupon.push(item1);
arr_coupon.push(item2);
var jsonString = JSON.stringify(arr);
MSSQL Update Join
희안하게 이 구문만 자꾸 생각이 안나네.
UPDATE table1
SET A.col1 = B.col1
FROM table1 AS M
JOIN table2 AS S
ON M.col2 = S.col2
WHERE M.col3 IS NOT NULL
ASP.NET MVC4 File Upload 방법
이전에 한번 클라이언트에서 서버로 파일을 업로드하고 이것을 외부 FTP 서버로 전송하는 글을 쓴적이 있다.
여기서 한가지 문제점이 있었다.
private bool UploadToFTP(HttpPostedFile fileToUpload)
{
try
{
string uploadUrl = @ftp://블라블라블라;
string uploadFileName = fileToUpload.FileName;
................
}
}
이런식으로 HttpPostedFile 파라미터를 이용 해서 클라이언트의 input file 태그에서 선택된 파일을 받아올 수 있다고
설명을 했다.
하지만 다중 File Upload일 경우 하나라도 파일을 선택을 하지 않을시 fileToUpload의 파라미터값이
null로 들어오는 문제점이 있었다.
이것을 해결 하기 위한 방법은 메소드 내부에 Request.Files를 사용하면 된다.
클라이언트에서 업로드한 파일의 컬렉션을 multipart MIME 형식으로 가져오게 되며,
모든 input file 태그에서 파일을 선택하지 않아도 잘 동작한다.
private bool UploadToFTP()
{
try
{
HttpFileCollectionBase files = Request.Files;
foreach (string file in files)
{
HttpPostedFileBase f = files[file] as HttpPostedFileBase;
................
}
}
}
여기서 이 두가지의 차이를 명심해야 한다.
첫번째 HttpPostedFileBase를 파라미터를 받을 경우
Client에서 Input file의 name이 모두 같아야 한다~ 이것에 서버 메소드의 Parameter 이름이 된다.!!
두번째 Request.Files를 이용할 경우
Client에서 Input file의 name이 같으면 안된다.!!
C#에서 HttpWebRequest POST 요청 데이터 인코딩 처리
HttpWebRequest를 이용해서 데이터 전송 코드를 작성했는데 요청 데이터가 깨지는 현상이 발생했다.
바로 일본어를 넘겨줘야 하는데 넘어온 파라미터 데이터를 Encoding.UTF8.GetBytes()를 이용해서 인코딩을 했으나
요청을 받는 서버에서는 일본어가 깨져서 들어가는 것을 확인했다.
구글링 결과 파라미터 값만 인코딩한다고 되는 문제가 아니였다.
HttpWebRequest의 인스턴스의 ContentType에도 "charset=UTF-8"로 설정을 해줘야 했다.!!!
아 몇시간 동안의 삽질이 있었는지 이제서야 깨지지 않고 잘 들어간다.
일본어도 들어가니 한글도 잘 들어가겠지??
C# FTP 파일 전송 코드
HttpPostedFile 타입으로 매개변수를 받아 그대로 외부 서버로 FTP 전송을 하기 위해서 아래와 같은 코드로
작성을 해야한다.
서버 내부의 파일을 가지고 FTP 전송하는 방법이랑 조금 다르다ㅜㅜ
private bool UploadToFTP(HttpPostedFile fileToUpload)
{
try
{
string uploadUrl = @ftp://블라블라블라;
string uploadFileName = fileToUpload.FileName;
Stream streamObj = fileToUpload.InputStream;
Byte[] buffer = new Byte[fileToUpload.ContentLength];
streamObj.Read(buffer, 0, buffer.Length);
streamObj.Close();
streamObj = null;
string ftpUrl = string.Format("{0}/{1}", uploadUrl, uploadFileName);
FtpWebRequest requestObj = FtpWebRequest.Create(ftpUrl) as FtpWebRequest;
requestObj.Method = WebRequestMethods.Ftp.UploadFile;
requestObj.Credentials = new NetworkCredential("userid", "password");
Stream requestStream = requestObj.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Flush();
requestStream.Close();
requestObj = null;
return true;
}
catch
{
return false;
}
}