近日吐槽

2024.06.10

不知为何自己写 Unity(图1) 的逻辑代码时会比 Godot(图2) 写的流畅点。我自己主观感觉的话可能是我更偏爱 C# 一点吧,和 Java 算同类我也更熟练。而 Godot 则是完全照搬 Python 的,虽然语法啥的都更简单,虽然我也会点但不知为何在我这却很容易出现面条代码的情况

还有一点想吐槽的是,这两家推荐的默认 IDE 是真难用啊。
Unity 推荐 VS 和 VSCode,前者体积太大,且要在安装 Unity 时同时下载配置,如果你安装时没配置,使用体验会遭很多。后者,轻巧但依赖插件,而且这破插件还经常掉,连基本的语法提示都掉没了,只能查着文档看着视频敲,那代码写得我真是汗流浃背啊。
靠北的,Godot 那就更是个乐色,原生内置的纯纯是个残废,狗都不用!!!
其他主流 IDE 又普遍不支持 Godot 或也是半残废支持。

最后还得是 jetBrains 的 Rider!完美支持 Unity 和 Godot,用起来也比其他的用起来舒服多了。
之前吐槽你内存占用高、配置冗余;我承认其实是我的问题。
总之,你知道的,我一直是 jetBrains 全家桶的忠实用户!!!

炸裂后台

2024.05.08

企鹅的幽默后台系统,只是录个静态资源,非得把全库的资源对象拉回来(大概20万个对象),越录只会越卡,抗压能力也脆弱不堪,请求间隔低于300大概率崩,并发超5个大概率429(掉登录态)。。。

页面也有问题,请求数据时,任意操作一下键盘直接中断请求,又因为请求是嵌套的,所有请求的数据都会丢失(包括已请求回来的)

只能说相当炸裂了,哪位神通开发的,非得这样折磨人啊

补个漏

2024.04.16

补个之前关于中文字符串处理的漏。

之前在关于 go 判断字符串中汉字,说过可以用内置的 unicode 包的 Han 处理集去进行判断处理,但也补了一句这个处理集可能处理的不全面;今天在 Javascript 处理类似问题时,心血来潮想对比一下各语言的处理情况,看了一下 Unicode 的汉字编码范围和 go 的源码里支持的汉字范围,发现其实基本都覆盖到了。

但还是要说一下,汉字目前保守都超十万了,Unicode也是不能完美支持的。

小技巧6

2024.03.11

撤销之前错误提交的 Commit

# 重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
git reset [文件路径]

# 重置暂存区与工作区,与上一次 commit 保持一致
git reset --hard

# 重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变
git reset [commit id]

# 重置当前分支的 HEAD 为指定 commit,同时重置暂存区和工作区,与指定 commit 一致
git reset --hard [commit id]

# 重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变
git reset --keep [commit id]

# 新建一个 commit,用来撤销指定 commit 后者的所有变化都将被前者抵消,并且应用到当前分支
git revert [commit id]

# 暂存操作
# 只暂存被追踪的文件
git stash
# 暂存所有文件并添加说明
git stash [save '说明信息'] [-u]
# 查看 stash 列表
git stash list
# 取出最近一次的 stash
git stash apply
# 取出 stash 列表里对应数字的暂存
git stash apply 数字
# 取出并删除最近一次的 stash
git stash pop
# 清空所有 stash
git stash clear

Git Commit 建议

2024.02.02

feat : 新功能、新特性

fix : 修改 bug

perf : 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)

refactor : 代码重构(重构,在不影响代码内部行为、功能下的代码修改)

docs : 文档修改

style : 代码格式修改, 注意不是 css 修改(例如分号修改)

test : 测试用例新增、修改

build : 影响项目构建或依赖项修改

revert : 恢复上一次提交

ci : 持续集成相关文件修改

chore : 其他修改(不在上述类型中的修改)

release : 发布新版本

workflow : 工作流相关文件修改

小技巧5

2024.01.12

iPhone X 以上手机添加安全距离

@mixin safe-area($direction, $value) {
  @if not index(top right bottom left, $direction) {
    @error '$direction 必须为 `top`, `right`, `bottom`, `left`';
  }

  @if $value {
    padding-#{$direction}: $value;
    padding-#{$direction}: calc(constant(safe-area-inset-#{$direction}) + #{$value});
    padding-#{$direction}: calc(env(safe-area-inset-#{$direction}) + #{$value});
  } @else {
    padding-#{$direction}: constant(safe-area-inset-#{$direction});
    padding-#{$direction}: env(safe-area-inset-#{$direction});
  }
}

小技巧4

2023.12.14

写一个只需要 HTML + CSS 就能实现的圆形精度条;

为了方便这里使用了 SCSS,使用原生 CSS 也是可以的,但就是冗余代码会比较多。

<div class="progress" data-progress="75">
    <!-- ... -->
</div>
.progress {
    position: relative;
    width: 120px;
    height: 120px;
    border-radius: 50%;
    &::before { // 内圆心
        content: '';
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        width: 80%;
        height: 80%;
        background: #ffffff;
        border-radius: 50%;
    }
    &::after {
        content: '0%';
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        color: #38b7ff;
    }
    @for $i from 1 through 100 {
        &[data-progress="#{$i}"] {
            // 第一个 color 控制进度条的颜色,第二个 color 控制进度条的背景色
            background: conic-gradient(#38b7ff calc(#{$i} * 1%), #F5F5F5 0);
            &::after { content: '#{$i}%' }
        }
    }
}

这样的写法比较简单,适合一些比较简单固定的场景。

Nginx搭建流媒体服务器

2023.10.10

HLS是最常见的视频流媒体协议,HLS是一种自适应流媒体技术,可以根据用户的设备和网络条件对播放媒体内容,以获得最佳播放性能。

Nginx RTMP是一个Nginx插件,支持将RTMP和HLS流添加到媒体服务器。以ubuntu为力,下面介绍如何安装使用nginx Rtmp 插件的步骤。

# 更新
apt-get update 

# 安装依赖
apt-get install -y git build-essential ffmpeg libpcre3 libpcre3-dev libssl-dev zlib1g-dev

# 下载RTMP模块
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git

# 下载解压
wget http://nginx.org/download/nginx-1.17.6.tar.gztar -xf nginx-1.17.6.tar.gzcd nginx-1.17.6

# 拷贝一份nginx配置文件出来,准备写配置文件
mv /usr/local/nginx/conf/nginx.confnano /usr/local/nginx/conf/nginx.conf
worker_processes auto;
events {
  worker_connections 1024;
}

# RTMP configuration
rtmp {
  server 
  {
    listen 1935; 
    # Listen on standard RTMP 
    portchunk_size 4000;
    application show 
    {
      live on;
      # Turn on HLS
      hls on;
      hls_path /mnt/hls/;
      hls_fragment 3;
      hls_playlist_length 60;
      # disable consuming the stream from nginx as rtmpdeny 
      play all;
    }
  }
}

http {
  sendfile off;
  tcp_nopush on;
  directio 512;
  default_type application/octet-stream;
  server {
    listen 8080;
    location / {
      # Disable cache
      add_header 'Cache-Control' 'no-cache';
      # CORS setup
      add_header 'Access-Control-Allow-Origin' '*' always;
      add_header 'Access-Control-Expose-Headers' 'Content-Length';
      # allow CORS preflight requests
      if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
      }
      types {
        application/dash+xml mpd;
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
      }
      root /mnt/;
    }
  }
}
# 启动
/usr/local/nginx/sbin/nginx

# 测试
ffmpeg -re -i example-vid.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv rtmp://localhost/show/stream

页码:

1 2 3