• maimat: 画像の一括圧縮とサイズ変更

    maimat (Mass Images Manipulation Tool) は、バッチ画像処理 (サイズ変更と圧縮) のために設計されたオープンソース ツールです。このアプリケーションは Python 3.10 以降で書かれており、処理エンジンとして ImageMagick を使用します。

    リンク

    https://github.com/zefir1990/maimat

  • Aleka は、Flutter に基づいて構築されたクロスプラットフォームの描画アプリです

    Aleka は、Flutter で書かれた軽量で高速な描画アプリです。ブラウザー、デスクトップ (Windows、macOS、Linux)、モバイル デバイス (iOS、Android) など、どこでも機能します。

    ボンネットの下にはピュアダーツ、マテリアル3と細部へのこだわりが詰まっています。

    チャンス

    • フリーハンド描画: 二次ベジェ補間による滑らかなストローク。
    • 15 色のパレット: 視覚的な表示で簡単に選択できます。
    • ブラシ サイズ: スライダーで 1 ~ 30 ピクセルの範囲で調整できます。
    • 元に戻す: ストロークを元に戻します。
    • ワンクリックでキャンバスをクリアします:
    • フラッド フィル: 滑らかなエッジに対する許容値を備えた BFS。
    • 保存: .aleka 形式(JSON)。
    • 読み込み中: 以前に保存した図面を開いて続行します。
    • PNG エクスポート: キャンバスを 3 倍の解像度でキャプチャします。
    • 🎬 アニメーション モード: タイムラインを使用したフレームごとのアニメーション:
      • それぞれ独自のデザインを持つフレームの追加と削除
      • フレーム期間は 50 ミリ秒から 5 秒までです。
      • FPS を変更します: 6、8、12、15、24、30、または 60。
      • MP4 にエクスポートします (デスクトップでは ffmpeg、ブラウザでは ffmpeg.wasm 経由)。
    • ダークとライトのテーマ: マテリアル 3、システムに従います。

    なぜフラッターするのでしょうか?

    Flutter を使用すると、コードを複製することなく 6 つのプラットフォームに対して 1 つのアプリケーションを作成できます。 Aleka は、Dart および Flutter SDK のネイティブ機能と最小限のサードパーティの依存関係のみを使用します: file_picker、塗りつぶし時にピクセルを操作するための image、ブラウザでビデオをエクスポートするための ffmpeg_wasm。

    アーキテクチャ

    このプロジェクトは、クリーン アーキテクチャとソリッドの原則に準拠しています。

    • PaintCanvasController – リスナー/オブザーバー パターンを通じてストロークと塗りつぶしの状態を制御します。
    • ペイントツールバー – パレット、スライダー、ボタンの UI コンポーネント。
    • AlekaFile – JSON でのシリアル化/逆シリアル化、PNG キャプチャ。
    • MovieController – フレームとアニメーション状態のモデル。
    • VideoExport – MP4 エンコード ロジック (デスクトップ/ウェブ) をカプセル化します。

    I/O 関数 (saveStrokes、loadStrokes、capturePng など) は注入可能になっており、テスト中にモックに置き換えることができます。このプロジェクトには 79 のテストがあります: シリアル化、キャンセル、読み込み/保存、PNG とビデオのエクスポート、フレーム モデルとタイムラインのチェック。

    ファイル形式 .aleka

    .aleka ファイルは、任意のテキスト エディタで開くことができる読み取り可能な JSON です。

      "aleka": "1.0",
      "strokes": [
        {
          "color": 4278190080,
          "strokeWidth": 3.0,
          "points": [[100.0, 200.0], [150.0, 250.0]]
        }
      ]
    }
    

    各ストロークには、色 (ARGB32)、太さ、および点の配列が格納されます。この形式は、aleka フィールドによってバージョン管理されます。

    アニメーション モード

    主な機能の 1 つは、組み込みのフレームごとのアニメーション エディタです。フレームを描画し、新しいフレームを追加し、次のフレームを描画する、ということを繰り返します。タイムラインにはサムネイルが表示され、フレームの順序と長さを変更できます。完成したアニメーションは MP4 にエクスポートできます。

    エクスポート アルゴリズムはすべてのフレームを反復処理し、RepaintBoundary 経由でフレームをキャプチャし、PNG バイトを収集してエンコーダに転送します。デスクトップではシステム ffmpeg と呼ばれ、ブラウザでは ffmpeg.wasm が使用されます。これは、ffmpeg を WebAssembly に完全に移植したもので、ブラウザのサンドボックスで直接動作します。

    塗りつぶし

    塗りつぶしの実装では、色の許容値 (_kFillTolerance = 1000) を持つ幅優先検索 (BFS) を使用します。これにより、ストロークの滑らかなエッジを正しく処理できるようになります。塗りつぶしは輪郭を超えて流れず、境界上の半透明のピクセルをキャプチャします。空のキャンバスの場合、不必要な計算を行わずに塗りつぶしが作成されます。

    試してみる

    Aleka は、Web 上およびネイティブ アプリケーションとして利用できます。

    demensdeum.com/software/aleka/

    ソース コードは MIT ライセンスの下で公開されています。

    github.com/demensdeum/Aleka

  • ママカレンダー – クロスプラットフォームのリマインダーアプリ

    Mama Calendar は、Node.js + MongoDB および PHP + MariaDB という 2 つのバックエンド実装を備えた React Native (Expo) で書かれたクロスプラットフォームのイベントおよびリマインダー アプリケーションです。

    このアプリケーションでは、絵文字を分類してイベントを作成し、繰り返しの種類 (1 回、毎年、毎月、毎週、毎日) を選択し、別の「重要なイベント」タブで今後 3 日間の重要なイベントを表示することができます。

    テクノロジースタック

    フロントエンドは、TypeScript、ナビゲーション用の Expo Router、アニメーション用の react-native-reanimated を使用した Expo SDK 57 を介して React Native 0.86 で作成されています。アイコンにはエキスポシンボルが使用されます(iOSではSFシンボル、Android/Webではマテリアルアイコン)。

    バックエンドは 2 つのバージョンで実装されています。

    • Node.js: Express 4、ネイティブ ドライバー経由の MongoDB 8、scrypt + Salt によるカスタム認証、手動トークン管理。 Docker Compose はクライアント (nginx)、サーバー、MongoDB を起動します。
    • PHP: フレームワークなしの PHP 8.2、PDO + MariaDB 11、パスワード ハッシュ用の bcrypt、独自のルーター、および Composer 経由の PSR-4 自動読み込み。

    アプリケーション関数

    • 登録と認可: ユーザー名/パスワードとベアラー トークンを使用したシンプルなシステム
    • CRUD イベント: 日付、絵文字、繰り返しタイプを使用してイベントを作成、表示、編集、削除します
    • スマート フィルタリング: [重要なイベント] タブには、繰り返しルールを考慮して、今後 3 日間のイベントが表示されます。たとえば、年次イベントには、最も近い年次イベントが、毎月 – 月の日ごと、毎週 – 曜日ごとに表示されます。
    • 絵文字ピッカー: イベントを素早く分類するための 20 個のプリセット絵文字
    • 今日のイベントのハイライト: 今日のイベントは赤い背景 (#B71C1C) でハイライトされます
    • ダーク テーマ: ライト テーマとダーク テーマの個別のパレットによるシステム カラー スキームの自動検出
    • 国際化: React Context を介したロシア語と英語
    • Анимации: анимированный сплэш-скрин с Keyframe API и упругой интерполяцией, анимированная иконка приложения с вращающимся свечением
    • 管理エンドポイント: ユーザー、トークンの管理、マスター トークンによるデータベースのクリア

    なぜ 2 つのバックエンド実装があるのですか?

    Node.js バージョンがメインですが、よりクラシックなホスティングの代替として PHP バージョンが存在します。 API は完全に同一であるため、クライアント コードを変更せずに API を切り替えることができます。

    インフラストラクチャ

    スタック全体は Docker Compose を通じて生成されます。クライアントはマルチステージ ビルド (Expo エクスポート → nginx alpine)、Node.js 上のサーバー、MongoDB 8 を通じて組み立てられます。PHP バージョンの場合は、MariaDB 11 とテスト用の phpunit を含む別の compose ファイルがあります。

    Web バージョンのアセンブリは、expo エクスポート の前に API_URL にパッチを適用し、後で元のファイルを復元する PowerShell スクリプトによって自動化されます。

    出力

    Mama Calendar は、React Native のモバイルおよび Web フロントエンドから 2 つのサーバー側オプションまで、全サイクルをカバーするフル機能のクロスプラットフォーム アプリケーションです。このプロジェクトは、そのアーキテクチャ、最新の Expo SDK 機能の使用、およびデュアル バックエンド実装において興味深いものです。

    リンク

    https://github.com/zefir1990/Mama-Calendar
    https://demensdeum.com/software/mama-calendar/events

  • ドンキヒルズ

    Donki Hills は一人称視点のホラー コメディ アドベンチャーで、プレイヤーはサスペンスと予期せぬユーモアが組み合わさったミステリアスな物語を体験できます。
    主人公のジェームズは、オンライン上の友人マリアを探しに行きます。マリアとのつながりは突然切れました。唯一の証拠は、ノボシビルスク地方のドンキ・ヒルズという人里離れた村を示すランダムな写真です。真実を突き止めたいという欲求に駆られたジェームズは、マリアの失踪のすべての状況を明らかにするために独自の調査を開始します。

    ゲームは Steam で入手できます:
    https://store.steampowered.com/app/3476390/Donki_Hills/

  • 石積みAR

    Masonry AR は、秘密結社の世界に浸れる位置ベースのマルチプレイヤー拡張現実 (AR) ゲームです。あなたの街の通りを探索し、フリーメーソンの知識の本を集め、自分のロッジを見つけて、現実世界の地図上での影響力を競いましょう。

    主な機能

    • 地理位置情報ベースのゲームプレイ:デバイスの GPS を使用して現実世界を移動し、秘密の本やリソースを見つけます。
    • 自動ウォーク モード:GPS アクセスが制限されている場合は、世界の首都の 1 つを開始点として選択して自動ウォーク モードを開始できます。
    • ロッジの作成: 実際の地図上にフリーメーソンのロッジを設立し、教団の影響力を拡大します。
    • ゲーム内経済: ゲーム内通貨 (MOS) を獲得し、領土を開発し、友達と紹介リンクを共有します。
    • クロスプラットフォーム: Three.js に基づいたレンダリングを備えた Flame Steel Engine 2 ゲーム エンジンのおかげで、ゲームはモバイル デバイスや PC の Web ブラウザで直接実行されます。

    遊ぶ:
    https://demensdeum.com/games/masonry-ar/client/

    GitHub:
    https://github.com/zefir1990/Masonry-AR

  • テフレッチャー


    Teflecher は、Kotlin マルチプラットフォーム (KMP) と Compose マルチプラットフォーム 上に構築された、高速でインタラクティブなクロスプラットフォームのクイズ アプリケーションです。これにより、ユーザーはローカル JSON ファイルまたはリモート URL からクイズを直感的にロードし、多肢選択式の質問に回答し、正解に対する即時のフィードバックを確認し、結果を追跡することができます。

    ウェブ:
    https://demensdeum.com/software/teflecher/

    GitHub:
    https://github.com/zefir1990/teflecher

    また、イオン + キャパシタ テクノロジーに基づいた Teflecher Editor 形式のクイズ エディターでもあります。

    ウェブ:
    https://demensdeum.com/software/teflecher-editor/

    GitHub:
    https://github.com/zefir1990/teflecher-editor

  • ゴーストコンタクト


    ゴースト連絡先は、標準システム API や電話帳から連絡先を隠すように設計されたシンプルな Web アプリケーションです。すべての情報はブラウザ内でのみローカルに保存され、外部サーバーには転送されません。

    主な機能

    • システム API からの非表示:連絡先は、標準のシステム連絡先 API およびデバイスの電話帳と同期されません。
    • パニック パスワード: 特別なパスワードを入力すると、連絡先データベース全体が即座に取り消し不能に削除されます。
    • インポートとエクスポート: バックアップ コピーを作成するために、CSV ファイル経由で連絡先データベースを便利に転送します。

    オンライン申請:
    https://demensdeum.com/software/ghost-contacts/

    GitHub:
    https://github.com/demensdeum/GhostContacts

  • キューブアートプロジェクト2

    キューブ アート プロジェクト 2 へようこそ – 想像力を自由に働かせる瞑想的な 3D キャンバスです。ボクセル ペイントを作成し、色を試し、ブラウザ内でユニークな 3D モデルに命を吹き込みます。

    キューブアートプロジェクト2とは何ですか?

    これは、画面を 3D ペイント用のインタラクティブなキャンバスに変えるクリエイティブなゲームです。あなたの目の前には、あなたのアイデア、形、明るい色で満たされる、きれいな三次元空間が広がっています。

    主な機能

    • 3D 描画: ボクセル アートと 3D ジオメトリの作成に焦点を当てた、リラックスできるクリエイティブ プロセス
    • カラーピッカー: 便利な RGB スライダーを使用して、各ブロックの色合いを微調整します。
    • 動きの自由: 便利なカメラ制御を使用して、あらゆる角度から絵画を探索できます。
    • キャンバスの保存: 作業内容をファイルに保存し、いつでも描画に戻ったり、他のユーザーと作業内容を共有したりできます。

    管理

    • WASD – カメラの動き
    • マウス – カメラの回転と検査
    • インターフェース (GUI) – 色の選択と調整

    遊ぶ:
    https://demensdeum.com/software/cube-art-project-2/

    GitHub:
    https://github.com/zefir1990/cube-art-project-2

  • Raiden Video Ripper

    Raiden Video Ripper は、ビデオ編集とフォーマット変換のために設計されたオープンソース プロジェクトです。 Qt 6 (Qt Creator) を使用して作成されており、ビデオを編集して MP4、GIF、WebM 形式に変換できます。動画から音声を抽出してMP3形式に変換することもできます。

    マイクロソフト ストア:
    https://apps.microsoft.com/detail/9nvzjs98smgc

    GitHub:
    https://github.com/demensdeum/RaidenVideoRipper/releases

  • マーズマイナーズ

    赤い惑星の過酷な状況では、一秒一秒、すべてのセクターが重要です。コロニーの存続と貴重な火星の資源の管理を賭けて戦うターンベースの戦略ゲームであるマーズ マイナーズをご紹介できることを嬉しく思います。

    火星採掘者とは何ですか?

    マーズ マイナーズでは、火星の採掘会社を管理します。あなたの任務は、人工知能や他のプレーヤーとの激しい競争に直面して、基地を建設し、資源セクターを占領し、自律採掘ユニットの行動を調整することです。

    主な機能

    • 戦術戦略: 事前に敵の動きを計算し、基地の開発と領土の占領を計画します。
    • 自律ユニット: 採掘ロボットの動作を調整し、効率を最大化するためにロジックをカスタマイズします。
    • さまざまなモード: シングルプレイヤーの訓練場でスキルを磨いたり、マルチプレイヤー モードで他の入植者と競争したりできます。
    • 高度な AI: 戦術的なミスを許さないスマート オートマトンとリソースを奪い合います。

    マーズ マイナーズをプレイする

  • フレイムスティール:デスマスク2

    冷たい光があふれる工業用巨大構造物の果てしない廊下で、新たな挑戦があなたを待っています。古典的な美学と最新のリアルタイム ゲームプレイを組み合わせた 3D ダンジョン クローラーであるFlame Steel: Death Mask 2 をご紹介できることを嬉しく思います。

    フレイム スティール: デスマスク 2 とは何ですか?

    手続き的に生成された迷路で目が覚めると、「フィルター」と呼ばれる敵対的な存在が毎ターン潜んでいる可能性があることを想像してみてください。 Flame Steel: Death Mask 2 では、あなたはシーカーの役割を引き受け、Flame Steel Engine 2 (Three.js グラフィックス レンダリングを使用) 上に構築された世界を探索します。

    主な機能

    • プロシージャルダンジョン: それぞれの試みはユニークです。サーバーは秘密と危険に満ちた新しいマップを作成します。
    • ターミナル: 完全な制御を希望する場合は、組み込みのコマンド ライン インターフェースを使用してシステムと直接対話することができます。高度なアクションの実行、デバッグ、コマンドの送信などを行うことができます。
    • 戦闘とサバイバル: フィルターと戦ってビットを獲得し、それを使って宝箱を開け、ステータスを向上させます。健康に注意してください。生存が保証されているわけではありません。
    • 工業的な美学: 巨大な巨大構造物の高コントラストの視覚化と無菌的な雰囲気

    マスクの背後にあるテクノロジー

    ゲームはブラウザ用に作成されており、以下を使用します。

    • フロントエンド: スムーズな 3D レンダリングのための純粋な JavaScript と Flame Steel Engine 2 (Three.js グラフィックス レンダラー付き)。
    • バックエンド: サーバー側を実行するための Node.js。
    • インフラストラクチャ: 永続的なデータ ストレージ用の MongoDB とリアルタイムの空間インデックス作成用の Redis

    Flame Steel: Death Mask 2 をプレイ

  • ウシュキラジオ

    Ushki-Radio は、シンプルさと聴く楽しさに重点を置いて作られた、オンライン ラジオ用のクロスプラットフォーム ラジオ プレーヤーです。不要な機能やオーバーロードされたインターフェイスはなく、電源を入れて聞くだけです。


    https://demensdeum.com/software/ushki-radio

    このプロジェクトではオープンソースの Radio Browser を使用し、世界中の何千ものラジオ局をアプリケーションで利用できるようにしています。名前、ジャンル、または人気で検索し、お気に入りに追加して、お気に入りのステーションにすぐに戻ることができます。

    Ushki-Radio はバックグラウンド ラジオ プレーヤーの役割に最適です。最後の放送局を記憶しており、音量を制御でき、複雑な設定は必要ありません。インターフェイスは簡潔で理解しやすく、音楽、会話、放送の邪魔にならないようにすべてが行われています。

    技術的には、このプロジェクトは React Native と Expo に基づいて構築されているため、ブラウザーとネイティブ アプリケーションの両方で動作します。内部では、expo-av を使用してオーディオを再生し、ユーザー設定はローカルに保存されます。ロシア語や英語など、いくつかの言語がサポートされています。

    Ushki-Radio は、オープン、軽量、拡張可能、そして主にリスナーに焦点を当てた、最新のインターネット ラジオ プレーヤーがどのようなものであるかを示す好例です。このプロジェクトは MIT ライセンスに基づいて配布されており、個人使用だけでなく、オーディオ アプリケーションを使用した独自の実験の基礎としても最適です。

    GitHub:
    https://github.com/demensdeum/Ushki-Radio

    Googleプレイ:
    https://play.google.com/store/apps/details?id=com.demensdeum.ushkiradio

  • Glazki TV: インターネット テレビ用の最新プレーヤー

    Glazki TV は、React Native と Expo に基づいて構築された、インターネット テレビ (IPTV) 用の最新の高性能プレーヤーです。このプロジェクトは使いやすさと速度に焦点を当てており、モバイル デバイスとブラウザの両方で IPTV チャンネルを視聴するための便利なインターフェイスを提供します。

    主な機能

    • チャンネルの閲覧: 簡単にナビゲーションできるように分類された何千ものチャンネルを閲覧します。
    • 検索: 必要なチャンネルを名前ですばやく見つけます。
    • お気に入り: すぐにアクセスできるようにお気に入りのチャンネルを保存します (データはローカルに保存されます)。
    • ディープリンク: 自動的に開くチャンネルへの直接リンクを共有します。
    • テーマのサポート: インターフェースは、システムの暗いテーマまたは明るいテーマに自動的に適応します。
    • ウェブ サポート: プレーヤーは URL 同期によりブラウザで完全に機能します。

    テクノロジースタック

    このプロジェクトは最新の開発ツールに基づいています。

    • フレームワーク: React Native + Expo
    • Video Player: expo-video (замена устаревшему expo-av)
    • UI ツールキット: 反応ネイティブペーパー
    • プレイリスト パーサー: iptv-playlist-parser

    ウェブ版:
    https://demensdeum.com/software/glazki-tv/

    Google Play バージョン:
    https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv

  • ゼフィール1990


    Zefir1990 – Ilia Prokhorov、私は商用開発で​​ 15 年以上の経験を持つ開発者です。モバイル、Web、デスクトップ システム用のゲームとアプリケーションを開発する Demens Deum スタジオの創設者。 Android 2 上の最初の 3D OpenGL ES 2 ゲーム Mad Racer は 2010 年にリリースされました。彼はこのプロジェクトにプログラマー兼ゲーム デザイナーとして参加し、開発には作曲家の Anton Dmitriev (coolspotdreamer) も参加しました。ゲームの発売が成功した後は、フルタイムのカスタム開発と契約に基づくプロジェクト開発に従事しました。クライアントには Decathlon、Playboy、Fitbit が含まれます。

    私はソフトウェア開発、ゲーム、デザイン パターン、アルゴリズム、AI に関する記事の著者でもあり、ソフトウェア エントロピーに関する本を書く予定です。

    推奨プログラミング言語: ASM、C、C++、ObjC、Python、Kotlin、Swift、Java、Rust、Go、TypeScript、JavaScript、C#、Dart、PHP。

    LinkedIn: linkedin.com/in/zefir1990
    GitHub: github.com/zefir1990
    電報: t.me/zefir1990
    電子メール: ceo@demensdeum.com
    Twitch: twitch.tv/zefir1990
    YouTube: youtube.com/zefir1990

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.