V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  crclz  ›  全部回复第 1 页 / 共 35 页
回复总数  684
1  2  3  4  5  6  7  8  9  10 ... 35  
2021-12-22 00:40:55 +08:00
回复了 Akiya 创建的主题 程序员 这次 log4j2 安全漏洞会不会带来使用商用库的风潮?
商用防火墙会成为需要。大厂都是直接用防火墙拦截疑似攻击数据,然后再催促大家显示升级库版本。

另外,同样是开源,微软的开源质量就会高很多。不能把社区开源和商业公司开源混为一谈。
2021-11-25 00:39:54 +08:00
回复了 gibber 创建的主题 程序员 请教大家利用 mysql 存储过程生成规则唯一编号的方式可行吗?
仅仅考虑楼主提出的需求,提出以下解决方案:

表 X(年月 int, 流水号 int)。例如(202111, 1)

def GenerateOrderId() -> str:
年月 = 获取当前年月()
num=( update 表 X set 流水号=流水号+1 returning 流水号)
return 格式化(年月,num )

如果数据库并发不够,可以流水号=流水号+10 之类的,然后服务端将生成的 id 全局缓存起来。

这样做不会错的,我司就是这样干的。
2021-11-20 11:01:49 +08:00
回复了 kikione 创建的主题 程序员 什么情况下需要 try catch ? 数据库增删改需要吗
异常处理原则如下,对无 gc 语言都适用:

1. go 和 java 的异常处理思路( exception vs errorcode )没有本质区别

2. 异常代表了 ExecutionFailure ,代表了 exceptional 。execution failure = exceptional.
ref: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/exception-throwing
如果这种情况并非 exceptional ,那么请以 errorcode 返回(或者 xxresult )。
评价:如果你对异常和 errorcode 两种等价的形式的应用场景不明白,那么这一条可以指导你。

3. 吞调异常代表了未知到已知的转换。(未知:exceptional 。吞掉:catch 而不 rethrow )
解释:catch 而不 rethrow 代表了:对于被调函数,这种情况是 exceptional 的,但是对于调用者来说不是。

4. 不忽略未知异常。
翻译:不 catch Exception ,而是 catch SomeException 。
理由:未知异常代表着潜在的 bug 。
例外:根异常捕获器需要 catch Exception ,但是如果是未知的异常,需要通过报警系统通知开发者。

5. catch 、rethrow 、打印日志是正交的概念。
示例 1:rethrow+打日志代表了遇到了 exceptional 的情况,并且想要记录一些诊断信息。
示例 2:只 catch 不 rethrow+打日志代表了遇到了意料之中的错误,并且想要记录一些诊断信息。


对于楼主的问题,以下是具体回答:

在我们公司,数据库驱动层会打日志(和 metrics ),以跟踪具体库的成功率指标,提升可监控性。
开发者如果想要获得面向业务的监控指标,那么需要自己 catch+打日志(+metrics )。(因为一个业务操作可能涉及多个数据源、多次查询)
那么,catch+打日志后是返回 errorcode 还是 rethrow ?请参考 1-5.
初始实现没啥问题,第二版过拟合了(现在最简,但是不能很好应对新需求)
2021-10-17 12:37:31 +08:00
回复了 nanmu42 创建的主题 Go 编程语言 Go 1.18 泛型会来,但官方库支持可能得等等
预言:如果 golang 加入泛型,那么 golang 的工程能力(团队生产力)会被削弱。
如果要增强一个语言(例如 java )的工程能力(团队生产力),那么请在框架部分启用全部特性,然后在除框架以外的部分禁止团队成员使用泛型、继承等特性。
2021-10-17 12:33:29 +08:00
回复了 Visionhope 创建的主题 程序员 retry-go 作者评价其他别人写的重试库, 有点意思
对代码有极致的追求是一个很稀缺的素质。
我之前还蛮影响使用的。之前习惯抱着笔记本在床上看剧,中途有事,笔记本一合一开,然后再播放( b 站),画面就会卡住,但是声音还会继续播放。然后捣鼓键盘 20s 后,就会回复正常,挺影响体验的。浏览器是 edge 。firefox 不存在这个问题。

楼主可以尝试把 edge 的“使用标签页休眠功能节约资源”关掉,看看是否能够解决问题(我没试过)
2021-10-17 01:44:33 +08:00
回复了 xinhaiw 创建的主题 .NET IdentityServer 收费了?
@gaojiangouyu autofac tdd 我还靠它
kde 永远的神
2021-10-12 22:25:56 +08:00
回复了 NeverBoom 创建的主题 生活 我想逃避现实
加油楼主
2021-10-11 21:47:21 +08:00
回复了 balabalaguguji 创建的主题 Jira 怎么国内没人模仿个 Jira 呢 ?
试试飞书的多维表格的看板视图,比较简洁,功能没有 teambition 丰富,没有权限控制等东西,目前我用于管理私人的工作进度。
2021-09-12 22:43:18 +08:00
回复了 young1lin 创建的主题 随想 低效能程序员的行为与思维,共勉
个人认为,最重要的书籍是 DDD 、IDDD ( lz 也提到了);再配上足够的实践量和回顾书籍(看很多遍)。
基于这些你才有可能 clean code 、clean architecture 、tdd 、能够写单元测试、避免过度设计、减少单个函数行数……
2021-08-26 19:23:00 +08:00
回复了 boneyao 创建的主题 奇思妙想 如果下雨闹钟定在 7: 30 如果不下雨闹钟定在 8:10
定 2 个闹钟:7: 30 、8:10 。再连接 adb,能够程序模拟滑屏。

假定你已经有途径判断下不下雨了,那么如果程序检测到下雨,那么就使用滑屏指令关掉闹钟。

另外,adb 可有线也可无线(无线没试过),所以很方便。
2021-08-25 23:27:46 +08:00
回复了 seasona 创建的主题 Windows windows 如果不分区,该怎么管理文件?
1. windows 下很多软件存在乱放自身数据的问题,很多情况下软件会把自身的信息文件放在文档等库目录下,使用起来会和自己创建的文件干扰,影响查找效率。

回答:
在 windows 中,大概有这么几个放东西的地方,大概分为 2 个维度(全局、用户)、(软件本体、用户数据与配置):
a. C:/ProgramFiles:存放为所有用户安装的软件本体,和 linux 的 /usr/bin 相似。这个目录是需要管理员权限写入的,所以大概没有程序会把用户数据放在这里。
b. C:/ProgramData ( aka %PROGRAMDATA%):顾名思义,是程序数据。进一步说,它是所有用户的数据或配置,对应 /etc (全局配置) + /var (全局数据)。
c. $HOME/AppData/Local ( aka %LOCALAPPDATA%):单个用户安装的软件本体。你的 vscode 软件本体就在这里。这个目录的目的是无需管理员权限也能够安装软件。linux 里面对应的是$HOME/.local 。
d. $HOME/AppData/Roaming ( aka %APPDATA%):单个用户的用户数据与配置。你的 vscode 配置文件就在这里。和 linux 的$HOME 的作用相似。linux 里面对应的是$HOME 。
e. $HOME 。对应 linux 的$HOME,存放一些用户数据与配置。

请注意,以上是匆忙收集的资料,可能有错漏。

那么,回到楼主的问题。如果我们在 windows 的$HOME 下存放我们自己的文件,那么会和其他程序的混在在一起。linux 的$HOME 也存在这个问题。这时候,就可以善用资源管理器的隐藏文件功能,将不顺眼的、以.开头的文件隐藏起来。
另外,也可以自己单独建一个目录,例如$HOME/myspace,然后一切都清净了。桌面也是一个不错的选择。

2. 像游戏等不能归类到自带库的文件,应该存放到哪里?

回答:放在 C:/ProgramFiles 或者 $HOME/AppData/Local 。但是,鉴于这两个目录都是由 windows 安装程序管理的,你可以你也可以在$HOME 下面单独开一个文件夹,例如 mygame,没人会阻止你。就像 linux 不必非得将用户软件放到~/.local 里面,也可以放到~/.locallocallocal 里面。关键是规则清晰,容易记忆。你也可以将游戏放到 C:/MyGames 。

3. 如果想要自己创建文件夹,应该放在哪里?如果有 d 盘,可以直接放在根目录下,管理很方便。现在不分区的话,放在 c 盘根目录肯定不行,一堆系统目录,很影响查找效率,放在用户目录下,也是一堆自带的文件夹,看起来碍眼。

回答:与 1 相似。
一点也不奇怪,每一个 async,await 都有其存在的价值。只要理解了就好了。

https://gist.github.com/crclz/2308cc72cc3f37836a6cab22c1981849
2021-08-17 23:21:46 +08:00
回复了 zhaorunze 创建的主题 阅读 大家来推荐一本对你思想观念影响最大的一本书
nntaleb 反脆弱
2021-08-11 23:52:45 +08:00
回复了 waiaan 创建的主题 程序员 要多健壮的代码才能支撑起千变万化的需求?
1. 战略设计:充分理解业务领域、合理划分 BoundedContext,并在 BoundedContext 间的耦合点做足抽象,保证耦合点变化少(例如,最开始只有手机号注册,后面来了微信微博用户。如果合理划分了 BC,那么只需要改身份与访问上下文,其他模块不需要改一行代码、一行测试代码)
2. 遵循 DDD 的战术设计( less important than (1) )
3. 代码需要有测试。易于测试的代码大概率是好的代码(例外:test induced design damage )
4. 少魔法、少炫技的代码,尽量减少他人的障碍

说开闭原则的,还只是停留在理论阶段的菜鸟。web 框架可以开闭,例如 asp.net 、spring,但是你的业务代码中的 application layer 你使用继承的方式扩展一个试试?根本原因在于 application layer 的职责是协调,是非常贴近核心需求的。新到来的需求用继承来扩展,如果你实践过,会发现非常痛苦。

开闭原则描述的是通过继承、重写方法来进行扩展。打个比方,你写一个字可以越描越好看,越描越有楷体的感觉;但是你写作文如果这里插入一句,那里插入一句,就会乱七八糟。
2021-08-11 00:31:11 +08:00
回复了 ztoben 创建的主题 Python mongo 如何对比一个文档的更改?
可以 Replace (全量更新)
2021-08-11 00:23:40 +08:00
回复了 8e47e42 创建的主题 Google 被静默推送了臭名昭著的 Chrome Privacy Sandbox,大家都关了吗?
@deetz 这个好像不在于非通用标准。举个例子吧,我用 firefox 看 bilibili,每次点击弹幕开关按钮后,按空格键暂停,视频会如期望般暂停,但是弹幕的开关状态也会随之改变一次(估计和某种焦点有关)。飞书也是,飞书在线文档我复制的时候用 firefox 有时复制不了(同时飞书还特意提醒我当前浏览器不兼容,请使用最新版浏览器)。

我作为一个后端对于前端的实践不太多,只懂 angular 和 vue,在此发表一点简单的见解:我估计大厂的这些应用都涉及到前端比较 hack 的领域,例如在线文档。能够 work 就不错了,估计连开发人员都不知道怎么调出来的。所以他们一般在 chrome 上测试通过也就直接上线了,无暇去顾及占比少的 Firefox 。哔哩哔哩的重心也在手机端,网页端 Firefox 都是随缘修复,或者根本不知道有问题。
2021-08-09 22:56:17 +08:00
回复了 CSGO 创建的主题 问与答 JS 前端倒计时时间不准确如何解决?
我记得上学的时候做过一个定时器。老师想要全班考试的时候能看到倒计时,有紧迫感。
用的是 Thread.Sleep,结果第一版出来,考个理综,我们班比其他班多 5 分钟时间,哈哈哈。
1  2  3  4  5  6  7  8  9  10 ... 35  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1005 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 22:18 · PVG 06:18 · LAX 15:18 · JFK 18:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.