跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

SPeakS

SPeak

@SPeak
d2learn-dev
关于
帖子
28
主题
5
群组
1
粉丝
2
关注
0

帖子

最新 最佳 有争议的

  • [科技漫谈]: 鸿蒙PC及未来生态发展 -- 一家之言, 不一定对
    SPeakS SPeak

    鸿蒙PC

    HW Next OS 为PC开发的桌面看着挺丝滑的. 根据视频内容, 目前的样机应该还是基于linux架构下的。如果后面权限开放的话, 或(李大霄语气) 利好开发者可以买来当一个开发机用 (当然我说的也不一定对) ...

    鸿蒙生态

    总体来看, 华为走的路线和苹果有点类似。之前手机和平板已经是一套系统了而PC尝试用的统信的UOS, 这导致需要维护两套系统, 不仅很难统一还很影响自己的生态

    现在Next OS也适配了PC端, 实现了三端统一。这样只需要维护 (一个内核 + 共用系统组件) + 三端的桌面环境 , 不仅降低了成本还能实现生态闭环 及 完全的控制力, 未来很可能形成一个类苹果的生态...

    59ca2ef5-cef1-456e-b4b5-dd094536d4e1-image.png

    4d1fa8f7-03ec-4d26-b1f6-f56a8589df76-image.png

    Refs

    • https://www.bilibili.com/video/BV15P5AzEETP
    • https://github.com/torvalds/linux/blob/master/drivers/android/Kconfig
    • https://www.zhihu.com/question/1903768884219180615

  • 工閒手多搞了個python數學加密拹議, 有努諸位看倌批評一下
    SPeakS SPeak

    @semmyenator 是的, 需要 [私钥 -map-> 公钥] 是一个不可逆或有限条件下不可逆, 这样才能保证安全性


  • 工閒手多搞了個python數學加密拹議, 有努諸位看倌批評一下
    SPeakS SPeak

    @semmyenator 看了一下wiki感觉这个从私钥->公钥的构造方法中的数学方法很有意思, 但似乎只起到结构化的作用且可以逆(例如计算共享密钥时就从公钥逆回t_A), 所以实际上的公钥对应的就变成了t_A, 而它只是由(priv_key * t0) mod p简单线性映射的, 可能会造成私钥泄漏(以上是根据文档的简单理解

    • 第一次映射: (k * t0) mod p
    • 第二次映射: to point

    62aa0d74-66ee-42cf-b72f-3467d241fdf8-image.png


  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    @lanhaibo 在 gcc15.1安装失败amake和gmp报错,后者直接导致安装不了 中说:

    第二次安装xmaind是手工安装的

    第二次安装xlings, source ~/.bashrc 后xmake还是找不到吗
    感觉提供一个构建好的bin版本应该会方便很多, 关于glibc的版本问题后面看看编译链接的时候不使用系统的而是用自己构建能不能解决ubuntu22的问题


  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    又看了一下, 你贴的报错好像本地是有bzip2的, 更像是gmp-6.2.1.tar.bz2是个空文件或文件不完整(因为网络问题?), 可以用下面命令看看文件大小信息

    ls -al /home/xlings/.xlings_data/xim/xpkgs/gcc/comm-prerequisites
    

    image.png


    如果网络没有问题, 但文件是不完整的可以运行下面命令直接都删了, 让xlings自动重新下载

    rm -r /home/xlings/.xlings_data/xim/xpkgs/gcc/comm-prerequisites
    

  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    wsl用的系统是什么啊 arch / ubuntu的话 应该没有问题了 依赖能自动处理


  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    后面考虑考虑打包一个编译好的版本, 这样依赖和耗费的时间会少一点, 也方便一点


  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    @lanhaibo 大概知道问题了, 已经提交修复, 运行下面的命令(xim --update index)更新最新包索引信息, 然后重新运行安装命令应该就可以了

    xim --update index
    xlings install gcc@15.1
    

    具体问题

    Q1 - xlings安装成功, 执行xlings install gcc@15.1时,第一次报错xmake找不到。手动源码安装xmake成功,source系统配置文件后,gcc15.1继续安装下去

    A1: 按理这里xmake找不到应该不用手动安装, 可能是环境没有更新, 直接source应该就可以了

    Q2 - 继续安装,gmp解压报错

    A2: 这个问题应该是解压的时候本地缺少相关格式的工具, 目前已经把依赖添加到了gcc的包文件中

    具体修复commit: https://github.com/d2learn/xim-pkgindex/commit/e1b9d940a0ad932d370584b78c050d81ae7be80c

    image.png


  • gcc15.1安装失败amake和gmp报错,后者直接导致安装不了
    SPeakS SPeak

    我修复一下依赖问题


  • [xim+]: 最新gcc15.1.0发布, 一键从源码构建 -- c++23 import std启动
    SPeakS SPeak

    对应的视频演示: https://www.bilibili.com/video/BV1qvGRzcErF


  • [xim+]: 最新gcc15.1.0发布, 一键从源码构建 -- c++23 import std启动
    SPeakS SPeak

    最近gnu发布了最新版本的gcc15.1.0支持了很多c++23的特性, 其中最引人注意的就是支持了模块化标准库. 这个特性能让开发这不需要一个一个的include <xxx>或import <xxx>来使用std中的一些函数或功能, 而只需要import std;即可。例如下面的代码:

    import std;
    
    auto main() -> int {
        std::println("Hello, World!");
        return 0;
    }
    

    我相信很多朋友第一次看到这样的代码时, 可能会不由的发出一些惊叹: 这还是我认识的C++吗?
    没有关系, 下面就来介绍一下如何配置gcc15.1.0的环境并成功编译运行上面的代码

    1.一键从源码构建安装gcc15.1.0

    通过xlings工具可以在不影响系统环境的情况下, 从源码构建gcc并安装

    安装xlings工具

    curl -fsSL https://d2learn.org/xlings-install.sh | bash
    

    注: 更多详情见 -> xlings仓库

    安装gcc15.1.0

    运行安装命令并确认后, 会自动获取gcc源码、处理依赖和编译安装

    xlings install gcc@15.1.0
    

    553b6f02-999b-4319-8154-eb18f64cff5b-image.png

    查看版本进行确认

    gcc --version
    

    2.生成模块化std并构建一个HelloWorld程序

    创建helloworld.cpp文件

    import std;
    
    auto main() -> int {
        std::println("Hello, World!");
        return 0;
    }
    

    构建std模块缓存

    g++ -std=c++23 -fmodules -O2 -c -fmodule-only -fsearch-include-path bits/std.cc
    

    编译helloworld程序

    g++ -std=c++23 -fmodules -O2 helloworld.cpp -o helloworld
    

    运行helloworld程序&验证

    ./helloworld
    

    3.xpkg包文件 - 构建细节

    function __gcc_url(version) return format("https://ftp.gnu.org/gnu/gcc/gcc-%s/gcc-%s.tar.xz", version, version) end
    
    package = {
        -- base info
        name = "gcc",
        description = "GCC, the GNU Compiler Collection",
    
        authors = "GNU",
        license = "GPL",
        repo = "https://github.com/gcc-mirror/gcc",
        docs = "https://gcc.gnu.org/wiki",
    
        -- xim pkg info
        type = "package",
        archs = {"x86_64"},
        status = "stable", -- dev, stable, deprecated
        categories = {"compiler", "gnu", "language"},
        keywords = {"compiler", "gnu", "gcc", "language", "c", "c++"},
    
        -- xvm: xlings version management
        xvm_enable = true,
    
        xpm = {
            linux = {
                deps = { "make", "gcc" },
                ["latest"] = { ref = "15.1.0" },
                ["15.1.0"] = { url = __gcc_url("15.1.0") },
                ["14.2.0"] = { url = __gcc_url("14.2.0") },
                ["13.3.0"] = { url = __gcc_url("13.3.0") },
                ["12.4.0"] = { url = __gcc_url("12.4.0") },
                ["11.5.0"] = { url = __gcc_url("11.5.0") },
            },
        },
    }
    
    import("xim.libxpkg.system")
    import("xim.libxpkg.pkginfo")
    import("xim.libxpkg.log")
    import("xim.libxpkg.xvm")
    
    function install()
        local builddir = path.join(pkginfo.install_dir(), "xim_build")
        local objdir = path.join(pkginfo.install_dir(), "xim_build", "objdir")
        local prerequisites_dir = path.join(path.directory(pkginfo.install_dir()), "comm-prerequisites")
    
        log.info("0.clean build cache...")
        if not os.isdir(prerequisites_dir) then os.mkdir(prerequisites_dir) end
        for _, dir in ipairs(os.dirs(path.join(prerequisites_dir, "**"))) do
            -- if dir is empty, remove it
            if os.emptydir(dir) then
                os.tryrm(dir)
            end
        end
    
        os.tryrm(builddir)
        os.mkdir(builddir)
        system.exec(string.format("tar xvf gcc-%s.tar.xz -C %s", pkginfo.version(), builddir))
        os.cd(path.join(builddir, "gcc-" .. pkginfo.version()))
    
        log.info("1.download prerequisites...")
        -- readfile - contrib/download_prerequisites
        local filecontent = io.readfile("contrib/download_prerequisites")
        filecontent = filecontent:replace("--no-verbose", " ", { plain = true })
        io.writefile("contrib/download_prerequisites", filecontent)
        system.exec("contrib/download_prerequisites --directory=" .. prerequisites_dir)
    
        log.info("2.build config...")
        os.mkdir(objdir)
        os.cd(objdir)
        system.exec(string.format([[%s/gcc-%s/configure
            --prefix=%s --enable-languages=c,c++ --disable-multilib
        ]], builddir, pkginfo.version(), pkginfo.install_dir()))
    
        log.info("3.build gcc...")
        system.exec("time make -j32", { retry = 2 })
    
        log.info("4.install gcc...")
        system.exec("make install")
        return true
    end
    
    function config()
        local gcc_bindir = path.join(pkginfo.install_dir(), "bin")
        local ld_lib_path = string.format("%s:%s", path.join(pkginfo.install_dir(), "lib64"), os.getenv("LD_LIBRARY_PATH") or "")
        
        local config = {
            bindir = gcc_bindir,
            envs = {
                ["LD_LIBRARY_PATH"] = ld_lib_path,
            }
        }
    
        xvm.add("gcc", config)
        xvm.add("g++", config)
    
        return true
    end
    
    function uninstall()
        xvm.remove("gcc")
        xvm.remove("g++")
        return true
    end
    

    其他

    • gcc主页
    • xlings工具
    • gcc的xpkg文件
    • 原文地址
    • 知乎问题

  • Linux & Win 游戏性能随手记录
    SPeakS SPeak

    @MoYingJi 按理一个大众发行的游戏不可能在windows上的优化比linux上差的, 反而可能系统调度原因 刻意压低过高的fps来节省功耗(纯猜测)...


  • C++: decltype作用于类/结构体对像成员时decltype(obj.a) 和 decltype((obj.a))的区别
    SPeakS SPeak

    https://en.cppreference.com/w/cpp/language/decltype

    image.png


  • C++: decltype作用于类/结构体对像成员时decltype(obj.a) 和 decltype((obj.a))的区别
    SPeakS SPeak

    decltype(obj.a): 取到是类成员声明/定义类型
    decltype((obj.a)): 取到是 (obj.a) 这个表达式类型, 受对象本身限定符影响: 一般是 T& 或 当对像为const成员类型为非const时一取const T&

    注: obj是一个左值情况下


    #include <iostream>
    #include <string>
    #include <type_traits>
    
    using std::string;
    
    struct Bar {
        const int m_a;
        double m_b;
    
        Bar() : m_a(1), m_b(2.0) {}
    };
    
    int main() {
        const Bar obj;
    
        std::cout << std::is_same_v<decltype(obj), const Bar> << std::endl;
        std::cout << std::is_same_v<decltype((obj)), const Bar&> << std::endl;
        std::cout << std::is_same_v<decltype(obj.m_a), const int> << std::endl;
        std::cout << std::is_same_v<decltype((obj.m_a)), const int&> << std::endl;
        std::cout << std::is_same_v<decltype(obj.m_b), double> << std::endl;
        std::cout << std::is_same_v<decltype((obj.m_b)), const double&> << std::endl;
    
        return 0;
    }
    
    

    2c171093-6a01-4818-abbb-1b7b0e7eb6a2-image.png

    • 代码来自视频评论区: https://www.bilibili.com/video/BV1xkdYYUEyH

  • 使用d2x工具搭建了一个现代C++核心语言特性的代码练习项目mcpp-standard(类似rustlings)
    SPeakS SPeak

    打算从C++11-现代C++元年开始介绍其核心的语言特性(不包括标准库), 把每个特性制作一个代码练习, 然后通过d2x的检测程序进行代码检查...

    代码仓库: https://github.com/Sunrisepeak/mcpp-standard


  • [安装][网络]: 安装报错 curl failed to verify the legitimacy of the server
    SPeakS SPeak

    详情

    我把重要和不重要的所有流程都列出來
    雖然沒有找到問題點與解決方法,但可以做為事件紀錄

    我重新整理這一切:

    最一開始
    1、我要使用xlings實時編譯運行功能
    2、我使用Visual Studio Code
    3、發現使用時顯示我沒有安裝C
    4、我輸入y安裝
    5、系統跳出curl連線錯誤說明
    6、我嘗試關閉防毒軟體
    7、沒有出現curl連線錯誤問題了
    8、成功運行Visual Studio的安裝流程中
    9、跳掉了,沒有任何彈出視窗與提示
    10、我嘗試去微軟官網下載Visual Studio 2022安裝包
    11、安裝完成Visual Studio 2022了,使用運作也正常
    12、回到Visual Studio Code測試xlings實時編譯運行功能
    13、跳出我沒有安裝C
    14、我輸入y安裝
    15、沒有出現curl連線錯誤
    16、成功安裝了某些東西
    17、成功運作

    現在
    1、我嘗試重現這個問題
    2、我移除Visual Studio 2022
    3、到xlings測試實時編譯運行功能
    4、因為沒有Visual Studio的某些東西無法正常運作
    5、重新安裝Visual Studio 2022
    6、在Visual Studio Code執行實時編譯運行功能
    7、系統提示是否安裝C
    8、輸入y
    9、跑了一些安裝程序
    10、實時編譯運行功能運作正常

    總結
    1、偶發事件
    2、手動安裝了VS2022
    3、原本遇上的curl連線錯誤問題在手動安裝VS2022後沒有再遇上同樣問題
    4、無法重現以上遇到的錯誤


  • run命令找不到文件
    SPeakS SPeak

    乱码问题可以看这个
    https://github.com/Sunrisepeak/d2ds/issues/2#issuecomment-2184088593


  • run命令找不到文件
    SPeakS SPeak

    @baiyiusers 配置一下自动保存试一试

    https://www.cnblogs.com/kaige050218/p/18454581


  • run命令找不到文件
    SPeakS SPeak

    上面我看在d盘运行xlings会报错。是在电脑上只要切换到d盘运行xlings所有命令都报错(例如xlings help)。还是只是xlings run命令有问题啊

  • 登录

  • 登录或注册以进行搜索。
d2learn forums Powered by NodeBB
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组