翻车了,知名 UP 主何同学道歉,被指盗用开源项目

科技   2024-11-20 17:11   江苏  

何同学

11 月 15 号,在 B 站坐拥 1200W 粉丝的著名数码博主「老师好我叫何同学」(以下简称"何同学")发布了视频《我用36万行备忘录做了个动画…》

顾名思义,这就是用手机上的「备忘录」软件,输入 36W 行内容,然后通过滑动内容,来呈现出动画的效果。

大白话就是:电子版翻页动画。

这虽然是一个手机商单视频,但仍然取得了不错的播放数据:5000+ 弹幕、570W+ 播放、全站排行榜最高第 4 名。

36W 行的文本内容,显然不是人工可以做到的。

于是何同学视频也解释到,他们专门写了一个软件来实现该效果。

视频中的文案原话:所以我们专门写了一个软件,可以把预览动画里面的色块转换成字符,提高效率,但为了最自然的效果,前面白条,躲避障碍的动画,依然是一行一行画的。最后这个文档有36万。

这个软件,毫无疑问是这个视频里,技术含量最高的内容了。

但很快就被眼利的网友发现,何同学口中这款"专门写的软件"其实是一个在 GitHub 上颇受欢迎的开源项目,而且他还删除了原作者的信息。

甚至何同学连创建一个项目文件夹的步骤都没有,代码都是直接在 "Download" 路径下运行:

该项目名为「ASCII generator」,是一个用于生成 ASCII 码的 Python 项目,支持图像转文本、图像转图像、视频转视频。

得益于这一波"泼天流量",该项目的 star 很快就从 1.8k 飙升到 2.9k。

甚至有网友直接定位到视频展示代码所在的文件:

很快,各种实锤的使得何同学不得不下场回应,在视频的评论区置顶了声明,直言这是文案审稿问题,但网友并不卖账,觉得删除原作者信息的做法显然不是无心之失:

上述评论很快就被删除了。

甚至一些用「原截图和实锤证据」做成视频的网友,都被拉黑了 🤣🤣:

其实相比于这些乐子,我觉得更加离谱的是,网友对项目 issue 的污染:

在这事火了之后,基本上该项目的所有 issue 都是谈及此事的,我觉得大家有话想对何同学说的话,大可使用别的方式,采用污染项目 issue 的做法,实在是有点丢脸到国外的意思。

对此,你怎么看?

...

回归主题。

来一道简单算法题。

题目描述

平台:LeetCode

题号:34

给定一个按照升序排列的整数数组 nums,和一个目标值 target

找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8

输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6

输出:[-1,-1]

示例 3:

输入:nums = [], target = 0

输出:[-1,-1]

提示:

  • nums 是一个非递减数组

进阶:

  • 你可以设计并实现时间复杂度为  的算法解决此问题吗?

二分

这是一道「二分查找」的裸题。

「二分」有一个比较容易混淆的点是:当需要找目标值第一次出现的下标时,条件应该写成 nums[mid] >= target 还是 nums[mid] <= target

其实有一个很好理解的方法:

由于二分是从中间开始找起的,所以找的必然是条件区间中靠近中心的的边界值。

文字不好理解,我们结合图片来看:

Java 代码:

class Solution {
    public int[] searchRange(int[] nums, int t) {
        int[] ans = new int[]{-1, -1};
        int n = nums.length;
        if (n == 0return ans;
        int l = 0, r = n - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (nums[mid] >= t) r = mid;
            else l = mid + 1;   
        }
        if (nums[r] != t) return ans;
        ans[0] = r;
        l = 0; r = n - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (nums[mid] <= t) l = mid;
            else r = mid - 1;
        }
        ans[1] = r;
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    vector<intsearchRange(vector<int>& nums, int t) {
        vector<int> ans = {-1-1};
        int n = nums.size();
        if (n == 0return ans;
        int l = 0, r = n - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (nums[mid] >= t) r = mid;
            else l = mid + 1;   
        }
        if (nums[r] != t) return ans;
        ans[0] = r;
        l = 0; r = n - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (nums[mid] <= t) l = mid;
            else r = mid - 1;
        }
        ans[1] = r;
        return ans;
    }
};

Python 代码:

class Solution:
    def searchRange(self, nums: List[int], t: int) -> List[int]:
        ans = [-1-1]
        n = len(nums)
        if n == 0return ans
        l, r = 0, n - 1
        while l < r:
            mid = l + r >> 1
            if nums[mid] >= t: r = mid
            else: l = mid + 1   
        if nums[r] != t: return ans
        ans[0] = r
        l, r = 0, n - 1
        while l < r:
            mid = l + r + 1 >> 1
            if nums[mid] <= t: l = mid
            else: r = mid - 1
        ans[1] = r
        return ans

TypeScript 代码:

function searchRange(nums: number[], t: number): number[] {
    const ans= [-1-1];
    const n = nums.length;
    if (n == 0return ans;
    let l = 0, r = n - 1;
    while (l < r) {
        const mid = l + r >> 1;
        if (nums[mid] >= t) r = mid;
        else l = mid + 1;   
    }
    if (nums[r] !== t) return ans;
    ans[0] = r;
    l = 0; r = n - 1;
    while (l < r) {
        const mid = l + r + 1 >> 1;
        if (nums[mid] <= t) l = mid;
        else r = mid - 1;
    }
    ans[1] = r;
    return ans;
};
  • 时间复杂度:
  • 空间复杂度:

往期推荐

4 种 MySQL 同步 ES 方案,yyds!

为什么很多人喜欢重装系统?

只因把 https 改成 http,带宽减少了 70%!

那些年,我们追过的代码:BASIC

Java多次启动一个线程究竟会发生什么?程序到底会不会崩?大部分程序员理解错误!!

喜大普奔~当年用不起天天找破解版的收费软件现在免费了!!!

操作系统是怎样一步步接收键盘按键的?

这里有最新前沿技术资讯、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦



码小辫
用堆栈的方式来学习技术,用遍历的方法来获取资料,用AI的思路考虑人生……码农的AI世界、BUG的程序员人生……hello world!
 最新文章