Geek Online 2020 编程挑战赛作品展示:商业价值奖《宠宝儿》

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经...
继续阅读 »

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经近两个月的激烈角逐,15 支队伍在近百份参赛作品中突出重围,闯入总决赛,最终决出冠亚季团队及四个单项奖。

https://geekonline.rongcloud.cn/uploads/files_user1/article/607e7d8097e9b481793.png

入围作品主要集中于社交、游戏和工具等多个类别,为鼓励开发者挖掘创意、实现更多实时音视频和即时通讯技术的应用场景,最终,评委根据作品完整性、项目创意性和潜在商业价值三个维度进行综合评分,与数百万在线观众一道,见证了冠军队伍的诞生。


商业价值奖团队 - MaxFloat

MaxFloat 是一支有实力,有梦想,有创意,敢拼搏,即想即做的队伍。他们认为当前城市化生活环境下人与人的交流越来越少,宠物逐渐替代朋友成为更好的伙伴,养宠物的越来越多,但随之而来的是更多的问题,比如宠物的遗失、被抛弃造成了流浪宠物越来越多,而宠物的健康,有时也不能及时得到重视。因此他们做了一款以宠物招领、寄养、寻回、宠物医生等为主,以宠物信息普及、宠物疾病普及为辅的 APP 帮助广大宠物爱好者。

微信截图_20210420173402.png



宠宝儿

源码地址

https://github.com/rongcloud-community/RongCloud_Hackathon_2020/pull/7

开发技术

•服务端:java,maven+SpringMVC,layui, mysql,h5,js,css,jsp 

•客户端:Swift+OC,cocoapod,RongIMKit, RtcLib

功能简介 

1,⽤户信息模块,登录,注册,修改

2,宠物信息模块,常⻅宠物,热⻔宠物 

3,宠物资讯,常识,公告模块

4,宠物救助模块,招领,寻回,领养 

5,宠物医⽣模块 

6,IM单聊模块 

7,低延迟直播模块 

8,分享模块

微信截图_20210420181005.png

直播功能:

 • 1,⼩窗⼝模式,⽤户可以缩⼩当前直播⻚⾯,并且可以拖动,进⽽可以进 ⾏其它操作 

• 2,静⾳,切换视频采集源 

• 3,消息列表,直播过程中,⽤户可发送消息,使⽤聊天室功能 

• 4,主播端可查看当前观看直播⼈员 

• 5,⽤户端可送礼物给主播 

• 6,魅⼒值,每⼀个礼物都附带特定的魅⼒值,礼物可以提升主播的魅⼒值 

• 7,直播界⾯展示主播头像,昵称,当前观看⼈数,魅⼒值等,后期接⼊其它相关功能


后期功能规划 

1,完善现有功能,救助模块,宠物医⽣模块和直播模块 

2,宠物寄养模块 

3,宠物疾病模块 

4,短视频模块与直播模块功能结合 

5,计划对接宠物医院和救助站与宠物医⽣相结合 

6,计划开发宠物商城模块,与宠物医院,直播模块相结合


收起阅读 »

Geek Online 2020 编程挑战赛作品展示:科技创新奖《场信》

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经...
继续阅读 »

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经近两个月的激烈角逐,15 支队伍在近百份参赛作品中突出重围,闯入总决赛,最终决出冠亚季团队及四个单项奖。

https://geekonline.rongcloud.cn/uploads/files_user1/article/607e7d8097e9b481793.png

入围作品主要集中于社交、游戏和工具等多个类别,为鼓励开发者挖掘创意、实现更多实时音视频和即时通讯技术的应用场景,最终,评委根据作品完整性、项目创意性和潜在商业价值三个维度进行综合评分,与数百万在线观众一道,见证了冠军队伍的诞生。


科技创新奖团队 - 萍水相逢的生活

微信截图_20210420173108.png

这支队伍只有一位选手,他是一个心怀想法的程序员,做的产品是一个基于事务的陌生人聊天系统,事务场景可以是租房加中介的联系方式、街头偶遇添加好友、发布大字报等,这款产品的设计思路旨在为大家生活提供便利的软件。


场信 - 基于场景的聊天系统

源码地址https://github.com/rongcloud-community/RongCloud_Hackathon_2020/pull/30/files

安装和部署

场信应用包含三端,分别是iOS 端、Android 端和移动端。由于使用的是 WebView,三端的使用体验基本一致,但安装上略有出入。

Web 端

最简单的当属 Web 端了,直接访问 https://yet.run:8000 即可访问 Web 端。

Android 端

安卓端请进入 android 目录通过源码安装。

iOS 端

iOS 端请进入 ios 目录通过源码安装。

何谓场信

现实生活中,我们总是能遇到各种各样的与陌生人交换联系方式的场景,例如收取快递、领外卖、租房甚至是街头被搭讪。很多时候,自己是不情愿泄漏自己的联系方式的,但往往不给又不好收场。作为沪飘一族,最身为体会的是每次租房的时候。那时候要加很多中介的微信,加他们的电话号码,租完房之后大约在三四个月以后又要一一从微信通讯录里把他们删除。当我转租房子的时候,又要加上一大端我不认识的与我一样的飘一族,聊上几句之后,对方可能表示不再需要,就再也不会有下文了。这是我面对现实的无奈,但我不知道如何解决。

我想,如果有这么一款应用,在里面我有多个帐号,每个帐号与我的联系都不是那么紧密。在里面躺着的不是我的朋友圈子里的人,而是因为某些事情不得不与他们产生这样或那样的联系。也许寥寥数语之后,就不再有任何交集。但我不用担心,不仅仅这次的聊天是临时的,这样的帐号也是临时的。我可以很轻松地在应用内创建或删除一个场景。是啊,当我租到房子,或者我的房子已经转租出去之后,我就轻松地删掉我的帐号就好了。

现在,就有这么一款应用现世了。只不过,在我的“场信”应用下,帐号对应的是场景,用户可以很轻松地创建和删除场景,或者把场信绑定的帐号分享给他人实现沟通。如果你想快速地体验,可体验 Web 版。如果你想真正地使用,那就安装 iOS 版或 Android 版吧。只不过在大赛期间,iOS 和 Android 只能通过源码安装。

功能概览

  1. 当前可以创建、编辑、删除场景,场景旨在做成轻量级的。

  2. 在场景内,可以收发消息、拨打语音和视频电话。

  3. 必要的编辑手段都是有的。

产品理念

在“场信”应用上,我希望场景的概念是轻量级的,用户不可感知的。用户在使用的过程中无需知道场景是什么,将它看成是一个多账户的聊天软件即可。这有点类似于微信的多帐号切换,只不过在微信下切换帐号的操作较重,而场信的帐号是轻量级的,且随用随删。

对于场信的这个理念,当前产品形态已经初现意味了,应该是这个理念的最朴素实践。但应用应该可以更好的,即更加轻量化、操作更加便捷。现在正朝这个方面努力。

目前“场信”最失败的地方在于入口处,几乎为 0. 除了场信号(场信号可编辑,类似于微信号),用户没有其他的分享方式。分享场信的方式上,我认为有两个方案比较好:二维码和虚拟电话号码。两者之中我更青睐于虚拟电话号码,因为它有望破局。由于通过虚拟电话号码实现完整的诱导逻辑工作量大了点,这方面没有抓紧做,希望后期努力。

常见问题

1. Android 和 iOS 应用能否在应用退出时通过通知中心推送?

暂时不能。因为接入推送中心需要开发者帐号,再加上我个人没有这方面的经验,所以就没有尝试。时间上不允许了,希望后期能够补充。

2. 会不会遇到无法实时收到消息的情况?

概率很小。一旦出现此问题,原因可能是多方面的。一般来讲,杀掉进程再重新进入即好。

3. 谁都能用吗?

是的,谁都能用。输入手机号即可注册或登录,无需填写验证码,就是为了让测试阶段不设门槛。



收起阅读 »

Geek Online 2020 编程挑战赛作品展示:季军项目《IYI 网络剧院》

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经...
继续阅读 »

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经近两个月的激烈角逐,15 支队伍在近百份参赛作品中突出重围,闯入总决赛,最终决出冠亚季团队及四个单项奖。


/uploads/files_user1/article/607e7d8097e9b481793.png


入围作品主要集中于社交、游戏和工具等多个类别,为鼓励开发者挖掘创意、实现更多实时音视频和即时通讯技术的应用场景,最终,评委根据作品完整性、项目创意性和潜在商业价值三个维度进行综合评分,与数百万在线观众一道,见证了冠军队伍的诞生。

大赛三等奖是 youweyoung 团队的游戏作品《IYI 网络剧院》,它同样凭借新颖的创意胜出。《IYI 网络剧院》继承了传统皮影戏剧文化,融合了动画、音视频等现代技术,并参考戏院和剧院的布局方式而开发的小游戏,主要应用场景有二个,一是专业领域的表演者可以演绎剧本里面的不同角色、或者对不同角色配音,提高自己的专业技能,实现剧本演绎的低成本化;二是非专业领域里,父母为孩子远程讲故事时,可以利用皮影、动画等内置素材,让孩子沉浸在视频故事场景中。

微信图片_20210420155931.jpg


IYI网络大剧院 —— 互联网影音新体验[By YouweYoung]

源码地址https://github.com/rongcloud-community/RongCloud_Hackathon_2020/pull/42/files

项目介绍

目前市面上有大量基于RTC技术的聊天、语音游戏、会议、教学、直播等应用,很少看到有互联网与传统文化、艺术完美结合的产品。于是,在皮影戏、木偶戏以及大型游戏丰富动作的启发下,提出了一个网络剧院的概念,我们的剧院可是和现有那些只播放视频的应用不同的哦,它更像一个能够快速搭建舞台、角色可以24小时工作的真剧院的互联网映射。 什么是网络剧院?它一个虚拟的剧院、舞台,有虚拟的角色和提前设计的剧本(演播者也可以自由发挥创作能力,利用舞台、物品和人物演绎自己的故事)。内容:舞台、角色、剧本将是本项目极具竞争力的核心内容。通过打造虚拟明星,类似于初音、洛天依等,让虚拟明星来扮演不同角色,演绎不同的故事。对于“追星者”,我们可以给他们每人发放一名偶像。 为了更广泛的传播,以及降低使用成本,选择了以web技术为基础,利用其跨平台的特性,让每一个喜欢的影音作品的人得到全新的体验。 一流的配音员+活跃的剧本创作者+熟练的舞台工作人员,将会让网络影院服务每个人,让他们在闲暇时光体验剧院才能感受到的经历。或许某一天,借助ai的力量,让它掌控配音、剧本设计、角色创作和控制,智能影音时代就会真正的来临。

项目准备

  1. 安装nodejs

  2. 修改config.ts文件的appid

  3. 修改 src/api/mock/data 下面的用户token,通过后台生成对应于appid的token,或者找我要appid进行测试

  4. 安装依赖,运行:

     npm install

    Online experience 在线体验

本地测试

npm run serve

说明

因为出于项目核心内容的保密性需求,公开版本仅用于展示基本功能,并且提供了多个不同身份的账号供体验,账号密码相同: role 1 : 666 666665 666661;role 2:111 555 role = 1 代表观众,role = 2代表演播者 观众可以观看舞台的表演、通过文字互动;演播者还可以选择角色、操作角色、进行配音,也就是进行故事的演绎 项目基于vuejs,以便于转化成混合移动APP/多种小程序/鸿蒙app

功能

多剧场 mock登录的身份控制 动态场景的更新 语音的分发 剧场内文字聊天 背景音乐 角色移动和动作基础控制,进场出场控制


收起阅读 »

Geek Online 2020 编程挑战赛作品展示:亚军项目《点解》

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经...
继续阅读 »

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经近两个月的激烈角逐,15 支队伍在近百份参赛作品中突出重围,闯入总决赛,最终决出冠亚季团队及四个单项奖。微信图片_20210420145156.png入围作品主要集中于社交、游戏和工具等多个类别,为鼓励开发者挖掘创意、实现更多实时音视频和即时通讯技术的应用场景,最终,评委根据作品完整性、项目创意性和潜在商业价值三个维度进行综合评分,与数百万在线观众一道,见证了冠军队伍的诞生。

受疫情影响,游戏用户数在今年得以持续上涨。对于游戏开发者而言,游戏是否引人入胜,在于创意是否足够新颖。本届大赛中,红鲤鱼与绿鲤鱼与驴团队的《点解》项目,是一款面向程序员这一特定人群开发的二维码解谜小游戏,因其极具创意而获得大赛二等奖。

参赛成员现场解析了《点解》的玩法,该款游戏谜题层次丰富如洋葱,第一层需要用户集成融云 SDK、掌握融云 SDK 的基本概念,第二层需要用户做一定程度的视频后处理,第三层需要用户做一些图像识别。

微信图片_20210420154944.jpg

值得一提的是,这款游戏在谜题二维码生成时,加注了时间戳,按时间戳传输视频流信息数据,继而在解码时,再获得一个时间戳,这个从采集、渲染、传输到最后的解码,整个端到端的时间差,实际上恰好反映了融云 RTC 真正的延迟时间。对于融云而言,如果能以游戏的方式让开发者快速了解融云在 WebRTC 领域的特点和技术能力,实属难得,为此组委会为红鲤团队颁发了突出贡献奖。

点解——给融云开发者的RTC解谜游戏

1024程序员节就要来了,各大厂商给开发者们准备了什么有趣的活动活动呢?【点解】给融云开发者准备了一题。从拨通拨通指定的机器人用户开始,谜面是一个二维码,解开即可获得一个谜底的碎片。用任意你喜欢的语言及SDK,开始迎接挑战吧!

源码地址https://github.com/rongcloud-community/RongCloud_Hackathon_2020/pull/116/files

在线demo

1. 设置发送端

打开 https://dimgai.wrtc.dev:8443/publisher/ ,选择一张图片,点击确定。

2. 呼叫该用户

打开 https://dimgai.wrtc.dev:8443/demo/ , 进入会议室,并且呼叫publisher用户。publisher用户是个机器人,会播放不断翻转的二维码。

3. 接收/解码

  1. 如您在使用iPhone,打开相机,扫描机器人的二维码,Safari将自动跳转。

  2. 或直接打开 https://dimgai.wrtc.dev:8443,给予相机权限,用相机对准不断翻转的二维码。这时候相机将不断解码,并将结果绘制在屏幕上。

开发/安装

分别进入publisher/server/callllib-v3目录,执行npm install进行安装。通过npm run dev进行开发。可能需要修改域名/端口等配置。 24 Projects/红鲤鱼与绿鲤鱼与驴队/点解——给融云开发者的RTC解谜游戏/calllib-v3/README.md @@ -0,0 +1,24 @@

CallLib Demo

注意事项:

1、需开通 [音视频 3.0 服务]./docs/ready.md

2、旧版 calllib-v3 demo 请参考: calllib-v3-old

启动流程:

  • [前期准备]./docs/ready.md

  • [Demo Server]./docs/server.md

  • [Demo Web]./docs/web.md

  • [演示示例]./docs/show.md

相关文档:

Web CallLib 开发指南: https://www.rongcloud.cn/docs/web_calllib.html

Web IM SDK 开发指南: https://www.rongcloud.cn/docs/web.html

融云知识库: https://support.rongcloud.cn

融云开发者后台: https://developer.rongcloud.cn


收起阅读 »

Geek Online 2020 编程挑战赛作品展示:冠军项目《缘拼》

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经...
继续阅读 »

由全球领先的互联网通信云服务商融云主办的 Geek Online 2020 编程挑战赛,于 2020 年 10 月 17 日举办了线上总决赛。本届大赛以“后疫情时代通信云技术的创新及实践”为主题,以融云 IM 和 RTC 的 SDK 为编程项目,历经近两个月的激烈角逐,15 支队伍在近百份参赛作品中突出重围,闯入总决赛,最终决出冠亚季团队及四个单项奖。

微信图片_20210420145156.png

入围作品主要集中于社交、游戏和工具等多个类别,为鼓励开发者挖掘创意、实现更多实时音视频和即时通讯技术的应用场景,最终,评委根据作品完整性、项目创意性和潜在商业价值三个维度进行综合评分,与数百万在线观众一道,见证了冠军队伍的诞生。

尽管当下网络发达,沟通渠道众多,人们的孤独感仍然无法摆脱。开发者们通过研究发现,在线社交的应用领域还存在着大量“死角”,参赛团队缘拼的作品《缘拼》针对大学生群体,基于 WebRTC 技术,设计了一款专注于解决大学生社交难题的小程序。评委们一致认为,无论是作品的完整度、创意性,还是 SDK 编程使用方面都很出色,因此夺得了本次大赛的冠军。

决赛现场的 Demo 演示可以看到,这款小程序主页包含搜索框、官方公告、物流播图、缘拼分类、缘拼展示以及发起缘拼等按钮。大家可基于兴趣在学习、娱乐、出行、吃饭等方面发布诉求,帖子增加的同时会创建一个直播连麦群聊,用户可以在其中畅所欲言。这样利用地理位置提供精确的缘拼地点,通过语音、视频构建同城兴趣小组,最终可以将线上兴趣转换为线下社交行为。

微信图片_20210420145217.png

队伍名:缘拼

源码地址https://github.com/rongcloud-community/RongCloud_Hackathon_2020/pull/93/files

参赛类别:小程序

参赛选手:康帅 杨帧 张晨博

第1章 引言

1.1 缘拼的开发背景

随着中国互联网技术的不断地发展,手机社交已经成为我们日常生活里不可或缺的一部分。截至2020年3月,我国手机网民规模为8.97亿,我国网民使用手机上网的比例高达99.3%。在我国网民群体中,学生最多占比26.9%[1]。网络社交对我们生活的影响越来越明显,调查结果显示,96.03% 的学生认为网络社交对其生活学习有重要影响,但随之而来的孤独感也不乏见。74.17% 的学生认为现实生活中的孤独感对生活有一定影响,13.25% 的学生认为有很大影响[2]。我们基于此出发,通过缘拼呼吁大学生“走出去”,参加社会活动,增强实际中的沟通交往能力。

1.2 缘拼的应用领域及使用对象

缘拼是一款专注于解决大学生社交难题的小程序。便利了大学生的日常生活。在学习、娱乐、出行、吃饭等方面为使用小程序的大学生用户发布诉求,提供寻找志同道合好友的服务。

第2章 需求分析

2.1 需求概述

小程序设计帮助使用者利用本程序寻找有相同诉求的同学。根据使用者的需求发起缘拼参与缘拼。与其他同学进行交流,从而线上沟通,线下社交。扩大自己的社交圈

2.2 功能需求

  1. 发起缘拼,并提交相关信息

  2. 根据用户昵称,缘拼标题对缘拼进行搜索

  3. 浏览缘拼的内容

  4. 对当前缘拼内容进行点赞,评论,转发

  5. 与发起缘拼的同学进行交流

  6. 能够在详细了解后参与缘拼

第3章 团队与缘拼

3.1 团队组成

后端:杨帧

前端:康帅 张晨博

3.2 缘拼

AppID:wx5031f067550476e7
小程序体验版二维码:微信图片_20210420160731.jpg

第4章 概要设计

4.1 设计思路

小程序设计帮助使用者利用本程序对缘拼进行操作。根据使用者的需求进行发起缘拼,浏览缘拼,模糊查找缘拼信息(按用户昵称,缘拼名称),与发起者进行沟通,并参与缘拼。

综上所述,该系统实现包括以下功能:

  1. 发起缘拼

  2. 对缘拼进行搜索

  3. 浏览内容

  4. 对缘拼内容进行点赞,评论,转发

  5. 与发起缘拼的同学进行交流

  6. 参与缘拼

  7. 浏览其他同学的主页

  8. 添加好友

  9. 与好友联系

4.2 设计流程图

微信图片_20210420161046.png

(设计流程图)

第5章 详细设计

5.1 技术方案

5.1.1 开发环境

5.1.1.1 前端部分

前端部分使用的是基于vue的uniapp框架,编辑器为Hbuilder X,即时通讯部分使用的是融云即时通讯服务,定位及路径规划使用的是腾讯位置服务

5.1.1.2 后端部分

后端框架大致分为5个模块,分别为模型类模块融云连接模块数据库操作类模块,操作类模块,和工具类模块。整体思路是前端与操作类进行通讯,操作类调用相应的数据库、工具类及组件完成前端的需求,并返回相应的数据。

后端主要为前端提供以下功能:

  1. 微信登陆:提供用户js_code,后端通过与微信通讯获取openid并返回。

  2. 融云登陆:提供用户openid,后端通过与融云通讯获取token并返回。

  3. 注册账户:提供用户openid、昵称、头像、性别、后端将数据存入mysql,并返回用户ID和图片链接等数据。

  4. 关注功能:提供用户ID、被关注用户ID、操作类型,后端依据操作类型进行判断是否关注、删除关注、获取列表等工作,并且利用pinyin4j组件把用户首字母区分,最后打包并将数据返回。

  5. 保存聊天图片及音频:提供图片或音频数据,后端将数据保存,并返回相应链接。

  6. 帖子发布:提供帖子标题、类型、内容、图片、位置等信息,后端按帖子的不同类型将数据保存。

  7. 帖子管理:提供操作类型、页数、名字、帖子ID等内容,后端依据操作类型进行相应操作,在查询帖子的同时后端对帖子进行分页操作和分类操作,最终返回相应数据。

  8. 收藏功能:提供操作类型、用户ID、物品ID,后端依据操作类型进行对用户收藏的增删查等工作,并将结果数据返回。

数据库共有7个表,Collections(用户收藏表),Comment(帖子评论表),HomeItemLike(帖子点赞表),HomeItems(帖子表),Partake(帖子状态表),UserFocu0073(用户关注表),UserInfo(用户信息表)。

后端部分完全使用java语言,使用maven构建项目,开发环境为win10系统eclipse + tomcat9 + mysql + jdk1.8

采用rongcloud融云通讯以及pinyin4j、javax.servlet-api、org.json, commons-fileupload组件。

微信图片_20210420160929.png

(缘拼后端)

微信图片_20210420160933.png

(融云数据库)

5.1.2 技术难点

融云即时通讯的实时接收和推送新消息。

5.2 界面设计效果

界面统一采用 扁平化+拟态 的美学设计,且巧妙利用 css3 动画来提升用户的交互体验,简化用户的操作逻辑。扁平化+拟态设计的大量运用也大大增加了信息的可读性,关键信息一目了然,赏心悦目的同时方便用户阅读。

5.3 各模块功能设计/交互逻辑

5.3.1 发布缘拼

发布缘拼的界面需要从首页的可移动的悬浮按钮处点击进入。可以根据需求选择想要发起的缘拼类型,从而跳转到不同的信息填写界面。

拼学习、拼美食、拼娱乐的设计思路大致相同,需要用户填写相关信息,并且可以选择上传一张图片(例如:拼美食中可以上传一张餐厅美食的图片)以供参与者进行选择是否参与。

拼出行需要在除上述信息外需要额外选择输入 出发地 和 目的地 ,从而寻找有相同或类似需求的同学。

在点击发布按钮后,软件在发布成功后会自动跳转到首页,此时下拉刷新,就可以看到您所发布的缘拼。

5.3.2 查看缘拼项目

使用者可以在首页查看当前所有的缘拼活动,或者点击首页的四个按钮分种类查看不同的缘拼。

在点击某一缘拼内容后,可以查看到此活动的相关详细信息,进行评论点赞收藏。也可以由此浏览活动发起人的主页并与他联系。

5.3.3 搜索缘拼项目

搜索框存在于首页,好友页,缘拼分类页,搜索逻辑为用户如果输入的是数字,即搜索用户ID,如搜索到该用户,直接跳转到该用户的详情页,若搜索无结果,显示无结果提示框。如果用户输入汉字,即搜索缘拼活动标题,跳转到搜索结果页面,支持模糊搜索

5.3.4 查看缘拼详情

在首页用户可以查看目前所有的缘拼,当用户点击想要查看的缘拼,会进入详情页,并提供显示缘拼基本信息位置查看点赞评论收藏添加发起用户为好友,以及主要功能:想拼

5.3.5 查看关注,粉丝,好友

当用户搜索其他用户并关注,或在缘拼详情页关注,被关注的用户会显示在好友页。

5.3.6 消息界面

消息界面,会显示用户和其他用户的聊天会话,双方都可以在会话中发起缘拼请求,也可以文字,语音,图片来聊天。聊天记录分为本地存储云存储,在第一次请求云存储后,聊天记录便被存储在本地缓存中。

5.3.7 我的界面

在我的界面,用户可以看到自己的头像昵称,及缘拼账号,还有用户自己的缘拼收藏,浏览历史和缘拼。在缘拼详情页收藏的缘拼都会在我的收藏里显示,点开的每一个缘拼也会在显示在历史中,我的缘拼则会显示用户发起的缘拼和用户成功的缘拼。

同时点击下面的帮助,可以显示常见的缘拼问题解答,帮助用户更好的使用缘拼。点击了解更多则会显示缘拼的主题理念,帮助用户更好的理解缘拼。而最下面的是退出登录,点击后会清空用户缘拼的本地缓存以及融云登出。

第6章 总结

缘拼是一款基于解决社交问题小程序,包括发布缘拼参与缘拼与人沟通等核心功能。我们还在不断地改进和完善缘拼的功能以及操作逻辑,希望可以给您带来良好的使用体验。

第7章 引用

7.1 第三方组件

  1. Uniapp popup弹出层(链接:https://ext.dcloud.net.cn/plugin?id=329)

  2. Uniapp小程序瀑布流示例(链接:https://ext.dcloud.net.cn/plugin?id=1640)

  3. Uniapp- calendar日历(链接:https://ext.dcloud.net.cn/plugin?id=577)

  4. Uniapp可拖动悬浮按钮(链接https://ext.dcloud.net.cn/plugin?id=1087)

  5. Uniapp聊天模板(链接:https://ext.dcloud.net.cn/plugin?id=324)

  6. 融云IM即时通讯(链接:https://www.rongcloud.cn/product/im)

  7. 腾讯位置服务(链接:https://lbs.qq.com/routeplan/)

7.2 参考文献

[1] 《第45次中国互联网络发展状况统计报告》,2020年04月28日

[2] 吕欢.大学生网络成瘾与抑郁、孤独的相关性研究[J].当代教育实践与教学研究,2018(11):223-224.

收起阅读 »

你真的了解 OpenJDK 吗?

上周因为Java 16的发布,我们推了两篇关于Java 16的解读,以及为什么大家还要用Java 8的思考。有不少读者留言说到了openjdk,问了很多关于此的关系。对于JDK的开源体系,还是有很多开发者的认识非常模糊。所以,小编今天就带大家一起了解下有关Op...
继续阅读 »

上周因为Java 16的发布,我们推了两篇关于Java 16的解读,以及为什么大家还要用Java 8的思考。有不少读者留言说到了openjdk,问了很多关于此的关系。对于JDK的开源体系,还是有很多开发者的认识非常模糊。所以,小编今天就带大家一起了解下有关OpenJDK 的一些常见的疑问及官方问答。

如果上两篇文章还没有读过的,也可以通过下面的链接直达:

关于开源
  • Oracle对于支持Java开源的计划是什么?

Oracle打算继续支持开源和开放标准。Oracle一直致力于为最终用户提供选择、灵活性和较低的计算成本,而且无论是在开源软件还是非开源软件的环境中,都不会过分强调使用开放标准的重要性。

  • Oracle实行开源开发吗?

Oracle正在领导或参与大量的开源项目。请看http://oss.oracle.com有关Oracle的开放源代码和更多信息,请参阅。

  • 怎么能进一步了解Oracle对开源和开放标准的看法?

当然可以,通过http://www.oracle.com/technetwork/oramag/2010/o40interview-086226.html可以看到Oracle首席企业架构师Edward Screven关于开源和开放标准重要性的采访。

Oracle 对于OpenJDK的计划
  • Oracle对OpenJDK社区有什么计划?

作为OpenJDK项目的一部分,Oracle计划与Java社区一起继续开发下一版本的Java SE平台。OpenJDK是Oracle计划参与的唯一一个开源Java SE实现。

  • Oracle是否致力于OpenJDK?

对。Oracle仍然致力于将OpenJDK作为最佳的开源Java实现,我们将继续改进OpenJDK并欢迎外部贡献者。

  • 能详细介绍一下Oracle对OpenJDK的计划吗?

JavaOne 2010 通过发布两个版本加速了Java Se的可用性,一个在2011年,一个在2012年。相应的OpenJDK版本将继续作为the Oracle Java Development Kit (JDK) 7 和 JDK 8 的基础。有Oracle计划的更多信息,可以访问http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html.

  • 什么是JDK7?

JDK7是Oracle用于实现下一版本JavaSE 平台的。OpenJDK开源社区中的JDK7项目是Oracle与更广泛的Java和开源社区一起致力于实现JavaSE 7 JSR 中指定的特性的地方。

  • JRockit会怎么样?它会成为OpenJDK的一部分吗?

Oracle工程师目前正在努力将 Oracle Java HotSpot Java Virtual Machine (JVM)和the Oracle JRockit JVM 合并到一个聚合产品中,该产品充分利用了这些市场领先的实现的最佳特性。Oracle计划将组合的结果贡献给OpenJDK。

  • Oracle会改变OpenJDK许可模式吗?

不会。OpenJDK社区在Oracle以及其他公司、研究人员和个人的贡献下继续蓬勃发展,基于GPL的许可模式是这一成功的一个重要部分。Oracle没有改变的计划。

  • 听说IBM要加入OpenJDK?

Oracle和IBM在2010年10月宣布,将在OpenJDK社区合作开发领先的开源Java SE实现,并使OpenJDK社区成为开源Java SE开发的主要场所。Oracle和IBM将支持Java One 2010之前提出的OpenJDK开发路线图,该路线图加快了Java SE在整个开源社区的可用性。Oracle和IBM之间的合作建立在OpenJDK作为Java SE主要开发平台的成功,以及Oracle和IBM对Java社区的长期贡献的基础上。有关路线图和Oracle计划的更多信息,请访问http://blogs.oracle.com/henrik/2010/10/java_roadmap_from_javaone_2010.html.

关于OpenJDK用户和贡献者
  • 谁使用OpenJDK?

主要的Linux发行版,如Ubuntu、Fedora或Red Hat Enterprise Linux,都提供OpenJDK作为默认的Java SE实现。此外,Eclipse Community Survey 2010发现,虽然大多数Java开发人员使用Oracle的商业JDK版本,但参与调查的21%的开发人员使用OpenJDK。最后但并非最不重要的是,许多学术机构发表研究报告都是基于OpenJDK。

  • 谁对OpenJDK有贡献?

大多数OpenJDK贡献者都是受雇于Oracle等公司的工程师。此外,OpenJDK社区还展示了学术界、开源操作系统发行版开发人员以及渴望贡献的个人软件开发人员的强大实力。Oracle没有改变贡献模式的计划,并乐于接受新的贡献者。为了学习如何对OpenJDK做出贡献,请参见http://openjdk.java.net/contribute/。

  • 为什么Oracle要参与OpenJDK?

Oracle致力于使用开源模型开发JDK代码库。Oracle致力于这种工作方式,因为它可以通过降低参与的困难来形成和引入技术发展的最佳想法。

  • Oracle是否欢迎新的贡献者加入OpenJDK?

当然肯定,但是要准备做很多的学习!进入这个项目的一个好方法是订阅一个关于自己感兴趣的主题的邮件列表,观看讨论和评论以了解在该领域工作的开发人员的基调,然后开始审查其他OpenJDK社区成员提出的补丁。

兼容性
  • Oracle是否将Java SE 6 TCK 提供给OpenJDK社区?

对于满足OpenJDK TCK许可协议要求的实现,在一致性组的OpenJDK网站上记录了获取TCK的过程:http://openjdk.java.net/groups/conformance/JckAccess/index.html.

  • 如何测试基于OpenJDK的实现是否与Java SE兼容?

要测试实现与Java SE规范的兼容性,需要向Oracle申请以获得对测试兼容性工具包(TCK)的访问权。Oracle通过各种商业和非商业协议提供Java SE TCK。如果用户的实现满足OpenJDK社区TCK许可协议的条件,那么可以根据这些条款请求访问JCK。

  • 通过OpenJDK-TCK许可协议获得Java SE 6 TCK 的组织和个人列表是否可用?

是的,在 http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html.

  • 我可以使用OpenJDK作为基础来创建完全满足Java SE 6 TCK 兼容性要求的开源构建吗?

对。第一个这样的构建是基于OpenJDK6项目中发布的源代码的,发布于2008年。

对OpenJDK的贡献
  • Oracle是否计划改变开发人员参与OpenJDK的方式?

不。OpenJDK项目继续接受现有贡献者协议下的捐款,并接受相同条款下的新贡献者。目前还没有改变参与模式的计划。

  • 是否应该继续讨论自己在开放JDK中的项目中的想法?

当然!如果用户希望OpenJDK开发人员了解自己的想法,请花一些时间找到最合适的OpenJDK项目,以将其引入并确保访问此页面,该页面描述了如何提供一般性的贡献。许多开发人员为OpenJDK和Oracle中的项目提供了宝贵的想法,希望这些想法能够继续下去。

  • 在什么条件下可以参加OpenJDK邮件列表讨论?

为了参与OpenJDK邮件列表讨论,用户需要订阅自己想要讨论自己的想法的邮件列表。对邮件列表的参与受OpenJDK网站使用条款的约束。

  • 如果用户不在Oracle工作,可以参加OpenJDK吗?

当然,用户可以在与其他贡献者相同的条件下参与。详情可见:http://openjdk.org/contribute

  • 用户能否继续讨论OpenJDK邮件列表中的错误修复和功能增强?

是的,Oracle欢迎每个人的参与。

许可
  • OpenJDK发布的开源许可证是什么?

GPL v2用于几乎所有的虚拟机,GPL v2+类路径异常用于类库和虚拟机中公开公共API的那些部分。

  • 如何知道哪个许可证适用于OpenJDK中给定的源代码文件?

每个源代码文件都有单独的许可证-请查找包含许可证信息的版权头。

  • 为什么不使用不同的开源许可模式呢?

OpenJDK创建时,它采用了当时最流行的开源VM许可模式。多年来,许可模式为项目提供了良好的服务,确保了项目的稳定增长和采用,同时最大限度地降低了专有分叉和碎片化的风险。

  • 可以下载OpenJDK源代码吗?

当然可以

  • 能用它做什么有什么限制吗?

OpenJDK是在一个众所周知的开源许可模型下发布的,它对用户运行OpenJDK的能力没有任何限制。请查看OpenJDK项目网站的法律部分,了解用户的权利和义务范围。

  • 用户能在OpenJDK邮件列表上获得具体的法律建议或法律问题的答案吗?

一般来说,没有。OpenJDK邮件列表用于围绕特定OpenJDK项目开发的技术工作。

JDK 7 & JDK 8
  • OpenJDK构建中的特性是否也可以在Java SE的其他实现中使用?

Java SE的其他兼容实现包含JCP中为平台定义的特性,因此它将取决于Oracle向Java SE专家组建议的哪些特性被接受以包含在平台中。或者,这可能取决于特性本身是被判断为特定于实现的(比如性能增强),还是所有实现都希望包含的特性(比如新的开发人员API)。

  • Java开发冻结了吗?

绝对不是!Oracle工程师和OpenJDK社区正忙于JDk7以及JDk8项目,如Lambda项目和Jigsaw项目。

  • Java编程语言还会继续发展吗?

对。Oracle正积极致力于主要的语言和平台改进,比如Lambda项目、Coin项目、模块化、并行库等等。自收购以来,Oracle加大了在这些领域的投资。

  • 用户可以使用OpenJDK构建来试验动态字节码指令之类的新特性吗?

当然。用户可以按照构建说明自己构建OpenJDK二进制文件,也可以节省时间并从中获取最新JDk7构建的二进制快照版本.

  • 用户想在自己的产品代码中使用即将推出的JDk7特性。可以依赖JDK7二进制快照版本的所有特性来进入最终版本吗?

不一定:虽然jdk7二进制快照发行版包含许多特性,可以从更广泛的Java开发人员那里获得反馈,但并非所有这些特性都可以进入最终发行版,这取决于开发人员的反馈以及其他方面。换句话说,如果用户喜欢一个特性,请告诉开发者-正面反馈至少和负面反馈一样受欢迎!

Oracle JDK 和 OpenJDK
  • OracleJDK是基于OpenJDK的吗?

对。OracleJDK是基于OpenJDK的源代码。此外,它还包含封闭源代码组件。最终的结果是根据二进制代码许可证授权的。

  • 什么是二进制代码许可证?

它是Sun用于JDK和JRE(以及许多其他Java产品)的许可证。用户必须在下载/安装Java之前接受许可证。

  • 下载OpenJDK需要多少钱?

Oracle在开源许可模式下提供OpenJDK源代码。它既是免费的,又是免费的(如在freedom中)软件。

  • OpenJDK难道不让其他JavaSE实吗?

不,Java用户可以从多个供应商在各种商业模型下提供的兼容JavaSE实现的选择中获益。不同的兼容JavaSE实现在诸如调优到不同的体系结构、性能、工具和部署等方面竞争。


收起阅读 »

作为程序员的你,这些一直接触的词都念对了吗?

很多时候,大家可能都觉得程序员英文一定很好。因为我们每天都对着满屏幕的英文,噼里啪啦一整天。讨论个需求,还是不是冒几个单词,产品MM和运营JJ们,心理几万头曹尼玛奔过:能不能讲人话!很多时候,我们自信满满的说出一个又一个高大上的操作名、技术名,看似装逼成功!但...
继续阅读 »

很多时候,大家可能都觉得程序员英文一定很好。因为我们每天都对着满屏幕的英文,噼里啪啦一整天。讨论个需求,还是不是冒几个单词,产品MM和运营JJ们,心理几万头曹尼玛奔过:能不能讲人话!

很多时候,我们自信满满的说出一个又一个高大上的操作名、技术名,看似装逼成功!但是我们都说对了吗?

下面,我们一起来重现一下这些场景,看看你都对了几个?

第一轮

单词一:Archive

Archive:档案、归档。常见于一些管理类需求或是运维相关日常。

正确发音:

  • 英:[ˈɑːkaɪv]

  • 美:[ˈɑːrkaɪv]

单词二:Digest

Digest:字面意思为摘要、汇编。常见于一些数字证书、认证算法相关的内容中。比如:HTTP的认证方式中有一种就叫Digest认证,是Basic认证的升级版。

正确发音:

  • 英:[daɪˈdʒest , ˈdaɪdʒest]

  • 美:[daɪˈdʒest , ˈdaɪdʒest]

第二轮

单词三:Adobe

Adobe:一家专注于图形设计、影像编辑与网络开发的著名软件公司。PhotoShop、Illustrator、Dreamweaver等设计类著名软件均为它们开发。如果您对设计师MM感兴趣?那么千万别再念错了!

正确发音:

  • 英:[əˈdəʊbi]

  • 美:[əˈdoʊbi]


单词四:Cache

Cache:缓存。不论在讨论硬件领域还是软件领域,前端还是后端技术时候,当碰到性能相关难题的时候,经常出现的一个词。你念对了吗?

正确发音:

  • 英:[kæʃ]

  • 美:[kæʃ]

第三轮

单词五:Apache

Apache:一款应用服务的名称,也是Java领域一个重要开源基金会的名称。近几年有好几个国内开源项目也都加入了Apache基金会,比如:我们所熟知的Dubbo、Skywalking!

正确发音:

  • 英:[əˈpætʃi] 

  • 美:[əˈpætʃi]

单词六:Suite

Suite:套件。比较常见于测试小组中,比如:Test Suite,意为测试套件、测试集合,代表已一组Test Case(测试用例)。

正确发音:

  • 英:[ˈɑːkaɪv]

  • 美:[ˈɑːrkaɪv]

转载于公众号“程序猿DD”


收起阅读 »

其他职业越老越值钱,程序员越老越贬值?

前言今天一早,看到NBA交易消息中提到:小加索尔与洛杉矶湖人队签下两年老将底薪合同。业界评论一致认为湖人这次在中锋这个位置进行了补强,甚至有人认为湖人是捡了个大便宜。小加索尔作为一个85年出生的球员,在NBA赛场上已经是处于职业生涯晚期的球员,为什么还这么受关...
继续阅读 »

前言

今天一早,看到NBA交易消息中提到:小加索尔与洛杉矶湖人队签下两年老将底薪合同。业界评论一致认为湖人这次在中锋这个位置进行了补强,甚至有人认为湖人是捡了个大便宜。

小加索尔作为一个85年出生的球员,在NBA赛场上已经是处于职业生涯晚期的球员,为什么还这么受关注呢?其实每年NBA交易期都会有这样类似的情况,一些早已功成名就的老将,不在意薪水的多少,只想加入一只有争冠实力的球队,并且往往他们的经验会让球队受益匪浅,关键时刻往往会帮助球队获得胜利。正如我们华夏民族一直流转的那句“家有一老,如有一宝”。

每一个职业每一个行当,一代代的经验传承,造就了中华民族五千年的文化荟萃,但是现在似乎程序员这个职业有些另类,别的职业都是越老越值钱,唯独程序员,在众人的眼中越老越容易失业?越老越贬值?

那究竟是什么原因造成了这个现象呢?让我们一起看看知友们都是怎么说的吧

做程序员这些年,我一直在思考一个问题,就是:

就互联网公司而言,对于公司好的发展逻辑其实是跟对于个人来说好的发展逻辑似乎是有冲突的。

对于一个大公司来说,一个新员工进来,首先要做的是什么?

学习遵守公司的流程规范,让自己的工作内容和工作方式都以一种标准化的方式进行。

哪怕你做了某个很好用的工具,或者发现了做这件事的更高效的方法。

那么在得到上级认可之后,你要干什么?

把这个东西整理成标准的流程,文档,以提高后面新入职的同事的工作效率。

为的是什么?

为的是哪怕有一天你不在这个公司了,你所做的这一部分工作也能很快地找到另外一个人来代替。

当然,然后还有进行项目开发时对于代码和文档的各种规范和要求,越是大公司,在这方面的要求越是严格。

为的是什么?

为的是哪怕你作为这个项目的核心开发者,但是如果有一天你主动离职了,或者年龄大了被公司裁了,这个项目依旧可以正常地运行迭代下去。

这确实是对于公司发展来说最好的逻辑。

但是问题是,这对我们作为员工的个人来说,可能并不是一个好的逻辑。

如果一个公司想要做大,想要走的远,那么他们就需要通过标准化,规范化的流程来把个人因素变动所带来的的影响降到最低。

而在里面作为的螺丝钉的程序员,除了写代码完成业务功能以外,还要把代码写的尽量让大家都能看懂,让后来人能轻易接手。

但这也为他后续被更年轻,更能996的程序员取而代之,埋下了伏笔。

而在某些传统行业,则不是这样的。

尤其是有些老一辈的手艺人,确实是越老越吃香,甚至是一个匠人到了六七十岁,还有人愿意把自家孩子送到这个匠人门下当学徒,学习手艺。

难道是因为这个行业真的有什么常人难以学会的知识或是技能,哪怕钻研了五六十年,还是有着很大的提升空间。

以至于研究了50年的手艺人,就真的比研究了30年的,要高好几个档次,所以大家才都青睐那个更老的手艺人吗?

也不一定。

也有可能是人家只是有几个压箱底的绝活,但是这个绝活,在这个手艺人临终之前,都不会轻易地交给自己的徒弟,更不要说是新入行的同事了。

毕竟人家是打算靠这点绝活,吃一辈子饭的,如果随随便便就交给徒弟,那师傅不就饿死了吗?

所以说,明白了吗?

为什么有些职业是越老越吃香,而程序员不是越老越吃香?

因为互联网公司的逻辑是:”虽然我需要程序员来帮我开发软件,但是我更需要的是这个软件离了他之后,依然可以好好地运行,所以说我会竭尽全力地来保证流程的规范化,代码的可读性以及业务逻辑的文档化。“

这样一来,即使程序员开发出了某个发展很好的项目,但是在这个项目进入稳定生产之后,也跟他没有太大关系了。

他并不能靠对着某个项目的理解,而吃一辈子饭,因为公司的规范要求他把所有有关这个项目的理解,都整理成文档,模型,和代码注释。

他要么抓住某个机会成为管理层,拿到公司股份,要么不断跟进学习日新月异的新兴技术,要么,就只能等自己老了,精力和体力都比不过年轻人的时候,被更加年轻的程序员所取代。

从这个角度上看,公司和程序更像是一个生命,而前赴后继的程序员们,只是不断往这个生命里面注入动力的干电池而已。


自由飞的想法

大部分的中国企业,就没把程序员当做“脑力劳动者”,而是当做“体力劳动者”在用!

996是福报啊!过了35岁,搬不动砖了,996都没你的份。

我以前看报道,说“中国航天”深化改革啥啥啥的,其中一个成果就是“队伍平均年龄28.6(大概吧,总之很年轻)岁”,然后今年火箭已经炸了三次了。——这事我就随口一说,究竟什么原因炸的,炸得好不好,应该不应该,我不是行内人士,大家不用给我上课,实打实的说,我也不关心。

但以我一个快40的老码农而言,不说别人,就说我自己,我非常肯定确定以及一定:

我的能力从来没有贬值。恰恰相反,随着经验的积累,我的能力与日俱增。

我相信,就算不是全部,但很多老码农都会有这种感觉。

新东西学不动,那是懒得学!工作中用不到的,我学他干嘛?真要学的时候,分分钟捡起来,比你刚入行的菜鸟不知道快多少倍。

而且会倒腾个新技术就算有能力了?呵呵,

除了高质量代码生成以外,还有很多其他需要日积月累的技能,譬如全面审查需求,妥善安排进度,快速bug fix……

但是,企业关心这些么?

不过是搬砖的而已,能把砖搬过去就完事了,还管你怎么搬?

外包单位就不说了,卖出去一个是一个,关键是挣差价,你的工资是成本,当然越低越好。

互联网公司,钱烧得霍霍的,产品急着上线呢!还管你代码质量,只管你能加班不?!屎一样的代码糊上去再说,美其名曰“及时反馈快速迭代”……

软件公司……等等,中国有软件公司么?反正除了屈指可数的那几家,目之所及真能赚钱的都是骗补贴的!

明白了吧,这就是你问的为什么。

老程序员本身没有贬值,所谓贬值,是因为人力市场的需求。

怎么办?凉拌!

唉,希望未来能有更多脚踏实地的、以产品质量取胜的软件公司涌现出来吧!


invalid s的表述

古话说的好:“飞鸟尽,良弓藏;狡兔死,走狗烹”。

不光程序员越老越容易失业,国内一切技术行当不都这样吗?

身为技术人员,在自身职业前景上,必然要遭遇两个问题。

  • 第一个问题是他自己能控制的:你,究竟掌握了多高的技术?

是面向搜索引擎编程、只会CRUD呢;还是能够编写更高质量的代码、解决日常问题?

或者,是有充分的大中型项目设计、实施经验,甚至能够主持有一定难度的项目开发?

或者是,你能否掌握“核心科技”,挑战业界大佬?比如和思科比比网络调度算法、和Linus比比OS开发、写个数据库挑战Oracle、搞个Hadoop挑战yahoo甚至google?

可想而知,当你只会面向搜索引擎编程、只会CRUD时,你当然就是个一次性消耗品。用到三四十岁差不多也该用坏了,找个借口扔掉就是。

比赛“跑不死就往死里跑”的话,你怎么可能比得上二十来岁的小年轻呢?

想要“越老越值钱”,你就不能在年轻人的优势领域停留,你就必须不断提升自己、拓宽眼界、抬高上限——你猜Linus担心不担心失业?你猜yahoo里面编写/维护hadoop的、google里面优化big table page rank map-reduce的,他们担心不担心失业?

你究竟学会了多少,就决定了你的命运。

当你只能拼996007时,你那二十岁的身体还的确能支撑你扛大包;但到了三四十岁,哪怕没有落下一身职业病,你,还能像年轻人那样“昨天摔了一跤整条腿都紫了今天打个绷带照样活蹦乱跳”吗?

所以你失业了。那些挤走你、顶替你的,也会像你一样,在被人超负荷使用十年、落下一身病痛后滚蛋。

这就是第一个问题:你不为将来打算,急功近利透支身体996/007,所以你越老越容易失业。

你不光越老越容易失业,你还会落下一身病痛。三四十的身体甚至比不上那些会保养的、六七十的老人。你不得不掏出大量金钱来维持自己的基本生存。

如果你压根就不是什么“良弓”,凭什么阻止别人把你像垃圾一样踢开?

人无远虑,必有近忧。

  • 技术人员必将遭遇的第二个问题并不是他们能控制的。

那就是:你把自己修炼成了全世界顶尖的超高精度复合弓;但你的国家压根就没有射箭比赛。

是的,你懂操作系统内核;但中国有哪家公司在开发自己的OS?

是的,你懂数据库算法编译器优化;但中国有哪家公司能做数据库能写编译器?

如果整个社会都只能追逐那么几只半死不活的残疾兔子;你,身手矫健又有何用?

人山人海,哪里见得到兔子。

结果你还想吃多点,否则……都不够维持你的一身肌肉。

相信我。用不了多久,你也会饿成一条病恹恹的瘦狗。

那么,这就是国内醉心于技术者面对的窘境:我们压根就没有能插手基础性、支柱性软件项目的公司。唯一会的就是互联网,就是想尽办法薅用户羊毛的终端软件。

对大多所谓的“互联网公司”来说,写这种软件,“面向搜索引擎编程”“调库专家”基本够用。更高的,他们根本不敢想。

正是这种现状,使得一些缺乏眼界者压根不敢想“需要熟练使用链表算法的工作”;相反,他们会告诉你,会调库足矣、照搬互联网上搜到的代码就够用了——甚至还有在我的回答下言之凿凿、说“专家”说了,能搜到现成的代码就千万不要自己写,自己写的质量太差……

但事实是,哪怕在中国,照样有不算太少的中高端职位;这些职位的基本要求就是“不准抄网上代码”。

这是因为写出这些代码的人水平良莠不齐、写的时候也未必是按工业化/商业化标准精益求精(经常就是为了让初学者明白,所以省略了很多很多东西)——对这类中高端职位所要求的、业界top5%、top0.5%、top0.05%的、较为正规的程序员来说,这种东西说好听点叫粗制滥造,说难听点就是垃圾。

当这些人崇拜的“专家”都在顶礼膜拜网上的劣质代码时,他们的水平也就可想而知了。

眼界所限,他们完全不可能知道那些中等以上水平的程序员在做什么;在他们看来,一行代码出一堆错误是必须的——我说自己一口气写几千行不出错,他们就破口大骂:追着骂、单独开贴骂;直白的骂、阴阳怪气的骂……

这种情况,在过去是不可想象的。

在当时,别说垃圾到这种程度了,任何问题只要简单到用搜索引擎搜一搜就能解决,你敢问,就会被老手怼回去。很多论坛把“提问前应该做到什么”置顶;“STFG(Search The Fucking Goolge)”是被人普遍接受的、对小白问题的标准回复。

但现在,连网上苦口婆心的解释都读不懂、只能逐字逐句照搬现成的代码的小白敢“组团围剿”那些敢说自己能写程序的“吹牛者”。

可想而知,这种劣质码农的声音淹没一切时,这个行业会变成什么样子。

别说开拓新的市场、新的疆域了,就连抄,他们都不敢抄热乎的。

这反过来强化了劣质码农们的认知——没错,中国啊,它本来就不需要高于“面向搜索引擎编程”的装B犯。反正你们学了也没用,大家一起996,欢乐的卷起来吧。

业界整体的低水平,使得你除非在校时就憋着一口气、玩命的往世界一流水平赶;否则一旦开始工作,庸人们很快就会把你拖进自己的节奏,然后干净利落的打败——这工作你能做我也能做,我见经理满脸堆笑,你呢?书呆子。什么叫你一周抵我们一年?谁看见了?

中国技术人员地位低,原因就在于此。

一方面,因为对未来的预期过低,因此从一开始就没学到东西,就是一劣质码农;另一方面,行业整体上限不高,绝大多数人还在一门心思的拉低下限。

如此一来,未来哪还有好?

但是,这并不是全部。

事实上,正常的市场竞争下,谁落后,谁死。

因此,报社的程序员可以写出django,车库里的穷小子能折腾出google。

技术是需要积累的。只要学进去了,你的积累就绝不会是无用功。

因此,虽然按比例算,也许99.99的程序员果然是年纪大了就得滚蛋;但这不正是他们为自己做的规划吗?起初就什么都没学到、入职了也只会996没有任何技术积累——美其名曰“你需要掌握的东西,入职一个月内就能学到”。

呵呵,真这么简单全世界的大学都在坑钱不成?一个月就能学完的东西,非要把你拘禁起来教上本科四年硕士两年博士N年都还不让毕业?

你把自己当一次性用品培养,就别怪别人用旧了把你一脚踢开。

相反,那些真正知道四年本科要教你什么、知道你和世界先进水平还有多大差距的人,他们会抓住一切机会,不间断的前进,前进,继续前进。

我大一就自学到了中断服务程序、可以直接写端口命令字绕开OS/BIOS直接控制硬件;也知道动画、音频、视频、3D图形等等的基本原理;当时同学间流行一个打字游戏,但我觉得那个东西写的不好,于是花了一周不到就写了个更好的。

因此,我可以毫不含糊的吐槽——绝大多数本科生,四年连个大一水平都没学到。

比我强的车载斗量。

那么,本科四年我都甩开某些人四年,之后工作了,盯着那些比我强的紧赶慢赶,都不过勉强维持个“看得到别人尾灯”的局面;那么,一毕业就比我慢了四年、还以为一个月就学会了一生所需的全部知识的他们,有可能看见我车尾的扬尘吗?

不光我不担心自己学的东西没人要;那些比我强的没边的,照样不担心自己学的东西没人要。

甚至可以说,越是不顾那些庸人的眼光、我行我素学的精深的,越是不怕失业。因为人家的就业市场是全世界。

不是程序员这个职业越老越不值钱,而是现在的程序员处于工业革命早期煤矿工人所处的境地。

新的世界刚出现一个雏形,现在的程序员只是在用自己的血肉去充当地基和铁轨,铸造锅炉并充当点燃第一把火的燃料。

表面上看起来相对农民阶级(传统制造业),工业革命初期的产业工人收入待遇提高了很多,但是那是以压缩劳动寿命来实现的。

他们确实代表着先进生产力的发展方向(并且就像煤炭行业至今仍然是采矿和机械制造业最先进技术的集中展示平台一样),但是悲哀的是,他们自身却不是先进生产力。

收起阅读 »

浅谈Spring MVC 过时了吗?

正文如下:问题:Spring MVC 过时了吗?我看了一下这个问题的日志,这个问题是2018年9月提出来的。那么好,首先给出结论:Spring MVC没有过时,它仍然是当前主流的Java Web开发框架。但是,在这个时间点谈论这个问题就有点意思了。题主提出这个...
继续阅读 »

正文如下:

问题:Spring MVC 过时了吗?

我看了一下这个问题的日志,这个问题是2018年9月提出来的。

那么好,首先给出结论:Spring MVC没有过时,它仍然是当前主流的Java Web开发框架。但是,在这个时间点谈论这个问题就有点意思了。题主提出这个问题的时候,可能都没有意识到这个问题正处在Web开发思想变革的分水岭上。

首先,说一下答主这个问题描述中不准确的地方,后面再着重说说现在的分水岭。

现在jsp似乎已经渐渐淡出大家的视野。web开发朝着前后端分离的方向去了

这个没错。但是,

像spring mvc这样前后端耦合较大的框架是否过时了?

这个疑问就没有必要了。

Spring MVC前后端耦合不大啊。你完全可以使用@RestController。

@RestControlleris a specialized version of the controller. It includes the @Controller and @ResponseBody annotations and as a result, simplifies the controller implementation:

@RestController@RequestMapping(“books-rest”)public class SimpleBookRestController {           @GetMapping(“/{id}”, produces = “application/json”)     public Book getBook(@PathVariable int id) {         return findBookById(id);     }       private Book findBookById(int id) {         // …    } }

前后端分离,没有JSP或其他服务器端模板引擎,只有HTTP上传输的JSON交互,那么必然用@RestController。JSON是服务器端MVC框架的V,是前端MVC框架的M。

————–重点开始————-

下面说一下为什么现在这个问题比较有意思了。

因为从Spring 5开始,大量引入了Reactive概念,也就是响应式思想!!!

所以,Spring 4及以前版本长期存在的Spring MVC有了一个并列同时存在的新的编程模型,Spring WebFlux。

上图,左侧是新的Spring WebFlux,可以看出一切都是Reactive的。右侧是我们熟悉的Spring MVC,是基于Servlet API的。

这个问题下的其他回答,竟然还在问:

那你是觉得哪个框架替代了Spring MVC?

你能找出其他框架来代替它吗?如果没有,那就没有过时

你们最近半年访问过Spring 官网首页吗?

特别是2018的Spring One大会,大家注意到了吗?看一下所有的话题(session),多少题目里都包含了Reactive:

所以,如果Spring认定了Reactive是趋势的话,传统的Spring MVC应该是处于Deprecated状态。上图中两种模型可能会长期并存,但是Spring 6以后就不好说了~

在今年的Spring One大会上,Spring提出了一整套Reactive技术,Spring 自己称作Reactive Revolution:

还有更多的Reactive思想涌现出来了,大家要保持关注。

不仅仅是服务器端,前端的Reactive也很活跃,例如Rxjs。

正如Spring自己定义的那样,现在是一场Reactive Revolution,这场思想革命波及Web开发的全栈,数据库=>服务器=>前端。

所以,此时想一下Spring MVC是否过时是个很有意思的问题。它仍是最主流最成熟的Java服务器端MVC框架,但它并不代表Web进化的方向。

评论区有人提到Vert.x。到目前Vert.x也只是个tool-kit,不适一整套框架。现在技术讲求的是生态环境,Spring现在基本上是占有生态优势,有Spring MVC的普及率。不管Spring MVC还是Web Flux,都能融入这个生态,Spring Boot都会给予先天的支持。

回复@无忧

编程首先思想活动,然后才是敲代码。学习编程的语言、框架等等,首先是思想跟上。比如前端用惯了JQuery的人,直接操作DOM,让他们学习Angular、VUE这总双向绑定,肯定也会觉得反直觉。但是说到底,思想在进步,落后的思想就会觉得先进思想反直觉。民国时期,多少人看到女人穿泳衣游泳也觉得反直觉,但是现在都是正常的。

生态也不是一天建成的,如果是个小团队提出的框架,我可能觉得会凉。但是以Spring多少年在Web开发上的积淀,然后能够自我革新提出Webflux,并且打算建立一整套Reacitve生态,我觉得成为主流还是很有可能的。还是拿前端的例子来说,为啥大家十年如一日JQuery用的好好的,然后接受Angularjs的双向绑定,因为首先是Google提出来的,它自己内部就有大量应用。为啥Angularjs用的好好的,突然又开始用React的Virtual DOM?因为首先是Facebook提出来的,它自己有成功的应用。

转载于公众号“程序猿DD”


收起阅读 »

夜宵是福利?那为什么不能随便吃?浅谈华为员工夜宵事件

一早看到新闻,说上海从28号晚上发布寒潮蓝色预警,预计未来48小时以内气温将直接下降10度左右。元旦那天可能市区最低零下六度,郊区甚至零下8度。看到这里特别想叮嘱下各位程序员,一定要注意保暖,当心身体,因为对于加班频繁的程序员来说,秋冬是心血管疾病高发的季节,...
继续阅读 »

一早看到新闻,说上海从28号晚上发布寒潮蓝色预警,预计未来48小时以内气温将直接下降10度左右。元旦那天可能市区最低零下六度,郊区甚至零下8度。

看到这里特别想叮嘱下各位程序员,一定要注意保暖,当心身体,因为对于加班频繁的程序员来说,秋冬是心血管疾病高发的季节,尤其这种骤降的温度,很容易击倒刚加完班一身疲乏的身体。

不由想起最近发生的一件闹得沸沸扬扬的事情:

华为员工夜宵事件

华为,相信是很多人奋斗的目标,一向以员工福利丰厚著称。在华为,有一个夜宵制度:

华为夜宵制度规定,员工可以在八点半后凭工卡领取夜宵,夜宵通常为牛奶、水果、加班餐等价值二十五元的套餐。

对于经常需要加班到深夜的程序员来说,的确是一个贴心又实用的福利,每当干完一天繁重劳累的工作,能够喝上一口热汤吃上一口热菜,整日的疲乏瞬间得到了缓解。

但是最近呢,华为通报了一个违规案例

某员工饭后于健身房锻炼到八点半后,无加班领取夜宵,被发现,被处罚“永久取消领夜宵权限,冻薪降考评并通报批评”。

对于这个案例,华为额外补充的说法有如下几点:

  • 1、不提倡员工饭后马上安排健身。

一般员工食堂的饭点设置在17:30-19:00左右。科学的建议饭后多久才能剧烈运动呢?中度运动至少要在1个半小时到两个小时以后。也就是说,如果该名员工是17:30吃饭,至少应该在7点才开始运动。考虑到前后都需要准备时间,零七八碎的加一起算半个小时,而到了8点半,该为同学也只是运动最多一个小时,没有达到运动效果。

  • 2、不提倡员工运动完后摄入错误膳食

健身健身,三分健,七分吃。健身完毕后,再摄入低效的夜宵,显然会让健身事倍功半。根据描述,夜宵通常为牛奶、水果、加班餐一看,除了牛奶跟优质蛋白沾点边,水果和加班餐适合健身后吃吗?要是小蛋糕、大肠刺身、锅包又吃多了很可能白练了!!建议喝点儿蛋白粉,有效补充一些电解质。不要盲目脏增肌。

  • 3、不提倡员工健身后不拉伸

健身不拉伸,毁掉运动人生。8:30匆匆忙忙健身后就去吃夜宵,没有趁着身体热着去拉伸筋膜。这样好吗?这样不好。极容易造成肌肉僵硬,乳酸堆积,下次运动容易受伤。这种时间安排是极为不妥的。

华为为员工身体着想这一点值得嘉奖,但是对于员工被处罚这一事件,的确引起不小的热议,因为到底怎么样才算有加班行为?加班多久才算有加班行为可以领取夜宵?或许这就是企业的一个灰色地带,在入职的时候,肯定不会详细的告诉入职员工只有“在某种某种时间条件和强度条件下,你才有领夜宵的权限”,反而大多数的说法会是说“八点半的时候可以领夜宵,九点可以打车回去”诸如此类的话语用以强调自身的福利有多好。

  • 站在公司的角度上,公司肯定认为这名员工,故意蹭夜宵,才做出惩罚。但是作为员工来说,他是否准备吃完夜宵继续加班?不得而知,至少华为的通报中没有详细说明。

  • 站在员工的角度上,这种夜宵福利也是在入职的时候也会做比较的地方,是一个入职的加分项,作为一个福利却现在有这样惩罚的先例,是否会寒了加班者的心,是否以后加班的时候还需要掐着表算着时间看自己能不能领?

尤其程序员作为弱势群体,本来就很辛苦,活儿怎么干都干不完,而公司通过员工加班赚到的利润,和每天晚上给每个人都发一顿夜宵比起来真的算不上多少,公司这么做,是否会给人一种杀鸡取卵或者又要马儿跑得快又要马儿不吃草的感觉?

冻薪降考评并通报批评这一点,更是极其严厉,你可以取消他吃夜宵的福利,但是这如果是福利,为什么还要去冻薪降考评并通报批评?这里的标准是什么?是否企业会在招聘时说清楚,这不是简单的福利,还是会遭到惩罚的陷阱?

肯定不会,企业肯定只会说自己有多好,那么出了这种事情,是否这个人一而再再而三的不加班领取?如果不是,作为弱势一方该怎么申诉?凭什么要为了一个福利去遭受这些严厉惩罚?

联想到近日看到的另一个新闻:

程序员真的是一个辛苦的职业,上有老下有小,工作压力大,技术淘汰快速,时刻面临着海量后来者的挑战,生活和工作上的压力都很大。

经常加班熬夜、工作压力大的人,最需要的是休息!谁不想休息,谁不想云淡风轻、闲云野鹤,还不都是工作所迫,现在却连吃一个加班夜宵难道也要成了一件战战兢兢生怕被罚的事情?

现在很多公司对员工看上去非常好,茶水间摆满了各种免费的饮品和零食,每天的午餐既廉价又美味,条件好一点的还自带健身房、按摩室。甚至还有各种加班福利,这一切都掩盖不了一个本质,公司把员工服务好,是为了让员工加班更带劲、更喜欢加班!其背后更是一个商人的本质,当他发现员工享受这些福利却没有更多的加班时,他不会去考虑你的身体你的健康,有的只是冰冷的惩罚。

近年来关于猝死的话题并非少见,一个员工的生命可能对于公司来说都是可以用金钱来衡量的,而且是廉价的。但对于自己和自己的家人来说或许那是无价之物。


收起阅读 »