목록Programming (12)
Smart Box
Rancher를 개발한 팀에서 새로운 Hyper-Converged Infrastructure 오픈 소스를 선보였다. Kubernetes 위에서 작동하며, On-Promise에서 누구나 쉽게 설치하고, 외부 스토리지(SAN) 구성 필요 없이 내부 스토리지를 이용하여 작동하기 위해서 개발 되었다. Harvester의 특징 간단한 VM 관리 기존 VM Hyperviser들이 제공하던 기능을 그대로 제공한다. Web 기반에서 VM을 간단히 관리할 수 있다. VM Live Migration 구동 중인 VM을 실시간으로 다른 노드로 이전할 수 있다. VM Backup & Restore 당연하지만, VM 백업과 복원을 지원한다. Distributed Block Storage Kubernetes 기반이고, Longho..
Kotlin에서의 when 문법은 기존 Java의 switch과 달리 개발자를 위해 정말 많이 진화해 있다. 그 중 가장 중요한 것은 컴파일 단계에서 내가 사용한 변수에 대한 모든 경우의 수를 핸들링 했는지 검사해주는 것이다. 이를 Exhaustive When Statement이라고 부르는데, 아래와 같다고 생각하면 된다. enum class Currency { WON, YEN, DOLLAR, } fun main() { val currency = Currency.WON val sign = when(currency) //'when' expression must be exhaustive, add necessary 'YEN' branch or 'else' branch..
현재 다니고 있는 직장에서 많은 제휴사가 늘어감에 따라 서비스 배포 관리와 트래픽을 제어하기 위해 기존 서버 환경을 갈아 엎기로 하였다. 아무래도, 경력이 짧고, 짧은 시간 내에 조사하여 환경을 개선해야했기 때문에, 완벽하지는 않지만, 사내에 Rancher 및 Kubernetes를 도입하면서 느낀 점을 정리해보려고 한다. 기존 시스템 환경은? OS: Windows Server / CentOS CI/CD: Github Action Back-end: Kotlin / Spring Boot / MSA 위에가 전부다. Load Balacner도 없고, Reverse Proxy Server도 없고, OS에 직접 서비스를 배포하고 있었으며, 백업도 진행하지 않고 있었다. 매우 문제가 많은 구조였다고 생각하지만, 초기..
안드로이드 프로그래밍 도중 예외 상황을 발견했습니다.Alert Dialog로 메세지를 표시 후, Yes 또는 No 버튼을 통해 값을 받아야 하는데, Dialog 바깥을 터치하거나 뒤로가기 키를 눌르면 대화 창이 무시되더군요. 그런 경우 다음과 같은 설정을 해주시면 뒤로가기를 누르거나, 대화 창 이외의 공간을 터치해도 무시합니다. - setCancelable 설정하기 12345 final AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("하하하"); alert.setMessage("뒤로가기 키를 눌른다고? 소용없지!"); alert.setCancelable(false);Colored by Color Scriptercs se..
Visual Basic을 주로 사용하던 제가 안드로이드(Java) 개발을 시작하다가 찾았던 것이 있습니다. 바로 VB6.0이나 VB.net에서 사용하던 함수인 'Left, Right, Mid'입니다. 문자열을 가볍게 다룰 수 있어서 매우 편리하게 사용했죠.그래서 Java에서 사용할 수 있는 함수를 만들어 보았습니다. 매우 간단하지만, 편리하게 사용하시길...! 123456789101112131415161718192021222324 String Left(String Str, int Num) { if (Num Str.length()) return Str; else return Str.substring(0, Num); } String Right(String Str, int Num) { if (Num Str.l..
컴퓨터 주변 기기에 관한 코딩을 하다보니, Byte 배열로 통신을 하더라구요.디버깅을 하기 위해서는 눈으로 값을 직접 봐야하니 Hex String으로 바꾸는 경우가 많습니다. 그래서 이번 포스팅에서는 16진법 문자열(Hex String)와 바이트 배열(Byte Array)를 넘어다니는 함수를 알려드리겠습니다. [Hex String to Byte Array] 1234567891011121314151617181920212223242526272829303132333435363738 Public Function HexStringToBytes(ByVal HexString As String) As Byte() 'Quick and dirty hex String to Byte array. Accepts: ' ' "HH..
프로그래밍을 하다보면 바이트 배열(Byte Array)를 문자열(String)으로 바꾸거나, 반대로 문자열을 바이트 배열로 바꿀 필요가 있습니다. 기존 VB6에서는 직접 해당 부분을 일일이 해야 했지만, VB.net에서는 NET 프레임워크에서 인코딩과 함께 지원합니다. [기본적인 함수]123Return System.Text.Encoding.UTF8.GetBytes(String) '//String to Bytes Return System.Text.Encoding.UTF8.GetString(Bytes) '//Bytes to Stringcs 기본적으로 사용방법은 매우 간단합니다. [인코딩에 따른 사용 방법] 12345Return System.Text.Encoding.UTF8.GetString(bytes) '/..
Twitch는 최근에 인터넷 게임 방송으로 유명해진 사이트입니다.그래서, 아프리카 TV와 트위치를 동시에 방송하고 계시는 분들이 많은데요? 많은 스트리머 또는 BJ분들이 Twitch 방송제목과 Afreeca TV 방송제목을 동시에 일일이 수정하기에는 많은 번거로움이 있습니다.실제로 '액시스마이콜'라는 BJ가 이 불편함을 느끼셔서, 많이 귀찮아(?) 하셨습니다.그래서, 'HikariA'라는 개발자 분이 직접! 이 불편함을 해소하고자 프로그램을 만드셨고, 프로그램 소스를 흔쾌히 오픈해주셨습니다. 저는 VB6.0으로 만들어진 프로그램을 VB.net으로 다시 코딩하였으며, 일부 문제가 생길만 한점과 인터페이스를 재구성하였습니다. 프로그램을 다운로드 받고 싶으신 분들은 아래 링크를 통해 다운로드 하시면 됩니다.h..
VB.net 에서는 File System Object(FSO)를 통해서 폴더 안에 있는 파일 또는 폴더 이름들을 불러올 수 있습니다. 그래서 이번에는 한 함수를 재귀적으로 호출하는 '재귀함수'를 만들어 폴더 내에 있는 모든 파일, 폴더 경로를 읽어와봤습니다.(사실 재귀함수를 공부하고 이해하기 가장 쉬운 예는 이 경우인 것 같습니다.) 그럼 FSO을 사용하여 해당 폴더에 있는 모든 파일을 불러오는 예제 소스를 살펴보시죠 :) 1234567891011121314151617181920212223242526 Public Function ShowFolderList(path As String) As List(Of String) Dim fso = CreateObject("Scripting.FileSystemObjec..
마우스 커서가 가르키고 있는 곳의 색상을 가져오기 위해서는 'MousePosition' 클래스를 활용해 마우스 커서 위치를 알아야 하며, Windows API인 GetDC를 이용해 핸들을 알아내고, 마우스 커서 위치와 알아낸 핸들을 가지고 GetPixel로 색상을 Hex RGB로 알아낼 수 있습니다. GetPixel은 Hex RGB(16진수)값을 Decimal(10진수)로 반환하기 때문에 직접 Hex로 바꿔야 합니다. 여기선 Hex 클래스를 이용합니다. 또, 실시간으로 정보를 가져오기 위해 백그라운드 스래드(Threading.Thread)를 이용합니다. 타이머를 이용해도 되긴하지만, 타이머는 백그라운드 상에서 이벤트가 발생하지 않기 때문에 스레드를 이용하기로 했습니다. 아래 예제를 확인해보세요 :) 12..
VB6.0에서 VB.net으로 넘어오면서 소캣 프로그래밍을 할려다 보면 관련 컨트롤이 없어서 어려운 점이 있었습니다. VB.net 에서는 소캣 프로그래밍을 하기 위해서 많은 클래스를 이해를 해야만 할 수 있기 때문에 많은 분들이 힘들어 합니다. 저 또한 그랬습니다.. 또, VB6에서 VB.net으로 넘어오면서 컨트롤 배열이 안되기 때문에 다중 소캣(서버) 프로그래밍도 힘듭니다. 그래서 기존 VB6과 동일한 기능을 할 수 있는 컨트롤 클래스를 만들어 보았습니다. 간단한 설명은 아래에서 확인하실 수 있으며, 추후 더욱 자세한 내용을 가지고 찾아뵙겠습니다 :) * 기본 사용 방법 1. Winsock_Control.vb를 프로젝트에 추가 합니다.2. 선언을 통해 컨트롤을 생성합니다. 클래스 명은 'Winsock..
Visual Studio(비주얼스튜디오) VB.net 관리자 권한 설정하기(Set Administrator) 프로그램을 제작하다 보면 '관리자 권한(Administrator)'이 필요한 경우가 생깁니다. 최근 윈도우8.1부터 윈도우가 설치되어 있는 로컬 드라이브에 파일을 생성하거나 삭제할 때 거의 관리자 권한이 필요해 많은 프로그램들이 관리자 권한을 요구하죠. 기존 VB6.0 에서는 API나 LINK 파일을 교체해 관리자 권한을 취득했지만, VB.net에서는 한 줄만 수정해주면 간단하게 관리자 권한 취득 프로그램을 제작할 수 있습니다. 『관리자 권한을 설정 해보자!』 * 본 강좌는 Visual Studio 2015 Preview 를 바탕으로 작성하였습니다. 먼저, 기존 프로젝트를 여시거나, 연습을 위해 ..