看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
老实说,parse其实是最难的
查看未名空间今日新帖
最新回复:2020年6月16日 10点39分 PT
共 (18) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
w
walkrandom
大约 4 年
楼主 (未名空间)
leetcode史上最难三道题,全是parse。就没几个人做对过
420 Strong Password Checker 14.3% Hard
65 Valid Number 15.1% Hard
8 String to Integer (atoi) 15.3% Medium
所以,能用库就用库,不用库就等报错
s
squirrelrun
大约 4 年
2 楼
这就去做题。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
g
guvest
大约 4 年
3 楼
parse能不写就不写。还有一个原因是,常见的数据格式的parse,能用的库比较多。
数据预处理一下,丢给开源parse,问题不大。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
C
Caravel
大约 4 年
4 楼
csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,就好办了。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
g
guvest
大约 4 年
5 楼
csv有标准协议。但是就是这么难搞。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,就好
: 办了。
C
Caravel
大约 4 年
6 楼
标准协议没人follow, 一般人不需要handle所有case,把字符集分隔符定好, linux line end,不许用引号,problem solved。非要在field里面用分隔符,加引号,是自
己跟自己过不去。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: csv有标准协议。但是就是这么难搞。
g
guvest
大约 4 年
7 楼
你这样搞。大点的项目到最后,累积的不确定性叠加组合,就失控了。
用库是正确的做法。加上边界测试。
【 在 Caravel(克拉维尔) 的大作中提到: 】
<br>: 一般人不需要handle所有case,把字符集分隔符定好, linux line end
,不许
用引号
<br>: ,problem solved。
<br>
C
Caravel
大约 4 年
8 楼
大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责fix。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 你这样搞。大点的项目到最后,累积的不确定性叠加组合,就失控了。
: 用库是正确的做法。加上边界测试。
:
: 一般人不需要handle所有case,把字符集分隔符定好, linux line end
: ,不许
: 用引号
:
: ,problem solved。
:
g
guvest
大约 4 年
9 楼
你得先找到谁break了才行。
【 在 Caravel(克拉维尔) 的大作中提到: 】
: 大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责
: fix。
s
sunshineboy
大约 4 年
10 楼
parser的确是编程基本功 重要性不言而喻
2017年cloudflare就是因为Nginx上的一个parser bug导致大面积key泄漏
2019年CloudFlare又是因为一个regex错误 导致大面积宕机
n
netghost
大约 4 年
11 楼
我覺得非常可笑,exactly實戰中csv基本上是沒有parse的問題的。一般能100G以上的
都用csv存的,裏面的東西都是老老實實的逗號只做分割用途。
他去扯parse這些有啥意思嗎?100G會搞就是會搞,不會就是不會。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: parse能不写就不写。还有一个原因是,常见的数据格式的parse,能用的库比较多。: 数据预处理一下,丢给开源parse,问题不大。
n
netghost
大约 4 年
12 楼
cloudflare的techlead如果能把他們成天post blog一半的時間拿去好好搞他們的服務
,就不會有這些爛事了。
【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: parser的确是编程基本功 重要性不言而喻
: 2017年cloudflare就是因为Nginx上的一个parser bug导致大面积key泄漏
: 2019年CloudFlare又是因为一个regex错误 导致大面积宕机
m
magliner
大约 4 年
13 楼
这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。 去邮
局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么垃圾都
能寄的 。
以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: 大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责
: fix。
g
guvest
大约 4 年
14 楼
数据的来源往往是客户。选择给他们培训,或者自己改软件包括更多的corner cases。各有优劣。
再一个,你搜一下excel csv带来的问题。这是另外一类。
【 在 magliner(magliner) 的大作中提到: 】
: 这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。 去邮
: 局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么
垃圾都
: 能寄的 。
: 以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
i
insect9
大约 4 年
15 楼
引号加转义用yacc 处理又不难。要大范围使用的地方就老老实实上全功能的编译器呗
。自己小范围用的就随便怎么操了。
【 在 guvest 的大作中提到: 】
:
:csv有标准协议。但是就是这么难搞。
:【 在 Caravel (克拉维尔) 的大作中提到: 】
:: csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,
就好
:: 办了。
:
:
:
:
h
hadoop2
大约 4 年
16 楼
你说的是对的。前面那几个人一看就是没做过什么项目,基本还活在温室里。
实际中很多RAW数据就是很noisy,比如医疗上的直接从clinic来的。还有些schema定好的数据,都可能出各种幺蛾子,比如telemetry的数据流。pre-processing这块儿还是
很麻烦的。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 数据的来源往往是客户。选择给他们培训,或者自己改软件包括更多的corner cases。
: 各有优劣。
: 再一个,你搜一下excel csv带来的问题。这是另外一类。
:
: 这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。
: 去邮
:
: 局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么
: 垃圾都
:
: 能寄的 。
:
: 以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
:
s
sanwadie
大约 4 年
17 楼
处理复杂数据流程里的垃圾数据,不是在每个环节添加处理代码,而是对垃圾进行预处理。以csv里的垃圾数据,我会这样处理,1)csv的parser肯定用通用库,不会做任何
修改,parser自身的bug会反馈给开发者,尽量通过依赖解决,不自己折腾;2)对垃圾数据进行预处理。3)预处理部分根据不同情况进行相关处理,不同的来源,会有不同
的处理方式,没有必要强塞到一个非常复杂的代码里;而且根据具体情况和分工,未必是自己的工作,比如给源方一些提示,说不定他们一个小修改就搞定。4)另外对垃圾
要学会拒绝,学会引导客户或源端遵守必要的工业规范,不是一味迁就,迁就的结果是,会把自己和团队搞到筋疲力尽,最后做项目失败的背锅侠。
另外大家讨论问题,不要动不动就去贬低质疑其他人的能力。老实说,到这里来发帖或求问,都差不多吧,就算有差别,也不会大过图灵和某网红吧。
葵花版给了我很多帮助和乐趣,最近有闲,来得多了,发些贴,算是一点小反馈。
g
guvest
大约 4 年
18 楼
不管预处理或者程序里面改,都以测试第三方库为基础。还有就是得知道文本文件是怎么回事,csv常见的坑在哪里。不然越处理错误越多。现今有专门的data engineer这个职称,不是全无道理的。
【 在 sanwadie(三娃爹) 的大作中提到: 】
<br>: 处理复杂数据流程里的垃圾数据,不是在每个环节添加处理代码,而是对垃圾进
行预处
<br>: 理。以csv里的垃圾数据,我会这样处理,1)csv的parser肯定用通用库
,不会
做任何
<br>: 修改,parser自身的bug会反馈给开发者,尽量通过依赖解决,不自己折
腾;2)
对垃圾
<br>: 数据进行预处理。3)预处理部分根据不同情况进行相关处理,不同的来
源,会
有不同
<br>: 的处理方式,没有必要强塞到一个非常复杂的代码里;而且根据具体情况和分工
,未必
<br>: 是自己的工作,比如给源方一些提示,说不定他们一个小修改就搞定。4
)另外
对垃圾
<br>: 要学会拒绝,学会引导客户或源端遵守必要的工业规范,不是一味迁就,迁就的
结果是
<br>: ,会把自己和团队搞到筋疲力尽,最后做项目失败的背锅侠。
<br>: 另外大家讨论问题,不要动不动就去贬低质疑其他人的能力。老实说,到这里来
发帖或
<br>: 求问,都差不多吧,就算有差别,也不会大过图灵和某网红吧。
: ...................
<br>
请输入帖子链接
收藏帖子
leetcode史上最难三道题,全是parse。就没几个人做对过
420 Strong Password Checker 14.3% Hard
65 Valid Number 15.1% Hard
8 String to Integer (atoi) 15.3% Medium
所以,能用库就用库,不用库就等报错
这就去做题。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
parse能不写就不写。还有一个原因是,常见的数据格式的parse,能用的库比较多。
数据预处理一下,丢给开源parse,问题不大。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,就好办了。
【 在 walkrandom (walkrandom) 的大作中提到: 】
: leetcode史上最难三道题,全是parse。就没几个人做对过
: 420 Strong Password Checker 14.3% Hard
: 65 Valid Number 15.1% Hard
: 8 String to Integer (atoi) 15.3% Medium
: 所以,能用库就用库,不用库就等报错
csv有标准协议。但是就是这么难搞。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,就好
: 办了。
标准协议没人follow, 一般人不需要handle所有case,把字符集分隔符定好, linux line end,不许用引号,problem solved。非要在field里面用分隔符,加引号,是自
己跟自己过不去。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: csv有标准协议。但是就是这么难搞。
你这样搞。大点的项目到最后,累积的不确定性叠加组合,就失控了。
用库是正确的做法。加上边界测试。
【 在 Caravel(克拉维尔) 的大作中提到: 】
<br>: 一般人不需要handle所有case,把字符集分隔符定好, linux line end
,不许
用引号
<br>: ,problem solved。
<br>
大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责fix。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 你这样搞。大点的项目到最后,累积的不确定性叠加组合,就失控了。
: 用库是正确的做法。加上边界测试。
:
: 一般人不需要handle所有case,把字符集分隔符定好, linux line end
: ,不许
: 用引号
:
: ,problem solved。
:
你得先找到谁break了才行。
【 在 Caravel(克拉维尔) 的大作中提到: 】
: 大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责
: fix。
parser的确是编程基本功 重要性不言而喻
2017年cloudflare就是因为Nginx上的一个parser bug导致大面积key泄漏
2019年CloudFlare又是因为一个regex错误 导致大面积宕机
我覺得非常可笑,exactly實戰中csv基本上是沒有parse的問題的。一般能100G以上的
都用csv存的,裏面的東西都是老老實實的逗號只做分割用途。
他去扯parse這些有啥意思嗎?100G會搞就是會搞,不會就是不會。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: parse能不写就不写。还有一个原因是,常见的数据格式的parse,能用的库比较多。: 数据预处理一下,丢给开源parse,问题不大。
cloudflare的techlead如果能把他們成天post blog一半的時間拿去好好搞他們的服務
,就不會有這些爛事了。
【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: parser的确是编程基本功 重要性不言而喻
: 2017年cloudflare就是因为Nginx上的一个parser bug导致大面积key泄漏
: 2019年CloudFlare又是因为一个regex错误 导致大面积宕机
这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。 去邮
局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么垃圾都
能寄的 。
以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: 大型项目,更要enforce纪律,每个interface spec写好,立下字据,谁break了谁负责
: fix。
数据的来源往往是客户。选择给他们培训,或者自己改软件包括更多的corner cases。各有优劣。
再一个,你搜一下excel csv带来的问题。这是另外一类。
【 在 magliner(magliner) 的大作中提到: 】
: 这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。 去邮
: 局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么
垃圾都
: 能寄的 。
: 以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
引号加转义用yacc 处理又不难。要大范围使用的地方就老老实实上全功能的编译器呗
。自己小范围用的就随便怎么操了。
【 在 guvest 的大作中提到: 】
:
:csv有标准协议。但是就是这么难搞。
:【 在 Caravel (克拉维尔) 的大作中提到: 】
:: csv哪有那么难搞,就怕有些人把comment, quote什么都加进去瞎搞。定好规矩,
就好
:: 办了。
:
:
:
:
你说的是对的。前面那几个人一看就是没做过什么项目,基本还活在温室里。
实际中很多RAW数据就是很noisy,比如医疗上的直接从clinic来的。还有些schema定好的数据,都可能出各种幺蛾子,比如telemetry的数据流。pre-processing这块儿还是
很麻烦的。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 数据的来源往往是客户。选择给他们培训,或者自己改软件包括更多的corner cases。
: 各有优劣。
: 再一个,你搜一下excel csv带来的问题。这是另外一类。
:
: 这个说的对,要和对方说清楚, csv又不是垃圾桶,随便什么东西都能往里装。
: 去邮
:
: 局寄个东西,邮局也得问问你,易燃?易爆?液体? 给邮局多少钱也不是什么
: 垃圾都
:
: 能寄的 。
:
: 以后谁把垃圾往csv里面放,谁滚蛋。 这个要求不过分吧。
:
处理复杂数据流程里的垃圾数据,不是在每个环节添加处理代码,而是对垃圾进行预处理。以csv里的垃圾数据,我会这样处理,1)csv的parser肯定用通用库,不会做任何
修改,parser自身的bug会反馈给开发者,尽量通过依赖解决,不自己折腾;2)对垃圾数据进行预处理。3)预处理部分根据不同情况进行相关处理,不同的来源,会有不同
的处理方式,没有必要强塞到一个非常复杂的代码里;而且根据具体情况和分工,未必是自己的工作,比如给源方一些提示,说不定他们一个小修改就搞定。4)另外对垃圾
要学会拒绝,学会引导客户或源端遵守必要的工业规范,不是一味迁就,迁就的结果是,会把自己和团队搞到筋疲力尽,最后做项目失败的背锅侠。
另外大家讨论问题,不要动不动就去贬低质疑其他人的能力。老实说,到这里来发帖或求问,都差不多吧,就算有差别,也不会大过图灵和某网红吧。
葵花版给了我很多帮助和乐趣,最近有闲,来得多了,发些贴,算是一点小反馈。
不管预处理或者程序里面改,都以测试第三方库为基础。还有就是得知道文本文件是怎么回事,csv常见的坑在哪里。不然越处理错误越多。现今有专门的data engineer这个职称,不是全无道理的。
【 在 sanwadie(三娃爹) 的大作中提到: 】
<br>: 处理复杂数据流程里的垃圾数据,不是在每个环节添加处理代码,而是对垃圾进
行预处
<br>: 理。以csv里的垃圾数据,我会这样处理,1)csv的parser肯定用通用库
,不会
做任何
<br>: 修改,parser自身的bug会反馈给开发者,尽量通过依赖解决,不自己折
腾;2)
对垃圾
<br>: 数据进行预处理。3)预处理部分根据不同情况进行相关处理,不同的来
源,会
有不同
<br>: 的处理方式,没有必要强塞到一个非常复杂的代码里;而且根据具体情况和分工
,未必
<br>: 是自己的工作,比如给源方一些提示,说不定他们一个小修改就搞定。4
)另外
对垃圾
<br>: 要学会拒绝,学会引导客户或源端遵守必要的工业规范,不是一味迁就,迁就的
结果是
<br>: ,会把自己和团队搞到筋疲力尽,最后做项目失败的背锅侠。
<br>: 另外大家讨论问题,不要动不动就去贬低质疑其他人的能力。老实说,到这里来
发帖或
<br>: 求问,都差不多吧,就算有差别,也不会大过图灵和某网红吧。
: ...................
<br>