paint-brush
ShlinkedIn:一个基于开源的有趣社交网络经过@evansoohoo
1,860 讀數
1,860 讀數

ShlinkedIn:一个基于开源的有趣社交网络

经过 Evan SooHoo5m2022/10/07
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

ShlinkedIn 是对一个非常受欢迎的网站的模仿(我会让读者猜猜是哪个) 据其首席开发人员称,它拥有数千名用户。该站点使用相对较新的 Phoenix LiveView (https://fly.io/blog/how-we-got-to-liveview/),因为 Holtz 想练习用它构建一些东西。您可以在他们的 GitHub 上找到的技术堆栈实际上非常有趣。它批评了LinkedIn以及LinkedIn有时似乎代表的喧嚣文化。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ShlinkedIn:一个基于开源的有趣社交网络
Evan SooHoo HackerNoon profile picture

为了纪念开源月,我想写一篇关于ShlinkedIn的文章。 ShlinkedIn 是对一个非常受欢迎的网站的模仿(我会让读者猜猜是哪个), 据其首席开发人员称,它拥有数千名用户。大约一年前,它登上了HackerNews的第一页。我第一次听说他们是在一个名为Tech Team Weekly的英国播客上。


要完全清楚,我不是建造它的人……尽管我确实做出了一些小贡献,可以说是写这篇博文的借口。一个普通的读者可能会认为这个网站是一个软件工程师的临时项目——他们会是正确的——但这里有一些原因,我认为 ShlinkedIn 不仅仅是表面上看到的:


  • 技术栈,你可以在他们的GitHub 上找到,实际上非常有趣。它使用相对较新的Phoenix LiveView ,因为 Holtz 想练习用它构建一些东西。 ShlinkedIn 的核心是这个视频

  • 这展示了社交网络可能是什么。没有广告。没有数据收集。相反,它通过可选的付费等级赚钱

  • 它批评了LinkedIn以及LinkedIn有时似乎代表的喧嚣文化。它也随着平台的发展而发展:右侧是任何人都可以编造的新闻标题,每个帖子上都是完全没有意义的反应按钮(如“牛奶”和“辣酱”),并且整个网站都过时了顶级高级功能,例如 NFT 生成、个人资料页面动画和 Spotify 集成。他们甚至有一个人工智能功能,我在他们的不和谐中问他们使用的是什么库。他们说他们在使用“疯狂的库”,我花了一段时间才意识到他们在开玩笑


为什么要开源?

开源的许多优点是显而易见的:它是免费的,“让每个人都玩”,用Linus Torvalds的话来说(是的,我觉得有义务在一篇关于开源的文章中引用 Linus Torvalds 的话。在上下文中,他有一个与某人争论是否让公司使用开源软件来盈利)。但它也提供了一个学习机会,比教程或者我敢说,一个 LeetCode 问题更现实和相关。


当您创建帐户并登录后,您就可以发帖了。我对按钮很好奇并尝试了几个。您可以在帖子中添加不必要的表情符号,但没有指定数量。 “撤消”按钮会很有用,因为标准的“ctl + z”在这里不起作用。


你是怎么做到的?您是否查看其他应用程序中的人们如何实现“撤消”?也许只是使用一个简单的数据结构,比如堆栈,来跟踪所有的变化?也许它更简单......因为这些按钮不包含任何随机的东西,为什么不使用一些简单的计数器呢?这些是实现有意义的功能时您必须问自己的问题,也是您在该领域实际要做的事情(尽管在一个更大、更复杂的项目中)。


我的(小)贡献

……但在他们等待的时候,我决定做一些完全不同的事情。有一个“间距过大”按钮,但它似乎没有做任何事情。我在他们的 GitHub 上提交了一个问题,开发人员澄清说它只有在有断句的情况下才会做任何事情。这似乎是一些唾手可得的果实,以证明我是认真的。


它最终并没有那么复杂,但它肯定没有我想象的那么简单。有两个分别用 JavaScript 和 Elixir 编写的文件来处理上面的这个表单。开发人员澄清说 Phoenix LiveView 是前端,但从表面上看,这个项目似乎通过将前端和后端模糊在一起来挑战二分法。 Phoenix LiveView 的创建者在他的博客文章中似乎有些证实了这一点:Phoenix LiveView 是完全不同的东西。


LiveView 剥离了抽象层,因为它在一个抽象中解决了客户端和服务器。 HTTP 几乎完全消失了。没有更多的休息。没有更多的 JSON。没有 GraphQL API、控制器、序列化器或解析器。您只需编写 HTML 模板,一个有状态的进程将它与浏览器同步,仅在需要时更新它。而且没有 JavaScript 可写。

--来源


几个小时前,我现在是 ShlinkedIn 的贡献者。起初我发出警报,但那很糟糕,并且与类似错误的格式不匹配。相反,我决定添加一个新标签,用 id 区分它,并编写少量 JavaScript 来检测断句,并且仅在满足条件时才添加过多的空格。


我可能不应该使用“var”,但请不要告诉他们。


总是有更多的东西要学

Phoenix LiveView 和 Elixir 如何工作?我以为我必须更多地了解它们,但这最终只是 JavaScript。另外,为什么我必须使用 JavaScript?为什么 Phoenix LiveView 的创建者似乎认为 JavaScript 在这里是不必要的?


我认为 Phoenix LiveView 模糊了前端和后端之间的界限是正确的,还是不正确的? Medium 上的很多人都认为 Phoenix LiveView 非常高效,但真的如此吗?如果是这样,我该如何测试?


结束的想法

ShlinkedIn 很有创意,它是开源的,它利用了新事物和新想法。它也很有趣……它甚至还有自己的宇宙版The Onion


关注他们的 Discord,您可以初步了解社交媒体的规模。他们也有一些不那么有趣的讨论,比如当海报匿名模仿名人时是否要缓和种族主义评论。她的声明实际上是种族主义者,还是她在模仿种族主义评论?


该项目新颖有趣,这就是为什么我认为它值得 HackerNoon 关注。


(如果您喜欢您阅读的内容,请考虑在我的博客上关注我