전체 글
-
홈페이지 FileSystem 구조 개선 (DI)HelloJkw 개발 2024. 10. 2. 02:03
내 홈페이지는 총 4가지 파일 시스템을 사용할 수 있다.테스트를 위한 Local file system, InMemory file system서비스를 위한 Azure file system, Dropbox file system.설정 파일 appsettings를 읽어서 어떤 파일 시스템을 쓸지 할지 결정한다.각 서비스마다 각자 다른 파일시스템을 설정할 수 있다. 설정은 이렇게 생겼다.이번 개선에서 설정 파일을 변경하는 것은 아니다.{ // FileSystem은 한 번만 설정하는 값이다. // 연결 정보만 저장한다. FileSystem: { Dropbox: { ClientId: "", ClientSecret: "" }, Azure: { ConnectionStrin..
-
[퍼즐:16] 개선 점개발 2024. 2. 22. 23:15
퍼즐 프로그램을 만들고, 퍼즐을 맞추면서 개선했으면 좋겠다는 점이 있었다. 물론 특별한 경우가 없으면 내가 하진 않을 듯..ㅋㅋ 퍼즐 사진 나는 퍼즐 사진을 하나씩 찍었는데, 이 과정이 정말 힘들었다. 피할 수 없는 작업은 퍼즐에 숫자를 하나하나 쓰는 것이다. 이건 해야 한다. (나는 그렇게 생각한다) 퍼즐을 100개씩 찍을 수 있는 아이디어를 떠올렸다. 핵심은 퍼즐 사진이 외곡되지 않고, 평행하게 찍어야 한다는 점이다. 넓은 검정 종이에 정확한 4-5cm 간격의 흰색 정사각형 격자를 10*10로 만들어 놓는다. 각 정사각형 안에 퍼즐을 하나씩 놓는다. (대충) 사진을 찍는다. (사진 하나에 퍼즐 100개를 찍는다.) 외곡이 있어도 되고, 평행하게 찍지 않아도 된다. 보정을 한다. 사진의 정사각형 격자를..
-
[퍼즐:14] 퍼즐 계산과 퍼즐 추천 기능개발 2024. 2. 21. 23:41
[퍼즐:10] 500조각 퍼즐 완성 글을 보면 퍼즐 계산 기능이 있다. 계산 기능 A B X Y 기존 A, B조각이 있을 때 X 위치를 계산하게 되면 A기준 아랫쪽에 연결될 수 있는 경우가 쭉 나온다. 적게는 20개, 많게는 200개의 후보가 나온다. 그래서 보통 위 그림처럼 A, B 아래 조각 X, Y를 동시에 계산한다. - A 아래의 조각 후보 - B 아래의 조각 후보 - 그 후보들 간에 서로 연결 될 수 있는 조합 이것을 만족하는 경우를 계산표에 표시한다. 한개씩 계산하면 효율적이지 않아서, 묶음으로 짝을 맞춰보는 것이다. 위 그림으로 설명하면, (417, 179, 358)은 이미 맞춰져있는 영역이다. 그 아래 연결될 수 있는 조합으로 (30, 67, 458) 을 "계산5"으로 계산한 것이다. 이것..
-
[퍼즐:13] 끝나지 않는 코너 찾기개발 2024. 2. 14. 00:45
대략 5% 정도는 코너를 잘 찾지 못한다. 변수를 잘 조절하면 정확도를 높일 수 있을 것 같지만.. 쉽지가 않다. 전체를 다 잘 되게하는 값을 찾는건 어려운 것 같다. 문제는 검토를 내가 해야한다는 것이었다. 지난 500 조각 퍼즐 맞출 땐 내가 하나하나 다 보면서 검토했다. 너무 힘들어서 이번엔 조금 더 개선했다. "코너를 잘 찾은 퍼즐은 검토하지 말자" 내가 생각한 잘 찾은 코너의 조건은 이렇다. 1. 코너를 4개 찾았다. 2. 코너가 대략 직사각형을 이룬다. 직사각형을 판단하는 방법은 이렇다. 1. 마주보고 있는 변의 길이가 비슷하다. 2. 대각선의 길이가 비슷하다. 비슷한 기준은 길이의 차이가 20% 이내이면 비슷하다고 판단했다. public bool IsRectangle(PointF[] poin..
-
[퍼즐:12] 퍼즐 프로그램 (Web UI)개발 2024. 2. 14. 00:09
결국 퍼즐 프로그램을 만들었다. 500 조각 맞출 땐 CLI로 계속 명령어 입력해가며 처리했는데, 뭔가 화면에 보여야 할 것 같아서 웹페이지를 만들었다. 역시 Blazor를 썼기 때문에 속도는 엄청 빨랐다. CLI 프로그램 만들때도 이렇게 될 것을 대비했다. CLI 프로젝트와 이미지 처리 프로젝트를 분리했었다. Blazor를 붙이는 것은 빠르게 개발할 수 있었다. 프로그램을 실행시키면 내 로컬에 서버가 뜨고, 웹으로 제어한다. 서버가 OpenCV(EmguCV)를 사용해서 이미지를 처리한다. 개발 프로그램처럼 여러 작업을 진행할 수 있는 구조를 만들었다. 프로젝트 같은 느낌으로 퍼즐을 지정하고 불러올 수 있다. 동시에 여러 퍼즐을 맞출 수 있다는 가정을 하고 만들었지만, 사실 쓸모없다.. 대부분의 아래 작..
-
[퍼즐:11] 루피 2000 조각 퍼즐 사진 촬영개발 2024. 2. 3. 01:59
퍼즐 2,000 개를 하나하나 사진을 찍는다. 사진 찍는데만 일주일이 넘게 걸렸다. 퍼즐 사진을 찍는 것은 단순하다. 하지만 준비할 게 많다. 일단 퍼즐에 숫자를 하나하나 써야 한다. (당연하다) 그리고 퍼즐 사진을 찍는다. 문제는 지금부터다. 퍼즐을 차곡차곡 쌓아야 한다. 퍼즐 2000 개가 양이 정말 많다. 잘 보관하지 않으면 나중에 퍼즐을 찾을 수 없게 된다. 퍼즐 사진 찍기 전에 퍼즐을 쌓을 수 있는 보관함 같은 것을 먼저 만들었다. 4절 하드보드지를 깔고 2cm 간격으로 벽을 만들어서 글루건으로 붙여서 만들었다. 지난 500 조각 퍼즐을 맞출 땐 사선으로 된 산/골 모양으로 만들었었는데, 공간을 너무 많이 차지해서 이번엔 수직으로 촘촘하게 쌓았다. 필요한 모든 것을 자르고 붙여서 만든다.
-
[퍼즐:10] 500조각 퍼즐 완성개발 2024. 1. 1. 23:01
퍼즐 연결 정보를 진짜 퍼즐을 맞춰보자. 구석 조각 하나를 찾아서 시작한다. 빈칸 조각을 선택해서 후보를 추천해준다. 직접 조각을 찾아서 맞춰보고 선택해서 확정한다. 퍼즐 조각 추천 프로그램 자동으로 퍼즐 전체를 맞추는 것이 아니라, 조금씩 추천하고 조금씩 맞춰나가는 방법이다. 후보 선택 이렇게 일부 맞춰진 상태가 있다고 가정하고, 9번 줄을 맞춰보자. 아래 그림에서 더하기(+) 버튼을 눌러서 찾고 싶은 후보에 넣고, 계산 버튼을 누른다. 계산 버튼을 누르면 아래 그림 처럼 몇가지 후보가 나온다. 세 가지 후보 중 하나가 정답일 확률이 높다. 직접 퍼즐을 비교해보고 정답인 퍼즐을 선택해서 확정한다. 원리는 말로 쓰면 간단하다. 처음 (8,0) 에 있는 417번 조각의 밑 부분과 연결될 수 있는 퍼즐을 쭉..