V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  a132811  ›  全部回复第 2 页 / 共 20 页
回复总数  399
1  2  3  4  5  6  7  8  9  10 ... 20  
2024 年 7 月 20 日
回复了 qW7bo2FbzbC0 创建的主题 Go 编程语言 被 go 语言的 json.Marshal 恶心到了
楼主已经自己确认了答案了:是这个 sql 库本身实现得有问题,跟 go 、json.Marshal 都无关。

在某种意义上还是 json 的表达能力不足导致的

## 不同语言的 json 库对[]byte 的处理
json  本身无法区分 string 和 `[]byte`,只有 string 。

1. php 自己本身就没有`[]byte`,甚至连 dict/array 都不区分。直接回避了问题
2. python  有`[]byte`, 但是不能 json 序列化, 如果是 utf8 就需要用 data.decode('utf-8') 要先转成 str
3. golang  序列化`[]byte` 时用 base64 将它转成 string, json 反序列时则用相应的类型去关联`[]byte`类型
4. java , c sharp 跟 golang 处理方式一样的。

## golang 对 json 的支持

json.Marshal 方法:

1. json.Marshal 本身是使用了内置的 json encoder 默认使用 base64 处理 bytes, eacapHTML 默认为 true
2. 但是 json.RawMessage 本身带的 json encoder ,不会对 bytes 做任何处理,如果 bytes 不是 json 格式,就会报编码出错

某些 golang  库实现,可能出于减少值复制,会用 bytes 去表达 string ,但序列化时就只能是 base64   string 了。

如果接收者不要 base64 string json, 解决办法有:

1. 自己先定义一个相应 string struct ,再将 bytes struct 转成 string struct ,最后 json  序列化自然就不是 base64 了
2. 通过反射将 string struct/map 等 转成  string map 再 json. 参考: https://github.com/ahuigo/golib/tree/main/spec/object/convert/objbytes2string_test.go
2024 年 7 月 15 日
回复了 iorilu 创建的主题 Rust rust 用来开发一些命令行程序是不是神器
@w568w go 也有 urfave/cli 等工具提供一键生成 help message 、config 、type checking 。golang 算是 rust+python 的折中方案。

@sagaxu go 泛型库 lo 可避免写 for 、interface 转换。如果想用函数式的话,可试试 ibm 的 fp-go 库。

错误处理避免 if err 的话,可以像 bufio scan 的方法那样避免 if err 。不过平时开发一般还是 if err 简单顺手。另外错误 chain 是一定要支持,方便定位错误的调用栈
2024 年 3 月 29 日
回复了 GuluMashimaro 创建的主题 Visual Studio Code 有没有必要从 jetbrains idea 换到 vs code
我是主力用 vscode 写 js/ts/go/python 好多年了,偶尔用来写 python/rust/java 。

最开始 java/python 的插件都遇到过很影响开发的 bug ,发 issue 后经过很长时间才解决的,不过目前使用良好(轻度使用)
2024 年 1 月 24 日
回复了 heroisuseless 创建的主题 分享创造 还在用 JS?过来看看 GS
这是逆 ECMA/TC39  标准而行呀。es 不是不想简化,是要兼容,而且这些年语法上渐近的精进了不少了。

Deno 走 web 标准,做得很好,但是就因为跟 node/npm 不兼容,推广起来老费劲了
2024 年 1 月 19 日
回复了 lcj2class 创建的主题 程序员 Zig 中文月报 202311 | 传值或传引用,这是个大问题
感觉 rust 的痛是暂时,zig 的痛是长期的
2024 年 1 月 8 日
回复了 awesomePower 创建的主题 程序员 前端求教,有没有懂 flex 布局的
2024 年 1 月 8 日
回复了 awesomePower 创建的主题 程序员 前端求教,有没有懂 flex 布局的
@a132811 chrome version 120 默认 line-height 1.15
2024 年 1 月 8 日
回复了 awesomePower 创建的主题 程序员 前端求教,有没有懂 flex 布局的
你的例子中:分上下两个 flex row. 在 chrome version 120 下:

第一个 row ,最大的 block 身高= 35px*1.15 + margin(70px) = 110px
第二个 row ,最大的 block 身高= 190px

纵轴剩余: 500px - 110px - 190px = 200px, 两者平分各 100px 。

第一个 row:110+100 = 210px
第二个 row:190+100 = 290px (强制指定 item 的 190px 则不受影响)

---------
BTW ,这个类似主轴分配规则,比如:

```html
<div style="width:400px;display:flex">
<div style="width:100px;flex-grow:1">item-a</div>
<div style="width:100px;flex-grow:2">item-b</div>
</div>
item-a, item-b 会根据 flex-grow 值,分割剩余的 200px(仅当存在剩余空间时)
item-a: 100 + 200px*(1/3) = 166.66
item-b: 100 + 200px*(2/3) = 233.33
```
2023 年 12 月 23 日
回复了 standin000 创建的主题 Visual Studio Code vscode 界面上是否有浏览的前进返回按钮
我一直用的 vscode 自带的快捷键 go forward / go back
mac 的话,按 cmd k cmd+s 看一下你的快捷键是什么
2023 年 12 月 17 日
回复了 CarlJ9 创建的主题 商业模式 免费浏览器扩展的出路只有被收购吗?
chrome extension 的权限控制太水了,默认就是 On all sites 模式
不知道为什么不改成默认每个 extension 是 when you click extension 模式。
2023 年 12 月 13 日
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
@keakon 嗯。
我主要是想确认否有简单优雅的实现(对调用方要简单/直接/安全)、以及更通用的 cache 库。

库本身的复杂性对用户是透明的,内部是否反射+泛型都 ok ,实际上本库的内部就是反射+泛型结合的
2023 年 12 月 12 日
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
@keakon 如果输入用反射而不用泛型,那类型检查就没有了; 输出同理。

或许我没有 get 到你的意思?你是否可以给个伪代码,或者 demo ?

ps: 反射损失的性能很多场景可以忽略不计
2023 年 12 月 11 日
回复了 a132811 创建的主题 Go 编程语言 利用泛型实现的 golang 缓存装饰器
@keakon 多参数的话不需要用反射。
其实以前我用反射实现过,使用起来更复杂、且会损失类型检查,目前用泛型实现就简单许多了。

如果是多参数的话,需要用包装函数(不需要反射)将参数将降维(示例: https://github.com/ahuigo/gofnext#cache-function-with-more-params2

ps: 之所以没有封装成支持任意不定参或 any 类型的函数,是因为目前 go 的泛型参数不支持对约束再做断言。

如果你有更优雅方式的话,望回复告之,也欢迎 issue 、pr 。
2023 年 12 月 8 日
回复了 v2li32 创建的主题 PHP 讨论下 PHP 转 go 的水平
开发效率只是一方面,有时需要关注以下问题:

- 维护成本、重构效率,如何最大程度避免重构火葬场
- 对底层内存的控制能力
- 内存常驻时的泄漏风除
- 类型隐式转换的风险
- 底层 extension 开发的容易性
- 底层库源码易读性、扩展性、调试性
- benchmark/profile 分析的易用性、成熟度
- 单测、功能测试的容易度

以上是 php 做得不如 golang 的地方,应该不完整。如果不需要考虑这些问题,php 当然也可以用得很爽。

BTW, php 相对 go 还有一个劣势:
如果想成为 php 专家,需要看一下 c 维护调试下 c 扩展,付出的时间、走的弯路要比 golang 多,毕竟 golang 的源码精简、历史包袱屎山很少
2023 年 12 月 4 日
回复了 ludaming 创建的主题 酷工作 招聘高级 golang 开发 20-35k,可远程办公
@baihekong 现在的 gc STW 一般比网络开销小多了。
再说,这事要看场景,一大堆高延迟还带 gc 的 js/h5 小游戏、小程序都活得好好的
2023 年 11 月 24 日
回复了 myvin 创建的主题 程序员 Svelte 要放弃 ts 了,各位 wyz 们怎么看
只是作者的个人喜好。

并不是真的完全放弃,依然要用 SvelteKit 生成 types 。
上次看到新闻还是大约半年前,现在官方的源码依然需要 tsconfig.json 。

工具而已,不要上升到派系之争。
但是,当需要类型的场合,依然是 ts 最强大。jsdoc 不能替代 ts ,它本身类型推导能力很有限。

我觉得 ts 的问题最大的问题不是它复杂,而是许多基础的 npm 包像 jest 到现在对 ts 支持都不完善,从上层到到低层的改造成本很大,有的时候不用 ts 还更简单。deno 下的 ts 体验倒很好,可惜生态不好
2023 年 11 月 24 日
回复了 dw2693734d 创建的主题 前端开发 这前端效果是不是有点逆天了
还有几个也挺有创意的:

地址栏贪吃蛇
纯 css 打地鼠

不过我觉得最神的是 jslinux/jswindows
2023 年 11 月 8 日
回复了 DomenicCarter 创建的主题 程序员 专为开发者开发一个工具集合网站
现在我不用这类 web 工具了。
大多数时间用,copilot chat 或者 自定义的 cli
2023 年 10 月 27 日
回复了 Worldispow 创建的主题 分享发现 感叹手机价格越来越贵了
你要的可能是红米 K ,目前也是我现在的主力机。
要说贵,小米问世的 2011 年前,手机才叫贵。那时智能机就几千了。

那时中关村的公司平均收入还没过万,我的 HTC 智能机就花了几千,跑应用那叫一个卡呀、天天刷 ROM 。
后来小米出手机后看价格才 2000 果断入,后来又出了几百的红米买来送爸妈、亲人。
1  2  3  4  5  6  7  8  9  10 ... 20  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   920 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 20:23 · PVG 04:23 · LAX 13:23 · JFK 16:23
♥ Do have faith in what you're doing.