Author: demensdeum

  • ओपनकोड के लिए रूसी एआई प्रदाता

    ओपनकोड एक खुला प्रोग्रामिंग एजेंट है जो सीधे टर्मिनल में काम करता है: प्रोजेक्ट फ़ाइलों को पढ़ता है, कोड संपादित करता है, कमांड चलाता है और परीक्षण करता है, रिपॉजिटरी खोजता है और गिट के साथ काम करता है। इसकी ताकत यह है कि यह एक मॉडल प्रदाता से बंधा नहीं है और दर्जनों प्रदाताओं को जोड़ सकता है।

    गीगाचैट Sber का एक बड़ा भाषा मॉडल है। यह ओपनकोड प्रदाताओं की तैयार सूची में नहीं है, लेकिन यह कोई समस्या नहीं है: ओपनकोड वर्सेल एआई एसडीके पैकेज के माध्यम से मनमाने प्रदाताओं को जोड़ता है। गीगाचैट के लिए एक पैकेज gigachat-ai-sdk-provider है, जो OAuth प्राधिकरण और एक्सेस टोकन को अपडेट करने का ख्याल रखता है। एक अलग बारीकियां डिजिटल विकास मंत्रालय के प्रमाणपत्र हैं: उनके बिना, नोड गीगाचैट सर्वर पर भरोसा नहीं करता है, और प्रमाणपत्र सत्यापन त्रुटि के साथ अनुरोध विफल हो जाते हैं।

    इस पोस्ट में मैं बताऊंगा कि कुंजी कैसे प्राप्त करें, प्रमाणपत्र कैसे स्थापित करें और गीगाचैट को ओपनकोड से कैसे कनेक्ट करें।

    आपको क्या चाहिए

    काम करने के लिए आपको तीन चीजों की आवश्यकता है:

    • OpenCode इंस्टॉल हो गया है। यदि एजेंट अभी तक इंस्टॉल नहीं हुआ है, तो मैंने OpenCode और DeepSeek के बारे में एक अलग नोट में इंस्टॉलेशन प्रक्रिया पर चर्चा की है।
    • GigaChat खाता। GigaChat स्टूडियो में पंजीकरण और प्राधिकरण कुंजी – लॉग इन करने के लिए आपको Sber ID की आवश्यकता होगी।
    • आधुनिक टर्मिनल। वेज़टर्म, अलाक्रिट्टी, घोस्टी, किट्टी या कोई अन्य करेगा।

    गीगाचैट प्राधिकरण कुंजी

    कुंजी आपके गीगाचैट स्टूडियो व्यक्तिगत खाते में बनाई गई है। Developers.sber.ru/studio पर जाएं, लॉग इन करें और GigaChat API अनुभाग में एक प्रोजेक्ट बनाएं। प्रोजेक्ट सेटिंग्स में प्राधिकरण डेटा के साथ एक ब्लॉक है: वहां से कॉपी की गई लाइन बेस 64 में एक तैयार प्राधिकरण कुंजी है। इसे पर्यावरण चर में प्रतिस्थापित किया जाता है, न कि क्लाइंट-सीक्रेट जोड़ी को अलग से।

    कुंजी के साथ, दायरा निर्दिष्ट किया गया है – पहुंच क्षेत्र:

    • GIGACHAT_API_PERS – व्यक्तियों के लिए।
    • GIGACHAT_API_B2B – व्यक्तिगत उद्यमियों और कानूनी संस्थाओं के लिए।
    • GIGACHAT_API_CORP – कॉर्पोरेट पहुंच।

    प्रदर्शित कुंजी मान को तुरंत सहेजा जाना चाहिए: इसे बाद में दोबारा नहीं दिखाया जाएगा, और यदि आवश्यक हो, तो एक नया जारी करना होगा।

    ये लाइन क्या है ये समझना जरूरी है. प्राधिकरण कुंजी एक अलग रहस्य नहीं है, बल्कि client_id:client_secret की एक जोड़ी पहले से ही बेस64 में एन्कोडेड है। गीगाचैट-जेएस लाइब्रेरी इस हेडर को OAuth अनुरोध में प्रतिस्थापित करती है:

    Authorization: Basic ваш_ключ_авторизации
    

    जवाब में, एक JWE एक्सेस टोकन लगभग आधे घंटे के जीवनकाल के साथ आता है, और फिर लाइब्रेरी इसे स्वचालित रूप से अपडेट करती है। पैकेज स्वयं जाँचता है कि मान बेस64 के समान है और चेतावनी देता है कि क्या चर में गलती से “कच्चा” क्लाइंट रहस्य शामिल है। इसलिए, तैयार बेस 64 स्ट्रिंग को खाते से कॉन्फ़िगरेशन और पर्यावरण चर में स्थानांतरित करना आवश्यक है, न कि क्लाइंट_आईडी और क्लाइंट_सीक्रेट जोड़ी को अलग से।

    डिजिटल विकास मंत्रालय के प्रमाण पत्र

    गीगाचैट एपीआई एनसीए डिजिटल विकास मंत्रालय के प्रमाणपत्रों का उपयोग करता है। मानक विश्वसनीय रूट्स स्टोर में वे नहीं हैं, इसलिए जब एक्सेस टोकन प्राप्त करने का प्रयास किया जाता है, तो अनुरोध एक त्रुटि के साथ विफल हो जाता है:

    self-signed certificate in certificate chain
    

    प्रमाणपत्र ऑपरेटिंग सिस्टम स्तर पर स्थापित किए जा सकते हैं – फिर उन पर ब्राउज़र और सिस्टम उपयोगिताओं द्वारा भरोसा किया जाएगा। लेकिन ओपनकोड नोड और बन पर चलता है, इसलिए प्रमाणपत्र फ़ाइल को सीधे NODE_EXTRA_CA_CERTS वेरिएबल में निर्दिष्ट करना अधिक सुरक्षित और आसान है। रूट और जारीकर्ता प्रमाणपत्र डाउनलोड करें और उन्हें एक PEM फ़ाइल में डालें:

    curl -s https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt -o russian_trusted_root_ca_pem.crt
    curl -s https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -o russian_trusted_sub_ca_pem.crt
    cat russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt > russian_trusted_ca_bundle.pem
    

    फ़ाइल को सुविधाजनक स्थान पर रखा जा सकता है और एजेंट शुरू करते समय इसका पूरा पथ निर्दिष्ट किया जा सकता है।

    यहाँ एक पकड़ है. डाउनलोड की गई फ़ाइलें सीआरएलएफ लाइन ब्रेक का उपयोग करती हैं, और रूट प्रमाणपत्र में पिछली लाइन फ़ीड नहीं होती है। इसलिए, एक नियमित बिल्ली पहले प्रमाणपत्र के अंत और दूसरे की शुरुआत को एक पंक्ति में जोड़ती है:

    -----END CERTIFICATE----------BEGIN CERTIFICATE-----
    

    लिब्रेएसएसएल – और सिस्टम मैकओएस पर ओपनएसएल, मैं आपको याद दिला दूं, बिल्कुल लिब्रेएसएसएल है – ऐसी फ़ाइल को स्वीकार नहीं करता है और एक त्रुटि के साथ प्रतिक्रिया करता है:

    PEM routines:CRYPTO_internal:bad end line
    

    इसका मतलब यह है कि अकेली बिल्ली ही काफी नहीं है। प्रत्येक प्रमाणपत्र को पहले ओपनएसएल के माध्यम से चलाया जाना चाहिए: यह इसे एलएफ लाइन फ़ीड और अंतिम लाइन फ़ीड के साथ कैनोनिकल पीईएम में रिकोड करेगा, और उसके बाद ही विलय किया जाएगा:

    openssl x509 -in russian_trusted_root_ca_pem.crt -out russian_trusted_root_ca.pem
    openssl x509 -in russian_trusted_sub_ca_pem.crt -out russian_trusted_sub_ca.pem
    cat russian_trusted_root_ca.pem russian_trusted_sub_ca.pem > russian_trusted_ca_bundle.pem
    

    आप जाँच सकते हैं कि फ़ाइल इस प्रकार पढ़ी जा रही है:

    openssl x509 -in russian_trusted_ca_bundle.pem -noout -subject
    

    यदि प्रमाणपत्र किसी अन्य स्रोत से लिए गए हैं और डीईआर या पीकेसीएस#7 प्रारूप में आते हैं, तो उन्हें पीईएम में भी रिकोड किया जा सकता है:

    openssl x509 -in cert.crt -inform DER -outform PEM -out cert.pem
    openssl pkcs7 -print_certs -in bundle.p7b -out cert.pem
    

    OpenCode से कनेक्ट करें

    प्रदाता का वर्णन opencode.jsonc कॉन्फ़िगरेशन फ़ाइल में किया गया है। ओपनकोड स्वयं npm फ़ील्ड में निर्दिष्ट npm पैकेज को डाउनलोड और कनेक्ट करेगा, इसमें createGigaChat फ़ैक्टरी ढूंढेगा और उसमें विकल्प पास करेगा। एपीआई से मॉडलों को उनके पहचानकर्ताओं द्वारा सूचीबद्ध करना पर्याप्त है।

    फ़ाइल को दो स्थानों पर रखा जा सकता है:

    • वैश्विक – ~/.config/opencode/opencode.jsonc. सेटिंग सभी उपयोगकर्ता प्रोजेक्ट पर लागू होती हैं।
    • प्रोजेक्ट में – प्रोजेक्ट रूट में opencode.jsonc। इस कॉन्फिगरेशन की प्राथमिकता अधिक है और गिट के लिए प्रतिबद्ध होना सुरक्षित है।

    दोनों फ़ाइलें एक ही योजना का उपयोग करती हैं और संयुक्त होती हैं: प्रोजेक्ट फ़ाइल केवल मिलान कुंजियों के साथ वैश्विक ओवरलैप करती है, शेष सेटिंग्स सहेजी जाती हैं। .jsonc एक्सटेंशन भी समर्थित है। यदि गीगाचैट की आवश्यकता केवल कुछ रिपॉजिटरी के लिए है, तो प्रदाता को वैश्विक के बजाय प्रोजेक्ट कॉन्फ़िगरेशन में रखना अधिक सुविधाजनक है।

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "gigachat": {
          "npm": "gigachat-ai-sdk-provider",
          "name": "GigaChat",
          "models": {
            "GigaChat-2-Max": { "name": "GigaChat 2 Max" },
            "GigaChat-2-Pro": { "name": "GigaChat 2 Pro" },
            "GigaChat-2": { "name": "GigaChat 2 Lite" },
            "GigaChat": { "name": "GigaChat" }
          }
        }
      }
    }
    

    व्यक्तिगत कुंजी के साथ उपलब्ध मॉडल यहां सूचीबद्ध हैं। यदि आपके पास व्यक्तिगत उद्यमी या गीगाचैट 3 तक पहुंच वाली कानूनी इकाई के लिए कोई प्रोजेक्ट है, तो मॉडल विधि से मॉडल ब्लॉक में आवश्यक पहचानकर्ता जोड़ें।

    यह अधिक सुविधाजनक है कि कुंजी को फ़ाइल में ही संग्रहीत न किया जाए, बल्कि इसे एक पर्यावरण चर में पास किया जाए: गीगाचैट-जेएस पैकेज इसे स्वचालित रूप से पढ़ता है। स्कोप मान को एक वेरिएबल पर भी सेट किया जा सकता है। जो कुछ बचा है वह प्रमाणपत्रों के लिए पथ निर्धारित करना और एजेंट को लॉन्च करना है:

    export GIGACHAT_CREDENTIALS=ваш_ключ_авторизации
    export GIGACHAT_SCOPE=GIGACHAT_API_PERS
    export NODE_EXTRA_CA_CERTS=/путь/к/russian_trusted_ca_bundle.pem
    opencode
    

    यह विकल्प इसलिए भी अच्छा है क्योंकि रहस्य स्थानीय auth.json संग्रहण में समाप्त नहीं होता है: यह केवल प्रक्रिया के वातावरण में रहता है। यह सीआई और एक बार लॉन्च के लिए अधिक सुविधाजनक है।

    मॉडल

    उपलब्ध मॉडलों का सेट स्कोप कुंजी पर निर्भर करता है। व्यक्तिगत कुंजी (GIGACHAT_API_PERS) GigaChat और GigaChat 2 परिवार के लिए उपलब्ध है:

    • गीगाचैट – मूल मॉडल।
    • GigaChat-2 – रोजमर्रा के कार्यों के लिए एक तेज़ और हल्का मॉडल, इंटरफ़ेस में लाइट के रूप में प्रदर्शित होता है।
    • GigaChat-2-Pro – संसाधन-गहन कार्यों के लिए एक बेहतर मॉडल।
    • GigaChat-2-Max व्यक्तिगत कुंजी का उपयोग करके उपलब्ध सबसे शक्तिशाली है।

    GigaChat 3 परिवार (GigaChat-3-Ultra, GigaChat-3-Pro, GigaChat3.5-432B-A28B-रीज़निंग जैसे खुले मॉडल) कंसोल कैटलॉग में दिखाई देता है, लेकिन यह व्यक्तिगत कुंजी के लिए उपलब्ध नहीं है: इसके लिए एक व्यक्तिगत उद्यमी परियोजना या GIGACHAT_API_B2B या GIGACHAT_API_CORP और एक उपयुक्त टैरिफ के साथ एक कानूनी इकाई की आवश्यकता होती है। व्यक्तिगत कुंजी पर, ऐसा मॉडल एक त्रुटि के साथ प्रतिक्रिया करता है:

    {"status":404,"message":"No such model"}
    

    आप मॉडलों की सूची पूछकर जांच सकते हैं कि आपकी कुंजी वास्तव में क्या आउटपुट देती है:

    curl -H "Authorization: Bearer <токен_доступа>" https://gigachat.devices.sberbank.ru/api/v1/models
    

    दो और अंक. एपीआई में मॉडल आईडी प्रदर्शित नामों से मेल नहीं खाते – लाइट मॉडल को GigaChat-2 कहा जाता है, GigaChat-2-Lite नहीं। और कंसोल में कैटलॉग वही चीज़ नहीं दिखाता है जो आपकी कुंजी के लिए उपलब्ध है, इसलिए आपको मॉडल विधि की प्रतिक्रिया पर ध्यान केंद्रित करना चाहिए, न कि कीमतों वाली सूची पर।

    इंटरफ़ेस में, मॉडलों की सूची कमांड के साथ खोली जाती है:

    /models
    

    रिपॉजिटरी में नियमित काम के लिए – फ़ाइलों के माध्यम से नेविगेट करना, छोटे संपादन, परीक्षण चलाना – GigaChat-2 काफी है। जटिल कार्यों और डिज़ाइन के लिए, प्रो या मैक्स पर स्विच करना समझ में आता है।

    प्रोजेक्ट में पहला लॉन्च

    प्रोजेक्ट निर्देशिका पर जाएँ और एजेंट लॉन्च करें:

    cd ваш_проект
    opencode
    

    पहला कदम एजेंट को आरंभ करना है:

    /init
    

    ओपनकोड परियोजना संरचना का विश्लेषण करेगा और एक फ़ाइल AGENTS.md बनाएगा – एजेंट के लिए निर्देश। यह फ़ाइल गिट के लिए प्रतिबद्ध है: यह एजेंट को प्रोजेक्ट में अपनाई गई परंपराओं और पैटर्न को समझने में मदद करती है।

    वैकल्पिक: स्थानीय प्रॉक्सी

    यदि किसी कारण से आप एनपीएम प्रदाता का उपयोग नहीं करना चाहते हैं, तो स्थानीय प्रॉक्सी वही परिणाम देता है। गीगाचैट टीम के पास एक आधिकारिक gpt2giga – फास्टएपीआई सेवा है जो ओपनएआई, एंथ्रोपिक और जेमिनी प्रारूप में अनुरोधों को गीगाचैट एपीआई में अनुवादित करती है और एक्सेस टोकन को स्वयं अपडेट करती है। इसे स्थानीय रूप से पोर्ट 8090 पर उठाया जाता है, जिसके बाद एक नियमित ओपनएआई-संगत प्रदाता को आधार पते http://localhost:8090/v1 के साथ @ai-sdk/openai-compatible पैकेज के माध्यम से ओपनकोड में कॉन्फ़िगर किया जाता है। इस पथ का नकारात्मक पक्ष यह है कि आपको ओपनकोड के बगल में एक चालू पायथन सेवा भी रखनी होगी।

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "gigachat": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "GigaChat (proxy)",
          "options": {
            "baseURL": "http://localhost:8090/v1"
          },
          "models": {
            "GigaChat-2-Max": { "name": "GigaChat 2 Max" }
          }
        }
      }
    }
    

    DeepSeek और Cloud.ru के माध्यम से अन्य मॉडल

    गीगाचैट एपीआई में स्वयं डीपसीक मॉडल नहीं हैं: एम्बेडिंग के लिए केवल गीगाचैट परिवार और मॉडल हैं। यदि आपको ओपनकोड में डीपसीक की आवश्यकता है, लेकिन रूसी क्लाउड गेटवे के माध्यम से, Cloud.ru की फाउंडेशन मॉडल सेवा उपयुक्त है। यह OpenAI-संगत प्रोटोकॉल का उपयोग करके मॉडल वितरित करता है, इसलिए यह मानक @ai-sdk/openai-compatible पैकेज का उपयोग करके जुड़ा हुआ है।

    उदाहरण के लिए, Cloud.ru फाउंडेशन मॉडल कैटलॉग में निम्नलिखित मॉडल हैं:

    deepseek-ai/DeepSeek-V4.1-Flash
    deepseek-ai/DeepSeek-V4-Flash
    deepseek-ai/DeepSeek-V4-Pro
    

    कुंजी Cloud.ru कंसोल में जारी की गई है: अनुभाग उपयोगकर्ता, टैब सेवा खाते। हम एक प्रोजेक्ट-स्तरीय सेवा खाता बनाते हैं, फिर उसके क्रेडेंशियल्स में हम फाउंडेशन मॉडल सेवा के साथ एक एपीआई कुंजी बनाते हैं। मुख्य रहस्य एक बार दिखाया जाता है और हम उसे सहेज लेते हैं।

    opencode.json में प्रदाता कॉन्फ़िगरेशन इस तरह दिखता है:

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "cloudru": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "Cloud.ru Foundation Models",
          "options": {
            "baseURL": "https://foundation-models.api.cloud.ru/v1",
            "apiKey": "{env:CLOUDRU_API_KEY}"
          },
          "models": {
            "deepseek-ai/DeepSeek-V4.1-Flash": { "name": "DeepSeek V4.1 Flash", "limit": { "context": 1048576, "output": 1048576 } },
            "deepseek-ai/DeepSeek-V4-Flash": { "name": "DeepSeek V4 Flash", "limit": { "context": 1048576, "output": 1048576 } },
            "deepseek-ai/DeepSeek-V4-Pro": { "name": "DeepSeek V4 Pro", "limit": { "context": 1048576, "output": 1048576 } }
          }
        }
      }
    }
    

    हम पर्यावरण चर की कुंजी पास करते हैं:

    export CLOUDRU_API_KEY=ваш_ключ_cloudru
    opencode
    

    यहां डिजिटल विकास मंत्रालय के प्रमाणपत्रों की आवश्यकता नहीं है: GigaChat के विपरीत, api.cloud.ru डोमेन में नियमित TLS है। लेकिन यह परियोजना के संतुलन की निगरानी के लायक है। यदि खाता शून्य है, तो प्राधिकरण पास हो जाता है, और बिलिंग प्रतिक्रिया के साथ अनुरोध हटा दिए जाते हैं:

    {"message":"Not enough money"}
    

    यह कोई कॉन्फ़िगरेशन त्रुटि नहीं है, बल्कि एक संकेत है कि आपको Cloud.ru कंसोल में प्रोजेक्ट को अपडेट करने की आवश्यकता है।

    किस बात पर ध्यान दें

    कुछ व्यावहारिक बिंदु जो पहली बार सेटअप करते समय अक्सर आड़े आते हैं:

    • प्रमाणपत्र सत्यापन त्रुटि। श्रृंखला में स्व-हस्ताक्षरित प्रमाणपत्र के बारे में संदेश का अर्थ है कि NODE_EXTRA_CA_CERTS वैरिएबल नहीं उठाया गया था। फ़ाइल के पथ की जाँच करें, कि एजेंट एक ही वातावरण में चल रहा है, और फ़ाइल स्वयं: यदि, बिल्ली का उपयोग करके दो प्रमाणपत्रों को विलय करते समय, उनके सिरे एक ही पंक्ति पर समाप्त होते हैं, तो लिब्रेएसएसएल एक खराब अंत रेखा लौटाएगा, और बंडल को ओपनएसएल के माध्यम से फिर से बनाने की आवश्यकता है, जैसा कि प्रमाणपत्रों के बारे में अनुभाग में है।
    • त्रुटि 401। एक नियम के रूप में, यह एक गलत प्राधिकरण कुंजी या एक बेमेल दायरा है – एक व्यक्ति के लिए आपको GIGACHAT_API_PERS की आवश्यकता है।
    • ऐसा कोई मॉडल नहीं पाठ के साथ त्रुटि 404। यह कनेक्शन विफलता नहीं है, बल्कि एक विशिष्ट मॉडल तक पहुंच की कमी है। इसे कॉन्फिग से हटा दें या किसी उपलब्ध कॉन्फिगरेशन से बदल दें। GigaChat 404: अज्ञात त्रुटि जैसे संदेश में, उसी GigaChat प्रतिक्रिया को दोष दिया जाता है – प्रदाता केवल त्रुटि निकाय को पार्स नहीं कर सका।
    • लागत। ओपनकोड को सदस्यता की आवश्यकता नहीं है: जब आप टोकन खर्च करते हैं तो आप सीधे गीगाचैट का भुगतान करते हैं, इसलिए लंबे सत्र की कीमत का अनुमान लगाया जा सकता है।
    • मॉडल गुणवत्ता। जटिल वास्तुशिल्प कार्यों के लिए, विभिन्न वर्गों के मॉडल अलग-अलग होते हैं, इसलिए डिज़ाइन के लिए एक मजबूत मॉडल लेना और दिनचर्या को तेज़ बनाना समझ में आता है।

    लिंक

    https://opencode.ai/
    https://opencode.ai/docs/providers/
    https://developers.sber.ru/studio/
    https://developers.sber.ru/docs/ru/gigachat/guides/main
    https://github.com/nyddle/gigachat-ai-sdk-provider
    https://github.com/ai-forever/gpt2giga
    https://cloud.ru/docs/foundation-models/ug/topics/quickstart

    स्रोत

    https://opencode.ai/docs/providers/#custom-provider
    https://developers.sber.ru/docs/ru/gigachat/certificates
    https://developers.sber.ru/docs/ru/gigachat/models/main
    https://developers.sber.ru/docs/ru/gigachat/guides/selecting-a-model
    https://github.com/nyddle/gigachat-ai-sdk-provider
    https://github.com/ai-forever/gpt2giga
    https://cloud.ru/docs/foundation-models/ug/topics/quickstart
    https://cloud.ru/docs/foundation-models/ug/topics/overview__available__models

  • AirLLM: कमज़ोर ग्राफ़िक्स कार्ड पर बड़े भाषा मॉडल

    आमतौर पर, 70 अरब मापदंडों के साथ एक बड़े भाषा मॉडल को चलाने के लिए कई दसियों गीगाबाइट वीडियो मेमोरी की आवश्यकता होती है। AirLLM इस समस्या को अधिक शांति से देखता है और एक अलग तरीका पेश करता है: ऐसे मॉडल को वीडियो कार्ड पर केवल 4 जीबी मेमोरी के साथ, और बिना परिमाणीकरण, आसवन और ट्रिमिंग के चलाया जा सकता है। इस नोट में, मैं आपको बिना किसी जल्दबाजी के यह बताने की कोशिश करूंगा कि एयरएलएलएम कैसे काम करता है, इसका उपयोग कैसे करें, और मैं अपना छोटा प्रोजेक्ट एयरएलएलएम-प्रयोग साझा करूंगा, जो इस लाइब्रेरी के साथ काम करना थोड़ा और सुविधाजनक बनाता है।

    एयरएलएलएम क्या है

    एयरएलएलएम गेविन ली द्वारा लिखित बड़े भाषा मॉडल अनुमान के लिए एक खुला स्रोत पुस्तकालय है। इसका विचार सरल और सुरुचिपूर्ण है: वीडियो मेमोरी में सभी मॉडल भार को एक साथ संग्रहीत करने के बजाय, लाइब्रेरी एक समय में केवल एक परत को GPU पर लोड करती है। वज़न को परतों में काटे गए टुकड़ों के रूप में डिस्क पर संग्रहीत किया जाता है, और पीढ़ी के दौरान, प्रत्येक परत को बारी-बारी से लोड, संसाधित और अनलोड किया जाता है।

    इससे यह पता चलता है कि आवश्यक वीडियो मेमोरी की मात्रा मॉडल के समग्र आकार पर निर्भर नहीं करती है, बल्कि इसकी परतों में से एक के आकार पर निर्भर करती है। इसीलिए 70बी मॉडल 4 जीबी में फिट बैठता है, 671बी पर डीपसीक-वी3 लगभग 12 जीबी में फिट बैठता है, और क्यूवेन3-235बी लगभग 3 जीबी में फिट बैठता है। लेकिन मॉडल का आकार मुख्य रूप से डिस्क स्थान द्वारा सीमित है, न कि वीडियो कार्ड की क्षमताओं द्वारा।

    ये मेमोरी बचत गति की कीमत पर आती है: प्रत्येक टोकन उत्पन्न होने पर प्रत्येक परत को डिस्क से पढ़ा जाता है, इसलिए आउटपुट धीमा होता है, प्रति टोकन लगभग सेकंड। इसलिए AirLLM एक त्वरित इंटरैक्टिव चैट के बारे में कम और एक ऐसे मॉडल को लॉन्च करने की क्षमता के बारे में अधिक है जो अन्यथा हार्डवेयर में फिट नहीं होगा।

    स्थापना

    लाइब्रेरी को सामान्य कमांड का उपयोग करके PyPI से स्थापित किया गया है:

    pip install airllm
    

    जब आप पहली बार लॉन्च करेंगे, तो मॉडल हगिंग फेस से डाउनलोड किया जाएगा और परतों में विघटित हो जाएगा। यह प्रक्रिया धीमी है और बहुत अधिक डिस्क स्थान लेती है, इसलिए आपको खाली स्थान पहले से तैयार करना चाहिए। यदि वांछित है, तो आप 4 बिट या 8 बिट संपीड़न को सक्षम कर सकते हैं – फिर ब्लॉक क्वांटाइजेशन को वजन पर लागू किया जाएगा, जो डिस्क से परतों को लोड करने की गति लगभग तीन गुना बढ़ा देता है, और सटीकता काफी कम हो जाती है।

    मूल उदाहरण

    आप एयरएलएलएम के साथ लगभग उसी तरह काम कर सकते हैं जैसे ट्रांसफार्मर के एक नियमित मॉडल के साथ। हगिंग फेस पर एक बार मॉडल आईडी दर्ज करना पर्याप्त है, और फिर सब कुछ परिचित हो जाएगा:

    from airllm import AutoModel
    
    MAX_LENGTH = 128
    model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
    
    input_text = ['What is the capital of United States?']
    
    input_tokens = model.tokenizer(
        input_text,
        return_tensors="pt",
        return_attention_mask=False,
        truncation=True,
        max_length=MAX_LENGTH,
        padding=False)
    
    generation_output = model.generate(
        input_tokens['input_ids'].cuda(),
        max_new_tokens=20,
        use_cache=True,
        return_dict_in_generate=True)
    
    print(model.tokenizer.decode(generation_output.sequences[0]))
    

    ऑटोमॉडल वर्ग स्वयं मॉडल प्रकार निर्धारित करता है, इसलिए उसी लाइन का उपयोग लामा, क्वेन और डीपसीक के लिए किया जा सकता है। और यदि आप 671बी मापदंडों के साथ डीपसीक-वी3 जैसा मॉडल लेते हैं, तो यह लगभग 12 जीबी वीडियो मेमोरी में भी फिट होगा – यही काफी हद तक परियोजना को आकर्षक बनाता है।

    macOS पर लॉन्च करें

    AirLLM न केवल CUDA पर, बल्कि Apple सिलिकॉन पर भी चलता है। MacOS पर यह MLX बैकएंड का उपयोग करता है, इसलिए mlx और टॉर्च स्थापित करने की आवश्यकता होगी, और केवल Apple चिप्स का समर्थन करता है। एक छोटी सी सीमा भी है: एमएलएक्स कार्यान्वयन केवल लामा-जैसे आर्किटेक्चर का समर्थन करता है, इसलिए क्वेन और इसी तरह के मॉडल को मैकबुक पर इस तरह से लॉन्च नहीं किया जा सकता है।

    उदाहरण का प्रयोग करें

    AirLLM-प्रयोग स्थानीय स्तर पर बड़े भाषा मॉडल चलाने के लिए दो छोटी इंटरैक्टिव कंसोल उपयोगिताएँ हैं। वे मॉडल को लोड करने और चैट को व्यवस्थित करने के लिए हर बार एक ही कोड लिखने की आवश्यकता को समाप्त कर देते हैं।

    पहला टूल, Airllm-lib-usage.py, AirLLM लाइब्रेरी को सीधे वर्तमान पायथन प्रक्रिया में चलाता है। यह सामान्य कैटलॉग से मॉडलों की एक क्रमांकित सूची दिखाता है, यदि आवश्यक हो, तो यह लापता निर्भरताएँ स्थापित करता है और एक चैट सत्र खोलता है। MLX रनटाइम का उपयोग macOS पर किया जाता है, टॉर्च का उपयोग अन्य प्लेटफ़ॉर्म पर किया जाता है।

    दूसरा टूल, Airllm-openai-server-client.py, आपको Airllm-openai-server सर्वर के साथ काम करने में मदद करता है, जो डॉकर में चलता है और एक OpenAI-संगत एपीआई प्रदान करता है। जब आप इसे पहली बार लॉन्च करते हैं, तो उपयोगिता सेटिंग्स मांगती है, छवि एकत्र करती है, कंटेनर उठाती है और चल रहे सर्वर पर एक स्ट्रीमिंग चैट खोलती है। जब बार-बार लॉन्च किया जाता है, तो यह एक मौजूदा कंटेनर ढूंढता है और बस इसका पुन: उपयोग करता है, और मॉडल कैश को एक अलग डॉकर वॉल्यूम में संग्रहीत करता है ताकि मॉडल को दोबारा डाउनलोड न करना पड़े।

    उपलब्ध मॉडलों की सूची सामान्य मॉड्यूल model_catalog.py में शामिल है, इसलिए दोनों उपकरण एक ही सेट के साथ काम करते हैं। चैट कमांड भी आम हैं: /help, /clear, /exit। स्रोत कोड और निर्देश भंडार में हैं:

    https://github.com/zefir1990/AirLLM-experiments

    किस बात पर ध्यान दें

    पहली प्रतिक्रिया को तैयार होने में कई मिनट लग सकते हैं: सबसे पहले, AirLLM मॉडल को डाउनलोड करता है और उसे परतों में काटता है, और उसके बाद ही उत्पादन शुरू करता है। इसके अलावा, गति भी कम रहती है – यह स्मृति को बचाने के लिए एक जानबूझकर किया गया समझौता है। मेटा-लामा जैसे गेटेड मॉडल के लिए, आपको हगिंग फेस पर शर्तों को स्वीकार करना होगा और एक एक्सेस टोकन पास करना होगा। डाउनलोड किए गए मॉडलों और शार्डों के कैश को न हटाना सबसे अच्छा है, अन्यथा सब कुछ फिर से डाउनलोड करना होगा।

    लिंक

    https://github.com/lyogavin/airllm
    https://github.com/mkamranr/airllm-openai-server
    https://github.com/zefir1990/AirLLM-experiments
    https://pypi.org/project/airllm/
    https://huggingface.co/

    स्रोत

    https://github.com/lyogavin/airllm
    https://github.com/zefir1990/AirLLM-experiments

  • ओपनकोड स्थापित करना और डीपसीक कनेक्ट करना

    ओपनकोड एक खुला प्रोग्रामिंग एजेंट है जो सीधे टर्मिनल में रहता है। यह प्रोजेक्ट फ़ाइलें पढ़ सकता है, कोड संपादित कर सकता है, कमांड और परीक्षण चला सकता है, रिपॉजिटरी खोज सकता है और गिट के साथ काम कर सकता है – लगभग वही चीज़ जो क्लाउड कोड और अन्य कंसोल एजेंट करते हैं। मुख्य अंतर यह है कि ओपनकोड एक मॉडल प्रदाता से बंधा नहीं है: डीपसीक सहित दर्जनों प्रदाताओं को इसके माध्यम से जोड़ा जा सकता है। इस पोस्ट में मैं एजेंट को स्थापित करने और डीपसीक को उससे जोड़ने का वर्णन करूंगा।

    आपको क्या चाहिए

    काम करने के लिए आपको केवल दो चीजों की आवश्यकता है:

    • आधुनिक टर्मिनल। वेज़टर्म, अलाक्रिट्टी, घोस्टी, किट्टी या कोई अन्य करेगा।
    • प्रदाता की एपीआई कुंजी। हमारे मामले में, डीपसीक।

    यदि आप एजेंट को मानक इंस्टॉलेशन स्क्रिप्ट के साथ इंस्टॉल करते हैं तो Node.js की आवश्यकता नहीं है – बाइनरी तैयार हो जाती है।

    स्थापना

    सबसे आसान तरीका आधिकारिक इंस्टॉलेशन स्क्रिप्ट है:

    curl -fsSL https://opencode.ai/install | bash
    

    यह स्वयं प्लेटफ़ॉर्म का पता लगाएगा और निष्पादन योग्य फ़ाइल को PATH में डाल देगा। इंस्टालेशन के बाद, आपको जांचना चाहिए कि सब कुछ ठीक जगह पर है:

    opencode --version
    

    यदि आदेश संस्करण प्रदर्शित करता है, तो इंस्टॉलेशन सफल रहा।

    अन्य तरीकों का उपयोग करके स्थापना

    यदि आप पैकेज प्रबंधकों को प्राथमिकता देते हैं, तो कई विकल्प हैं। Node.js के माध्यम से:

    npm install -g opencode-ai
    

    बन, पीएनपीएम और यार्न भी यही कर सकते हैं:

    bun install -g opencode-ai
    pnpm install -g opencode-ai
    yarn global add opencode-ai
    

    macOS और Linux में Homebrew है। कृपया ध्यान दें: यह डेवलपर्स की ओर से अनुशंसित है, न कि आधिकारिक फॉर्मूला – इसे कम बार अपडेट किया जाता है:

    brew install anomalyco/tap/opencode
    

    आर्क लिनक्स पर:

    sudo pacman -S opencode
    paru -S opencode-bin
    

    पहला कमांड रिपॉजिटरी से स्थिर संस्करण स्थापित करता है, दूसरा – AUR से नवीनतम संस्करण स्थापित करता है।

    विंडोज़ पर इंस्टालेशन

    विंडोज़ में, WSL के माध्यम से काम करने की अनुशंसा की जाती है: इस तरह प्रदर्शन बेहतर होता है और एजेंट की क्षमताओं के साथ अनुकूलता पूर्ण होती है। लेकिन देशी तरीके भी हैं. चॉकलेटी, स्कूप या एनपीएम के माध्यम से:

    choco install opencode
    scoop install opencode
    npm install -g opencode-ai
    

    Mise के साथ-साथ डॉकर कंटेनर के माध्यम से भी एक विकल्प है:

    mise use -g github:anomalyco/opencode
    docker run -it --rm ghcr.io/anomalyco/opencode
    

    अंत में, तैयार बाइनरी को हमेशा GitHub पर रिलीज़ पेज से लिया जा सकता है।

    डीपसीक कुंजी

    कुंजी आपके डीपसीक व्यक्तिगत खाते में बनाई गई है। प्लेटफ़ॉर्म.डीपसीक.कॉम पर जाएं, एपीआई कुंजियों वाला अनुभाग खोलें और एक नई कुंजी बनाएं पर क्लिक करें। परिणामी स्ट्रिंग को तुरंत सहेजना बेहतर है: यह केवल एक बार दिखाई जाएगी।

    डीपसीक कनेक्शन

    फिर सब कुछ एजेंट के अंदर ही होता है. टर्मिनल में ओपनकोड लॉन्च करें:

    opencode
    

    इंटरफ़ेस में हम कनेक्शन कमांड निष्पादित करते हैं:

    /connect
    

    खुलने वाली प्रदाताओं की सूची में, डीपसीक देखें, इसे चुनें और एपीआई कुंजी डालें। इस प्रकार जोड़ी गई कुंजियाँ एक फ़ाइल में सहेजी जाती हैं:

    ~/.local/share/opencode/auth.json
    

    कनेक्ट करने के बाद, जो कुछ बचा है वह कमांड के साथ मॉडल का चयन करना है:

    /models
    

    डीपसीक मॉडल सूची में उपलब्ध होंगे, जिनमें डीपसीक-v4-प्रो, डीपसीक-फ्लैश और डीपसीक-v4-फ्लैश शामिल हैं। रिपॉजिटरी में नियमित कार्य के लिए, फ़्लैश विकल्प पर्याप्त है; जटिल कार्यों के लिए, प्रो पर स्विच करना समझ में आता है।

    कॉन्फ़िगरेशन के माध्यम से कॉन्फ़िगरेशन

    यदि आप किसी मास्टर के माध्यम से कुंजी संग्रहीत नहीं करना चाहते हैं या अपना स्वयं का एपीआई पता सेट करने की आवश्यकता है, तो प्रदाता को सीधे opencode.json कॉन्फ़िगरेशन फ़ाइल में वर्णित किया गया है:

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "deepseek": {
          "options": {
            "baseURL": "https://api.deepseek.com"
          }
        }
      }
    }
    

    यदि आप प्रॉक्सी या अपने स्वयं के गेटवे से गुजरते हैं तो बेसयूआरएल फ़ील्ड उपयोगी है। इस मामले में, कुंजी को स्वयं पर्यावरण चर में स्थानांतरित करना सुविधाजनक है:

    export DEEPSEEK_API_KEY=ваш_ключ_deepseek
    opencode
    

    यह विकल्प सीआई और एक बार लॉन्च के लिए अच्छा है: कुंजी भंडारण में समाप्त नहीं होती है, बल्कि प्रक्रिया के वातावरण में ही रहती है।

    प्रोजेक्ट में पहला लॉन्च

    प्रोजेक्ट निर्देशिका पर जाएँ और एजेंट लॉन्च करें:

    cd ваш_проект
    opencode
    

    पहला कदम इसे आरंभ करना है:

    /init
    

    ओपनकोड परियोजना संरचना का विश्लेषण करेगा और एक फ़ाइल AGENTS.md बनाएगा – जो एजेंट के लिए निर्देशों का एक एनालॉग है। यह फ़ाइल गिट के लिए प्रतिबद्ध होने लायक है: यह एजेंट को प्रोजेक्ट में अपनाई गई परंपराओं और पैटर्न को समझने में मदद करती है।

    इसका उपयोग कैसे करें

    कार्य को अन्य एजेंटों की तरह ही संरचित किया गया है। कुछ तरकीबें जो आपको तुरंत जाननी चाहिए:

    • योजना मोड। टैब कुंजी एजेंट को योजना और असेंबली मोड के बीच स्विच करती है। पहले में, वह केवल सुझाव देता है कि समस्या को कैसे हल किया जाए और कुछ भी नहीं बदलता – परिवर्तन करने से पहले विचार की जांच करना सुविधाजनक है।
    • फ़ाइलों से लिंक। @ कुंजी संदर्भ में एजेंट को एक विशिष्ट फ़ाइल स्थानांतरित करने के लिए प्रोजेक्ट फ़ाइलों के माध्यम से एक अस्पष्ट खोज खोलती है।
    • परिवर्तनों को वापस लाना। /undo कमांड अंतिम संपादन को पूर्ववत करता है और मूल अनुरोध लौटाता है, /redo उन्हें वापस लौटाता है। आप लगातार कई कदम पीछे जा सकते हैं।
    • बातचीत साझा करना। /share कमांड वर्तमान बातचीत के लिए एक लिंक बनाता है और इसे क्लिपबोर्ड पर कॉपी करता है। डिफ़ॉल्ट रूप से, वार्तालाप कहीं भी प्रकाशित नहीं होते हैं।

    साधारण परिवर्तनों के लिए, आपको नियोजन मोड पर स्विच करने की आवश्यकता नहीं है, लेकिन तुरंत वर्णन करें कि क्या करने की आवश्यकता है और फ़ाइलों को @ के माध्यम से निर्दिष्ट करें।

    किस बात पर ध्यान दें

    कुछ व्यावहारिक बिंदु. ओपनकोड को सदस्यता की आवश्यकता नहीं है: जब आप टोकन खर्च करते हैं तो आप प्रदाता को सीधे भुगतान करते हैं, इसलिए डीपसीक के साथ लंबे सत्र शीर्ष मॉडल की तुलना में अनुमानित रूप से सस्ते होते हैं। कुंजी को स्थानीय रूप से auth.json में संग्रहीत किया जाता है – यह एक साझा मशीन पर विचार करने योग्य है, लेकिन अन्य लोगों के वातावरण के लिए एक पर्यावरण चर अधिक विश्वसनीय है।

    और एक और बात: जटिल वास्तुशिल्प समस्याओं के उत्तर की गुणवत्ता विभिन्न वर्गों के मॉडलों में भिन्न होती है, इसलिए डिज़ाइन के लिए एक मजबूत मॉडल लेना और दिनचर्या को त्वरित और सस्ते में देना समझ में आता है।

    लिंक

    https://opencode.ai/
    https://opencode.ai/docs/
    https://opencode.ai/docs/providers/
    https://github.com/anomalyco/opencode
    https://platform.deepseek.com/api_keys
    https://api-docs.deepseek.com

    स्रोत

    https://opencode.ai/docs/
    https://opencode.ai/docs/providers/#deepseek
    https://github.com/anomalyco/opencode/releases
    https://models.dev/

  • एम2 प्रोसेसर वाले मैकबुक पर असाही लिनक्स स्थापित करना

    Apple सिलिकॉन प्रोसेसर वाले Mac पर, आप सामान्य तरीके से Linux इंस्टॉल नहीं कर सकते: यहां फ्लैश ड्राइव से बूट करना असंभव है, और बूटलोडर पर Apple द्वारा हस्ताक्षरित है। असाही लिनक्स प्रोजेक्ट ने इससे निजात पाने का बीड़ा उठाया – इसके प्रतिभागियों ने एम1 और एम2 हार्डवेयर को नियमित लिनक्स के तहत काम करने के लिए रिवर्स इंजीनियरिंग का उपयोग किया। अब परियोजना का प्रमुख वितरण फेडोरा असाही रीमिक्स है, और यह एम2 पर काफी विश्वसनीय रूप से काम करता है। इस पोस्ट में मैं चरण दर चरण इंस्टॉलेशन का वर्णन करूंगा।

    असाही लिनक्स क्या है

    परियोजना 2020 में शुरू हुई, जब Apple ने अपने स्वयं के चिप्स पर स्विच किया और उनके साथ एक बंद बूट योजना आई: डिवाइस केवल Apple-हस्ताक्षरित कोड चलाता है। असाही लिनक्स प्रतिभागियों ने अपना एम1एन1 बूटलोडर लिखा, जिसके शीर्ष पर उन्होंने यू-बूट और एक यूईएफआई वातावरण लिखा। इसके बाद, सबसे सामान्य ARM64 सिस्टम लोड किया गया है, लेकिन एक linux-asahi कर्नेल के साथ, जिसमें गैर-मानक Apple हार्डवेयर के लिए ड्राइवर जोड़े जाते हैं: GPU, वीडियो, ध्वनि, कैमरा इकाइयाँ।

    व्यवहार में, यह इस तरह दिखता है: आप इंस्टॉलर को macOS से चलाते हैं, यह डिस्क को विभाजित करता है, बूट श्रृंखला और सिस्टम को स्थापित करता है। macOS यथावत रहता है, आपको डुअल बूट मिलता है और जब आप इसे चालू करते हैं तो अपना सिस्टम चुनें।

    आवश्यकताएँ

    • M2 चिप पर मैक – मैकबुक एयर, मैकबुक प्रो 13″, साथ ही एम2 प्रो और एम2 मैक्स के साथ 14″ और 16″। M1 कारें भी समर्थित हैं।
    • वर्तमान macOS। इंस्टॉलर को सिस्टम के नवीनतम संस्करण की आवश्यकता है, इसलिए शुरू करने से पहले अपडेट करें।
    • खाली जगह। न्यूनतम लगभग 30 जीबी, आरामदायक – 100 जीबी या अधिक। जगह APFS कंटेनर से कट गई है और अपने आप वापस नहीं आएगी।
    • macOS व्यवस्थापक पासवर्ड। विभाजन के दौरान और पहली बार पुनर्प्राप्ति मोड में बूट करते समय आपको इसकी आवश्यकता होगी।
    • बैकअप। डिस्क विभाजन एक ऐसा ऑपरेशन है जिसे नए बैकअप के साथ शुरू करना सबसे अच्छा है।

    चरण 1. बैकअप और अद्यतन

    टाइम मशीन या किसी अन्य विधि से प्रतिलिपि बनाएँ। MacOS को उपलब्ध नवीनतम संस्करण में अपडेट करें और रीबूट करें। यदि फ़ाइल वॉल्ट सक्षम है, तो पुनर्प्राप्ति मोड में बूट चरण में इसके लिए पासवर्ड की अभी भी आवश्यकता होगी – इंस्टॉलर को ड्राइव को अनलॉक करने की आवश्यकता है।

    चरण 2. इंस्टॉलर लॉन्च करें

    MacOS पर टर्मिनल खोलें और एक कमांड चलाएँ:

    curl https://alx.sh | sh
    

    यह प्रोजेक्ट का आधिकारिक इंस्टॉलर है. यह स्वयं डाउनलोड हो जाएगा, आपके मैक मॉडल की जांच करेगा और वितरण चुनने की पेशकश करेगा। फेडोरा के लिए सीधे एक विकल्प भी है:

    curl https://fedora-asahi-remix.org/install | sh
    

    पहला विकल्प बेहतर है: यह दिखाता है कि वर्तमान में कौन से सिस्टम उपलब्ध हैं, और यह डेस्कटॉप का विकल्प भी प्रदान करता है।

    चरण 3. डिस्क विभाजन

    इंस्टॉलर व्यवस्थापक पासवर्ड मांगेगा और वर्तमान लेआउट दिखाएगा। तब संवाद इस प्रकार दिखता है:

    • MacOS विभाजन का आकार बदलने के लिए r दबाएँ।
    • नए लिनक्स विभाजन का आकार दर्ज करें। यह गीगाबाइट में हो सकता है, यह डिस्क के प्रतिशत के रूप में हो सकता है, या आप मिनट लिख सकते हैं – फिर सबसे छोटा संभव टुकड़ा काट दिया जाएगा।
    • अक्षर y से अंकन की पुष्टि करें। यह चरण सबसे लंबा है: सिस्टम भौतिक रूप से डेटा को APFS कंटेनर में ले जाता है; बड़ी डिस्क पर इसमें कई मिनट लगते हैं।
    • इंस्टॉलर को नव निर्मित मुक्त विभाजन की ओर इंगित करने के लिए f दबाएं।

    यह समझना महत्वपूर्ण है कि क्या हो रहा है: लिनक्स एपीएफएस के अंदर स्थापित नहीं है, बल्कि इसके बगल में एक अलग विभाजन पर स्थापित है। यही कारण है कि macOS अछूता रहता है, और इस अनुभाग को हटाने के लिए रोलबैक कम हो जाता है।

    चरण 4. वितरण और डेस्कटॉप का चयन

    इसके बाद, इंस्टॉलर सिस्टम और डेस्कटॉप वातावरण पेश करेगा। फेडोरा असाही रीमिक्स डिफ़ॉल्ट रूप से केडीई प्लाज़्मा के साथ आता है – यह प्रमुख विकल्प है जो पहले अपडेट प्राप्त करता है। एक विकल्प GNOME है, जो अनुभव में macOS के अधिक निकट है। यदि आपको ग्राफिकल वातावरण की आवश्यकता नहीं है तो एक न्यूनतम छवि भी है।

    चरण 5. सबसे पहले पुनर्प्राप्ति मोड में बूट करें

    विभाजन के बाद, इंस्टॉलर आपको जारी रखने के लिए संकेत देगा, और मैक बंद हो जाएगा। यहाँ सबसे असामान्य भाग आता है:

    • कम से कम 25 सेकंड प्रतीक्षा करें – पुनर्प्राप्ति मोड में प्रवेश करने के लिए यह Apple की आवश्यकता है।
    • बूट विकल्प दिखाई देने तक पावर बटन को दबाकर रखें।
    • इंस्टॉलेशन वॉल्यूम चुनें और अपना macOS पासवर्ड दर्ज करें।

    इस चरण में, बूट श्रृंखला सेवा विभाजन में स्थापित होती है: m1n1, U-बूट और UEFI वातावरण। फिर मशीन फिर से रीबूट होगी – पावर बटन को फिर से दबाए रखें और सिस्टम में आने के लिए इस बार एक नया वॉल्यूम चुनें। ऐसे कई रीबूट होंगे, जिनमें से प्रत्येक को मैन्युअल चयन की आवश्यकता होगी: डिफ़ॉल्ट रूप से, मैक macOS को लोड करना जारी रखता है।

    चरण 6. सिस्टम स्थापित करना

    इसके बाद, प्रारंभिक सेटअप विज़ार्ड प्रारंभ होता है: सिस्टम नाम, उपयोगकर्ता, पासवर्ड, समय क्षेत्र, कीबोर्ड लेआउट। इसके बाद, इंस्टॉलेशन स्वयं शुरू हो जाता है, और यह पहले से ही इंटरनेट से आ रहा है – आपको एक स्थिर कनेक्शन की आवश्यकता होगी, और समय में इसमें पंद्रह मिनट से आधे घंटे तक का समय लगता है।

    जब इंस्टॉलेशन पूरा हो जाए, तो रीबूट करें और बूट मेनू से लिनक्स चुनें। जब आप पहली बार लॉग इन करते हैं, तो सिस्टम आपको सेटअप पूरा करने और अपडेट करने के लिए संकेत देगा।

    क्या काम करता है और क्या नहीं

    स्थापना से पहले, आपको गंभीरता से आकलन करना चाहिए कि आप क्या खो देंगे। M2 लैपटॉप पर स्थिति इस प्रकार है:

    कार्य:

    • वाई-फाई और ब्लूटूथ – बिना किसी प्रतिबंध के।
    • एकीकृत स्क्रीन और ग्राफिक्स – ओपनजीएल और वल्कन सहित हार्डवेयर त्वरित।
    • मैकबुक एयर और मैकबुक प्रो पर वेबकैम, माइक्रोफोन और स्पीकर।
    • स्लीप मोड – सामान्य रूप से काम करता है।
    • हार्डवेयर वीडियो डिकोडिंग – प्लेयर्स प्रोसेसर लोड नहीं करते हैं।
    • यूएसबी पोर्ट, जिसमें थंडरबोल्ट कनेक्टर के माध्यम से यूएसबी 2 और यूएसबी 3 शामिल हैं।

    काम नहीं करता या आंशिक रूप से काम करता है:

    • टच आईडी। फ़िंगरप्रिंट लिनक्स में उपलब्ध नहीं है – पासवर्ड के साथ लॉग इन करें।
    • थंडरबोल्ट (USB4). स्थिति – विकास में। दुर्भाग्यवश, जिन उपकरणों को विशेष रूप से थंडरबोल्ट की आवश्यकता होती है वे काम नहीं करेंगे।
    • यूएसबी-सी के माध्यम से बाहरी मॉनिटर। डिस्प्लेपोर्ट ऑल्ट मोड भी चालू है। एम2 लैपटॉप में एचडीएमआई पोर्ट नहीं है, इसलिए आप बाहरी स्क्रीन कनेक्ट नहीं कर सकते। एम2 प्रो और एम2 मैक्स वाले मॉडल में एचडीएमआई है और यह काम करता है। USB-C के लिए समाधान नीचे फ़ेयरीडस्ट कोर अनुभाग में है।
    • हार्डवेयर वीडियो एन्कोडिंग योजनाओं में है, डिकोडिंग पहले से ही मौजूद है।

    सीधे शब्दों में कहें तो, यह कोड, टर्मिनल, ब्राउज़र और स्थानीय मॉडल के साथ काम करने के लिए एक बेहतरीन प्रणाली है, लेकिन बाहरी मॉनिटर डॉक के लिए नहीं।

    फेयरीडस्ट कोर के माध्यम से बाहरी मॉनिटर

    यूएसबी-सी छवि आउटपुट असाही लिनक्स टीम की प्रायोगिक फेयरीडस्ट कर्नेल शाखा में उपलब्ध है। इसे मैन्युअल रूप से असेंबल करने में काफी समय लगता है, इसलिए असाही-फेयरीडस्ट-डिस्प्ले प्रोजेक्ट से रैपर स्क्रिप्ट का उपयोग करना आसान है:

    git clone https://github.com/bharambetejas/asahi-fairydust-display
    cd asahi-fairydust-display
    chmod +x asahi-fairydust-build.sh
    ./asahi-fairydust-build.sh
    

    स्क्रिप्ट फेयरीडस्ट शाखा को क्लोन करती है, कर्नेल को कॉन्फ़िगर और असेंबल करती है, इसे मानक के बगल में रखती है और GRUB को संपादित करती है। आपको असेंबल करने के लिए 15 जीबी खाली जगह, एक यूएसबी-सी → एचडीएमआई या डिस्प्लेपोर्ट एडाप्टर और 60-90 मिनट की आवश्यकता है। रीबूट के बाद, GRUB में -fairydust लेबल वाले कर्नेल का चयन करें और एडॉप्टर को सबसे सामने वाले USB-C पोर्ट में डालें।

    डाउनलोड करने के बाद जांचें:

    uname -r
    glxinfo | grep "OpenGL renderer"
    xrandr
    

    पहले कमांड को प्रत्यय -फेयरीडस्ट के साथ संस्करण दिखाना चाहिए, दूसरे को Apple M2 दिखाना चाहिए, llvmpipe नहीं, तीसरे को कनेक्टेड DP-1 आउटपुट दिखाना चाहिए।

    आरक्षण. शाखा प्रायोगिक है और आधिकारिक तौर पर समर्थित नहीं है। आउटपुट केवल एक यूएसबी-सी पोर्ट के माध्यम से काम करता है और हमेशा हॉट प्लगिंग से नहीं बचता है – पहले से डाले गए एडॉप्टर के साथ रीबूट करना अधिक सुरक्षित है। स्क्रिप्ट स्वचालित रूप से डिस्प्ले को कॉन्फ़िगर नहीं करती है: इसमें संबंधित चरण अक्षम है क्योंकि इससे वेलैंड पर लॉगिन लूप उत्पन्न हुआ है। डीएनएफ के माध्यम से स्टॉक कर्नेल को अपडेट करने से /boot/dtb सिम्लिंक को पुनर्व्यवस्थित किया जाता है, जिसके कारण आउटपुट चुपचाप काम करना बंद कर सकता है – फिर बिल्ड को दोहराया जाना चाहिए।

    मानक कर्नेल को छुआ नहीं गया है: वापस लौटने के लिए, बस इसे GRUB मेनू में चुनें।

    अपग्रेड के बजाय बाहरी ड्राइव

    यहाँ अच्छा पक्ष है. मैकबुक को अपग्रेड नहीं किया जा सकता है: मेमोरी और स्टोरेज को बोर्ड पर टांका लगाया जाता है, और उनकी क्षमता खरीद पर एक बार चुनी जाती है। MacOS में, बाहरी ड्राइव बाहरी ही रहती है – सिस्टम और एप्लिकेशन को वास्तव में इसमें स्थानांतरित नहीं किया जा सकता है।

    लिनक्स में, यह सीमा हटा दी गई है: USB के माध्यम से एक बाहरी SSD एक नियमित ब्लॉक डिवाइस है, और किसी भी माउंट पॉइंट को /etc/fstab के माध्यम से इसमें स्थानांतरित किया जा सकता है। यदि आप अपनी होम डायरेक्टरी, स्टीम लाइब्रेरी, वर्चुअल मशीन इमेज या स्थानीय मॉडल स्थानांतरित करना चाहते हैं, तो कृपया ऐसा करें। यह बिल्कुल वही अपग्रेड है जो इस कार में नहीं है।

    यह इस तरह दिख रहा है। सबसे पहले, वांछित विभाजन के यूयूआईडी को देखें:

    lsblk -f
    sudo blkid
    

    फिर /etc/fstab में लाइन जोड़ें:

    UUID=ваш-uuid  /home  ext4  defaults,nofail  0  2
    

    स्थानांतरण स्वयं कॉपी करके किया जाता है: डेटा को बाहरी ड्राइव पर ले जाया जाता है, जिसके बाद इसे वांछित बिंदु पर माउंट किया जाता है। अक्सर, पूरे /घर को इस तरह से नहीं, बल्कि अलग-अलग भारी निर्देशिकाओं को ले जाया जाता है – इस तरह से जोखिम कम होता है।

    कुछ चेतावनियाँ। nofail पैरामीटर विकल्पों में सेट करने लायक है: इसके बिना, यदि डिस्क कनेक्ट नहीं है तो सिस्टम बूट नहीं होगा। USB ड्राइव की गति अभी भी अंतर्निहित NVMe से कम है, इसलिए बार-बार I/O संचालन के लिए आंतरिक डिस्क पर जगह छोड़ना बेहतर है। और वहां स्थापित निर्देशिकाओं के साथ चलते समय डिस्क को बाहर निकालने की कोई आवश्यकता नहीं है – पहले इसे अनमाउंट करें।

    सिस्टम के बीच कैसे स्विच करें

    जब आप इसे चालू करते हैं, तो पावर बटन दबाए रखें – बूट मेनू दिखाई देगा, इसमें macOS और Linux होंगे। आप macOS में डिफ़ॉल्ट सिस्टम का चयन कर सकते हैं: “सिस्टम प्राथमिकताएँ” → “सामान्य” → “सिस्टम डिस्क”। लिनक्स में भी संबंधित सेटिंग्स हैं, जिससे आप टर्मिनल के बिना दोनों दिशाओं में स्विच कर सकते हैं।

    लिंक

    https://asahilinux.org/fedora/
    https://asahilinux.org/docs/
    https://asahilinux.org/docs/platform/feature-support/m2/
    https://fedoraproject.org/asahi-remix
    https://github.com/bharambetejas/asahi-fairydust-display
    https://github.com/AsahiLinux/linux/tree/fairydust

    स्रोत

    https://asahilinux.org/docs/platform/feature-support/m2/
    https://discussion.fedoraproject.org/t/fedora-asahi-remix-installation-guide/
    https://github.com/AsahiLinux/docs
    https://github.com/bharambetejas/asahi-fairydust-display/blob/main/README.md
    https://github.com/bharambetejas/asahi-fairydust-display/blob/main/asahi-fairydust-build.sh

  • एआरएम मैक पर अतिथि परिवर्धन के साथ वर्चुअलबॉक्स स्थापित करना

    ARM64 प्रोसेसर वाले मैक पर वर्चुअलबॉक्स में उबंटू सर्वर स्थापित करने और गेस्ट एडिशन कनेक्ट करने के निर्देश।

    वर्चुअलबॉक्स इंस्टॉल करना

    वर्चुअलबॉक्स का ARM64 बिल्ड डाउनलोड करें, छवि को माउंट करें और वर्चुअलबॉक्स.एप को एप्लिकेशन में स्थानांतरित करें।

    वर्चुअल मशीन को कॉन्फ़िगर करना

    हम एक नई मशीन बनाते हैं, लिनक्स प्रकार और उबंटू संस्करण (64-बिट एआरएम) निर्दिष्ट करते हैं। सेटिंग्स में हम सेट करते हैं:

    • टीपीएम – अक्षम करें
    • UEFI – अक्षम करें
    • रैम – 4096 एमबी।
    • ग्राफिक्स नियंत्रक – VMSVGA (VBoxLinuxAdditions के लिए)।
    • प्रोसेसर – 4 कोर.

    उबंटू सर्वर स्थापित करना

    ARM64 के लिए Ubuntu सर्वर ISO छवि को CD-ROM ड्राइव में माउंट करें। डाउनलोड अनुभाग में, ऑप्टिकल ड्राइव को सूची में पहले रखें। हम मशीन शुरू करते हैं और उबंटू सर्वर की स्थापना से गुजरते हैं।

    जुबंटू-डेस्कटॉप इंस्टॉल कर रहा है

    XFCE ग्राफिकल वातावरण स्थापित करें:

    sudo apt update
    sudo apt install -y xubuntu-desktop
    

    लॉगिन प्रबंधक चयन संवाद में, लाइटडीएम चुनें।

    अतिथि प्रणाली को रिबूट करें:

    sudo reboot
    

    अतिथि परिवर्धन

    पहले बूट के बाद, कर्नेल मॉड्यूल के निर्माण के लिए पैकेज स्थापित करें:

    sudo apt update
    sudo apt install -y build-essential linux-headers-$(uname -r)
    

    हम वर्चुअलबॉक्स मेनू के माध्यम से अतिथि परिवर्धन के साथ डिस्क को माउंट करते हैं: डिवाइस → माउंट अतिथि परिवर्धन डिस्क छवि। डिस्क अतिथि के अंदर /media/$USER निर्देशिका में दिखाई देगी।

    Xubuntu में एक टर्मिनल खोलें, माउंटेड डिस्क की निर्देशिका पर जाएं और इंस्टॉलर चलाएं:

    cd /media/$USER/*
    sudo ./VBoxLinuxAdditions-arm64.run
    

    अतिथि प्रणाली को रिबूट करें:

    sudo reboot
    

    इंस्टॉलेशन के बाद क्या काम करना चाहिए

    हम जाँचते हैं कि कर्नेल मॉड्यूल लोड हैं:

    lsmod | grep vbox
    

    आउटपुट में vboxguest और vboxsf शामिल होना चाहिए।

    मशीन गुणों में एक साझा फ़ोल्डर जोड़ें और इसे अतिथि के अंदर माउंट करें:

    sudo mkdir -p /media/sf_shared
    sudo mount -t vboxsf shared /media/sf_shared
    

    कामकाजी विशेषताएं:

    • साझा फ़ोल्डर – होस्ट निर्देशिका vboxsf के माध्यम से अतिथि के अंदर दिखाई देती है।
    • साझा क्लिपबोर्ड – होस्ट और अतिथि के बीच टेक्स्ट कॉपी करें।
    • माउस एकीकरण – कर्सर मशीन विंडो के बाहर स्वतंत्र रूप से फैला हुआ है।
    • स्वचालित रिज़ॉल्यूशन परिवर्तन – अतिथि स्क्रीन विंडो आकार के अनुसार समायोजित हो जाती है।
    • समय सिंक्रनाइज़ेशन – अतिथि का समय मेज़बान के समय के अनुसार समायोजित किया जाता है।

    स्रोत

    https://www.virtualbox.org/manual/topics/guestadditions.html
    https://forums.virtualbox.org/viewtopic.php?t=112886

  • डीपसीक को क्लाउड कोड से कैसे कनेक्ट करें

    क्लाउड कोड एंथ्रोपिक का एक कंसोल एजेंट है जो प्रोजेक्ट फ़ाइलों को पढ़ सकता है, कोड संपादित कर सकता है, कमांड और परीक्षण चला सकता है, रिपॉजिटरी खोज सकता है और गिट के साथ काम कर सकता है। इसका उपयोग करते समय मुख्य असुविधा लागत है: बहुत सारे संदर्भ वाले लंबे सत्र सदस्यता बजट को जल्दी खत्म कर देते हैं।

    एक समाधान है. डीपसीक एंथ्रोपिक एपीआई के साथ संगत एक समापन बिंदु प्रदान करता है। यह आधार पते और टोकन को बदलने के लिए पर्याप्त है, और क्लाउड कोड किसी भी पुनर्स्थापना या पैच की आवश्यकता के बिना, डीपसीक मॉडल पर काम करना शुरू कर देगा। इस पोस्ट में मैं बताऊंगा कि इसे macOS, Linux और Windows पर कैसे सेट किया जाए।

    इसकी आवश्यकता क्यों है

    कारण भिन्न हो सकते हैं:
    – कीमत। डीपसीक मॉडल क्लाउड की तुलना में काफी सस्ते हैं, और नियमित एजेंट कार्यों के लिए – किसी प्रोजेक्ट को नेविगेट करना, मामूली संपादन, परीक्षण चलाना – शीर्ष गुणवत्ता की हमेशा आवश्यकता नहीं होती है।
    – उपलब्धता। यदि आपके पास सदस्यता नहीं है या किसी कारण से एंथ्रोपिक कार्ड से भुगतान उपलब्ध नहीं है, तो डीपसीक एक कार्यशील विकल्प बन जाता है।
    – प्रयोग। यह तुलना करना दिलचस्प है कि विभिन्न मॉडल एक ही वातावरण में एक ही कोडबेस को कैसे संभालते हैं।

    आपको क्या चाहिए

    आपको क्लाउड कोड स्थापित और डीपसीक एपीआई कुंजी की आवश्यकता है। यदि क्लाउड कोड पहले से स्थापित नहीं है, तो आदेश इस प्रकार है:
    1. Node.js 18 या बाद का संस्करण स्थापित करें। विंडोज़ पर, आपको विंडोज़ के लिए Git की अतिरिक्त आवश्यकता होगी।
    2. नीचे दिए गए आदेश का उपयोग करके स्वयं क्लाउड कोड स्थापित करें।
    3. स्थापना की जाँच करें.

    npm install -g @anthropic-ai/claude-code
    claude --version
    

    यदि संस्करण प्रदर्शित होता है, तो इंस्टॉलेशन सफल रहा। एपीआई कुंजी आपके डीपसीक व्यक्तिगत खाते में कुंजी पृष्ठ पर बनाई गई है।

    पर्यावरण चर के माध्यम से कॉन्फ़िगरेशन

    सारा एकीकरण पर्यावरण चर पर निर्भर करता है। MacOS और Linux के लिए यह इस तरह दिखता है:

    export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
    export ANTHROPIC_AUTH_TOKEN=ваш_ключ_deepseek
    
    export ANTHROPIC_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
    export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
    
    export CLAUDE_CODE_EFFORT_LEVEL=max
    export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432
    

    PowerShell में विंडोज़ के लिए सिंटैक्स अलग है, लेकिन वेरिएबल नाम समान हैं:

    $env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
    $env:ANTHROPIC_AUTH_TOKEN="ваш_ключ_deepseek"
    $env:ANTHROPIC_MODEL="deepseek-flash[1m]"
    

    आइए जानें कि यहां क्या है। `ANTHROPIC_BASE_URL` वैरिएबल अनुरोधों को एंथ्रोपिक सर्वर से डीपसीक पर रीडायरेक्ट करता है। `ANTHROPIC_AUTH_TOKEN` आपकी कुंजी को प्रतिस्थापित करता है। शेष चर यह निर्धारित करते हैं कि कौन सा मॉडल किस भूमिका में उपयोग किया जाता है। `[1m]` प्रत्यय वाले मॉडल हैं – यह लगभग दस लाख टोकन की संदर्भ विंडो वाला एक विकल्प है, जो एजेंट को एक समय में काफी अधिक प्रोजेक्ट फ़ाइलें रखने की अनुमति देता है। तदनुसार, `CLAUDE_CODE_AUTO_COMPACT_WINDOW` को इस विंडो के आकार पर सेट किया गया है ताकि स्वचालित इतिहास संपीड़न बहुत जल्दी काम न करे।

    हर बार वेरिएबल को मैन्युअल रूप से निर्यात नहीं करना, बल्कि उन्हें क्लाउड कोड कॉन्फ़िगरेशन में पंजीकृत करना सुविधाजनक है। फिर स्टार्टअप पर सेटिंग्स स्वचालित रूप से उठाई जाएंगी।

    {
      "env": {
        "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
        "ANTHROPIC_AUTH_TOKEN": "ваш_ключ_deepseek",
        "ANTHROPIC_MODEL": "deepseek-flash[1m]",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-flash",
        "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-flash"
      }
    }
    

    उसके बाद, प्रोजेक्ट निर्देशिका पर जाएँ और एजेंट चलाएँ:

    cd ваш_проект
    claude
    

    वीएस कोड में क्लाउड कोड

    क्लाउड कोड न केवल टर्मिनल में उपलब्ध है, बल्कि वीएस कोड के एक्सटेंशन के रूप में भी उपलब्ध है। इसे सामान्य तरीके से इंस्टॉल किया जाता है: Cmd+Shift+X का उपयोग करके एक्सटेंशन पैनल खोलें, “क्लाउड कोड” ढूंढें और इंस्टॉल पर क्लिक करें। विस्तार एन्थ्रोपिक द्वारा ही निर्मित होता है।

    एक्सटेंशन में सीएलआई की अपनी प्रति होती है, और यह टर्मिनल संस्करण के समान ~/.claude/settings.json फ़ाइल को पढ़ता है। पिछले अनुभाग की सेटिंग्स यहां भी लागू होती हैं – लेकिन एक चेतावनी के साथ, जो अक्सर भ्रम का कारण बनती है।

    इनपुट सत्यापन लॉन्च से पहले होता है

    शुरू करने से पहले, एक्सटेंशन अपने स्वयं के `claudeCode.environmentVariables` सेटिंग से क्रेडेंशियल्स की जांच करता है, न कि सेटिंग्स.जेसन से। सेटिंग्स.जेसन से मान चल रही प्रक्रिया तक पहुंचते हैं – यानी, एपीआई पता और चयनित मॉडल सही ढंग से उठाए जाते हैं – लेकिन वे एक्सटेंशन की स्वयं की लॉगिन जांच पास नहीं करते हैं। यदि आपको लॉगिन स्क्रीन दिखाई देती है, भले ही टर्मिनल में सब कुछ पहले से ही काम कर रहा हो, तो यही कारण है।

    इसे वीएस कोड सेटिंग्स में कुछ पंक्तियों के साथ ठीक किया जा सकता है: `claudeCode.environmentVariables` में वेरिएबल्स को डुप्लिकेट करें और लॉगिन अनुरोध को अक्षम करें।

    {
      "claudeCode.environmentVariables": [
        { "name": "ANTHROPIC_BASE_URL", "value": "https://api.deepseek.com/anthropic" },
        { "name": "ANTHROPIC_AUTH_TOKEN", "value": "ваш_ключ_deepseek" },
        { "name": "ANTHROPIC_MODEL", "value": "deepseek-flash[1m]" }
      ],
      "claudeCode.disableLoginPrompt": true
    }
    

    macOS बारीकियां

    यदि आप डॉक या फाइंडर से वीएस कोड लॉन्च करते हैं, तो यह ~/.zshrc से पर्यावरण चर प्राप्त नहीं करता है। यह मानक macOS व्यवहार है और क्लाउड कोड दस्तावेज़ में विशेष रूप से चर्चा की गई है। यानी, एक्सटेंशन के लिए आपके शेल में `export ANTHROPIC_BASE_URL=…` बस काम नहीं करेगा – यह वेरिएबल इसके वातावरण में नहीं होगा।

    इससे दो निष्कर्ष निकलते हैं. सबसे पहले, `claudeCode.environmentVariables` में सेटिंग्स शेल वेरिएबल्स की तुलना में अधिक विश्वसनीय हैं। दूसरे, यदि आप अभी भी एक शेल पसंद करते हैं, तो संपादक को टर्मिनल से लॉन्च करें, जहां चर पहले से ही निर्यात किए गए हैं:

    code .
    

    क्या काम नहीं करेगा

    तृतीय-पक्ष प्रदाता पर, कुछ एक्सटेंशन सुविधाएँ उपलब्ध नहीं हैं क्योंकि उन्हें claude.ai खाते की आवश्यकता होती है:
    – क्लाउड सत्रों के लिए कोई योजना उपयोग बार, वॉयस इनपुट और वेब टैब नहीं होगा;
    – लॉगआउट आदेश मेनू में नहीं दिखाए जाते हैं;
    – `/उपयोग` योजना सीमा के बजाय वर्तमान सत्र की खपत और टोकन की संख्या दिखाएगा;
    – यदि आधार पता एंथ्रोपिक नहीं है तो रिमोट कंट्रोल काम नहीं करता है।

    यह अपेक्षित व्यवहार है और यह संकेत नहीं है कि सेटअप विफल हो गया है।

    अलग से, मैं यह जोड़ना चाहूंगा कि JetBrains का अपना प्लगइन है, लेकिन इसे अलग तरह से डिज़ाइन किया गया है: इसमें अंतर्निहित CLI नहीं है, लेकिन एकीकृत टर्मिनल में पहले से स्थापित एक को लॉन्च करता है। पर्यावरण चर के लिए कोई सेटिंग नहीं है, इसलिए आपको पहले से निर्यात किए गए चर के साथ टर्मिनल से आईडीई लॉन्च करना चाहिए।

    डीपसीक क्लाउड मॉडल नामों को कैसे समझता है

    क्लाउड कोड आंतरिक रूप से मॉडलों को क्लाउड-ओपस, क्लाउड-सॉनेट और क्लाउड-हाइकू जैसे नामों से संदर्भित करता है। डीपसीक इन नामों को पकड़ता है और उन्हें अपने नाम से बदल देता है:
    – जो कुछ भी क्लाउड-ओपस से शुरू होता है वह depseek-v4-pro पर जाता है;
    – जो कुछ भी क्लाउड-सॉनेट या क्लाउड-हाइकू से शुरू होता है वह डीपसीक-फ्लैश पर जाता है;
    – अज्ञात मॉडल का नाम भी घटाकर डीपसीक-फ़्लैश कर दिया गया है।

    इसका मतलब यह है कि मॉडलों को स्पष्ट रूप से निर्दिष्ट किए बिना भी, एकीकरण काम करेगा – लेकिन यह स्पष्ट रूप से नियंत्रित करना बेहतर है कि कौन से मॉडल और किस टैरिफ पर अनुरोध पूरा होगा। इसीलिए उपरोक्त सेटिंग्स में सभी भूमिकाएँ मैन्युअल रूप से लिखी जाती हैं।

    किस बात पर ध्यान दें

    अनुकूलता अधूरी है, और आपको यह पहले से पता होना चाहिए। डीपसीक केवल एंथ्रोपिक एपीआई की कुछ क्षमताओं को नजरअंदाज करता है:

    – कैशिंग संकेत। `cache_control` फ़ील्ड समर्थित नहीं है। क्लाउड कोड सक्रिय रूप से कैश का उपयोग करता है ताकि एक ही संदर्भ को बार-बार भेजने के लिए अधिक भुगतान न करना पड़े। यहां ऐसा नहीं होगा, इसलिए लंबे सत्र आपकी प्रति टोकन कीमत की अपेक्षा से अधिक महंगे हैं। पुराने संवाद को लगातार जारी रखने के बजाय समय-समय पर एक नया संवाद शुरू करें।
    – सोच बजट। `सोच` पैरामीटर समर्थित है, लेकिन इसके अंदर `बजट_टोकन` को नजरअंदाज कर दिया गया है।
    – विविध। `top_k`, `service_tier`, `container` फ़ील्ड और API से MCP सर्वर के कनेक्शन को भी अनदेखा किया जाता है।
    – एमसीपी। डीपसीक पक्ष पर अंतर्निहित एमसीपी सर्वर तंत्र काम नहीं करता है, हालांकि एजेंट के सामान्य उपकरण – फाइलें पढ़ना, संपादन, कमांड चलाना, खोज करना – सामान्य रूप से कार्य करते हैं।

    अलग से, यह प्रॉक्सी का उल्लेख करने योग्य है। समुदाय में `डीएस-सीसी-प्रॉक्सी` जैसी परियोजनाएं हैं, जो क्लाउड कोड और डीपसीक के बीच रखी गई हैं और छोटी असंगतताओं को दूर करने के साथ-साथ मुख्य सत्र और उप-एजेंटों को अलग-अलग मॉडलों में अलग करने का काम करती हैं। यदि मानक सेटअप अस्थिर व्यवहार करता है, तो ऐसी मध्यवर्ती परत मदद कर सकती है।

    क्लाउड कोड राउटर

    ऊपर वर्णित विधि सभी कार्यों पर एक मॉडल रखती है। लेकिन एजेंट बहुत अलग चीजें करता है: वह परियोजना की संरचना को समझता है, छोटी-छोटी चीजों को ठीक करता है, और कभी-कभी वास्तव में जटिल समस्या को हल करता है। यह तर्कसंगत है कि विभिन्न प्रकार के कार्यों के लिए विभिन्न मॉडलों का उपयोग किया जाना चाहिए। यह बिल्कुल वही है जो क्लाउड-कोड-राउटर (सीसीआर) कर सकता है – एक स्थानीय गेटवे जो क्लाउड कोड और मॉडल प्रदाताओं के बीच खड़ा होता है।

    यह क्या देता है

    – नियमों के अनुसार रूटिंग। आप यह सेट कर सकते हैं कि कौन सा मॉडल मुख्य सत्र को पूरा करता है, कौन सा मॉडल पृष्ठभूमि कार्यों को पूरा करता है, कौन सा मॉडल शेड्यूलिंग मोड को पूरा करता है। केवल जटिल तर्क के लिए एक महंगे मॉडल का उपयोग करना और एक सस्ते मॉडल को दिनचर्या दे देना समझ में आता है।
    – बैकअप विकल्प। यदि प्रदाता कोई त्रुटि देता है, तो अनुरोध सत्र को छोड़ने के बजाय श्रृंखला में अगले मॉडल पर चला जाता है।
    – अवलोकनशीलता। इंटरफ़ेस अनुरोध लॉग, देरी, टोकन खपत और लागत दिखाता है – कुछ ऐसा जिसके बारे में आप केवल सीधे कनेक्शन के साथ अनुमान लगा सकते हैं।
    – कई एजेंटों के लिए एक पता। प्रदाता, कुंजी और नियम एक ही स्थान पर रहते हैं, और ग्राहक एक स्थानीय पते से जुड़ते हैं।

    सबसे पहले संस्करणों के बारे में – यह महत्वपूर्ण है

    यहां यह चेतावनी देने लायक है क्योंकि इससे आपका समय बचेगा। सीसीआर को इसके इतिहास में बड़े पैमाने पर नया रूप दिया गया है, और खोज में आपको मिलने वाले लगभग सभी लेख पुराने संस्करण का वर्णन करते हैं।

    पुराने संस्करणों में, कॉन्फ़िगरेशन प्रदाता और राउटर ब्लॉक के साथ फ़ाइल ~/.claude-code-router/config.json में था, और सब कुछ `ccr कोड` कमांड के साथ लॉन्च किया गया था। अब यह उस तरह से काम नहीं करता. वर्तमान संस्करण (3.x) SQLite डेटाबेस में सेटिंग्स संग्रहीत करता है और एक वेब इंटरफ़ेस के माध्यम से प्रबंधित किया जाता है। यदि अभी तक कोई डेटाबेस नहीं है तो पुराने config.json को माइग्रेशन के स्रोत के रूप में बिल्कुल एक बार पढ़ा जाता है – उसके बाद, इसमें किए गए संपादन कुछ भी प्रभावित नहीं करते हैं।

    यानी, अगर आपको इंटरनेट पर config.json और `ccr कोड` कमांड को संपादित करने के निर्देश मिले और आपके लिए कुछ भी काम नहीं आया, तो आप एक ऐसी फ़ाइल को संपादित कर रहे हैं जिसे अब कोई नहीं पढ़ता है। ये तुम्हारी भूल नही है।

    स्थापना

    आपको Node.js 22 या बाद के संस्करण की आवश्यकता होगी।

    npm install -g @musistudio/claude-code-router
    ccr ui
    

    `ccr ui` कमांड पृष्ठभूमि में सेवा लाता है और ब्राउज़र में प्रबंधन इंटरफ़ेस खोलता है। अन्य आदेशों को जानना उपयोगी है: `ccr प्रारंभ` एक सेवा शुरू करता है, `ccr stop` इसे रोकता है, `ccrserv` अग्रभूमि में काम करता है और जब आपको लॉग देखने की आवश्यकता होती है तो यह सुविधाजनक होता है।

    डिफ़ॉल्ट रूप से, प्रबंधन इंटरफ़ेस पोर्ट 3458 पर रहता है, और मॉडलों के लिए गेटवे स्वयं पोर्ट 3456 पर रहता है।

    सेटिंग्स

    फ़ाइलों को मैन्युअल रूप से संपादित किए बिना, सब कुछ वेब इंटरफ़ेस में किया जाता है:
    1. प्रदाता अनुभाग में, डीपसीक प्रदाता जोड़ें और इसकी कुंजी निर्दिष्ट करें। कृपया ध्यान दें: यहां केवल डोमेन ही नहीं बल्कि चैट/पूर्णता बिंदु तक का पूरा पता आवश्यक है।
    2. मॉडल अनुभाग में, वर्णन करें कि यह मॉडल क्या है – विवरण रूटिंग में मदद करता है।
    3. एजेंट कॉन्फ़िगरेशन अनुभाग में, डिफ़ॉल्ट मॉडल सेट करें।
    4. रूटिंग अनुभाग में, नियमों को कॉन्फ़िगर करें: कौन सा मॉडल किस अनुरोध का जवाब देता है।
    5. एपीआई कुंजी पृष्ठ पर, एक सीसीआर क्लाइंट कुंजी बनाएं – क्लाउड कोड इसका उपयोग करेगा, डीपसीक कुंजी का नहीं।

    इसके बाद, जो कुछ बचता है वह गेटवे पर क्लाउड कोड भेजना है: इंटरफ़ेस में दिखाए गए गेटवे पते को आधार पते के रूप में निर्दिष्ट करें, और सीसीआर क्लाइंट कुंजी को टोकन के रूप में निर्दिष्ट करें।

    एक अच्छी बात: रूटिंग नियम न केवल फ़ील्ड के साथ, बल्कि जावास्क्रिप्ट स्क्रिप्ट के साथ भी लिखे जा सकते हैं, यदि तर्क एक फ़ील्ड की तुलना करने से अधिक जटिल है।

    क्या इसका उपयोग करना उचित है

    डीपसीक को क्लाउड कोड से जोड़ना मुख्य रूप से सुविधाजनक एजेंट वातावरण को छोड़े बिना लागत कम करने का एक तरीका है। आपको समान इंटरफ़ेस, समान टूल और समान वर्कफ़्लो मिलता है, लेकिन एक अलग मॉडल पर। सेटअप में कुछ मिनट लगते हैं और यह पूरी तरह से प्रतिवर्ती है: एंथ्रोपिक मॉडल पर लौटने के लिए बस पर्यावरण चर को हटा दें।

    सीमाएँ भी स्पष्ट हैं: कोई त्वरित कैश नहीं है, एपीआई फ़ील्ड के संबंध में अपूर्ण संगतता, और जटिल वास्तुशिल्प कार्यों के लिए मॉडल की गुणवत्ता भिन्न हो सकती है। रिपॉजिटरी में नियमित काम के लिए – नेविगेशन, रिफैक्टरिंग, रनिंग टेस्ट – यह पर्याप्त से अधिक है।

    उदाहरण: ओनी-एक्सटेंडेड

    इस तरह के संयोजन का एक जीवंत उदाहरण मेरा प्रोजेक्ट ओनी-एक्सटेंडेड है, जो ऐप्पल सिलिकॉन के लिए गेम ओनी (बुंगी, 2001) के पोर्ट का एक कांटा है। खेल के स्रोत सी में लिखे गए हैं और लगभग बीस वर्षों से अधिक समय से मौजूद हैं; उनमें कभी कोई परीक्षण नहीं हुआ, और फ़ाइल का आकार हज़ारों पंक्तियों में मापा जाता है। हालाँकि, डीपसीक से क्लाउड कोड के माध्यम से प्रोजेक्ट में नई सुविधाएँ जोड़ी गई हैं: F5/F9 के माध्यम से तेज़ बचत और लोडिंग, एक कुंजी होल्ड ब्लॉक, और एक -नोडमेज लॉन्च फ़्लैग जो क्षति को अक्षम करता है।

    ऊपर जो कहा गया था उसका यह एक अच्छा उदाहरण है। सभी कार्य एक बड़े भंडार में नियमित कार्य से संबंधित होते हैं – एजेंट अन्य लोगों के कोड की जांच करता है, मॉड्यूल के बीच संबंध ढूंढता है और किसी आर्किटेक्चर को खरोंच से डिजाइन करने के बजाय परिकल्पनाओं का परीक्षण करता है। डीपसीक पर ऐसे सत्रों की लागत एंथ्रोपिक मॉडल की तुलना में काफी कम है, इस तथ्य के बावजूद कि परिणाम परियोजना के स्वयं के बुनियादी ढांचे द्वारा सत्यापित है: असेंबली, लेवल रन स्टैंड और ऑफ़लाइन परीक्षण।

    लिंक

    https://platform.deepseek.com/api_keys
    https://api-docs.deepseek.com
    https://docs.anthropic.com/en/docs/claude-code
    https://github.com/anthropics/claude-code
    https://github.com/musistudio/claude-code-router
    https://ccrdesk.top/en/guides/cli/
    https://github.com/zefir1990/Oni-Extended

    स्रोत

    https://api-docs.deepseek.com/guides/anthropic_api
    https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code
    https://ccrdesk.top/en/routing/
    https://code.claude.com/docs/en/vs-code

  • मुख्य बात: थोक छवि संपीड़न और आकार बदलना

    मैमैट (मास इमेज मैनिपुलेशन टूल) एक ओपन सोर्स टूल है जो बैच इमेज प्रोसेसिंग: आकार बदलने और संपीड़न के लिए डिज़ाइन किया गया है। एप्लिकेशन Python 3.10+ में लिखा गया है और प्रोसेसिंग इंजन के रूप में ImageMagick का उपयोग करता है।

    लिंक

    https://github.com/zefir1990/maimat

  • डोंकी हिल्स आधिकारिक तौर पर एक साल से अधिक समय से स्टीम पर है!

    डोंकी हिल्स पिछले एक साल से अधिक समय से स्टीम पर है!

    ठीक एक साल पहले यह प्रोजेक्ट स्टीम पेज पर दिखाई दिया था और तब से यह गेम काफी आगे बढ़ चुका है। इस दौरान, डोनकी हिल्स का विकास किस दिशा में होना चाहिए, इसके लिए कई प्रयोग, परिवर्तन और खोजें हुईं।

    गेमप्ले पर काम जारी है, और अब प्रोजेक्ट धीरे-धीरे अपना असली चेहरा हासिल कर रहा है। डोंकी हिल्स वही बनना शुरू हो गया है जो इसका इरादा था – कॉमेडी फर्स्ट पर्सन रॉगुलाइक पैरोडी सर्वाइवल हॉरर।

    एक अजीब साहसिक कार्य जहां डरावनी हास्य, अन्वेषण और अप्रत्याशित स्थितियों से मिलती है। आपको शहर जाना होगा, वस्तुओं की तलाश करनी होगी, पहेलियों को सुलझाना होगा और धीरे-धीरे उस रहस्य को उजागर करना होगा जो आपको मारिया तक ले जाएगा।

    प्रोटोटाइप के अगले प्लेटेस्ट के ताज़ा स्क्रीनशॉट नीचे दिए गए हैं। यह अभी खेल का अंतिम रूप नहीं है, लेकिन आप पहले से ही शहर के माहौल और परियोजना किस दिशा में आगे बढ़ रही है, महसूस कर सकते हैं।

    आपकी प्रतिक्रिया सुनने में बहुत दिलचस्पी है! 👀
    आपको नई दिशा कैसी लगी? खेल के माहौल और विचारों के बारे में आपकी क्या राय है?

    उन सभी को धन्यवाद जिन्होंने डोंकी हिल्स को अपनी इच्छा सूची में जोड़ा, विकास का अनुसरण किया और परियोजना का समर्थन किया ❤️

    आगे अभी भी कई प्रयोग, नई यांत्रिकी और अजीब रोमांच बाकी हैं।

    https://store.steampowered.com/app/3476390/Donki_Hills/

  • गेमिंग लैपटॉप प्रोसेसर पर थ्रॉटलिंग को दरकिनार करना

    आधुनिक गेमिंग लैपटॉप के निर्माता अक्सर सिस्टम को कॉन्फ़िगर करते हैं ताकि प्रोसेसर 90 डिग्री तक गर्म हो और यहां तक ​​कि लोड के तहत 100 डिग्री सेल्सियस तक पहुंच जाए। यह समस्या विशेष रूप से गर्मियों में तीव्र होती है जब कठिन खेल या भारी काम वाले कार्य चल रहे होते हैं।

    अत्यधिक हीटिंग के कारण, थ्रॉटलिंग सक्रिय हो जाती है (भौतिक क्षति को रोकने के लिए प्रोसेसर आवृत्तियों को रीसेट करना), जिससे प्रदर्शन में तेज गिरावट, फ्रीज और एफपीएस में गिरावट आती है। ओवरहीटिंग से निपटने के कई तरीके हैं (कूलिंग पैड का उपयोग करने से लेकर अंडरवोल्टिंग तक), लेकिन इस लेख में मैं सबसे सरल और तेज़ विधि का वर्णन करूंगा जो विंडोज 11 और ऑपरेटिंग सिस्टम के पुराने संस्करणों के लिए प्रासंगिक है।

    विधि बिजली आपूर्ति सेटिंग्स के माध्यम से अधिकतम प्रोसेसर स्थिति को सीमित करने के लिए है:

    1. विंडोज़ सर्च या कंट्रोल पैनल के माध्यम से पावर विकल्प खोलें।
    2. सक्रिय विद्युत योजना में, अतिरिक्त पैरामीटर बदलने के लिए अनुभाग पर जाएँ।
    3. प्रोसेसर पावर प्रबंधन शाखा ढूंढें।
    4. अधिकतम प्रोसेसर स्थिति विकल्प का विस्तार करें।
    5. प्लग इन के लिए, मान को 100% से 80% या उससे कम में बदलें।

    इन सेटिंग्स को लागू करने के बाद, प्रोसेसर स्वचालित रूप से अत्यधिक आवृत्तियों पर ओवरक्लॉक नहीं करेगा जो अतिरिक्त गर्मी उत्पन्न करते हैं। हालाँकि अधिकतम शिखर प्रदर्शन में लगभग 20% की कमी आएगी, प्रोसेसर अब ज़्यादा गरम नहीं होगा। थ्रॉटलिंग के बिना कम आवृत्ति पर स्थिर संचालन 100 डिग्री से कम तापमान पर ओवरहीटिंग के कारण प्रदर्शन में लगातार तेज उछाल की तुलना में सिस्टम के लिए बहुत बेहतर और अधिक आरामदायक है।

    प्रत्येक लैपटॉप अद्वितीय है, इसलिए मेरा सुझाव है कि उपयोगकर्ता प्रयोग करें और इष्टतम संतुलन (प्रतिशत) ढूंढें जो ओवरहीटिंग के बिना वांछित प्रदर्शन प्रदान करेगा।

  • अलेका फ़्लटर पर निर्मित एक क्रॉस-प्लेटफ़ॉर्म ड्राइंग ऐप है

    अलेका फ़्लटर में लिखा गया एक हल्का, तेज़ ड्राइंग ऐप है। यह हर जगह काम करता है: ब्राउज़र में, डेस्कटॉप पर (विंडोज, मैकओएस, लिनक्स) और मोबाइल डिवाइस (आईओएस, एंड्रॉइड) पर।

    हुड के नीचे शुद्ध डार्ट, सामग्री 3 और विवरण पर ध्यान दिया गया है।

    अवसर

    • फ्रीहैंड ड्राइंग: द्विघात बेज़ियर इंटरपोलेशन के साथ सहज स्ट्रोक।
    • 15 रंगों का पैलेट: दृश्य संकेत के साथ त्वरित चयन।
    • ब्रश का आकार: 1 से 30 पिक्सेल के स्लाइडर के साथ समायोज्य।
    • पूर्ववत करें: अपने स्ट्रोक से पीछे हटें।
    • कैनवास साफ़ करें: एक क्लिक से।
    • बाढ़ भराव: चिकनी किनारों के लिए सहनशीलता के साथ बीएफएस।
    • सहेजना: प्रारूप .aleka (JSON).
    • लोड हो रहा है: पहले से सहेजे गए चित्र खोलें और जारी रखें।
    • पीएनजी निर्यात: 3x रिज़ॉल्यूशन पर कैनवास कैप्चर करें।
    • 🎬 एनिमेशन मोड: टाइमलाइन के साथ फ़्रेम-दर-फ़्रेम एनीमेशन:
      • फ़्रेम जोड़ना और हटाना, प्रत्येक का अपना डिज़ाइन होता है।
      • फ़्रेम अवधि 50 एमएस से 5 सेकंड तक।
      • एफपीएस बदलें: 6, 8, 12, 15, 24, 30 या 60।
      • MP4 में निर्यात करें (डेस्कटॉप पर ffmpeg के माध्यम से, ब्राउज़र में ffmpeg.wasm के माध्यम से)।
    • डार्क और लाइट थीम: सामग्री 3, सिस्टम का अनुसरण करती है।

    फड़फड़ाहट क्यों?

    फ़्लटर आपको बिना कोड डुप्लिकेट किए छह प्लेटफ़ॉर्म के लिए एक एप्लिकेशन लिखने की अनुमति देता है। अलेका केवल डार्ट और फ़्लटर एसडीके की मूल क्षमताओं और न्यूनतम तृतीय-पक्ष निर्भरता का उपयोग करता है: file_picker, image भरने के दौरान पिक्सेल के साथ काम करने के लिए, ffmpeg_wasm ब्राउज़र में वीडियो निर्यात करने के लिए।

    वास्तुकला

    परियोजना स्वच्छ वास्तुकला और ठोस के सिद्धांतों का पालन करती है:

    • PaintCanvasController – स्ट्रोक की स्थिति को नियंत्रित करता है और श्रोता/पर्यवेक्षक पैटर्न को भरता है।
    • पेंटटूलबार – पैलेट, स्लाइडर और बटन का यूआई घटक।
    • AlekaFile – JSON, PNG कैप्चर में क्रमबद्धता/deserialization।
    • मूवीकंट्रोलर – फ़्रेम और एनीमेशन स्थिति का मॉडल।
    • वीडियोएक्सपोर्ट – MP4 एन्कोडिंग लॉजिक (डेस्कटॉप/वेब) को इनकैप्सुलेट करता है।

    I/O फ़ंक्शंस (saveStrokes, loadStrokes, capturePng, आदि) को इंजेक्टेबल बनाया गया है – परीक्षण के दौरान इन्हें मॉक से बदला जा सकता है। प्रोजेक्ट में 79 परीक्षण हैं: क्रमबद्धता, रद्दीकरण, लोडिंग/सेविंग, पीएनजी और वीडियो निर्यात, फ्रेम मॉडल और टाइमलाइन की जांच करना।

    फ़ाइल स्वरूप .aleka

    .aleka फ़ाइल पढ़ने योग्य JSON है जिसे किसी भी टेक्स्ट एडिटर में खोला जा सकता है:

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

    प्रत्येक स्ट्रोक एक रंग (ARGB32), एक मोटाई और बिंदुओं की एक श्रृंखला संग्रहीत करता है। प्रारूप को aleka फ़ील्ड द्वारा संस्करणित किया गया है।

    एनीमेशन मोड

    प्रमुख विशेषताओं में से एक अंतर्निहित फ़्रेम-दर-फ़्रेम एनीमेशन संपादक है। आप एक फ़्रेम बनाते हैं, एक नया जोड़ते हैं, अगला फ़्रेम बनाते हैं, इत्यादि। टाइमलाइन थंबनेल दिखाती है और आपको फ़्रेम का क्रम और अवधि बदलने की अनुमति देती है। तैयार एनिमेशन को MP4 में निर्यात किया जा सकता है।

    निर्यात एल्गोरिथ्म सभी फ़्रेमों के माध्यम से पुनरावृत्त होता है, उन्हें RepaintBoundary के माध्यम से कैप्चर करता है, PNG बाइट्स एकत्र करता है और उन्हें एनकोडर में स्थानांतरित करता है। डेस्कटॉप पर, सिस्टम ffmpeg को ब्राउज़र में कहा जाता है, ffmpeg.wasm का उपयोग किया जाता है – WebAssembly के लिए ffmpeg का एक पूर्ण पोर्ट, सीधे ब्राउज़र सैंडबॉक्स में काम करता है।

    बाढ़ भराव

    भरण कार्यान्वयन रंग सहिष्णुता (<कोड>_kFillTolerance = 1000) के साथ ब्रेडथ फर्स्ट सर्च (बीएफएस) का उपयोग करता है। यह आपको स्ट्रोक के चिकने किनारों को सही ढंग से संभालने की अनुमति देता है – भरण रूपरेखा से आगे नहीं बहता है, लेकिन सीमा पर पारभासी पिक्सेल को पकड़ लेता है। एक खाली कैनवास के लिए, अनावश्यक गणना के बिना एक ठोस भराव बनाया जाता है।

    कोशिश करें

    अलेका वेब पर और एक मूल एप्लिकेशन के रूप में उपलब्ध है:

    demensdeum.com/software/aleka/

    स्रोत कोड एमआईटी लाइसेंस के तहत खुला है:

    github.com/demensdeum/Aleka

  • मामा कैलेंडर – क्रॉस-प्लेटफ़ॉर्म अनुस्मारक ऐप

    मामा कैलेंडर एक क्रॉस-प्लेटफ़ॉर्म ईवेंट और रिमाइंडर एप्लिकेशन है जो रिएक्ट नेटिव (एक्सपो) में दो बैकएंड कार्यान्वयन के साथ लिखा गया है: Node.js + MongoDB और PHP + MariaDB।

    एप्लिकेशन आपको इमोजी वर्गीकरण के साथ ईवेंट बनाने, पुनरावृत्ति के प्रकार (एक बार, वार्षिक, मासिक, साप्ताहिक, दैनिक) का चयन करने और अगले 3 दिनों के लिए एक अलग “महत्वपूर्ण ईवेंट” टैब में महत्वपूर्ण ईवेंट देखने की अनुमति देता है।

    प्रौद्योगिकी स्टैक

    फ्रंटएंड रिएक्ट नेटिव 0.86 में एक्सपो एसडीके 57 के माध्यम से टाइपस्क्रिप्ट, नेविगेशन के लिए एक्सपो राउटर और एनिमेशन के लिए <कोड>रिएक्ट-नेटिव-रीएनिमेटेड के साथ लिखा गया है। एक्सपो-प्रतीकों का उपयोग आइकनों के लिए किया जाता है (आईओएस पर एसएफ प्रतीक, एंड्रॉइड/वेब पर सामग्री आइकन)।

    बैकएंड दो संस्करणों में लागू किया गया है:

    • Node.js: एक्सप्रेस 4, मूल ड्राइवर के माध्यम से MongoDB 8, स्क्रिप्ट + नमक के साथ कस्टम प्रमाणीकरण, मैन्युअल टोकन प्रबंधन। डॉकर कंपोज़ क्लाइंट (nginx), सर्वर और MongoDB लाता है।
    • PHP: फ्रेमवर्क के बिना PHP 8.2, PDO + MariaDB 11, पासवर्ड हैशिंग के लिए bcrypt, आपका अपना राउटर और कंपोजर के माध्यम से PSR-4 ऑटोलोडिंग।

    एप्लिकेशन फ़ंक्शन

    • पंजीकरण और प्राधिकरण: उपयोगकर्ता नाम/पासवर्ड और बियरर टोकन के साथ सरल प्रणाली
    • CRUD ईवेंट: दिनांक, इमोजी और दोहराव प्रकार के साथ ईवेंट बनाएं, देखें, संपादित करें और हटाएं
    • स्मार्ट फ़िल्टरिंग: महत्वपूर्ण ईवेंट टैब पुनरावृत्ति नियमों को ध्यान में रखते हुए, अगले 3 दिनों के लिए ईवेंट दिखाता है। उदाहरण के लिए, वार्षिक घटनाएँ निकटतम वार्षिक घटना दर्शाती हैं, मासिक – महीने के दिन के अनुसार, साप्ताहिक – सप्ताह के दिन के अनुसार
    • इमोजी पिकर: घटनाओं के त्वरित वर्गीकरण के लिए 20 प्रीसेट इमोजी
    • आज की घटनाओं को हाइलाइट करना: आज की घटनाओं को लाल पृष्ठभूमि (#B71C1C) के साथ हाइलाइट किया गया है
    • डार्क थीम: लाइट और डार्क थीम के लिए अलग-अलग पैलेट के साथ सिस्टम रंग योजना का स्वचालित पता लगाना
    • अंतर्राष्ट्रीयकरण: रिएक्ट संदर्भ के माध्यम से रूसी और अंग्रेजी भाषाएँ
    • Анимации: анимированный сплэш-скрин с Keyframe API и упругой интерполяцией, анимированная иконка приложения с вращающимся свечением
    • एडमिन एंडपॉइंट: उपयोगकर्ताओं, टोकन को प्रबंधित करना और मास्टर टोकन के माध्यम से डेटाबेस को साफ़ करना

    दो बैकएंड कार्यान्वयन क्यों?

    Node.js संस्करण मुख्य है, लेकिन PHP संस्करण अधिक क्लासिक होस्टिंग के विकल्प के रूप में मौजूद है। एपीआई पूरी तरह से समान है, जो आपको क्लाइंट कोड को बदले बिना उनके बीच स्विच करने की अनुमति देता है।

    बुनियादी ढाँचा

    पूरे स्टैक को डॉकर कंपोज़ के माध्यम से उठाया गया है: क्लाइंट को मल्टीस्टेज बिल्ड (एक्सपो एक्सपोर्ट → nginx अल्पाइन), Node.js, MongoDB 8 पर एक सर्वर के माध्यम से इकट्ठा किया गया है। PHP संस्करण के लिए MariaDB 11 और परीक्षणों के लिए phpunit के साथ एक अलग कंपोज़ फ़ाइल है।

    वेब संस्करण की असेंबली एक PowerShell स्क्रिप्ट द्वारा स्वचालित की जाती है जो एक्सपो एक्सपोर्ट से पहले API_URL को पैच करती है और बाद में मूल को पुनर्स्थापित करती है।

    आउटपुट

    मामा कैलेंडर एक पूर्ण विशेषताओं वाला क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन है जो पूरे चक्र को कवर करता है: रिएक्ट नेटिव पर मोबाइल और वेब फ्रंटएंड से लेकर दो सर्वर-साइड विकल्पों तक। यह परियोजना अपनी वास्तुकला, आधुनिक एक्सपो एसडीके क्षमताओं के उपयोग और दोहरे बैकएंड कार्यान्वयन के लिए दिलचस्प है।

    लिंक

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

  • Surreal इंजन C++ को WebAssembly में पोर्ट करना

    इस पोस्ट में मैं बताऊंगा कि कैसे मैंने Surreal इंजन गेम इंजन को WebAssembly में पोर्ट किया।
    https://demensdeum.com/demos/SurrealEngine/”
    अवास्तविक इंजन – एक गेम इंजन जो अवास्तविक इंजन 1 की अधिकांश कार्यक्षमता को लागू करता है, इस इंजन पर प्रसिद्ध गेम – अवास्तविक टूर्नामेंट 99, अवास्तविक, ड्यूस एक्स, अनडाइंग। यह क्लासिक इंजनों को संदर्भित करता है जो मुख्य रूप से एकल-थ्रेडेड निष्पादन वातावरण में काम करते हैं।
    मूल रूप से मेरे मन में एक ऐसे प्रोजेक्ट को लेने का विचार था जिसे मैं किसी भी उचित समय सीमा में पूरा नहीं कर सका, इस प्रकार मैंने अपने ट्विच अनुयायियों को दिखाया कि ऐसे प्रोजेक्ट भी हैं जिन्हें मैं भी नहीं कर सकता। अपनी पहली स्ट्रीम के दौरान, मुझे अचानक एहसास हुआ कि Emscripten का उपयोग करके Surreal इंजन C++ को WebAssembly में पोर्ट करने का कार्य संभव था।

    एक महीने बाद, मैं WebAssembly पर अपना फ़ोर्क और इंजन असेंबली प्रदर्शित कर सकता हूँ:
    https://demensdeum.com/demos/SurrealEngine/
    नियंत्रण, मूल की तरह, कीबोर्ड तीरों का उपयोग करके किया जाता है। इसके बाद, मैं इसे मोबाइल नियंत्रण (टैची) के लिए अनुकूलित करने की योजना बना रहा हूं, जिसमें सही प्रकाश व्यवस्था और अवास्तविक टूर्नामेंट 99 रेंडर की अन्य ग्राफिक विशेषताएं शामिल हैं।

    कहां से शुरू करें?

    पहली बात जो मैं कहना चाहता हूं वह यह है कि किसी भी प्रोजेक्ट को Emscripten का उपयोग करके C++ से WebAssembly में पोर्ट किया जा सकता है, एकमात्र सवाल यह है कि कार्यक्षमता कितनी पूर्ण होगी। ऐसा प्रोजेक्ट चुनें जिसके लाइब्रेरी पोर्ट एम्सस्क्रिप्टेन के लिए पहले से ही उपलब्ध हों; Surreal इंजन के मामले में, आप बहुत भाग्यशाली हैं, क्योंकि इंजन SDL 2, OpenAL – का उपयोग करता है। पुस्तकालय. वे दोनों एम्सस्क्रिप्टेन में पोर्ट किए गए हैं। हालाँकि, वल्कन का उपयोग ग्राफिक्स एपीआई के रूप में किया जाता है, जो वर्तमान में HTML5 के लिए उपलब्ध नहीं है, WebGPU को लागू करने के लिए काम चल रहा है, लेकिन यह ड्राफ्ट चरण में भी है, और यह भी अज्ञात है कि पूरी तरह से मानकीकृत होने के बाद Vulkan से WebGPU तक का पोर्ट कितना सरल होगा। इसलिए, मुझे Surreal इंजन के लिए अपना स्वयं का मूल OpenGL-ES/WebGL रेंडरर लिखना पड़ा।

    परियोजना का निर्माण

    Surreal इंजन में सिस्टम बनाएँ – सीएमके, जो पोर्टिंग को भी सरल बनाता है, क्योंकि एम्सस्क्रिप्टन अपने मूल बिल्डरों को प्रदान करता है – एममेक, एममेक।
    Surreal इंजन पोर्ट WebGL/OpenGL ES और C++ में डेथ-मास्क नामक मेरे नवीनतम गेम के कोड पर आधारित था, इस वजह से विकास बहुत सरल था, मेरे पास सभी आवश्यक बिल्ड फ़्लैग और कोड उदाहरण थे।
    CMakeLists.txt में सबसे महत्वपूर्ण बिंदुओं में से एक Emscripten के लिए बिल्ड फ़्लैग है, नीचे प्रोजेक्ट फ़ाइल से एक उदाहरण दिया गया है:

    set(CMAKE_CXX_FLAGS "-s MIN_WEBGL_VERSION=2 
    -s MAX_WEBGL_VERSION=2 
    -s EXCEPTION_DEBUG 
    -fexceptions 
    --preload-file UnrealTournament/ 
    --preload-file SurrealEngine.pk3 
    --bind 
    --use-preload-plugins 
    -Wall 
    -Wextra 
    -Werror=return-type 
    -s USE_SDL=2 
    -s ASSERTIONS=1 
    -w 
    -g4 
    -s DISABLE_EXCEPTION_CATCHING=0 
    -O3 
    --no-heap-copy 
    -s ALLOW_MEMORY_GROWTH=1 
    -s EXIT_RUNTIME=1")
    

    बिल्ड स्क्रिप्ट स्वयं:

    clear
    emmake make -j 16
    cp SurrealEngine.data /srv/http/SurrealEngine/SurrealEngine.data
    cp SurrealEngine.js /srv/http/SurrealEngine/SurrealEngine.js
    cp SurrealEngine.wasm /srv/http/SurrealEngine/SurrealEngine.wasm
    cp ../buildScripts/Emscripten/index.html /srv/http/SurrealEngine/index.html
    

    इसके बाद, आइए index.html तैयार करें, जिसमें प्रोजेक्ट फ़ाइल सिस्टम प्रीलोडर शामिल है। वेब पर अपलोड करने के लिए, मैंने अवास्तविक टूर्नामेंट डेमो संस्करण 338 का उपयोग किया। जैसा कि आप सीएमके फ़ाइल से देख सकते हैं, अनपैक्ड गेम फ़ोल्डर को बिल्ड निर्देशिका में जोड़ा गया था और एम्सस्क्रिप्टेन के लिए प्रीलोड-फ़ाइल के रूप में लिंक किया गया था।

    मुख्य कोड परिवर्तन

    फिर हमें गेम के गेम लूप को बदलना पड़ा, आप एक अंतहीन लूप नहीं चला सकते, इससे ब्राउज़र फ़्रीज़ हो जाता है, इसके बजाय आपको emscripten_set_main_loop का उपयोग करने की आवश्यकता है, मैंने इस सुविधा के बारे में अपने 2017 नोट में लिखा था ” target=’_blank’>SDL C++ गेम्स को HTML5 (Emscripten) में पोर्ट करना”
    हम while लूप से बाहर निकलने के लिए कोड को if में बदलते हैं, फिर हम गेम इंजन के मुख्य वर्ग को प्रदर्शित करते हैं, जिसमें गेम लूप होता है, वैश्विक दायरे में, और एक वैश्विक फ़ंक्शन लिखते हैं जो वैश्विक ऑब्जेक्ट से गेम लूप चरण को कॉल करेगा:

    #if __EMSCRIPTEN__
    #include <emscripten.h>
    Engine *EMSCRIPTEN_GLOBAL_GAME_ENGINE = nullptr;
    void emscripten_game_loop_step() {
    	EMSCRIPTEN_GLOBAL_GAME_ENGINE->Run();
    }
    #endif
    

    इसके बाद, आपको यह सुनिश्चित करना होगा कि एप्लिकेशन में कोई पृष्ठभूमि थ्रेड नहीं हैं; यदि हैं, तो एकल-थ्रेडेड निष्पादन के लिए उन्हें फिर से लिखने के लिए तैयार हो जाएं, या एम्सस्क्रिप्टन में phtread लाइब्रेरी का उपयोग करें।
    Surreal इंजन में बैकग्राउंड थ्रेड का उपयोग संगीत चलाने के लिए किया जाता है, मुख्य इंजन थ्रेड से वर्तमान ट्रैक, संगीत चलाने की आवश्यकता या उसकी अनुपस्थिति के बारे में डेटा आता है, फिर बैकग्राउंड थ्रेड म्यूटेक्स के माध्यम से एक नई स्थिति प्राप्त करता है और नया संगीत बजाना शुरू कर देता है, या रुक जाता है। प्लेबैक के दौरान संगीत को बफ़र करने के लिए बैकग्राउंड थ्रेड का भी उपयोग किया जाता है।
    पाथ्रेड के साथ एम्सस्क्रिप्टेन के लिए सररियल इंजन बनाने के मेरे प्रयास असफल रहे, क्योंकि एसडीएल2 और ओपनएएल पोर्ट बिना पाथ्रेड समर्थन के बनाए गए थे, और मैं संगीत के लिए उनका पुनर्निर्माण नहीं करना चाहता था। इसलिए, मैंने लूप का उपयोग करके पृष्ठभूमि संगीत स्ट्रीम की कार्यक्षमता को एकल-थ्रेडेड निष्पादन में स्थानांतरित कर दिया। C++ कोड से pthread कॉल्स को हटाकर, मैंने बफ़रिंग और संगीत प्लेबैक को मुख्य थ्रेड में स्थानांतरित कर दिया, ताकि कोई देरी न हो, मैंने बफ़र को कुछ सेकंड तक बढ़ा दिया।
    आगे, मैं ग्राफिक्स और ध्वनि के विशिष्ट कार्यान्वयन का वर्णन करूंगा।

    वल्कन समर्थित नहीं है!

    हाँ, Vulkan HTML5 में समर्थित नहीं है, हालाँकि सभी मार्केटिंग ब्रोशर Vulkan के मुख्य लाभ के रूप में क्रॉस-प्लेटफ़ॉर्म और व्यापक प्लेटफ़ॉर्म समर्थन प्रस्तुत करते हैं। इस कारण से, मुझे सरलीकृत OpenGL प्रकार – के लिए अपना स्वयं का मूल ग्राफ़िक्स रेंडरर लिखना पड़ा। ईएस, इसका उपयोग मोबाइल उपकरणों पर किया जाता है, कभी-कभी इसमें आधुनिक ओपनजीएल की फैशनेबल विशेषताएं शामिल नहीं होती हैं, लेकिन यह वेबजीएल को बहुत अच्छी तरह से पोर्ट करता है, जो कि एम्सस्क्रिप्टेन लागू करता है। सबसे सरल जीयूआई डिस्प्ले के लिए बुनियादी टाइल रेंडरिंग, बीएसपी रेंडरिंग लिखना और मॉडल + मैप रेंडर करना दो सप्ताह में पूरा हो गया। यह शायद परियोजना का सबसे कठिन हिस्सा था। Surreal इंजन रेंडरिंग की पूर्ण कार्यक्षमता को लागू करने के लिए अभी भी बहुत काम बाकी है, इसलिए कोड और पुल अनुरोधों के रूप में पाठकों की किसी भी मदद का स्वागत है।

    OpenAL समर्थित!

    बड़ी किस्मत यह है कि Surreal इंजन ऑडियो आउटपुट के लिए OpenAL का उपयोग करता है। OpenAL में एक सरल हैलो वर्ल्ड लिखने और इसे Emscripten का उपयोग करके WebAssembly में इकट्ठा करने के बाद, मुझे यह स्पष्ट हो गया कि सब कुछ कितना सरल था, और मैंने ध्वनि को पोर्ट करना शुरू कर दिया।
    कई घंटों की डिबगिंग के बाद, यह स्पष्ट हो गया कि एम्सस्क्रिप्टेन के ओपनएएल कार्यान्वयन में कई बग हैं, उदाहरण के लिए, जब मोनो चैनलों की संख्या को पढ़ना शुरू किया जाता है, तो विधि एक अनंत संख्या लौटाती है, और अनंत आकार के वेक्टर को प्रारंभ करने का प्रयास करने के बाद, C++ अपवाद वेक्टर::लेंथ_एरर के साथ क्रैश हो जाता है।
    हम मोनो चैनलों की संख्या को 2048 तक हार्डकोड करके इससे निजात पाने में कामयाब रहे:

    		alcGetIntegerv(alDevice, ALC_MONO_SOURCES, 1, &monoSources);
    		alcGetIntegerv(alDevice, ALC_STEREO_SOURCES, 1, &stereoSources);
    
    #if __EMSCRIPTEN__
    		monoSources = 2048; // for some reason Emscripten's OpenAL gives infinite monoSources count, bug?
    #endif
    
    

    क्या कोई नेटवर्क है?

    Surreal इंजन वर्तमान में ऑनलाइन खेल का समर्थन नहीं करता है, बॉट्स के साथ खेलना समर्थित है, लेकिन हमें इन बॉट्स के लिए AI लिखने के लिए किसी की आवश्यकता है। सैद्धांतिक रूप से, आप Websockets का उपयोग करके WebAssembly/Emscripten पर एक नेटवर्क गेम लागू कर सकते हैं।

    निष्कर्ष

    अंत में, मैं यह कहना चाहूंगा कि पुस्तकालयों के उपयोग के कारण Surreal इंजन की पोर्टिंग काफी सुचारू हो गई, जिसके लिए Emscripten पोर्ट हैं, साथ ही Emscripten पर WebAssembly के लिए C++ में एक गेम को लागू करने का मेरा पिछला अनुभव भी है। विषय पर ज्ञान के स्रोतों और भंडारों के लिंक नीचे दिए गए हैं।
    एम-एम-एम-राक्षस हत्या!
    इसके अलावा, यदि आप प्रोजेक्ट में मदद करना चाहते हैं, अधिमानतः वेबजीएल/ओपनजीएल ईएस रेंडरिंग कोड के साथ, तो मुझे टेलीग्राम में लिखें:
    https://t.me/demenscave

    लिंक

    https://demensdeum.com/demos/SurrealEngine/

    https://github.com/demensdeum/SurrealEngine-Emscripten

    https://github.com/dpjudas/SurrealEngine

  • छेनी के माध्यम से ग्राहकों के बीच पोर्ट अग्रेषण: L3 के बिना एक स्ट्रिप्ड-डाउन सुरंग

    जब दो डिवाइस NAT या सख्त फ़ायरवॉल के पीछे होते हैं और एक दूसरे को सीधे “देख” नहीं सकते हैं, तो वीपीएन मानक समाधान प्रतीत होता है। लेकिन एक पूर्ण विकसित L3 सुरंग (जैसे वायरगार्ड या ओपनवीपीएन) अक्सर अनावश्यक होती है: इसके लिए रूट अधिकारों की आवश्यकता होती है, वर्चुअल इंटरफेस स्थापित करना पड़ता है, और मौजूदा मार्गों के साथ टकराव हो सकता है।

    ऐसे मामलों में, छेनी का उपयोग करना सुविधाजनक है – एक टीसीपी/यूडीपी सुरंग जो HTTP के शीर्ष पर चलती है और डेटा ट्रांसफर के लिए वेबसॉकेट का उपयोग करती है। इस नोट में मैं दिखाऊंगा कि एक इंटरमीडिएट सर्वर के माध्यम से एक क्लाइंट से दूसरे क्लाइंट तक पोर्ट को “फॉरवर्ड” कैसे किया जाए।

    यह कैसे काम करता है?

    स्थिति की कल्पना करें: आपके पास क्लाइंट A (उदाहरण के लिए, आपका होम सर्वर), क्लाइंट B (आपका कार्य लैपटॉप) और सार्वजनिक IP पते वाला एक VPS है। ग्राहक ए और बी वीपीएस तक पहुंच सकते हैं, लेकिन एक दूसरे को नहीं।

    अग्रेषण योजना इस प्रकार होगी:
    1. क्लाइंट ए वीपीएस से जुड़ता है और सर्वर पर एक “रिवर्स” पोर्ट खोलता है। अब सर्वर के पोर्ट X पर आने वाली हर चीज़ क्लाइंट A के पोर्ट Y पर जाती है।
    2. क्लाइंट बी वीपीएस से जुड़ता है और पोर्ट Z को अपनी स्थानीय मशीन से सर्वर के पोर्ट X तक अग्रेषित करता है।
    3. परिणामस्वरूप, क्लाइंट B localhost:Z तक पहुंचता है और क्लाइंट A:Y पर समाप्त होता है।

    यह दृष्टिकोण उन मामलों में समाधानों में से एक है जहां वीपीएस के साथ संचार एल 3 परत को लागू नहीं करता है या ग्राहकों के बीच रूटिंग को कॉन्फ़िगर करने की कोई क्षमता नहीं है। हम विशेष रूप से एप्लिकेशन और पोर्ट स्तर पर काम करते हैं।

    चरण 1: सर्वर प्रारंभ करें

    अपने VPS पर, बस Chisel को सर्वर मोड में चलाएँ। क्लाइंट को सर्वर साइड पर पोर्ट खोलने की अनुमति देने के लिए <कोड>–रिवर्स ध्वज की आवश्यकता होती है।

    chisel server --port 8080 --reverse
    

    चरण 2: क्लाइंट ए (स्रोत) को कनेक्ट करना

    मान लीजिए कि क्लाइंट ए पोर्ट 3000 पर अपने स्थानीय वेब सर्वर तक पहुंच खोलना चाहता है। वह वीपीएस से जुड़ता है और कहता है: “सर्वर पर पोर्ट 2000 रिजर्व करें और इसे मुझे 3000 पर अग्रेषित करें।”

    chisel client vps-ip:8080 R:2000:127.0.0.1:3000
    

    अब वीपीएस (लूपबैक इंटरफ़ेस पर) पर पोर्ट 2000 क्लाइंट ए की ओर ले जाता है।

    चरण 3: क्लाइंट बी (उपभोक्ता) को कनेक्ट करना

    अब क्लाइंट बी इस संसाधन तक पहुंचना चाहता है। यह उसी वीपीएस से जुड़ता है और अपने स्थानीय पोर्ट 8080 को सर्वर के पोर्ट 2000 पर भेजता है।

    chisel client vps-ip:8080 8080:127.0.0.1:2000
    

    तैयार! अब, जब आप क्लाइंट बी पर http://localhost:8080 खोलेंगे, तो आप क्लाइंट ए पर चल रही सेवा देखेंगे।

    सुरक्षा और बारीकियाँ

    चिसेल --auth ध्वज के माध्यम से प्रमाणीकरण का समर्थन करता है, जिसे सार्वजनिक सर्वर के माध्यम से काम करते समय अत्यधिक अनुशंसित किया जाता है। आप ट्रैफ़िक को एन्क्रिप्ट करने के लिए टीएलएस प्रमाणपत्र का भी उपयोग कर सकते हैं।

    इस दृष्टिकोण का मुख्य लाभ यह है कि TUN/TAP डिवाइस और जटिल रूटिंग टेबल की कोई आवश्यकता नहीं है। यह एक स्ट्रिप-डाउन सुरंग है जो बिल्कुल एक काम करती है: वेबसॉकेट कनेक्शन के माध्यम से बंदरगाहों को बांधती है। यदि आप पोर्ट 443 के माध्यम से काम करने के लिए चिसेल को कॉन्फ़िगर करते हैं तो यह कॉर्पोरेट प्रॉक्सी के माध्यम से भी काम करता है।

    आउटपुट

    छेनी विशिष्ट नेटवर्क कार्यों के लिए एक उपयोगिता है। जब आपको एक पूर्ण वीपीएन स्थापित किए बिना अलग-अलग नोड्स के बीच पोर्ट को अग्रेषित करने की आवश्यकता होती है, तो रिले सर्वर के माध्यम से आगे और पीछे सुरंगों का संयोजन पूरी तरह से व्यवहार्य समाधान बन जाता है।

    लिंक

    https://github.com/jpillora/chisel

  • मैं बग ठीक क्यों नहीं कर सकता?

    आप कोड पर काम करने, परिकल्पनाओं को समझने, स्थितियों को समायोजित करने में घंटों बिताते हैं, लेकिन बग अभी भी पुन: उत्पन्न होता है। परिचित लग रहा है? हताशा की इस स्थिति को अक्सर “भूत शिकार” कहा जाता है। ऐसा लगता है कि प्रोग्राम आपके सुधारों को नज़रअंदाज़ करते हुए अपना जीवन जी रहा है।

    इस स्थिति के लिए सबसे आम – और सबसे कष्टप्रद – कारणों में से एक है एप्लिकेशन में पूरी तरह से गलत जगह पर त्रुटि की तलाश करना।

    “झूठे लक्षणों” का जाल

    जब हम कोई त्रुटि देखते हैं, तो हमारा ध्यान उस स्थान पर जाता है जहां उसने “शूट” किया था। लेकिन जटिल प्रणालियों में, जहां बग होता है (क्रैश या गलत मान) घटनाओं की एक लंबी श्रृंखला का अंत मात्र है। जब आप अंत को ठीक करने का प्रयास करते हैं, तो आप लक्षणों से लड़ रहे हैं, बीमारी से नहीं।

    यही वह जगह है जहां फ़्लोचार्ट अवधारणा आती है।

    यह वास्तविकता में कैसे काम करता है

    बेशक, हर बार कागज पर सीधे फ़्लोचार्ट बनाना (चित्रित करना) आवश्यक नहीं है, लेकिन एक वास्तुशिल्प मार्गदर्शक के रूप में इसे आपके दिमाग में या हाथ में रखना महत्वपूर्ण है। एक फ़्लोचार्ट आपको किसी एप्लिकेशन के संचालन को परिणामों के वृक्ष के रूप में देखने की अनुमति देता है।

    इस संरचना को समझे बिना, डेवलपर अक्सर अंधेरे में टटोलता रहता है। स्थिति की कल्पना करें: आप तर्क को एक शर्त शाखा में संपादित करते हैं, जबकि एप्लिकेशन (मापदंडों के एक निश्चित सेट के कारण) एक पूरी तरह से अलग शाखा में जाता है जिसके बारे में आपने सोचा भी नहीं था।

    <ब्लॉककोट>
    परिणाम: आप एल्गोरिथम के एक हिस्से में “परफेक्ट” कोड फिक्स पर घंटों बिताते हैं, जो निस्संदेह, एल्गोरिथम के दूसरे हिस्से में समस्या को ठीक करने के लिए कुछ नहीं करता है जहां यह वास्तव में विफल रहता है।

    <घंटा />

    बग को हराने के लिए एल्गोरिदम

    बंद दरवाजे पर पिटाई रोकने के लिए, आपको निदान के प्रति अपना दृष्टिकोण बदलना होगा:

    • परिणाम ट्री में स्थिति ढूंढें:कोड लिखने से पहले, आपको बिल्कुल वही पथ निर्धारित करना होगा जो एप्लिकेशन ने लिया है। किस बिंदु पर तर्क ने गलत मोड़ ले लिया? किस विशिष्ट स्थिति (राज्य) के कारण समस्या उत्पन्न हुई?
    • पुनरुत्पादन 80% सफलता है: यह आमतौर पर परीक्षकों और स्वचालित परीक्षणों द्वारा किया जाता है। यदि बग “फ़्लोटिंग” है, तो संयुक्त रूप से स्थितियों की खोज करने की प्रक्रिया में विकास शामिल है।
    • जितना संभव हो उतनी जानकारी का उपयोग करें: लॉग, ओएस संस्करण, डिवाइस पैरामीटर, कनेक्शन प्रकार (वाई-फाई/5जी) और यहां तक ​​​​कि एक विशिष्ट दूरसंचार ऑपरेटर स्थानीयकरण के लिए महत्वपूर्ण हैं।

    त्रुटि के क्षण का “फ़ोटोग्राफ़”

    आदर्श रूप से, इसे ठीक करने के लिए, आपको बग पुन: उत्पन्न होने के समय एप्लिकेशन की पूर्ण स्थिति प्राप्त करने की आवश्यकता है। इंटरेक्शन लॉग भी अत्यंत महत्वपूर्ण हैं: वे न केवल अंतिम बिंदु दिखाते हैं, बल्कि संपूर्ण उपयोगकर्ता पथ भी दिखाते हैं (विफलता से पहले कौन सी कार्रवाइयां हुईं)। इससे यह समझने में मदद मिलती है कि एक समान स्थिति को दोबारा कैसे बनाया जाए।

    भविष्य की युक्ति: यदि आप किसी जटिल मामले का सामना करते हैं, तो स्थिति दोबारा होने की स्थिति में कोड के इस अनुभाग में विस्तारित डिबग लॉगिंग जानकारी जोड़ें।

    <घंटा />

    एआई के युग में “मायावी” स्थिति की समस्या

    एलएलएम (बड़े भाषा मॉडल) का उपयोग करने वाली आधुनिक प्रणालियों में, शास्त्रीय नियतिवाद (“एक इनपुट, एक आउटपुट”) का अक्सर उल्लंघन किया जाता है। आप बिल्कुल वही इनपुट डेटा पास कर सकते हैं, लेकिन एक अलग परिणाम प्राप्त कर सकते हैं।

    ऐसा आधुनिक उत्पादन प्रणालियों की गैर-नियतिवाद के कारण होता है:

    • जीपीयू समानांतरवाद: जीपीयू फ्लोटिंग पॉइंट ऑपरेशन हमेशा सहयोगी नहीं होते हैं। थ्रेड्स के समानांतर निष्पादन के कारण, संख्याओं को जोड़ने का क्रम थोड़ा बदल सकता है, जो परिणाम को प्रभावित कर सकता है।
    • GPU तापमान और थ्रॉटलिंग: निष्पादन गति और लोड वितरण हार्डवेयर की भौतिक स्थिति पर निर्भर हो सकता है। विशाल मॉडलों में, ये सूक्ष्म अंतर जमा हो जाते हैं और आउटपुट पर एक अलग टोकन के चयन का कारण बन सकते हैं।
    • डायनामिक बैचिंग: क्लाउड में, आपका अनुरोध दूसरों के साथ संयोजित होता है। विभिन्न बैच आकार कर्नेल में गणना के गणित को बदल देते हैं।

    ऐसी परिस्थितियों में, “उसी स्थिति” को पुन: उत्पन्न करना लगभग असंभव हो जाता है। परीक्षण के लिए केवल एक सांख्यिकीय दृष्टिकोण ही आपको यहां बचा सकता है।

    <घंटा />

    जब तर्क विफल हो जाता है: स्मृति समस्याएं

    यदि आप “असुरक्षित” भाषाओं (C या C++) के साथ काम कर रहे हैं, तो बग मेमोरी करप्शन के कारण हो सकता है।

    ये सबसे गंभीर मामले हैं: एक मॉड्यूल में त्रुटि दूसरे में डेटा को “ओवरराइट” कर सकती है। यह पूरी तरह से अस्पष्ट और पृथक विफलताओं की ओर ले जाता है जिन्हें सामान्य एप्लिकेशन लॉजिक का उपयोग करके पता नहीं लगाया जा सकता है।

    वास्तुकला स्तर पर अपनी सुरक्षा कैसे करें?

    ऐसे “रहस्यमय” बग से बचने के लिए, आपको आधुनिक तरीकों का उपयोग करना चाहिए:

    • मल्टीथ्रेडेड प्रोग्रामिंग पैटर्न:स्पष्ट सिंक्रनाइज़ेशन दौड़ की स्थितियों को समाप्त कर देता है।
    • थ्रेड-सुरक्षित भाषाएँ: उपकरण जो संकलन समय पर मेमोरी सुरक्षा की गारंटी देते हैं:
      • जंग: स्वामित्व प्रणाली मेमोरी त्रुटियों को समाप्त करती है।
      • स्विफ्ट 6 कंकरेंसी:मजबूत डेटा अलगाव जांच।
      • एरलांग: अभिनेता मॉडल के माध्यम से पूर्ण प्रक्रिया अलगाव।

    सारांश

    बग को ठीक करना नया कोड लिखने के बारे में नहीं है, बल्कि यह समझने के बारे में है कि पुराना कोड कैसे काम करता है। याद रखें: आप उस शाखा को संपादित करने में समय बर्बाद कर सकते हैं जिसे प्रबंधन छूता भी नहीं है। सिस्टम की स्थिति रिकॉर्ड करें, एआई गैर-नियतिवाद के कारक को ध्यान में रखें और सुरक्षित उपकरण चुनें।

  • दस्तावेज़ीकरण आपका सबसे अच्छा मित्र क्यों है?

    (और ऐसे समाधान कैसे बनाएं जो अपडेट के बाद भी काम करते रहें)

    “ऐप्स केवल सार्वजनिक एपीआई का उपयोग कर सकते हैं और उन्हें वर्तमान शिपिंग ओएस पर चलना चाहिए।” ऐप्पल ऐप समीक्षा दिशानिर्देश

    यदि आपने कभी किसी नए ढांचे के साथ काम करना शुरू किया है और खुद को यह सोचते हुए पाया है: “अब मैं खुद ही सब कुछ समझ लूंगा, दस्तावेज पढ़ना बहुत लंबा है,” आप निश्चित रूप से अकेले नहीं हैं। हममें से कई लोगों में स्वाभाविक खोजी प्रवृत्ति होती है: पहले प्रयास करें, और उसके बाद ही निर्देशों को देखें। और यह बिल्कुल सामान्य है.

    हालाँकि, इस स्तर पर बहक जाना और ऐसी स्थिति में पहुँचना आसान हो सकता है जहाँ कोड बढ़िया काम करता है, लेकिन शायद सिस्टम की गैर-स्पष्ट विशेषताओं पर निर्भर करता है।

    कभी-कभी केवल “इसे स्वयं ही समझ लेना” पर्याप्त क्यों नहीं होता?

    फ्रेमवर्क, विशेष रूप से बंद फ्रेमवर्क, जटिल और बहुस्तरीय सिस्टम हैं। वे अक्सर आंतरिक तर्क और अनुकूलन छिपाते हैं:

    *सार्वजनिक दस्तावेज़ीकरण में वर्णित नहीं हैं;
    *इस बात की गारंटी न दें कि व्यवहार भविष्य में भी बना रहेगा;
    * नए संस्करण जारी होने के साथ बदल सकता है;
    * इसमें डेवलपर्स को ज्ञात विशेषताएं शामिल हो सकती हैं जिन्हें अभी तक ठीक नहीं किया गया है।

    जब हम सहज ज्ञान से कार्य करते हैं, तो दस्तावेजी नियमों के बजाय यादृच्छिक अवलोकनों पर वास्तुकला का निर्माण करने का जोखिम होता है। यह कोड को अपडेट के प्रति अधिक संवेदनशील बना सकता है।

    दस्तावेज़ीकरण एक सीमा नहीं है, बल्कि एक विश्वसनीय समर्थन है

    फ़्रेमवर्क डेवलपर हमारी सहायता के लिए मैनुअल बनाते हैं। दस्तावेज़ीकरण के अंतर्गत कार्य करते हुए, हमें मिलता है:

    * स्थिरता;
    * सहायता;
    * पूर्वानुमेय सिस्टम व्यवहार।

    इन सीमाओं से परे जाकर, हम अतिरिक्त जोखिम उठाते हैं, और ऐसे कोड को बनाए रखना अधिक कठिन हो जाता है।

    प्रयोग? निश्चित रूप से। लेकिन सीमाओं की समझ के साथ.
    किसी डेवलपर में जिज्ञासा होना एक महान गुण है। नई चीज़ों की खोज करना और उन्हें आज़माना नितांत आवश्यक है। लेकिन यहाँ एक छोटी सी इच्छा है:

    प्रयोग करने का सबसे आरामदायक तरीका सर्वोत्तम प्रथाओं पर भरोसा करना है।

    दस्तावेज़ीकरण एक मानचित्र है जो दिखाता है कि कौन से पथ सबसे सुरक्षित हैं और रचनाकारों द्वारा समर्थित हैं।

    एक बाहरी परिप्रेक्ष्य: विशेषज्ञ की सलाह

    हम अक्सर अनुभवी सहकर्मियों से सीखते हैं:

    *वे उपयोगी पाठ्यक्रम संचालित करते हैं,
    *सम्मेलनों में बोलें,
    *अद्भुत किताबें और ब्लॉग लिखें,
    * उनके अनूठे दृष्टिकोण को साझा करें।

    उनमें से कई सचमुच मूल्यवान अनुभव साझा करते हैं। लेकिन यह याद रखने योग्य है: यदि लेखक के दृष्टिकोण आधिकारिक दस्तावेज़ीकरण के विपरीत हैं, तो वे नाजुक हो सकते हैं।

    ऐसे “अनुभवजन्य पैटर्न” कभी-कभी:

    * केवल ढांचे के एक विशिष्ट संस्करण पर काम करें;
    * अद्यतनों के प्रति संवेदनशील;
    * असामान्य परिस्थितियों में अप्रत्याशित व्यवहार कर सकता है।

    समुदाय से सीखना महान और लाभदायक है। लेकिन किसी भी सलाह, यहां तक ​​कि सबसे आधिकारिक सलाह को भी हमेशा आधिकारिक मैनुअल के साथ सावधानीपूर्वक जांचा जाना चाहिए।

    SOLID के बारे में थोड़ा

    SOLID सिद्धांतों के तीन विचार इस दृष्टिकोण को पूरी तरह से पूरक करते हैं:

    * खुला/बंद सिद्धांत: सार्वजनिक एपीआई के माध्यम से व्यवहार को बढ़ाने का प्रयास करें और, यदि संभव हो तो, छिपे हुए कार्यान्वयन पर निर्भर न रहें।
    * लिस्कोव प्रतिस्थापन सिद्धांत: अनुबंध पर भरोसा करें, विशिष्ट कार्यान्वयन पर नहीं। अन्यथा, हुड के नीचे परिवर्तन अप्रत्याशित कठिनाइयों का कारण बन सकता है।
    * निर्भरता व्युत्क्रमण: विवरणों पर नहीं, अमूर्तताओं पर निर्भरताएँ बनाएँ।

    व्यवहार में, इसका मतलब यह है कि ढांचे के आंतरिक, गैर-दस्तावेज विवरण से बंधा होना सिस्टम को भंगुर बना देता है।
    सार्वजनिक इंटरफ़ेस और अनुबंधों के आधार पर, हमें मिलता है:

    * फ्रेमवर्क में बदलाव से कोड का बेहतर अलगाव;
    * परीक्षण में आसानी;
    * वास्तुकला की पूर्वानुमेयता और विश्वसनीयता।

    अगर कोई बग है तो क्या होगा?

    ऐसा भी होता है कि सब कुछ नियमों के अनुसार किया जाता है, लेकिन परिणाम उम्मीदों के अनुरूप नहीं होता है। ढाँचे विकसित होते रहते हैं और हमेशा सही नहीं होते। इस तरह के मामलों में:

    * एक न्यूनतम उदाहरण बनाएं जो समस्या को पुन: उत्पन्न करता हो।
    * सुनिश्चित करें कि केवल प्रलेखित एपीआई का उपयोग किया जाए।
    * बग रिपोर्ट भेजें – विकास टीम निश्चित रूप से आपके काम की सराहना करेगी और मदद करने का प्रयास करेगी।

    यदि उदाहरण वर्कअराउंड पर निर्भर करता है, तो डेवलपर्स के लिए सहायता प्रदान करना अधिक कठिन होगा।

    फ़्रेमवर्क से अधिकतम लाभ कैसे प्राप्त करें

    *दस्तावेज़ देखें.
    * लेखकों के मार्गदर्शकों और अनुशंसाओं का पालन करें।
    * वर्णित कार्यक्षमता के भीतर प्रयोग करें।
    * आधिकारिक स्रोतों के साथ इंटरनेट से सलाह की जाँच करें।
    * फ्रेमवर्क अनुबंधों का सम्मान करते हुए बग्स का स्थानीयकरण करें।

    निष्कर्ष

    फ़्रेमवर्क गेम के अपने नियमों के साथ शक्तिशाली उपकरण हैं। उनके बारे में भूलकर, हम अपने कोड को अत्यधिक असुरक्षित बनाने का जोखिम उठाते हैं। लेकिन हम सभी चाहते हैं कि बनाए गए उत्पाद लंबे समय तक बने रहें और प्रत्येक छोटे अपडेट के बाद तत्काल सुधार की आवश्यकता न हो।

    मैनुअल और दस्तावेज़ीकरण उत्कृष्ट समर्थन हैं जो वास्तव में विश्वसनीय समाधान बनाने में मदद करते हैं।

    स्रोत

    https://developer.apple.com/app-store/review/guidelines/
    https://en.wikipedia.org/wiki/SOLID
    https://en.wikipedia.org/wiki/API
    https://en.wikipedia.org/wiki/RTFM

  • Linux पर iOS के लिए C++ SDL एप्लिकेशन का निर्माण

    इस नोट में, मैं Linux पर iOS के लिए C++ SDL एप्लिकेशन बनाने, सशुल्क Apple डेवलपर सदस्यता के बिना IPA संग्रह पर हस्ताक्षर करने और जेलब्रेक के बिना macOS का उपयोग करके इसे एक साफ़ डिवाइस (iPad) पर इंस्टॉल करने की प्रक्रिया का वर्णन करूंगा।

    सबसे पहले, आइए Linux के लिए बिल्ड टूलचेन इंस्टॉल करें:
    https://github.com/tpoechtrager/cctools-port

    टूलचेन को रिपॉजिटरी से डाउनलोड करना होगा, फिर इंस्टॉलेशन पूरा करने के लिए गोडोट इंजन वेबसाइट पर दिए गए निर्देशों का पालन करें:
    https://docs.godotengine.org/ru/latest/development/compiling/cross-compiling_for_ios_on_linux.html

    फिलहाल, आपको cctools-port बनाने के लिए Xcode dmg डाउनलोड करना होगा और वहां से sdk को कॉपी करना होगा। इस चरण को macOS पर पूरा करना आसान है; बस स्थापित Xcode से आवश्यक sdk फ़ाइलों की प्रतिलिपि बनाएँ। सफल असेंबली के बाद, टर्मिनल में क्रॉस-कंपाइलर टूलचेन का पथ शामिल होगा।
    इसके बाद, आप iOS के लिए SDL एप्लिकेशन बनाना शुरू कर सकते हैं। चलिए cmake खोलें और C++ कोड बनाने के लिए आवश्यक परिवर्तन जोड़ें:

    SET(CMAKE_SYSTEM_NAME Darwin)
    SET(CMAKE_C_COMPILER arm-apple-darwin11-clang)
    SET(CMAKE_CXX_COMPILER arm-apple-darwin11-clang++)
    SET(CMAKE_LINKER arm-apple-darwin11-ld)
    
    

    अब आप सेमेक का उपयोग करके संकलन कर सकते हैं और बना सकते हैं, लेकिन क्रॉस-कंपाइलर टूलचेन में $PATH जोड़ना न भूलें:

    
    PATH=$PATH:~/Sources/cctools-port/usage_examples/ios_toolchain/target/bin
    
    

    फ्रेमवर्क और एसडीएल के साथ सही लिंकिंग के लिए, हम उन्हें सीएमके में लिखते हैं, उदाहरण के लिए गेम स्पेस जगुआर की निर्भरताएँ:

    
    target_link_libraries(
    ${FSEGT_PROJECT_NAME}
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libclang_rt.ios.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2_mixer.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2_image.a
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreServices.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/ImageIO.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/Metal.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/AVFoundation.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/GameController.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreMotion.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreGraphics.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/AudioToolbox.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreAudio.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/QuartzCore.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/OpenGLES.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/UIKit.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/Foundation.framework"
    )
    
    

    मेरे मामले में, SDL, SDL_Image, SDL_mixer लाइब्रेरीज़ को स्टैटिक लिंकिंग के लिए पहले से ही macOS पर Xcode में संकलित किया गया है; फ्रेमवर्क Xcode से कॉपी किया गया। libclang_rt.ios.a लाइब्रेरी भी जोड़ी गई है, जिसमें iOS-विशिष्ट रनटाइम कॉल शामिल हैं, उदाहरण के लिए isOSVersionAtLeast। ओपनजीएल ईएस के साथ काम करने के लिए एक मैक्रो शामिल है, जो एंड्रॉइड के समान मोबाइल संस्करण में असमर्थित कार्यों को अक्षम करता है।
    सभी निर्माण समस्याओं को हल करने के बाद, आपको हाथ के लिए असेंबल की गई बाइनरी मिलनी चाहिए। इसके बाद, आइए जेलब्रेक के बिना डिवाइस पर असेंबल बाइनरी चलाने पर विचार करें।
    MacOS पर, डेवलपर प्रोग्राम के लिए भुगतान किए बिना, Xcode इंस्टॉल करें, Apple पोर्टल पर पंजीकरण करें। Xcode में एक खाता जोड़ें -> प्राथमिकताएँ -> खाते, एक रिक्त एप्लिकेशन बनाएं और वास्तविक डिवाइस पर बनाएं। असेंबली के दौरान, डिवाइस आपके निःशुल्क डेवलपर खाते में जोड़ दिया जाएगा। असेंबली और लॉन्च के बाद, आपको संग्रह बनाने की आवश्यकता है; ऐसा करने के लिए, जेनेरिक iOS डिवाइस और उत्पाद चुनें -> पुरालेख। एक बार संग्रह बन जाने के बाद, उसमें से Embedded.mobileprovision और PkgInfo फ़ाइलें निकालें। बिल्ड लॉग से डिवाइस तक, सही हस्ताक्षर कुंजी के साथ कोडसाइन लाइन ढूंढें, एक्सटेंशन ऐप.xcent के साथ एंटाइटेलमेंट फ़ाइल का पथ, इसे कॉपी करें।
    संग्रह से .app फ़ोल्डर की प्रतिलिपि बनाएँ, संग्रह में बाइनरी को Linux में क्रॉस-कंपाइलर द्वारा संकलित एक से बदलें (उदाहरण के लिए, SpaceJaguar.app/SpaceJaguar), फिर .app में आवश्यक संसाधन जोड़ें, संग्रह से .app में PkgInfo और एम्बेडेड.mobileprovision फ़ाइलों की अखंडता की जाँच करें, यदि आवश्यक हो तो फिर से कॉपी करें। हम कोडसाइन कमांड – का उपयोग करके .app पर पुनः हस्ताक्षर करते हैं। कोडसाइन को साइन के लिए एक इनपुट कुंजी की आवश्यकता होती है, एंटाइटेलमेंट फ़ाइल का पथ (.plist एक्सटेंशन के साथ इसका नाम बदला जा सकता है)
    पुन: हस्ताक्षर करने के बाद, एक पेलोड फ़ोल्डर बनाएं, .app एक्सटेंशन वाले फ़ोल्डर को वहां ले जाएं, रूट में पेलोड के साथ एक ज़िप संग्रह बनाएं, .ipa एक्सटेंशन के साथ संग्रह का नाम बदलें। उसके बाद, Xcode में, उपकरणों की सूची खोलें और नए आईपीए को डिवाइस के अनुप्रयोगों की सूची में खींचें और छोड़ें; Apple कॉन्फिगरेटर 2 के माध्यम से इंस्टॉलेशन इस विधि के लिए काम नहीं करता है। यदि पुन: हस्ताक्षर सही ढंग से किया जाता है, तो नए बाइनरी वाला एप्लिकेशन 7-दिवसीय प्रमाणपत्र के साथ iOS डिवाइस (उदाहरण के लिए, iPad) पर इंस्टॉल किया जाएगा, यह परीक्षण अवधि के लिए पर्याप्त है।

    स्रोत

    https://github.com/tpoechtrager/cctools-port

    https://docs.godotengine.org/ru/latest/development/compiling/cross-compiling_for_ios_on_linux.html

    https://jonnyzzz.com/blog/2018/06/13/link-error-3/

    https://stackoverflow.com/questions/6896029/re-sign-ipa-iphone

    https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

  • Ubuntu MinGW CMake के अंतर्गत विंडोज़ के लिए निर्माण करें

    इस पोस्ट में मैं उबंटू पर MinGW32 टूलचेन का उपयोग करके विंडोज़ के लिए लाइब्रेरी और एप्लिकेशन बनाने की प्रक्रिया का वर्णन करूंगा।
    वाइन स्थापित करें, मिंगव:

    sudo apt-get install wine mingw-w64
    

    इसके बाद, आप पहले से ही विंडोज़ के लिए C/C++ एप्लिकेशन बना सकते हैं:

    # C
    i686-w64-mingw32-gcc helloWorld.c -o helloWorld32.exe      # 32-bit
    x86_64-w64-mingw32-gcc helloWorld.c -o helloWorld64.exe    # 64-bit
     
    # C++
    i686-w64-mingw32-g++ helloWorld.cc -o helloWorld32.exe     # 32-bit
    x86_64-w64-mingw32-g++ helloWorld.cc -o helloWorld64.exe   # 64-bit
    

    एकत्रित एक्सई को वाइन का उपयोग करके जांचा जा सकता है।
    इसके बाद, आइए CMake बिल्ड, CMakeLists.txt फ़ाइल में परिवर्तनों को देखें, बिल्ड फ़ाइल में MinGW विशिष्ट चीज़ें जोड़ते हुए:

    if (MINGW32)
    set(CMAKE_SYSTEM_NAME Windows)
    SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
    SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
    SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
    set(CMAKE_RANLIB i686-w64-mingw32-ranlib)
    endif()
    
    // для сборки shared dll
    elseif (MINGW32)
    add_library(FlameSteelEngineGameToolkit.dll SHARED ${SOURCE_FILES})
    else()
    
    // обязательно линкуем со всеми зависимостями
    if (MINGW32)
    target_link_libraries(
                            FlameSteelEngineGameToolkit.dll 
                            -static-libgcc
                            -static-libstdc++
                            SDL2 
                            SDL2_mixer 
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCore/FlameSteelCore.dll
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelBattleHorn/FlameSteelBattleHorn.dll
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCommonTraits/FlameSteelCommonTraits.dll)
    
    set_target_properties(FlameSteelEngineGameToolkit.dll PROPERTIES
            PREFIX ""
            SUFFIX ""
            LINK_FLAGS "-Wl,--add-stdcall-alias"
            POSITION_INDEPENDENT_CODE 0 # this is to avoid MinGW warning; 
            # MinGW generates position-independent-code for DLL by default
    )
    else()
    

    हम एकत्र करते हैं:

    cmake -DMINGW32=1 .
    make
    

    आप जो एकत्र कर रहे हैं उसके आधार पर आउटपुट एक डीएलएल या एक्सई होगा। एक कामकाजी उदाहरण के लिए, आप नए क्यूब-आर्ट-प्रोजेक्ट और उसके पुस्तकालयों के भंडार को देख सकते हैं:
    https://gitlab.com/demensdeum/cube-art-project

    https://gitlab.com/demensdeum/FlameSteelEngineGameToolkitFSGL

    https://gitlab.com/demensdeum/cube-art-project-bootstrap

    स्रोत
    https://arrayfire.com/cross-compile-to-windows-from-linux/

  • Ubuntu OSXCross CMake के लिए macOS एप्लिकेशन का निर्माण

    इस पोस्ट में, मैं CMake और osxcross का उपयोग करके Ubuntu बिल्ड मशीन पर macOS के लिए क्रॉस-प्लेटफ़ॉर्म C++ एप्लिकेशन बनाने का वर्णन करूंगा।
    सबसे पहले, osxcross टूलचेन स्थापित करें:
    https://github.com/tpoechtrager/osxcross
    स्थापना 3 चरणों में होती है, डाउनलोडिंग निर्भरताएँ:

    cd tools
    ./get_dependencies.sh
    

    आधिकारिक Apple वेबसाइट से XCode.xip डाउनलोड करें, फिर XCode से SDK डाउनलोड करें:

    ./gen_sdk_package_pbzx.sh /media/demensdeum/2CE62A79E62A4404/LinuxSupportStorage/xcode111.xip
    

    मुझे आशा है कि आपने अंतिम चरण में XCode लाइसेंस अनुबंध पढ़ा होगा? इसके बाद, आवश्यक उपसर्ग के साथ टूलचेन बनाएं:

    INSTALLPREFIX=/home/demensdeum/Apps/osxcross ./build.sh 
    

    अब आप पिछले चरण की उपसर्ग निर्देशिका से osxcross का उपयोग कर सकते हैं। आइए CMake के लिए एक नया बिल्ड मैक्रो जोड़ें और सभी आवश्यक चीज़ें लिखें:

    if (OSXCROSS)
    SET(CMAKE_SYSTEM_NAME Darwin)
    SET(CMAKE_C_COMPILER o64-clang)
    SET(CMAKE_CXX_COMPILER o64-clang++)
    SET(CMAKE_C_COMPILER_AR x86_64-apple-darwin19-ar)
    SET(CMAKE_CXX_COMPILER_AR x86_64-apple-darwin19-ar)
    SET(CMAKE_LINKER x86_64-apple-darwin19-ld)
    SET(ENV{OSXCROSS_MP_INC} 1)
    endif()
    

    डायनामिक लिंकिंग मेरे लिए सफल नहीं रही, इसलिए हम पुस्तकालयों को स्थिर रूप से निर्यात करते हैं:

    if (OSXCROSS)
    add_library(FlameSteelCore STATIC ${SOURCE_FILES})
    else()
    

    इसके बाद, आपको इस तथ्य का सामना करना पड़ सकता है कि आपके पास osxcross के लिए आवश्यक लाइब्रेरी नहीं है, SDL2 का उपयोग करते समय मुझे इसका सामना करना पड़ा। osxcross तैयार लाइब्रेरी पैकेजों का समर्थन करता है – मैकपोर्ट्स। उदाहरण के लिए, SDL2-मिक्सर स्थापित करना:

    osxcross-macports -v install libsdl2_mixer
    

    इसके बाद, आप हमेशा की तरह सेमेक-मेक लिंक में लाइब्रेरी/एप्लिकेशन बनाना शुरू कर सकते हैं, यदि आवश्यक हो तो लाइब्रेरी की स्टैटिक लिंकिंग निर्दिष्ट करना न भूलें।

    पुस्तकालयों की मैन्युअल असेंबली

    वर्तमान में, मुझे स्थैतिक लिंकिंग के दौरान पुस्तकालयों के गलत संग्रह की समस्या का सामना करना पड़ा है; अंतिम एप्लिकेशन बनाते समय मुझे त्रुटि प्राप्त होती है:

    file was built for archive which is not the architecture being linked (x86_64)
    

    इस टिकट के समान, हम एक वर्कअराउंड लागू करने में कामयाब रहे जिसके परिणामस्वरूप बिल्ड सही ढंग से पूरा हुआ। आइए स्टैटिक लाइब्रेरी को अनज़िप करें और ओएसएक्सक्रॉस आर्काइवर का उपयोग करके इसे नए सिरे से बनाएं:

    ar x ../libFlameSteelCore.a
    rm ../libFlameSteelCore.a
    x86_64-apple-darwin19-ar rcs ../libFlameSteelCore.a *.o
    

    इसके अलावा, जिन समस्याओं पर मैं व्यक्तिगत रूप से विचार करता हूं उनमें से एक सीधे उबंटू पर मैकओएस अनुप्रयोगों को चलाने की क्षमता की कमी है (कम से कम कार्यक्षमता के हिस्से के साथ)। बेशक, एक परियोजना है darling, लेकिन समर्थन अभी भी वांछित होने के लिए बहुत कुछ बाकी है।

    स्रोत

    https://github.com/tpoechtrager/osxcross

  • स्थानीय छवि निर्माण: कॉम्फीयूआई और फ्लक्स मॉडल

    आजकल, आपको क्लाउड सेवाओं पर निर्भर रहने की ज़रूरत नहीं है: आप पूरी तरह से अपने हार्डवेयर पर उच्च-गुणवत्ता वाली छवियां उत्पन्न कर सकते हैं। इस पोस्ट में, मैं वर्णन करूंगा कि ComfyUI का उपयोग करके आपके कंप्यूटर पर आधुनिक FLUX मॉडल को स्थानीय रूप से कैसे चलाया जाए।

    ComfyUI नोड-आधारित आर्किटेक्चर का उपयोग करता है। यह आपको इसकी अनुमति देता है:
    – पीढ़ी के हर चरण पर पूरी तरह से नियंत्रण रखें।
    – आसानी से तैयार “वर्कफ़्लोज़” साझा करें

    FLUX एक बड़ा मॉडल है, इसलिए हार्डवेयर आवश्यकताएँ SD 1.5 या SDXL से अधिक हैं:
    – वीडियो कार्ड (जीपीयू): 12 जीबी वीआरएएम या उच्चतर (आरामदायक काम के लिए) के साथ एनवीडिया आरटीएक्स। यदि आपके पास 8 जीबी या उससे कम है, तो आपको परिमाणित संस्करण (जीजीयूएफ या एनएफ4) का उपयोग करना होगा।
    – रैंडम एक्सेस मेमोरी (रैम): न्यूनतम 16 जीबी (अधिमानतः 32 जीबी और अधिक)।
    – डिस्क स्थान: मॉडलों और घटकों के लिए लगभग 20-50 जीबी।

    FLUX शुरू करने का सबसे आसान तरीका तैयार टेम्पलेट का उपयोग करना है। बस वर्कफ़्लो विंडो में फ़्लक्स टेक्स्ट टू इमेज खोजें और इंस्टॉल करें।

    `टेक्स्ट टू इमेज (फ्लक्स.1 डेव)` नोड में अंग्रेजी में एक संकेत लिखें, रिज़ॉल्यूशन का चयन करें (फ्लक्स 1024×1024 और इससे भी अधिक के साथ अच्छा काम करता है) और RUN दबाएँ।

    पहली पीढ़ी में समय लग सकता है क्योंकि मॉडलों को वीडियो कार्ड मेमोरी में लोड किया जाएगा।

    https://github.com/comfyanonymous/ComfyUI

  • स्थानीय वाइब कोडिंग: एलएम स्टूडियो, वीएस कोड और जारी रखें

    यदि आपको कोड लिखने में मदद करने के लिए तंत्रिका नेटवर्क (तथाकथित वाइब कोडिंग) का उपयोग करने की इच्छा है, और आपके पास एक काफी शक्तिशाली कंप्यूटर है, उदाहरण के लिए एनवीडिया आरटीएक्स वीडियो कार्ड के साथ, तो आप पूरे वातावरण को अपनी मशीन पर बिल्कुल मुफ्त में तैनात कर सकते हैं। यह सशुल्क सदस्यता के साथ समस्याओं का समाधान करता है और आपको एनडीए के तहत परियोजनाओं के साथ सुरक्षित रूप से काम करने की अनुमति देता है, क्योंकि आपका कोड कहीं भी नहीं भेजा जाता है। इस पोस्ट में मैं बताऊंगा कि एलएम स्टूडियो, वीएस कोड और कंटिन्यू एक्सटेंशन के स्थानीय बंडल को कैसे इकट्ठा किया जाए।

    स्थानीय वाइब कोडिंग के लिए उपकरण

    आरामदायक कार्य के लिए हमें तीन मुख्य घटकों की आवश्यकता है:
    – एलएम स्टूडियो: स्थानीय एलएलएम डाउनलोड करने और चलाने के लिए एक सुविधाजनक एप्लिकेशन। यह GGUF मॉडल के साथ काम करने की सभी जटिलताओं को स्वीकार करता है और OpenAI API के साथ संगत एक स्थानीय सर्वर स्थापित करता है।
    – वीएस कोड: एक लोकप्रिय और परिचित कोड संपादक।
    – जारी रखें: वीएस कोड के लिए एक्सटेंशन जो तंत्रिका नेटवर्क को सीधे कार्य वातावरण में एकीकृत करता है। आपको चैट करने, रीफैक्टरिंग के लिए कोड हाइलाइट करने और स्वत: पूर्ण का समर्थन करने की अनुमति देता है।

    हार्डवेयर आवश्यकताएँ

    स्थानीय भाषा मॉडल स्मृति गहन हैं:
    – वीडियो कार्ड (जीपीयू): 8 जीबी वीआरएएम या उच्चतर के साथ एनवीडिया (7-8 बिलियन पैरामीटर वाले मॉडल के साथ आरामदायक काम के लिए)। भारी मॉडलों के लिए 16 जीबी वीआरएएम की आवश्यकता होगी।
    – डिस्क स्थान: विभिन्न डाउनलोड किए गए मॉडलों को संग्रहीत करने के लिए लगभग 500 जीबी।

    लिंक को कॉन्फ़िगर करना

    सेटअप प्रक्रिया काफी सरल है और टर्मिनल में जटिल हेरफेर की आवश्यकता नहीं है:
    1. एलएम स्टूडियो डाउनलोड और इंस्टॉल करें। क्वेन कोडर या gemma3:12b जैसे हल्के मॉडल को खोजने के लिए अंतर्निहित खोज का उपयोग करें।
    2. एलएम स्टूडियो में, स्थानीय सर्वर टैब पर जाएं और स्टार्ट सर्वर पर क्लिक करें। डिफ़ॉल्ट रूप से यह `http://localhost:1234/v1` पर प्रारंभ होगा।
    3. वीएस कोड खोलें और प्लगइन स्टोर से जारी रखें एक्सटेंशन इंस्टॉल करें।
    4. जारी रखें कॉन्फ़िगरेशन फ़ाइल खोलें और `ओपनाई` प्रदाता और एलएम स्टूडियो से अपने स्थानीय सर्वर का पता निर्दिष्ट करते हुए एक नया मॉडल जोड़ें।

    फिर आप जारी रखें साइडबार में सीधे अपने स्थानीय एलएलएम के साथ संवाद कर सकते हैं, अपने कोड के बारे में प्रश्न पूछ सकते हैं और नए घटक तैयार कर सकते हैं।

    यह क्यों काम करता है?

    जैसा कि मैंने पहले लिखा था, एलएलएम फ्लैट संरचना और WET (हर चीज़ दो बार लिखें) कोड के साथ बेहतर करते हैं। जब जटिल आर्किटेक्चर को डिजाइन करने की बात आती है तो स्थानीय पैरामीटर मॉडल GPT-4 जैसे दिग्गजों से कमतर हो सकते हैं, लेकिन वे बॉयलरप्लेट कोड उत्पन्न करने, सरल कार्यों को फिर से तैयार करने और तेजी से प्रोटोटाइप करने में सक्षम हैं।

    इसके अतिरिक्त, स्थानीय वाइब कोडिंग के साथ, आपका कोड मशीन को कभी नहीं छोड़ता है। यह इस संयोजन को कॉर्पोरेट विकास और संवेदनशील डेटा के साथ काम करने के लिए आदर्श बनाता है।

    आउटपुट

    स्थानीय तंत्रिका नेटवर्क एक प्रोग्रामर को पूरी तरह से बदलने या एक जटिल प्रणाली को डिजाइन करने में सक्षम नहीं हैं। हालाँकि, एलएम स्टूडियो + वीएस कोड + कंटिन्यू का संयोजन क्लाउड सेवाओं से स्वतंत्रता प्रदान करता है और गोपनीयता बनाए रखता है। यदि आप छोटे मॉडलों की सीमाओं को स्वीकार करने और परियोजना वास्तुकला को स्वतंत्र रूप से नियंत्रित करने के इच्छुक हैं तो यह नियमित कार्यों के लिए पूरी तरह से काम करने वाला सहायक उपकरण है।

    लिंक

    https://code.visualstudio.com/
    https://lmstudio.ai/
    https://continue.dev/

    स्रोत

    https://youtu.be/IqqCwhG46jY
    https://www.youtube.com/watch?v=7AImkA96mE8

  • स्थानीय वीडियो पीढ़ी: कॉम्फ़ीयूआई और एलटीएक्स-2.3

    पहले, तंत्रिका नेटवर्क का उपयोग करके वीडियो बनाना रनवे या लूमा जैसी क्लाउड सेवाओं का विशेषाधिकार था। आज, यदि आपके पास आधुनिक एनवीडिया ग्राफिक्स कार्ड है, तो आप सीधे अपने कंप्यूटर पर उच्च गुणवत्ता वाले वीडियो बना सकते हैं। इस पोस्ट में, मैं आपको बताऊंगा कि ComfyUI और प्रभावी LTX-2.3 मॉडल का उपयोग करके स्थानीय वीडियो पीढ़ी कैसे सेट की जाए।

    वीडियो निर्माण के लिए उपकरण

    काम के लिए हमें आवश्यकता होगी:
    – ComfyUI: नोड-आधारित आर्किटेक्चर के साथ एक शक्तिशाली इंटरफ़ेस जो आपको पीढ़ी प्रक्रिया को लचीले ढंग से अनुकूलित करने की अनुमति देता है।
    – LTX-2.3: लाइटरिक्स का एक आधुनिक मॉडल, जो अपेक्षाकृत मध्यम वीडियो मेमोरी आवश्यकताओं के साथ सहज और विस्तृत वीडियो बनाने के लिए अनुकूलित है।

    हार्डवेयर आवश्यकताएँ

    छवियों के साथ काम करने की तुलना में वीडियो बनाना कहीं अधिक संसाधन-गहन प्रक्रिया है:
    – वीडियो कार्ड (जीपीयू): 8 जीबी वीआरएएम के साथ एनवीडिया आरटीएक्स 768×512 के रिज़ॉल्यूशन के लिए आवश्यक न्यूनतम है। आरामदायक संचालन और उच्च रिज़ॉल्यूशन के लिए, 16-24 जीबी वीआरएएम होना अत्यधिक वांछनीय है।
    – रैंडम एक्सेस मेमोरी (रैम): न्यूनतम 32 जीबी। डाउनलोड करते समय वीडियो मॉडल और VAE बहुत अधिक जगह लेते हैं।
    – डिस्क स्थान: मॉडल और संबंधित घटकों के लिए लगभग 500 जीबी।

    सेटअप और लॉन्च

    ComfyUI में LTX-2.3 लॉन्च करने की प्रक्रिया इस प्रकार है:
    1. ComfyUI अपडेट करें: मॉडल अपेक्षाकृत नया है, इसलिए सुनिश्चित करें कि आपके पास इंटरफ़ेस का नवीनतम संस्करण स्थापित है।
    2. वर्कफ़्लो स्थापित करें: सबसे आसान तरीका LTX वीडियो के लिए तैयार JSON टेम्पलेट ढूंढना है। वीडियो अव्यक्त स्थान के साथ काम करने के लिए मॉडल को विशिष्ट नोड्स की आवश्यकता होती है।
    3. संकेत और पैरामीटर: अंग्रेजी में दृश्य का विवरण दर्ज करें। ध्यान दें कि LTX-2.3 गति को अच्छी तरह से समझता है (उदाहरण के लिए “कैमरा चारों ओर घूमता है”, “तेज गति”)।

    LTX-2.3 क्यों चुनें?

    LTX-2.3 उल्लेखनीय है क्योंकि यह मालिकाना क्लाउड सेवाओं के बराबर परिणाम देता है, लेकिन स्थानीय रूप से चलता है। यह आपको देता है:
    – पूर्ण गोपनीयता: आपके संकेत और जेनरेट किए गए वीडियो अन्य लोगों के सर्वर पर नहीं जाते हैं।
    – नियंत्रण: आप प्रत्येक प्रयास के लिए भुगतान किए बिना फ्रेम दर (एफपीएस), रिज़ॉल्यूशन और शीघ्र शक्ति के साथ प्रयोग कर सकते हैं।

    स्थानीय वीडियो पीढ़ी अभी भी सक्रिय विकास में है, और LTX-2.3 “होम हॉलीवुड” की दुनिया में एक शानदार प्रविष्टि है।

    लिंक

    https://github.com/comfyanonymous/ComfyUI
    https://huggingface.co/Lightricks/LTX-Video

  • स्थानीय संगीत पीढ़ी: कॉम्फीयूआई और एसीई-स्टेप-1.5 मॉडल

    आजकल, आपको सामग्री बनाने के लिए क्लाउड सेवाओं पर निर्भर रहने की ज़रूरत नहीं है: आप पूरी तरह से अपने हार्डवेयर पर उच्च गुणवत्ता वाला संगीत उत्पन्न कर सकते हैं। इस पोस्ट में, मैं वर्णन करूंगा कि ComfyUI का उपयोग करके आपके कंप्यूटर पर आधुनिक ACE-Step-1.5 मॉडल को स्थानीय रूप से कैसे चलाया जाए।

    ComfyUI नोड-आधारित आर्किटेक्चर का उपयोग करता है। यह आपको इसकी अनुमति देता है:
    – ऑडियो जेनरेशन के हर चरण को पूरी तरह से नियंत्रित करें।
    – आसानी से तैयार “वर्कफ़्लोज़” साझा करें।

    एसीई-स्टेप-1.5 संगीत निर्माण के लिए एक उन्नत मॉडल है जिसके लिए महत्वपूर्ण कम्प्यूटेशनल संसाधनों की आवश्यकता होती है। हार्डवेयर आवश्यकताएँ कई सरल सिंथेसाइज़र की तुलना में अधिक हैं:
    – वीडियो कार्ड (जीपीयू): उच्च गुणवत्ता पर आरामदायक काम के लिए 8 जीबी वीआरएएम या उच्चतर (12 जीबी+ अनुशंसित) के साथ एनवीडिया आरटीएक्स।
    – रैंडम एक्सेस मेमोरी (रैम): न्यूनतम 16 जीबी (अधिमानतः 32 जीबी और अधिक)।
    – प्रोसेसर (सीपीयू): AVX/CUDA कंप्यूटिंग के लिए अच्छे समर्थन के साथ आधुनिक मल्टी-कोर प्रोसेसर।
    – डिस्क स्थान: मॉडलों और घटकों के लिए लगभग 20-50 जीबी।

    ACE-Step-1.5 को चलाने का सबसे आसान तरीका तैयार ऑडियो जेनरेशन टेम्पलेट का उपयोग करना है। बस वर्कफ़्लो विंडो में संगीत टेक्स्ट से ऑडियो खोजें और इंस्टॉल करें।

    `प्रॉम्प्ट इनपुट` नोड में शैली और मनोदशा का वर्णन करने वाला एक संकेत लिखें (उदाहरण के लिए, “भारी बास के साथ उत्थान सिंथवेव ट्रैक”)। वांछित अवधि निर्दिष्ट करें और RUN दबाएँ।
    पहली पीढ़ी में समय लग सकता है, क्योंकि मॉडलों को वीडियो कार्ड मेमोरी में लोड किया जाएगा और जटिल ध्वनिक पैटर्न को संसाधित किया जाएगा।

    https://github.com/comfyanonymous/ComfyUI
    https://www.youtube.com/watch?v=UAlLD5fS7-c

  • ओलामा का उपयोग करते हुए स्थानीय तंत्रिका नेटवर्क

    यदि आपको चैटजीपीटी जैसा कुछ लॉन्च करने की इच्छा थी और आपके पास एक काफी शक्तिशाली कंप्यूटर है, उदाहरण के लिए एनवीडिया आरटीएक्स वीडियो कार्ड के साथ, तो आप ओलामा प्रोजेक्ट चला सकते हैं, जो आपको अपने स्थानीय मशीन पर तैयार एलएलएम मॉडल में से एक का बिल्कुल मुफ्त उपयोग करने की अनुमति देगा। ओलामा चैटजीपीटी के तरीके से एलएलएम मॉडल के साथ संवाद करने की क्षमता प्रदान करता है; नवीनतम संस्करण में, छवियों को पढ़ने और आउटपुट डेटा को json प्रारूप में प्रारूपित करने की क्षमता की भी घोषणा की गई है।

    मैंने प्रोजेक्ट को Apple M2 प्रोसेसर के साथ मैकबुक पर भी चलाया, और मुझे पता है कि AMD के वीडियो कार्ड के नवीनतम मॉडल समर्थित हैं।

    MacOS पर इंस्टॉल करने के लिए, ollama वेबसाइट पर जाएँ:
    https://ollama.com/download/mac

    “MacOS के लिए डाउनलोड करें” पर क्लिक करें, आप ollama-darwin.zip फॉर्म का एक संग्रह डाउनलोड करेंगे, संग्रह के अंदर Ollama.app होगा जिसे “एप्लिकेशन” में कॉपी करने की आवश्यकता है। इसके बाद, Ollama.app लॉन्च करें, सबसे अधिक संभावना है कि इंस्टॉलेशन प्रक्रिया पहले लॉन्च पर होगी। उसके बाद, ट्रे में आपने ओलामा आइकन देखा, ट्रे घड़ी के ठीक बगल में शीर्ष पर है।

    उसके बाद, एक नियमित macOS टर्मिनल लॉन्च करें, और किसी भी ओलामा मॉडल को डाउनलोड, इंस्टॉल और चलाने के लिए कमांड टाइप करें। उपलब्ध मॉडलों, विवरणों और उनकी विशेषताओं की सूची ओलामा वेबसाइट पर देखी जा सकती है:
    https://ollama.com/search

    यदि लॉन्च के समय यह आपके वीडियो कार्ड में फिट नहीं बैठता है तो सबसे कम पैरामीटर वाला मॉडल चुनें।

    उदाहरण के लिए, llama3.1:नवीनतम मॉडल लॉन्च करने का आदेश:

    ollama run llama3.1:latest
    

    विंडोज़ और लिनक्स के लिए इंस्टॉलेशन आम तौर पर समान है, एक मामले में एक ओलामा इंस्टॉलर होगा और पावरशेल के माध्यम से इसके साथ आगे काम किया जाएगा।
    लिनक्स के लिए, इंस्टॉलेशन एक स्क्रिप्ट का उपयोग करके किया जाता है, लेकिन मैं आपके विशिष्ट पैकेज मैनेजर के संस्करण का उपयोग करने की सलाह देता हूं। लिनक्स पर, ओलामा को नियमित बैश टर्मिनल के माध्यम से भी लॉन्च किया जा सकता है।

    सूत्रों का कहना है
    https://www.youtube.com/watch?v=Wjrdr0NU4Sk
    https://ollama.com

  • ffmpeg का उपयोग करके वीडियो स्थिरीकरण

    यदि आप वीडियो को स्थिर करना चाहते हैं और कैमरा शेक को दूर करना चाहते हैं, तो `ffmpeg` टूल एक शक्तिशाली समाधान प्रदान करता है। अंतर्निहित फ़िल्टर `vidstabdetect` और `vidstabtransform` के लिए धन्यवाद, आप जटिल वीडियो संपादकों का उपयोग किए बिना पेशेवर परिणाम प्राप्त कर सकते हैं।

    काम के लिए तैयारी

    शुरू करने से पहले, सुनिश्चित करें कि आपका `ffmpeg` `vidstab` लाइब्रेरी का समर्थन करता है। लिनक्स पर आप इसे कमांड से जांच सकते हैं:

    bash  
    ffmpeg -filters | grep vidstab  
    

    यदि लाइब्रेरी स्थापित नहीं है, तो आप इसे जोड़ सकते हैं:

    sudo apt install ffmpeg libvidstab-dev  
    

    ब्रू के माध्यम से macOS के लिए इंस्टालेशन:

    brew install libvidstab
    brew install ffmpeg
    

    अब चलिए प्रक्रिया पर आगे बढ़ते हैं।

    चरण 1: गति विश्लेषण

    सबसे पहले आपको वीडियो की गति का विश्लेषण करना होगा और स्थिरीकरण मापदंडों के साथ एक फ़ाइल बनानी होगी।

    ffmpeg -i input.mp4 -vf vidstabdetect=shakiness=10:accuracy=15 transfile=transforms.trf -f null -  
    

    पैरामीटर:

    अस्थिरता: वीडियो शेक स्तर (डिफ़ॉल्ट 5, अधिक जटिल मामलों के लिए 10 तक बढ़ाया जा सकता है)।
    सटीकता: विश्लेषण सटीकता (डिफ़ॉल्ट 15)।
    ट्रांसफ़ाइल: गति मापदंडों को सहेजने के लिए फ़ाइल का नाम।

    चरण 2: स्थिरीकरण लागू करें

    अब आप परिवर्तन फ़ाइल का उपयोग करके स्थिरीकरण लागू कर सकते हैं:

    ffmpeg -i input.mp4 -vf vidstabtransform=input=transforms.trf:zoom=5 output.mp4
    

    पैरामीटर:

    इनपुट: परिवर्तन मापदंडों के साथ फ़ाइल को इंगित करता है (पहले चरण में बनाया गया)।
    ज़ूम: काले किनारों को हटाने के लिए ज़ूम कारक (उदाहरण के लिए 5 – कलाकृतियों को हटाए जाने तक ऑटो ज़ूम)।

  • ट्यूरिंग कंप्यूटिंग मशीनें

    मैं आपके ध्यान में 1936 से एलन ट्यूरिंग के लेख “ऑन कंप्यूटेबल नंबर्स विद एन एप्लीकेशन टू द प्रॉब्लम ऑफ रिजॉल्यूशन” के पहले पन्नों का अनुवाद प्रस्तुत करता हूं। पहले अध्याय में कंप्यूटर का विवरण है, जो बाद में आधुनिक कंप्यूटिंग का आधार बन गया।

    लेख और स्पष्टीकरण का पूरा अनुवाद अमेरिकी लोकप्रिय चार्ल्स पेटज़ोल्ड की पुस्तक में पढ़ा जा सकता है, जिसका शीर्षक है “रीडिंग ट्यूरिंग: ए जर्नी थ्रू ट्यूरिंग हिस्टोरिकल आर्टिकल ऑन कम्प्यूटेबिलिटी एंड ट्यूरिंग मशीन्स” (आईएसबीएन 978-5-97060-231-7, 978-0-470-22905-7)

    मूल लेख:
    https://www.astro.puc.cl/~rparra/tools/PAPERS/turing_1936.pdf

    समाधान समस्या के अनुप्रयोग के साथ गणनीय संख्याओं पर

    ए. एम. ट्यूरिंग

    [28 मई 1936 को प्राप्त – 12 नवंबर 1936 को पढ़ें]

    “गणना योग्य” संख्याओं को संक्षेप में वास्तविक संख्याओं के रूप में वर्णित किया जा सकता है जिनकी दशमलव भिन्नों के रूप में अभिव्यक्तियाँ सीमित संख्या में गणना योग्य होती हैं। हालाँकि पहली नज़र में यह लेख संख्याओं को गणना योग्य मानता है, एक पूर्णांक चर, एक वास्तविक चर, एक गणना योग्य चर, गणना योग्य विधेय और इसी तरह के गणना योग्य कार्यों को परिभाषित करना और उनका पता लगाना लगभग उतना ही आसान है। हालाँकि, इन गणना योग्य वस्तुओं से जुड़ी मूलभूत समस्याएं प्रत्येक मामले में समान हैं। विस्तृत विचार के लिए, मैंने गणना योग्य संख्याओं को एक गणना योग्य वस्तु के रूप में चुना क्योंकि उन पर विचार करने की विधि सबसे कम बोझिल है। मुझे आशा है कि मैं जल्द ही गणना योग्य संख्याओं और गणना योग्य कार्यों आदि के संबंध का वर्णन कर सकूंगा। साथ ही, गणना योग्य संख्याओं के रूप में व्यक्त वास्तविक चर के कार्यों के सिद्धांत के क्षेत्र में अनुसंधान किया जाएगा। मेरी परिभाषा के अनुसार, एक वास्तविक संख्या गणना योग्य होती है यदि उसका दशमलव प्रतिनिधित्व किसी मशीन द्वारा लिखा जा सकता है।

    पैराग्राफ 9 और 10 में मैं यह दिखाने के लिए कुछ तर्क देता हूं कि गणना योग्य संख्याओं में वे सभी संख्याएं शामिल होती हैं जिन्हें स्वाभाविक रूप से गणना योग्य माना जाता है। विशेष रूप से, मैं दिखाता हूँ कि संख्याओं के कुछ बड़े वर्ग गणना योग्य हैं। इनमें शामिल हैं, उदाहरण के लिए, सभी बीजगणितीय संख्याओं के वास्तविक भाग, बेसेल फ़ंक्शंस के शून्य के वास्तविक भाग, संख्याएँ π, ई और अन्य। हालाँकि, गणना योग्य संख्याओं में सभी निश्चित संख्याएँ शामिल नहीं होती हैं, जैसा कि एक निश्चित संख्या के निम्नलिखित उदाहरण से प्रमाणित होता है जो गणना योग्य नहीं है।

    यद्यपि गणना योग्य संख्याओं का वर्ग बहुत बड़ा है और कई मामलों में वास्तविक संख्याओं के वर्ग के समान है, फिर भी यह गणना योग्य है। §8 में मैं कुछ ऐसे तर्कों पर विचार करता हूं जो इसके विपरीत तर्क देते प्रतीत होंगे। जब इनमें से किसी एक तर्क को सही ढंग से लागू किया जाता है, तो ऐसे निष्कर्ष निकाले जाते हैं जो पहली नज़र में गोडेल* के समान होते हैं। इन परिणामों का अत्यंत महत्वपूर्ण अनुप्रयोग है। विशेष रूप से, जैसा कि नीचे दिखाया गया है (§11), समाधान समस्या का कोई समाधान नहीं हो सकता।

    हाल के एक लेख में, अलोंजो चर्च ने “प्रभावी गणनाशीलता” का विचार पेश किया, जो “कम्प्यूटेबिलिटी” के मेरे विचार के बराबर है लेकिन इसकी एक पूरी तरह से अलग परिभाषा है। समाधान की समस्या के संबंध में चर्च भी इसी तरह के निष्कर्ष पर पहुंचता है। “कम्प्यूटेबिलिटी” और “प्रभावी रूप से गणना योग्य” की समानता का प्रमाण इस लेख के परिशिष्ट में प्रस्तुत किया गया है।

    1. कंप्यूटर

    हम पहले ही कह चुके हैं कि गणनीय संख्याएँ वे संख्याएँ हैं जिनके दशमलव स्थान परिमित साधनों द्वारा गिनने योग्य होते हैं। यहां एक स्पष्ट परिभाषा की आवश्यकता है। जब तक हम §9 तक नहीं पहुंच जाते, यह लेख यहां दी गई परिभाषाओं को सही ठहराने का कोई वास्तविक प्रयास नहीं करेगा। अभी के लिए, मैं सिर्फ यह नोट करूंगा कि (इसके लिए) तार्किक तर्क यह है कि मानव स्मृति, आवश्यकता से, सीमित है।

    आइए वास्तविक संख्या की गणना करने की प्रक्रिया में एक व्यक्ति की तुलना एक ऐसी मशीन से करें जो केवल सीमित संख्या में शर्तों q1, q2, …, qR को पूरा करने में सक्षम है; आइए इन स्थितियों को “एम-कॉन्फिगरेशन” कहें। यह (अर्थात, इस प्रकार परिभाषित) मशीन एक “टेप” (कागज के अनुरूप) से सुसज्जित है। मशीन से गुजरने वाली यह बेल्ट खंडों में विभाजित है। आइए उन्हें “वर्ग” कहें। ऐसे प्रत्येक वर्ग में किसी न किसी प्रकार का “प्रतीक” हो सकता है। किसी भी क्षण, केवल एक ही ऐसा वर्ग होता है, मान लीजिए कि वां, जिसमें वह प्रतीक होता है जो “इस मशीन में है।” आइए ऐसे वर्ग को “स्कैन किया हुआ प्रतीक” कहें। एक “स्कैन किया हुआ पात्र” एकमात्र ऐसा पात्र है जिसके बारे में मशीन को, ऐसा कहा जा सकता है, “सीधे पता” होता है। हालाँकि, अपने एम-कॉन्फ़िगरेशन को बदलकर, मशीन उन कुछ पात्रों को प्रभावी ढंग से याद रख सकती है जिन्हें उसने पहले “देखा” (स्कैन किया है)। किसी भी क्षण मशीन का संभावित व्यवहार एम-कॉन्फ़िगरेशन क्यूएन और स्कैन किए गए प्रतीक*** द्वारा निर्धारित किया जाता है। आइए प्रतीकों की इस जोड़ी को qn, “कॉन्फ़िगरेशन” कहते हैं। इस प्रकार निर्दिष्ट कॉन्फ़िगरेशन किसी दी गई मशीन के संभावित व्यवहार को निर्धारित करता है। इनमें से कुछ कॉन्फ़िगरेशन में, जिनमें स्कैन किया गया वर्ग खाली है (यानी, कोई वर्ण नहीं है), मशीन स्कैन किए गए वर्ग पर एक नया वर्ण लिखती है, और इनमें से अन्य कॉन्फ़िगरेशन में यह स्कैन किए गए वर्ण को मिटा देती है। यह मशीन दूसरे वर्ग को स्कैन करने के लिए भी जाने में सक्षम है, लेकिन इस तरह यह केवल दाएं या बाएं बगल वाले वर्ग तक ही जा सकती है। इनमें से किसी भी ऑपरेशन के अलावा, मशीन का एम-कॉन्फ़िगरेशन बदला जा सकता है। इस मामले में, कुछ लिखित वर्ण अंकों का एक क्रम बनाएंगे, जो गणना की जा रही वास्तविक संख्या का दशमलव भाग है। उनमें से बाकी “स्मृति की सहायता” के लिए गलत चिह्नों से अधिक कुछ नहीं होंगे। इस स्थिति में, केवल उपर्युक्त गलत चिह्नों को ही मिटाया जा सकता है।

    मेरा दावा है कि यहां जिन ऑपरेशनों पर विचार किया गया है उनमें वे सभी ऑपरेशन शामिल हैं जिनका उपयोग गणना में किया जाता है। मशीन सिद्धांत की समझ रखने वाले पाठक के लिए इस कथन का तर्क समझना आसान है। इसलिए, अगले भाग में मैं “मशीन”, “टेप”, “स्कैन” आदि शब्दों के अर्थ की समझ के आधार पर संबंधित सिद्धांत को विकसित करना जारी रखूंगा।

    *गोडेल “प्रिंसिपिया गणित के औपचारिक रूप से अनिर्णीत वाक्यों पर (व्हाइटहेड और रसेल द्वारा 1910, 1912 और 1913 में प्रकाशित) और संबंधित सिस्टम, भाग I,” गणित का जर्नल। भौतिकी, जर्मन में मासिक बुलेटिन संख्या 38 (1931 के लिए, पृ. 173-198)।
    ** अलोंजो चर्च, “प्राथमिक संख्या सिद्धांत में एक अनिर्णीत समस्या,” गणित के अमेरिकी जे., नंबर 58 (1936), पीपी. 345-363।
    *** अलोंजो चर्च, “रिज़ॉल्यूशन की समस्या पर एक नोट,” सिम्बोलिक लॉजिक के जे., नंबर 1 (1936), पीपी. 40-41

  • डोंकी हिल्स

    डोनकी हिल्स एक प्रथम-व्यक्ति हॉरर-कॉमेडी साहसिक है जो खिलाड़ियों को एक रहस्यमय कहानी के माध्यम से ले जाती है जो अप्रत्याशित हास्य के साथ रहस्य को जोड़ती है।
    मुख्य पात्र जेम्स अपनी ऑनलाइन मित्र मारिया की तलाश में जाता है, जिसका उससे संबंध अचानक टूट गया। एकमात्र सबूत नोवोसिबिर्स्क क्षेत्र के सुदूर गांव डोंकी हिल्स की ओर इशारा करने वाली एक यादृच्छिक तस्वीर है। सच्चाई की तह तक जाने की इच्छा से प्रेरित होकर, जेम्स ने मारिया के लापता होने की सभी परिस्थितियों का पता लगाने के लिए अपनी जांच शुरू की।

    गेम स्टीम पर उपलब्ध है:
    https://store.steampowered.com/app/3476390/Donki_Hills/

  • चिनाई एआर

    मेसनरी एआर एक स्थान-आधारित मल्टीप्लेयर संवर्धित वास्तविकता (एआर) गेम है जो आपको गुप्त समाजों की दुनिया में डुबो देता है। अपने शहर की सड़कों का अन्वेषण करें, ज्ञान की मेसोनिक पुस्तकें एकत्र करें, अपने स्वयं के लॉज खोजें और वास्तविक दुनिया के मानचित्र पर प्रभाव के लिए प्रतिस्पर्धा करें।

    मुख्य विशेषताएं

    • जियोलोकेशन-आधारित गेमप्ले:गुप्त पुस्तकों और संसाधनों को खोजने के लिए अपने डिवाइस के जीपीएस का उपयोग करके वास्तविक दुनिया में घूमें।
    • ऑटोवॉक मोड:यदि जीपीएस एक्सेस सीमित है, तो आप शुरुआती बिंदु के रूप में दुनिया की राजधानियों में से किसी एक को चुनकर ऑटोवॉक मोड शुरू कर सकते हैं।
    • लॉज निर्माण: वास्तविक मानचित्र पर मेसोनिक लॉज स्थापित करें और अपने ऑर्डर के प्रभाव का विस्तार करें।
    • इन-गेम अर्थव्यवस्था: इन-गेम मुद्रा (एमओएस) अर्जित करें, अपने क्षेत्रों का विकास करें और दोस्तों के साथ रेफरल लिंक साझा करें।
    • क्रॉस-प्लेटफॉर्म: थ्री.जेएस पर आधारित रेंडरिंग के साथ फ्लेम स्टील इंजन 2 गेम इंजन की बदौलत गेम सीधे मोबाइल डिवाइस और पीसी पर वेब ब्राउज़र में चलता है।

    खेल:
    https://demensdeum.com/games/masonry-ar/client/

    गिटहब:
    https://github.com/zefir1990/Masonry-AR

  • टेफ्लचर


    Teflecher एक तेज़, इंटरैक्टिव, क्रॉस-प्लेटफ़ॉर्म क्विज़ एप्लिकेशन है जो कोटलिन मल्टीप्लेटफ़ॉर्म (KMP) और मल्टीप्लेटफ़ॉर्म के शीर्ष पर बनाया गया है। यह उपयोगकर्ताओं को स्थानीय JSON फ़ाइलों या दूरस्थ URL से सहजता से क्विज़ लोड करने, बहुविकल्पीय प्रश्नों का उत्तर देने, सही उत्तरों पर त्वरित प्रतिक्रिया देखने और उनके परिणामों को ट्रैक करने की अनुमति देता है।

    वेब:
    https://demensdeum.com/software/teflecher/

    गिटहब:
    https://github.com/zefir1990/teflecher

    इसके अलावा आयनिक + कैपेसिटर प्रौद्योगिकियों पर आधारित टेफ्लचर संपादक प्रारूप में एक प्रश्नोत्तरी संपादक

    वेब:
    https://demensdeum.com/software/teflecher-editor/

    गिटहब:
    https://github.com/zefir1990/teflecher-editor

  • भूत संपर्क


    घोस्ट कॉन्टैक्ट्स एक सरल वेब एप्लिकेशन है जिसे मानक सिस्टम एपीआई और फोन बुक्स से आपके संपर्कों को छिपाने के लिए डिज़ाइन किया गया है। सभी जानकारी विशेष रूप से आपके ब्राउज़र में स्थानीय रूप से संग्रहीत की जाती है और बाहरी सर्वर पर स्थानांतरित नहीं की जाती है।

    मुख्य विशेषताएं

    • सिस्टम एपीआई से छिपाना:आपके संपर्क मानक सिस्टम संपर्क एपीआई और डिवाइस फोन बुक के साथ समन्वयित नहीं हैं।
    • पैनिक पासवर्ड: एक विशेष पासवर्ड, जब दर्ज किया जाता है, तो संपूर्ण संपर्क डेटाबेस तुरंत और अपरिवर्तनीय रूप से हटा दिया जाता है।
    • आयात और निर्यात: बैकअप प्रतियां बनाने के लिए CSV फ़ाइलों के माध्यम से संपर्क डेटाबेस का सुविधाजनक स्थानांतरण।

    ऑनलाइन आवेदन:
    https://demensdeum.com/software/ghost-contacts/

    गिटहब:
    https://github.com/demensdeum/GhostContacts

  • घन कला परियोजना 2

    क्यूब आर्ट प्रोजेक्ट 2 में आपका स्वागत है – एक ध्यानपूर्ण 3डी कैनवास जहां आप अपनी कल्पना को उड़ान दे सकते हैं। वोक्सल पेंटिंग बनाएं, रंगों के साथ प्रयोग करें और अद्वितीय 3डी मॉडल को सीधे अपने ब्राउज़र में जीवंत करें।

    क्यूब आर्ट प्रोजेक्ट 2 क्या है?

    यह एक रचनात्मक गेम है जो आपकी स्क्रीन को 3डी पेंटिंग के लिए एक इंटरैक्टिव कैनवास में बदल देता है। आपके सामने एक साफ़ त्रि-आयामी स्थान है, जो आपके विचारों, आकृतियों और चमकीले रंगों से भरने के लिए तैयार है।

    मुख्य विशेषताएं

    • 3डी ड्राइंग: एक आरामदायक रचनात्मक प्रक्रिया जो स्वर कला और 3डी ज्यामिति बनाने पर केंद्रित है।
    • रंग चयनकर्ता: सुविधाजनक आरजीबी स्लाइडर्स का उपयोग करके प्रत्येक ब्लॉक के रंगों को ठीक करें।
    • आंदोलन की स्वतंत्रता: सुविधाजनक कैमरा नियंत्रण के साथ किसी भी कोण से अपनी पेंटिंग का अन्वेषण करें।
    • कैनवास सेविंग: अपना काम फाइलों में सहेजें और किसी भी समय ड्राइंग पर वापस लौटें, या अपना काम दूसरों के साथ साझा करें।

    प्रबंधन

    • WASD – कैमरा मूवमेंट
    • माउस – कैमरा रोटेशन और निरीक्षण
    • इंटरफ़ेस (GUI) – रंग चयन और समायोजन

    खेल:
    https://demensdeum.com/software/cube-art-project-2/

    गिटहब:
    https://github.com/zefir1990/cube-art-project-2

  • Raiden Video Ripper

    रैडेन वीडियो रिपर एक ओपन सोर्स प्रोजेक्ट है जिसे वीडियो संपादन और प्रारूप रूपांतरण के लिए डिज़ाइन किया गया है। यह Qt 6 (Qt क्रिएटर) का उपयोग करके बनाया गया है और आपको वीडियो को MP4, GIF और WebM प्रारूपों में संपादित और परिवर्तित करने की अनुमति देता है। आप वीडियो से ऑडियो भी निकाल सकते हैं और उसे एमपी3 फॉर्मेट में बदल सकते हैं।

    माइक्रोसॉफ्ट स्टोर:
    https://apps.microsoft.com/detail/9nvzjs98smgc

    गिटहब:
    https://github.com/demensdeum/RaidenVideoRipper/releases

  • मंगल खनिक

    लाल ग्रह की कठिन परिस्थितियों में, हर सेकंड और हर क्षेत्र मायने रखता है। हम मार्स माइनर्स पेश करने के लिए उत्साहित हैं, जो एक बारी-आधारित रणनीति गेम है जहां आप कॉलोनी के अस्तित्व और मूल्यवान मार्टियन संसाधनों पर नियंत्रण के लिए लड़ते हैं।

    मंगल खनिक क्या हैं?

    मार्स माइनर्स में आप मंगल ग्रह पर एक खनन निगम को नियंत्रित करते हैं। आपका कार्य आधार बनाना, संसाधन क्षेत्रों पर कब्ज़ा करना और कृत्रिम बुद्धिमत्ता या अन्य खिलाड़ियों के साथ भयंकर प्रतिस्पर्धा की स्थिति में स्वायत्त खनन इकाइयों के कार्यों का समन्वय करना है।

    मुख्य विशेषताएं

    • सामरिक रणनीति: अपने विरोधियों की चालों की पहले से गणना करके, अपने आधार के विकास और क्षेत्र पर कब्ज़ा करने की योजना बनाएं।
    • स्वायत्त इकाइयाँ: खनन रोबोटों के कार्यों का समन्वय करें और अधिकतम दक्षता के लिए उनके तर्क को अनुकूलित करें।
    • विभिन्न मोड: एकल-खिलाड़ी प्रशिक्षण मैदान में अपने कौशल को निखारें या मल्टीप्लेयर मोड में अन्य उपनिवेशवादियों के साथ प्रतिस्पर्धा करें।
    • उन्नत AI: स्मार्ट ऑटोमेटा के खिलाफ संसाधनों के लिए लड़ना जो सामरिक गलतियों को माफ नहीं करते हैं।

    मार्स माइनर्स खेलें

  • फ्लेम स्टील: डेथ मास्क 2

    औद्योगिक मेगास्ट्रक्चर के अंतहीन गलियारों में, ठंडी रोशनी से सराबोर, एक नई चुनौती आपका इंतजार कर रही है। हम फ्लेम स्टील: डेथ मास्क 2 पेश करने के लिए उत्साहित हैं, जो एक 3डी डंगऑन क्रॉलर है जो क्लासिक सौंदर्यशास्त्र को आधुनिक रीयल-टाइम गेमप्ले के साथ जोड़ता है।

    फ्लेम स्टील: डेथ मास्क 2 क्या है?

    एक प्रक्रियात्मक रूप से उत्पन्न भूलभुलैया में जागने की कल्पना करें जहां “फ़िल्टर” नामक एक शत्रुतापूर्ण इकाई हर मोड़ पर छिपी हो सकती है। फ्लेम स्टील: डेथ मास्क 2 में आप एक साधक की भूमिका निभाते हैं, जो फ्लेम स्टील इंजन 2 (थ्री.जेएस ग्राफिक्स रेंडरिंग के साथ) पर बनी दुनिया की खोज करता है।

    मुख्य विशेषताएं

    • प्रक्रियात्मक कालकोठरी: प्रत्येक प्रयास अद्वितीय है। सर्वर रहस्यों और खतरों से भरे नए मानचित्र बनाता है।
    • टर्मिनल: उन लोगों के लिए जो पूर्ण नियंत्रण पसंद करते हैं, अंतर्निहित कमांड लाइन इंटरफ़ेस आपको सिस्टम के साथ सीधे बातचीत करने की अनुमति देता है: उन्नत क्रियाएं करना, डीबग करना या कमांड भेजना।
    • लड़ाई और उत्तरजीविता: बिट्स अर्जित करने के लिए फ़िल्टर से लड़ें, फिर उनका उपयोग चेस्ट खोलने और अपने आँकड़े सुधारने के लिए करें। अपने स्वास्थ्य पर ध्यान दें – जीवित रहने की गारंटी नहीं है।
    • औद्योगिक सौंदर्य: एक विशाल मेगास्ट्रक्चर का उच्च-विपरीत दृश्य और बाँझ वातावरण।

    मुखौटे के पीछे की तकनीक

    गेम ब्राउज़र के लिए बनाया गया है और इसका उपयोग करता है:

    • फ्रंटएंड: सहज 3डी रेंडरिंग के लिए शुद्ध जावास्क्रिप्ट और फ्लेम स्टील इंजन 2 (थ्री.जेएस ग्राफिक्स रेंडरर के साथ)।
    • बैकएंड: सर्वर साइड चलाने के लिए Node.js।
    • बुनियादी ढांचा: लगातार डेटा भंडारण के लिए MongoDB और वास्तविक समय स्थानिक अनुक्रमण के लिए Redis

    फ्लेम स्टील खेलें: डेथ मास्क 2

  • उशकी रेडियो

    उशकी-रेडियो ऑनलाइन रेडियो के लिए एक क्रॉस-प्लेटफ़ॉर्म रेडियो प्लेयर है, जिसे सरलता और सुनने के आनंद पर ध्यान केंद्रित करके बनाया गया है। कोई अनावश्यक फ़ंक्शन नहीं, कोई अतिभारित इंटरफ़ेस नहीं – बस इसे चालू करें और सुनें।


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

    यह प्रोजेक्ट ओपन सोर्स रेडियो ब्राउज़र का उपयोग करता है, जिससे दुनिया भर के हजारों रेडियो स्टेशन एप्लिकेशन में उपलब्ध हो जाते हैं। आप उन्हें नाम, शैली या लोकप्रियता के आधार पर खोज सकते हैं, उन्हें अपने पसंदीदा में जोड़ सकते हैं और तुरंत अपने पसंदीदा स्टेशनों पर लौट सकते हैं।

    उशकी-रेडियो पृष्ठभूमि रेडियो प्लेयर की भूमिका के लिए बिल्कुल उपयुक्त है: यह अंतिम स्टेशन को याद रखता है, आपको वॉल्यूम को नियंत्रित करने की अनुमति देता है और जटिल सेटिंग्स की आवश्यकता नहीं होती है। इंटरफ़ेस संक्षिप्त और समझने योग्य है – सब कुछ किया जाता है ताकि संगीत, बातचीत और प्रसारण से कुछ भी ध्यान न भटके।

    तकनीकी रूप से, प्रोजेक्ट रिएक्ट नेटिव और एक्सपो पर बनाया गया है, इसलिए यह ब्राउज़र और नेटिव एप्लिकेशन दोनों में काम करता है। हुड के तहत, एक्सपो-एवी का उपयोग ऑडियो चलाने के लिए किया जाता है, और उपयोगकर्ता सेटिंग्स स्थानीय रूप से संग्रहीत की जाती हैं। रूसी और अंग्रेजी सहित कई भाषाओं के लिए समर्थन उपलब्ध है।

    उशकी-रेडियो इसका एक अच्छा उदाहरण है कि एक आधुनिक इंटरनेट रेडियो प्लेयर क्या हो सकता है: खुला, हल्का, विस्तार योग्य और मुख्य रूप से श्रोता पर केंद्रित। यह परियोजना एमआईटी लाइसेंस के तहत वितरित की गई है और व्यक्तिगत उपयोग और ऑडियो अनुप्रयोगों के साथ आपके अपने प्रयोगों के आधार के रूप में बिल्कुल उपयुक्त है।

    गिटहब:
    https://github.com/demensdeum/Ushki-Radio

    गूगल प्ले:
    https://play.google.com/store/apps/details?id=com.demensdeum.ushkiradio

  • ग्लेज़की टीवी: इंटरनेट टेलीविजन के लिए आधुनिक प्लेयर

    ग्लेज़की टीवी इंटरनेट टेलीविज़न (आईपीटीवी) के लिए एक आधुनिक, उच्च प्रदर्शन वाला प्लेयर है, जो रिएक्ट नेटिव और एक्सपो के आधार पर बनाया गया है। यह परियोजना उपयोग में आसानी और गति पर केंद्रित है, जो मोबाइल उपकरणों और ब्राउज़र दोनों पर आईपीटीवी चैनल देखने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करती है।

    मुख्य विशेषताएं

    • चैनल ब्राउज़िंग: आसान नेविगेशन के लिए वर्गीकृत हजारों चैनल ब्राउज़ करें।
    • खोजें: जिन चैनलों की आपको आवश्यकता है उन्हें तुरंत नाम से ढूंढें।
    • पसंदीदा: त्वरित पहुंच के लिए अपने पसंदीदा चैनल सहेजें (स्थानीय रूप से सहेजा गया डेटा)।
    • डीप लिंकिंग: स्वचालित रूप से खुलने वाले चैनलों के लिए सीधे लिंक साझा करें।
    • थीम समर्थन: इंटरफ़ेस स्वचालित रूप से सिस्टम डार्क या लाइट थीम के अनुकूल हो जाता है।
    • वेब समर्थन: प्लेयर URL सिंक्रनाइज़ेशन के साथ ब्राउज़र में पूरी तरह कार्यात्मक है।

    प्रौद्योगिकी स्टैक

    यह परियोजना आधुनिक विकास उपकरणों पर आधारित है:

    • फ्रेमवर्क: रिएक्ट नेटिव + एक्सपो
    • Video Player: expo-video (замена устаревшему expo-av)
    • यूआई टूलकिट: प्रतिक्रिया-मूल-पेपर
    • प्लेलिस्ट पार्सर: iptv-playlist-parser

    वेब संस्करण:
    https://demensdeum.com/software/glazki-tv/

    गूगल प्ले संस्करण:
    https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv

  • ज़ेफिर1990


    ज़ेफिर1990 – इल्या प्रोखोरोव, मैं व्यावसायिक विकास में 15 वर्षों से अधिक अनुभव वाला एक डेवलपर हूं। डेमेंस ड्यूम स्टूडियो के संस्थापक, जो मोबाइल, वेब और डेस्कटॉप सिस्टम के लिए गेम और एप्लिकेशन विकसित करता है। एंड्रॉइड 2 पर पहला 3डी ओपनजीएल ईएस 2 गेम मैड रेसर 2010 में जारी किया गया था, वह प्रोजेक्ट पर एक प्रोग्रामर और गेम डिजाइनर थे, उन्होंने विकास में संगीतकार एंटोन दिमित्रीव (कूलस्पॉटड्रीमर) को भी शामिल किया था, गेम के सफल लॉन्च के बाद वह अनुबंध के तहत पूर्णकालिक कस्टम विकास और परियोजना विकास में लगे हुए थे। ग्राहकों में डेकाथलॉन, प्लेबॉय, फिटबिट शामिल हैं।

    मैं सॉफ्टवेयर विकास, गेम, डिज़ाइन पैटर्न, एल्गोरिदम, एआई पर लेखों का लेखक भी हूं और मैं सॉफ्टवेयर एन्ट्रॉपी के बारे में एक किताब लिखने की योजना बना रहा हूं।

    पसंदीदा प्रोग्रामिंग भाषाएँ: एएसएम, सी, सी++, ओबीजेसी, पायथन, कोटलिन, स्विफ्ट, जावा, रस्ट, गो, टाइपस्क्रिप्ट, जावास्क्रिप्ट, सी#, डार्ट, पीएचपी।

    लिंक्डइन: linkedin.com/in/zefir1990
    GitHub: github.com/zefir1990
    टेलीग्राम: t.me/zefir1990
    ईमेल: ceo@demensdeum.com
    चिकोटी: twitch.tv/zefir1990
    यूट्यूब: 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.