公司两个后端项目公用一个基础库,技术老大从之前项目中抽出来的,然后闭源了(他还在公司)。。。只给 jar 包,没有代码,也没有文档,现在开发起来很 tm 蛋疼,像吃了苍蝇一样。
具体内容包括数据库访问,授权验证,http 服务器,程序启动和销毁等等,想改点东西都得通过他,比如想加个 log,记一下所有的 http 访问记录,只有在他的库里才能改。
这不只是一个技术问题,涉及到公司和技术老大之间的一堆事。>
现在小弟在考虑通过技术手段解决,自己写一遍,尽量少动业务,去掉他的库,在考虑 Spring,但是没有相关的经验,各位有没有推荐的 spring 相关项目可以参考一下?或者有没有类似的经历交流交流?
这个库大概包括:
公司现在的技术栈是 kotlin,mysql,jdbc, http 服务器用的 javalin,没上大框架。他的库不知道多少代码,估计大概一万行左右
![]() | 1 bl 2021-07-07 14:58:58 +08:00 把他的库去掉,哪里报错改哪里 |
![]() | 2 duduaba 2021-07-07 15:02:05 +08:00 ![]() 你都说了他是老大,所以当你这个库写成之时,也就是你离开之日。 |
![]() | 3 yousabuk 2021-07-07 15:03:02 +08:00 via iPhone 不要这么干 |
![]() | 4 SilencerL 2021-07-07 15:03:32 +08:00 ![]() 大吃一惊.jpg 劳动合同里面没写类似“在司期间所有产出均属公司所有”之类的条款吗,没离职就搞这出,离职岂不是还能在里面偷偷加屎? |
![]() | 5 keepeye 2021-07-07 15:03:48 +08:00 自己开个分支出来慢慢改,哪里报错换哪里 |
![]() | 6 GG668v26Fd55CP5W 2021-07-07 15:06:37 +08:00 via iPhone 别这样,损人害己 |
7 wangkun025 2021-07-07 15:06:44 +08:00 活久见。 |
![]() | 8 fiypig 2021-07-07 15:07:09 +08:00 不要自己改, 只能找他,除非他走了 还有他这么操作,也差不多也走了吧 |
![]() | 9 huangmingyou 2021-07-07 15:12:42 +08:00 大公司里面,源代码不是谁都能全部浏览吧。当初这么搞,肯定是出于安全考虑。 |
10 yaoliyc 2021-07-07 15:13:23 +08:00 jar 做了加密吗?不然反编译一下都看到了。而且这也不是单纯的技术问题。 |
![]() | 11 wolfie 2021-07-07 15:27:40 +08:00 跟 spring 没关系,就是基础工具,一般轮子 hutool 基本有。 |
![]() | 12 murmur 2021-07-07 15:28:37 +08:00 http 服务器,这个东西也要写库的意义何在 |
13 jzphx 2021-07-07 15:31:16 +08:00 神仙打架别凑热闹 |
![]() | 14 yukiww233 2021-07-07 15:32:07 +08:00 ![]() jar 相当于开源; 如果只是简单改一些东西注入一些东西的话, 相同路径本地写一份覆盖掉 jar 里的 class 就好 |
![]() | 15 EPr2hh6LADQWqRVH 2021-07-07 15:33:07 +08:00 以后开公司机器自带 cron job 每半分钟运行 killall java 杜绝此类问题 |
16 zhuweiyou 2021-07-07 15:33:39 +08:00 他是老大 当然听他的 |
17 dadaoqueyi 2021-07-07 15:35:49 +08:00 现成的甩锅对象,有问题就找他不是挺好的嘛。我做的就是平台封装的活,不知道被甩了多少锅,纯粹吃力不讨好,特别是稍微懂一点技术的人。小白还好不懂就老老实实的按照封装的搞。不过不给文档就过分了,源码没放开公司自己有考量的。 |
![]() | 18 Tink PRO 没这么干的吧也能当 |
![]() | 19 vevlins 2021-07-07 15:50:26 +08:00 ![]() 他闭源的目的不是不让你们用,而是不让你们改,甚至于可能想加强对这里的管理,希望以后方案是他来拟定。 搞清楚这一点很重要。如果你自己搞一套,他的目的就达不到了,你跟老板就是在唱反调。如果你的目的就是唱反调,那就做,否则还是不要的好。 |
![]() | 20 qW7bo2FbzbC0 2021-07-07 15:52:13 +08:00 @murmur #12 我猜可能是自定义 cookies,设置特殊 header,dto 序列化反序列化 |
21 nicholasxuu 2021-07-07 16:03:13 +08:00 好像法律上,(在公司的时间)用公司的电脑,做出的东西,都是属于公司的知识产权,他是没法据为己有的。 而且即使是闭源了的开源库,也可以继续使用之前的开源版本呀,自己更新就行了。 LS 有人说了,估计是只是不希望谁都可以改,这个很正常的。不然谁都能改功能,改完还得他来维护,出问题了他得负责。 |
![]() | 22 ApmI00 2021-07-07 16:27:12 +08:00 这摆明就是不让修改而已,就是给用而不是给改的。还要加日志打印。。。难道平时使用使用 jdk 自带的类,也改源码,添加日志输出,然后再打包编译使用?当然,没有文档是蛋疼,这个可以诉求。加日志输出,jdk 的动态代理,或者干脆静态代理,就可以吧。 |
![]() | 23 ApmI00 2021-07-07 16:29:53 +08:00 ![]() @nicholasxuu 楼主讲的闭源,跟开源项目的,一点关系都没有,就是只提供 jar 包使用,而不是把工具源码的放业务项目一起编译而已。 |
24 jorneyr 2021-07-07 16:31:24 +08:00 需要啥,提需求即可,莫动手 |
![]() | 25 Lonely 2021-07-07 16:35:01 +08:00 via iPhone 年轻人不要太气盛(狗头) |
26 wfd0807 2021-07-07 16:54:09 +08:00 这个基础库的意义是什么? |
![]() | 27 qwerthhusn 2021-07-07 17:01:16 +08:00 ![]() 只要没加密,就很简单 假如你想临时改他写的一个类 a.b.c.D 的内容。 你在工程下建一个 a/b/c/的文件夹,把 D 类反编译的代码放进去。直接改内容。。 这时候程序启动时,加载到这个类的时候会直接加载你魔改过的,而忽略 jar 包里面的 |
![]() | 28 IvanLi127 2021-07-07 17:04:15 +08:00 用着就是了,如果不想通过他的库 你给自己开个旁路,把你的代码走这旁路就好了,去掉不可取,出事了你就是背锅侠 |
![]() | 29 Vindroid 2021-07-07 17:10:29 +08:00 ![]() 核心库做权限限制没问题,有需求由 PM 提给技术大佬来变动,问题是文档都没有,这应该算是大佬的私心了 |
30 undef404 2021-07-07 17:10:40 +08:00 这不是很正常的事么。不可能所有人都看到公司的所有代码。 |
31 TuringGunner 2021-07-07 18:09:19 +08:00 多好的摸鱼理由啊,何必自己增加背锅机会呢 |
![]() | 32 muunala10221 2021-07-07 18:39:25 +08:00 你闲的?? |
33 darknoll 2021-07-07 19:04:01 +08:00 不让你看是怕你发现他其实没写多少都是抄的 |
34 hs0000t 2021-07-07 19:11:23 +08:00 via Android ![]() 记住,这不是个技术问题 |
![]() | 35 4771314 2021-07-07 19:39:08 +08:00 @vevlins 如果是加强项目管理,那直接用 git 的一套不就可以了,这人明显是搞事情 没有源码是可以接受的,但是没有文档这个问题就很大了,让他提供文档和相应的用例,不然对着一个黑盒,那真的很难受 |
36 chenqh 2021-07-07 19:42:50 +08:00 摸鱼不爽码? |
![]() | 37 liuhuansir 2021-07-07 19:53:12 +08:00 这个不算闭源吧,这就相当于二方库,只不过他应该要提供文档 |
![]() | 38 wqtacc 2021-07-07 20:30:25 +08:00 ![]() 这不就是大佬封装好了基础组件,不让看不让改么,作为普通员工按要求用就是了;哪里不知道就问大佬啊 |
![]() | 39 itechify PRO 封装的问题,他写的 sdk 没有暴露接口,提供自定义实现,或者没有 before/after 钩子暴露 |
![]() | 40 inframe 2021-07-08 00:05:17 +08:00 不如 jd GUI 直接看看反编译的源代码? |
41 dayeye2006199 2021-07-08 01:48:53 +08:00 10 分钟一条消息问这个借口怎么用,那个借口怎么用。直到人家忍不住说 “你 tm 不会看文档 /源码”。。。 |
![]() | 42 ericgui 2021-07-08 02:03:12 +08:00 这肯定是有问题的 |
43 HENQIGUAI 2021-07-08 07:19:28 +08:00 非技术问题不要用技术解决。 |
![]() | 44 xcstream 2021-07-08 07:54:29 +08:00 为什么要写一套,这是个问题 |
![]() | 45 xuanbg 2021-07-08 08:05:25 +08:00 楼主你要重写一套的话,前提是你老大不再是你老大。否则就别给自己找麻烦了。 |
![]() | 46 yolee599 2021-07-08 08:54:54 +08:00 via Android 不要这么干,除非这代码涉及敏感操作,否则他的源码有义务给你,因为这是公司的不是他个人的 |
![]() | 47 Leonard 2021-07-08 09:26:32 +08:00 不要试图用技术来解决非技术问题 |
![]() | 48 kop1989 2021-07-08 09:27:28 +08:00 你去工地搬砖的时候,难道你也要偷偷换成自己的烧的砖嘛?理由就是别人窑厂烧的砖你看不惯? |
![]() | 49 sagaxu 2021-07-08 09:28:17 +08:00 via Android ![]() 小农思想 |
![]() | 50 play78 2021-07-08 09:35:43 +08:00 风险控制啊。 核心代码闭源,在稍微上规模的公司,这不是很常见的吗?不然哪天员工就给泄漏出去了。 每个员工都能知道 WX 的登录逻辑? ZFB 支付逻辑? 没有文档,有个 demo,你直接调用就可以了。有问题直接找他。 |
![]() | 51 Marszm 2021-07-08 10:29:24 +08:00 区区 jar 包。。加密了么?没加密不等于开源? |
![]() | 52 Marszm 2021-07-08 10:32:00 +08:00 还有就是,公司内部不存在开源闭源。。。都是闭源。。我能改你们公司代码才叫做开源。 |
![]() | 53 chengkai1853 2021-07-08 10:32:32 +08:00 感觉你想当老大 |
![]() | 54 icyalala 2021-07-08 10:35:46 +08:00 |
![]() | 55 allanpk716 2021-07-08 10:45:27 +08:00 via iPhone 基础库,公司内部闭源的原因基本是想让大家不要瞎折腾,用一个稳定的,有问题统一改,有需求就提。你都说没相关经验,正好说明公司的决定是正确的,别瞎折腾。文档不全就反馈,而不是重做一个轮子。 以后有机会你带新人的时候,你可以想一下为啥要强制用统一的基础库的。 |
56 xumng123 2021-07-08 10:49:34 +08:00 via iPhone 平台中台业务代码,公司有大的考虑,可以反馈但别这么干 |
![]() | 57 xingzw 2021-07-08 14:12:48 +08:00 情商堪忧 |
![]() | 58 FanError 2021-07-08 14:27:55 +08:00 我们公司基础库也是这样弄的,封装成 jar 包,放在私有 maven 上。。 方便分发到其它项目( 5,6 个)。。 |
![]() | 59 yunshansimon 2021-07-08 14:38:57 +08:00 既然用 java,用反射可以改任何东西,不用源代码吧。用好反射,就是神也不能阻止你在运行时更改他的函数。 |
![]() | 60 gefranks 2021-07-08 14:45:19 +08:00 现在弄得项目也有个类似这样的引用了 ar 包,看上去是公司里人自己写的,但是文档没有,源代码也没有. 就算有也不想去改了。 现在用这个的就是八仙过海各显神通了,能凑合用的就用,不能凑合用就另起炉灶了 |
61 back0893 2021-07-08 14:58:50 +08:00 文档都没咋个写.. |
![]() | 62 windyboy 2021-07-08 15:07:03 +08:00 很多不知深浅的搞 java 的,动不动就是自己写什么基础库 还让所有项目继承来用,根本不考虑长期的运维问题 一塌糊涂 |
![]() | 63 jiyinyiyong 2021-07-08 15:26:22 +08:00 > 而且现在他转项目了,现在就剩我一个后端。不给代码仓库权限,不给文档就算了,jar 包也不给个 sources 包 不明觉厉, 转到其他项目了不给权限? 意味着后端这个包如果有 bug 还没人改了? 老板还默认这种情况的吗... |
64 bthulu 2021-07-08 15:33:41 +08:00 @allanpk716 这里有个最麻烦的问题在于, 当闭源基础库是领导写的, 同时这个领导已经高升不再写代码了, 这个时候有 issue 要改, 要加功能那就基本不可能了. 基于办公室政治原因, 没人敢让领导去改代码, 更没人敢说领导代码写的不好, 所有的 bug 最后都变成了 feature, 屎山就这么来了 |
65 oldmanong 2021-07-08 16:10:04 +08:00 via iPhone 既然楼主这么想造反,那就试试嘛,万一成功了呢,你就是技术老大了 |
67 kwanzaa 2021-07-08 17:20:31 +08:00 有能力就自己写 |
![]() | 68 rb6221 2021-07-08 17:51:12 +08:00 springboot 一套,网上全是开源项目 |
![]() | 69 LDa 2021-07-09 10:31:52 +08:00 这么良心的老大哪里找,锅可以甩的飞起 |
70 37Y37 2021-07-09 16:20:26 +08:00 emm...老大这思想 |
![]() | 71 allanpk716 2021-07-10 09:19:46 +08:00 @bthulu 如果考虑办公室 ZZ 问题,那么建议看形势不对就撤吧,因为你们不敢提 issues 已经恶性循环,和自己偷偷造轮子应该也是会被锤的 doge |
72 bthulu 2021-07-10 10:57:55 +08:00 @allanpk716 已经被直属锤过一次了, 但是大领导的包实在是难用, 我现在学聪明了, 把大领导的包改了后, 改个超低版本号上传上去. 然后引这个低版本的 jar 包就行了. |
73 MidCoder 2021-07-21 13:51:30 +08:00 这个库纯属你们老大闲的没事,没有任何技术含量。 数据库访问不管是 spring 现有的框架 spring jdbc 还是 mybatis 都已经很完善,没有必要自己再去造轮子, http 服务器这个是啥意思?自己做了一个 tomcat ?还是 nginx?如果是,那这个轮子太重了,闲的蛋疼,如果是一个统一的 springmvc 包装,这也是闲的蛋疼,没事找事。 授权签证,这个不管是 spring 的 security 还是 shiro,结合 oauth 规范,这个也没必要再造一个轮子; 卧槽,为啥用户系统还做成了一个框架或者工具?这明显是一个业务,业务就要好好的去写业务,没必要在搞一个这个东西 TCP 现在一大堆网络框架,为啥自己写?你能比 netty 牛逼?如果是这样,那他现在也不应该还在你的公司,早就名声在外了。 综上所述,你们公司太卷了,而且卷的一点技术含量都没有,来我们这边[狗头] |