大家谈谈Revel和Beego吧 或者其他Go框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lzt163
V2EX    程序员

大家谈谈Revel和Beego吧 或者其他Go框架

  •  8
     
  •   lzt163 2013-11-15 11:10:12 +08:00 59437 次击
    这是一个创建于 4348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看了各种介绍和评论
    感觉差不多啊
    第 1 条附言    2014-07-08 23:49:08 +08:00
    诶呀
    居然这贴突然人气高起来了。。。
    谢大神也出现了 感谢交流

    那时候还刚刚看Go没切入点
    后来算是自己学习写了个小框架在用吧
    84 条回复    2021-08-31 21:18:23 +08:00
    notedit
        1
    notedit  
       2013-11-15 11:19:19 +08:00
    https://github.com/codegangsta/martini 个人比较喜欢简单的框架
    guotie
        2
    guotie  
       2013-11-15 12:02:57 +08:00
    revel不错,不过封装的有点多

    beego也不错
    ltzliwe
        3
    ltzliwe  
       2013-11-15 12:08:54 +08:00
    不用框架也不错。。
    rwx
        4
    rwx  
       2013-11-15 13:42:55 +08:00   4
    比较受不了beego作者那种「我是大牛我要在go圈子先圈个地」的姿态。。而且当时beego的代码相当惨不忍睹。
    不过大半年没关注了,现状如何不好评价。
    kevinv
        5
    kevinv  
       2013-11-15 14:05:07 +08:00
    正在用revel,当初选择的时候也很纠结。
    我觉得就算大家再怎么比较给你听你也不一定能得到满意答案,还不如你自己用两个框架试试写点东西,然后比较下。
    beego由国人开发,可能在你出现问题的时候会支持的比较好。
    kran
        6
    kran  
       2013-11-15 14:57:08 +08:00
    @notedit 早晨起床看到了, 挺喜欢
    lzt163
        7
    lzt163  
    OP
       2013-11-15 15:00:28 +08:00
    @ltzliwe 林添置你好
    lzt163
        8
    lzt163  
    OP
       2013-11-15 15:00:56 +08:00
    @notedit 我去研究一下 我也喜欢简洁的
    lzt163
        9
    lzt163  
    OP
       2013-11-15 15:01:30 +08:00
    @ltzliwe 我试了一下 不用框架写 然后最后就变成自己写框架了
    lzt163
        10
    lzt163  
    OP
       2013-11-15 15:02:07 +08:00
    @guotie = =确实都不错 但是说beego不靠谱的人偏多
    lzt163
        11
    lzt163  
    OP
       2013-11-15 15:04:44 +08:00
    @kevinv 是的 我就在试着写 在试着beego
    revel在公司有点问题 先放着
    好就好在中文啊 文档看起来方便
    个人比较不喜欢beego那个代码风格。。。
    smalltalk
        12
    smalltalk  
       2013-11-15 15:56:46 +08:00
    go是用来写服务器、基础设施的,用来写web业务代码,到处是error check累不累啊。
    ltzliwe
        13
    ltzliwe  
       2013-11-15 16:21:44 +08:00
    @smalltalk 换到其他语言不是一样要try...except嘛?
    gihnius
        14
    gihnius  
       2013-11-15 17:22:13 +08:00
    不喜欢框架, net/http html/template 自己动手。
    smalltalk
        15
    smalltalk  
       2013-11-15 19:09:42 +08:00   1
    @ltzliwe 在写业务代码的时候, 如果存在try catch,通常意味着代码写错了,或者框架选错了。
    fuyunge
        16
    fuyunge  
       2013-11-16 19:54:54 +08:00
    golang-nuts里关于这个问题有过一个非常好的回复,大意就是Go的标准库已经帮你做好了太多东西,以至于没有必要再选用框架。我是半业余开发者,从go刚推出就开始作为自己的主力语言,最开始的一年多基本上就是在折腾自己的框架,到exp.template推出(也就是现在的template包),基本上就稳定了。url处理是很简单的,template现有的已经很不错了,真正有工作量的部分就是ORM。因此,建议选择一个好的orm,其余部分自己动手。
    Numbcoder
        17
    Numbcoder  
       2013-11-16 21:26:05 +08:00
    我也不太喜欢 beego 用法的那个代码风格。

    这个 https://github.com/hoisie/web 不错
    ltzliwe
        18
    ltzliwe  
       2013-11-20 10:52:53 +08:00
    @smalltalk 但是在go里面返回error的目的包含了平时数据处理的错误以及不可预知的错误。
    比如得到一个json字符串,你在unmarshal的时候发现它不符合json的语法,这时候go会返回error,但是其他语言可能就是try catch了。这并不是框架或者代码的问题,当然也可以事先检查,但是比起直接返回error不是会更麻烦?
    或者读取一个文件,发现文件不存在,这个步骤肯定是省不了的。只是go把其他语言的一些正常的逻辑判断放在了check error里面了
    darklowly
        19
    darklowly  
       2013-12-06 23:09:27 +08:00
    beego挺垃圾的,作者自我感觉良好,实际上水平不怎么样。
    guotie
        20
    guotie  
       2014-01-01 19:44:03 +08:00
    martini
    ty4z2008
        21
    ty4z2008  
       2014-02-13 17:10:17 +08:00
    再多的评论也比不了自己动手测试一把
    astaxie
        22
    astaxie  
       2014-05-22 16:59:47 +08:00
    @rwx
    @darklowly

    第一我的态度很端正,没有你们说的这些什么大牛不大牛,我的出发点一直是想做一些有用的东西让大家玩。从来没有圈地或者自我感觉良好这样的。我的水平确实不是最好的,我做的那些也是自己平时项目中积累的东西,如果你们觉得那些不好我很欢迎你们指出来,欢迎你们指导。

    我既然愿意把代码分享出来,就愿意接受大家的批评和指正。如果你们觉得写的比我好,我非常欢迎你们分享出来,这样整个的Go技术圈才会越来越好。

    目前beego系统已经被各大公司应用于内部的系统开发,稳定性和性能都得到了考证,当然我们还有很多需要改进的地方,所以你们如果不满意,那么不爽欢迎提出你们的意见。
    overlords
        23
    overlords  
       2014-06-06 15:28:53 +08:00
    @astaxie
    @rwx
    @darklowly

    谢大(@astaxie)没有上面说的那样子,估计是在GO编程群里面水的太狠了被T了吧。故而记仇了吧。
    darklowly
        24
    darklowly  
       2014-06-27 16:13:39 +08:00   1
    @astaxie beego只能说是可以工作,beego用golang来做传统的MVC,感觉路子不对,写出来的代码没有质感。这个是一开始设计上的问题。不是说别人能够马上分享一两段代码纠正的。但凡做过开源的,动不动就喜欢说,有本事你分享段代码来看看啊。

    实际上在做开源的时候,很多人都喜欢写出一个东西后就开源出来。这样确实是贡献,但是有没有感觉现在的开源代码质量越来越低了。

    像redis这样的项目大家都佩服,你说技术难度,很多做C语言的人都能写出来。但是还是佩服他。因为他写出来的质量很高。代码和设计都很有质感。

    同时在golang上包装一层弱框架,想不稳定都难。
    darklowly
        25
    darklowly  
       2014-06-27 16:17:31 +08:00
    @overlords 就你最腹黑
    yakczh
        26
    yakczh  
       2014-07-02 08:48:37 +08:00
    用golang写个流媒体服务器怎么样? 我看golang跟nodejs并发不相上下,但是cpu占用低
    overlords
        27
    overlords  
       2014-07-02 20:53:30 +08:00
    @darklowly 其实感觉您修行很深。您也来一发
    Wuvist
        28
    Wuvist  
       2014-07-07 14:24:26 +08:00
    astaxie
        29
    astaxie  
       2014-07-07 14:43:38 +08:00   1
    @darklowly 基于golang之上的弱框架,想不稳定都难,这个结论你怎么的出来的啊?按照你的逻辑,什么东西都得依赖最原始的包来开发?

    第二,传统的MVC我觉得挺好啊,路子对不对,不是你说不对就不对,你写过几行代码啊?如果你觉得路子对的话,可以拿出来一些可行的路子出来呢。

    第三,这个开源没有强制别人喜欢不喜欢,有些人就是不喜欢beego的执行方式,完全没问题啊,就喜欢用简单地,例如webgo、martini这样的框架,因为代码就那么几个文件。

    比较受不了你说别人一套一套,自己什么屁都不是。
    Comdex
        30
    Comdex  
       2014-07-07 14:51:52 +08:00
    新人表示beego用起来还不错,易上手,文档齐全
    felinx
        31
    felinx  
       2014-07-07 17:02:28 +08:00
    @astaxie 做好你自己,让他们喷去吧!
    laudukang
        32
    laudukang  
       2014-07-07 21:17:19 +08:00
    @astaxie 走自己的路,让别人去吹吧!
    darklowly
        33
    darklowly  
       2014-07-08 21:33:26 +08:00   9
    @astaxie

    我觉得一个好的框架,就应该是简约的。写出来的代码有质感的。但是你只看到了稳定性和性能

    1 稳定性 当然这个很重要,如果只是弱包装一层,然后说很稳定,试问弱包装一层,怎么才能不稳定?既然弱包装很容易稳定,那么稳定性就不应该是你强调的特性。(我从来没说过要什么从原始开发包写)

    2 性能 我不觉得,写几个静态测试,然后测试出框架的性能有任何意义。静态测试高那么一点或者低那么一点点,重要么?

    3 我自己也写了一个小框架,我自己还不满意,不敢丢人。我对自己的要求比较高。我上面说过了,做过开源的人,就喜欢动不动就说你拿一行代码来看看啊

    4 既然不强制别人喜欢不喜欢,那你说这些干嘛呢,我有不喜欢的权利。你刚好也在说一套做一套。

    5 自我感觉,写代码质量比你高,你的代码在我眼里屁也不是。光追求完成功能,没有任何美感(包括代码,包括设计的美感)的代码在我眼里都是垃圾。就好像C语言之父说的, UNIX很简单。但需要有一定天赋的人才能理解这种简单。你的代码缺少这种看似简单东西。

    6 随便打开了一个文件 github.com/astaxie/beego/blob/master/router.go 8层嵌套,看的欲望都没有了,哥,你这是在写代码啊? 难怪写稳定,对你来说是一件很重要的事情。

    7 我又乱点了一个文件,github.com/astaxie/beego/blob/master/orm/db.go 12层嵌套

    8 以上代码我并没有挑选,随机点的。一共点了5个文件,还有一些其他问题。

    10 现在,我发现用你现在写代码的模式去写框架,给你谈代码质感,谈简约,还引用了大神的名言是多余的,对不起。
    darklowly
        34
    darklowly  
       2014-07-08 22:57:56 +08:00
    @Wuvist 初略的看了下,我觉得很好呀。
    sillyousu
        35
    sillyousu  
       2014-07-09 03:16:17 +08:00 via iPhone
    @darklowly beego里面的有的代码让人没有看下去的欲望。
    之前在对比revel beego 和 Martini ,看到beego某个入口函数有一千行,然后真心觉得有点
    darklowly
        36
    darklowly  
       2014-07-09 08:39:03 +08:00
    @sillyousu
    但是作者不这么认为,他认为,能工作就可以了。代码质量都是浮云,代码美感都是浮云,设计的美感都是浮云。就像我上面说的,我现在明白了,为什么来说他把稳定性看得很重要,因为他写代码的模式,要写稳定真不容易。

    我其实很想问其他人, 看到这段代码的感受如何
    https://github.com/astaxie/beego/blob/cec151fda71cf6220fcfc9487240989d6dee1f6e/orm/db.go#L801

    我也很想问作者, 写出这段代码的感受如何.
    darklowly
        37
    darklowly  
       2014-07-09 08:47:39 +08:00
    missdeer
        38
    missdeer  
       2014-07-09 09:03:52 +08:00
    作为一个刚转web开发的新手,表示beego的API还是比较适合新手入门的,没用过其他框架不好说其他的是否更好用。
    不过看了 @darklowly 列出的几个代码段,确实觉得beego在保证稳定性和功能的前提下要关注下代码风格。任何代码从产生的一刻起就会是逐渐劣化的过程,所以才会有敏捷开发提倡的小步前进、不断重构来保持代码质量。
    darklowly
        39
    darklowly  
       2014-07-09 09:22:00 +08:00
    @missdeer 我想说的不仅仅是代码风格, 我想说的是能写出这样的代码, 是在证明我上面说的其他观点。
    darklowly
        40
    darklowly  
       2014-07-09 09:25:58 +08:00
    @darklowly 我们写代码的目的确实是完成功能,但是为了轻松的完成功能,我们写代码的时候会有一些常见的化简手段。无论是设计上还是实现上都会这样。而不是进一步增加复杂度,beego的很多代码,是在人为的增加复杂度。复杂度一增加,很多其他问题会随之而来。这是其一,其二是如果按照复杂的方式写代码,写出来的东西是毫无质感的,如果是写框架,那么以后用这个框架写的代码也毫无质感了。
    missdeer
        41
    missdeer  
       2014-07-09 09:36:28 +08:00   1
    @darklowly 现在beego能立马着手改进的主要也只有代码风格了,像你说的架构的问题首先意见不能统一其次也不是一时半会儿能改好的。代码风格好,用个可能不是太恰当的比喻,一白遮百丑。
    darklowly
        42
    darklowly  
       2014-07-09 09:45:18 +08:00
    @missdeer 这个其实不是最重要的,如果是简单的设计,简单的实现,代码风格自然就好了,所以代码风格只是表象,核心问题不是这个。

    非要一开始搞这么烂,这么复杂,然后花很大精力去解决带来的问题,就好像是捅自己一刀,然后再去伤口,然后伤口缝好了,留下一个丑陋的伤疤,还觉得自己很牛逼,居然缝好了这么难逢的伤口。问题的关键是为什么要捅自己一刀?
    missdeer
        43
    missdeer  
       2014-07-09 09:58:23 +08:00
    @darklowly 对,我们的目的是一样的。我的意思是如果一个人写代码时刻注意着要写得风格良好,那会逼得他不得不有精简的设计和实现,才能写得好看。你是要求从内而外的因为核心好所以全都好,我是从外到内加了约束条件首先让面子好看再让里子也不至于偏差得远了。我觉得相对而言你的做法可能对人员水平要求更高些。
    Bluecoda
        44
    Bluecoda  
       2014-07-09 10:08:52 +08:00   1
    https://github.com/astaxie/beego/blob/cec151fda71cf6220fcfc9487240989d6dee1f6e/orm/db.go#L801

    我虽然是go新手,但是beego的这里太倒胃口了。这是写软件的人自己的问题了,多层嵌套本来就是大忌。
    Bluecoda
        45
    Bluecoda  
       2014-07-09 10:11:47 +08:00
    @missdeer 要知道这里不是所谓的代码风格能够解决的问题
    missdeer
        46
    missdeer  
       2014-07-09 10:16:55 +08:00
    @Bluecoda 这个问题我在41楼已经说过了。
    Bluecoda
        47
    Bluecoda  
       2014-07-09 10:36:12 +08:00
    @missdeer 还可以重构啊,开源项目,时间上谈不上紧张?只要有决心总能做好的
    darklowly
        48
    darklowly  
       2014-07-09 10:43:22 +08:00
    @Bluecoda 看第二个连接的历史记录啊。已经是修改+重构很多次的了。是完全没有意向去化简。用你的话说,是写代码的人的问题
    leedstyh
        49
    leedstyh  
       2014-07-09 11:21:07 +08:00 via Android   1
    比较不能接受的是beego的api变动太频繁,几乎每次升级都有点儿破坏性,都stable v1了,还这样
    nine
        50
    nine  
       2014-07-10 18:28:44 +08:00
    其实连beego代码都没看,看完文档都没欲望了,各种原始的设计,好像一个国产php框架
    Wuvist
        51
    Wuvist  
       2014-07-11 03:58:20 +08:00   2
    @darklowly "如果是简单的设计,简单的实现,代码风格自然就好了",这点我在实现gorazor的时候很有体会。设计是很重要的,razor模板本身的优雅设计决定了我可以简单的实现它,并且模板嵌套几乎可以“自动实现”。
    darklowly
        52
    darklowly  
       2014-07-11 05:52:00 +08:00
    @Wuvist 如果有机会我会把你的razor用到自己的项目中的。
    fufay
        53
    fufay  
       2014-08-29 10:03:18 +08:00
    期待楼上某些大神给我们一个更好的框架来学习。
    sugelawa
        54
    sugelawa  
       2014-09-22 10:15:32 +08:00
    我能说我看到了一群蝼蚁吗?
    sugelawa
        55
    sugelawa  
       2014-09-22 10:18:52 +08:00
    @darklowly,相比于做出这样一个产品的作者来说,你就是个垃圾。
    darklowly
        56
    darklowly  
       2014-09-24 15:53:55 +08:00
    @sugelawa 你懂技术么?垃圾
    hydyy
        57
    hydyy  
       2014-10-23 13:09:33 +08:00
    我的目的是在这找到一个可以上手的框架看看学习, 结果看到毫无意义的骂战。
    lzt163
        58
    lzt163  
    OP
       2014-10-23 15:22:57 +08:00
    @hydyy 是的
    我的本意也是
    现在一年都快过去了
    我建议可以自己实现一个小框架比较好
    我现在觉得那些大框架很多功能用不上没必要。。。
    onbing
        59
    onbing  
       2014-10-27 23:03:30 +08:00 via iPhone
    刚发现这么一个好玩的贴子,诸神骂战,看着有点小激动
    huobazi
        60
    huobazi  
       2015-03-17 14:45:02 +08:00
    我滴天吆,还有这么好玩一贴啊。
    haha1903
        61
    haha1903  
       2015-04-15 14:25:14 +08:00
    @darklowly 27楼为什么没有 9,这让处女座怎么办啊,再补一条吧。

    ps: 写得不错,不过质感这个词,还真难理解。
    wxd237
        62
    wxd237  
       2015-05-12 10:48:05 +08:00
    很多国内的开源,只是说把代码放出来了而已,没几个人能开得懂,更别提给你提交代码了。beego真心不咱样,试图把其它语言的框架换做语言来写而已。并没有发挥出GO自己应有的特点。
    laelli
        63
    laelli  
       2015-06-09 18:31:04 +08:00
    beego代码没法看啊
    codejsm
        64
    codejsm  
       2015-06-10 10:05:45 +08:00   2
    别喷了都,程序员什么时候都变成这样了,做着婊子骂街的事,聊的是艺术家的感受。人楼主只是求推荐一个go框架,不管你是大神还是菜鸟,能推荐就推荐,不想推荐就别起反作用,谁都从菜鸟过来的,别打击人家的积极性。
    如果你是大神,公司开发进度又完成了,完全可以利用闲暇时间,在自己喜欢又擅长的领域做做贡献,分享经验,何乐而不为。
    BEEGO好不好我不评价,但是确实我学GO的时候帮到了我,很感谢作者的贡献。
    而我看你们喷了几十层楼,屁都没学着。
    sillydong
        65
    sillydong  
       2015-07-07 17:23:10 +08:00
    上面吵的人,talk is cheep, show me the code
    qunxyz
        66
    qunxyz  
       2015-07-24 17:37:44 +08:00   1
    我同意@darklowly的看法,代码质量确实不堪,希望作者能听取改正。当然既然是开源项目,应当感谢作者@astaxie的无私奉献。一个系统有问题在所难免,大家除了提出意见,有能力和时间精力的也应该作点贡献。一个好的开源系统难以以一已之力就能做好的,大伙给点耐心和奉献点什么吧
    darklowly
        67
    darklowly  
       2015-08-20 08:50:39 +08:00
    @haha1903 9 就脏话,略过
    julor
        68
    julor  
       2015-12-13 12:18:00 +08:00 via Android
    各路大神,结论呢?
    somni
        69
    somni  
       2015-12-22 19:35:08 +08:00
    @julor 结论就是放弃 beego,试试别吧
    julor
        70
    julor  
       2015-12-23 08:07:37 +08:00 via Android
    @somni 比如呢?哪些值得一试?
    diggzhang
        71
    diggzhang  
       2016-03-23 11:54:14 +08:00
    NOTE: The martini framework is no longer maintained.
    bartowski
        72
    bartowski  
       2016-03-30 11:36:42 +08:00
    我只是来看 revel 和 beego 的比较,似乎没人愿意认真回答题主,竟然骂开了,go 的社区行为准则我这里贴一下先:
    1. Treat everyone with respect and kindness.
    2. Be thoughtful in how you communicate.
    3. Don ’ t be destructive or inflammatory.
    zoues
        73
    zoues  
       2016-06-07 09:17:22 +08:00
    @sillydong 这话就是 u can u up ?呵呵呵
    carlding123
        74
    carlding123  
       2016-11-22 16:08:29 +08:00
    挖了个坟,越看越有意思
    gutianyun
        75
    gutianyun  
       2017-02-10 11:18:20 +08:00
    @qunxyz 同意
    作为一个新手,要感谢两位
    @darklowly
    @astaxie

    每个人都不是完美的。

    有讨论,才能学到更多。
    greyforestforest
        76
    greyforestforest  
       2017-03-01 01:56:29 +08:00   2
    挖坟。路人。但是读完评论发现谢 XX 是在是个渣渣! darklowly 说的全在点子上,除了一开始无理由的批评之外。
    谢 XX 说了些啥?“你写过几行代码啊?”这么 low 的话也拿出来说。。。
    crazyjin
        77
    crazyjin  
       2017-03-13 11:04:20 +08:00
    咋吵起来了。。。真是的。。。人家写个开源的东西放那里,你爱用不用。。就这么简单的事情。。。
    lizhenda
        78
    lizhenda  
       2017-09-13 12:03:04 +08:00
    敢开源就有敢接收被骂的准备呀~
    hhxiaolei
        79
    hhxiaolei  
       2017-10-31 16:45:52 +08:00
    结果呢?
    wannianma
        80
    wannianma  
       2017-12-06 16:57:20 +08:00
    beego 好坏与否,作者毕竟耗费了心力。提意见应该注意方式方法,又不是仇人,何必咄咄逼人呢
    loongwang
        81
    loongwang  
       2018-05-23 11:19:22 +08:00
    同意 @darklowly 的观点,以 Spring 的代码为例,看起来真的是赏心悦目。
    codebee
        82
    codebee  
       2018-06-24 11:29:31 +08:00
    最讨厌这些渣渣,自诩牛逼,代码有质感的你给我贴出来啥是质感,让小弟们瞧瞧,觉得不好写一个框架处理,一点贡献没有就是逼逼叨
    0ofinger
        83
    0ofinger  
       2018-12-03 17:00:39 +08:00
    然后并没有什么结论,我等新人只能看看热闹。
    darklowly
        84
    darklowly  
       2021-08-31 21:18:23 +08:00
    @crazyjin 确实没有用 beego 啊,这里的问题是谈谈 beego,所以就谈了 beego 。和用不用有什么关系?跑题了吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     978 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:00 PVG 07:00 LAX 16:00 JFK 19:00
    Do have faith in what you're doing.
    ubao 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