자기꾀에 자기가 넘어가는구나

사용자 삽입 이미지

ActiveX로 개발하는게 생산성도 좋고 편하다고?

그럼 매번 IE로 업그레이드 될때마다 수정해줘야 하는게 생산성이 매우 뛰어나는구나
꼭 Linux도아닌 MAC도 아닌 MS Windows의 IE6, IE7 에서만 사용해주시기 바랍니다.
자랑이다!

Posted by reiKop

2009/03/31 15:51 2009/03/31 15:51
, ,
Response
No Trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/75

거꾸로 돌아가는 세상 - 오픈웹의 패소

http://openweb.or.kr

오늘 아침부터 기분이 무척 안좋다.
나라가 어떻게 돌아가는지 정말 엿같다.

오픈웹?


오픈웹이 뭐하는 곳일까?

김기창 교수가 운영하는 사이트로서 MS에 IE에서만 결제가 가능한 국내 시스템을 리눅스, 맥에서도 결재할수 있도록 민사소송을 낸 곳이다.

간단히 말했지만 더 궁금하면 오픈웹, 금결원 에대해서 검색을.


왜 패소 했을까?


김기창 교수가 민사소송을 내고 원하는 댓가는 돈이 아니었다.
모든 이들이 다른 운영체제(Linux, Mac)과 모든 브라우져(IE, FF, Chrome, Opera, Safari....) 에서도 결재가 가능하게 하는것이다.

그리고 당연히 유추해볼수도 있을것이다.
검사, 판사 역시도 처음 접해본 컴퓨터에는 MS-DOS와 MS-Windows가 깔려있는 컴퓨터였고 아무런 생각없이 M$의 운영체제와 프로그램들을 사용해왔다. 법정에서 쓰는 문서들도 전부 Windows를 썻겠지.. 그 잘나신 분들이 사용하는 컴퓨터가 Linux일리는 만무하지 않은가?

국민의 99.8%가 IE를 사용하는만큼 전국민의 의식또한 M$가 머리속에 들어가있다. 물론 M$를 증오하고 경멸하는 개발자 혹은 얼리어덥터 그리고 웹에 대해서 지식이 풍무한 학생, 직장인들은 이 문제에 대해서 생각해볼것이다.

전문 변호사, 전문 판사가 필요하다


1심에서 패소하고 2심 고등법원에서 패소한 오픈웹의 소송결과는 인터넷에 대해서 무지한 판사,변호사가 저지른 일이다. 어떻게 이런일이 일어날수가 있는지 도통 모르겠다.
웹에 대해서 해박한 변호사, 판사였다면 이문제를 어떻게 해석했을까? 사뭇 궁금해진다.

마이크로소트프 윈도우를 사용하시기 바랍니다.


2심 패소후 오픈웹에 남겨진 쓸쓸한 문구 이다.
김기창교수의 분노가 느껴지는 짧고 강한 글이었다.
썩을 IE
언제쯤 윗대가리놈들의 생각은 시대의 흐름에 배를 타고 갈런지 모르겠다.

Posted by reiKop

2009/03/26 11:32 2009/03/26 11:32
, , , , , , , , ,
Response
3 Trackbacks , 2 Comments
RSS :
http://reikop.raony.net/blog/rss/response/74

[SL] 값을 포함해서 이벤트를 송출하자!~

전에 소개했던 이벤트 송출 방식에는 이벤트의 발생만 나타낼수만 있다.
하지만 지금 포스팅하는 문서에는 값을 포함햇 이벤트를 발생할수 있는법을 제시한다.

[code c#]
public event RoutedPropertyChangedEventHandler<double> VolumnChanged;
protected virtual void OnVolumnChanged(double oldValue, double newValue)
{
    RoutedPropertyChangedEventHandler<double> handler = VolumnChanged;
    if (handler != null)
    {
        handler(this, new RoutedPropertyChangedEventArgs<double>(oldValue, newValue));
    }
}
[/code]

이벤트를 발생시키려면

[code c#]
OnVolumnChanged( 0.9 , 1.0 );
[/code]

Posted by reiKop

2009/03/23 10:51 2009/03/23 10:51
, , ,
Response
A trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/73

[SL] 브라우져의 리사이즈 이벤트

플래시에서는 브라우져가 크기가 변경될시에 발생하는 이벤트가 있다.

[code java]
addEventListener("resize",resizeEvent);
function resizeEvent(e:Event):void
{
    trace( this.width, this.height );
}
[/code]


실버라이트에서는 이것을 찾는게 어려웠다.
Resize 라는 이벤트도 없고 난감했는데 구글링을 통해 쉽게 답을 얻었다.


[code c#]
public Page(){
    InitializeComponent();
    App.Current.Host.Content.Resized += new EventHandler(Content_Resized);
}
[/code]

이벤트를 받아온 함수에서는 값을 받아오면 된다!

[code c#]
void Content_Resized(object sender, EventArgs e){
     double height = App.Current.Host.Content.ActualHeight;
     double width = App.Current.Host.Content.ActualWidth;
}
[/code]

참고한 사이트
http://silverlight.net/blogs/msnow/archive/2008/06/06/browser-resize-how-to-determine-your-browser-size.aspx

Posted by reiKop

2009/03/19 15:40 2009/03/19 15:40
, , , , ,
Response
No Trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/72

'clr-namespace' URI가 프로젝트에서 참조되지 않은 어셈블리를 가리킵니다.


 실버라이트나 WPF 개발이 처음인 사람은 한번쯤 겪어 봤을만한 오류일것이다.

사용자 삽입 이미지

네임스페이스를 적고 어셈블리를 적었는데도 계속 저오류만 뜨고 있으니 말이다.

이걸 가지고 계속 고생했던것을 생각하면 억울하다 ㅠㅠ..

문제는 무엇이었을까??

빌드..


그렇다  빌드를 안했던것이다.-_-.;;;;

프로젝트를 생성하고 바로 네임스페이스 작업을 했으니 당연하지..

Flex 개발만 해서 그런거 같다.. 플렉스는 저장할때 빌드해 주니..

빌드된 DLL파일이나 XAP에서 참조해 오는건데 빌드가 된것이 없으니 이런 에러를 ..

같은 문제로 고민하지 말았으면해서 이포스트를 남긴다.

Posted by reiKop

2009/03/18 10:10 2009/03/18 10:10
, , , , ,
Response
A trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/71

[SL] 풀스크린 지정하기

동영상 플레이어나 특이한상황에서 풀스크린 지정이 필요할 때가 있다.
이때는 이렇게 해주면 된다.

[code c#]
void FullScreen()
{
    System.Windows.Interop.SilverlightHost host =  Application.Current.Host;
    System.Windows.Interop.Content content = host.Content;
    content.IsFullScreen = true;
}
[/code]

원래 화면으로 돌아오려면
Windows 는 Alt+F4, ESC 키
MAC 은 ESC키면 돌아온다.

그리고 전체화면으로 됐을때 사이즈를 알고 싶으면 이벤트를 등록하면 된다.

[code c#]
content.FullScreenChanged += new EventHandler(content_FullScreenChanged);
void content_FullScreenChanged(object sender, EventArgs e)
{
    content.ActualHeight;
    content.ActualWidth;
}
[/code]

참 쉽죠잉

Posted by reiKop

2009/03/12 09:49 2009/03/12 09:49
, , ,
Response
No Trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/70

[SL] delegate란 무엇인가?


delegate는 무엇일까?


 다른 Method에 대한 참조를 가지고 있다가 delegate를 호출하면 자신이 참조하고 있는 Mathod를 실행하는 것이다.

사전적 의미는 대표자;위임하다;대표로 위임하다 라는 뜻이네요



일단 delegate를 선언을 하게 되면 그 delegate는 함수를 참조하게 된다.

[code c#]
using System;
namespace ex_10_delegate
{
    class Program
    {
        public delegate void PrintOut(string s); // delegate declare
        public static void WriteToConsole(string s)
        {
            Console.WriteLine(s);
        }
        static void Main(string[] args)
        {
            PrintOut printout = new PrintOut(WriteToConsole);
            printout(" PrintOut을 호출한다");
            printout("PrintOut은 다시 WriteToConsole을 호출한다");
        }
    }
}
[/code]


특이한 점은 delete에 함수를 "+" 연산자를 써서 연속적으로 함수 호출이 가능하다는 것이다.

[code c#]
using System;
namespace delegate_coffee
{
    class Program
    {
        public delegate void Stuff(); // delegate declare
        public static void Sugar()
        {
            Console.WriteLine("Sugar");
        }
        public static void Cream()
        {
            Console.WriteLine("Cream");
        }
        public static void Milk()
        {
            Console.WriteLine("Milk");
        }
        public static void Coffee()
        {
            Console.WriteLine("Coffee");
        }
        static void Main(string[] args)
        {
            Stuff S = new Stuff(Sugar);
            Stuff C = new Stuff(Cream);
            Stuff M = new Stuff(Milk);
            Stuff Cafe = new Stuff(Coffee);
            Console.WriteLine("비엔나 커피 만들기: ");
            Stuff Vienna = S + C + Cafe;
            Vienna();
            Console.WriteLine("블랙 커피 만들기: ");
            Stuff  BlackCoffee = S  + Cafe;
            BlackCoffee();
        }
    }
}
/*
*델리게이트 객체는 메모리에서 할당될 때 생성자에 매개 변수로 메쏘드를 넘겨 받는다. 이 메쏘드를 Named Method라 한다.
*/
[/code]


그리고 deleate는 익명함수를 만들수 있다.
[code c#]
using System;
namespace delegate_Annonymouse
{
    class Program
    {
        public delegate void PrintOut(string s);
        static void Main(string[] args)
        {
            //익명 메쏘드 정의
            PrintOut printout = delegate(string s)
            {
                Console.WriteLine(s);
            };
            printout("익명 메쏘드");
            printout("쉬윈가 쉽지 않은가?");
        }
    }
}
/*
* 익명 메쏘드는 재사용되지 않는 코드를 가진 메쏘드를 델리게이트가 호출하게 될 경우에 유용하게 사용될 수 있다.
*/
[/code]

마지막으로 이벤트를 응용한다.

[code c#]
using System;
namespace delegate_event
{
    class Client
    {
        private int ID;
        public delegate void ClientService(object sender, EventArgs args);
        public event ClientService Service;
        public Client(int ID)
        {
            this.ID = ID;
        }
        public int ClientID
        {
            get { return this.ID; }
        }
        public void FireEvent()
        {
            if (Service != null)
            {
                EventArgs args = new EventArgs();
                Service(this, args);
            }
        }
    }
    class Program
    {
        public static void OnEvent(object sender, EventArgs args)
        {
            Client client = (Client)sender;
            Console.WriteLine("{0} , event fire", client.ClientID);
        }
        static void Main(string[] args)
        {
            Client clientA = new Client(1);
            clientA.Service += new Client.ClientService(OnEvent);
            clientA.FireEvent();
        }
    }
}
[/code]

Posted by reiKop

2009/03/11 16:02 2009/03/11 16:02
, , ,
Response
No Trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/69

[SL] 커스텀 이벤트

플렉스 개발자를 위한 실버라이트 개발

 플래시에서는 dispatchEvent를 사용해서 이벤트를 송출하고 addEventListener로 이벤트를 받는다.

[code]
dispatchEvent(new Event('test'),testFn);
function testFn(e:Event):void
{
    trace(e.type);
}
[/code]

 그렇다면 실버라이트에서는 어떻게 할까?
우선 이벤트 등록은

[code c#]public event EventHandler Test;[/code]
이렇게 하게되면 다른 클래스에서 Test라는 이벤트를 등록해서 사용할수 있다.
[code c#]
클래스.Test += new EventHandler(e_test);
 void e_Test(object sender, EventArgs e)
{
    MessageBox.Show("EventDispatched");
}
[/code]

 이젠 이벤트를 Fire해볼까? 간단하게 변수값과함께 이벤트를 송출한다.
그전에 null값 체크하고서 송출해주어야 한다.
[code c#]
 Test(this, null);
[/code]

SL정보는 틀릴수가 있으므로 다른내용이 있다면 댓글을 부탁드립니다.

Posted by reiKop

2009/03/11 14:39 2009/03/11 14:39
, , , ,
Response
A trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/68

링크를 걸때 주의점

아래 코드에서 다른 점이 무엇 일까?

<a href="../rss">RSS</a>
<a href="../rss/">RSS</a>
바로 "/"가 뒤에 붙지 않았다는 것이다. 몇몇 코더나 개발자들은 '에이 이게뭘.. ' 이럴텐데 작지만 작지 않은 웹 서버에 부하가 나타날 수 있다. 이유는 무엇일까? 아래 사진을 보면 간단히 이해할 수 있을 것이다.

사용자 삽입 이미지
사용자 삽입 이미지
Apache 서버에서 연결된 링크에 "/"가 안붙어 있다면 "/"가 붙어 있도록 하며 그 폴더 안에 있는 index.php를 찾아서 자동으로 Redirect 시켜주게 된다.

WebServer에서는 아주 작은 양을 처리하지만 '띠끌 모아 태산' 이라고 모이게 되면 WebServer에 큰 부하가 일수도 있다.

부록으로 각 언어마다 HTTP 301 Moved Permanenlty 사용법을 모아 보았다.

Posted by reiKop

2009/03/06 11:53 2009/03/06 11:53
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/67

XML, AMF등 데이터 서비스를 쉽게 하는 클래스

전에 한번 소개한적이 있는 데이터서비스를 쉽게 해주는 클래스를 성능향상을 업데이트 해서 제작 했다.

OpenZet 프로젝트를 참여 하면서 전에 만들 클래스들을 리팩토링도 하고 Interface를 추가해서 넣었다.


XML등을 로드 하기 위해서 이렇게 해주면 된다.

XML이 EUC-KR인코딩일 경우 간혹 데이터를 제대로 못 읽어오는 문제를 해결했다.


[code]var hl:HTTPLoader = new HTTPLoader();
hl.addEventListener("complete",resultHandler);
hl.load(new URLRequest("http://testXMLAnithing.xml","EUC-KR"));
 
function resultHandler(e:RPCEvent):void
{
        var xml:XMLList = new XML(e.data).children();
        Alert.show(xml.toXMLString());
}

[/code]


그리고 BlazeDS의 등장으로 플래시 시절 많이 사용하던 openAmf, AMFPHP 등을 편하게 연결해주는 클래스도 제작되었다.

[code]var ac:AMFCaller = AMFCaller.getInstance();
ac.URL = "http://YourAMFGatewayAdress";
ac.addEventListener(RPCEvent.COMPLETE,completeEvent);
ac.call("test.TestClass.getTest");
function completeEvent(e:RPCEvent):void
{
Alert.show(e.data);
}
[/code]
 
마지막으로 BlazeDS, FDS등 RemoteObejct를 사용하는 데이터 통신을 마찬가지로 쉽게 가지고 오게 했다.
[code]var param:Object = {};
param.id = "reikop";
 
var ro:RemoteObjectCaller = RemoteObjectCaller.getInstance();
ro.addEventListener("complete",resultHandler);
ro.call("test.getTest",param);
 
function resultHandler(e:ResultEvent):void
{
Alert.show(e.data as String);
}[/code]
 
 
 

자세한 도움말을 보고 싶다면 다음 위키를 참조하면 된다.

그리고 오픈젯 프로젝트에 대해서 알고 싶다면 여기를 클릭하면 된다.

Posted by reiKop

2009/03/05 16:24 2009/03/05 16:24
Response
3 Trackbacks , No Comment
RSS :
http://reikop.raony.net/blog/rss/response/66


블로그 이미지

HTML, Javascript 이야기

- reiKop

Notices

  1. 첫글.

Archives

Authors

  1. reiKop

Calendar

«   2009/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Site Stats

Total hits:
26923
Today:
7
Yesterday:
36