• 再聊加班这事,罪魁祸首在自己
    再聊加班这事,加班也能出奇迹

    看到这几句话,我也不知道怎么说了。其他内容也没必要看了。

  • LZ 哪个公司的(不说无妨哈),个人经验之谈:
    分两种,一种业务测开,主要仍然是做功能测试,另外就是要求做一些提升效率合适团队的工具之类,需要啥就做啥,或者引入公司公共部门的测试技术(如果有的话);
    另外一种,你就当作是程序员好了。这一种可能连整个游戏开发流程都不清楚的,不用跟项目团队,独立公共测试部门。有人给提需求,你照做,做测试平台云测平台性能工具啥啥的。
    看哪一种学什么了,第二种跟着团队学技术栈就行了,多是 java 或者 python,大公司可能还会分前端后端(小公司全栈),当然像字节估计都是用 go 了;第一种仍然要抓业务知识以及开发流程知识、质量保障知识;代码能力杂乱,公司用啥你学啥,高深一点引擎相关也了解一下。这两种区别还是有些大的,毕竟个人认为,第二种就是程序员,挂了个测开帽子而已,第一种才是所谓的 QA。

  • 面试瓶颈 at 2021年04月26日

    只要你能说出你推动不了的原因以及做过的尝试,看得出已经尽力以及做到位,其实也是有效的经验

    关于流程推动的最后一次回复了,后面就不回复了。越说越多了。
    你这个举动就更陷入风险了。你跟面试官解释失败的原因,会越说越麻烦,陷入不必要的困境(每个解释的原因,都极大可能成为你自己失败的点)。

    现在的普通员工,大部分都不会去主动改进现有的东西,不管现实很难受,都很会隐忍的(我相信有些工作年头的人都明白的);少部分有一些想法,并且愿意提出来(至于如何融合这些想法,是需要一个有威望有能力的领导,而不是一个普通员工),这些人我觉得是值得表扬的,至少愿意说话;极少部分人,愿意不余遗力地推动这些想法(大部分领导只会认可这极少数人,前面愿意说话的人很多时候没人愿意认可你,至于第一种人,已经常态化了)。第二种人,只说但不愿意推动,以及最后一种人(推动最后如果失败的话),通常会有几个原因:钱不是很多,推动太费劲,费力不讨好;真的尽力了,但是同事不好沟通,领导也模棱两可,或者经常(故意?)不小心忘记;不愿意当领导的工具人,成了领导功劳最大,不成影响原有流程你背锅;没成就感,事做成了,但有瑕疵,别人就愿意说你瑕疵看不见优点;领导和稀泥不表扬也不批评不支持也不反对(这种领导蛮多的,毕竟一个小领导,上面还有很多领导看着你呢);等等原因。但凡你这么解释,没经历过的人不会觉得真的好难,反而可能会想:这感觉是个没钱不愿意干事的人,想混;同事哪有这么难沟通,你努力次数太少了吧;能力不行吧,有瑕疵继续搞啊,怎么中途放弃了,不够坚持还是什么的等等,很大可能成为败笔,因为只有经历过的人才更容易明白处境,这种人真的很少,犯不着大概率陷入风险而去解释什么推动不了的原因。

    总结一下:第一,企业要明白混子是常态,要认可愿意提出想法的人(我发现很多人就是不愿意认可提意见的人,他们会说你不行动,但不去细究为什么你不行动),要支持愿意行动的人;第二,不要为了大概率陷险而去解释某些事情失败的原因,大部分人只看结果,企业更如此。面试不是结婚,一面之缘成就成,不成就不成,解释容易造成更多误会,结婚才需要这么解释。(鲁迅:人类悲欢是不相通的)。

    另外,个人经验,如果说想做出改变的努力只是停留在提意见,动动嘴皮子的级别,其实真的没啥用。。。

    这句话是个人都明白说的太对了。可是后续呢?他为什么提意见但是不做?他不做我可以参考一下意见,看下是否可行?如果真的可行,或者我认同他的意见,我为啥不找他说,老铁,你这个意见很稳,我建议你搞搞,我支持你?意见不可行,我为啥不问问你基于什么提出这个意见,这个意见能不能成为抛砖引玉的 idea。当然我这么说绝不是说领导不太行,这事儿要双方努力的,既不能把重担全给了普通员工,也不能全要求领导很厉害。反而老哥你这句话,后面三个句号,给人的感觉是不太认可这种提意见的人的(如果理解错了请见谅,纯讨论事情),因为提意见真的没用,没有任何后续的话。

    诚挚打扰,不再回复。

  • 面试瓶颈 at 2021年04月26日

    所以就是现实很大部分陷入死循环了。就和穷人越穷,富人越富的道理一样。先前做了很多努力,提了很多意见,只要没结果,就等同于零了。我也是特别建议现在的人,佛系一点,公司都差不多的(不挑不会很难的),做事拿钱就完事了,钱拿的少,就混的糊涂一点,多做一些自己的事(钱少又要求人要主动,没这道理吧,测试又不是 PM,做好测试工作就行了);钱拿的还可以,就上点心,有意见提一提啥的。

  • 面试瓶颈 at 2021年04月25日

    LZ 其实可以改变一下姿态的。现在的人,面试姿态都是,我去面试,有求于人,于是想办法去表现,生怕没过。多次失败又有些怀疑自己。这个完全没必要,对方又不是什么很重要的人。即使是中厂大厂,也未必见得面试官很厉害。面试官等同于伯乐了,这个世界没那么多合格的伯乐,大多都是凭借自己所谓的经验行事而已。甚至站在面试官这个职责来说,很多技术人员(充当面试官)在某些方面都是不合格的。

  • 面试瓶颈 at 2021年04月25日

    有个比较难搞的问题是,面试官问你上家公司测试流程。但是刚好上家公司规模小,一个测试,创业团队规模,流程很蛋疼,而自己一个人是不可能推动得了流程等各方面的进步,于是回答了相关的上家公司测试流程,结果面试官认为你很水,不懂流程。但是其实事实上,真正的流程推动,是要基于项目实际情况以及作为测试所能拥有的话语权、同事之间是否愿意协助你改进、领导是否愿意协助等各方面。整个团队没有这个愿意改进的思想,是很难去成长的。结果感觉好像就是面试官认为你这个测试不行,推动不了团队的进步,测试流程没有改进等(就好像锅落在了测试身上。盲猜,感觉面试官有这么个意思)
    其实说句实话,一般面试官 5 年以内资历,面试技巧很多很拉胯的,除了能谈技术,其他的能力(比如沟通能力、挖掘能力、引导能力等)对比技术能力差了不止一个档次。

  • 【测试工具】日志分析器 at 2021年03月09日

    不用这么麻烦的,linux 我直接 tail 搞定,windows 我用 BareTail 工具。
    tail 和 BareTail 都支持高亮文字的,你这个工具其实也非常建议加入文字高亮功能,没高亮是我用的话会挺难受的

    #变动指定文本的颜色
    def search(text_widget, keyword, tag):
        pos = '1.0'
        while True:
            idx = text_widget.search(keyword, pos, stopindex=END)
            print(idx)
            if not idx:
                break
            pos = '{}+{}c'.format(idx, len(keyword))
            text_widget.tag_add(tag, idx, pos)
            print(tag,idx,pos)
    T1 = scrolledtext.ScrolledText(top, width=70, height=30, font=("隶书", 10),)
    search(T1, content, "红色")
    
    

    # 效果图如下

  • 周日焦虑失眠吐槽 at 2021年02月01日
    仅楼主可见
  • 如果用 python 的话,collection 模块中 defaultdict 可以做到。哦,你这是统计单词,不是单个字符串,那要是我就切割文本,弄成 list,再用 Counter 去做。或者量大看看用 pandas 来做

  • 诱惑真大😀

  • 仅楼主可见
  • 仅楼主可见
  • 多谢答复~~赶明儿结合各位老哥的智慧,再试试

  • 多谢指点。loginifo 的确是 message ServerCmdData 的 pd 返回对象。loginmsg 则是 message ClientCmdData 的 pd 返回对象。

        def playerlogin(self):
            logininfo = CmdPlayer_pb2.CmdPlayerLoginReqMsg()
            logininfo.serverId = self.serverid
            logininfo.accountId = self.accountid
            # logininfo.sign = eval(ms4)["data"]["token"]
            logininfo.sign = self.token
            logininfo.loginCheckTime = int(round(time.time() * 1000))
            return logininfo
    
        def clientmsg(self, messageid, msg=None):
            cmsg = Cmd_043e09dcbe_pb2.ClientCmdData()
            cmsg.messageId = messageid
            cmsg.clientIndex = 0
            if msg:
                cmsg.data = msg
            return cmsg
    }
    
    message ClientCmdData {
        required sint32 messageId = 1;//命令ID
        required sint32 clientIndex = 2;
        optional bytes data = 3;//命令主数据
    }
    
    msg = protoinfo.playerlogin()
    loginmsg = protoinfo.clientmsg(1001, msg.SerializeToString())
    

    我自己尝试的发送,就是 logininfo.SerializeToString() 作为 ClientCmdData 的 pd 对象的 data 值,再构造整个 ClientCmdData 序列化之后发送的。游戏可太难受了,最近加班加到死~~赶明儿继续研究吧,代码现在能用,能录制协议内容发送,目的是达到了的。
    多谢抽空解答。

  • 感谢老哥指点方向。现在反正代码能用,后面我再往这个方向研究一下,顺带补一下基础知识。

  • @jiazurongyu 游戏行业的老大哥,不知道能否指点一下

  • 仅楼主可见
  • 为了避免大改,尝试着用了一下法子解决不同方式(和不同 ip)登录的数据同步问题(前提:保证手机用 USB 登录过,即数据库有 pr_key 为"udid": "7PR4C19912015805"的数据,我称之为源数据吧,):
    添加了两个方法,具体作用如下:
    第一个方法:负责设备断开连接的时候,向源数据同步信息;第二个方法:负责设备连接时候向源数据请求同步信息操作。从 websock send 发送的数据,我们很容易知道设备做了什么操作的,第二个方法就可以根据需要来判断是否请求同步操作,比如第一次登陆不用同步,USB 登陆不用同步,点击停止设备也不用同步。
    最终效果:换 ip 登陆能够同步 USB 登陆方式的数据(USB 数据始终都是最新的数据,因为设备下线有做同步操作),如图所示。
    我所设置的同步数据如下,应该不会有遗漏,经过测试貌似没问题~~:
    need_syn=["idleTimeout","createdAt","lastActivatedAt","department","idleTimeout","usingBeganAt","usingDuration","userId","owner",("properties","propertyId")]

  • 无线的方式连接设备,adb 序列号是 ip:port,数据库也是基于这个来创建数据,如果换了 ip(或者采用 USB 方式连接换了新的序列号),设备就变成了 “新设备” 了,是不是可以通过其他唯一识别码来调整,不创建新的设备数据。刚用没几天,还不会二次开发,提个小意见~~