퇴근5분전


       int[] intArray = Array.ConvertAll<char,int>(
                            "1234567890".ToCharArray(),
                            new Converter<char, int>(
                                (c)=>Convert.ToInt32( c.ToString() )
                        ));


 람다식 이용하니... 나름 쉽게 됨.

주민번호 유효성 체크를 하면서 한꺼번에 변환 하는 부분을 처리하다가 ArrayConverter를 써봄.

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

FlexGrid ] Cols[ 컬럼명 ].DataMap  (0) 2011.12.07
GlassForm  (1) 2011.11.15
ClickOnce UpdateAsync ~!!  (0) 2011.10.31
LINQ] GroupBy  (0) 2011.10.12
컨텐츠 판넬 이전/ 다음 구현..  (0) 2011.09.14

  게시된 프로그램을 업데이트 하는 방법에 대해 훈스 질문란에 '민스'님이 올리신것을
'스포너'님이 답변해주셨는데...


테스트 해보았다. 음 시나리오 잘 작성하면 꾀 쓸만할 듯 하다.

관련 키워드 : ApplicationDeployment.CurrentDeployment
 .CheckForUpdateAsync()
 .UpdateAsync()


링크
http://msdn.microsoft.com/ko-kr/library/system.deployment.application.applicationdeployment.updateasync.aspx

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

GlassForm  (1) 2011.11.15
Array.ConvertAll 관련...  (0) 2011.11.15
LINQ] GroupBy  (0) 2011.10.12
컨텐츠 판넬 이전/ 다음 구현..  (0) 2011.09.14
Vs2008] 성능 카운터  (0) 2011.08.16

중복 데이타 찾기!!!

데이타 생성.

string[] arr = "a,b,c,d,e,e,e,f,g".Split(',').ToList<string>().ToArray();
 
 
1번
            var ar = arr.GroupBy(g => g).Where(w => w.Count() > 1).Select(s => s.Key);
            string rar = string.Join(",", ar.ToArray());
 
2번
            var aar = from t in arr
                      group t by t into g
                      where g.Count() > 1
                      select g.Key;
            string raar = string.Join(",", aar.ToArray());

위 둘다 동일한 방법임... 한줄이냐 여러줄이냐 차이... ?

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

Array.ConvertAll 관련...  (0) 2011.11.15
ClickOnce UpdateAsync ~!!  (0) 2011.10.31
컨텐츠 판넬 이전/ 다음 구현..  (0) 2011.09.14
Vs2008] 성능 카운터  (0) 2011.08.16
vs2008] WMI 관련..  (0) 2011.08.16



  내부 컨텐츠를 변경하는 방법을 구현한 것임.

매번 쓸때마다 구현하기도 구찮긴 한뎅... 이제 플그램 많이 안할것 같으니 적어만 둔다.


public partial class Form1 : Form
    {
        List<Control> Contents = new List<Control>();
      int currentControlIndex = 0;

        public Form1()
        {
            InitializeComponent();
            Contents.Add(new ContenControl() { Text = "TXT01" });
            Contents.Add(new ContenControl() { Text = "TXT02" });
            Contents.Add(new ContenControl() { Text = "TXT03" });
            Contents.Add(new ContenControl() { Text = "TXT04" });
            Contents.Add(new ContenControl() { Text = "TXT05" });
            Contents.Add(new ContenControl() { Text = "TXT06" });
            Contents.Add(new ContenControl() { Text = "TXT07" });
            Contents.Add(new ContenControl() { Text = "TXT08" });

            foreach (Control ctrl in Contents)
            {
                this.panel1.Controls.Add(ctrl);
            }
            UpdateButtonStates();
        }

        private void NextBtn_Click(object sender, EventArgs e)
        {
            // Next
            Control Current = GetContentControl(+1);
            Current.BringToFront();
            UpdateButtonStates();
        }

        private void UpdateButtonStates()
        {
            NextBtn.Enabled = currentControlIndex < Contents.Count - 1;
            PrevBtn.Enabled = 0 < currentControlIndex;
        }

        private Control GetContentControl(int idx)
        {
            Control ctrl = Contents[currentControlIndex];
            if (idx < 0)
            {
                if (currentControlIndex + idx < 0)
                {
                    idx = 0;
                }
            }
            else if (0 < idx)
            {
                if (Contents.Count - 1 < currentControlIndex + idx)
                {
                    idx = Contents.Count - 1;
                }
            }
            currentControlIndex = currentControlIndex + idx;
            ctrl = Contents[ currentControlIndex ];
            return ctrl;
        }

        private void PrevBtn_Click(object sender, EventArgs e)
        {
            // Prev
            Control Current = GetContentControl(-1);
            Current.BringToFront();
            UpdateButtonStates();
        }
    }


    public class ContenControl : UserControl
    {
        Label lb = new Label();
        public ContenControl()
        {
            this.lb.BorderStyle = BorderStyle.FixedSingle;
            lb.AutoSize = false;
            lb.TextAlign = ContentAlignment.MiddleCenter;
            lb.Dock = DockStyle.Fill;
            this.Controls.Add(lb);
            this.BorderStyle = BorderStyle.FixedSingle;
            this.Dock = DockStyle.Fill;
        }

        public override string Text
        {
            get
            {
                return lb.Text;
            }
            set
            {
                lb.Text = value;
            }
        }
    }

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

ClickOnce UpdateAsync ~!!  (0) 2011.10.31
LINQ] GroupBy  (0) 2011.10.12
Vs2008] 성능 카운터  (0) 2011.08.16
vs2008] WMI 관련..  (0) 2011.08.16
노트북 셋팅..  (0) 2011.08.02


카운터의 카테고리를 가져온것임.
이를 이용해 값을 쉽게 가져올 수 있음.


 <<프로그램으로 카테고리의 카운터값, 인스턴스값을 추출해서 보여주는 프로그램>>



성능카운터를 이용해서 카테고리를 가져온 결과...

CategoryName="Telephony"
CategoryName="Terminal Services"
CategoryName="LogicalDisk"
CategoryName="Thread"
CategoryName="SMSvcHost 4.0.0.0"
CategoryName="SQLServer:Resource Pool Stats"
CategoryName="Job Object"
CategoryName="UDPv4"
CategoryName="UDPv6"
CategoryName="Browser"
CategoryName="SQLAgent:Jobs"
CategoryName="System"
CategoryName="Teredo Client"
CategoryName="RAS Port"
CategoryName="SQLServer:Replication Dist."
CategoryName="SQLAgent:Statistics"
CategoryName="MSDTC Bridge 3.0.0.0"
CategoryName="SQLServer:Catalog Metadata"
CategoryName="SQLServer:Buffer Partition"
CategoryName="Synchronization"
CategoryName="ICMPv6"
CategoryName="SQLServer:Backup Device"
CategoryName="Search Indexer"
CategoryName="SQLServer:Replication Agents"
CategoryName="Memory"
CategoryName=".NET CLR Networking 4.0.0.0"
CategoryName="Processor"
CategoryName="SQLServer:Replication Snapshot"
CategoryName="SQLServer:Replication Logreader"
CategoryName="SQLServer:Broker TO Statistics"
CategoryName="SQLServer:Cursor Manager by Type"
CategoryName="SQLAgent:JobSteps"
CategoryName="IPv4"
CategoryName="SQLServer:Broker Statistics"
CategoryName="Process"
CategoryName="ServiceModelEndpoint 3.0.0.0"
CategoryName="Print Queue"
CategoryName="ICMP"
CategoryName="Generic IKEv1, AuthIP, and IKEv2"
CategoryName="ReadyBoost Cache"
CategoryName="Per Processor Network Interface Card Activity"
CategoryName="USB"
CategoryName="NBT Connection"
CategoryName="SQLServer:Broker/DBM Transport"
CategoryName="IPsec IKEv2 IPv6"
CategoryName="SQLServer:Workload Group Stats"
CategoryName="IPsec IKEv2 IPv4"
CategoryName="Job Object Details"
CategoryName="SQLServer:Buffer Manager"
CategoryName="ServiceModelService 3.0.0.0"
CategoryName="SQLAgent:Alerts"
CategoryName="SQLServer:Broker Activation"
CategoryName="WFP"
CategoryName="SQLServer:Plan Cache"
CategoryName="Pacer Pipe"
CategoryName="Processor Information"
CategoryName="Paging File"
CategoryName="Power Meter"
CategoryName="Redirector"
CategoryName="SQLServer:Cursor Manager Total"
CategoryName="SQLServer:Wait Statistics"
CategoryName="IPsec AuthIP IPv4"
CategoryName="IPsec AuthIP IPv6"
CategoryName="SQLServer:Transactions"
CategoryName="PhysicalDisk"
CategoryName="TCPv6"
CategoryName="WFPv4"
CategoryName="WFPv6"
CategoryName="SQLServer:Databases"
CategoryName="SQLServer:SQL Errors"
CategoryName="Server Work Queues"
CategoryName="MSDTC Bridge 4.0.0.0"
CategoryName="Server"
CategoryName="IPsec IKEv1 IPv4"
CategoryName="Terminal Services Session"
CategoryName="IPsec IKEv1 IPv6"
CategoryName="Per Processor Network Activity Cycles"
CategoryName="Teredo Server"
CategoryName="SQLServer:Exec Statistics"
CategoryName="SQLServer:Memory Manager"
CategoryName="SQLServer:Replication Merge"
CategoryName="Windows Workflow Foundation"
CategoryName="Teredo Relay"
CategoryName="SQLServer:User Settable"
CategoryName="DTC(Distributed Transaction Coordinator)"
CategoryName=".NET Data Provider for Oracle"
CategoryName="Event Tracing for Windows"
CategoryName="RAS Total"
CategoryName="Cache"
CategoryName="Objects"
CategoryName="SQLServer:Database Mirroring"
CategoryName="SQLServer:Access Methods"
CategoryName="SMSvcHost 3.0.0.0"
CategoryName="TCPv4"
CategoryName="SQLServer:Buffer Node"
CategoryName="SQLServer:General Statistics"
CategoryName="IPv6"
CategoryName="Network Interface"
CategoryName="SQLServer:SQL Statistics"
CategoryName=".NET CLR Data"
CategoryName="SQLServer:Latches"
CategoryName="SQLServer:Deprecated Features"
CategoryName="SQLServer:CLR"
CategoryName="ServiceModelOperation 3.0.0.0"
CategoryName="SQLServer:Locks"
CategoryName=".NET CLR Networking"
CategoryName=".NET Data Provider for SqlServer"
CategoryName="IPsec Driver"
CategoryName="Event Tracing for Windows Session"
CategoryName="IPHTTPS Global"



'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

LINQ] GroupBy  (0) 2011.10.12
컨텐츠 판넬 이전/ 다음 구현..  (0) 2011.09.14
vs2008] WMI 관련..  (0) 2011.08.16
노트북 셋팅..  (0) 2011.08.02
[LINQ] group by 여러조건 넣기.  (0) 2010.11.08



WMI 로 쿼리 할수 있는 객체 정보를 볼수 있는 쿼리는 다음과 같음.

 //WMI ~~
            using (System.Management.ManagementObjectSearcher s = new System.Management.ManagementObjectSearcher())
            {
                s.Query = new System.Management.ObjectQuery(
@"SELECT * FROM Meta_Class WHERE __Class LIKE ""%Win32%"" ");

                //s.Query = new System.Management.ObjectQuery(@"SELECT * FROM Win32_Process WHERE NAME = ""NateOnMain.exe"" ");
                //s.Query = new System.Management.ObjectQuery("Select * from Win32_Processor");
                //Win32_Processor
                var k = s.Get();
                foreach (var M in k)
                {
                    foreach (var Q in M.Qualifiers)
                    {
                        string text = string.Format(
                              "Q}} Name:{0}, Value:{1}",
                              Q.Name,
                              Q.Value
                          );
                        this.textBox1.AppendText(text + Environment.NewLine);
                    }

                    foreach (var P in M.Properties)
                    {
                        string text = string.Format(
                            "P}} Name:{0}, Value:{1}",
                            P.Name,
                            P.Value
                        );

                        this.textBox1.AppendText(text + Environment.NewLine);
                    }

                    this.textBox1.AppendText(
                        Environment.NewLine
                        );
                }
            }


위처럼 하면 쿼리 할수 있는 객체들로 나타나고.. 이를 바탕으로 정보를 쿼리 할 수 있음.

여기서 
 디스크 정보를 알고 싶을때 : Win32_LogicalDisk  관련 객체를 위 쿼리결과에서 찾아보고

파라미터명으로 GetPropertyValue를 통해서 값을 취할수 있다. 

  s.Query = new System.Management.ObjectQuery("Select * from Win32_LogicalDisk");
                var k = s.Get();
                foreach (var M in k)
                {
                    this.textBox1.AppendText("> " + M.GetPropertyValue("Caption") + Environment.NewLine);
                    this.textBox1.AppendText(
                        Environment.NewLine
                        );
                }

> \\DOKEBI-PC\ROOT\cimv2:Win32_LogicalDisk
Q} Name:dynamic, Value:True
Q} Name:Locale, Value:1033
Q} Name:provider, Value:CIMWin32
Q} Name:SupportsUpdate, Value:True
Q} Name:UUID, Value:{8502C4B7-5FBB-11D2-AAC1-006008C78BC7}
P} Name:Access, Value:
P} Name:Availability, Value:
P} Name:BlockSize, Value:
P} Name:Caption, Value:
P} Name:Compressed, Value:
P} Name:ConfigManagerErrorCode, Value:
P} Name:ConfigManagerUserConfig, Value:
P} Name:CreationClassName, Value:
P} Name:Description, Value:
P} Name:DeviceID, Value:
P} Name:DriveType, Value:
P} Name:ErrorCleared, Value:
P} Name:ErrorDescription, Value:
P} Name:ErrorMethodology, Value:
P} Name:FileSystem, Value:
P} Name:FreeSpace, Value:
P} Name:InstallDate, Value:
P} Name:LastErrorCode, Value:
P} Name:MaximumComponentLength, Value:
P} Name:MediaType, Value:
P} Name:Name, Value:
P} Name:NumberOfBlocks, Value:
P} Name:PNPDeviceID, Value:
P} Name:PowerManagementCapabilities, Value:
P} Name:PowerManagementSupported, Value:
P} Name:ProviderName, Value:
P} Name:Purpose, Value:
P} Name:QuotasDisabled, Value:
P} Name:QuotasIncomplete, Value:
P} Name:QuotasRebuilding, Value:
P} Name:Size, Value:
P} Name:Status, Value:
P} Name:StatusInfo, Value:
P} Name:SupportsDiskQuotas, Value:
P} Name:SupportsFileBasedCompression, Value:
P} Name:SystemCreationClassName, Value:
P} Name:SystemName, Value:
P} Name:VolumeDirty, Value:
P} Name:VolumeName, Value:
P} Name:VolumeSerialNumber, Value:


'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

컨텐츠 판넬 이전/ 다음 구현..  (0) 2011.09.14
Vs2008] 성능 카운터  (0) 2011.08.16
노트북 셋팅..  (0) 2011.08.02
[LINQ] group by 여러조건 넣기.  (0) 2010.11.08
MS-Chart Demo  (0) 2010.11.05


Win7 으로 복구시스템을 돌려 초기상태로 복구.

VS 2008 설치
MSSQL 2008을 설치... 중 에러!!

...

설치하다보니 VS2008 SP1을 설치하라고 해서 받아서 설치...   중 에러!!
( 무한..?루프 또는 생각보다 설치시간이오래 걸려서 ... 노트북 전원 off시간은 2시간 제한 되있음 )

찾아보니...    SP1을 설치할때 무한 도는 것처럼 되는것은 이전에 깔린 HotFix 문제로 이를 패치하여 제거하는 패치가 따로 있었고 이를 설치 하여 해결함.


모두 설치 완료...

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

Vs2008] 성능 카운터  (0) 2011.08.16
vs2008] WMI 관련..  (0) 2011.08.16
[LINQ] group by 여러조건 넣기.  (0) 2010.11.08
MS-Chart Demo  (0) 2010.11.05
포스트 잇 처럼 메모하는 레이아웃!!  (0) 2010.09.30


Chart 질문에 답변을 했었는데...

질문하셨던분이 아래와 같은 쿼리에 힌트를 주셔서... 아싸! 레어템... 

전에 LINQ에 그룹바이 조건에 여러개를 어떻게 넣나 고민하다가 많이 안쓰는 관계로 미뤘었고,
Chart  구현시에도 그룹바이를 좀 다르게 썼었는데... 

조금더 고민하면 한번에 그룹바이로 안되려나?

  DataTable dt = new DataTable();
            dt.Columns.Add("YM");
            dt.Columns.Add("ID");
            dt.Columns.Add("CNT", typeof(double));
            dt.Rows.Add("2010-10", "홍", 4d);
            dt.Rows.Add("2010-10", "홍", 3d);
            dt.Rows.Add("2010-10", "이", 1d);
            dt.Rows.Add("2010-09", "홍", 2d);
            dt.Rows.Add("2010-09", "이", 5d);


            var tmp = from j in
                          (from o in dt.AsEnumerable()
                           group o by new { ID = o.Field<string>("ID"), YM = o.Field<string>("YM") } into k
                           select new
                           {
                               Key = k.Key.YM,
                               CNT1 = k.Sum(R => k.Key.ID == "홍" ? Convert.ToDouble(R.Field<object>("CNT")) : 0),
                               CNT2 = k.Sum(R => k.Key.ID == "이" ? Convert.ToDouble(R.Field<object>("CNT")) : 0)
                           })
                      group j by new { Key = j.Key  } into T
                      select
                      new {
                        Key = T.Key,
                        CNT1 = T.Sum( R => R.CNT1 ),
                        CNT2 = T.Sum(R => R.CNT2),
                      };


결과로 그룹바이 된 컬럼으로 나타남. 

[ 년도 , CNT1 , CNT2 ] 


그룹바이를 두번해야되긴 하지만... 

그 나마 많이 줄었다..
 

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

vs2008] WMI 관련..  (0) 2011.08.16
노트북 셋팅..  (0) 2011.08.02
MS-Chart Demo  (0) 2010.11.05
포스트 잇 처럼 메모하는 레이아웃!!  (0) 2010.09.30
Ms Access 사용하기 예제소스.  (0) 2010.08.11

훈스 닷넷에 올라온 챠트관련 질문에 답글을 달았다.

챠트 구현보다 설치하는 시간이 더 걸린...

나름 단순하면서 깔끔해보인다.

챠트 설치 파일 검색에서 챠트를 잘 정리해둔 블로그가 있어서

챠트설치파일 링크만 써봤음...
http://six605.tistory.com/431?srchid=BR1http%3A%2F%2Fsix605.tistory.com%2F431











완성된 챠트입니다.
 
 
 아래 보시면 LINQ를 이용해서 새로운 테이블을 만든것을 볼수 있는데요
 
[YM]   , [CNT1], [CNT2]  
[년도]    [홍      ]  [이      ]
 
위같은 형태로 바꾸었습니다. 이쿼리는 원래 DB에서 하시는게 더 쉽게 만들수 있고요.
 
보시다싶이 씨리즈에 Y 멤버로 Cnt1, Cnt2로 각각 부여하면 챠트는 알아서 그려줍니다.
 
나머지 꾸미는 건 찾아보시면서 하시면 되겠네요 ^^;
 
아참 챠트가 Bar(Column) 형태인데요. 이건 챠트 타입을 바꿔주시면 됩니다.
 
수고하세요.
 

== 이하 소스입니다. ==
 
public Form1()
        {
            InitializeComponent();
            DataTable dt = new DataTable();
            dt.Columns.Add("YM");
            dt.Columns.Add("ID");
            dt.Columns.Add("CNT", typeof( double ));
            dt.Rows.Add("2010-10", "홍", 4d);
            dt.Rows.Add("2010-10", "홍", 3d);
            dt.Rows.Add("2010-10", "이", 1d);
            dt.Rows.Add("2010-09", "홍", 2d);
            dt.Rows.Add("2010-09", "이", 5d);
            var tmp2 = from k in dt.AsEnumerable()
                       group k by k.Field<string>("YM") into t
                       select new
                       {
                           Key = t.Key,
                           CNT1 = (from h in t
                                  where h.Field<string>("ID") == "홍"
                                  select Convert.ToDouble(h.Field<object>("CNT"))).Sum(),
                           CNT2 = (from h in t
                                   where h.Field<string>("ID") == "이"
                                   select Convert.ToDouble(h.Field<object>("CNT"))).Sum()
                       };

            DataTable source = new DataTable();
            source.Columns.Add("YM");
            source.Columns.Add("CNT1");
            source.Columns.Add("CNT2");
            foreach (var item in tmp2)
            {
                source.Rows.Add(item.Key, item.CNT1, item.CNT2);
            }
            chart1.Series.Clear();
 
            var tt = dt.AsEnumerable().Select(title => title.Field<string>("ID")).Distinct<string>();
            foreach (var item in tt)
            {
                chart1.Series.Add(item);
            }
            chart1.DataSource = source;
            chart1.ChartAreas[0].AxisX.Title = "년도";
            int cnt = 1;
            foreach (var item in chart1.Series)
            {
                item.AxisLabel = "접속 카운트";
                item.XValueMember = "YM";
                item.YValueMembers = "CNT" + cnt.ToString();
                cnt++;
            }           
        }



요렇게 디자인 하는것...  ( 훈스 게시판에 이런 모양의 디자인을 하고 싶어하는 분이 계셔서.. 잠깐..

Text 를 없애고 FormStyleBorder를 none이 아닌 다른걸로 했음. 그래야 사이즈 조정이 되니까!!



 

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

[LINQ] group by 여러조건 넣기.  (0) 2010.11.08
MS-Chart Demo  (0) 2010.11.05
Ms Access 사용하기 예제소스.  (0) 2010.08.11
WebClient와 WebBrowser의 차이는??  (3) 2010.07.30
LINQ 그룹바이... 훌...  (0) 2010.07.30