成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

hashify.me 神奇的在線服務(wù) 將整個(gè)文檔存儲(chǔ)在 URL 中

wushuiyong / 1211人閱讀

摘要:是一個(gè)非常奇特的在線服務(wù),它的目標(biāo)不是解決一個(gè)問(wèn)題,而是提出一個(gè)疑問(wèn)當(dāng)我們把整個(gè)文檔儲(chǔ)存在中時(shí)會(huì)發(fā)生什么樣的事情原理整個(gè)文檔被儲(chǔ)存在之中。然而,對(duì)長(zhǎng)度有字符的限制。當(dāng)然,是開(kāi)源的,你也可以部署在自己的服務(wù)器上。

Hashify 是一個(gè)非常奇特的在線服務(wù),它的目標(biāo)不是解決一個(gè)問(wèn)題,而是提出一個(gè)疑問(wèn):當(dāng)我們把整個(gè)文檔儲(chǔ)存在 URL 中時(shí)會(huì)發(fā)生什么樣的事情?

原理

整個(gè)文檔被儲(chǔ)存在 URL 之中。Hashify 將 Unicode 通過(guò) Base64 編碼轉(zhuǎn)化轉(zhuǎn)化為 ASCII 字符。

> unescape(encodeURIComponent("?a va?"))
"?§a va?"
> btoa(unescape(encodeURIComponent("?a va?")))
"w6dhIHZhPw=="
URL 長(zhǎng)度限制

出乎一般人的意料,HTTP 規(guī)范并沒(méi)有見(jiàn)限制 URL 的長(zhǎng)度!這意味著 Hashify 可以儲(chǔ)存任意長(zhǎng)度的文檔!

那么,瀏覽器是否有限制呢?大可放心,主流瀏覽器支持 80k 字符的 URL。例如 Chrome 在 215k 字符的 URL 時(shí)才會(huì)失去響應(yīng)。

不過(guò),服務(wù)器和代理等等的限制可能要更緊一些。

并且,由于 URL 過(guò)長(zhǎng),復(fù)制傳播很不方便,因此 Hashify 使用了 bit.ly 來(lái)縮短網(wǎng)址。然而,bit.ly 對(duì) URL 長(zhǎng)度有 2048 字符的限制。對(duì)于大多數(shù)文檔而言,這也足夠了。如果文檔很長(zhǎng)的話,Hashify 會(huì)把內(nèi)容切分,(最多切分成 15 份),然后將每份進(jìn)行 Base64 轉(zhuǎn)碼并分別發(fā)送給 bit.ly。然后將 bit.ly 返回的結(jié)果組合起來(lái):

http://hashify.me/unpack:gYi2Ie,g4fpte.

因此,Hashify 可以為 22,500 字符以下的文檔生成短網(wǎng)址。

也就是說(shuō),22,500 字符以下的文檔都可以將 bit.ly 作為存儲(chǔ)空間!這真是對(duì)短網(wǎng)址生成服務(wù)絕妙的濫用!

API

已知 Hashify 網(wǎng)址的前提下,無(wú)需訪問(wèn) hashify.me 網(wǎng)站便可獲取文檔內(nèi)容,例如,使用 Python:

from base64 import b64decode
from urlparse import urlparse

def unhashify(url):
    return b64decode(urlparse(url).path[1:])

unhashify("http://hashify.me/w6dhIHZhPw==")
部署

你可以直接在 http://hashify.me 上使用 Hashify 服務(wù)。當(dāng)然,Hashify 是開(kāi)源的,你也可以部署在自己的服務(wù)器上。

克隆倉(cāng)庫(kù):

git clone https://github.com/hashify/hashify.me

安裝 Compass:

gem update --system
gem install compass

安裝依賴

make setup

構(gòu)建

make

假設(shè)你使用 nginx 服務(wù)器,添加配置文件并激活,

ln -s "$(pwd)/nginx.conf" /opt/local/etc/nginx/sites-available/hashify.me
ln -s ../sites-available/hashify.me /opt/local/etc/nginx/sites-enabled/hashify.me
sudo nginx -s reload
項(xiàng)目主頁(yè)

http://hashify.me

編撰 SegmentFault

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78103.html

相關(guān)文章

  • JavaScript 編程精解 文第三版 十三、瀏覽器 JavaScript

    摘要:在本例中,使用屬性指定鏈接的目標(biāo),其中表示超文本鏈接。您應(yīng)該認(rèn)為和元數(shù)據(jù)隱式出現(xiàn)在示例中,即使它們沒(méi)有實(shí)際顯示在文本中。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:JavaScript and the Browser 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 ...

    zhiwei 評(píng)論0 收藏0
  • 【譯】通過(guò)JavaScript發(fā)送表單

    摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱(chēng)為,表示異步的和。若你使用,使用發(fā)送表單還會(huì)影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個(gè)無(wú)法訪問(wèn)的中。但要手動(dòng)發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來(lái)發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說(shuō)明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個(gè)HTTP請(qǐng)求。但表單也可以用JavaScript來(lái)準(zhǔn)備一個(gè)HTTP請(qǐng)求。本文將探索如何...

    chinafgj 評(píng)論0 收藏0
  • 【譯】通過(guò)JavaScript發(fā)送表單

    摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱(chēng)為,表示異步的和。若你使用,使用發(fā)送表單還會(huì)影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個(gè)無(wú)法訪問(wèn)的中。但要手動(dòng)發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來(lái)發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說(shuō)明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個(gè)HTTP請(qǐng)求。但表單也可以用JavaScript來(lái)準(zhǔn)備一個(gè)HTTP請(qǐng)求。本文將探索如何...

    qylost 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<