挖坑已填——人民英雄紀念碑(誠實wiki)
有些想法,希望跟大家探討出一個大家都感興趣的方向和方案,能搞個小組更好。我技術垃圾,天馬行空的不敢想,只能想些屬於小打小鬧的點子,大家不必拘泥與我的條條框框。
另一個想法是 github pages上的純匿名論壇
第一個想法是
人民英雄紀念碑(誠實wiki)
1 概述
惡俗wiki的正義版,不要讓英雄被忘記。
2 功能
主要就是兩個
- 第一把人物的wikipedia頁面抓過去顯示
- 第二有點贊和瀏覽量統計功能,讓大家對人物匿名點贊,顯示瀏覽量。
- 第三(可選)自動蒐集人物相關新聞報道等最新動態。
3 方案
(只是草案,我是技術垃圾,歡迎推翻重來。)
- github page平臺
- 頁面功能主要由js實現(從github repo讀json文件,渲染成html)
- 數據存在repo的json格式文件裏
- 互動功能:前端api掛在vercel上,寫github repo裏的json
- 後臺功能:會NLP的寫個自動提取跟人物相關的新聞,github action運行定期任務,自動提取新聞到人物頁面。實現跟蹤比如許章潤有關的一切新聞。新聞可以直接從 git.io/JJCxX 的repo裏讀。
這個方案主要考慮的是serverless + 全透明 + 部署的代碼可驗證 (參考duty-machine)
状态更新
为保存记录,更新一下进展
坑基本填好了,我一个学文科的干这活容易吗。
回应几点讨论:
thphd2047前站长 其实直接用mediawiki也是可以的,条件是有的,俺这里不缺服务器,缺能战斗且信得过的人手。
只不过,我在2047上开一个wiki,那大家为啥不去wikipedia对吧,都翻墙出来了,搜还是能搜到的。
恶俗之所以能成是因为他们抓到一个痛点,就是出道,好比膜乎也抓到了一个痛点,就是辱包。辱和出道是最荷尔蒙的。
聊政治,太严肃了曲高和寡,太干货了入不敷出,要么就是搞得像精神病院一样一堆人在阴阳怪气。偶尔来一个给大家放猛料的好心人,最后发现是建国骗子,类似这样的事情。感觉人类还是更偏爱荷尔蒙类的项目。
这种荷尔蒙项目还有很多,比如pornhub,澳门首家线上赌场,诸如此类。如果开在github上是good idea,那么这些站全都会开在github上。。。另一篇的回帖已经提了经济学,这里不提了。
离题了,不要介意。
总结就是,做可以,但是要比现有的东西(比如wikipedia之类的),更加能留住用户。搞点赞功能是可以,但是纯点赞也不可持续,允许匿名留言会被水军刷爆,等等诸多经济学考量。
我做2047,2047的账户本身得是一个门槛,有门槛才有社区,有社区(有稳定的社交联系、互信机制)之后才能在上面搭建更多的东西,包括你建议的这几个idea。让陌生人一起来建巴别塔是很困难的,这方面我比较欣赏知乎早期发展的路线。
NodeBE4 @thphd <#7124762> 功能很容易實現,我也可以用django完成。但這裏想探討的是如何做到serverless,以及某種意義上的去中心化。
另外,我可能沒有把功能描述清楚,這個idea的核心是盡可能的serverless, 對每個人,網站的數據只有一個wikipedia的鏈接,一個名字,點贊數量。人物介紹的內容是由瀏覽器端的js從wikipedia抓取呈現,不重複造輪子。相關新聞可以用jekyll simple search這樣的js插件用人物的名字關鍵詞自動搜索填充。
不是爲了重複造wikipedia的輪子,更不會像惡俗那樣需要人工編輯,編輯還是在wikipedia上直接做。這就相當與以wikipedia爲數據庫的一個帶投票功能的名人榜,如果要server+人工管理+註冊帳號編輯那就太沒意思了,一千種現成的方案在那裏,我提那種要求的話有點侮辱自己智商。核心就是讓搭建者無成本,無風險。
需要探討和解決的問題:比如如何防spam或者其它沒想到的問題。
NodeBE4 觀點網站 git.io/JJCxS 實現方案也很多,爲什麼我單獨選看上去非常笨的jekyll + nodejs後臺抓取,主要是因爲它無需任何維護,無需成本,我現在停止任何工作的話,它還能一直跑下去,一直自動更新內容。很多年後如果空間滿了,清空一下就能繼續自動運行。
web開發者能想到的常規方案是用wordpress之類的模板+數據庫+服務器+域名,但是這就意味着大量的後臺維護、升級、租設施等需要人工參與的東西。有人DDOS你的網站,你還要人工處理迎戰。
靜態網頁的優點還有響應快,比python的每個請求現生成網頁響應快多了,此外,掛在github page上無需擔任任何攻擊。總之架設後不用管的。
NodeBE4 @thphd <#7313935> 如果有人能帮忙写个api,挂在vercel.com上,点赞和评论功能就有了。
我设想的是这样,人物信息放在一个json文件,
[ { "wiki": "https://zh.wikipedia.org/wiki/%E8%AE%B8%E7%AB%A0%E6%B6%A6", "people": "许章润", "vote": 1, "hash": "xxxxxxx", }, { "wiki": "https://zh.wikipedia.org/zh-tw/%E8%94%A1%E9%9C%9E", "people": "蔡霞", "vote": 1, "hash": "xxxxxxy", }, ... ]api只需要两个函数,一个点赞,一个提交新的人物。点赞的api的实现方式就是直接读取这个json文件,然后给对应的那个人的vote加1。提交新人物就在主页做个表格,提交到api就添加一个item。url合法性检查在网页js实现。api直接修改github repo里的json文件,网页定期自动刷新一次。
主页的人物索引或排行榜就根据这个json文件来由浏览器的js动态产生。
hash就是wikipedia+名字的md5 hash,留着给加载评论区用,比如,评论的json数据就以这个hash为文件名。如果做评论区的话,就要再在api里头加一个评论的函数,也是往一个
<hash>.json的文件里追加评论就行了。这种网站流量不会很大,基本不用考虑两个人同时提交/评论的问题,出现这种情况的话,页面js根据api反馈让用户重新点个赞或者点一下提交按钮就行了。
NodeBE4 @thphd <#7360685> 沒什麼nodejs經驗,我目前考慮的是這種api
https://github.com/duty-machine/duty-machine-form/blob/master/api/submit.js
它自動部署在vercel.com上,而且有vercel的機器人在commit下面留言認證。
因爲這種敏感的網站,很多人會擔心遇到釣魚網站泄漏自己IP,所以vercel是可以確保部署運行的源代碼就是他們看到的且沒有記錄IP等信息的源代碼。
如果python開發的api能部署到vercel上,也不必拘泥於nodejs。
用hash一是怕重名的人,也怕有人提交一些奇怪的字符或者超長的名字讓文件名不安全,或者系統崩潰。
評論頻率在api那裏就可以限制,github也有流量限制的。
thphd2047前站长 沒什麼nodejs經驗
Flask是python啦,例子很简单的。
我目前考慮的是這種api
https://github.com/duty-machine/duty-machine-form/blob/master/api/submit.js
这个是用nodejs写的。
不管是python还是nodejs,你只要在你自己机器上测试了能工作,发给我之后我都可以在 2047.name 上跑起来的。
至于2047什么时候被墙,不好说。真被墙了我可能要隔三差五换域名。
mountainsea发完10个帖子,账号保持静默。账号是隔壁佛学院共用的,写的东西跟我无关,请领导不要上山下海找我。 你的几个项目都很不错,观点和外媒两个项目我也常常去扫一眼看看有没有我感兴趣的报道。我本来对你的新闻站有比较高的期望,也许能变成中文的hacker news,可惜了。
我还是建议你尽量注册一个一级域名,从exposure来说会比现在用github的二级域名来说要好很多。从工程量上来说,你只用把你现在在github的指向转发给你的一级域名就好了(搜索一下custom domain for github pages site)。
当然,注册一级域名牵扯到付费,需要当心一点,不过可以一次注册管10年,应该还好。你可以衡量一下benefits vs. risk。
我还是很看好你的行动力和一些务实的点子的。加油!
NodeBE4 @mountainsea <#7475668> 謝謝支持,域名將來可以考慮到eu.org註冊一個免費二級域名。我希望這是 一個真正由社區一起完成的項目。
剛剛更新了一下人物列表展示功能,把前面提到的json文件加進去了。
做了外媒之後,我覺得新聞站的意義小了,無法Tor訪問也無所謂,我自己都很少去看了,畢竟外媒網站是有近期全部新聞記錄的,即時搜索功能也很好用。
不過新聞站的最顯著模塊網頁版RSS閱讀器我已經單獨拿出來放到了一個靜態頁面。 news
---更新---
又可以从tor访问了
duty-machine 突然感觉我们需要一些艺术人士设计一个吸引人的界面,比如之前有个武汉肺炎逝者的纪念网页。整理这些资料当然是好的,但是感觉还不能够吸引普通人,普通人不太可能一个一个来翻,除非这些内容在改朝换代之后变成媒体启蒙的宣传内容。
NodeBE4 @duty-machine <#7671344> 我找了个node.js rest api的例子学习入门,现在可以用post改写index.json,github上邀请你加入私有repo了,不过最终还是要移植到vercel。
不过主楼里数据的存储方案确实要再考虑一下,https://raw.githubusercontent.com/ 上的文件同repo里相比的还是有相当长的延迟,raw里的数据还是不能做实时交互的应用。具体的数据,投票和评论从index.json分开也是可以的。
你提到的翻看的问题,可以考虑用搜索框来完成,但是这样的话,就需要为每个人建立一个页面了,当然个人页面内容还是可以用github action从wikipedia抓取等方式后台自动填充。
thphd2047前站长 将来可以在2047搞个添加新人物的接口,论坛直接向repo提交新人物。
你应该会做一个静态的提交页面,里面用js完成提交
做好告诉我,我把这个页面添加到2047的某个url即可。
PS:英雄榜缺大头照。
NodeBE4 @thphd <#8549730> 要host的话可以定期clone gh-pages branch,网站的更新是靠github action完成,现在是有新人物被提交或每个小时自动刷新一次。
github pages只是一個靜態網站的host,具體來說,是靠github action運行jekyll build生成純靜態網站,放到gh-pages分支,大家在nodebe4.github.io/hero所看到的靜態頁面,就是repo的gh-pages的內容,而不是master branch的內容。
NodeBE4 状态更新
为保存记录,更新一下进展
坑基本填好了,我一个学文科的干这活容易吗。
回应几点讨论:
- 域名: 不打算买域名,但是...
- 任何网站都可以host本英雄榜的镜像,方法在这里,欢迎站长博主们部署,欢迎朋友们参与、传播。
- 评论区,目前需要github帐号才能评论,是否开放匿名评论,看大家的意见。
- 界面和美工,欢迎专业人士提出意见,基本原则是精简。
- 还可以有哪些功能:人物页面还可以加入近期Twitter相关评论,人物大头照可以有举报纠错功能,匿名评论可以有,根据大家的反馈,可以逐步添加。
- 安全:基本上就是对duty-machine的方案的发挥,头像图片也都自动替换成了imgur的图。
NodeBE4 添加了一個官方鏡像
thphd2047前站长 我感觉我得做一个oauth之类的东西,允许别人【用2047账号登录】。