GitHub推出「打赏」功能,全球最大同性交友平台将迎来更多开源工作?

近期,GitHub 发布了一条新功能——GitHub Sponsors,也就是我们熟悉的「打赏」。GitHub 官方表示,打赏的每一分钱都会进开发者的口袋,他们不会作为中间商赚取差价。神圣不可侵犯的 GitHub&nbs...
继续阅读 »
近期,GitHub 发布了一条新功能——GitHub Sponsors,也就是我们熟悉的「打赏」。GitHub 官方表示,打赏的每一分钱都会进开发者的口袋,他们不会作为中间商赚取差价。神圣不可侵犯的 GitHub 都有打赏了,到底是好还是坏?


GitHub 官方表示,「开发者们为我们大家贡献了开源工具,这是对他们的经济支持,新的打赏功能将帮助他们构建更优秀的开源工作。」然而,这不得不让人感叹,作为全宇宙最自由、最神圣的交友社区,GitHub 也开始增加打赏属性。所以为了顺应大流欢迎 Star 和 Fork 融云GitHub 项目~

项目地址https://github.com/rongcloud-archive

为了启动这一新项目并激发社区打赏积极性,GitHub 还推出了 GitHub Sponsors Matching Fund,每个开发者第一年最多可匹配到 5000 美元的赞助基金。

这是一个开源的世界。如果没有维护者、设计者、编程者、研究者等组成的全球团队促进科技发展,世界就难以运行。这些卓越的开发者现在可以从社区中按劳取酬,通过自己的 GitHub 文件获取经济支持。

微信图片_20200722150039.jpg

中间商不赚差价,打赏功能全球通用


开源是 GitHub 的核心。构建共享数字基础设施的开发者使得这个社区更加强大。GitHub 表示,为了表示对贡献者的感谢,GitHub Sponsors 在用户打赏其他开发者时不会收取平台费用。此外,为了庆祝这一功能的推出,GitHub 还将为前 12 个月的支付处理开销买单。简而言之,你打赏的每一分钱都会进开发者的口袋。


此外,打赏功能没有地域限制,只要在 GitHub 开展业务的国家,这一功能都能使用。


所有贡献者都能赏


在优秀的项目中,很多贡献者(contributor)都会做出至关重要的贡献,但他们的贡献在代码评审中并不可见。GitHub Sponsors 的推出是为了帮助所有类型的贡献和工作,从而进一步帮助开发者构建开源系统。任何对开源项目做出了贡献的人,不论是代码修改、文档编写,还是项目领导、项目设计等,都有可能得到打赏。


目前有一小部分开发者参与了 Sponsors 的测试版,任何开源项目贡献者在未来都有机会受到打赏。当然读者们也能申请下阶段测试的开发者,即填表加入 GitHub Sponsors 的候选者列表:

微信图片_20200722150055.jpg例如 Go 语言的贡献者,申请成为测试开发者后的赞赏页面大概是这样的:微信图片_20200722150106.jpg

因此,GitHub Sponsors 是另一种对开源项目做出贡献的方法:为构建和维护项目的开发者提供资金支持。为开发者资金帮助能帮助他们构建更好的开源项目,扩展参与开发的机会,并给予开发者应有的认可。从今天起,任何 GitHub 用户都能资助开源项目的开发者,这也是对项目最好的认可方式。


嵌入 GitHub 工作流


对于我们熟悉的工作流,GitHub Sponsors 现在可以无缝嵌入到里面。当贡献者回答我们的问题、指出我们的错误、或合并我们提交的代码时,我们可以访问他们的资料,或者直接将鼠标放在用户名上来打赏他们的开源工作。

微信图片_20200722150117.jpg对于新的社区贡献者悬停卡,除了该项目的直接贡献者,我们还能看到该项目传递的依赖性关系。他们虽然没有直接对该开源项目做出贡献,但他们以前的工作或贡献可能为当前项目提供帮助,因此也是我们该赞赏的人。微信图片_20200722150127.jpg

开源项目还可以直接在 repo 中显示自己的打赏模型。.github/FUNDING.yml 被加到一个项目的主分支上之后,一个新的「Sponsor」按钮就会出现在 repo 的顶端。单击该按钮将打开该文件中列出的打赏模型的本地渲染视图。


YAML 板式非常灵活,因此项目的维护者和贡献者可以根据自己的条件决定如何打赏项目。他们可以展示以下任何(或全部)内容:为该项目做出贡献的开发者的 GitHub Sponsors 文件;包含 Open Collective、Community Bridge、Tidelift、Ko-fi  和 Patreon 在内的流行打赏模型以及其他打赏模型的自定义链接。

微信图片_20200722150158.jpg

影响


GitHub 的这一做法可能会引起一些争议,部分开发者认为打赏可能会影响到开发者的工作方向。经济利益可能驱使开发者更加关注可能获取经济效益的项目,而不是那些有趣、有挑战性但不太会有人打赏的项目。那么读者们怎么认为?快留言写下你的观点吧。


收起阅读 »

一个靠 GitHub 打赏的码农,年入十万美元!

如果提到靠打赏生活的人,我们首先想到的会是主播。但现实情况是,码农也可以。这位活成主播的码农名叫 Caleb Porzio。在过去的一年里,他靠 GitHub 项目的打赏赚到了 10 万美元。在这篇自述文章中,他分享了自己靠 GitHub 项目赚钱的经历和技巧...
继续阅读 »
如果提到靠打赏生活的人,我们首先想到的会是主播。但现实情况是,码农也可以。这位活成主播的码农名叫 Caleb Porzio。

在过去的一年里,他靠 GitHub 项目的打赏赚到了 10 万美元。在这篇自述文章中,他分享了自己靠 GitHub 项目赚钱的经历和技巧。

微信图片_20200722144328.jpg

Caleb Porzio 发推庆祝自己靠 GitHub 打赏(GitHub Sponsors)赚到了 10 万美元。

GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能,允许开发者通过自己的项目获取报酬。

全职开发转自由职业,是怎样一种体验?以下是Caleb的故事。

我要分享一下自己走上自由职业的经历。

2018 年是我做全职开发的最后一年,当时我的年收入大概是 9 万美元。

微信图片_20200722144351.jpg

嗯,虽然说现在开发人员的薪资水平比较疯狂,但 9 万美元对我来说也是一笔可观的收入了。再加上我妻子的收入,以及「胡子主义」生活哲学的指导,我们可以省下很多的钱。

2019 年 1 月 11 日,我离开原来的公司开始「休假」,想要换种心情,做自己想做的一切。几个月后,我正式开始了自由职业者的生活。

「休假」期间,我读到了这篇文章:《Phoenix LiveView: Interactive, Real-Time Apps. No Need to Write JavaScript》,并从中受到启发。我发现自己也可以做出类似的成果。

当时我还发了一条推特:

微信图片_20200722144406.jpg

「决定开发一个类似 Laravel 的东西。我感觉这可能是个重大改变。」

现在看来,这确实改变了我的生活。

也是在这一天,我的「休假期」结束了。我完全被这个后来叫做 Livewire 的项目迷住了,并开始全身心地投入于此,这种沉迷一直持续到现在。

我也创建了一个非常流行的 JS 框架,叫做 AlpineJS,目前也是由我在管理和维护。但那是另外一个故事了……

做开源软件不能完全养活自己,所以我也接过一些小型的代码指导方面的需求,让 2019 全年的收入维持在一个稳定的状态。

这张图是我 2019 年通过自由职业方式获得的收入:

微信图片_20200722144423.jpg

我的收入减少了 7 万美元,看起来是比较冒险的举动。但我知道,如果此刻不开始做这件事,以后可能就更没有机会了。

一路走来,有很多好心人联系我,询问他们是否能够提供项目上的帮助。比如这种:

微信图片_20200722144437.jpg

很长一段时间我没有更新 Patreon(一个众筹创作网站),那里会有一些人每个月给我五美元。如此也很好,但对我来说没有意义。

然后,我发现了 GitHub 的打赏功能,把项目直接托管在 GitHub 上即可。2019 年 12 月 12 日,我成为了 GitHub Sponsors 的一员。

微信图片_20200722144451.jpg

这是我的第一个打赏者,Brian,谢谢你!

迄今为止,我已经从 GitHub sponsors 那里收到了 2.5 万美元打赏金。

微信图片_20200722144504.jpg直到撰写本文时,我的 GitHub 年度打赏金额已经达到了 112680 美元。微信图片_20200722144519.jpg

是运气,还是实力?我有点不敢相信我在开源社区里做开源软件,赚的钱比以往任何时候都多。

掐我一下,我是在做梦吗?

是因为我开发的软件太过优秀?让 535 位开发者每个月都打赏我 14 美元。不管怎么说,继续努力吧!

接下来,我想分享一些过程中的经验,希望能帮到也想从事类似开发工作的人们。

通过 GitHub 打赏赚钱的三个阶段

阶段 1:热心人士

最初,GitHub Sponsors 是一个让忠实粉丝能够资助他们所支持项目的平台。这些人的数量,和真正使用软件以及从中赚钱的人数比起来,并不算多。

基于开源的前提,人们本来就可以免费获得该软件。所有收入完全是来自那些友善热心肠的人们。

微信图片_20200722144536.jpg

首先,非常感谢这些人。然后我们谈谈第一个高峰是怎么到来的。

阶段 2:打赏软件

这个阶段,事情开始变得奇妙。

微信图片_20200722144549.jpg

当时,我和我的兄弟 Daniel 录制了一期《No Plans To Merge》。在思考如何将其变现时,我们想到了一个新颖的想法:「打赏软件」。

它的工作方式如下:

  1. 创建一个很棒的软件;

  2. 使其仅对打赏者开放,直到你积累了一定数量的打赏者;

  3. 然后将项目开源给全世界。



这是一种双赢。效果很好,几天之内我的收入就增加了 1.1 万美元。

微信图片_20200722144602.jpg我另外一位朋友 Nuno Maduro 最近在他的 Pest 项目中复制了这一方法,同样取得了成功:微信图片_20200722144614.jpg

这种方法很棒,但是需要不断地提供新的想法,所有的这些都将成为我必须持续进行的项目。长远来看,我需要更合理的东西。

阶段 3:教学视频

我得到的大部分打赏金都是这个阶段来的:

微信图片_20200722144625.jpg

这里边有什么秘诀吗?答案是:录制教学视频。

构建有用的软件是一回事,但教别人怎么用完全是另一回事。

我尽力创建高质量的文档,但总有人需要更加高级的内容。

为了满足这些需求,我录了一系列教学视频。在这之后的三个月里,我的总收入从 4 万美元涨到了 10 万美元以上。

微信图片_20200722144638.jpg我在文档的适当位置嵌入了这些视频的链接,以帮助大家找到它们微信图片_20200722144653.jpg几个星期之后,我又为 GitHub 打赏者专门建立了一个「私有」的视频小组:微信图片_20200722144703.jpg

这就是我的秘诀(为了做到以上这些,我利用 GitHub 认证构建了一个 Laravel app 来调用 GitHub API,以验证用户是否为打赏者)。

现在,那些看免费视频的人自然会遇到这些「私有」视频,如果他们喜欢前面那些免费的内容,他们就会给我打赏来获取后面的视频。

每次有新特性出现,我都会放出一批新视频。此外,我还会给每位打赏者提供访问每节课源代码的入口。

在 90 天的时间里,我的年收入增长了大约 8 万美元。

现在我有了连续的收入,不用再将所有时间都花在课程发布上了。我将用空出来的时间继续开发这个软件,同时放出新的视频。

如何通过打赏赚更多钱?

实力是第一位的

要做到靠打赏谋生,首先离不开日益月累的磨练,你做的东西要真正有用才行。我把我所有的一切都投入到工作中,这点没有捷径。

你可以发现,我在一个开源项目中全职工作了整整一年才看到收入。能得到人们赞助的工作必须是高质量的,而且始终是排在第一位的。

积极寻找用户

你可以在网上创建最伟大的工具,但如果没有人关注,再伟大的工具也无法为你带来收入。因此,找到用户是赚钱的关键。在这方面,你的 Twitter 粉丝和邮件订阅者都是潜在的挖掘对象。

打赏金额设置不要太保守

很多 GitHub 开发者犯的最大的一个错误就是在初级打赏设置中写的钱数太少。

如果打赏者能选 1-5 美元 / 月,谁还会选更高的打赏金额。

我很早就意识到,如果我真的想做这件事,只有 5 美元的打赏肯定是不够的,所以我后来涨到了 14 美元。

给打赏等级取一个好名字

在给打赏等级取名的时候,记得取一个能描述打赏者类型的恰当名字。

举个例子,对于一个高级打赏等级来说,它的标签应该是「The Agency(代理)」或其他能够暗示一个公司应该给予高级打赏的标签,而不是「Platinum(白金)」这种模糊的说法。

这样一来,人们看到这个标签首先想到的会是:「我的用途到底属于哪一类」,而不是:「我每个月要花多少钱」。

不要羞于谈钱

在我的成长过程中,我一直认为谈钱是不礼貌的,但其实这是一个谎言。有一次,我一股脑涨了 1 万美元,因为一个合作者告诉我他们都赚多少钱。在得知他们的收入情况后,我对自己的要价感到心安理得。但如果他们不告诉我这个情况,什么都不会发生。

透明是一个健康的现象。

我不会隐瞒自己的收入,因为别人也不对我隐瞒他们的收入,这让我从中获利。

即使他们赚的比我多得多,我也不会感到心痛或想分一杯羹。相反,我只会感到激动和鼓舞。我希望其他人也能保持这种心态。

直接告诉别人你完全依赖这笔钱生活也没什么不礼貌的,而且这笔钱帮你打造出了人们每天都在用且从中受益的软件。

不要因为赚了很多钱而感到内疚

我一直都在提醒自己,我不是一个码农传教士。如果我的打赏收入超过了平均生活水准,那也不错。我经营的也不是非营利组织。

我的收入和我的软件所带给别人的价值成正比,这没什么问题。

我做的不是什么神圣的工作,那些软件是企业拿来赚钱的,他们从中牟利,所以我从中赚钱也是 OK 的。

网友:我也能这么做吗?

Caleb Porzio 的这份经历也引起了许多开发者的关注,讨论最热烈的问题是:在我的国家或者地区,这个方法行得通吗?

微信图片_20200722144720.jpg

「看到这些,我为自己国家芬兰的法律而感到难过。我们有一项名为筹款法的法律,其中规定,要想收取捐款(即无任何回报的支付)必须获得许可。这个许可证是付费的,而且不发给个人,只授予非营利活动。」

这就意味着,如果你在软件项目上看到捐赠按钮,并且该笔资金流向芬兰人,这个过程是违法的。

所以这位芬兰的开发者表示,他自己托管了一个免费项目,为此不得不成立一家公司(独资经营)并出售一些其他的东西,以便从服务中获利。即便人们有捐赠的意愿,他也不能「合法地」接受这些钱。

    微信图片_20200722144739.jpg

有人表示,在大多数西方国家都有类似的规定。因此,对于这些国家的人来说,自由职业虽然「自由」,但也同样需要花费更多的精力去管理琐事。

微信图片_20200722144750.jpg

但在美国,这种做法的门槛要低得多。「如果是在美国的话,你可以作为个人接受无偿礼品,也可以作为个体经营者接受营业收入,无需额外注册什么。与往常一样,你需要精确缴纳税费,包括预扣税。」

原文链接:https://calebporzio.com/i-just-hit-dollar-100000yr-on-github-sponsors-heres-how-i-did-it


收起阅读 »

谷歌重磅开源项目“海啸”,霸榜Github第一!

最近,谷歌专门为大型企业网络开源了一个漏洞扫描神器,主要用于数千个甚至数百万个物联网组成的企业系统。为了让大家放心使用,谷歌已经将“海啸”用于内部使用一个月之久了。不过,“海啸”并非是谷歌官方的产品,而是由开源社区来维护,有点类似于Kubernetes。“海啸...
继续阅读 »

最近,谷歌专门为大型企业网络开源了一个漏洞扫描神器,主要用于数千个甚至数百万个物联网组成的企业系统。为了让大家放心使用,谷歌已经将“海啸”用于内部使用一个月之久了。

22626539-2ef8fc1d9e76c59a.jpg

不过,“海啸”并非是谷歌官方的产品,而是由开源社区来维护,有点类似于Kubernetes。

“海啸”是如何运行的?

市场上已经有数百种类似的商业或开源的漏洞扫描器,但“海啸”和这些漏洞扫描器不同的是,它是专门为类似谷歌这样规模的企业构建的,诸如网络管理的企业,这些网络包括数十万台的服务器、工作站,网络设备和连接到互联网的物联网设备。

谷歌表示,他们设计的“海啸”能够直接适应这些大型网络,而不需要为每种设备类型运行不同的扫描仪。

海啸由两个部分组成,然后在这个基础上添加一个可扩展的插件机制,第一个组件是扫描仪本身,也就是侦查模块,该组件可以扫描企业网络的开放端口,然后测试每个端口,并试图识别在每个端口上运行的服务和协议,以防对端口进行错误标记,并标记测试设备是否存在错误的漏洞

谷歌表示,端口指纹模块基于行业测试的nmap网络映射引擎,“海啸”的第二个部分比较复杂,这一部分是基于第一部分的运行结果,它获取每个设备及其暴露的端口,选择要测试的漏洞列表,并运行检查设备是否容易受到攻击。

漏洞验证模块是通过“海啸”的插件拓展方式,安全团队可以通过添加插件的方式,添加新的攻击载体和漏洞来检测内部网络。

当前的海啸版本已经包含了多个插件帮助你检测:
Exposed sensitive UIs:Jenkins, Jupyter和Hadoop Yarn都带有UI,允许用户工作负载调度或执行系统命令,如果这些系统在没有身份验证的情况下暴露在internet上,攻击者可以利用应用程序的功能来执行恶意命令。

弱凭证:“海啸”使用其他开源工具(如ncrack)检测协议和工具包(包括SSH、FTP、RDP和MySQL)使用的弱密码。

谷歌表示,未来几个月他们将通过新增插件来增强“海啸”的功能特性,从而检测到更多的漏洞,所有的插件都将通过Github发布。


“海啸”目标?
谷歌表示,“海啸”旨在满足类似于谷歌这样的高端企业的客户需求,漏洞扫描的准确性是重中之重,项目的重点是避免出现错误的检测结果。

这一点是至关重要的,因为扫描器将运行在巨大的网络中,在这些网络中,即使是最轻微的错误发现也会导致向成百上千的设备发送不正确的补丁,最终导致设备/网络崩溃,造成不必要的损失。

此外,为了减少安全团队的警戒疲劳,海啸还将扩展到只支持扫描那些可能被武器化的高危漏洞,而不是像目前的大多数漏洞扫描器所做的那样,专注于扫描所有的漏洞。

霸榜Github第一!谷歌重磅开源的“海啸”,我服了
“海啸”发布不久,已经稳稳霸住Github周榜第一的位置,收获标星4435个,累计分支362个(Github地址:https://github.com/google/tsunami-security-scanner),感兴趣的小伙伴们不要错过了哦。



收起阅读 »

B站UP主自制的开源OCR翻译器走红Github,用一次就粉了

最近一个B站UP主自己撸了一个翻译神器,只要出现在屏幕的东西都可以翻译,关键是操作十分简单,就像下面这样:和其他翻译软件相比,Dango-Translator有以下优点:适用范围全面,几乎所有出现在屏幕的东西都可以翻译;翻译接口多,目前有12个翻译接口;简洁美...
继续阅读 »

最近一个B站UP主自己撸了一个翻译神器,只要出现在屏幕的东西都可以翻译,关键是操作十分简单,就像下面这样:

1.jpg

和其他翻译软件相比,Dango-Translator有以下优点:
  1. 适用范围全面,几乎所有出现在屏幕的东西都可以翻译;

  2. 翻译接口多,目前有12个翻译接口;

  3. 简洁美观的界面;

  4. 及其简单傻瓜的操作方式;

  5. 相比较其他OCR翻译器配置有自动翻译模式;

  6. 需要联网,可能视网速不同翻译速度有差;


这个OCR翻译利用了百度AI的文字识别,通过识别图片上的外文文字进翻译,使用方法十分简单:

2.jpg

第一页是API设定界面,需要注册自己的API码才可以使用翻译器:

3.png

接着,你还可以设置翻译源,这里面有12个翻译接口,你可以根据自己需要选择:

4.jpg

就连翻译样式也可以自定义设置,设定不同翻译源翻译时的文字颜色,字体样式,以及翻译时是否显示原文,是否将原文自动复制到剪贴板。

当然,还有其他的一些设置,比如你还可以启用竖排文字翻译模式。

5.jpg

简单来说,该软件为OCR翻译器,OCR利用了百度AI的文字识别,原理为通过识别图片上的外文文字并进行翻译。

它不仅适用于galgame、rpg游戏、模拟器游戏、外文视频、网页游戏、pdf图片版文献等等,还适用于一切能显示在电脑屏幕上的文字。支持的语种,目前仅支持日语、英语、中文,相信后期创建者会持续完善,加入更多语言支持。

PantsuDango为什么要创建这个项目?


PantsuDango本身是个vnr翻译软件的忠实用户,但是遇到某些游戏无法提取文本,然后偶然发现有OCR(文字识别)技术的存在,下载了很多已经有的OCR翻译器还是不满意,于是,索性自己撸了一个。

6.jpg


PantsuDango目前在Github标星 816,累计分支 88 个(Github地址:https://github.com/PantsuDango/Dango-Translator)


来自:开源最前线(ID:OpenSourceTop) 

项目地址:https://github.com/PantsuDango/Dango-Translator


收起阅读 »

初学编程该注意什么

今天我们来聊聊学编程纯萌新该怎么做。首先呢,先不要觉得程序猿的工资就一定高,因为任何一个职业都会有收入高的低的,毕竟在这个世界上有无数的职业,程序猿也并不多特殊,只是一个普通的职业。说这些不是要劝退你们而是说不要太盲目,因为网上疯传的某行业入行门槛低、月薪高、...
继续阅读 »

今天我们来聊聊学编程纯萌新该怎么做。


首先呢,先不要觉得程序猿的工资就一定高,因为任何一个职业都会有收入高的低的,毕竟在这个世界上有无数的职业,程序猿也并不多特殊,只是一个普通的职业。说这些不是要劝退你们而是说不要太盲目,因为网上疯传的某行业入行门槛低、月薪高、发展前景好,是热门岗位,很多人想转行就会跟风,然后刚入门学了点觉得难或者不好就又退了。所以选择一定要慎重,毕竟关乎未来嘛,谁都想过的更好。


都说前端之类的入门门槛低,学起来很容易,但是实际上对于没学过的人来说还是很难的,所以一开始先要有学下去的信心,要有遇到难题的心理准备,不能一学着觉得很难就开始想放弃。其次是找对方向不管是学JS,C语言,python,vue,还是其他编程语言,先去了解一下它们的作用之类的,找到你感兴趣的喜欢的,只有对这个有兴趣才有学下去的动力,也能更加高效的学习。


然后,学习完了要记得经常练习,不然的话会生疏可能过两个小时就忘了。毕竟编程语言基本都是要敲代码实践的,这边建议多写多运行才能发现不足之处,题做出来了亦能让人有成就感,这样才能更快更好的学习。


最后祝各位早日学成,加油吧!!!


收起阅读 »

【融云分析】苹果 iOS 通知推送机制全面解析

在当下的 App 开发中,通知功能已成为不可或缺的一部分,目前主要分为两种模式:本地通知和远程推送。本文将围绕这两种模式,为开发者们详细介绍下 iOS 通知推送机制。本地通知一、本地通知介绍指定推送时间,该时间在手机上弹出推送通知,不需要网络连接,例如日历、待...
继续阅读 »

在当下的 App 开发中,通知功能已成为不可或缺的一部分,目前主要分为两种模式:本地通知和远程推送。本文将围绕这两种模式,为开发者们详细介绍下 iOS 通知推送机制。

本地通知

一、本地通知介绍

指定推送时间,该时间在手机上弹出推送通知,不需要网络连接,例如日历、待办、闹钟等应用。

更多详情请点击 ☞ Scheduling and Handling Local Notifications 

二、本地通知使用

1. 在代码中注册本地通知

如果是 iOS 7 及之前的设备,不需要开发者添加代码即可使用(用户需要打开 App 通知)。 

如果是 iOS 8 – iOS 10 之间的设备,直接用下方代码(通过注册本地通知)注册即可。 

如果是 iOS 10 以上的设备,需要在 Appdelegate 中导入 #import <UserNotifications/UserNotifications.h>,并遵循 UNUserNotificationCenterDelegate(在 iOS 10 中,苹果针对远程推送和本地通知推出了全新的 UserNotifications 框架),如下:

2. 发送本地通知

3. 取消本地通知

4. 处理收到的本地通知

4.1 应用处于前台运行状态

4.2 应用处于后台活跃状态

4.3 应用处于后台暂停或者被杀死状态


远程推送

一、远程推送介绍

更多详情请点击 ☞ APNs Overview

Provider:App Server

APNs:Apple Push Notification Service

远程推送工作流程

二、远程推送类型

1. 普通推送

服务端通过 APNs 推送到手机的一种消息通知,包括:声音、横幅、角标和自定义字段。

通知内容格式如下:

2. VoIP 推送

更多详情请点击 ☞ Voice Over IP (VoIP) Best Practices 

iOS 8 之后推出,依赖 PushKit.framework,主要用于音视频通话时响铃,VoIP 推送可以在应用被杀死的情况下唤醒 App。

使用时需要在 Signing & Capabilities 的 Background Modes 中打开 VoIP、Background fetch 和 Remote notification,并添加 PushKit.framework。

从 iOS 13 开始苹果为防止 VoIP 推送被非来电功能滥用,禁止在非来电功能中使用 VoIP 推送,如果使用 VoIP 推送只能使用 iOS 系统的 CallKit.framework 库,如果不使用 iOS 系统的 CallKit.framework 库,App 在收到 VoIP 推送后会被杀掉,表现上就类似于没有收到 VoIP 推送;由于苹果限制中国区域使用 iOS 系统的 CallKit.framework 库,导致 VoIP 推送功能也无法在苹果商店审核通过,可以将 VoIP 推送转成 APNs 解决,融云 iOS 13 以上 VoIP 功能适配

3. 静默推送

iOS 7 版本之后推出的一种特殊远程推送,又称为后台远程推送。这一推送的特征是收到通知时没有弹窗、横幅和声音,这时不用点开通知,不用打开 App 就会执行下面的方法:

注:1. 需要开启 Remote notifications 和 开启远程推送功能 

2. 静默推送的字段中不允许携带 alert、badge 和 sound 等字段,必须包含 content-available。

三、iOS 远程推送配置

1. 申请证书及配置文件

1.1 创建 App ID

1.1.1 登录 Apple Developer,进入 Identifiers,点击“+”按钮。

1.1.2 创建 App ID(如果 App ID 已经存在可以直接跳过此步骤)

注: App 的 BundleID 不能使用通配符,否则将无法使用远程推送服务。

1.1.3 开启远程推送服务

1.2 创建推送证书

1.2.1 创建 Push 证书

1.2.2 选择新建的证书类型(开发或者生产)

注:从 iOS 9.2 开始,Apple Developer 上生成的生产环境推送证书,名称为 Apple Push Services: XXX, 之前生成的生产环境推送证书名称为 Apple Production IOS Push Services: XXX。

1.2.3 选择要开启远程推送的 App ID,点击 Continue 后会提示需要一个 CSR 文件,CSR 文件需要参考 1.2.4 生成

1.2.4 生成 CSR 文件,用于上传

•打开 Mac 系统自带的钥匙串访问;

•从证书颁发机构请求证书;

•将请求的 CSR 保存到磁盘。

1.2.5 上传 Certificate Signing Request(CSR) 文件

将 1.2.4 中生成的 .certSigningRequest 文件上传,点击 Continue 即可生成推送证书。

1.2.6 下载生成的推送证书,并导出 .p12 文件

双击下载的推送证书,系统会将其导入钥匙串中。打开钥匙串访问,选中对应的证书,右键选择导出。保存 .p12 文件时,可以为其设置密码,也可以不设置密码。

注意右键选择导出的时候不要打开证书,直接在证书上点击右键即可。

1.3 创建配置文件

1.3.1 创建 Profiles

1.3.2 选择对应环境

1.3.3 为配置文件关联 App ID

1.3.4 选择开发者证书

1.3.5 选择要安装的设备

1.3.5 填写 Profile Name

1.3.6 下载后双击,即添加到 Xcode 中

2. 代码处理

2.1 在代码中注册远程推送

如果是 iOS 10 以上的设备,需要在 Appdelegate 中导入 #import <UserNotifications/UserNotifications.h>,并遵循 UNUserNotificationCenterDelegate(在 iOS 10 中,苹果针对远程推送和本地通知推出了全新的 UserNotifications 框架),如下:

#if __IPHONE_10_0

#import <UserNotifications/UserNotifications.h>

#endif

注册远程推送相关代码:

2.2. 处理 deviceToken

如果处理 deviceToken 的方法是通过去掉 [deviceToken description] 的 “<“、”>” 和 “空格” 的话,iOS 13 之前的设备可以获取到正确的 deviceToken,但是在 iOS 13 之后就无法获取正确的 deviceToken;因为 iOS 13 之后通过 [deviceToken description] 获取到的字符串变成了下面这样的格式:

现在应该采用的获取 deviceToken 的方法:

3. 处理收到的远程推送

3.1 应用处于前台运行状态

App 前台可见时,处于前台状态。

3.1.1 收到远程推送会回调下面的方法

3.1.2 点击远程推送会回调下面的方法

3.2 应用处于后台活跃状态

当 App 进入后台未被系统回收时,处于后台活跃状态。

3.2.1 点击弹窗会启动应用并回调下面的方法

3.3 应用处于后台暂停或者被杀死状态

当 App 进入后台被系统回收或者被杀进程,处于后台暂停状态。

四、iOS 远程推送扩展

1. 修改通知内容

利用 iOS 10 新增的 Notification Service Extension 可以修改收到的远程推送内容。

注意:

1.1 只在 iOS 10 以上有效;

1.2 后台推送过来的数据要协商好格式;

1.3 Targets 中的 Service Extension 的系统版本需要修改为 10.0,如果版本高于测试设备的系统版本,则不会走对应的方法。

具体步骤如下:

•给工程添加一个 target :Notification Service Extension。

•主工程开启 Push Notifications 和 Background Modes 功能。

•Service Extension target 开启 Push Notifications 功能。

•NotificationService.m 中实现 – (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler :

收起阅读 »

Linux 之父对 Intel 发飙:拜托快学学 AMD

在最近一次邮件交流中,Linux之父Linus Torvalds对Intel的处理器战略表达意见。他谈到“希望AVX512指令集安详地‘死去’”。Torvalds指出,Intel应当把精力转移到解决真正问题上来,而不是通过创造神奇的指令集来赢得某些跑分上的胜利...
继续阅读 »

在最近一次邮件交流中,Linux之父Linus Torvalds对Intel的处理器战略表达意见。

他谈到“希望AVX512指令集安详地‘死去’”。Torvalds指出,Intel应当把精力转移到解决真正问题上来,而不是通过创造神奇的指令集来赢得某些跑分上的胜利。

Torvalds还提到AMD,建议Intel像后者那样,把核心数做上来。在Torvalds看来,AVX512指令集仅在HPC(高性能计算集群)中有点用。

s_7a08f1594ea1442ca873f3b6b702144b.jpg

据悉,AVX-512是第三代AVX高级矢量扩展指令集,最早于2016年的Xeon Phi x200加速卡中被支持。它提供了单次512位数据和控制指令的执行单元,使得CPU单次可处理的组合矢量数据宽度达到512位,并且扩展到32个512位ZMM寄存器,保证数据处理的暂存需求,也支持FMA融合乘加操作。

当然,Torvalds此番谈话还有个背景是,Rocket Lake处理器的下一代Alder Lake可能会是Intel第一次大规模在消费级应用big.LITTLE混合架构,而为了指令集统一、减少调度损耗(Atom不支持AVX-512),Alder Lake可能砍掉AVX-512。

s_cb126cf1f56d4630841aa159c2ae6497.jpg

原文:http://news.mydrivers.com/1/700/700158.htm

end

收起阅读 »

数据库初探(1)————关于InnoDB和MyISAM两种数据库存储引擎

1.mysql中最常见的两种数据库引擎InnoDB存储引擎:InnoDB存储引擎是Mysql的默认事务引擎,也是最重要,使用最广泛的存储引擎,它被设计用来处理大量的短期事务,短期事务大部分情况下都是可以正常提交的,很少回滚。MyISAM存储引擎:MyISAM存...
继续阅读 »

1.mysql中最常见的两种数据库引擎

InnoDB存储引擎:InnoDB存储引擎是Mysql的默认事务引擎,也是最重要,使用最广泛的存储引擎,它被设计用来处理大量的短期事务,短期事务大部分情况下都是可以正常提交的,很少回滚。


MyISAM存储引擎:MyISAM存储引擎在MYSQL5.1之前的版本是默认的存储引擎,它支持大量的特性,包括全文检索,压缩等,但是它不支持行级锁和事务,而且有一个很严重的缺点就是奔溃后无法安全恢复。

  

2.在弄清楚MyISAM和InnDB存储引擎之前,我们先来搞懂什么是表级锁,什么是行级锁,什么是页级锁?


表级锁:正如他的名字一样,是锁定整张表,是Mysql目前为止锁粒度最大的锁定机制。一个用户在对表进行写操作之前,回先获得写锁,这样会阻塞其他用户的读写操作,只有没有写锁的时候,用户才会获得读锁,但是读锁之间不相互阻塞。


优点:逻辑非常简单,因为是锁定整张表,所以获取锁和释放锁的速度非常快,还可以防止死锁的发生。

缺点:因为是锁定整张表,所以锁的共享资源非常多,在并发情况下性能比较低。

使用的场景:适合以查询为主,只有按少量索引条件更新数据的应用。

支持的存储引擎:MySAM和InnoDB


行级锁:正如它的名字一样,是锁定表中的一行数据,是Mysql目前为止锁粒度最小的锁定机制,仅对指定的数据加锁,这样其他进程也会对这张表中的其他数据进行操作。


优点:因为锁的粒度非常小,所以处理高并发场景会有优势

缺点:因为锁粒度比较小,所以获取锁和释放锁的时候就会比较慢,带来的性能开销也就大了,还容易造成死锁的现象,

使用的场景:适合以大量按索引条件并发更新少量数据,同时又有高并发查询的应用。

支持的存储引擎:InnoDB


页级锁:锁的粒度位于表级锁和行级锁


3.我们现在了解了什么是表级锁和什么是行级锁,同时我们知道了两种常用的存储引擎他们分别支持哪种粒度的锁,即MyISAM支持表级锁,InnoDB支持行级锁和页级锁,那么他们两种存储引擎具体有什么区别呢?


(1)首先我们说最重要的一点,就是MyISAM不支持事务,但是InnoDB支持事务。在使用InnoDB的时候,会默认将每一条sql语句都封装成事务,自动提交,这样会影响速度,所以最好把多条语句放在begin和commit之间,组成一个事务。

(2)InnoDB支持外键,但是MyISAM不支持外键。一个具有外键的InnoDB的表不能转化成MyISAM表。

(3)InnoDB不支持全文检索,但是MyISAM支持全文检索。在涉及全文检索的项目中MyISAM速度更快。PS:MyIsam在5.7以后也支持全文检索。

(4)InnoDB支持表级锁和行级锁,MyISAM支持表级锁。

(5)InnoDB必须有主键(没有的话会自动生成),MyISAM可以没有主键。

(6)InnoDB的索引是聚集索引,使用的是B+树的数据结构(后面会详细分析B+树和B树的数据结构)。聚集索引的意思是数据文件和主键索引(后面会详细讲)是捆绑在一起的,我们一般推荐使用主键索引,因为一次性查到数据文件这样的效率高,不推荐使用辅助索引(辅助索引中包含主键列),因为这样会先找到主键,再通过主键找到数据文件,就会进行两次查询。总的来说,就是主键索引存放的是数据文件,辅助索引存放的是主键的值。

MyISAM的索引是非聚集索引,使用的是B+树的数据结构。非聚集索引的意思是数据文件和索引是分开的(注意这里是索引,而不是主键索引,因为我们上面说过MyISAM可以没有主键索引),索引中存放的是数据文件的地址。

(7)表的具体行数,在MyISAM存储引擎中,保存有表的总行数,通过select count(*) from table直接取出。在InnoDB存储引擎中,没有保存表的行数,通过select count(*) from table会遍历整个表,性能消耗极大。在这里注意的一点就是,在加入where条件后,两种存储引擎的效率相同。


4.我们了解了两种存储引擎的区别,那么我们如何选择使用哪种存储引擎呢?

(1)看是否需要支持事务,如果不需要,则使用MyISAM,如果需要的话,就使用InnoDB。

(2)如果对数据库只有读的操作,建议使用MyISAM,如果对数据库的操作既有读又有写,那么建议使用InnoDB。


5.从上述的几个问题中我们大概了解到什么是MyISAM和InnoDB,那么面试中我们应该如何更好的向面试官谈呢?

我们应该先从这两种数据库存储引擎的优点开始分析,再谈到索引,然后谈到他们的应用场景:

InnoDB引擎,它提供了对数据库事务ACID的支持,行级锁和表级锁的支持,支持外键。

采用的是聚集索引,聚集索引的意思是叶节点data域保存了完整的数据记录,索引的key就是数据表的主键,因此InnoDB表数据文件本身就是主索引。除了主索引还有辅助索引,InnoDB的辅助索引的data域是主键。聚集索引推荐使用主键索引,因为这样查询速度比较快。

MYSQL运行的时候,InnoDB会在内存中创建缓冲池,用户缓冲数据以及索引,但是它的启动比较慢,并且没有保存表的行数。所以,这类引擎 当你需要数据库事务支持的时候,该引擎就是首选,由于锁的粒度比较小,写操作的时候不会锁定整张表,所以支持高并发的场景。事实上,InnoDB存储引擎现已是最主流的存储引擎。



MyISAM引擎,它不提供对数据库事务ACID的支持,它支持表级锁,不支持外键,所以它在写的时候,会锁定整张表,对表处理的性能就会变慢。

采用的是非聚集索引,非聚集索引指叶节点的data域保存的是数据文件的地址,而辅助索引和主索引没有什么区别,唯一的区别就是主索引的key是唯一的,辅助索引的key可以不唯一。

好处就是MyIsam保存了表的行数,在执行select count(*) from table 的时候,可以直接读取已经保存的值而不会遍历整张表,InnoDB存储引擎没有这一功能。

当数据库的读的操作多于写操作的时候,并且不要求事务的支持的时候,优先使用MyISAM存储引擎。


6.在上述问题中,我们频繁提到了索引,索引对于构建数据库有着至关重要的地位,那么什么是索引呢?

我们首先要清楚一点,如果我们合理的设计数据库并且合理的利用索引,会大大提升数据库检索的性能,但是如果我们滥用数据库的索引,反而会影响数据库的性能。

第一点是数据库的索引是利用空间换时间的策略,将数据的引用按照合适的数据结构进行存储就是我们所说的索引。第二点我们数据库的索引通常情况下使用的是B+树的数据结构,因为B+树非常适合文件系统查找。


7.上面的问题我们了解到了什么是索引,那么MyISAM和InnoDB的索引结构到底长什么样呢?我们分成主键索引和辅助索引来讨论。


我们来引用网络上的图来说明这个问题:

首先说MyISAM索引实现:

1.主键索引:

679616-20180115165534912-4452270.png

MyISAM为B+树的数据结构作为索引,从上图我们可以看出,叶子节点data域存储的是数据文件的地址,Col1为主键。

2.辅助索引:

2.png

在MyISAM存储引擎中,我们看到辅助索引和主键索引没有什么区别,只是主键索引要求key是唯一的,辅助索引的key可以是不唯一的,上图在col2上建立一个辅助索引。

我们可以看出,MyISAM存储引擎的索引策略:B+树叶子节点data域保存的是数据文件的地址,因此,MyISAM中索引检索的算法首先按照B+树搜索算法搜索索引,如果指定的key存在的话,就取出其data域的值,这个值是数据文件的地址,再通过打他域的地址,找到数据文件,因此,叫它非聚集索引,主要目的就是和聚集索引做一个区分。


我们再来讨论下InnoDB索引实现:

1.主键索引:

3.png

同样是B+树,但是实现方式确是不同的,InnoDB表数据文件本身就是一个索引结构,它的叶子节点data域保存了完整的数据记录,因为InnoDB的数据文件本身就是按照主键聚集,所以InnoDB表必须有主键,如果没有显示显示,则我们的数据库会自动的选择一个具有唯一标识列来作为主键,如果还是没有,则数据库自动创建一个主键列。

2.辅助索引:

4.png

上图中可以看出,InnoDB存储引擎所有辅助索引都是以主键作为Data域。

但是我们在检索的时候,InnoDB存储引擎推荐使用主键索引,因为这种聚聚索引的方式(主键上的都是自增的,所以范围查找的时候会更加快速)使得按照主键索引非常的高效。但是辅助索引需要检索两遍索引,首先辅助索引先找到主键索引,再通过主键索引找到数据文件。


不同存储引擎的索引实现对于我们正确使用和优化索引都非常有帮助,例如我们知道了InnoDB的索引实现以后,我们就知道了为什么不能用过长字段的值作为主键,因为辅助索引中包含主键索引,主键索引过长,就会导致辅助索引也过长。

还有一个例子就是使用非单调的字段作为主键在InnoDB中是不好的,因为InooDB数据文件本身就是一颗B+树,非单调的主键会造成数据文件一位要维持B+树的特性而频繁的分裂调整,十分低效,而使用自增字段作为主键是一个很好的选择。


8.上面我们说了那两种存储引擎,我们直到B+树的数据结构用在索引中是最好的,我们在讨论B+树的时候,经常会讨论B树,那么B树和B+树有什么区别呢?

(1)B树的关键字分布在整棵树上,B+树的关键字分布在叶子节点上,且叶子节点的顺序本身就是自小到大有序的(链表形式)。

(2)查找过程虽然类似,但是B树的搜索有可能在非叶子节点上完成,B+树的搜索只能在叶子节点上完成,从根节点一直到叶子节点。

(3)B树在插入,删除的时候要进行不断的分类以及合并,会破坏B树的性质。

(4)B+树的非叶子节点相当于叶子节点的索引,叶子节点相当于存储系统的数据库。

(5)B+树比B树更适合数据库的索引,B树更适合文件系统的索引(如MangoDB)。


5.png

6.png

注:B+树有所演变,B+树在非叶子节点上添加了顺序访问指针,就在在每一个叶子节点上添加了指向下一个叶子节点的指针,提高了区间访问的性能。


9.我们了解了B+树和B树的优点的缺点后,那么为什么Mysql的存储引擎要使用B+树而不是使用B数呢?(面试常问)

从查询性能来看,因为B+树所有的数据文件都在叶子节点上,并且所有的叶子节点都是用指针互相连接。这时候,我们考虑一个业务场景,如果我们要从数据库中select多条数据,比如最后10条。如果我们使用B数,因为B树的非叶子节点也保存着数据文件,如果要查询,肯定有中序查找,这时候,我们势必要跨层查找。如果是B+树,因为B+树所有的数据都保存在叶子节点中,不用跨层,且有链表的形式,所以若能很快的找到首部元素,就能够很快的找到需要查找到的数据。


从操作系统层面来考虑,因为B树不管是叶子节点还是非叶子节点都要保存数据,这样就会使非叶子节点保存的指针数量变少,指针数量少的情况要保存大量的数据,就会使树的高度增加,一旦树的高度增加,就会使磁盘I/O的次数增加,查询性能就会变高。


10.hash存储索引的时间复杂度是O(1),B+树的时间复杂度是O(nlogn),那么为什么数据库的索引是B+树呢?(面试题常问)

这还是和我们的业务场景有关,如果我们查询单条数据,那么的确是hash索引的效率更高,但是我们在数据库中出现单条查询的情况少之又少,一般都是多条查询,使用B+树主键索引有序,且有链表的数据结构,就能很快查找出多条数据。

还有三个原因:

(1)索引一般保存在我们的硬盘中,可能不能一次性全部加载进内存中,而B+树的设计支持数据分批加载。

(2)使用B+树因为树的高度比较低,磁盘I/O的次数少,查询性能就会提高。

(3)再一个就是存在模糊查询的情况,哈希表是不支持模糊查询的,只能遍历整张表,而B+树可以采用最左前缀的原则进行查询找到相应的数据。


11.我们知道数据库的存储引擎一般采用的是B+树数据结构的索引,那么哪些是使用B树的数据结构呢?

MangoDB


12.为什么MangoDB采用的是B树的数据结构作索引的结构?

我们知道,索引的结构一般是红黑树,B树或者红黑树,因为这些树是多路树,使用多路数,可以降低树的高度。

文件系统(MangoDB)和数据库的索引都是存放在硬盘中,并且数据量很大的情况,就不能一次性加载进内存,如果是红黑树,就不能保证一次性都加载进内存,所以使用B树的结构,我们每次加载B树的一个节点,然后一步一步加载。

假设内存中每次只能加载两个字节的数据,那么长的有序数组无法一次性全部加载,要是我们设计成一个3路的B 树,那么一个节点最多有两个数,查找的时候,每次加载进一个节点就可以了。

如果是在内存中,红黑树比B树的效率更高,如果实在硬盘中保存,那么B树更优。


13.我们上面提到了红黑树,那么到底什么是红黑树呢?

我们知道,二叉排序树就是节点的左孩子的值小于该节点的值,该节点的右孩子的值大于该节点的值。那么在一些极端情况下,会出现链表的情况。这时候,我们就引入了平衡而二叉树的概念,平衡二叉树的意思就是对于树中任意的一个节点,左子树的高度-右子树的高度 =1/0/-1。、

而红黑树就是既满足的二叉平衡树的特性,又满足了二叉排序树的特性。

我们为什么要引入二叉平衡树和红黑树呢?

我们要从操作系统层面考虑,因为树的高度越高,磁盘I/O次数越多,查询的性能越低,所以要尽可能使树的高度越低越好。


关于红黑树的知识点还有很多很多,等下次整理出来以后再和大家分享!


谢谢观看,欢迎指正!


收起阅读 »

python也能玩视频剪辑!moviepy操作记录总结

python能够支持视频的处理么?当然是肯定的,人生苦读,我用python。万物皆可python。moviepy库安装今天咱们需要使用的第三方是moviepy,moviepy是用于视频编辑的Python模块,可用于基本操作(例如剪切,串联,标题插入),视频合成...
继续阅读 »

python能够支持视频的处理么?当然是肯定的,人生苦读,我用python。万物皆可python。

moviepy库安装

今天咱们需要使用的第三方是moviepy,moviepy是用于视频编辑的Python模块,可用于基本操作(例如剪切,串联,标题插入),视频合成(也称为非线性编辑),视频处理或创建高级效果。它可以读取和写入最常见的视频格式,包括GIF。

第一步:安装moviepy

安装的话首先需要使用pip命令进行安装

pip install moviepy

第二步:安装文本依赖库ImageMagick

安装完成后,我们需要安装依赖库,仅当我们要编写文本时,才严格要求ImageMagick。它也可以用作GIF的后端,但是可以在没有ImageMagick的情况下使用MoviePy进行GIF。我们将下载的exe文件双击运行即可。

第三步:配置路径

安装后,MoviePy将自动检测ImageMagick,但Windows除外!。Windows用户在手动安装MoviePy之前,进入moviepy/config_defaults.py文件并提供名为Magick的ImageMagick二进制文件的路径。它应该看起来像这样

1.jpg

这样我们的moviepy就算是完成安装好了。

使用方法

视频读取

VideoFileClip是从视频文件(支持大多数格式)或GIF文件读取的剪辑对象。可以按照以下方式加载视频:

myclip = VideoFileClip("菜鸟小白.wmv")

视频剪辑

可以通过subclip函数将视频的某几秒视频的剪出来

myclip2 = myclip.subclip(2,5)#将视频中2-5秒的内容剪切出来

将视频进行合并

列表中可以包含多个视频剪辑对象

final_clip = concatenate_videoclips([myclip2,myclip3],method=‘compose’) #视频合并

需要注意的是:当视频列表中存在不同编码方式的视频对象时,

method=‘compose’是必要的,否则,如果输入编码方式不同的视频会报错。

对视频的播放区域进行剪辑

final_clip.crop(x_center=x_center, y_center=y_center, width=width, height=height)

改变视频的分辨率

final_clip.resize(newsize=(width, height))

将图片列表变为视频

其中images_list可以是图像名称列表,也可以是文件夹名称。提供文件夹名称或文件名称列表时,可以选择load_images=True指定所有图像都应加载到RAM中。同时所有图片都需要为同一个大小的图片

image_clip = ImageSequenceClip(['1.jpg','2.jpg','3.jpg'], fps=1)

将两个视频同时放在一个画面播放

CompositeVideoClip([myclip2.set_pos("left","center"),myclip3.set_pos("right","center")], size=(myclip2.w+myclip3.w, myclip2.h))

2.jpg

另外还支持渐进切换,下面示例说明myclip2对象在第5秒中切入,myclip3对象在第10秒中切入。

CompositeVideoClip([myclip2.set_start(5),myclip3.set_start(10)])

将多段视频以列表方式播放

final_clip = clips_array([[myclip2,myclip3],[myclip3,myclip2]])

3.jpg



————————————————

版权声明:本文为CSDN博主「菜鸟小白的学习分享」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_25535969/article/details/107305975

收起阅读 »

数十家技术社区联名推荐的GeekOnline来了!

极客是一群什么样的人?他们大智若愚而富有科学精神,对一切常规的东西天然反感;他们天生热爱探索和创造,对于跟随和人云亦云深恶痛绝;他们特立独行,从不自我设置禁区;他们信仰自由,对于人为的限制极其不屑并热衷于挑战权威;在工作中他们推崇化繁为简,相信技术的力量并追求...
继续阅读 »

极客是一群什么样的人?他们大智若愚而富有科学精神,对一切常规的东西天然反感;他们天生热爱探索和创造,对于跟随和人云亦云深恶痛绝;他们特立独行,从不自我设置禁区;他们信仰自由,对于人为的限制极其不屑并热衷于挑战权威;在工作中他们推崇化繁为简,相信技术的力量并追求产品美学……


现在,由通信云技术领导者融云推出的开发者社区 GeekOnline 正式与全球极客们见面啦!


崇尚科技、自由和创造力的极客精神,GeekOnline 致力于成为一个创意与价值兼备、兴趣和温度并存的技术社区。


这是一个开发者们的技术乐园,也是国内首个全面覆盖了 IM、RTC 等通信云技术的极客社区。在移动互联网概念中,设想所有的客户端都“永远在线”,即每条消息发出必有回响。Online 既是一种态度,也是一种精神,正如 IM 所连接的每一个用户,极客永远在线。

极客在线微信头图.png


全球首个互联网通信云领域技术社区


不同于其他技术类社区体系的繁杂,GeekOnline 社区更专注于 IM 即时通讯、RTC 实时音视频以及与通信云相关领域的技术交流。在内容上 GeekOnline 社区提供了 IM、RTC、5G、出海等上百个热门话题让开发者们讨论和学习。目前 GeekOnline 社区与融云账号系统已全面打通,融云用户使用邮箱密码即可直接登录。


此外,关于更多互联网通信云领域的技术问题,开发者还可以通过社区中的“帮助”板块寻求解决。融云将 GeekOnline 社区打造成内容坚实的技术资料库,整理了针对通信云场景的各项技术资料,涵盖 IM 即时通讯、实时音视频、小程序、客服以及内容审核等众多维度。经过融云多年的技术积累,几乎所有关于通信云领域的常见问题都可以通过“帮助”板块来解决。


全球数十家技术社区联合推荐


GeekOnline 社区上线初期就已经获得了国内外几十家社区及媒体伙伴的认可并建立了联系,其中包括开源中国、51CTO、SegmentFault、LiveVideoStack、ThoughtWorks 等国内外知名技术社区。

社区合作伙伴.png


除此以外,还有多个活跃在技术社区的 KOL 已经入驻 GeekOnline,分享自己的经验观点并与用户们互动交流。还有一个秘密提前透露给你,一场由中国最专业的技术社区们共同发起的开发者活动,不久后也将与开发者朋友们见面。


开发者互助,每一个问题都必有所得


相关调研数据显示,在技术开发过程中,大约 76% 的开发者都希望获得代码、数据的支持,而超过 81% 的开发者则需要更多技术经验和课程的学习。


在 GeekOnline 社区,开发者可以自行搜索想了解的问题,在技术大牛的文章或者问题回复中找到所需的答案,亦或是从其他人的讨论中获得新的灵感。如果在搜索结果中没有收获,还可以针对性地提出问题,@业界技术大牛来回复和解答。此外在疫情期间,不少开发者都面临着一些工作上的难题,在这里大家还可以“抱团取暖”,找寻新的合作点或者互相推荐工作机会。


在 GeekOnline 社区建设中,融云还将陆续注入更多资源,针对专属社区会员定制周边礼品,为开发者们提供专业技术类书籍、技术大会演讲 PPT 等资料下载,打造丰富多彩的开发者活动,并定期邀请来自于各领域的技术专家与开发者们在线上线下进行互动,期待有更多的开发者伙伴加入 GeekOnline,一起打造中国最 Geek 的技术社区。


福利时间到


点击下方传送门参与活动即可获得融云精心准备的“GeekOnline加油包”!惊喜礼品在等你,快来参加吧!


传送门https://geekonline.rongcloud.cn/question/701

收起阅读 »