Click and Drag

本文深入剖析了xkcd漫画网站的创始人Randall Munroe如何利用创意和技术打造了令人惊叹的神图'Click and Drag'。从漫画的创作背景、发展历程到其背后蕴含的Geek文化,再到技术宅们对图的解读和后续创作,本文带你领略一场视觉与思考的盛宴。

xkcd 神图“Click and Drag”

2012年10月16日 陈皓 发表评论 阅读评论 23,788 人阅读    

xkcd对于经常浏览国外网站的朋友一定不会陌生。不过,还是先让我来介绍一下xkcd(维基百科词条)。这是一个漫画网站,它主要是发布一些很简单的随手画的漫画,它主要有四种体裁——浪漫、讽刺、数学 和 语言。也会经常出现一些和IT有关的漫画,比如下面这个漫画—— (懂Unix的人一眼就看懂了,不懂的怎么看也看不懂)

本质上来说,xkcd是一种Geek文化,里面的东西都非常的Geek和晦涩,讽刺很辛辣,但很多只有特定人群可以看得懂。而且表达的形式自由到天马行空,飘忽不定。

xkcd.com的网站创建者、所有的漫画的作者叫Randall Munroe,他以前在 NASA工作,是那里的Roboticist——机器人专家,80后,同样,也是一个程序员。他还会画漫画。

xkcd是他于2005年创建的,他本来只是想把他大学里在记事本里画的漫画放到他的个人主页上,但结果却搞成了一个独立的以漫画为主的网站,他用他画的这些漫画做成T恤卖。为什么要取名叫xkcd,据Munroe说,这四个字母,没有任何意义,就是为了让人不能把他们通过拼成一个单词读出来。现在他全职在搞xkcd.com。他现在一周会更新三次漫画,分别在周一,周三,和周五。

到了2007年5月,xkcd上的漫画才被广泛转载。2008年10月, The New Yorker 杂志对Munroe做了一个采访。

2010年3月,xkcd的书里的谜底被解决了,Munroe在旧金山的金门大桥公园里给他的Fans发了255本限量版的书。

2012年4月1日愚人节,他的1037 号漫画(“Umwelt”) 会根据不同的IP,浏览器和地址显示不同的漫画。

2012年9月19号,xkcd的第1110号图问世了。

XKCD #1110 神图

这个图上面就是三格小漫画,一个小人拿着气球,还有两句耐人寻味的话。而这三格漫画图的下面是一个风景图,取名 Click and Drag,也就是让你点住图片拖动。于是你就不能自拔了。

我只所以在前面写了那么多东西,而不是把这个链接放在一开始,就是害怕你点了这个图,就再也不回来了。

好了,现在你可以点下面的链接开这个神图了 (你会发现这个图怎么也拖不完,无穷完尽的,所以,还请你先回来)

Click and Drag

但请你一定还要回来,本文后面还有精彩内容!

这个图一发布,几乎全世界的各大论坛都在疯狂的转载,很多媒体都关注这个漫画,各种技术社区如:reddit 在疯狂地讨论着这个图是怎么实现的,有多大?还有很多人再分析这个图里的内容,这个图里隐藏着很多很有意思的东西,《有2001太空漫游》,有《星球大战》,还有《超级马丽》等等。

几乎整个互联网都沸腾了,但好像中国社区对此事完全不知。

网上出现了很多相关的blog和站点来分析这个图片。如果你在Google里搜xkcd 1110,你会发现很多内容。

这个图有多大
  • 这个图可以分解成 2592 个 2048 x 2048 像素的图。
  • 但其中只有 225 个 2048 x 2048 的PNG 图片文件。而剩下的2337 基本上是纯黑的或是纯白的块。比如地下和天空。
  • 整个图横向有81个2048 x 2048的图(左边有33个,右边有48个),纵向有32个 2048 x 2048个图(天上有13个,地下有19个)
  • 老大当晚Release的全尺寸的大图(比现在你看到的还要大),不算空白处,图片共有60G的像素,而如果要算上整个图将会是T级别的像素。现在你看到版本已被做过优化,不算空白处,只有1G的像素,而算上全图有10G的像素。 (2048x2048x225 = 943,718,400 和 2048x2048x2592 = 10,871,635,968).
  • 如果我们按比例来看的话,图中的32个象素对应于现实世界的5英尺,那么,这个图的宽有25920英尺(7.9公里),高有10240英尺(3.1公里)。
  • 如果每个 2048 x 2048 的PNG图可以被打印成一个300 dpi的宣传画,那么,这个宣传画基本上是14.05米宽,5.55米高的图。现在的PNG被调整过了,只有72dpi左右。

有人说,创作这么这个大图很费时间。不过我觉得这对于Geek来说不是问题,因为这应该是可以通过矢量图的拼装来搞定。

xkcd 1110全景缩略图(点击看大缩略图)

xkcd 1110全景缩略图(点击看大缩略图)

看看技术宅们干了什么

下面我只记录了些不完全的技术宅们的因为这个画搞出来的东西。大家可以补充。

1)如果你用鼠标翻得不爽的话,你可以看看这篇文章,在你的Chrome下按Ctrl+Shift+I,然后到Javascript控制台里,粘贴文中的代码,于是,你就可以用键盘的光标键移动并浏览整个世界了。

2)这是个全屏版的:http://ares.aylett.co.uk/xkcd/

3)如果你要下载所有的图,你可以使用这个Python脚本来完成(转自这篇文章

4)还有人把它搞成了像Google Map一样的东西。 你可以访问下面的链接:

5)看看Hacker News的讨论贴吧,什么都有了(http://news.ycombinator.com/item?id=4542367

当然,对于这个图最强的一个站点如下,解释了所有和这个图有关信息,包括图中的各种文字和图案的意思。

http://www.explainxkcd.com/wiki/index.php?title=1110:_Click_and_Drag

看到这个图后,我陷入了深深地沉思,我在想。是什么样的动力能让人干出这样的事来?兴趣,还是为了好玩。还就是为了证明他能干一些让人拍案叫绝的东西?这可能就是一种Geek精神吧。就是为了能做出让世人冿冿乐道的东西

(全文完)


(转载本站文章请注明作者和出处 酷壳 – CoolShell.cn ,请勿用于任何商业用途)

这串代码如何输出错误用例<template> <xn-form-container title="导入导出" :width="700" :visible="visible" :destroy-on-close="true" @close="onClose"> <span >导入数据格式严格按照系统模板进行数据录入,请点击 <a-button type="primary" size="small" @click="downloadImportTemplate" >下载模板</a-button > </span> <a-divider dashed /> <div> <a-spin :spinning="impUploadLoading"> <a-upload-dragger :show-upload-list="false" :custom-request="customRequestLocal" :accept="uploadAccept"> <p class="ant-upload-drag-icon"> <inbox-outlined></inbox-outlined> </p> <p class="ant-upload-text">单击或拖动文件到此区域进行上传</p> <p class="ant-upload-hint">仅支持xls、xlsx格式文件</p> </a-upload-dragger> </a-spin> </div> <a-alert v-if="impAlertStatus" type="info" :show-icon="false" banner closable @close="onImpClose" class="mt-3"> <template #description> </template> </a-alert> </xn-form-container> </template> <script setup name="bizVolunteerImportModel"> import { message } from 'ant-design-vue' import bizVolunteerApi from '@/api/biz/bizVolunteerApi' import downloadUtil from '@/utils/downloadUtil' const impUploadLoading = ref(false) const impAlertStatus = ref(false) const impResultData = ref({}) const impResultErrorDataSource = ref([]) const impAccept = [ { extension: '.xls', mimeType: 'application/vnd.ms-excel' }, { extension: '.xlsx', mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' } ] // 指定能选择的文件类型 const uploadAccept = String( impAccept.map((item) => { return item.mimeType }) ) // 导入 const customRequestLocal = (data) => { impUploadLoading.value = true const fileData = new FormData() // 校验上传文件扩展名和文件类型是否为.xls、.xlsx const extension = '.'.concat(data.file.name.split('.').slice(-1).toString().toLowerCase()) const mimeType = data.file.type // 提取允许的扩展名 const extensionArr = impAccept.map((item) => item.extension) // 提取允许的MIMEType const mimeTypeArr = impAccept.map((item) => item.mimeType) if (!extensionArr.includes(extension) || !mimeTypeArr.includes(mimeType)) { message.warning('上传文件类型仅支持xls、xlsx格式文件!') impUploadLoading.value = false return false } // console.log(data.file, '+++') fileData.append('importExcel', data.file) return bizVolunteerApi .importUserList(fileData) .then((res) => { impAlertStatus.value = true impResultData.value = res impResultErrorDataSource.value = res.errorDetail // console.log(res.errorDetail, '===') }) .finally(() => { impUploadLoading.value = false }) } // 关闭导入提示 const onImpClose = () => { impAlertStatus.value = false } const impErrorColumns = [ { title: '索引', dataIndex: 'index', width: '80px' }, { title: '原因', dataIndex: 'msg' } ] // 定义emit事件 const emit = defineEmits({ successful: null }) // 默认是关闭状态 const visible = ref(false) const submitLoading = ref(false) // 打开抽屉 const onOpen = () => { visible.value = true } // 关闭抽屉 const onClose = () => { visible.value = false // 关闭导入的提示 onImpClose() } // 下载导入模板 const downloadImportTemplate = () => { bizVolunteerApi.bizVolunteerDownloadTemplate().then((res) => { downloadUtil.resultDownload(res) }) } // 调用这个函数将子组件的一些数据和方法暴露出去 defineExpose({ onOpen }) </script> <style scoped> .xn-color-red { color: #ff0000; } </style>
07-29
## 软件功能详细介绍 1. **文本片段管理**:可以添加、编辑、删除常用文本片段,方便快速调用 2. **分组管理**:支持创建多个分组,不同类型的文本片段可以分类存储 3. **热键绑定**:为每个文本片段绑定自定义热键,实现一键粘贴 4. **窗口置顶**:支持窗口置顶功能,方便在其他应用程序上直接使用 5. **自动隐藏**:可以设置自动隐藏,减少桌面占用空间 6. **数据持久化**:所有配置和文本片段会自动保存,下次启动时自动加载 ## 软件使用技巧说明 1. **快速添加文本**:在文本输入框中输入内容后,点击"添加内容"按钮即可快速添加 2. **批量管理**:可以同时编辑多个文本片段,提高管理效率 3. **热键冲突处理**:如果设置的热键与系统或其他软件冲突,会自动提示 4. **分组切换**:使用分组按钮可以快速切换不同类别的文本片段 5. **文本格式化**:支持在文本片段中使用换行符和制表符等格式 ## 软件操作方法指南 1. **启动软件**:双击"大飞哥软件自习室——快捷粘贴工具.exe"文件即可启动 2. **添加文本片段**: - 在主界面的文本输入框中输入要保存的内容 - 点击"添加内容"按钮 - 在弹出的对话框中设置热键和分组 - 点击"确定"保存 3. **使用热键粘贴**: - 确保软件处于运行状态 - 在需要粘贴的位置按下设置的热键 - 文本片段会自动粘贴到当前位置 4. **编辑文本片段**: - 选中要编辑的文本片段 - 点击"编辑"按钮 - 修改内容或热键设置 - 点击"确定"保存修改 5. **删除文本片段**: - 选中要删除的文本片段 - 点击"删除"按钮 - 在确认对话框中点击"确定"即可删除
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值