파일서버 재가동을 위한 시험 운영중

Projects/Server 2010.06.01 14:13 Posted by soulfree >동네청년<

거의 올해 전반기동안 파일서버에 문제가 있어서 서비스를 하지 못하였습니다.

하드디스크 개개의 문제가 아니라는 점이 발견되고 IDE 하드디스크들의 조합의 오묘함에 의하여

부품교체는 시도하지 않고 우선은 서비스가 가능한 정도로 살려두었습니다.

내구성 테스트를 위하여 한달동안 시험 운영을 해볼까 합니다.

 

사용하시는 것은 이전과 같이 사용하시면 되구요.

사용법을 잊으신 분들은 개별적으로 연락하여 주세요.

많은 업로드 부탁드리겠습니다. 감사합니다.

신고

의미기반 Social Network 키워드

Projects/CoRapport 2010.04.05 17:43 Posted by soulfree >동네청년<

SIOC : 의미기반의 콘텐츠 연결

FOAF : 친구의 친구

SKOS : 의미의 상위, 하위 개념

신고

Linux VNC 초기 설정

Projects/CoVNC 2010.02.26 16:53 Posted by soulfree >동네청년<

항상 까먹을때가 되면 필요하다... 메모해둬야지...

 

rpm이나 yum으로 대충설치

/etc/sysconfig/vncservers 편집 -> VNCSERVERS="1:root"

chkconfig vncserver on

 

특히 chkconfig는 맨날 까먹는거 같다// 한동안 리눅스를 안썼떠니 ㅠㅠ;;

신고

파일서버 재가동 공지

Projects/Server 2010.02.11 23:46 Posted by soulfree >동네청년<

파일서버를 주제로만 자꾸 포스팅하게 되네요.

 

파일서버 문제점을 확실히 파악하여 현재 재가동 하였습니다.

 

500기가 하드의 하드웨어적인 문제는 아니었습니다.

 

현재 이상없이 잘 동작하고 있으며 당분간 다운되는 현상은 발생하지 않을 것으로 예상됩니다.

 

그동안 사용하시는데 불편을 드려서 죄송합니다. 이글을 보시면 안심하고 다시 사용하시길 바랍니다.

 

감사합니다. 많은 업로드 부탁드립니다!!

신고

파일서버 점검 안내

Projects/Server 2010.02.02 15:59 Posted by soulfree >동네청년<

파일서버를 사랑해주시는 지인님들께 감사드립니다...

 

저번에 발생했던 파일서버가 자꾸 다운되는 현상이 다시 발생하여

 

점검을 위하여 파일서버를 이번주에는 가동하지 않음을 알려드립니다.

 

증상은 저번 복구전의 증상과 동일하며

 

원인을 파악하고 있는 과정이나 하드웨어 관련 오류로 짐작되고 있습니다.

 

원인을 정확히 파악하기 위하여 여러 테스트 과정이 필요해서 시간이 좀 걸릴것 같습니다.

 

의심되는 하드웨어는 스팬볼륨 맴버중 하나의 하드디스크구요..

 

파워 용량문제도 의심해보고 있습니다.

 

하드웨어 문제가 아님을 확인하면 소프트웨어 문제로 바이러스 체크 및 대대적인 정리작업을 벌일 생각입니다.

 

예상하지 못한 문제로 인하여 이용하시는데 불편을 자꾸 드려서 죄송합니다.

 

ps. 저를 불쌍히 여기시는 분들께서는 하드디스크 하나 기부하여 주시옵소서. ㅋㅋ;;

신고

스팬 볼륨이 GPT 보호 파티션으로 인식될 때

Projects/Server 2010.01.29 00:33 Posted by soulfree >동네청년<
파일서버는 아시는 분들도 계시겠지만 Windows의 스팬볼륨으로 구성되어있습니다.

 

스팬볼륨을 처음 접하시는 분들이 계시므로 간단히 설명을 드리자면

 

여러개의 하드디스크를 합쳐서 하나의 하드디스크로 인식하게 할 수 있는 방법 입니다.

 

하드 디스크가 200기가, 500기가 두개가 있으면 이 두개를 C, D 드라이브로 나누어서 사용해야되지만

 

스팬볼륨을 사용하면 합쳐진 700기가 하드디스크로 인식하게 하여서 사용할 수 있습니다.

 

이렇게 하는 이유는 여러개의 하드디스크로 구성하면 하나의 하드디스크 용량이 넘치게 되면

 

다른 하드디스크에 같은 이름의 폴더를 만들어서 거기에 업로드 하도록 해야해서 관리 및 운영이 어려운 단점이 있구요...

 

자투리 용량이 남게되어서 하드디스크 공간을 효율적으로 사용할 수가 없게되는 단점이 있습니다.

 

예를 들어서 C 드라이브 하드가 200기가이고 거기에 movie라는 폴더를 만들어서 사용하고있는데

 

C 드라이브 하드가 꽉차면 D 드라이브에 movie 폴더를 만들어서 D 드라이브에 영화를 다운로드 및 업로드 하도록 사용자들을 유도해야합니다.

 

또 C 드라이브가 어중간하게 용량이 남아버리면 (예를 들어 500메가 정도... 그러면 영화 파일 하나가 올라가지도 못하지만 좀 아쉬운 정도의 용량이 되죠.)

 

그 용량을 그냥 낭비하게 됩니다. 그래서 스팬볼륨을 사용합니다.

 

스팬볼륨은 단점이 있는데 가장 큰 단점은 스팬볼륨을 구성하는 하드디스크중 어느 하나가 고장이 나버리면

 

스팬볼륨에 저장한 모든 데이터가 소실되는 단점이 있습니다.

 

이러한 경우는 예전에("파일서버 망했어요 ㅠㅠ" 참조) 한번 겪었던 사고로 제가 뼈져리게 느꼈죠.

 

 

이번 파일 서버를 복구하면서 운영체제를 돌리는 하드디스크로 보다 빠른 속도로 동작하는 녀석으로 바꾸었고,

 

그래서 Windows 2003 서버를 다시 설치하게 되었습니다.

 

모든 하드 디스크를 연결하고 컴퓨터관리->디스크관리에서 스팬볼륨이 나와줄거라는 기대를 걸었는데

 

스팬볼륨을 구성하는 하드디스크중 하나가 "GPT 보호 파티션"이라며 기본파티션을 잡혀 있었습니다.

 

스팬볼륨은 기본파티션이 아닌 동적파티션이며 GPT 보호 파티션을 해제하려면 파티션을 다시 잡아주어야하고

 

그러면 그 하드디스크의 자료는 모두 날려버려야 하기에 스팬볼륨내에 저장된 모든 자료가 날라갈 판이었습니다.

 

그렇게 한동안 허탈한 마음으로 있다가 문득 서비스팩을 설치해보자는 생각이 들었습니다.

 

서비스팩은 서비스팩2를 설치했고 설치후 GPT로 잡히던 하드디스크정상적으로 스팬 볼륨의 맴버로 나오더군요. 한시름 놨습니다.

 

요약드리자면

 

스팬볼륨을 사용하시던 도중 Windows를 재설치 하셨고 스팬 볼륨의 구성 맴버중 하나가 GPT 보호 파티션 혹은 기본 파티션으로 잡힌다면 서비스팩이 설치되어 있는지 확인 하시는 것을 알려드리고자 함입니다.

신고

파일서버 복구 하였습니다!!

Projects/Server 2010.01.27 05:35 Posted by soulfree >동네청년<

새해들어 파일서버가 먹통이 되어서 많은 지인분들께서 답답해하셨을 줄 압니다.

 

지금 이시간 부터 파일서버 ftp.soulfree.net을 다시 가동합니다.

 

서버 메인프레임 케이스를 안정성있는 것으로 교체하였고

 

제온 듀얼에서 펜텸D 시리즈에 DDR2(기존 DDR)를 사용하는 스펙으로 교체하였습니다.

 

제온 듀얼이 좀 아쉽긴 하고 램 용량도 업그레이드가 필요한 상황이라서 많은 성능 향상은 기대안합니다만,

 

윈도가 돌아가는 하드 디스크를 보다 빠른 녀석으로 교체해서 FTP 명령 처리는 빨라 질거같습니다.

 

그동안 서버용 메인보드가 더 안정성 있다고 생각을 해왔는데

 

4년째 접어들게 되니 고장나는게 한두군데가 아닌것 같습니다.

 

이번에 파일서버를 보름가량 정상적으로 사용할 수 없었던 것은 메인보드의 IDE 컨트롤러가 고장이 났던걸로 생각됩니다.

 

더구나 PCI 슬롯이 고장나거나 USB 단자가 고장나서 USB 장치를 고장 내버린다든지,

 

업데이트 후 재시작하면 컴퓨터가 켜지지 않는 문제등 여러가지로 저의 속을 썩였지요.

 

교체한 메인보드는 믿음이 안가시겠지만 ECS의 M-ATX 보드입니다. 저가 보드죠.

 

그런데 이녀석이 서버 보드 보다 더 저는 믿음이 갑니다.

 

원래 삼촌댁에 설치해드렸다가 이상하게 고장증세가 많이 일어나서 때어내서 가지고 왔는데

 

알고보니 제가 실수로 메인보드에 합선을 일으켰더라구요.

 

그런데 지금은 부품에 고장한군데 난데 없이 잘돌아갑니다.

 

더구나 그러고도 2년동안 원격 서버용으로 사용해도 문제가 없었지요.

 

그래서 파일서버의 중책을 맡길녀석으로 고민없이 선택했습니다.

 

DDR2 1G를 두어개 더 달아서 더 힘내게 해주어야겠습니다.

 

파일서버 계속 이용 잘 하시고, 좋은 자료 있으면 업로드 부탁드립니다.

신고

C4F 블루투스 관련 바이너리 모음

Projects/CoRapport 2009.07.20 23:47 Posted by soulfree >동네청년<

이런저런 테스트해볼것이 있어서 ㅎㅎ

신고

파일서버 망했어요 ㅠㅠ

Projects/Server 2009.07.20 23:10 Posted by soulfree >동네청년<
파일서버를 이용하시는 지인 여러분,,좋지 못한 소식을 공지하게되어서 미안하게 생각합니다.

파일서버를 구성하는 7개 하드가운데 웬디 250기가 하드디스크가 맛이가서 정상적인 서비스가 불가능하게 되었습니다.ㅠㅠ

우선 파일들이 좀 날아갔습니다. 1.7테라정도 보유하고 있던 동영상들이 날아갔구요;;
한국 영화, 외국드라마, 애니메이션, 다큐멘터리, 강좌 동영상, e-book, 음악들이 모두 날아가버렸습니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

고장난 하드디스크와 같은 모델을 구입해서 기판을 교체해서 인식시키는 방향도 모색해봤는데
우선 IDE 방식이라 중고매물도 잘 없고 기판 교체해서 된다는 보장도 없기에
그간 자료들이 아깝더라도 복구하는 것은 하지 않을 생각입니다.

1~2년동안 함께 자료를 모아주시고 많이 이용해주신 지인여러분께 정말 죄송한 마음이 들며
데이터를 안전하게 지키지 못한데 대해서 신뢰를 잃었다고 생각하니 다시 죄송한 마음이 듭니다.

최근 저의 재정이 악화된 관계로 파일서버를 해체할까하는 생각도 여러번 했었는데
파일서버가 존재하는 것이 여러모로 유용하고
외국영화, 일본드라마, 한국드라마, HD급 동영상, 유틸리티, 게임, 실험실 관련자료들은 그대로 살아있기때문에
이번일로 자책하여 운영을 중단하지는 않을 생각입니다.

파일서버 시스템 복구는 내일 중으로 이루어 질것이며
수요일까지는 정상적인 업다운이 가능하게끔 복구에 박차를 가할 생각입니다.
시스템 복구후에는 아무쪼록 신뢰감의 회복을 위하여 백업도 신경쓰는 운영자가 되겠습니다.;;;
다시한번 죄송의 말씀을 전하며 복구후에 필요하신 자료들을 요청하여 주시고
업로드에 도움이 되어 주실분들의 적극적인 참여를 부탁드리겠습니다.

감사합니다.

미천한 파일서버 운영자 드림 ㅠ
신고

soulfree.net 서버가 다운되었습니다;;

Projects/Server 2009.06.20 14:20 Posted by soulfree >동네청년<
문제는 서버의 그래픽카드 고장...
불편을 드려 죄송하게 생각합니다 꾸벅;;
신고

'Projects > Server' 카테고리의 다른 글

파일서버 복구 하였습니다!!  (0) 2010.01.27
파일서버 망했어요 ㅠㅠ  (0) 2009.07.20
soulfree.net 서버가 다운되었습니다;;  (0) 2009.06.20
20081122 업데이트  (0) 2008.11.22
20081116 업데이트  (0) 2008.11.16
20081030 업데이트  (0) 2008.10.30

ASP.NET App-Domain 못만든다고 할때...

Projects/CoRapport 2009.06.11 14:48 Posted by soulfree >동네청년<

출처 : 거만떡볶이의 일상다반사 http://chsoft.tistory.com/entry/%EC%97%90%EB%9F%AC%EC%B2%98%EB%A6%AC-Failed-to-execute-request-because-the-App-Domain-could-not-be-created-Error-0x80131902

XP로 개발환경을 바꿔서(블루투스 때문) 셋팅을 다시 해주어야 했습니다.
학부홈페이지 관리를 맡고 있는데 어셈블리 등록까지 마쳐도 이상하게도 응용프로그램 실행을 못한다고 웹브라우저에서 출력되더군요.
응용프로그램 이벤트로그 - 즉 이벤트뷰어를 보라는 이야기..- 에서 App-Domain을 만들지 못했다는 로그가 확인되서 구글링...
닷넷환경의 얾히고 섦힘 때문인가 보덥니다...

출처에서는...
웹서비스 종료해주고 net stop w3svc
최신 닷넷이 설치된 디렉토리 (c:\windows\microsoft.net\framework\vXXXX)라고 되어있는데 저는 그냥 2.0 디렉토리로 들어가서 작업했습니다. 학부홈페이지는 2.0으로 개발된거라... (WPF 개발을 해야하는 관계로 3.0, 3.5가 설치되어 있었죠.)
IIS와 연결된 모든 버전의 ASP.NET을 삭제.. aspnet_regiis -ua
v2.0로 설치.. aspnet_regiis -i
웹서비스 실행 net start w3svc
그리고 IIS에서 웹서비스 실행하면 놀랍게도 잘되더군요.
닷넷공부... 이제 시작인데 말이죠...벌써 고생길이 훤히 보입니다.ㅋㅋㅋ;;

신고

무료 XAML 편집기

Projects/CoRapport 2009.05.28 17:53 Posted by soulfree >동네청년<
나도 이젠 닷넷 & WPF 프로그래머의 기치를 내걸고 졸업논문 시스템 구현도 이제까지 주로 해왔던 자바를 떠나게 되었다.
개발환경 구축을 위하여 드림스파크에서 학생에게 무로 배포하는 블랜드2와 비주얼스튜디오2008(VS2008)을 사용하고 있었으나 블랜드에서 XAML(자멜) 편집기 수준은 그냥 문법에 색상을 넣는데 그치고 있다.
물론 VS2008에서는 자동완성 기능을 제공하고 있지만 그냥 자멜 실습만 할 요량으로 그 무거운놈을 쓰는것도 좀 그렇고
또 VS2008은 구문을 고쳐도 디자인 부분에서 바로 반영이 안되는 번거로움이 있다.

결국 자멜 편집기를 구글님에게 구하게 되었더니 역시나 해답이 나온다.
그 이름하여 Kaxaml - 가자멜이지만 왠지 가가멜에서 이름을 얻은듯하다.

사용자 삽입 이미지

스샷에서 보는 거처럼 검은 두건을 쓴 가가멜을 연상케하는 생김새를 가졌다.
뭐 블랜드에서 그 인터페이스를 가지고 왔긴 하겠다만은 말이다 ㅋ

알아낸 곳은 WPF Korea 이고 실제 다운로드 받는 주소는 이곳이다.
찰스페졸트의 WPF 프로그래밍 책을 실습할때 좋은 동반자가 될 것으로 보인다.
신고

C#과 JAVA 간단히 비교한 사이트

Projects/CoRapport 2009.04.28 11:41 Posted by soulfree >동네청년<

http://www.harding.edu/fmccown/java1_5_csharp_comparison.html

아래 복사는 Creative Commons License.에 따라 적법하게 긁어온것임.


 

Java (J2SE 5.0) and C# Comparison
This is a quick reference guide to highlight some key syntactical differences between Java and C#.
This is by no means a complete overview of either language. Hope you find this useful!
Also see VB.NET and C# Comparison.



 



Java Program Structure C#
package hello;

public class HelloWorld {
   public static void main(String[] args) {
      String name = "Java";

      // See if an argument was passed from the command line
      if (args.length == 1)
         name = args[0];

      System.out.println("Hello, " + name + "!");
    }
}
using System;

namespace Hello {
   public class HelloWorld {
      public static void Main(string[] args) {
         string name = "C#";

         // See if an argument was passed from the command line
         if (args.Length == 1)
            name = args[0];

         Console.WriteLine("Hello, " + name + "!");
      }
   }
}
Java Comments C#
// Single line
/* Multiple
    line  */

/** Javadoc documentation comments */
// Single line
/* Multiple
    line  */

/// XML comments on a single line
/** XML comments on multiple lines */
Java Data Types C#

Primitive Types
boolean
byte
char
short, int, long
float, double


Reference Types

Object   (superclass of all other classes)
String
arrays, classes, interfaces

Conversions

// int to String
int x = 123;
String y = Integer.toString(x);  // y is "123"

// String to int
y = "456";
x = Integer.parseInt(y);   // x is 456

// double to int
double z = 3.5;
x = (int) z;   // x is 3  (truncates decimal)

Value Types
bool
byte, sbyte
char
short, ushort, int, uint, long, ulong
float, double, decimal
structures, enumerations

Reference Types
object    (superclass of all other classes)
string
arrays, classes, interfaces, delegates

Convertions

// int to string
int x = 123;
String y = x.ToString();  // y is "123"

// string to int
y = "456";
x = int.Parse(y);   // or x = Convert.ToInt32(y);

// double to int
double z = 3.5;
x = (int) z;   // x is 3  (truncates decimal)

Java Constants C#
// May be initialized in a constructor
final double PI = 3.14;
const double PI = 3.14;

// Can be set to a const or a variable. May be initialized in a constructor.
readonly int MAX_HEIGHT = 9;

Java Enumerations C#

enum Action {Start, Stop, Rewind, Forward};

// Special type of class
enum Status {
  Flunk(50), Pass(70), Excel(90);
  private final int value;
  Status(int value) { this.value = value; }
  public int value() { return value; }
};

Action a = Action.Stop;
if (a != Action.Start)
  System.out.println(a);              
// Prints "Stop"

Status s = Status.Pass;
System.out.println(s.value());      // Prints "70"

enum Action {Start, Stop, Rewind, Forward};

enum Status {Flunk = 50, Pass = 70, Excel = 90};

No equivalent.





Action a = Action.Stop;
if (a != Action.Start)
  Console.WriteLine(a);             // Prints "Stop"

Status s = Status.Pass;
Console.WriteLine((int) s);       // Prints "70"

Java Operators C#

Comparison
==  <  >  <=  >=  !=

Arithmetic
+  -  *  /
(mod)
/  
(integer division if both operands are ints)
Math.Pow(x, y)

Assignment
=  +=  -=  *=  /=   %=   &=  |=  ^=  <<=  >>=  >>>=  ++  --

Bitwise
&  |  ^   ~  <<  >>  >>>

Logical
&&  ||  &  |   ^   !

Note: && and || perform short-circuit logical evaluations

String Concatenation
+

Comparison
==  <  >  <=  >=  !=

Arithmetic
+  -  *  /
(mod)
/  
(integer division if both operands are ints)
Math.Pow(x, y)

Assignment
=  +=  -=  *=  /=   %=  &=  |=  ^=  <<=  >>=  ++  --

Bitwise
&  |  ^   ~  <<  >>

Logical
&&  ||  &  |   ^   !

Note: && and || perform short-circuit logical evaluations

String Concatenation
+

Java Choices C#

greeting = age < 20 ? "What's up?" : "Hello";

if (x < y)
  System.out.println("greater");

if (x != 100) {   
  x *= 5;
  y *= 2;
}
else
  z *= 6;

int selection = 2;
switch (selection) {     // Must be byte, short, int, char, or enum
  case 1: x++;            // Falls through to next case if no break
  case 2: y++;   break;
  case 3: z++;   break;
  default: other++;
}

greeting = age < 20 ? "What's up?" : "Hello";

if (x < y) 
  Console.WriteLine("greater");

if (x != 100) {   
  x *= 5;
  y *= 2;
}
else
  z *= 6;

string color = "red";
switch (color) {                          // Can be any predefined type
  case "red":    r++;    break;       // break is mandatory; no fall-through
  case "blue":   b++;   break;
  case "green": g++;   break;
  default: other++;     break;       // break necessary on default
}

Java Loops C#

while (i < 10)
  i++;

for (i = 2; i <= 10; i += 2)
  System.out.println(i);

do
  i++;
while (i < 10);

for (int i : numArray)  // foreach construct 
  sum += i;

// for loop can be used to iterate through any Collection
import java.util.ArrayList;
ArrayList<Object> list = new ArrayList<Object>();
list.add(10);    
// boxing converts to instance of Integer
list.add("Bisons");
list.add(2.3);   
// boxing converts to instance of Double

for (Object o : list)
  System.out.println(o);

while (i < 10)
  i++;

for (i = 2; i <= 10; i += 2)
  Console.WriteLine(i);

do
  i++;
while (i < 10);

foreach (int i in numArray) 
  sum += i;

// foreach can be used to iterate through any collection 
using System.Collections;
ArrayList list = new ArrayList();
list.Add(10);
list.Add("Bisons");
list.Add(2.3);

foreach (Object o in list)
  Console.WriteLine(o);

Java Arrays C#
int nums[] = {1, 2, 3};   or   int[] nums = {1, 2, 3};
for (int i = 0; i < nums.length; i++)
  System.out.println(nums[i]);

String names[] = new String[5];
names[0] = "David";

float twoD[][] = new float[rows][cols];
twoD[2][0] = 4.5;

int[][] jagged = new int[5][];
jagged[0] = new int[5];
jagged[1] = new int[2];
jagged[2] = new int[3];
jagged[0][4] = 5;

int[] nums = {1, 2, 3};
for (int i = 0; i < nums.Length; i++)
  Console.WriteLine(nums[i]);

string[] names = new string[5];
names[0] = "David";

float[,] twoD = new float[rows, cols];
twoD[2,0] = 4.5f;

int[][] jagged = new int[3][] {
    new int[5], new int[2], new int[3] };
jagged[0][4] = 5;

Java Functions C#
// Return single value
int Add(int x, int y) {
   return x + y;
}

int sum = Add(2, 3);

// Return no value
void PrintSum(int x, int y) {
   System.out.println(x + y);
}

PrintSum(2, 3);

// Primitive types and references are always passed by value
void TestFunc(int x, Point p) {
   x++;
   p.x++;      
// Modifying property of the object
   p = null;    // Remove local reference to object
}

class Point {
   public int x, y;
}

Point p = new Point();
p.x = 2;
int a = 1;
TestFunc(a, p);
System.out.println(a + " " + p.x + " " + (p == null) );  // 1 3 false




// Accept variable number of arguments
int Sum(int ... nums) {
  int sum = 0;
  for (int i : nums)
    sum += i;
  return sum;
}

int total = Sum(4, 3, 2, 1);   // returns 10

// Return single value
int Add(int x, int y) {
   return x + y;
}

int sum = Add(2, 3);

// Return no value
void PrintSum(int x, int y) {
   Console.WriteLine(x + y);
}

PrintSum(2, 3);

// Pass by value (default), in/out-reference (ref), and out-reference (out)
void TestFunc(int x, ref int y, out int z, Point p1, ref Point p2) {
   x++;  y++;  z = 5;
   p1.x++;       // Modifying property of the object     
   p1 = null;    // Remove local reference to object
   p2 = null;   // Free the object
}

class Point {
   public int x, y;
}

Point p1 = new Point();
Point p2 = new Point();
p1.x = 2;
int a = 1, b = 1, c;   // Output param doesn't need initializing
TestFunc(a, ref b, out c, p1, ref p2);
Console.WriteLine("{0} {1} {2} {3} {4}",
   a, b, c, p1.x, p2 == null);   // 1 2 5 3 True

// Accept variable number of arguments
int Sum(params int[] nums) {
  int sum = 0;
  foreach (int i in nums)
    sum += i;
  return sum;
}

int total = Sum(4, 3, 2, 1);   // returns 10

Java Strings C#

// String concatenation
String school = "Harding ";
school = school + "University";   // school is "Harding University"

// String comparison
String mascot = "Bisons";
if (mascot == "Bisons")    
// Not the correct way to do string comparisons
if (mascot.equals("Bisons"))  
// true
if (mascot.equalsIgnoreCase("BISONS"))  
// true
if (mascot.compareTo("Bisons") == 0)   // true

System.out.println(mascot.substring(2, 5));   // Prints "son"

// My birthday: Oct 12, 1973
java.util.Calendar c = new java.util.GregorianCalendar(1973, 10, 12);
String s = String.format("My birthday: %1$tb %1$te, %1$tY", c);

// Mutable string
StringBuffer buffer = new StringBuffer("two ");
buffer.append("three ");
buffer.insert(0, "one ");
buffer.replace(4, 7, "TWO");
System.out.println(buffer);     // Prints "one TWO three"

// String concatenation
string school = "Harding ";
school = school + "University";   // school is "Harding University"

// String comparison
string mascot = "Bisons";
if (mascot == "Bisons")   
// true
if (mascot.Equals("Bisons"))   
// true
if (mascot.ToUpper().Equals("BISONS"))  
// true
if (mascot.CompareTo("Bisons") == 0)    // true

Console.WriteLine(mascot.Substring(2, 3));    // Prints "son"

// My birthday: Oct 12, 1973
DateTime dt = new DateTime(1973, 10, 12);
string s = "My birthday: " + dt.ToString("MMM dd, yyyy");

// Mutable string
System.Text.StringBuilder buffer = new System.Text.StringBuilder("two ");
buffer.Append("three ");
buffer.Insert(0, "one ");
buffer.Replace("two", "TWO");
Console.WriteLine(buffer);     // Prints "one TWO three"

Java Exception Handling C#

// Must be in a method that is declared to throw this exception
Exception ex = new Exception("Something is really wrong.");
throw ex;  

try {
  y = 0;
  x = 10 / y;
} catch (Exception ex) {
  System.out.println(ex.getMessage());
} finally {
 
// Code that always gets executed
}

Exception up = new Exception("Something is really wrong.");
throw up;  // ha ha


try
{
  y = 0;
  x = 10 / y;
} catch (Exception ex) {     
// Variable "ex" is optional
  Console.WriteLine(ex.Message);
} finally {
 
// Code that always gets executed
}

Java Namespaces C#

package harding.compsci.graphics;












import
harding.compsci.graphics.Rectangle;  // Import single class

import harding.compsci.graphics.*;   // Import all classes

namespace Harding.Compsci.Graphics {
  ...
}

or

namespace Harding {
  namespace Compsci {
    namespace Graphics {
      ...
    }
  }
}

// Import all class. Can't import single class.
using Harding.Compsci.Graphics;

Java Classes / Interfaces C#

Accessibility keywords
public
private
protected
static



// Inheritance
class FootballGame extends Competition {
  ...
}

// Interface definition
interface IAlarmClock {
  ...
}

// Extending an interface
interface IAlarmClock extends IClock {
  ...
}

// Interface implementation
class WristWatch implements IAlarmClock, ITimer {
   ...
}

Accessibility keywords
public
private
internal
protected
protected internal
static

// Inheritance
class FootballGame : Competition {
  ...
}

// Interface definition
interface IAlarmClock {
  ...
}

// Extending an interface
interface IAlarmClock : IClock {
  ...
}

// Interface implementation
class WristWatch : IAlarmClock, ITimer {
   ...
}

Java Constructors / Destructors C#

class SuperHero {
  private int mPowerLevel;

  public SuperHero() {
    mPowerLevel = 0;
  }

  public SuperHero(int powerLevel) {
    this.mPowerLevel= powerLevel;
  }

  // No destructors, just override the finalize method
  protected void finalize() throws Throwable {
    super.finalize();   // Always call parent's finalizer  
  }
}

class SuperHero {
  private int mPowerLevel;

  public SuperHero() {
     mPowerLevel = 0;
  }

  public SuperHero(int powerLevel) {
    this.mPowerLevel= powerLevel;
  }

  ~SuperHero() {
   
// Destructor code to free unmanaged resources.
    // Implicitly creates a Finalize method.

  }
}

Java Objects C#

SuperHero hero = new SuperHero();

hero.setName("SpamMan");
hero.setPowerLevel(3);

hero.Defend("Laura Jones");
SuperHero.Rest();  // Calling static method

SuperHero hero2 = hero;   // Both refer to same object
hero2.setName("WormWoman");
System.out.println(hero.getName());  // Prints WormWoman

hero = null;   // Free the object

if (hero == null)
  hero = new SuperHero();

Object obj = new SuperHero();
System.out.println("object's type: " + obj.getClass().toString());
if (obj instanceof SuperHero)
  System.out.println("Is a SuperHero object.");

SuperHero hero = new SuperHero();

hero.Name = "SpamMan";
hero.PowerLevel = 3;

hero.Defend("Laura Jones");
SuperHero.Rest();   // Calling static method

SuperHero hero2 = hero;   // Both refer to same object
hero2.Name = "WormWoman";
Console.WriteLine(hero.Name);   // Prints WormWoman

hero = null ;   // Free the object

if (hero == null)
  hero = new SuperHero();

Object obj = new SuperHero();
Console.WriteLine("object's type: " + obj.GetType().ToString());
if (obj is SuperHero)
  Console.WriteLine("Is a SuperHero object.");

Java Properties C#

private int mSize;

public int getSize() { return mSize; }
public void setSize(int value) {
  if (value < 0)
    mSize = 0;
  else
    mSize = value;
}


int s = shoe.getSize();
shoe.setSize(s+1);

private int mSize;

public int Size {
  get { return mSize; }
  set {
    if (value < 0)
      mSize = 0;
    else
      mSize = value;
  }
}

shoe.Size++;

Java Structs C#



No structs in Java.

struct StudentRecord {
  public string name;
  public float gpa;

  public StudentRecord(string name, float gpa) {
    this.name = name;
    this.gpa = gpa;
  }
}

StudentRecord stu = new StudentRecord("Bob", 3.5f);
StudentRecord stu2 = stu;  

stu2.name = "Sue";
Console.WriteLine(stu.name);   
// Prints "Bob"
Console.WriteLine(stu2.name);   // Prints "Sue"
Java Console I/O C#
java.io.DataInput in = new java.io.DataInputStream(System.in);
System.out.print("What is your name? ");
String name = in.readLine();
System.out.print("How old are you? ");
int age = Integer.parseInt(in.readLine());
System.out.println(name + " is " + age + " years old.");


int c = System.in.read();   // Read single char
System.out.println(c);      // Prints 65 if user enters "A"

// The studio costs $499.00 for 3 months.
System.out.printf("The %s costs $%.2f for %d months.%n", "studio", 499.0, 3);

// Today is 06/25/04
System.out.printf("Today is %tD\n", new java.util.Date());

Console.Write("What's your name? ");
string name = Console.ReadLine();
Console.Write("How old are you? ");
int age = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0} is {1} years old.", name, age);
// or
Console.WriteLine(name + " is " + age + " years old.");

int c = Console.Read();  // Read single char
Console.WriteLine(c);    // Prints 65 if user enters "A"

// The studio costs $499.00 for 3 months.
Console.WriteLine("The {0} costs {1:C} for {2} months.\n", "studio", 499.0, 3);

// Today is 06/25/2004
Console.WriteLine("Today is " + DateTime.Now.ToShortDateString());

Java File I/O C#

import java.io.*;

// Character stream writing
FileWriter writer = new FileWriter("c:\\myfile.txt");
writer.write("Out to file.\n");
writer.close();

// Character stream reading
FileReader reader = new FileReader("c:\\myfile.txt");
BufferedReader br = new BufferedReader(reader);
String line = br.readLine();
while (line != null) {
  System.out.println(line);
  line = br.readLine();
}
reader.close();

// Binary stream writing
FileOutputStream out = new FileOutputStream("c:\\myfile.dat");
out.write("Text data".getBytes());
out.write(123);
out.close();

// Binary stream reading
FileInputStream in = new FileInputStream("c:\\myfile.dat");
byte buff[] = new byte[9];
in.read(buff, 0, 9);  
// Read first 9 bytes into buff
String s = new String(buff);
int num = in.read();  
// Next is 123
in.close();

using System.IO;

// Character stream writing
StreamWriter writer = File.CreateText("c:\\myfile.txt");
writer.WriteLine("Out to file.");
writer.Close();

// Character stream reading
StreamReader reader = File.OpenText("c:\\myfile.txt");
string line = reader.ReadLine();
while (line != null) {
  Console.WriteLine(line);
  line = reader.ReadLine();
}
reader.Close();


// Binary stream writing

BinaryWriter out = new BinaryWriter(File.OpenWrite("c:\\myfile.dat"));
out.Write("Text data");
out.Write(123);
out.Close();

// Binary stream reading
BinaryReader in = new BinaryReader(File.OpenRead("c:\\myfile.dat"));
string s = in.ReadString();
int num = in.ReadInt32();
in.Close();

Page last modified: 11/10/2007 07:31:19

Copyright © 2004 by Frank McCown
Please send any corrections or comments to fmccown@harding.edu.

Home

Creative Commons License
This work is licensed under a Creative Commons License.

신고

http request 및 response 헤더 보여주는 툴

Projects/CoRapport 2009.04.12 18:26 Posted by soulfree >동네청년<
헤더를 못봤다면 헤매였을 아까운 시간들 모두다 save ㅠㅠ;;ㅋㅋ 이젠 밝게 웃자

정확한 용도는 http 메시지 trace 용도이다. 제목도 HTTP trace!!
http://www.schroepl.net/cgi-bin/http_trace.pl
신고

닷넷 euc-kr 형식처리

Projects/CoRapport 2009.04.11 17:57 Posted by soulfree >동네청년<

스트림리더에 있었구나 ㅠㅠ 바이트 바꾸고 삽질했네...

http://hoons.kr/board.aspx?Name=qacshap&Mode=2&BoardIdx=7428&Key=&Value=

핵심은...
TextReader r = (TextReader)new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default);

신고
TAG EUC-KR, 닷넷

닷넷에서 쿠키로 인증된 세션유지하기 :

http://ttjkim.egloos.com/5455842
http://mihye.tistory.com/tag/CookieContainer --> 이 링크에서 보여주는 6번째 문장 다음에 CookieContainer 객체를 HttpWebRequest 객체의 CookieContainer 필드에 넣어줘야  정상적으로 동작할 것입니다.
즉 아래 소스의 붉은색 부분을 추가해줘야 합니다...


 

string repURL = "http://이미지주소.jpg";  
string weburl = "http://게시판주소.php";

/// Call Web Request   
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(weburl);  

//이부분에 다음과 같이 해줘야 할 것이다.
req.CookieContainer = new CookieContainer();

/// Read the content.  
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();                            

req = (HttpWebRequest)WebRequest.Create(repURL);  
req.CookieContainer = new CookieContainer(); /// 쿠키를 동일하게 해줍니다.  
req.CookieContainer.Add(resp.Cookies);  
req.Method = "GET"; /// GET방식으로 바꾸어 줍니다. (POST로 할 시 HTTP 403 Error 발생합니다.)                   

/// Read the content.  
WebResponse res = req.GetResponse();  
Image img = Image.FromStream(res.GetResponseStream());  
img.Save("special.bmp"); /// 받아온 이미지 저장 


 

왜냐하면 쿠키 컨테이너 객체가 생성되지 않은 상태에서 response 객체의 쿠키정보를 정상적으로 저장하지 못하기 때문입니다.

또한 HttpWebResponse 객체에 응답을 저장하고 작업을 완료했으면 close 메서드를 사용해서 스트림을 꼭 닫아줘야합니다. resp.Close() 이런식으로... 안그러면 어떤 경우에는 응답을 제대로 받지 못하는 WebException이 발생할 것입니다....
데이터베이스 쿼리랑 결과 받아오는 곳과 같은 소켓 + 스트림을 다루면 열었으면 닫는다는 생각을 항상하고 있는데
C 수업시간에도 파일입출력 가르쳐주면서 항상 강조했는데
이런 실수로 1~2시간을 낭비하다니 참... 서글픕니다...

신고

http://hc.apache.org/index.html

OverView

The Hyper-Text Transfer Protocol (HTTP) is perhaps the most significant protocol used on the Internet today. Web services, network-enabled appliances and the growth of network computing continue to expand the role of the HTTP protocol beyond user-driven web browsers, while increasing the number of applications that require HTTP support.

Designed for extension while providing robust support for the base HTTP protocol, the HttpComponents may be of interest to anyone building HTTP-aware client and server applications such as web browsers, web spiders, HTTP proxies, web service transport libraries, or systems that leverage or extend the HTTP protocol for distributed communication.

신고

이런저런 이유로 CoPlace 제작을 생각하다

Projects/CoRapport 2009.04.10 21:06 Posted by soulfree >동네청년<

이 글 위에와 같은 이유로 실버라이트 또는 플랙스 플래쉬 기반의 웹 컴포넌트 형식의 다운로더를 제작하는 것은 제약이 있었습니다.
가장 간단한 해결책은 파일쓰기기능을 부분적으로 지원한다는 실버라이트 3.0을 기다리던지
플랙스+AIR 기반으로 제작하는 것,
피해야 미덕이 된 액티브 X 기반으로 다운로드 컴포넌트를 제작하는 것이었죠.

실버라이트3.0을 기다린다 하여도 제작툴인 블랜드3가 무료로 제공된다는 보장도 없고 - 실은 개발환경 구축이 얽히고 섥히는게 싫음 - 또 졸업하기 전에 나올거라는 보장이 없어서 패스...
플랙스+AIR 기반 프로그램을 하려니 툴을 구입할 돈이 없고 액션 스크립트보다는 C#프로그래밍을 통한 윈도 어플리케이션을 만들고 싶어서 패스...
액티브X는 생각도 안하고 있습니다.

액티브X 처럼 동작하는 컴포넌트라면 차라리 그냥 어플리케이션을 만들어야겠다는 생각이 들어서
WPF기반의 UI를 제공하는 다운로드 어플리케이션을 제작하기로 마음 먹었습니다.
그것이 바로 CoPlace입니다.

용도는 우리 실험실 선배님들의 역작인 iPlace - 웹기반 EJB 기술을 통한 협업 공동 작업 환경 웹 어플리케이션 -의 파일을 다운로드 받는 것이 주 용도가 되겠습니다.

차후 다운로드 기능이 어느정도 정상적으로 동작을 하면 교수님께 알려드리고 iPlace에서 지원하는 기능과 CoSpace - 웹데브 프로토콜을 이용한 협업 공동 작업 환경 소프트웨어 - 에서 아쉬웠던 기능을 집어 넣을까 생각해봅니다.

신고
실버라이트로 멀티 다운로드 컴포넌트를 만들 수 있을까 해서 이틀동안 고민해보았습니다.
일단은 안될거 같다는 결론이 드네요.
문제는 실버라이트의 보안요소 때문입니다.
파일을 쓰기위한 파일의 전체경로를 얻을 수 있는 메서드와 궁극적으로 파일을 쓰는 메서드가 보안중요로 묶여있어서,
런타임시 억세스할 수 없다는 에러메시지가 브라우저에 표시되는군요.
뭐 전용공간 isolated storage에 저장하도록 만들수는 있겠지만 적용하려는 웹 사이트 사용자들 지탄이 우려됩니다 ㅎㅎ;;
좀더 다른 방법을 찾아보아야겠어요 ㅎ ;;;
신고
은근히 시리얼 다룰 일이 많다...

http://msdn.microsoft.com/ko-kr/magazine/cc301786(en-us).aspx#S1

내가 사용하게 되는 firmtech의 BTWIN BM2001 블루투스 USB 어뎁터에서는
AT코드라는 firmtech 회사에서 만들어 내장한 명령어로 블루투스 장치와 통신하는데
제공되는 예제 프로그램으로도 아주 잘~~ 동작되었다.
AT코드를 수정할려면 이놈도 AVR 프로그램을 해야된다... 즉... 이 작은 놈 안에 ATMega128이 내장되어 있다는 이야기더라... 헐... 한번 진짜 심도있게 AVR 프로그램 공부를 해볼까...
신고