002. Checked/UnChecked
·
사소한 아이의 소소한 스킬/C#
이번엔.. Checked/UnChecked이다. 나도 이번에 포스팅하면서 처음보는.... 기능.... 흔히 Short, Int 값등의 연산을 진행한다. 이때 Overflow UnderFlow를 계산하기 위하여 if문을 반복한다. 이러한 부분을 줄여주는... 기능.. Checked 먼저 확인해보자 int.max값을 넣어준 변수에 10을 더할 시 overflow가 발생할 것이다. 그리하여 해당 부분에 try catch문을 걸어서 overflow를 잡아주는 부분을 볼 수 있다... UnChecked는 overflow, underflow를 잡아주지 않는 기능이다. 이것도 간단..! 하지만 try~catch문을 사용해야 한단부분에서... 와닿지 않고.. range를 우리가 정한 후에 저런식으로 사용할 수 있다면 ..
001. Thread Safe
·
사소한 아이의 소소한 스킬/C#
기술 포스팅을 열심히 해보고자... 노트북도 집으로 가져왔다... 그리하여 첫번째..... Thread Safe먼저 간단하게 해보자...... Thread Safe란 Multi-Thread 시 데이터를 동시에 접근할수 없도록 하는 기술.? 기능? 이다. 아무튼.. Thread Safe를 하는 방법은 여러가지.. Lock을 걸수도 있고 Monitor.enter, Monitor.exit를 사용해도 되고.. 그중에 간단하게 Task, Await 기능을 이용하여 Thread Safe한 기술을 해보고자 한다 (비동기기능으로써 해당 작업이 종료될때까지 대기타도록 하는 기능) (Thread Safe라는것이 비동기와 동일하다고 생각해도 될 것 같다. 결국 Lock, Monitor 기능도 해당 Object를 누군가가 사..
Dictionary 정렬방법
·
사소한 아이의 소소한 스킬/C#
오랜만에 글을 남겨봅니다.............. 개발중에 보면 가끔 정렬이 필요할때가 있고... 정렬에 대해 검색해보면... List등 Dictionary든 OrderBy, Sort 기능을 이용해서 key나 value등으로 정렬을 한다. 예를 들면 아래와 같은 코드를 이용.. /// Dictionary dic = dic.orderBy( x=> x.Value).Todictinary( x=> x.Key, x=> x.Value) /// List list.Sort(); 위와 같은 경우도 쉽게 정렬이 가능한 경우.. 하지만 Dictionary의 경우 더 쉽게도 가능하다... 애초에 정의할때부터 소트되는 Dictionary로 정의해버리는 것.. A_TEST의 경우 일반 Dictionary이다. 값이 들어간 것을 ..
[COSMOS] 4. PLAYBACK
·
사소한 아이의 소소한 스킬
이번엔 Playback 기능..!! Playback은 더더욱 뭐 할게없다........... 기본적으로 Command and Telemetry Server를 통해 TCP 통신을 하면 COMMAND/TELEMETRY 정보가 기본적으로 모두 저장된다. 저장된 정보를 불러오면 끝....... Launcher에서 playback를 실행한다. playback이 실행됨을 보고.... log file selection에서 file browse를 눌러 저장된 log를 선택해준다... 임의의 파일 선택....... 화살표를 눌러 play해주면 끝.. 진행 중 시간등도 설정할 수 있으니 해당 부분들은 해보면 된다....... COSMOS가 어렵게 만들어야 하는것을 참 쉽게 만들어주는것같다. 하지만 범용적으로 쓸수있는 S/..
[COSMOS] 3. Packet Viewer, Telemetry Viewer, Telemetry Grapher
·
사소한 아이의 소소한 스킬
이번엔 TELEMETRY 확인하는 기능!!! Launcher에서 Packet Viewer를 선택한다. 기본적인 packet viewer가 표출된다. cosmos_test_target의 tlemetry를 보려하였지만 1~8까지만 존재한다 (이거는 기본 telemetry) 왜냐면 추가해주질 않았으니깐... 추가해주기 위해 Launcher에서 config editor를 실행한다. 좌측 tree에서 cosmos_test_target/cmd_tlm_tlm.txt를 눌러준다. 여기서 telemetry를 지정해주면 된다. 임의로 아래와 같이 작성 4개의 Telemetry를 추가하였으며... 저장 후 다시 Packet Viewer를 실행한다. 내가 추가한 OPCODE_COUNT, TEMP1, TEMP2가 표출됨을 확인..
[COSMOS] 2. COMMAND SENDER, COMMAND SEQUENCE, SCRIPT RUNNER
·
사소한 아이의 소소한 스킬
이번차례는 COSMOS에서 COMMAND SENDER, SCRIPT RUNNER이다. LAUNCHER에서 COMMAND SENDER를 누른다. 아래와 같은 UI가 나온다.. 간단하다... target를 설정하고 command를 설정한후 send를 누르면 된다.. 현재 내가 만든 target인 cosmos_test_target에는 noop라는 command밖에 없다. example target에는 start command 뿐.... 그렇다면 임의의 command를 생성해보자... launcher에서 config editor를 들어간다. 좌측의 tree에서 cosmos_test_target의 cmd_tlm/cmd.txt를 누른다. noop 밖에 없지만..... 추가해주자! 임의로 test_command라는 ..
COSMOS (COMMAND & TELEMETRY TOOL)
·
사소한 아이의 소소한 스킬
또 다시 오랜만에 쓰는 기술 포스팅.... 이번 주제는...... COSMOS 라는 COMMAND & TELEMETRTY TOOL 이다. Ruby Script를 사용한 Application으로 TCP/IP, UDP 등의 통신을 이용하여 서버 통신 및 데이터 확인을 쉽게 해주는 어플리케이션이다. 나도 현재까지 많이 사용해보진 않았고.... 있는 기능에서 사용하는 것이므로.. 잘 알진 못하나... 간단히 써봄.. 일단 COSMOS 아키텍쳐는 아래와 같다 뭐가 뭔지 모르겠지만... 그냥 간단하게 Server를 통해 통신을 하고 command Sender, script runner, Telemetry Viewer 등을 이용하여 데이터를 전송/확인 기능을 수행하는 것이다. 자세한 기능들에 대한 설명은 추후에 UI..
[COSMOS] 1. Command and Telemetry Server
·
사소한 아이의 소소한 스킬
[2021.03] 프로그래밍 언어 순위
·
사소한 아이의 소소한 스킬
해당 정보는 구글, 빙, 야후, 아마존, 유튜브같은 검색엔진을 기반으로 조사 되었으며, 해당 정보가 최고의 언어를 나타내주거나 하는 것은 아닙니다. 단순히 사용량만 따지는 것임을 미리 말씀드립니다.
시간 관련 변환 방법
·
사소한 아이의 소소한 스킬/C#
개발중에 서로 통신을 할때 시간값이 필요할때가 있다. NTP서버나 GPS를 통해 실시간으로 동기화해서 사용하는 방법도 있지만 장비들이 고가이다 보니... 그렇게도 못할때가 있다. 그럴땐 뭐 window 자체의 시간 동기화 방법을 써도 상관없지만....... 아무튼 TCP나 UDP등 데이터 전송 시 datetime 정보를 같이 전달하여 시간을 확인하는 방법을 많이 확인하는데 나 같은 경우에는 C#의 Datetime 변수를 이용하기에 DateTime의 tick정보를 가져와서 8 byte long으로 변환하여 데이터를 전달한다. 하지만 이부분도 C#이면 괜찮지만 C로 전달할 시는 해당 부분이 다르다.. C의 경우 유닉스 타임(1970-01-01 00:00:00)을 기준으로 가져오기에 C#의 tick(0000-..
Unity에서 싱글톤 생성방법
·
사소한 아이의 소소한 스킬/C#
C#에서 개발하면서 싱글톤패턴은 정말 흔히 사용하는 디자인패턴이다. 생성에 대해 생각하지않아도 되고. null에 대해 체크하지않아도 되고 상당히 편하다 편한만큼 메모리에 대해(정말 프로젝트가 방대해졌을때) 생각도 해야겠지만.... 아무튼 이 편한 싱글톤패턴을 유니티에서도 구현할 수 있다. 구현방안은 아래와 같다. 첫번째 방안 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class GameManager { private static GameManager _instance; public static GameManager Instance { get { if(_instance == null) { _instance = GameObject.FindObjectOf..
WPF에서 Office가 깔려있는지 확인하는 코드
·
사소한 아이의 소소한 스킬/C#
오랜만에 또 기술포스팅...... WPF에서 엑셀로 저장하는 기능을 많이 쓴다.. 물론 다른 컴포넌트( Infragistics 같은) 툴을 사용해서 Office의 Interop를 사용하는 일은 많지 않지만........ 다른 컴포넌트들이 Interop의 모든 기능을 구현해주진 않으므로..(다른 컴포넌트는 Interop가 구현하지않은 더 많은 기능을 구현해주지만..) Interop를 아예 안쓸순없다.. Office는 대부분 모든 PC에 깔려있지만...또 그게 그렇지많은 않기에..... Inteop를 수행하기 위해서 Office가 깔려있는지 확인이 필요하다.. 확인 코드는 아래와 같이.... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 string REGISTRY_EXCEL_KEY = @..
쓸만한 목업 프로그램
·
사소한 아이의 소소한 스킬
필드에서 소프트웨어개발을 하다보면 필연적으로 UI를 구성해야 한다. 뭐 간단히 혼자 만드는 프로그램이라면 필요없지만..... 어딘가 납품을 해야하는 프로그램일수록 더더욱............. 발사믹이라는 좋은 툴을 이용했지만... 라이센스상..................사용못할떄도있다..... 그리하여 찾은 웹사이트 기반의 목업 프로그램 https://gomockingbird.com/ Website wireframes: Mockingbird Collaborate live Share a link, and clients and teammates can edit wireframes with you in real time. No more emailing images back and forth. gomocki..
간단한 형변환방안들..
·
사소한 아이의 소소한 스킬/C#
내가 헷갈려서 정리해둔다....................... 이건 맨날 헷갈림.......... int -> Hex int I = 394; I.ToString("X") Hex -> int int.parse("3BDA", System.Globalization.NumberStyles.HexNumber)
PostgreSQL Serial 초기화 방법
·
사소한 아이의 소소한 스킬/C#
오랜만에 적는 포스팅..... 이번에 DB Tool을 PostgreSQL로 변경해보았다. 이유는 무료와... 이거 아니면 안되는 이유때문에............. MariaDB와 비교했을때 난 MariaDB가 훨씬 낫다.. 이유는 DB 관리 툴이 별로................. MariaDB는 heidiSQL?이 정말 좋았기에..... PostgreSQL도 HeidiSQL이 기능을 제공해주긴 하지만.... 실험용일뿐.. 완벽하게 호환되지 않는다.. 아무튼... PostgreSQL에서 Import 시 만약 Serial 키(auto_increament)라도 잡아놓는다면 Import 시 동일한 pk키 때문에 import가 안되는 상황이 발생! 그럴때 serial 키를 재 설정해주어야 import 가능!(이..
WPF BoolToVisibilityConverter
·
사소한 아이의 소소한 스킬/C#
음.... 이번엔 간단한 Converter Class... XAML에서 자주쓰이는 Converter중 하나다.... 코드는 아래... namespace nameofConverter { [ValueConversion(typeof(bool), typeof(Visibility))] public class BoolConverter : IValueConverter { enum Parameters { Normal, Inverted } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var boolValue = (bool)value; var direction = (Parameters)Enum.Par..
DLL 관리하기!
·
사소한 아이의 소소한 스킬/C#
또 오랜만에 기술 포스팅. 현재 나는 Infragistics라는 Lib를 주로 사용하고있다... 근데 뭐 이런 Lib를 사용하면 항상 걸리는게... 이 Lib가 설치가 되어있으면 상관없는데....설치안되었을때의 문제.... 당연히 설치가 안되어있으면... 프로그램이 안돌아간다........ 그래서 항상 Visual Studio에서 Local Copy를 true로 설정해준다..... 그래도.. 중간중간 빠지는 DLL은 존재하기 마련...... 이것은 그럴때 사용할 수 있는 기능인것이다!! WPF를 기준으로 설명하자면... WPF 프로젝트 생성 시 app.config가 생성됨을 확인 할 수 있을 것이다. 해당 app.config에 아래와 같은 코드를 삽입! 위 코드를 설명하자면 실행되는 .exe파일의 위치에..
WPF 중복 실행 방지 코드
·
사소한 아이의 소소한 스킬/C#
얼마만의 기술포스팅인가.. 항상 적어야지만 생각하다가... 안적고.... 이제 드디어 적어본다. 정말 간단한 코드지만... 적어놔야 나중에 또 안 까먹지.. 단순히 c# 응용 프로그램이 중복으로 실행되지 않도록 하는 코드다. 방법은 3가지가 있으니.. 각자 편한걸로 사용하면 된다.. 근데 각각 사용되는 로직은 거의 비슷하다... 현재 수행중인 프로세스에서 수행하고자 하는 프로세스가 수행되고 있는지 확인 후 실행하는 로직 그럼 코드 고고 첫번째 방법 Mutex를 이용하는 방법이다. 운영체제 시간에 많이 들어봤을 단어일 것이다.. 이걸로 손쉽게 중복실행을 체크할수 있다. 12345678910bool createdNew ;// MyMutex라는 문자열을 유니크하게 구성하면 더 좋습니다. Mutex gM1 = ..
MySQL string Replace 방법
·
사소한 아이의 소소한 스킬
간단하게 MySQL에서 특정 컬럼에 해당되는 문구를 변경하는 법 UPDATE 'TableName'SET `ColumnName`= REPLACE(`ColumnName`, '찾을 데이터', '변경할 데이터)WHERE `Type` LIKE '%찾을 데이터%'간단!
포지션별 가장 비싼 선수들
·
사소한 아이의 소소한 스킬
골키퍼 - 잔루이지 부폰 - 5280만 유로 중앙 수비수 - 버질 반 다이크 - 7880만 유로 중앙 수비수 - 존 스톤스 - 5560만 유로 레프트백 - 벤쟈민 멘디 - 5750만 유로 라이트백 - 카일 워커 - 5100만 유로 레프트 미드필더 - 필리페 쿠티뉴 - 1억 2000만 유로 중앙 미드필더 - 폴 포그바 - 1억 5백만 유로 오른쪽 미드필더 - 오스마네 뎀벨레 - 1억 500만 유로 왼쪽 공격수 - 네이마르 - 2억 2200만 유로 중앙 공격수 - 크리스티아누 호날두 9400만 유로 오른쪽 공격수 - 가레스 베일 - 1억 100만 유로 - 출처 : ESPN UShttp://www.espnfc.us/blog/transfer-talk/79/post/3339733/philippe-coutinho-..
대소문자 구분없는 string 비교법
·
사소한 아이의 소소한 스킬/C#
오랜만에 쓰는 블로그 글.... 아 항상 ==, Equal을 쓰다보니 대소문자 구분때문에 문제가 발생한다. 나만 쓰는거면 항상 잘 되겠지만...... 아... 그래서 앞으로는 팀에 말해서 항상 이렇게 쓸수있도록 해야겠다... 1Result = Regex.Replace(Result, "del", "", RegexOptions.IgnoreCase);cs 위는 Replace 할 경우 대소문자 구분없이 Replace 1234if (Regex.IsMatch(TestCode, "hello", RegexOptions.IgnoreCase) ){ }Colored by Color Scriptercs 이거는 대소문자 구분 없이 비교! 꼭 확인하자. 정규식을 이용한 비교!
ENUM Length 가져오기
·
사소한 아이의 소소한 스킬/C#
C#에서 ENUM Length 가져오는 방법 대충 이런식으로 적으면 됨. 1int cntEGSEEnum = Enum.GetNames(typeof(ENUM_Name)).Length;cs
순간 당황...!! Visual Studio 2013 에러....
·
사소한 아이의 소소한 스킬/C#
주말에도 열심히 일하는 도중... 갑자기 뜨는 에러창... 잉.. 이거 뭐지.... 몇년간 개발하면서 처음보네..... 재부팅이 최고지.. 재부팅을 한다.. 그래도 고쳐지지않는다. 아 왜이러나... 구글링을 해본다.. 답이 바로 나오네.... 나만 가끔 이런게 아닌가봅니다. 해결책은... 위와같은 폴더로 간다.... 저기서 12.0 은 내가 Visual Studio 2013을 사용하기에 12.0이고.. 다른 버전은 숫자가 다를 것이다. 아무튼 가서 저기 있는 ComponentModelCache 라는 폴더 이름을 변경하거나 삭제 하면된다. ( VS 키면서 자동으로 생성됨.) 구글은 역시 최고다...
C# Button Component ( Trigger 사용 )
·
사소한 아이의 소소한 스킬/C#
C# XAML 코드에서 Trigger 사용하기. 기본적으론 아래와 같이 사용할 수 있다.
XamDataGrid Style 설정
·
사소한 아이의 소소한 스킬/C#
회사에서 Infragistics Component를 사용한다. 기존에는 Style같은거 사용 안했지만.... 이번에 프로젝트 하면서 Style도 건드려야 한다..ㅠㅠㅠ 디자이너는 아니지만.. 그래도 어느정도는 해야하는.... 그래서 찾고 찾은 정보를 올려본다..... 기본적인 것들이고... XAML로 DataTrigger걸고 하는부분들도 있는데 그 부분은 차차 올려야징..!!
프로그래머들이 자주쓰는 변명 20가지..
·
사소한 아이의 소소한 스킬
프로그래머들의 변경이란다........... 근데 다 맞는거 같다;;;;;;; 나도 자주 씀..............;;;;;;;; 20. "That's weird..." 그거 이상한데....? 19. "It's never done that before." 전에는 한번도 발생한 적이 없었는데...... 18. "It worked yesterday." 어제만해도 잘됐는데;;; 17. "How is that possible?" 어떻게 하면 그런게 가능한거지;; 16. "It must be a hardware problem." 16. 그건 틀림없이 하드웨어 결함일 거여요 15. "What did you type in wrong to get it to crash?" 15. 아니 어떻게 코드를 작성했길래 그 지경..
iplImage Image Data 뽑기
·
사소한 아이의 소소한 스킬
오랜만에 Skill 카테고리에 글을 적는군................흐음.......... 영상처리관련 소스이다.. iplImage를 사용하는데 iplImage의 Pixel의 R, G, B값을 뽑아내는 것.... for ( col = 0 ; col widthstep ; col += image->nChannels) { for(row = 0; row Height; row++) { image->ImageData[ col + row * image->widthstep ) // Blue image->ImageData[ col + row * image->widthstep + 1 ) // Green image->ImageData[ col + row * image->widthstep +..
Color Listbox 만들기!!
·
사소한 아이의 소소한 스킬/C#
c# Listbox에 Color 넣는 방법!! 일단 Visual Studio에서 Listbox를 추가합니다. 요렇게!! 그리고 Listbox의 Item을 추가해줍니다..!! 123uilistcolor.addItem("A");uilistcolor.addItem("B");uilistcolor.addItem("C");cs 그리고 Listbox의 이벤트 등록!! DrawItem을 List로 등록해줍니다..!! 그리고 DrawItem으로 가서 아래 Code 작성!! 12345678910111213141516private void luilistcolorDrawItem(object sender, DrawItemEventArgs e){ e.DrawBackground(); // 글씨 작성 // 첫번째 파라미터에 e.in..