V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  henix  ›  全部回复第 1 页 / 共 5 页
回复总数  88
1  2  3  4  5  
16 天前
回复了 shujuliuer 创建的主题 Windows 可能是全球最快捷的修改 hosts 文件方式
有意思,但怎么没显示需要管理员权限的提示?
在 gcc 14 上修改之后会输出这些:

···
test.c: In function 'main':
test.c:21:51: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
21 | char checkSizeOfInt[sizeof(x)] = {checker((int)&checkSizeOfInt)}; \
| ^
test.c:26:5: note: in expansion of macro 'TEST'
26 | TEST(struct X);
| ^~~~
test.c:22:9: note: '#pragma message: Value: struct X'
22 | _Pragma(TOSTRING(message("Value: " #x))) \
| ^~~~~~~
test.c:26:5: note: in expansion of macro 'TEST'
26 | TEST(struct X);
| ^~~~
···

没看到什么结构体大小啊
@Nosub 确实,我今天又看了下,有精确到词的 api 参数,之前只是在控制台网页上试了一下
54 天前
回复了 xhwdy26 创建的主题 程序员 从微服务走向单体化
我理解单体应用 vs 微服务只是部署运维的差别,跟 git 和代码怎么管理没关系
至于开发环境,可能是每个人自己电脑上 wsl2 或虚拟机?
个人最喜欢 https://github.com/hyperhype/hyperscript 纯粹用 js 生成 html
我用了 Go 的错误处理后有个感受:调用栈真不是必需的
说起调用栈我就想起网传的这张图: https://www.cnblogs.com/jhj117/p/5627224.html
那么多调用栈全是中间层的,对排查错误也没啥帮助

但题目中的这种情况属于信息过少,也无法很好排错
那怎么办
我认为很多时候我们需要的不是调用栈,而是错误的上下文
比如读写文件错误的时候的文件名、请求上游 API 错误的时候的 url
而这些都不是简单的一个调用栈能自动解决的,都需要程序员在错误发生的附近手动添加
在错误向上传递的过程中,如果哪层有很重要的上下文,就在那一层把相关信息加到 err 里

Error: unexpected '>' at the beginning of value 这种错误,应该把参数名和值都输出出来,并且当 err 传递到 controller 层的时候,附加上请求信息
我的话这种情况不会使用 panic / recover ,那个是给意料之外的严重异常用的
这种确实需要一路 return nil, err
如果需要中间处理,那在最开始创建 err 的时候选择一个特定类型,中间件用 errors.Is 判断
以上是如果你用网上的常用框架的话就这么做

我个人认为这些框架的错误处理设计得不好,我开发自己的 web 项目的时候不用任何框架,只用 go 标准库
我设计的 controller 会返回:(结果, err1, err2)
其中 err1 代表用户输入错误,比如参数检查错误,要给用户返回 4xx
err2 代表服务器内部错误,要给用户返回 5xx
用这种方法,不需要 errors.Is 判断类型,只需要判断 err2 != nil 即可
可以多从特性的角度比较不同语言,把语言拆分成特性,掌握一种语言之后,再掌握有相同特性的语言就容易了
比如同样是迭代,有些语言是 for 循环,有些是 iterator ,还有些是 generator
比如 js 数组的 filter map ,Python 里有一样的东西
再比如一些多线程数据结构,如果你掌握了 Java 的多线程,在 Python 里也可以用类似的方式思考:
https://stackoverflow.com/questions/10236947/does-python-have-a-similar-control-mechanism-to-javas-countdownlatch
用 shellcheck 静态检查一下
程序员属于高收入群体,说出去容易遭大伙嫉妒,但如果说秃头,那大伙就哈哈大笑了
112 天前
回复了 jqknono 创建的主题 程序员 A 股有交易 API 吗
这种不可能完全开放的,联系券商,申请开通 QMT
112 天前
回复了 henix 创建的主题 FFmpeg ffmpeg 处理后视频时长问题
今天研究了一下,确实是最后一步的 concat 用的片段是 trim 之后没加 setpts ,之前有个回复提醒了我。

最后一步修正之后的 filter_complex:

```
"[fv]split[fv1][fv2]",
"[fv1]trim=0:7[fv1t]",
"[fv2]trim=7,setpts=PTS-STARTPTS[fv2t]",
"[fa]asplit[fa1][fa2]",
"[fa1]atrim=0:7[fa1t]",
"[fa2]atrim=7,asetpts=PTS-STARTPTS[fa2t]",
"[fv1t][fa1t][10:v][10:a][fv2t][fa2t]concat=3:1:1",
```

现在已经正常了,感谢各位的讨论
113 天前
回复了 henix 创建的主题 FFmpeg ffmpeg 处理后视频时长问题
感谢各位回复!
我刚才发现在完全不使用原始的 加载.mp4 的情况下依然会出现这个问题,可能是我的思考方向错了,今天被这个问题心态搞得有点绷不住。。。
目前初步怀疑是最后一步 concat 之前会把一个大视频拆分成前后两段,后面那段 trim 之后没加 setpts 导致的(因为前面一段正好是 7s ,让我误以为是原始视频的 7s )
有后续进展再更新
113 天前
回复了 henix 创建的主题 FFmpeg ffmpeg 处理后视频时长问题
@msg7086 初学视频编辑,还不知道你说的这些名词啥意思...但最后 concat 那一步我对齐了分辨率都是 1920x1080 ,帧率都是 60 fps ,还有啥需要注意的吗
113 天前
回复了 henix 创建的主题 FFmpeg ffmpeg 处理后视频时长问题
@lovelylain ffprobe -loglevel trace "加载.mp4" 贴到这里了: https://gist.github.com/henix/0ae8a97aeb78fc60206e4b75464fcfbd
这个原始视频是别人给我的,估计应该是用 Adobe 的软件做出来的
参考微信读书、豆瓣阅读的那种黄色背景
sqlc
169 天前
回复了 yiboliueki 创建的主题 Windows 有没有剪贴板历史记录的软件
CLCL
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5506 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 08:49 · PVG 16:49 · LAX 01:49 · JFK 04:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.