公司项目技术老旧,是种什么体验? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sagaxu
V2EX    程序员

公司项目技术老旧,是种什么体验?

  •  4
     
  •   sagaxu 2018-07-29 16:18:40 +08:00 via Android 17448 次点击
    这是一个创建于 2683 天前的主题,其中的信息可能已经有所发展或是发生改变。
    2015 年开始的某个项目,骨架是从 2012 年那个项目抠出来的,标配的 Java 6 和 spring 3,界面是 bootstrap2 和 jquery 画的。所有模块都在一起,出来个大大的 war 包。需求不断在加在改,不是简单维护一下了事。

    同行门,你们都是怎么对付这种陈年项目的?
    第 1 条附言    2018-07-29 18:15:26 +08:00
    故事继续,在熟悉了整个系统之后,某一天我萌发了一个想法,何不做点技术栈的小更新?抱着试试看的想法,我先挑了最软的柿子捏,把 Java 6 干到了 Java 8,Tomcat 换到了最新版,非常顺利。在计划下一步行动前,我又把几百个编译警告都修正了,步子不能太大。

    几周后,着手从 spring3 升级到 spring4,并没有做很多改动,稳定运行了一段时间后,顺手把大段 XML 配置替换成了 spring 注解,后来又更新到 spring5。到这个阶段,我感觉已经比大部分公司新了^_^。

    然后我想改善一下打包发布,却发现 maven 太死,用 XML 写逻辑是很要命的,干脆把构建系统换成了 gradle,把构建脚本从大几百行缩短到了一百多行,功能不但没少,还多了。

    我觉得还不够,尝试引入了 Koltin,原本只是想写一两个类感受一下,谁知道一试就出事了,出大事了,整个项目都被逐步逐步的替换成了 Kotlin,半年之后,除了自动生成的代码,没有一行是 Java 写的了。

    这些变更,都是业余时间做的,并没有占用正常版本迭代时间,也没有因此引入 bug,反而整个系统更稳健和高效了。
    第 2 条附言    2018-07-29 18:41:07 +08:00
    之后的一段时间里,脑子里有个人不停的跟我说,重写吧,推倒重来吧。正好公司业务要求有大的调整,里应外合之下,重写已经是箭在弦上,不得不发了。

    然后很自然的做了好多更新,


    前后端完全分离,前端用 element 重写

    拆分成十来个模块,变成独立的内部服务,分而治之,部分模块改用 PHP 了

    零阻塞,完全丢掉 Tomcat 堆多线程那套做法,干脆 servlet 全丢,全面拥抱了 vertx

    DI 和配置等脏活,仍然交给了 spring,直接从 springboot 1.X 最新版起步


    最近我又抽空更新到了 springboot 2.0,计划十一之后再着手把 JRE 迁移到 Java 11,明年估计还有随 Kotlin 1.3 发布的 coroutine,都是值得试试手感的事情。


    虽然这么折腾没带来什么账面收益,我也不图这个,起码我自己后续的开发和维护更加舒适了,很多常规工作,以前要 2 周工期的,后来变成了一周,后来变成了 2-3 天,现在最多半天能搞定,我可以有更多的时间做到更好。
    第 3 条附言    2018-08-02 20:15:27 +08:00
    简单回复一下一些疑问

    Kotlin 和 Spring 怎么合体?
    基本姿势跟 Java 一样,比 Java 多些语法糖红利。

    Springboot 和 Vertx 怎么合体?
    Vertx 官方有 example。

    SpringMVC 能转 Vertx ?
    当然能,但异步改造并不轻松,管理后台和低负载接口,仍然可以继续用 springmvc,或者用 vertx 提供的 blocking 方法线程池。

    楼主不用做需求吗?
    当然要做,初期可能略影响进度,积累一段时间之后,重构后节省的时间大大超过重构本身的时间。渐进式重构,讲究的就是少量多餐,保持克制再克制,一次不要改太多。
    127 条回复    2018-09-27 08:57:44 +08:00
    1  2  
    luob
        1
    luob  
       2018-07-29 16:20:18 +08:00 via iPhone
    重写 || 跑路
    zzzcx
        2
    zzzcx  
       2018-07-29 16:20:51 +08:00
    很多时候,稳定大于天。
    chenlaocong
        3
    chenlaocong  
       2018-07-29 16:22:46 +08:00 via Android
    我们那个项目是用 JSP。B UI 做的。一直在上面改。
    Altair
        4
    AltairT  
       2018-07-29 16:26:07 +08:00 via iPhone
    我之前东家跟你这个差不多,spring springmvc jdbc bootstrap jq 封装了一套东西,三年的老员工居然以为 maven 和 svn 是一类东西,几百人大多是才毕业的新人,待久了必废,于是出来找工作首先问他们技术栈
    vvvvww
        5
    vvvvww  
       2018-07-29 16:28:19 +08:00
    工作第一家公司要我维护一个历史遗留项目,用的是 jdk1.5+struts1+hibernate3...前端都是 table 写的,用的框架是 Prototype,那时刚好有点闲,边学边改,最后重构成 ssm+eaysui,过程中也算学到不少东西了
    daigouspy
        6
    daigouspy  
       2018-07-29 16:29:07 +08:00 via Android
    呵呵,access 数据库还有在维护的
    mydns
        7
    mydns  
       2018-07-29 16:31:43 +08:00
    稳定
    murmur
        8
    murmur  
       2018-07-29 16:38:32 +08:00   1
    2012 年的项目 2018 年还在跑 比很多倒闭的互联网项目不知道牛逼到哪里去了
    我们公司的 OA 是 09 年还是多少年开始部署的 用的数据库是 domino 后端开发语言是 vb 现在不也照样用
    zhuanzh
        9
    zhuanzh  
       2018-07-29 16:54:05 +08:00 via Android
    我们单位的 oa 是基于 ie6 开发的。
    Immortal
        10
    Immortal  
       2018-07-29 17:00:37 +08:00
    建议看下 阿里那种中台战略 的书
    也是讲淘宝从一整个 war 到解耦的过程
    wobushizhangsan
        11
    wobushizhangsan  
       2018-07-29 17:12:42 +08:00 via Android
    struts2
    wobushizhangsan
        12
    wobushizhangsan  
       2018-07-29 17:17:46 +08:00 via Android
    struts2,hibernate,yui,零几年的做的产品,分为十几个项目,开发人员已经换了 n 波了,去年交接到我手里,一个人十几个古董项目的代码。
    t6attack
        13
    t6attack  
       2018-07-29 17:20:28 +08:00
    还有做 asp 的公司没?我看源码站上有持续更新的程序。
    wdlth
        14
    wdlth  
       2018-07-29 17:22:15 +08:00
    这也叫旧,以前我呆的还有用 PowerBuilder、Delphi 5 写的呢,让他们用 UTF-8 编码搞得跟上天似的……
    l00t
        15
    l00t  
       2018-07-29 17:44:40 +08:00   1
    2012 年的项目怎么能算老…… 我手上的一堆 2002 年的……
    tyrealgray
        16
    tyrealgray  
       2018-07-29 17:50:37 +08:00 via Android
    最近把一个 node0.10 版本的项目重构升级到 8 和 TypeScript 版本下了
    woscaizi
        17
    woscaizi  
       2018-07-29 17:55:46 +08:00 via iPhone
    @Immortal 书名可以告诉一下吗,谢谢
    tomfs
        18
    tomfs  
       2018-07-29 18:12:08 +08:00
    我这还有 10 多年没关机的 BSD 6,还有 windows nt,我能怎么办.
    learnshare
        19
    learnshare  
       2018-07-29 18:25:56 +08:00
    稳定的莫名其妙,Bug 出的也莫名其妙
    想重构别人会坚定地拦住你,坑有多大谁也不知道
    SsuchingYu
        20
    SsuchingYu  
       2018-07-29 19:01:19 +08:00
    woscaizi
        21
    woscaizi  
       2018-07-29 19:16:04 +08:00 via iPhone
    @SsuchingYu 谢谢
    flaty
        22
    flaty  
       2018-07-29 20:12:05 +08:00
    楼主折腾这么多没出严重 bug。稳~!
    CFO
        23
    CFO  
       2018-07-29 20:31:14 +08:00 via Android
    老哥稳啊
    jowuIM
        24
    jowuIM  
       2018-07-29 20:32:57 +08:00 via Android
    小项目吧
    nfroot
        25
    nfroot  
       2018-07-29 20:36:31 +08:00 via Android
    真的不要随便推倒重建,最近想上虚拟化,顺便升级服务器系统,然后 iis 提示配置不对,百度后修改就起不来了。。然后还自主申请免费加班,实际干了 16 小时左右。。。。好累
    mchong
        26
    mchong  
       2018-07-29 20:39:06 +08:00
    @tomfs 必须虚拟化。
    zoffy
        27
    zoffy  
       2018-07-29 21:07:11 +08:00
    公司欠下的技术债务,当然是公司去还,你想帮公司还债还是咋滴
    PP
        28
    PP  
       2018-07-29 21:13:44 +08:00
    及时申请预算和技术立项,对自己对公司都负责。
    watzds
        29
    watzds  
       2018-07-29 21:15:40 +08:00 via Android   1
    竟然改得这么轻松,估计是小项目
    zorui
        30
    zorui  
       2018-07-29 21:39:11 +08:00 via Android
    老哥 稳
    cnTangLang
        31
    cnTangLang  
       2018-07-29 21:48:10 +08:00 via Android   1
    就喜欢这样有主动态度的人!想换个工作,试试更高的调整,可以短信给我:MTMxNDg0NzA4MDc=,坐标深圳,待遇绝对让你满意。
    lhx2008
        32
    lhx2008  
       2018-07-29 21:51:23 +08:00 via iPhone
    一般很多业务都没有测试吧?这样大改真的不会出问题?平时改 bug 都引入一堆新问题。
    lhx2008
        33
    lhx2008  
       2018-07-29 21:54:31 +08:00 via iPhone
    特别是改成 vert.x 等于是重写了,很迷幻
    CasualYours
        34
    CasualYours  
       2018-07-29 21:54:48 +08:00 via Android
    楼主厉害了
    herozhang
        35
    herozhang  
       2018-07-29 21:57:29 +08:00
    还见过用 FoxPro 的
    MajestySolor
        36
    MajestySolor  
       2018-07-29 22:13:26 +08:00
    楼主性格应该和我一样,看到老旧和杂乱的东西就想自己重写,不重写就觉得心里有猫在挠,睡也睡不好
    fx109138
        37
    fx109138  
       2018-07-29 22:18:35 +08:00 via Android
    angular.js 。。。。。。
    252748371
        38
    252748371  
       2018-07-29 22:22:15 +08:00 via Android
    你这么搞,你没有新的需求要做么
    anyele
        39
    anyele  
       2018-07-29 22:26:01 +08:00 via Android
    老哥牛逼
    miao1007
        40
    miao1007  
       2018-07-29 22:31:27 +08:00 via Android
    慢慢改呗,重要是提高软件质量。根据破窗效应,就算你走了后面也会乱七八糟的。
    willakira
        41
    willakira  
       2018-07-29 22:44:36 +08:00
    2012 年就不要叫什么旧项目啦… 我们组的项目比较老,我也不敢像你这么折腾,光是 Jar Hell 我们就得被搞死
    我后来采取的步骤是
    - 把系统拆分成小一些的 service,在小的 service 上面更新技术栈
    - 留在大系统中的一些已有的 features 先把接口部分捋捋,然后逐渐换用比较新的技术栈。contain & engage。
    说实话楼主这么折腾线上没出几个 Class or Field NotFound Exception 的问题也挺是幸运的。
    swim2sun
        42
    swim2sun  
       2018-07-29 23:04:44 +08:00
    我比较好奇 vert.x 和 Spring 是如何共存的
    mandy0119
        43
    mandy0119  
       2018-07-29 23:07:41 +08:00   1
    最近接手了一个游戏后台,一个框架没用,全是自己封的。大量滥用枚举,代码可读性极差
    gjquoiai
        44
    gjquoiai  
       2018-07-29 23:15:58 +08:00
    讲道理楼主公司测试肯定写的比较好吧?没测试我是不敢改的
    RainySeason
        45
    RainySeason  
       2018-07-29 23:19:14 +08:00
    sliverlight + vb.net 了解一下
    ljzxloaf
        46
    ljzxloaf  
       2018-07-29 23:34:36 +08:00 via iPhone
    vertx 方案可以分享下吗?尤其是有没有遇到什么坑
    hundan
        47
    hundan  
       2018-07-29 23:39:09 +08:00 via Android
    看了 append 除了优秀我不知道说啥……
    thinker3
        48
    thinker3  
       2018-07-30 00:43:52 +08:00
    java 是静态语言,还好
    python 的老项目,那时 django 还不出名,他们自己搞了一个 orm,n 个小服务,分散在个各服务器,没有用 git 管理代码,也没有 svn
    20015jjw
        49
    20015jjw  
    &nbs;  2018-07-30 00:55:11 +08:00 via Android
    听说会某 F 开头语言的大佬维护一个几十年前的系统
    年薪是 50w 刀+
    zwy100e72
        50
    zwy100e72  
       2018-07-30 01:19:42 +08:00
    C++ 10 年+ 老项目了解一下......
    260w 行代码,3-5 年前从 C 迁移,2-3 年前与多个相关项目合并,系统测试丰富但是集成测试和单元测试基本没有
    体验就是,业务繁重根本没有时间考虑重构的事情,只能遇到需要用的函数就想办法拆分下,或者新造轮子

    看到楼主 append 貌似结果还不错,楼主很幸运
    Reficul
        51
    Reficul  
       2018-07-30 01:24:00 +08:00
    渐进式重构,看有没有时间吧
    ericgui
        52
    ericgui  
       2018-07-30 01:40:03 +08:00
    哥们你是来炫技的么
    qiukong
        53
    qiukong  
       2018-07-30 04:24:24 +08:00
    知足吧,我上家公司(某上市技术公司),公司财务系统必须用 IE6 以下版本才能登录,底下怨言很多上级就死活不更新。
    yingfengi
        54
    yingfengi  
       2018-07-30 08:19:38 +08:00 via Android
    @nfroot p2v 过去啊
    NotFamous
        55
    NotFamous  
       2018-07-30 08:41:50 +08:00
    用 AngularJS,就连谷歌上都把这文档撤了。。。搜问题只能搜 Stack Overflow
    aice114
        56
    aice114  
       2018-07-30 08:41:55 +08:00   1
    看楼主的 append 感觉像是编故事,像我们公司那个 jdk1.6+strutc2 的老项目,十几万行的代码,代码写在 jsp 里面,如果一个人重构,怕是到公司倒闭都不可能
    hotsymbol
        57
    hotsymbol  
       2018-07-30 08:46:38 +08:00
    这已经很新了。。商业角度是不能什么都最新的。即使现在 Kubernets 已经开源了。我们公司依旧认为所有容器相关的技术是 Google 独有的。基于微软的平台就不应该使用
    MoliOOO
        58
    MoliOOO  
       2018-07-30 08:47:34 +08:00
    爱干干,不干自有别人干
    就是这种体验
    lihongjie0209
        59
    lihongjie0209  
       2018-07-30 08:49:07 +08:00
    这项目要多小才能这么改? 而且项目里面的业务需求你一个人都吃透了?
    yulitian888
        60
    yulitian888  
       2018-07-30 08:54:43 +08:00
    呃,楼主把本世纪的代码叫做老旧,那维护上世纪的 VB 6.0 代码算考古吗?
    另有本世纪初的 vb.net 代码,还广泛运行于客户的机器上。
    weizhen199
        61
    weizhen199  
       2018-07-30 08:57:52 +08:00
    惊了,这也算老项目
    那我怕是历史学家了
    zqguo
        62
    zqguo  
       2018-07-30 09:03:07 +08:00
    楼主你这项目肯定不算大
    owenliang
        63
    owenliang  
       2018-07-30 09:07:33 +08:00 via Android
    楼主不要站在程序员角度看待这个问题,应该想想对老板和团队有什么好处,以及他们对投入产出的评估。
    98jiang
        64
    98jiang  
       2018-07-30 09:10:13 +8:00
    看着感觉楼主好厉害!!
    alamaya
        65
    alamaya  
       2018-07-30 09:13:05 +08:00
    小项目这么搞还行,大多数公司架构部分都不是你自己想改就能改的。
    3a3Mp112
        66
    3a3Mp112  
       2018-07-30 09:16:58 +08:00
    只要老板肯定这个项目的价值,没有什么是不能高薪请大牛进来重写的。。
    不搞,肯定是价值不明朗啊。
    xiandao7997
        67
    xiandao7997  
       2018-07-30 09:21:04 +08:00 via iPhone
    @yulitian888 同 vb6 的路过,修改代码的时候运行在虚拟机里的 xp 上,一堆全局变量,调试累成狗
    ericgui
        68
    ericgui  
       2018-07-30 09:22:00 +08:00
    @zqguo 其实我也这感觉,重构竟然一个人就搞定了。。。。。而且没有得到上面授权的情况下,私自重构,而且无 bug,而且其他人都没发现。。。。
    zjbztianya
        69
    zjbztianya  
       2018-07-30 09:31:36 +08:00
    有人用过微软的 COM 么,之前实习,项目用这个东西。。。
    q397064399
        70
    q397064399  
       2018-07-30 09:45:13 +08:00
    @ericgui #68 可以断定是项目代码量小,船小号掉头,微服务的思想就是如此,
    zhouyou457
        71
    zhouyou457  
       2018-07-30 09:51:24 +08:00
    楼主啊,我手头有几个 10 年左右的项目,现在连需求的理不清,更别说重写了.....
    darkcode
        72
    darkcode  
       2018-07-30 09:52:31 +08:00
    说明楼主技术很强。
    但是,这个项目真的有这么多价值吗
    A555
        73
    A555  
       2018-07-30 09:54:55 +08:00
    我手上有个项目 4 个应用组成,功能接口大大小小 30 多个,前端用 jq,还带 activeX 的。光是改成改掉 struts2 就花了了 1 个多月的时间。
    StephenDev
        74
    StephenDev  
       2018-07-30 09:57:03 +08:00 via Android
    技术栈更新最大的问题不是技术不是项目,而是同事。我写的时候用新东西,同事全给改回去了。或者有些人就不接受新东西。
    sampeng
        75
    sampeng  
       2018-07-30 09:57:18 +08:00 via iPhone
    年轻时我也这样,现在?很多时候,稳定大于天,项目出一次问题就得跑路,不值得。尽量做新项目…
    sweb
        76
    sweb  
       2018-07-30 10:01:35 +08:00
    然后楼主用最新的技术重构了一遍,几年后,又另外一个楼主这样的人发同样的贴子,开发技术总会过时,关键是项目要稳定.楼主去鹅厂也是这样骂.
    mikuazusa
        77
    mikuazusa  
       2018-07-30 10:06:05 +08:00
    什么是旧项目?谁能把 Mainframe Cobol DB2 用 C++或 JAVA 重写,那一定不得了
    yalanaika
        78
    yalanaika  
       2018-07-30 10:06:49 +08:00
    公司的拳头产品是基于 Delphi 的 (sigh...)
    zhzer
        79
    zhzer  
       2018-07-30 10:14:13 +08:00
    记得有个知乎回答,说是写了十年,六百万行代码,无版本管理,zf 项目
    jatesun
        80
    jatesun  
       2018-07-30 10:17:24 +08:00
    目测楼主这项目不是很重要
    minininja
        81
    minininja  
       2018-07-30 10:31:40 +08:00
    06 年的项目还在维护
    wackyjazz1
        82
    wackyjazz1  
       2018-07-30 10:33:26 +08:00
    小弟目前做的目是 delphi7 ...
    yulitian888
        83
    yulitian888  
       2018-07-30 10:35:15 +08:00
    @yalanaika 现在的新兵都不认识 Delphi 是什么了。曾经有人跟我说“滴普嗨”,琢磨了半天不知道他说的是啥,等到写出来才知道是说 Delphi
    ae86
        84
    ae86  
       2018-07-30 10:37:34 +08:00
    哈哈,还在用 vb 的路过,环境都是在虚拟机里的 xp 系统调试的
    xiaowangge
        85
    xiaowangge  
       2018-07-30 10:56:56 +08:00
    你们写 Delphi 的,啥行业?

    我知道的,有同学用 Delphi 写建筑行业相关软件。
    zhang1215
        86
    zhang1215  
       2018-07-30 10:58:30 +08:00
    说起 Dephi,有没人知道 C++ Builder 的
    glfpes
        87
    glfpes  
       2018-07-30 11:00:13 +08:00
    刚来的时候维护 1 个 osgi 开发的服务。。。看得我真心累,想尽一切办法在 1 个月内摆脱掉了这坨代码。
    paw
        88
    paw  
       2018-07-30 11:01:32 +08:00
    某厂有些核心部门还在用 gcc 3 和 centos 4 ;看着这个环境很是绝望的
    Fenrisu1fr
        89
    Fenrisu1fr  
       2018-07-30 11:13:50 +08:00   1
    秀的我头皮发麻..我觉得楼主该加一句危险动作请勿模仿

    孬夯昆啊..
    Fenrisu1fr
        90
    Fenrisu1fr  
       2018-07-30 11:14:17 +08:00
    @20015jjw Fortran ?
    dremy
        91
    dremy  
       2018-07-30 11:17:27 +08:00 via iPhone
    牛逼的故事系列
    Felldeadbird
        92
    Felldeadbird  
       2018-07-30 12:05:01 +08:00
    就是刚开始维护起来吃力,后面随着自己的坚持,小部分使用新的架构去开发新功能。旧功能在特定情况下,看需求进行合理性重构。
    刚开始看到这种技术老旧的玩意,真心不想做。但是想了想,自己靠这行吃饭的,如果连这些都不接受,以后遇到更糟糕的难道只能换公司吗?
    karllynn
        93
    karllynn  
       2018-07-30 12:09:41 +08:00
    楼主你这项目太小了。。。
    sagaxu
        94
    sagaxu  
    OP
       2018-07-30 12:31:12 +08:00   2
    @zzzcx 不稳定因素日积月累下去,很难在迭代的过程中维持稳定性

    @nfroot 有计划的推倒重建,比硬件突然损坏,然后手忙脚乱要好太多了

    @watzds @karllynn 项目确实不大,十万行左右,大项目的重构,大都是跨部门的系统工程,即使老板推都不见得推的动,不可能自下而上的做。

    @lhx2008 @gjquoiai 重要的部分,我都加了单元测试,还有一堆 API 测试脚本。

    @lihongjie0209 公司没人比我更了解这个项目,将近两年的时间里,我只做这一个项目。
    haisua
        95
    haisua  
       2018-07-30 13:31:47 +08:00
    腻害,膜拜~老项目,你直接和老板说要重构,一般是比较困难的,老板都是能用就用着,不想额外出人工去做重构的事情。
    j5shi
        96
    j5shi  
       2018-07-30 13:51:38 +08:00
    在目前的代码库里见过的 1982 年写的 C 代码, 运行稳如狗.
    yulitian888
        97
    yulitian888  
       2018-07-30 13:55:56 +08:00
    @j5shi 千年虫杀掉了没?
    soupice
        98
    soupice  
       2018-07-30 14:04:03 +08:00
    @herozhang 你不会也是上海的吧…… foxpro 坑爹啊
    iblessyou
        99
    iblessyou  
       2018-07-30 14:06:29 +08:00
    6 都埋怨呢?我这还有 5 的项目,那结构百度都搜不出多少资料,JSP JS JAVA 全在 JSP 写,甚至有时纯 JAVA 也不写到 JAVA 文件,弄个 JSP 写着,格式化都没办法。
    感受下
    ARhen
        100
    ARhen  
       2018-07-30 14:12:34 +08:00
    真的厉害~ Emmm 可能这就是大佬吧.jpg
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5163 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 01:23 PVG 09:23 LAX 17:23 JFK 20:23
    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