2011 iMac 에서 Plex 서버

이미지
  할아버지 2011 아이맥을 Plex 서버로 돌리고 있는데 기가비트 이더넷에 꼽고 이 아이맥의 내장 하드에서 다른 기가비트 이더넷으로 연결한 컴으로 파일 복사를 하면 100MB/s 이 쉽게 나옵니다만 아이맥의 외장 하드로 부터 복사를 하면 40MB/s 언저리도 겨우 나옵니다... 이 아이맥의 UBS2 의 최대속도가 480Mbps 라... 기가비트 이더넷은 개살구임. 물론 10Gb Thunderbolt 포트가 있지만 Mini DP 형태의 썬더볼트 지원 외장하드 케이스는 구하기도 힘들고 재고가 있다해도 배보다 배꼽이 커지지요. UBS2 외장 하드로도 Plex 서버로 쓰는데는 충분함.

메타의 Threads

이미지
메타의 Threads 가 작년 7월 5일에 오픈했고, 다음날인가 내 첫 포스팅... 반년이상 눈팅만하다 최근에 눈에 띄이는 글들에 댓글을 조금 달고 있는데... 형태는 비슷하지만 트위터와는 결이 다름. 일단 얼마전까지 유행했던 Clubhouse. 요즘 그 곳을 언급하는 사람 거의 없고 페북이나 X 에서 Threads 를 더 언급함. 잠깐 유행이 될지, X, 인스타, 페북처럼 큰 자리를 잡을지는 아직은 나는 관망중. My 1st posting on Theread: https://www.threads.net/@sexydeveloper/post/CuX5ngusHr2?xmt=AQGzrKUfDJkBejgz0_KzvXSN-DtDzLRrI51ILeM3b6upLw

iOS error - Canvas area exceeds the maximum limit (width * height > 16,777,216)

이미지
웹에서 그림을 그리기 위해 캔버스 개체를 생성하는데 FHD (1920x1080) 로 캔버스를 생성해 만든 앱이 iOS 의 사파리나 크롬, 앳지에서 올려보면 Canvas area exceeds the maximum limit (width * height > 16,777,216) 이런 에러를 개발자 모드에서 보이며 실행 안됨. 근데 1920x1080 = 2,073,600 로 제한을 넘어가지 않는데도 이 에러가 난다는 심오한 문제? 눈치챘겠지만 레티나 디스플레이 때문임. 해상도가 높다보니 window 개체의 device pixel ratio 속성이 3 이야 그러니 물리적으로 (1920x3) x (1080x3) = 18,662,400 를 논리적 1920x1080 짜리 캔버스로 생성하려고 하니 에러가 남. 구글링해보면 몇가지 방법이 (생성형 AI 들은 앞에 설명한 내용을 내가 써주기 전까지 제대로 모름) 있는데, 일반적으로 iOS 제한 픽셀 / (1920x3) x (1080x3) = 0.89... 이 비율로 캔버스를 생성하고 그려진 내용을 이 비율로 zoom out 시켜서 표시... 열라 귀찮긴한데... 여하튼 그렇게 해야 표시됨. 돈받고 하니 하지 안 그럼 모르고 있을 일이지 않을까? ㅋ 

Streptosquarus Shape Count

이미지
  A bacteria called streptosquarus comes in very peculiar shapes. The streptosquarus is flat with no perceived thickness. (It is essentially two-dimensional.) It is composed of an integer number of unit squares. In addition, all the squares in the streptosquarus must be touching at least one other square of the bacteria along edges.  Write a program that takes a positive integer from the user and returns the number of possible different streptosquarus shapes of that size. Notice that there is only one streptosquarus of sizes one and two, but there are two of size three, five of size four, and 12 of size five. 모든 가능한 스트렙토스쿼러스의 형태를 생성하고, 회전과 대칭에 의한 중복을 제거하여 유일한 형태의 수를 계산해야 합니다. 회전과 대칭을 확인하는 로직을 추가하여 중복을 제거하는 것이 핵심입니다. 이 알고리즘은 크기가 커질수록 매우 느려질 수 있으므로, 크기가 5를 초과하는 경우에는 실행 시간을 고려해야 합니다. from collections import deque def generate_streptosquarus(n): if n == 1 : return 1 # All possible moves from a square moves = [( 0 , 1 ), ( 1 , 0 ), ( 0 , - 1 ), (- 1 , 0 )] #...

플러터 함수 호출 앞에 const 붙이는게 된 이유

이미지
위의 플러터 앱 진입점에 있는 main() 함수에서, 예전에는 안 붙이던 MyApp() 앞에 const 가 붙게 되었습니다.  runApp( const MyApp());  이거나 const MyApp({super.key}); 이 곳에 const 는 왜 붙이게 되었는가? Flutter에서 const 키워드를 사용하는 것은 최적화와 관련된 중요한 부분입니다. const 키워드를 사용하여 위젯을 선언하면, Flutter는 그 위젯을 위젯 트리에 한 번만 생성하고, 다시 빌드할 필요가 없는 경우 재사용합니다. 이것은 특히 상태가 변하지 않는(static) 위젯에 유용합니다. 이전 버전의 Flutter에서는 const의 사용이 필수적이지 않았습니다. 하지만, Flutter의 성능을 향상시키고, 앱의 메모리 사용량을 줄이기 위해 const 키워드의 사용이 점점 더 권장되었습니다. const를 사용하는 주요 이점은 메모리 효율성: const로 생성된 객체는 컴파일 시간에 생성되며, 런타임에는 같은 객체를 재사용합니다. 이는 메모리 사용량을 줄이는 데 도움이 됩니다. 성능 향상: const 위젯은 상태가 변하지 않으므로, Flutter 프레임워크가 위젯을 다시 빌드할 필요가 없습니다. 이는 렌더링 성능을 향상시키는 데 도움이 됩니다. 코드 가독성: const를 사용하면 해당 객체가 변경 불가능하다는 것을 명확하게 알 수 있으며, 이는 코드의 가독성과 유지 보수성을 향상시킵니다. 예를 들어, runApp(const MyApp());에서 const MyApp()은 MyApp 위젯이 상태를 가지지 않고, 그 인스턴스가 변경될 필요가 없음을 나타냅니다. 마찬가지로, const MyApp({super.key});는 MyApp의 생성자가 항상 동일한 인스턴스를 반환하도록 보장합니다. 이러한 최적화는 특히 대규모 앱 또는 복잡한 UI를 가진 앱에서 더욱 중요해집니다. 따라서 최신 Flutter 개발에서는 const의 사용이 더욱 강조되고 있습니다....

UGREEN 1-IN 2-OUT Bidirectional HDMI Switcher 4K 60Hz

이미지
오늘 사용해 본 제품은 UGREEN 의 Bidirectional HDMI Switcher 4K 60Hz 제품입니다.  Bidirectional 이기 때문에 2 in 1 Out, HDMI Splitter 로 쓰거나 1 in 2 Out HDMI Selector 로 쓸수 있습니다. 액스박스와 플레이스테이션에 1개 모니터가 있을 때 하고싶은 게임기를 모니터에 연결하는 것으로 쓸 수 있고요.  한개의 컴퓨터 출력을 오늘은 왼쪽 모니터, 내일은 오른쪽 모니터에서 보고 싶을 때 이럴 때 사용할 수 있는 것이죠. 저는 한쪽은 맥에 한쪽은 윈도에 연결해서 한개의 모니터로 출력하는데 쓰려고 샀습니다. 전환 속도는 그렇게 빠르지 않아서 라이브 방송에서 쓸만하지는 않겠네요. 캐나다 아마존 현재 가격은 19불입니다. 슬라임의 간단 리뷰 였습니다.

Phaser JS game framework

Phaser는 HTML5 게임 프레임워크 입니다: 이는 캔버스 및 WebGL을 사용하여 데스크탑과 모바일 브라우저에서 동작하는 2D 게임을 만드는 데 사용됩니다. Phaser는 개방적이고 활발한 커뮤니티와 함께, 매우 포괄적인 문서와 예제를 제공하고 있어 개발자들이 쉽게 게임을 개발할 수 있도록 돕습니다. Phaser를 사용하는 개발자는 JavaScript 또는 TypeScript를 사용하여 게임을 작성할 수 있으며, 프레임워크는 물리 엔진, 스프라이트, 입출력, 사운드 및 음악, 상태 관리 등 게임 개발에 필요한 다양한 기능들을 제공합니다. Phaser의 주요 특징은 다음과 같습니다: Canvas와 WebGL 렌더링 : Phaser는 자동으로 브라우저가 지원하는 가장 적합한 렌더링 방식을 선택합니다. 다양한 게임 오브젝트 지원 : 텍스트, 스프라이트, 타일맵, 파티클 시스템 등 다양한 게임 오브젝트를 지원합니다. 물리 엔진 통합 : Arcade Physics, P2JS, Ninja Physics 등 여러 물리 엔진을 통합하여 사용할 수 있습니다. 입출력 : 키보드, 마우스, 터치 스크린을 위한 강력한 입력 지원을 제공합니다. 애니메이션 : 스프라이트 애니메이션을 쉽게 추가하고 관리할 수 있습니다. 상태 관리 : 게임의 다양한 상태를 관리할 수 있는 시스템을 제공합니다. 자산 관리 : 이미지, 오디오 파일, JSON 데이터 등의 자산을 로드하고 관리하는 로더 시스템을 가지고 있습니다. 모바일 지원 : 모바일 브라우저에 최적화되어 있으며, 반응형 게임을 만들 수 있습니다. Phaser는 대표적인 오픈 소스 게임 프레임워크로, 개인 프로젝트부터 상업적인 게임 개발에 이르기까지 다양한 목적으로 사용됩니다.