Ehkä pitkän juonikaaren kässärissä
Ehkä pitkän juonikaaren kässärissä on jo tuota jaksoa lopputekstitettäessä ollut kohtauksia, joissa tuo leimallinen tapa on esiintynyt.
Tyypin naama ja elkeet on kyllä tosiaan roolille passeleita.
Ehkä pitkän juonikaaren kässärissä on jo tuota jaksoa lopputekstitettäessä ollut kohtauksia, joissa tuo leimallinen tapa on esiintynyt.
Tyypin naama ja elkeet on kyllä tosiaan roolille passeleita.
Eikö Well Manicured Man ole se joka usein viilailee kynsiään siellä pukumieshuoneessa istuskellessaan? Näin minä aina oletin, en koskaan tullut sitä tarkistaneeksi.
Upgraded to 8.2 today and the issue persists.
”Jos lukuarvot ovat 1,8 % ja 3,7 %, niin onko ero pari prosenttiyksikköä vai kaksinkertainen?”
Ainakaan ero ei ole kaksinkertainen. 1,8:sta kaksinkertaisen päässä on 1,8 + 2 * 1,8 = 5,4. Tämä muistuttaa sitä, miten usein näkee kirjoitettuna ”kaksi kertaa enemmän”, vaikka tarkoitetaan pelkästään ”kaksinkertainen”. (Esimerkkilukujasi käyttäen 3,7 % on noin kaksinkertainen 1,8 %:iin verrattuna, muttei kaksi kertaa enemmän kuin se.)
I prefer to use anchors closest to the point when communicating links. Unfortunately on many websites those anchors are hard to pick up using basic browser features. Typically, you’ll have to dig into the page source and manually copy the element id you want.
This add-on does that for you. That’s all it does, and for such specific use the no-frills approach is perfect.
As a bonus, the developer is friendly and issues can be easily raised through Github. (Not that such a simple tool should have many, but the one I had was fixed in no time.)
Just tested it and I can confirm that it works. Thanks a lot! I’ll post a review on AMO right after this.
720p original from NASA: Missions Take an Unparalleled Look into Superstar Eta Carinae
Here’s my first quick implementation of the ”full page as key” idea:
Save page as key:
(function () {
localStorage.setItem('libraryOfBabelKey', document.getElementById('textblock').textContent);
}());
Decrypt using previously saved key:
(function () {
var alphabet, c, i, m, text, key;
alphabet = 'abcdefghijklmnopqrstuvwxyz,. ';
key = localStorage.getItem('libraryOfBabelKey');
if (!key) {
alert('No key has been saved.');
return;
}
text = {
original: document.getElementById('textblock').textContent,
decoded: ''
};
for (i = 0; i < text.original.length; i += 1) {
c = text.original.substr(i, 1);
if (c === '\n') {
text.decoded += c;
} else {
m = alphabet.indexOf(key.substr(i, 1));
text.decoded += alphabet.substr(((alphabet.indexOf(c) - m) % alphabet.length), 1);
}
}
document.getElementById('textblock').textContent = text.decoded;
}());
You’re right Jonathan, using one whole page to decipher another would also be interesting. It’d take a bit more code (temporary storage is needed for keeping the previous page) but it still shouldn’t be too difficult. The pages could then be considered as having been encrypted with a one-time pad, which is unbreakable and thus a cool idea in itself.
I already noticed the first mistake in my code above: I forgot to strip the page number from the title prior to use, but it should be, as numbers aren’t part of the alphabet. Here’s a fixed version that takes out the page number and whitespace preceding it:
(function () {
var alphabet, c, i, m, text, title;
alphabet = 'abcdefghijklmnopqrstuvwxyz,. ';
title = document.title.replace(new RegExp('[^abcdefghijklmnopqrstuvwxyz,\. ]', 'g'), '');
title = title.substr(0, title.length - 1);
text = {
original: document.getElementById('textblock').textContent,
decoded: ''
};
for (i = 0; i < text.original.length; i += 1) {
c = text.original.substr(i, 1);
if (c === '\n') {
text.decoded += c;
} else {
m = alphabet.indexOf(title.substr(i % title.length, 1)); /* add "+ 1" if you want A = 1, B = 2,... instead of A = 0, B = 1,... */
text.decoded += alphabet.substr(((alphabet.indexOf(c) - m) % alphabet.length), 1);
}
}
document.getElementById('textblock').textContent = text.decoded;
}());
Here’s a piece of JavaScript I made that uses the book title as a Vigenère cipher keyword to decrypt the page content. You can paste it directly into the browser’s URL bar on a library page to decrypt. (I made it in a hurry so it comes with no warranty!)
javascript:(function () {
var alphabet, c, i, m, text, title;
alphabet = 'abcdefghijklmnopqrstuvwxyz,. ';
title = document.title;
text = {
original: document.getElementById('textblock').textContent,
decoded: ''
};
for (i = 0; i < text.original.length; i += 1) {
c = text.original.substr(i, 1);
if (c === '\n') {
text.decoded += c;
} else {
m = alphabet.indexOf(title.substr(i % title.length, 1)); /* add "+ 1" if you want A = 1, B = 2,... instead of A = 0, B = 1,... */
text.decoded += alphabet.substr(((alphabet.indexOf(c) - m) % alphabet.length), 1);
}
}
document.getElementById('textblock').textContent = text.decoded;
}());