分享一个猪队友,都 8012 年了居然还有那么菜的后端可以混迹在互联网公司! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
fansangg
V2EX    程序员

分享一个猪队友,都 8012 年了居然还有那么菜的后端可以混迹在互联网公司!

  •  
  •   fansangg 2018-08-15 02:08:00 +08:00 via iPhone 33290 次点击
    这是一个创建于 2659 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天快下班的时候,写完一个功能正准备测试,然后调接口的时候发现 token 过期了,然后重新登录。

    登录的流程之前走了不下一百遍,没想到居然报错了!查看日志发现是 json 解析报的错,如何我看了一下返回的 json 格式,发现地址列表返回的居然是空字符串

    ``` address:"" ```

    然后我找对接的后台同事说,我说空的话你要返回一个 jsonarray 啊,就是[]。



    然后等了 10 几分钟,后台的兄弟和我说改好了。然后我再调了一遍,依然是报错,然后看了一下返回的数据...

    address:"[]"

    我的天呐,真的是改好了,太优秀了!从业以来遇到过最优秀的同事!看起来也应该有 30 岁了,怎么还会那么菜!他是怎么混过来的!
    第 1 条附言    2018-08-15 14:04:09 +08:00
    太优秀了,一觉醒来居然那么多回复,看到一堆人在说没有统一规范,没有好好沟通,我真是纳闷了,json 格式规范你们看过吗?还要订什么规范?我从业四年真的没见过这样返回数据的。
    第 2 条附言    2018-08-17 10:50:18 +08:00
    各位「猪」们不要再回复了,各位有浏览论坛的时间不如好好学习,希望各位都能成为大牛,让世界以你为规范,加油!
    319 条回复    2018-08-20 03:09:59 +08:00
    1  2  3  4  
    codermagefox
        1
    codermagefox  
       2018-08-15 03:13:32 +08:00 via iPhone
    你确定他不是故意这么返回给你的?
    meloner
        2
    meloner  
       2018-08-15 05:24:32 +08:00 via Android   4
    幼稚, 本质上是个沟通问题, 你需要一些防御性编程的意识, 我也是前端
    ryd994
        3
    ryd994  
       2018-08-15 06:20:30 +08:00 via Android   1
    你们接口文档不先商量一下吗?
    fansangg
        4
    fansangg  
    OP
       2018-08-15 06:39:48 +08:00 via iPhone   9
    @ryd94 这还需要商量,空数组返回 string 有人能这样干吗?
    fansangg
        5
    fansangg  
    OP
       2018-08-15 06:45:09 +08:00 via iPhone
    @codermagefox 应该不是,我看着他写的返回了一个空的 array,然后转 json 到我这就是“[]”带引号的 string,他那边是 php 写的,我对 php 不太熟,但是我觉得肯定是要转成 jsonarray 这样
    fansangg
        6
    fansangg  
    OP
       2018-08-15 06:47:53 +08:00 via iPhone   1
    @meloner 这你也要来杠一下,行行行,您老写代码谨慎,我甘拜下风。
    matsuz
        7
    matsuz  
       2018-08-15 06:49:01 +08:00 via iPhone
    有可能是在某一步被自动转换成了 string,而他没有注意到这个问题
    fanqianger
        8
    fanqianger  
       2018-08-15 06:52:59 +08:00   6
    看不出来这有啥好黑的。你和他沟通一下就好了,在网上发帖起不到任何实质性的作用。
    fansangg
        9
    fansangg  
    OP
       2018-08-15 06:59:04 +08:00 via iPhone   1
    @fanqianger 我没有在黑什么,我只是在吐槽,因为猪队友的低端错误延误了我的工作进度,沟通什么的发现问题就马上沟通了,但是在我的认知里,这种错误是不应该发生的
    hanxiV2EX
        10
    hanxiV2EX  
       2018-08-15 07:17:55 +08:00 via Android
    自己做后端
    hrong
        11
    hrong  
       2018-08-15 07:21:03 +08:00 via Android   75
    一点小事就生气, 你也干不了什么大事。
    Quarter
        12
    Quarter  
       2018-08-15 07:26:11 +08:00 via iPhone   1
    额,我觉得可能只是失误,有的时候很就没有改这部分代码,然后改的时候就忘记代码逻辑,以为是这么改的,没想到改的还不是最终结果,你跟他说写完了先 postman 测试一下对不对,应该也算不上猪队友吧,楼主也别生气了,如果他告诉你只能返回字符串,是改不了数组的,那就比较猪队友了,其实这种错误还是挺常见的,莫生气
    haimall
        13
    haimall  
       2018-08-15 07:34:13 +08:00 via Android   11
    在别人身上看到的缺点,都是自己的映射。
    IssacTomatoTan
        14
    IssacTomatoTan  
       2018-08-15 07:34:58 +08:00 via Android
    后台 MVC 说没有值系统就会返空 不会给你空数组。 各种只会数据库取状态返回参数让前台判断只为了展示给用户 完成 / 未完成
    waruqi
        15
    waruqi  
       2018-08-15 07:38:21 +08:00 via Android
    这种事情多了去了 没必要特地拎出来说。习惯就好。
    meteor957
        16
    meteor957  
       2018-08-15 07:48:09 +08:00 via Android   2
    大惊小怪
    jiangjz
        17
    jiangjz  
       2018-08-15 07:49:09 +08:00 via Android
    我们前端都是自己解决这些问题的
    nosay
        18
    nosay  
       2018-08-15 07:55:50 +08:00 via iPhone   1
    身为后端,每次都会在 postman 里测试好,然后发接口文档给相关同事。但还是依然避免不了 ios 那大兄弟 app因类型问题闪退的情况,互相鄙视已属常态,淡定就好
    jorneyr
        19
    jorneyr  
       2018-08-15 08:03:35 +08:00
    可能是你们的规范没有规定好什么情况返回什么数据,我们有强制规定。
    lyklykkkkkkk
        20
    lyklykkkkkkk  
       2018-08-15 08:19:52 +08:00   8
    另一个思路是

    反思自己如何沦落到与之为伍
    natscat
        21
    natscat  
       2018-08-15 08:21:32 +08:00
    不说前面的谁对谁错 改了之后居然返回"[]" 这样写的我是没见过的
    duoglas
        22
    duoglas  
       2018-08-15 08:22:40 +08:00   1
    遇到这类问题不去推进整体流程规范改进避免后续发生,来这里发个吐槽抖机灵,不怕以后的面试官在这里看到黑历史么?
    qilishasha
        23
    qilishasha  
       2018-08-15 08:28:22 +08:00
    不是应该返回 null 吗?
    hrong
        24
    hrong  
       2018-08-15 08:29:40 +08:00 via Android
    空数组(数组无元素的特殊情况)
    空字符串(字符串无元素的特殊情况)
    null

    上面这些概念要先在项目组里面整明白了,大家也就不会推脱责任骂对方猪队友了吧。。。
    Braid
        25
    Braid  
       2018-08-15 08:30:44 +08:00   3
    楼主在这里抛了个很水的一个问题,感觉人就是水的,哈哈哈哈
    tnt666666
        26
    tnt666666  
       2018-08-15 08:32:49 +08:00   6
    天天写前端不烦吗,还 bb 啥,自己技术 low 怪谁
    beastk
        27
    beastk  
       2018-08-15 08:33:39 +08:00 via iPhone
    你们没有统一的规范,就是 50 步笑一百步,谁也别笑话谁。
    Sharuru
        28
    Sharuru  
       2018-08-15 08:34:13 +08:00 via Android   3
    有些开发在接口返回的时候,图省事都是返回 String 型的。
    比如 "id": "10",这种情况下,数组为空返回了 "" 也是常见的情况。(可能后端还纳闷为什么还要特地给你加两个括号呢)

    归根结底,还是对于数据的处理没有事先的定义。
    swcat
        29
    swcat  
       2018-08-15 08:37:02 +08:00 via Android
    这种东西定义该有提前约定的,没有按照约定来,怼回去就可以了
    v3exhost
        30
    v3exhost  
       2018-08-15 08:40:09 +08:00
    你们自己不解析空字符串的?
    前端这么好干,什么都不用做?
    phpcxy
        31
    phpcxy  
       2018-08-15 08:43:30 +08:00
    "[]" 是有点好笑,到底是怎么做到的呢?我掐指一算他应该是本想在 PHP 里面定义数组,但写错了$address = "[]" 手抖打多了引号而已,改过来就好啦。
    suikator
        32
    suikator  
       2018-08-15 08:45:37 +08:00 via Android
    原来后端这么好干 什么都不用做
    asadegg
        33
    asadegg  
      &bsp;2018-08-15 08:45:52 +08:00
    接口文档了解一下
    sonyxperia
        34
    sonyxperia  
       2018-08-15 08:50:09 +08:00
    可能他确实不知道传给你的格式不对了
    zjsxwc
        35
    zjsxwc  
       2018-08-15 08:50:09 +08:00   3
    address 是个单数啊,命名成 addresses 更合理
    wjpdev
        36
    wjpdev  
       2018-08-15 08:58:14 +08:00
    先两边约定好接口, 否则接口放到最后改来改去,自找麻烦。
    947211232
        37
    947211232  
       2018-08-15 08:59:38 +08:00
    不要过分苛刻要求,多沟通就好。
    niaobulashi
        38
    niaobulashi  
       2018-08-15 09:02:12 +08:00
    我猜楼主刚毕业
    maninfog
        39
    maninfog  
       2018-08-15 09:02:50 +08:00 via Android   2
    技术上的事情拿来吐槽,稍显幼稚了,沟通一下秒秒钟解决的事情,说不定别人只是手抖了呢
    keepeye
        40
    keepeye  
       2018-08-15 09:08:03 +08:00
    碰过一个第三方平台的接口,返回的 json: "{\"result\":\"0\",\"err_msg\":\"设备编号错误\"}" 两头有双引号
    ren2881971
        41
    ren2881971  
       2018-08-15 09:08:52 +08:00   2
    都是混口饭吃嘛。。 也不是啥高精尖的技术行业。
    LZ 想想你也会有到 30 岁的时候。。。 包容一下,你敢保证你从来没给别人挖过坑么?
    lzs5240
        42
    lzs5240  
       2018-08-15 09:09:50 +08:00
    目测是个新人
    hasbug
        43
    hasbug  
       2018-08-15 09:10:54 +08:00
    粗心或者没理解是数组还是字符串。
    属于沟通不到位,说实话,我经常这样,我前端,然后我现在总怀疑自己理解错误,总会跟后端再次确认,但是呢,人家就不耐烦,呵呵。
    killerv
        44
    killerv  
       2018-08-15 09:11:33 +08:00
    我在想为什么它能生成这样的 json,难道是自己手动拼的?
    jimplanck
        45
    jimplanck  
       2018-08-15 09:14:19 +08:00
    作为一个程序员不懂得沟通是很吃亏的
    koalli
        46
    koalli  
       2018-08-15 09:19:02 +08:00
    后端 php 的吧?我们后端也是 php 的,空数组返回 false 你敢信?实际上这是工作流程和规范的问题。
    服务端作为一个黑盒系统,不能给出稳定的类型和结果,对接的时候就是各种坑,到哪里都是坑。
    后端不跑测试用例的,对接的时候不是给 api 而是口头说的(很多),这种公司迟早会凉凉的。
    huabinglan
        47
    huabinglan  
       2018-08-15 09:19:50 +08:00
    JSON 也是有数据类型的,现在前端规范也是要求强类型相等(===),现在后端返回这种东西,面上来看后端本身就不严谨,这也不是约定的问题,而是 JSON 本身就有数据类型,按照正确数据类型返回是自然而然的事。同理存在多个 address,如果数据库没记录本身就应该返回空数组,没的说
    a191243108
        48
    a191243108  
       2018-08-15 09:20:28 +08:00/span>
    @keepeye 没问题呀这种,你 JSON.parse()就可以了,格式换一下就好了
    u14e
        49
    u14e  
       2018-08-15 09:21:43 +08:00
    所以我去做后端了
    7654
        50
    7654  
       2018-08-15 09:22:26 +08:00
    前后端分离的一个好处就是可以互相甩锅吧
    a191243108
        51
    a191243108  
       2018-08-15 09:24:01 +08:00
    这些都是小问题,没什么好烦恼的,你说一句话,不用几秒就搞定的事情,跟他沟通好,按照文档格式来,你就说这样防止出错,我估计别人手抖了一下,哈哈哈
    shily
        52
    shily  
       2018-08-15 09:26:52 +08:00 via Android
    @ren2881971 #41 我敢保证不挖这么 low 的坑。
    enenaaa
        53
    enenaaa  
       2018-08-15 09:27:39 +08:00
    应该是一个知识盲点而已。 反倒楼主, 动不动就猪队友叫唤,你就没出错的时候?就没懵逼的时候?

    设身处地地想想,其他同事也这么怼你,会有何感想。
    darktutu
        54
    darktutu  
       2018-08-15 09:29:22 +08:00
    不懂 php,但是这个变量的命名不就应该是返回一个 string 吗?也不是复数的为啥是个数组
    geying
        55
    geying  
       2018-08-15 09:32:03 +08:00
    有发帖的功夫不如两个人对下文档和数据,解决一次大家都知道怎么回事

    前端呀~
    Tink
        56
    Tink  
    PRO
       2018-08-15 09:32:30 +08:00
    这个后端是个新人
    ala2008
        57
    ala2008  
       2018-08-15 09:33:56 +08:00
    返回[]是合理的,某种情况下,返回''''也是合理的。看数据格式约定
    jdgui
        58
    jdgui  
       2018-08-15 09:35:10 +08:00   1
    楼上喷楼主的大概都是后端的。。
    USNaWen
        59
    USNaWen  
       2018-08-15 09:36:10 +08:00
    文档啊文档。。。。一开始就该订好存档下来啊
    UIXX
        60
    UIXX  
       2018-08-15 09:36:50 +08:00
    接口文档+分离测试 谁的锅谁背
    wanglilong
        61
    wanglilong  
       2018-08-15 09:38:53 +08:00
    公司没有统一开发规范,50 步笑百步。
    keepeye
        62
    keepeye  
       2018-08-15 09:40:56 +08:00
    @a191243108

    JSON.parse('"{\"result\":\"0\",\"err_msg\":\"设备编号错误\"}"')
    overflowHidden
        63
    overflowHidden  
       2018-08-15 09:45:34 +08:00
    哈哈哈哈哈哈。。其实我也遇到过,我说返回一个数组,然后就变成了'[22,22]'。。。差点被气哭
    ioth
        64
    ioth  
       2018-08-15 09:46:31 +08:00
    别把别人想得太好,或者说别人为什么要对你太好?
    vipppppp
        65
    vipppppp  
       2018-08-15 09:47:28 +08:00
    小公司的前后端分离。。一言难尽。。
    前端传来的值,不传 /None/"",都可能。。
    后端传回去的值,{"data" : {"data": []} / {"data": []}
    watzds
        66
    watzds  
       2018-08-15 09:49:33 +08:00 via Android   3
    这种低级错误,竟然这么多人辩解,可见这土壤多么肥沃,工作写代码不讲究
    v2chou
        67
    v2chou  
       2018-08-15 09:51:14 +08:00
    @nosay 捉到一个好后端 我们后台估计就是脑袋里过了一遍然后说成功了 然后要我调 然后调的时候各种报错 美名其曰 前后端联调
    leejoye
        68
    leejoye  
       2018-08-15 09:51:29 +08:00
    已 block
    wpby
        69
    wpby  
       2018-08-15 09:52:54 +08:00
    你这么吊,咋不去做后端?咋不去做 cto
    amon
        70
    amon  
       2018-08-15 09:53:28 +08:00
    我猜楼主用的是 php
    kera0a
        71
    kera0a  
       2018-08-15 09:53:34 +08:00 via iPhone
    这种情况后端的锅没得说吧,类型都给错误了还防御性编程个啥,弹出 json 解析失败就是最好的防御了,强行解析你保不住下次他给你个整型呢
    watzds
        72
    watzds  
       2018-08-15 09:53:42 +08:00 via Android
    我还见过那种徒手字符串拼接 json 的人
    overflowHidden
        73
    overflowHidden  
       2018-08-15 09:54:09 +08:00
    不过经过楼主这么一发帖和楼上一些人的言论让我明白了这种‘失误’可能在后端很正常,放宽心咯
    kera0a
        74
    kera0a  
       2018-08-15 09:55:42 +08:00 via iPhone
    @overflowHidden 我觉得这些人连这些严谨都没自觉挺可怕的
    jinsongzhao
        75
    jinsongzhao  
       2018-08-15 09:56:17 +08:00
    这体现不了后端不懂[],干嘛不做个懂后端的前端呢。只要不是手工打造的 json,如果返回的属性类型是 string,编码器会自动加上引号。如果是 object,通常也会变成字符串。最好是明确属性类型是个数组。
    rockyou12
        76
    rockyou12  
       2018-08-15 09:59:55 +08:00   1
    @ala2008 敢把数组返回“”,做安卓和 ios 的会半夜把你闷棍敲死好不。好多前端 js 写多了不重视数据类型,在这里开脱真的搞笑。前后分离很重要一点不就是可以做多种客户端,java 和 object-c 可是静态类型的,真把这些数据类型乱传,跑的时候各种闪退还要自己抓包去找锅,真的杀人的心都有了……
    a191243108
        77
    a191243108  
       2018-08-15 10:07:55 +08:00
    @keepeye 牛皮,原来你指加多了,一对分号''。我以前也碰到过
    hotdogwc
        78
    hotdogwc  
       2018-08-15 10:10:34 +08:00
    这算啥,某微软亚洲研究院前员工(不知道真假,整天穿个微软的 T 恤在公司晃,LinkedIn 也显示他在那干了两年),收不到 iOS 推送,跟他联调,怎么都收不到,我这边自己接了个极光可以收到,从早晨调到下午,原来是他那边推送第三方库报错了请求根本没发出去。。。。。还有,有一次我发请求 404,我跟他说路由没找到,你帮我看看呗,结果他一直在让我换不同的 header 发,我跟他说没有可能你先不匹配路由就检查 header 吧,他跟没听见一样还让我换 header,最后还是路由的问题。。。
    suikator
        79
    suikator  
       2018-08-15 10:12:09 +08:00 via Android
    @watzds 正好可以把一堆后端水货 block 了
    jzds001
        80
    jzds001  
       2018-08-15 10:14:45 +08:00   2
    无语了,这算什么问题?你就拿来黑了?
    weizhen199
        81
    weizhen199  
       2018-08-15 10:17:07 +08:00
    "[]"确实很 low
    tinycold
        82
    tinycold  
       2018-08-15 10:17:50 +08:00   10
    我跟你说,你们这个算好的,我以前遇到一个,没有东西,就不给我返回,Request 就这么挂着。

    我问他,你这个怎么次次都超时,我把超时限制关闭了都还一直不返回,怎么回事儿,

    那哥们儿说: 没有东西,我怎么返回嘛!! 。

    dei, 理直气壮的,我还觉得他说得多有道理的
    Hardrain
        83
    Hardrain  
       2018-08-15 10:19:00 +08:00
    @meloner 不按规范成了沟通问题?

    鲁棒性那是考虑用户 /合作方错误操作 /输入错误数据。
    不是考虑自己一方违反规范
    julio867
        84
    julio867  
       2018-08-15 10:22:21 +08:00   1
    嗯,这样的人应该挺多的吧~这两年遇到不少后台开发做接口的,有的人很规范,而有的人直接把整个数据库都暴露给你,然后跟你说“字段都给了,用什么自己挑”,当然密码字段也会出来
    cncqw
        85
    cncqw  
       2018-08-15 10:22:42 +08:00
    @keepeye 这个是返回类型写 string 结果接口的 json 数据被转成字符串了
    easylee
        86
    easylee  
       2018-08-15 10:22:53 +08:00 via Android
    @hrong #11 你这条回复 26 赞,哈哈哈。用个知乎都生气,你能干啥大事?
    c0878
        87
    c0878  
       2018-08-15 10:25:44 +08:00
    @meloner 防御性编程技术笑哭
    Sparetire
        88
    Sparetire  
       2018-08-15 10:26:12 +08:00 via Android   7
    整个帖子的回复简直不忍直视。。低级错误也能有这么多人洗
    鲁迅: 我觉得防御性编程防不了 sb
    qibing2000
        89
    qibing2000  
       2018-08-15 10:26:12 +08:00
    @tinycold 这个我真的笑了。
    Raymon111111
        90
    Raymon111111  
       2018-08-15 10:27:10 +08:00
    有接口文档吗?
    huoluobo
        91
    huoluobo  
       2018-08-15 10:29:26 +08:00
    我也遇到过不少次,给后端说了他也好像理解了,然后改半天说改好了,拿回来一看还是错的,根本没变化不知道改的啥。。。
    SirLostWhite
        92
    SirLostWhite  
       2018-08-15 10:29:38 +08:00
    有接口文档和数据字典就好了
    easylee
        93
    easylee  
       2018-08-15 10:30:55 +08:00 via Android   6
    这种低级问题都能洗地,还说楼主的锅,我也是服了楼上洗地的各位,告辞,惹不起你们,今天你们可以喷楼主,说不定明天我发帖就来喷我了,惹不起惹不起。
    suikator
        94
    suikator  
       2018-08-15 10:33:11 +08:00 via Android
    @tinycold 都是腰间盘 为什么他那么突出 报下公司名 大家一起入职
    duan602728596
        95
    duan602728596  
       2018-08-15 10:35:30 +08:00 via iPhone
    真的,幸好 js 数据类型没多少,要不然真防御不过来 sb
    skSK09
        96
    skSK09  
       2018-08-15 10:40:33 +08:00
    hh
    NullException
        97
    NullException  
       2018-08-15 10:43:58 +08:00   1
    前端不会 ajax 交互的一抓一大把。
    rb6221
        98
    rb6221  
       2018-08-15 10:46:52 +08:00
    这还用规范?在我看来,如果明白确定是「 json 」格式,那所有不标准的 json 就统统是错误的,包括 PHP 的动态 key 数字 key 这种,都不算是标准的 json。
    如果你要问我要规范,那行,json 规范自己看下,严格遵守就 OK
    ChristopherWu
        99
    ChristopherWu  
       2018-08-15 10:48:16 +08:00
    我艹,评论的都是当真?
    66beta
        100
    66beta  
       2018-08-15 10:48:20 +08:00 via Android
    还是自己校验下吧,真的,心累
    1  2  3  4  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3060 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 12:52 PVG 20:52 LAX 04:52 JFK 07:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86