分类: Tools

  • 【更新】参考文献格式化助手

    短小精悍、绿色环保、免费开源、整洁高效
    Small, Green, Freedom, Open Source, Neat, Efficient

    你还在为各种参考文献管理软件使word崩溃烦恼吗?你还在因参考文献插件与导师的不同而无法编辑而烦恼吗?你还在为找不到注册码四处奔波吗?
    Are you still worried about word crashing due to various reference management software? Are you still troubled by the fact that the reference plug-in and the supervisor are different and cannot be edited? Are you still running around trying to find your registration code?

    试试我们的《参考文献格式化助手》!简约、支持自定义、无需安装任何软件!解决您的参考文献格式烦恼!
    点此进入https://dataholdcn.cn/ckwx/
    请杯奶茶【https://wp.me/P80aHo-Z5
    报告BUG【https://lecent.wang/t/bug-report

    使用示例/Example of use

    点击进入参考文献格式化助手使用示例

    更新/Update

    【20260228】 1.26版/v1.26

    1. 修正了对MDPI系列杂志名称的识别。
    1. Corrected the recognition of MDPI series journal names.

    【20251031】1.25版/v1.25

    1. 修正了Bug提交的链接。
    1. Fixed the link for bug submission.

    【20250331】1.24版/v1.24

    1. 增加了不显示EP页数。
    1. Added not showing EP when EP is not provided.

    【20240905】1.23版/v1.23

    1. 修正了有些情况下出现刊物名称与句号之间出现空格。
    1. Fixed the appearance of a space between the name of the journal and the period in some cases.

    【20240810】1.22版/v1.22

    1. 增加了“重命名推荐”功能。用于将下载下来的文献进行规范化保存。
    1. Added the ‘Rename Recommendation’ feature. You will standardize PDF files standardized.

    【20240222】1.21版/v1.21

    1. 增加了对Google Scholar导出的RIS文件的支持,但是极不推荐!!!请官网未提供RIS格式文件(如arXiv)时使用。
    1. Added support for RIS files exported from Google Scholar. Please only use for arXiv. Try to use the RIS provided on the official website as much as possible.

    【20240125】1.2版/v 1.2

    1. 增加了自动识别et al为等。
    2. 修正了正常RIS文本会增加-的问题。
    3. 修正了中英文献混排的问题。
    1. Added automatic recognition of et al and etc in Chinese.
    2. Fixed the issue where normal RIS text would increase -.
    3. Fixed the problem of mixed arrangement of Chinese and English documents.

    【20240124】1.1版/v 1.1

    1. 增加了对知网官方输出格式的支持,并增加了标准化功能。知网文本会直接转化成标准RIS。
    2. 增加对中文的支持。
    3. 增加了favicon。
    1. Added support for the official CNKI output format and added standardization functions. CNKI text will be directly converted into standard RIS.
    2. Add support for Chinese.
    3. Added favicon.

    【20240115】1.0版/v 1.0

    1. 参考文献格式化助手 v1.0诞生!
    1. Reference Format Assistant v1.0 release.

    功能/Features

    1. 智能分析RIS文件,并提取主要信息;
    2. 作者之间的分隔符可以自定义;
    3. 参考文献显示的作者数量可以自定义;
    4. et al.斜体、粗体、加不加.统统可以自定义;
    5. 根据参考文献模板输出结果,需要什么样的参考文献格式,自己定义;
    6. 自动识别杂志全称并给出缩写形式(测试);
    7. 多个参考文献支持同时格式化;
    8. 若是中文文献,则自动识别et al为等。
    1. Intelligently analyze RIS files and extract main information;
    2. Separators between authors can be customized;
    3. The number of authors displayed in references can be customized;
    4. et al. Italic, bold, add or not. All can be customized;
    5. According to the reference template output results, you can define the required reference format yourself;
    6. Automatically recognize the full name of the magazine and give the abbreviation (testing);
    7. If it is a Chinese document, et al will be automatically recognized as 等.

    使用/Using

    1. 在SCI杂志社官网找到引用功能,下载.RIS文件,用记事本打开并复制全部内容,粘贴到《参考文献格式化助手》的分析框里。
    2. 点击分析参考文献按钮。
    3. 调整其他参数,获得最标准的输出格式。
    4. 将最下面的参考文献复制到word,调整字号。
    1. Find the citation function on the official website of SCI Magazines, download the .RIS file, open it with Notepad and copy the entire content, and paste it into the analysis box of the “Reference Formatting Assistant”.
    2. Click the Analyze References button.
    3. Adjust other parameters to obtain the most suitable output format.
    4. Copy the bottom reference to Word and adjust the font size.

    什么是RIS文件/What is the RIS file【查看

    获取RIS文件/Get RIS files

  • 卸载迅雷12捆绑的迅雷影音

    【更新日期】2025年3月28日

    独立版: https://pan.baidu.com/s/1FmA1zDT5DU_eGLpfljfn_w?pwd=9sc6 提取码: 9sc6

    依赖.net8.0版本(推荐):链接: https://pan.baidu.com/s/13-pISg4soTD8wmQTz8CnwA?pwd=4t9v 提取码: 4t9v

    在windows11下测试通过。

    File name: 迅雷影音卸载_net8.0
    File extension: .zip
    MD5:acf2680ee591ce8c28006991018dc7f2
    SHA256:fa2106e53a36e822c54fa74a42222495a0312f8561b7f05cce0cb94b3f6e1a40


    使用方法:

    1. 先用迅雷影音打开一个文件播放,暂停,最小化。
    2. 解压到任意目录,鼠标右键点击”迅雷影音卸载.exe”,选择以管理员身份运行

  • 蛇形序列生成器

    只需要输入起始编号、终止编号和每行个数,即可自动生成蛇形排列。

    https://www.dataholdcn.cn/snakeLine

  • AA制计算器

    输入每个人花钱信息,直接计算出每个人应该付多少钱。

    https://dataholdcn.cn/AAmoney

    示例:

    张三:32 # 买肉
    李四:12 # 买土豆
    张三:35 # 买番茄
    王五:
    这六:
    
    展开/折叠结果
    每人应交或返回的金额
    王五: 19.75元(应交)
    这六: 19.75元(应交)
    李四: 7.75元(应交)
    张三: 47.25元(应退)
    支付分配情况
    王五 应交 19.75元 给 张三
    这六 应交 19.75元 给 张三
    李四 应交 7.75元 给 张三
    

    源代码:

    <!DOCTYPE html>  
    <html lang="zh">  
    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  
        <title>AA制计算器</title>  
        <style>  
            body {  
                text-align: center;
                font-family: Arial, sans-serif;  
                margin: 20px;  
            }  
            textarea {  
                width: 100%;  
                height: 150px;  
            }  
            button {  
                margin-top: 10px;  
            }  
            .result {  
                margin-top: 20px;  
                border: 1px solid #ccc;  
                padding: 10px;  
            }  
        </style>  
    </head>  
    <body>  
        <h1>AA制计算器</h1>  
        <textarea id="input" placeholder="请输入信息,格式为:张三: 32 # 买肉"></textarea>  
        <button onclick="calculate()">计算</button>  
        <div class="result" id="result"></div> 
    
        <script>  
            function calculate() {  
                let input = document.getElementById('input').value.trim();  
                // 替换中文冒号为英文冒号  
                input = input.replace(/:/g, ':');  
                const lines = input.split('\n');  
                const expenses = {};  
                const contributions = {};  
                const allNames = new Set(); // 用于存储所有姓名  
    
                lines.forEach(line => {  
                    const [info, note] = line.split('#').map(part => part.trim());  
                    const [name, value] = info.split(':').map(part => part.trim());  
    
                    // 添加姓名到集合中  
                    allNames.add(name);  
    
                    // 处理收入和支出  
                    if (value.startsWith('+')) {  
                        const amount = parseFloat(value.slice(1));  
                        contributions[name] = (contributions[name] || 0) + amount; // 记录预收款  
                    } else {  
                        const amount = parseFloat(value);  
                        if (!isNaN(amount)) {  
                            expenses[name] = (expenses[name] || 0) + amount; // 记录支出  
                        }  
                    }  
                });  
    
                // 计算总支出  
                const totalExpense = Object.values(expenses).reduce((sum, val) => sum + val, 0);  
                const totalPeople = allNames.size; // 参与人数  
                const averageExpense = totalExpense / totalPeople; // 每人应负担的金额  
    
                // 计算每个人的应交或应退金额  
                const result = {};  
                allNames.forEach(name => {  
                    const paid = contributions[name] || 0; // 个人预收款  
                    const owed = expenses[name] || 0; // 个人支出  
                    // 应交或应退金额 = 每人应负担的金额 - (支出 + 预收款)  
                    result[name] = averageExpense - (owed + paid);   
                });  
    
                // 计算应交和应退的人  
                const payers = [];  
                const receivers = [];  
    
                allNames.forEach(name => {  
                    if (result[name] > 0) {  
                        payers.push({ name, amount: result[name] }); // 应交的人  
                    } else if (result[name] < 0) {  
                        receivers.push({ name, amount: -result[name] }); // 应退的人  
                    }  
                });  
    
                // 按应退金额从高到低排序  
                receivers.sort((a, b) => b.amount - a.amount);  
                // 按应交金额从高到低排序  
                payers.sort((a, b) => b.amount - a.amount);  
    
                // 分配应交金额  
                let output = '<h3>每人应交或返回的金额</h3><ul>';  
                payers.forEach(payer => {  
                    output += `<li>${payer.name}: ${payer.amount.toFixed(2)}元(应交)</li>`;  
                });  
                receivers.forEach(receiver => {  
                    output += `<li>${receiver.name}: ${-result[receiver.name].toFixed(2)}元(应退)</li>`;  
                });  
    
                // 创建一个新的输出列表  
                let paymentOutput = '<h3>支付分配情况</h3><ul>';  
    
                // 分配应交金额给应退金额最多的人  
                payers.forEach(payer => {  
                    let remaining = payer.amount;  
                    for (let receiver of receivers) {  
                        if (remaining <= 0) break; // 如果没有剩余金额,退出  
                        if (receiver.amount > 0) {  
                            const payment = Math.min(remaining, receiver.amount);  
                            paymentOutput += `<li>${payer.name} 应交 ${payment.toFixed(2)}元 给 ${receiver.name}</li>`;  
                            remaining -= payment;  
                            receiver.amount -= payment; // 减少接收者的应退金额  
                        }  
                    }  
                });  
    
                // 将支付分配情况添加到结果中  
                output += paymentOutput + '</ul>';  
    
                // output += '</ul>';  
                document.getElementById('result').innerHTML = output;  
            }  
        </script>  
    </body>  
    </html>
    
  • 表型按列分文件forGAPIT

    myFile <- choose.files()
    setwd(dirname(myFile))
    print(getwd())
    readTabler <- read.table(myFile,header=T,sep=",")
    for (i in 2:ncol(readTabler)) {  
      dir.create(names(readTabler)[i], showWarnings = FALSE)  # 创建目录,避免警告  
      temp <- cbind(readTabler[1], readTabler[i])  # 合并第一列和当前列  
      write.table(temp, paste0(names(readTabler)[i], "/GAPIT.Pheno.txt"), quote = FALSE, sep = "\t", row.names = FALSE)  # 写入文件  
    }  
    
    
  • 基因组SNP标记随机筛选减少个数

    f_Filter <- 0.01
    source("https://dataholdcn.cn/R/GBIT/GBIT.R")
    GBIT.WD(NULL)
    geno <- GBIT.read.file("geno.data")
    geno[1:5,1:5]
    f_Filter_round <- round(dim(geno)[1]*f_Filter)
    geno_Filter_seq <- seq(from=1,to=dim(geno)[1],by=round(dim(geno)[1]/f_Filter_round))
    length(geno_Filter_seq)
    geno <- geno[geno_Filter_seq,]
    save(geno, file = "geno.data")   # save
    GBIT.writeHMP(geno,paste0("geno.filter_",dim(geno)[2],"_",length(geno_Filter_seq))) # 直接生成HMP格式文件,自动补全后缀
    
    
    
    

  • Windows同屏工具

    安装需要的程序集

    pip install Flask mss pyinstaller opencv-python
    

    Python文件内容

    from flask import Flask, Response  
    import cv2  
    import numpy as np  
    import mss  
    
    app = Flask(__name__)  
    
    def generate_frames():  
        with mss.mss() as sct:  
            # 获取屏幕的监视器信息  
            monitor = sct.monitors[1]  # 选择第一个监视器  
            while True:  
                # 捕获屏幕  
                img = sct.grab(monitor)  
                # 将捕获的图像转换为 NumPy 数组  
                frame = np.array(img)  
                # 转换颜色通道,从 BGRA 到 BGR  
                frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)  
                # 编码为 JPEG 格式  
                _, buffer = cv2.imencode('.jpg', frame)  
                frame = buffer.tobytes()  
                
                # 生成视频流  
                yield (b'--frame\r\n'  
                       b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')  
    
    @app.route('/video_feed')  
    def video_feed():  
        return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')  
    
    @app.route('/')  
    def index():  
        return '''  
        <html>  
            <head>  
                <title>屏幕共享</title>  
            </head>  
            <body>  
                <img src="/video_feed" width="100%">  
            </body>  
        </html>  
        '''  
    
    if __name__ == '__main__':  
        app.run(host='0.0.0.0', port=5000)
    
    python -m PyInstaller --onefile --icon=app_icon.ico screen_share.py
    

    下载链接: https://pan.baidu.com/s/1xnfNl8AfJOKzggl_ptDIHg?pwd=uvrg 提取码: uvrg

  • 自制MD5校验器

    短小精悍、绿色环保、免费开源、整洁高效
    Small, Green, Freedom, Open Source, Neat, Efficient

    Table of Contents

    今天,开源一个批处理写的不足2k的脚本,用于计算文件的MD5值。让那些动不动就几百M或者大量写入注册表的软件汗颜去吧。

    Today, I open source a cmd script that less than 2 Kb. The script is going to calculate the MD5 value of any files. Let those software that easily take hundreds of megabytes or write a large amount of data into the registry be ashamed.

    功能/Features

    当一个程序被修改时,它的MD5/SHA256 Hash值也会随之改变,为了保证每个人使用的文件没有被篡改过,没有感染计算机病毒,请校验MD5值,以保证使用的是干净的正版软件。

    When a computer file is modified, it’s MD5/SHA256 hash value will also change accordingly. In order to ensure that the files used by everyone have not been tampered with and are not infected with computer viruses, please check the MD5 value to ensure that you are using clean and genuine software.

    在数据科学上,MD5值也用作检测数据的完整性。

    In data science, the MD5 value is also used to check the integrity of the data.

    使用/Use

    • 将需要检测MD5值的程序直接拖拽到MD5.bat文件上。
    • 或者将要检测的文件放在MD5.bat目录下,运行MD5.bat,选择需要检测文件前面的编号。
    • 在CMD窗口内,选中需要复制的文字,点鼠标右键即可完成复制。
    • Drag and drop the file that needs to get the MD5 value directly onto the MD5.bat file.
    • Or put the file you want to detect in the same folder as MD5.bat, run the MD5.bat, and then select the number of the file.
    • In the CMD window, select the text that needs to be copied and right-click the mouse to complete the copy.

    演示/Demo

    拖拽方式/Drag and drop

    编号方式/Numbers

    下载/Download

    【GithubRelease v 1.0.0 · aozhangchina/md5.bat (github.com)

    【链接https://pan.baidu.com/s/1Q7aX49PMSHZPKudDbnMfkQ?pwd=yuqq 提取码:yuqq

    You can use the Baidu Netdisk to download the file I have already written, which using the link previous line.

    源码/Source code

    软件已经开源到Github:https://github.com/aozhangchina/md5.bat

    @echo off
    setlocal enabledelayedexpansion
    chcp 65001 >nul
    title MD5/SHA256计算工具
    echo 张敖制作 https://datahold.cn
    echo 把本软件放在测试文件相同的目录下运行
    echo 更新 2024年2月16日
    
    if "%~1" == "" (
        @REM echo Please drag and drop a file onto this batch file.
        goto n2
    )
    echo Dragged file information:
    echo File name: %~n1
    echo File extension: %~x1
    echo Full path: "%~f1"
    echo Directory: %~dp1
    
    set "filename=%~f1"
    
    echo Selected file: "%filename%"
    
    :: Using CertUtil to calculate MD5 and SHA256 hash values for the selected file
    echo Calculating MD5 and SHA256 for "%filename%"...
    set "md5hash="
    set "sha256hash="
    
    for /f "tokens=* skip=1" %%a in ('CertUtil -hashfile "%filename%" MD5') do (
        set "md5hash=%%a"
        goto displayMD5
    )
    :displayMD5
    echo MD5: %md5hash%
    
    for /f "tokens=* skip=1" %%a in ('CertUtil -hashfile "%filename%" SHA256') do (
        set "sha256hash=%%a"
        goto displaySHA256
    )
    :displaySHA256
    echo SHA256: %sha256hash%
    goto eof
    
    :n2
    :: 初始化变量
    set /a count=1
    
    :: 列出当前目录下所有文件,并给它们编号
    echo Available files:
    for %%f in (*) do (
        echo !count! - %%f
        set "file!count!=%%f"
        set /a count+=1
    )
    
    :: 获取用户输入
    set /p choice="Select a file number: "
    if "!choice!"=="" goto eof
    
    :: 通过编号获取文件名
    set "selectedFile=!file%choice%!"
    
    :: 检查用户是否选择了有效编号
    if "!selectedFile!"=="" (
        !selectedFile! = %1
        goto eof
    )
    
    :start
    :: 使用CertUtil计算所选文件的MD5哈希值,并只显示MD5哈希值
    echo Calculating MD5 and SHA256 for "!selectedFile!"...
        for /f "tokens=* skip=1" %%a in ('CertUtil -hashfile "!selectedFile!" MD5') do (
            set "md5hash=%%a"
            goto displayMD52
        )
    :displayMD52
    echo MD5: !md5hash!
    
    :: 使用CertUtil计算所选文件的SHA256哈希值,并只显示SHA256哈希值
        for /f "tokens=* skip=1" %%a in ('CertUtil -hashfile "!selectedFile!" SHA256') do (
            set "sha256hash=%%a"
            goto displaySHA2562
        )
    
    :displaySHA2562
    echo SHA256: !sha256hash!
    
    :eof
    endlocal
    
    echo 按任意键退出/Press any key to exit.
    pause >nul
    

    文件MD5信息/MD5 information

    名称:MD5.zip
    大小:1 KB
    MD5:becdc41ed373485d92f575a615c8d9e0
    SHA256:e38af4a446456837f4a9c4d7b83d7ce6a2671e0ce14ac48f149faed74f290bc7

    如果你下载的文件MD5与我不同,请检查下载源是否安全。

    If the MD5.zip has the different MD5 value, please check that the download source is secure.

  • Microsoft Edge轻松实现PDF翻译

    通常,要实现PDF的翻译,需要过硬的插件技术,比如可可翻译划词翻译等,或者使用桌面翻译软件如STranslate等,当然,有些PDF阅读器是集成了翻译功能的,比如WPS

    然而,你可能忽略掉了一个身边最常用的软件——Microsoft Edge。用Edge打开PDF,轻轻点一下翻译按钮,一个具备划词翻译功能的PDF阅读器就这样来到了你的身边。

  • 简洁、快速、清爽、免费的翻译插件

    现在,翻译插件非常多,但是很多是收费的,有一些则花里胡哨,大多数功能都用不了。今天,为大家推荐一款免费、强大、我清爽的浏览器翻译插件,为科研助力。

    可可翻译】【开源地址

    1. 划词翻译,在国内,支持bing和baidu,海外网支持Google。
    2. 支持发音,不会的单词可根据标准发音学习,千万不要用音标拼,音标很多都不准确。
    3. 可以把翻译结果直接插入到网页中。
    4. 支持浏览器原生PDF划词翻译,光这一点就甩其他翻译插件几条街。
    5. 可以翻译整个网页。