프로그래밍 150

[Akka.Net] Props 이용한 Actor 생성

Prop Props는 액터 생성을 위한 옵션을 지정하는 구성 클래스로, 관련 배포 정보를 포함하여 액터를 생성하기 위한 변경 불가능하고 자유롭게 공유 가능한 레시피로 생각하십시오. 액터는 ActorSystem 및 ActorContext에서 사용할 수 있는 ActorOf라는 팩토리 메서드에 Props 인스턴스를 전달하여 생성됩니다. ActorOf에 대한 호출은 IActorRef의 인스턴스를 반환합니다. using Akka.Actor; using System; namespace AkkaNET_Actor_Tell { class Program { static ActorSystem system = ActorSystem.Create("actorSystem"); static void Main(string[] args..

[Akka.Net] Actor 생성

참조 https://getakka.net/articles/actors/receive-actor-api.html Akka.NET에서 액터를 생성하면 항상 특정 부모에 속합니다. 이것은 액터가 항상 트리로 구성된다는 것을 의미합니다. 일반적으로 액터 생성은 다른 액터 내부에서만 발생할 수 있습니다. 이 '생성자' 액터는 새로 생성된 자식 액터의 부모가 됩니다. 그러면 처음으로 만든 액터의 부모가 누구냐고 물을 수 있습니다. 최상위 액터를 생성하려면 먼저 액터 시스템을 초기화해야 합니다. 이것을 객체 시스템이라고 합시다. 그 다음에는 새로 생성된 액터에 대한 참조를 반환하는 System.ActorOf() 호출이 이어집니다. Message 클래스 생성 액터에게 무언가를 하라고 지시하는 방법은 메시..

Kosta비대면 교육 - Linux System & Network Programming

과정 제목 Linux System & Network Programming 교육 목표 리눅스 운영체제를 기반으로 한 시스템 기능 또는 어플리케이션 개발 능력 심화 향상 리눅스 운영체제 확용 능력 심화 리눅스 시스템 프로그래밍 Hardware를 이용하기 위해선 kernel을 활용해야 합니다. system call을 이용하면 kernel에 명령을 요청할 수 있습니다. libraries와 Tool을 잘 활용해야 어플리케이션 개발이 용이해지고, 최종적으로 Hardware를 제어 할 수 있습니다. 커널의 세부 기능 프로세스 관리 (Process Management) 메모리 관리 (Memory Management) 파일 시스템 관리 (File System Management) 장치 관리 (Device Manageme..

프로그래밍 2022.06.05

[C#] 파일 목록 가져오기

GetFiles 현재 디렉터리에 있는 파일 목록을 가져오려면 GetFiles 메서드를 사용합니다. var dir = new DirectoryInfo(@"C:Windows"); FileInfo[] files = dir.GetFiles(); foreach (var item in files) { Console.WriteLine($"파일명 : {item.Name}"); } EnumerateFiles .NET 프레임워크 4.0 이후 버전에서 EnumerateFiles 메서드를 사용해 파일 목록을 가져올 수 있습니다. var dir = new DirectoryInfo(@"C:Windows"); // .txt 확장자 파일을 구합니다. // 두번째 인수 `SearchOption.AllDirectories`를 설정하면 ..

프로그래밍/C# 2022.05.14

[C#] 폴더와 파일 구분하기

지정된 폴더 안에서 파일과 폴더 구분해봅시다. GetFileSystemInfos DirecotryInfo 클래스에 있는 GetFileSystemInfos 메서드를 사용합니다. var dir = new DirectoryInfo(@"C:\Users\A\source\test"); // 폴더 경로 FileSystemInfo[] fileSystemInfos = dir.GetFileSystemInfos(); foreach (var item in fileSystemInfos) { // 디렉터리 여부를 판별합니다. if ((item.Attributes & FileAttributes.Directory) == FileAttributes.Directory) Console.WriteLine($"this is dir : {it..

프로그래밍/C# 2022.05.14

[C#] StringBuilder로 문자열 연결하기

문자열은 변하지 않는 객체입니다. 예를 들어, 다음 코드는 abc 뒤에 xyz을 붙여 연결되는 것이 아니라, 새로운 6자 크기의 인스턴스가 생성되고, 인스턴스에 abc, xyz가 복사됩니다. string str1 = "abc" str1 += "xyz"; 만약 반복해서 문자열을 연결하는 코드를 작성하게 되면 비효율적인 리소스 낭비가 이뤄질 수 있습니다. StringBuilder 클래스를 사용하면 문자열을 효율적으로 연결할 수 있습니다. var sb = new StringBuilder(); //객체 생성 sb.Append("안녕하세요, "); //문자열 추가 sb.Append("Victory Ha"); sb.Append("입니다."); var result = sb.ToString(); //문자열 변환 Str..

프로그래밍/C# 2022.05.07

[C#] 지정한 문자로 문자열 분할하기

Split 메서드를 사용하면 지정한 문자로 해당 문자열을 분할할 수 있습니다. Split 사용 예제1 공백으로 분할하기var text = "안녕하세요, Vicotory Ha 입니다."; var res = text.Split(" "); Split 사용 예제2 ,와 공백으로 분할하기 var text = "where is car."; var res = text.Split(new [] {" ",","}, StringSplitOptions.RemoveEmptyEntries); StringSplitOptions.RemoveEmptyEntries 옵션을 지정하면 빈 배열 요소를 포함하지 않게 합니다.

프로그래밍/C# 2022.05.07

[C#] Thread 동기화하기 Lock , Monitor

Lock C# 서비스 개발에 있어 비동기 프로그래밍은 필수적이라고 할 수 있다. 멀티 쓰레드를 사용하여 리소스에 동시에 액세스하여 빠른 처리가 가능하다. 한 개의 데이터를 여러개의 쓰레드가 동시에 접근, 변경하는 경우 Thread Unsafe하다고 말한다. Lock키워드는 특정 블럭의 코드(Critical Section이라 부른다)를 한번에 하나의 쓰레드만 실행할 수 있도록 해준다. 한번에 하나의 쓰레드만 사용하기 때문에 Thread Safe 하다고 말할 수 있다. Critical Section은 가능한 한 범위를 작게하는 것이 좋다. class SampleProgram { private static object _lock = new object(); static void Main(string[] arg..

프로그래밍/C# 2022.04.01

[Docker] MongoDB 도커 컨테이너 올리기

참고 https://afsdzvcx123.tistory.com/entry/Mongo-DB-%EB%8F%84%EC%BB%A4%EB%A1%9C-MongoDB-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-%EB%B0%8F-Robo-3T-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0 Docker환경에서 MongoDB를 활용하므로 참고바랍니다. DockerCompose 활용하여 컨테이너 올리기 DockerCompose를 활용하기 위해선 docker-compose.yml파일이 필요하다. 파일 내용은 다음과 같다. docker-compose.yml # 파일 규격 버전 version: "3" # 이 항목 밑에 실행하려는 컨테이너 들을 정의 services: # 서비스 명 mo..

[Docker] Mysql docker생성 및 Docker Volume 생성하기

Docker mysql 컨테이너 생성 참고 : https://www.youtube.com/watch?v=gmE_8oSZ-mo mysql 이미지 다운로드 및 실행 + password + 데이터볼륨 설정 docker run -dp 8756:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.6 컨테이너 접속 docker exec -it {container id} /bin/bash mysql 접속 mysql -u root -p db show show databases; db 생성 create database {db name}; db 선택하여 사용 use {db name}; db table 생성 CREATE TABLE {table name} ( id int(11) not null auto_i..