블로그 이미지
보미아빠

카테고리

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

달력

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

공지사항

최근에 올라온 글

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

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

secureString

2019. 11. 4. 16:51
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GoFMemento
{
    class CareTaker
    {
        static void Main(string[] args)
        {
            List savedStates = new List();
            Originator originator = new Originator();
            originator.set("State1");
            originator.set("State2");
            savedStates.Add(originator.saveToMemento());
            originator.set("State3");
            savedStates.Add(originator.saveToMemento());
            originator.set("State4");
            originator.restoreFromMemento(savedStates[1]);
        }
    }

    class Originator
    {
        private string state; 
        public void set (string state)
        {
            this.state = state;
            Console.WriteLine("Originator: Setting state to " + state);
        }

        public Memento saveToMemento() // createMemento()
        {
            Console.WriteLine("Originator: Saving to Memento.");
            return new GoFMemento.Originator.Memento(this.state);
            // 예제에서는 string 이 쓰였는데, 실제로는 object 가 많이 쓰이니 serialize deserilize 를 이용하면 더 좋은 구현이 될 수 있다. 
        }

        public void restoreFromMemento (Memento memento) // restore (Memento)
        {
            this.state = memento.getSavedState();
            Console.WriteLine("Originator: State after restoring from Memento: " + state);
        }

        public sealed class Memento
        {
            private string state;
            public Memento (string stateToSave) // setState()
            {
                state = stateToSave; 
            }

            public string getSavedState() // getState()
            {
                return state; 
            }
        }
    }

}

Posted by 보미아빠
, |

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

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 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함