整理 | 王启隆
透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。
今天是 2023 年 4 月 23 日,世界读书日。在 1564 年的这一天,全世界最卓越的文学家之一莎士比亚出生;1616 年的这一天,莎士比亚与西班牙最伟大的作家塞万提斯辞世。还有其他一些伟大作家的生卒日也在这一天,如诺贝尔文学奖得主拉克斯内斯、俄国作家纳博科夫。1995 年,联合国教科文组织规定 4 月 23 日为世界图书与版权日,简称“世界读书日”。回顾计算机历史上的 4 月 23 日,这一天又发生过哪些关键事件呢?

凯恩·克雷默(Kane Kramer)出生于 1956 年 4 月 23 日,他是英国的一位发明家。在 1979 年,也就是他 23 岁的时候,他发明了一种名为 IXI 的音乐播放器;这枚播放器只有信用卡大小,其上方有一个长方形的屏幕,下方有四个方向的按钮,音乐则储存在一个可更换的芯片之中。不仅如此,克雷默在当时就提出了用电话线传播音乐的想法。他为这个发明注册了全球专利,但是在 1988 年,因为没有足够的钱给专利延期,专利进入了公有领域。
在 2007 年,Burst.com 声称苹果公司的 iPod 侵犯了自己的专利权,苹果请克雷默到美国说明他的发明早于 Burst.com 的专利。之后两家公司达成了和解。不过,作为 iPod 的概念的发明人,克莱默并没有从中获得许多经济利益。他自称买不起 iPod,而苹果公司送给他的 iPod 也被他用坏了。如今,克雷默仍在便携式数据处理和存储系统等技术领域工作,他是英国发明家协会主席和英国发明展和世界发明奖的组织者,业余时间他会拍拍电影、组织音乐会,陶冶情操。
资料来源:维基百科、百度百科
YouTube 成立于 2005 年 2 月,由三名前 PayPal 雇员:查得·贺利、陈士骏、贾德·卡林姆创办;同年 4 月 23 日,YouTube 第一部上传视频,标题为“我在动物园”。在为 PayPal 工作前,查德于宾州印第安那大学学习设计,陈士骏则共同在伊利诺伊大学厄巴纳-尚佩恩分校学习计算机科学。YouTube 创办的原意是为了方便朋友之间分享录视频段,后来逐渐成为网友的回忆存储库和作品发布场所。就像许多以新技术创业的公司,YouTube 开始时亦是靠天使投资者注资创立,办公室也只是在一间简陋的车库内。
2006 年 11 月,Google 公司以 16.5 亿美元收购 YouTube,并把其当作一间子公司来经营。Google 最初对于如何透过 YouTube 盈利,一直保持着谨慎的态度。收购后的 YouTube 依然风靡全球网络用户。花旗银行分析师认为,以 2012 年计算,Google 从 YouTube 获得 24 亿美元的收入。无 Google 账号的用户仍可以观看 YouTube 中的视频,但无法上传视频及留言。注册用户可以无限量上传视频。

如今,YouTube 已经成为影音网站的翘楚,不单在娱乐音乐市场上吸引观众,又成功把庞大流量转变为社区平台,并激发网上创作产业,例如每年 YouTube 名人的演出 YouTube FanFest 等收看人数与收入都相当惊人,同时企业则申请官方账号用作广告与在线传媒、NGO 的推广公关等等,成为又一段硅谷文化新创成功的经营典范,当然也是因为硬件支持,才能承受庞大的信息量而发展起来,还有恰好的创业时机换来的知名度与其爆红效应。
尽管有大量用户支持,但同类型网站激烈竞争下内容更变得重要,因此,近几年 YouTube 的眼光开始投向网络知名制作者;YouTube 对这些拥有百万订阅的人十分器重,会给予他们奖杯反馈与官方聚会活动邀请、以及更高的薪资分红等等(这类职业化的视频创作者被称为 YouTuber)。追求高点击率,已经成为世界上许多人获取财富的方式之一。
资料来源:维基百科、百度百科

网易云音乐(NetEase Cloud Music)是中国网易公司自 2013 年 4 月 23 日基于网易云服务推出的一个音乐平台,除了提供主要的音乐播放、下载与查找服务外,还提供音乐社交功能,如歌曲评论、声学指纹(听歌识曲)、根据历史播放记录的歌单推荐、地理位置识别等。网易云音乐以其个性化推荐(包括每日推荐、私人FM、心动模式)为卖点,一经推出便在当年的应用市场走红。
网易云音乐现支持 iOS、Android、Windows、 Linux 在内的多个操作系统。截至 2017 年 11 月,网易云音乐用户数量超过 4 亿,用户创建歌单达 4 亿个,用户评论数达 4 亿个。由于许多唱片公司(如 King Records)要求向用户收取数字专辑的费用,网易云音乐上越来越多的音乐开始转变为付费收听和下载的模式,无损格式的音乐则全部收费,还有一部分音乐由于网易暂未获取授权而不能播放;在 2018 年 3 月移动端的 5.0.0 更新后,网易云重构了移动端的用户界面,将原本不太引人注意的视频模块放置到了首页。这意味着网易开始重视云音乐的短视频功能。
以史为镜,可以知兴替。计算机科学发展至今,有许多至关重要的事件、人物。在《新程序员:我们的技术时代,我们的程序人生》中,来自四十余位技术人跨越半个世纪,用代码敲出一个个真实的程序人生故事!
扫描或点击《新程序员:我们的技术时代,我们的程序人生》订阅!

使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b