블로그 이미지
010-9967-0955 보미아빠

카테고리

보미아빠, 석이 (500)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2024.4
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

공지사항

최근에 올라온 글

'보미아빠, 석이'에 해당되는 글 500건

  1. 2019.10.14 대역폭 제어 다운로드 2
  2. 2019.08.08 sql base64unicode convert function
  3. 2019.07.22 sortedset
  4. 2019.04.30 json SerializeObject DeserializeObject
  5. 2019.03.13 console.progressbar
  6. 2019.02.22 dotnet core test
  7. 2019.02.01 sql server 로 .net framework 와 powershell 깔아보기
  8. 2018.11.11 tail
  9. 2018.11.02 task
  10. 2018.09.12 delete

대역폭 조절과 현재 프로세스의 네트워크 전송량 체크하기 (관리자모드로 실행할것)

WebStreamDownload.zip
2.25MB

Posted by 보미아빠
, |


create FUNCTION [dbo].[fnString2Base64Unicode]
(
    @STRING nVARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    RETURN (
        SELECT
            CAST(N'' AS XML).value(
                  'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
                , 'VARCHAR(MAX)'
            )   Base64Encoding
        FROM (
            SELECT CAST(@STRING AS VARBINARY(MAX)) AS bin
        ) AS bin_sql_server_temp
    )
END
GO

create FUNCTION [dbo].[fnBase64Unicode2String]
(
    @BASE64_STRING NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN

    RETURN (
        SELECT 
            CAST(
                CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@BASE64_STRING"))', 'VARBINARY(MAX)') 
            AS NVARCHAR(MAX)
            )   UTF8Encoding
    )
END
go

select [dbo].[fnString2Base64Unicode](N'명령어')
select [dbo].[fnBase64Unicode2String]('hbo5uLTF')

Posted by 보미아빠
, |

sortedset

카테고리 없음 / 2019. 7. 22. 20:48
Posted by 보미아빠
, |

using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Serialization;


namespace CRUD
{
    class Program
    {
        static void Main(string[] args)
        {
            ServerDataTest();
            //LoadBalancerDataTest();
        }

        public static void LoadBalancerDataTest()
        {

            DataManager<ServerKey, LoadBalancerValue> dataManager = new DataManager<ServerKey, LoadBalancerValue>();

            dataManager.Insert(
                new ServerKey { ServerName = "ServerA" }, 
                new LoadBalancerValue { LoadBalancerPrivateIp = "pri1", LoadBalancerPublicIp = "pub1" });
            dataManager.Insert(                                                   
                new ServerKey { ServerName = "ServerB" }, 
                new LoadBalancerValue { LoadBalancerPrivateIp = "pri2", LoadBalancerPublicIp = "pub2" });
            dataManager.Update(                                                   
                new ServerKey { ServerName = "ServerB" }, 
                new LoadBalancerValue { LoadBalancerPrivateIp = "pri3" });
            dataManager.Insert(                                                   
                new ServerKey { ServerName = "ServerC" }, 
                new LoadBalancerValue { LoadBalancerPrivateIp = "pri3", LoadBalancerPublicIp = "pub3" });
            dataManager.Delete(
                new ServerKey { ServerName = "ServerA" });

            // SerializeObject
            string json = dataManager.GetJson();
            Console.WriteLine(json);

            // DeserializeObject
            var tempobject = JsonConvert.DeserializeObject<List<KeyValuePair<ServerKey, LoadBalancerValue>>>(json);
            dataManager.Data.Clear();

            foreach (var a in tempobject)
            {
                dataManager.Insert( 
                    new ServerKey { ServerName = a.Key.ServerName },
                    new LoadBalancerValue {
                        LoadBalancerPrivateIp = a.Value.LoadBalancerPrivateIp,
                        LoadBalancerPublicIp = a.Value.LoadBalancerPublicIp });
            }

            // data confirm 
            foreach (var a in dataManager.Data)
            {
                Console.WriteLine($"{a.Key.ServerName}, {a.Value.LoadBalancerPrivateIp}, {a.Value.LoadBalancerPublicIp}");
            }

            Console.ReadKey();
        }


        public static void ServerDataTest()
        {

            DataManager<ServerKey, ServerValue> dataManager = new DataManager<ServerKey, ServerValue>();

            dataManager.Insert(
                new ServerKey { ServerName = "ServerA" },
                new ServerValue { ServerPrivateIp = "pri1", ServerPublicIp = "pub1" });
            dataManager.Insert(
                new ServerKey { ServerName = "ServerB" },
                new ServerValue { ServerPrivateIp = "pri2", ServerPublicIp = "pub2" });
            dataManager.Insert(
                new ServerKey { ServerName = "ServerB" },
                new ServerValue { ServerPrivateIp = "pri3", ServerPublicIp = "pub5" });
            dataManager.Update(
                new ServerKey { ServerName = "ServerB" }, 
                new ServerValue { ServerPrivateIp = "pri3" });
            dataManager.Insert(
                new ServerKey { ServerName = "ServerC" },
                new ServerValue { ServerPrivateIp = "pri3", ServerPublicIp = "pub3" });
            dataManager.Delete(
                new ServerKey { ServerName = "ServerA" });

            // SerializeObject
            string json = dataManager.GetJson();
            Console.WriteLine(json);

            // DeserializeObject
            var tempobject = JsonConvert.DeserializeObject<List<KeyValuePair<ServerKey, ServerValue>>>(json);
            dataManager.Data.Clear();

            foreach (var a in tempobject)
            {
                dataManager.Insert(
                    new ServerKey { ServerName = a.Key.ServerName },
                    new ServerValue { ServerPrivateIp = a.Value.ServerPrivateIp, ServerPublicIp = a.Value.ServerPublicIp });
            }

            // data confirm 
            foreach (var a in dataManager.Data)
            {
                Console.WriteLine($"{a.Key.ServerName}, {a.Value.ServerPrivateIp}, {a.Value.ServerPublicIp}");
            }

            ServerValue sv = dataManager.Data[new ServerKey { ServerName = "ServerB" }];
            Console.WriteLine($"{sv.ServerPrivateIp}, {sv.ServerPublicIp}");
            Console.ReadKey();
        }
    }
    

    class ServerKey : IEquatable <ServerKey>
    {
        
        public string ServerName
        {
            get; set;
        }

        public bool Equals(ServerKey other)
        {
            if (ServerName.Equals(other.ServerName))
                return true;
            else
                return false;
        }

        public override int GetHashCode()
        {
            return ServerName.GetHashCode();
            // return _X.GetHashCode() ^ _Y.GetHashCode();

        }
    }
    
    class ServerValue
    {
        public string ServerPrivateIp { get; set; } = "";
        public string ServerPublicIp { get; set; } = "";
    }

    class LoadBalancerValue
    {
        public string LoadBalancerPrivateIp { get; set; } = "";
        public string LoadBalancerPublicIp { get; set; } = "";
    }

    class DataManager <K, V> 
    {
        private object lockobj = new object(); 

        public Dictionary<K, V> Data { get; set; } = new Dictionary<K, V>();

        public DataManager() { }

        public void Insert(K key, V value)
        {
            lock (lockobj)
            {
                if (!Data.ContainsKey(key))
                    Data.Add(key, value);
                else
                    Update(key, value);
            }
        }

        public void Update(K key, V value)
        {
            lock (lockobj)
            {
                V oldValue;
                if (Data.TryGetValue(key, out oldValue))
                {
                    var newProperies = value.GetType().GetProperties();
                    foreach (var n in newProperies)
                    {
                        var oldProperties = oldValue.GetType().GetProperties();
                        foreach (var o in oldProperties)
                        {
                            if (o.Name == n.Name)
                            {
                                string oldPropertyValue = oldValue.GetType().GetProperty(o.Name).GetValue(oldValue, null).ToString();
                                if (value.GetType().GetProperty(n.Name).GetValue(value, null).Equals(""))
                                {
                                    value.GetType().GetProperty(n.Name).SetValue(value, oldPropertyValue, null);
                                }
                            }
                        }
                    }
                }
                Data[key] = value;
            }
        }

        public void Delete(K key)
        {
            lock (lockobj)
            {
                if (Data.ContainsKey(key))
                {
                    Data.Remove(key);
                }
            }
        }

        public string GetJson()
        {
            JsonSerializerSettings settings = new JsonSerializerSettings();
            settings.Formatting = Formatting.Indented;
            settings.ContractResolver = new DictionaryAsArrayResolver();
            return JsonConvert.SerializeObject(Data, settings);
        }
    }

    class DictionaryAsArrayResolver : DefaultContractResolver
    {
        protected override JsonContract CreateContract(Type objectType)
        {
            if (objectType.GetInterfaces().Any(i => i == typeof(IDictionary) ||
               (i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDictionary<,>))))
            {
                return base.CreateArrayContract(objectType);
            }
            return base.CreateContract(objectType);
        }
    }
}

Posted by 보미아빠
, |

https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54

Posted by 보미아빠
, |

dotnet core test

카테고리 없음 / 2019. 2. 22. 15:22


# Install repository configuration

curl https://packages.microsoft.com/config/rhel/7/prod.repo > ./microsoft-prod.repo

sudo cp ./microsoft-prod.repo /etc/yum.repos.d/


# Install Microsoft's GPG public key

curl https://packages.microsoft.com/keys/microsoft.asc > ./microsoft.asc

sudo rpm --import ./microsoft.asc


# Add the dotnet product feed

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm


# dotnet install 

# sudo yum -y update 

sudo yum -y install dotnet-sdk-2.2  


dotnet new console

dotnet run



Posted by 보미아빠
, |

sql 은 localhost 나 admin 권한이 있다고 가정.


declare @sql varchar(8000) = 'exec xp_cmdshell ''@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString(''''https://chocolatey.org/install.ps1''''))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"'''

print @sql 

exec (@sql)


declare @sql varchar(8000) = 'exec xp_cmdshell ''choco install dotnet4.7.2 -y'''

print @sql 

exec (@sql)


declare @sql varchar(8000) = 'exec xp_cmdshell ''choco install powershell -y'''

print @sql 

exec (@sql)


끝...

Posted by 보미아빠
, |

tail

카테고리 없음 / 2018. 11. 11. 15:41

PS> Get-Content "C:\Users\rdsadmin\Documents\visual studio 2015\Projects\LazyLogConsoleAuto\LazyLogCon

soleAuto\bin\Debug\log\2018-11-11.log" -Wait -Tail 10

Posted by 보미아빠
, |

task

카테고리 없음 / 2018. 11. 2. 14:35

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace winform

{

    public partial class Form1 : Form

    {

        DataTable table;

        public Form1()

        {

            InitializeComponent();


        }


        private async void button1_Click(object sender, EventArgs e)

        {

            await Task.Run(() => {


                FillData();


                dataGridView1.InvokeIfRequired(s => {

                    s.ColumnCount = 3;

                    s.Columns[0].Name = "Column1";

                    s.Columns[1].Name = "Column2";

                    s.Columns[2].Name = "Column3";

                    s.Columns[0].Width = 100;

                    s.Columns[1].Width = 100;

                    s.Columns[2].Width = 300;

                    s.RowHeadersVisible = false;

                });


                foreach (DataRow row in table.Rows)

                {

                    dataGridView1.InvokeIfRequired(s => {

                        int n = s.Rows.Add();

                        s.Rows[n].Cells[0].Value = row["Column1"].ToString();

                        s.Rows[n].Cells[1].Value = row["Column2"].ToString();

                        s.Rows[n].Cells[2].Value = row["Column3"].ToString();

                    });

                }

            });

        }

        

        private void FillData()

        {

            table = new DataTable();

            table.Columns.Add("Column1", typeof(string));

            table.Columns.Add("Column2", typeof(string));

            table.Columns.Add("Column3", typeof(string));

            for (int i = 0; i < 1000000; i++)

            {

                table.Rows.Add(i.ToString(), "Indocin", "David");

            }

        }

    }


    public static class ControlHelpers

    {

        public static void InvokeIfRequired<T>(this T control, Action<T> action) where T : ISynchronizeInvoke

        {

            if (control.InvokeRequired)

            {

                control.Invoke(new Action(() => action(control)), null);

            }

            else

            {

                action(control);

            }

        }

    }

}



Posted by 보미아빠
, |

delete

카테고리 없음 / 2018. 9. 12. 11:37
set nocount on 



declare @rowcount varchar(100) ;

while (1=1)

begin 

 delete top (1000) t from perfmon t where machinename is null 

 select @rowcount = @@rowcount 

 if @rowcount = 0 break; 

 RAISERROR(@rowcount, 0, 1) WITH NOWAIT

 waitfor delay '00:00:00.200'

end

 

Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함