Diff: [root] @ aac720a39a1 | faq | css

Merge branch 'master' of bitcheese.net:/var/gits/bwiki

Merged: <a href="/diff/f158aa000f7db734fdc3384bf19475b785f78528">f158aa000f7db734fdc3384bf19475b785f78528</a> <a href="/diff/0698d2499fea2c2365a5f92be4a10e0d5ba82e79">0698d2499fea2c2365a5f92be4a10e0d5ba82e79</a>

File: QMPDClient/index [Diff]

-- a/QMPDClient/index++ b/QMPDClient/index
@@ -14,6 +14,7 @@
* "Last.fm":http://last.fm track submission
* Tray notifications (Freedestop too)
* Skinnable interface with iconsets
* Shoutcast (unstable, see *shoutcast* branch in git)
* And more

You can see some screenshots [[screenshots|here]]

@@ -21,9 +22,9 @@
h2. Links

* Bleeding edge from git: "tarball":http://git.bitcheese.net/?a=archive&p=qmpdclient&h=HEAD&t=targz
* Latest version (1.1.1): "tarball":http://git.bitcheese.net/?a=archive&p=qmpdclient&h=3c4b61f2aa02daee2b696a7d735680bb89d51b47&t=targz, "deb":http://dump.bitcheese.net/files/0-qmpdclient_1.1.1-1_i386.deb (1.1.2): "tarball":http://dump.bitcheese.net/files/dedycec/qmpdclient-1.1.2.tar.bz2 , "deb":http://dump.bitcheese.net/files/wadawut/qmpdclient_1.1.2-1_i386.deb
* 1.1.0-33-ge62ba15 "binaries":http://dump.bitcheese.net/files/QMPDClient.zip for windows made by "Martin Roths":http://martin.dieroths.at/
* Legacy version with qt < 4.4 support 1.0.11: "tarball":http://git.bitcheese.net/?a=archive&p=qmpdclient&h=7d17e6c08657b53a547a015a000b9cd38eb51d5e&t=targz (1.0.12): "tarball":http://dump.bitcheese.net/files/jojanos/qmpdclient-1.0.12.tar.bz2
* "Mailing list":http://groups.google.com/group/qmpdclient, "announcements":http://groups.google.com/group/qmpdclient-announce.
* -Bugtracker at Assembla- Closed due to Ass-embla's inability to handle spam. Please report bugs to mailing list (see above) for now.
* Source code repository at "github":http://github.com/Voker57/qmpdclient/tree or "Gitorious":http://gitorious.org/projects/qmpdclient/repos/mainline

File: Voker57/junk_hardware [Diff]

-- a/Voker57/junk_hardware++ b/Voker57/junk_hardware
@@ -1,5 +1,13 @@
A list of computer items that are too bad to use, but too used to sell for a sum of money. I might either give them out or sell for nominal value, [[contact]] me for discussion.

h2. Displays

Samsung SyncMaster 757NF 17" CRT -- works very well, but i can't stand its image compared to new Acer LCD.

h2. Optical drives

ASUS IDE DVD reader, CD-R[W] writer

h2. Motherboards

Sent out.

File deleted: art_thou/bow [Diff]

-- a/art_thou/bow++ /dev/null
@@ -1,4 +1 @@
h1. bow == Black On White

!http://dump.bitcheese.net/images/thumbs/tovevij/observed.png!:http://dump.bitcheese.net/images/tovevij/observed.png

File created: art_thou/wob [Diff]

-- /dev/null++ b/art_thou/wob
@@ -1 +1,6 @@
h1. WOB: White On Black

!http://dump.bitcheese.net/images/thumbs/tovevij/observed.png!:http://dump.bitcheese.net/images/tovevij/observed.png

!http://dump.bitcheese.net/images/thumbs/mulysud/human-brain-big.png!:http://dump.bitcheese.net/images/mulysud/human-brain-big.png

File created: brain_cleansing/web_browsers_must_die [Diff]

-- /dev/null++ b/brain_cleansing/web_browsers_must_die
@@ -1 +1,97 @@
h1. Web Browsers Must Die

Web Browser is bloated application that typically offers bunch of technologies for accessing the most inconvenient places of internet.

Let's look at those:

h2. Typical features of a Web Browser

h3. JavaScript/AJAX support

!http://dump.bitcheese.net/files/jycymew/noajax.png!

Useful in very rare cases. Mostly used for abusing user computing resources for sake of distasteful eye-candy. Also, all the browsers support it with specific glitches, so so-called "frameworks" are required to make more or less complicated code work in more than one browser. These "frameworks" take up hundreds of kilobytes, and different methods of code compressing & obfuscating are employed to make it not so fucking slow.

Good example of JavaScript failure is recently released Google's "Closure":http://code.google.com/closure/ tools. These include:

* Perfectly bloated "JS library":http://code.google.com/closure/library/, with custom-drawn, stoned slow widgets, WYSIWING stuff, spinning, whistling and farting stuff and unit testing for digging in the shit in more comfortable way.

* Apotheosis of JS downfall: "Closure Compiler":http://code.google.com/closure/compiler/! So much for interpreted language: you still have to compile *before* you deploy to get good performance. It also includes some kludges for JS, including obfuscated code debugger (that reminded me of recently-released fixer for executables) for Firefox.

* "Closure templates":http://code.google.com/closure/templates/ — rather harmless tool, which allows to load user PC even more by processing templates, to unload server, that's busy running bloated Java/Python crap.

AJAX. The worst thing that happened to web ever. While JS can abuse your resources locally, with AJAX you can get into a fucking botnet with webpage living on its own.

Things that can be done in AJAX:

* Drawing shit all over the page
* Drawing shit with non-standard navigation all over the page.
* Drawing shit that downloads shit.
* Spinning, jumping and beeping shit.
* Turning nice, informational, stateless webpage into fucking self-aware crap, i mean, web application.

AJAX inherited Flash's poor navigational qualities that led to its downfall (see below). It's positioned as cross-browser, plugin-less replacement for it, but doesn't work this way (see above).

HTML is being transformed on the fly with AJAX, like it was a data structure. But it isn't! It's a markup language. It can be malformed, and browsers can't reject it: the browser that displays most pages wins. They try to fix it, while breaking it even more with JS scripts, this leads to even more horrible mess.

h3. Flash

!http://dump.bitcheese.net/files/nogogyx/flash-through-ages-small.png!

Flash is a nice plugin for displaying vector graphics. Let's watch cartoons in it, shall we?

No, we'll use it for: navigation (unusable fance shmancy menus), playing movies, augmenting JS with sockets' access, for anything else but for animations. Let's encode animations in flv, put them in YouTube and watch them with Flash, lol.

Moreover, let's not open the sources, i believe we still can make it even slower yet unportable.

h3. Ad/flash/JS (sic) blocker

!http://dump.bitcheese.net/files/gymorux/this-piece-small.png!

The reason for those (mostly) is to get rid of JS/Flash crap hanging from low-class sites, that gets in your way, slides from sides, hovers the text under your mouse, etc. If you get rid of user-side scripts, you deal with them all at once. JS-less advertisements can hardly do more than aggressively blink. If you don't like advertisements, don't visit the site. You only make them more profittable by doing so. If you need information *that* much, so you absolutely must have it, well, ads are the price for it.

Reasonable ads, like Google "AdSense":https://www.google.com/adsense/ are not distracting and usually well-separated from content, so why bother blocking them? However, if you wish to block such honest ADs, you can easily do it by blocking certain host in /etc/hosts*. More blocking can be done on proxy-side, like using "Privoxy":http://www.privoxy.org/. This solution does not perform vendor lock-in like browser plug-ins do.

h3. Password manager

Well, that one deserves to live, not in that form though. Instead of inputting your login & password in some form and sending in over connection in plaintext, "HTTP Digest Auth":http://en.wikipedia.org/wiki/Digest_access_authentication or even better, SSL public-key auth should be used. In case of first, password can be remembered for host/realm and stored with the rest of protocol passwords, like POP, FTP, etc.

h2. Browsers post-mortem

"IE":http://www.microsoft.com/windows/Internet-explorer/default.aspx — Was great once. Then its developing stalled, and others easily outrun it. Typical insecure MS crap as of today

"Firefox":http://www.mozilla.com/firefox/ — bloated crap that was thrown out to OS by Netscape, when they lost any hope of beating IE. Unfortanately, it's still alive and on its way to vendor-locking web in on itself, taking place place of defeated IE.

"Opera":http://www.opera.com/ — It's not really a browser, it's an Internet client. It features crappy BitTorrent client, awesome IRC and mail clients, and some mad stuff like "Unite":http://unite.opera.com. However, its HTML engine is quite good.

"KHTML":http://en.wikipedia.org/wiki/KHTML based — the most awesome HTML engine so far. Light in memory (compared to others) and displaying HTML correctly. Also, it supports JS, and quite good; Even 3.5.10 did support enough of it (to run a simple onclick(), for which JS is only good for anyway) though.

Browsers include: konqueror (see very below), rekonq (shit).

"WebKit":http://webkit.org/ based: this engine is basically pimped-out (by Apple) KHTML, which is somewhat better than Firefox's Gecko. The most reasonable engine so far.

Notable browsers:

* "Safari":http://www.apple.com/safari/ — not bad for casual web browsing, even on iPhone.

* "uzbl":http://www.uzbl.org/ — This guys got UNIX philosophy all wrong. Their browser does all the complex shit like AJAX anyway. You can tamper with interface and some stuff like bookmarks or cookies though.

h2. What to replace web browsers for?

h2. Reasonable replacement

Universal document viewer, like "Konqueror":http://www.konqueror.org/.

It features viewing all kinds of documents (like PDF, images, texts...) over not only HTTP, but any protocol implemented. It uses KParts (embeddable document viewers) and KIO-slaves (plugins for accessing different protocols) and ties them together to make a truly universal "browser". It doesn't implement anything itself, but hosts reusable pieces of software. Also it features unified means of authenticating (KWallet), suppling cookies (for HTTP), which allows to strip Web of its hyped-up uniqueness and erase border between local and web browsing.

h2. Ideal replacement

It probably would be a similar document viewer that's only capable of browsing filesystem. Remote protocols can be mounted on top of that filesystem on demand, something that can be done with "9p":http://en.wikipedia.org/wiki/9P.

h2. Corrections? Comments? Suggestions?

Mail me.

--
Voker57 <[mailto:voker57@gmail.com]>

File: closet/index [Diff]

-- a/closet/index++ b/closet/index
@@ -1,3 +1,7 @@
h3. Human Mind

!http://dump.bitcheese.net/images/thumbs/mulysud/human-brain-big.png!:http://dump.bitcheese.net/images/mulysud/human-brain-big.png

h2. Anti-Romantic

!http://dump.bitcheese.net/images/thumbs/dutobul/anti-romantic.png!:http://dump.bitcheese.net/images/dutobul/anti-romantic.png
@@ -5,6 +9,8 @@
Info: Inspired by "Antiromantic" by "AlisA"

lyrics: [http://paste.org.ru/?k89ixx] ogg: [http://dump.bitcheese.net/files/xamadik/Антиромантика.ogg]

Removed 04.11.2009

h2. Hate. Fonts. Treachery.

File: faq [Diff]

-- a/faq++ b/faq
@@ -4,7 +4,7 @@

h2. OMG MY EYES~

Why, you don't like the design? Hmm, i do. Whatever, i plan to make an alternative you can set white one. But of course there will be no Python or AJAX too. css "here":/setcss.

h2. What is this big shit on start page?

File: hellnet/crypto/asymmetric [Diff]

-- a/hellnet/crypto/asymmetric++ b/hellnet/crypto/asymmetric
@@ -1,4 +1,4 @@
h1. Asymmetric encryption

2048-bit DSA (signatures)

4096-bit RSA

File: hellnet/protocols/http/index [Diff]

-- a/hellnet/protocols/http/index++ b/hellnet/protocols/http/index
@@ -4,10 +4,9 @@

h2. Query types

|_. Query |_. Path |_. Static/dynamic |_. Description |_. More info |
| GET | @/chunks/([0-9a-f]+)@ | static | [[/hellnet/tech/chunk|Chunk]] with hash $1 | [[chunk]] |
| GET | @/meta/([^/]+)/([^/]+)@ @/meta/([0-9a-f]+)/([^/]+){,\.key,\.sign}@ | static | List [[../tech/metatrees|Metatree]] of chunks which are inserted with [[/hellnet/tech/metachunks|meta]] $1:$2 | [[meta]] key $1 and name $2, and its signature & date |
| GET, HEAD | @/hello@ | static | Check whether node is up | [[hello]] |
| POST | @/handshake@ | dynamic | Establish a link to node | [[handshake]] |
| GET | @/metamail/sync@ | dynamic | Get the list of [[../../metamail|metamail]] bundles | [[metamail/sync]] |

File created: hellnet/protocols/http/meta [Diff]

-- /dev/null++ b/hellnet/protocols/http/meta
@@ -1 +1,45 @@
h1. meta resource

h2. Brief description

Download metatrees

h2. Requests

h3. GET @/meta/([0-9a-f]+)/([^/]+){,\.key,\.sign}@

h4. Parameters

None

h4. Description

This resource provides metatrees, its dates and signatures

h4. Response

Metatree, its date and signature. Example:

h5. GET /meta/7c6578116..32d539/test

bc. {
"updated" : 1258639915,
"key" : "hell://file/22fea70fde222e2463b1dd716fa9f7faf75d90ebc6517333643826348c05950021fd2a2b31dcb23c1971149adf952bd1f38763b2338708acd12e97823a5017d2?key=a1234567",
"name" : "test",
"content" : {
"helloworld" : "hell://file/18895861928ce6793b3386d0fccacfcca35b2aa845fc895f06013fbac50ef9cbf1f77352f041b3f82fbce109b209cd09ff763d2a95c0eba2a21967dbe32f39e5.35abcdef",
"hellodir" : {
"file1" : "hell://file/7c657811658adf5d5f77bf571270a8ad242ed454fb353ff90f6ad6248edcba14fd155b8a78ad9af53fc4a58dd10464295322655ade5264598a7b5e537032d539",
"file2" : "hell://file/2fc800b58bf1903d8b98a007f301d4e59baf69f9e60609e00e4cfa0c6f8307ff8abb2155c8ff2642eb687b296c99ca95ae49e322ef3f95eadddada011149e737"
}
}
}

h5. GET /meta/7c6578116..32d539/test.date

bc. 1258639915

h5. GET /meta/7c6578116..32d539/test.key

<binary RSA signature data>

File deleted: hellnet/protocols/http/metamail/sync [Diff]

-- a/hellnet/protocols/http/metamail/sync++ /dev/null
@@ -1,30 +1 @@
h1. @metamail/sync@ resource

h2. Brief description

Get all the metamail bundles from your last sync.

h2. Requests

h3. GET

h4. Parameters

None

h4. Description

This request is used to check for new metamail since last contact. Results in newline-separated list of numbers like 1250968044, which are UNIX timestamps for metamail bundles. Client then can retrieve that bundle by path like @/metamail/1250968044@. After retrieval of all those, client can @POST /metamail/synced@ for server to reset the last contact time ([[synced|more info]]).

h4. Response

Newline-separated list of bundles' names. Example:

bc. 1250968044
1250968046
1250968047
1250968048
1250968049
1250968050
1250968051

File deleted: hellnet/protocols/http/metamail/synced [Diff]

-- a/hellnet/protocols/http/metamail/synced++ /dev/null
@@ -1,18 +1 @@
h1. @metamail/synced@ resource

h2. Brief description

Report successfully downloaded metamail bundles to node.

h2. Requests

h3. POST

h4. Parameters

* lastBundle - name of last (sorted by value in ascending order) bundle downloaded.

h4. Description

This resource is requested when client had downloaded all the bundles. Server recalculates last contact time based on lastBundle and returns list of remaining bundles (acts as [[metamail/sync]]). If the list is empty, transaction can be finished, otherwise client should download all the bundles and request this resource again.

File: hellnet/status [Diff]

-- a/hellnet/status++ b/hellnet/status
@@ -4,5 +4,5 @@

*Hellspawn* -- Hellnet daemon in Qt/C++. Supports data inserting, retrieving, [[protocols/transfer|message]] parsing and even some network connectivity. Doesn't work out of localhost, development is stopped in favour of hspawn.

*[[hspawn|Hspawn]]* -- Hellnet daemon in Haskell. Currently supports data inserting and retrieval (optionally [[crypto/symmetric|encrypted]]), [[tech/metachunks|metachunks]] [[tech/metatrees]] with manual server discovery

File created: hellnet/tech/URIs/chunk [Diff]

-- /dev/null++ b/hellnet/tech/URIs/chunk
@@ -1 +1,17 @@
h1. Chunk hell:// URIs

h2. Regex

^hell://chunk/([0-9a-f]{64})$

$1: chunk hash

h2. Optional parameters

name: Any string, contents' filename
key: hex number, symmetric encryption key

h2. How it works

Searches for chunk with hash=$1, then downloads it. Name is received from "name" parameter, otherwise $1(.key) may be used.

File created: hellnet/tech/URIs/file [Diff]

-- /dev/null++ b/hellnet/tech/URIs/file
@@ -1 +1,17 @@
h1. File hell:// URIs

h2. Regex

^hell://file/([0-9a-f]{64})$

$1: chunk hash

h2. Optional parameters

name: Any string, contents' filename
key: hex number, symmetric encryption key

h2. How it works

Searches for chunk with hash=$1, then unrolls it as [[../recursive-filelinks|recursive filelink]] and downloads the file. Name is received from "name" parameter, otherwise $1(.key) may be taken.

File created: hellnet/tech/URIs/meta [Diff]

-- /dev/null++ b/hellnet/tech/URIs/meta
@@ -1 +1,23 @@
h1. Meta hell:// URIs

h2. Regex

^hell://meta/([0-9a-f]{64})/([^/]+)/(.*)$

$1: public key hash
$2: meta name

h2. Optional parameters

name: Any string, contents' filename
key: hex number, symmetric encryption key

h2. How it works

When updating, client should first check the date; if it's bigger than his current metatree, then client downloads the tree and signature, optionally decrypts both using supplied encryption key and checks if server's announced date, key and name match ones in metatree itself and the signature validity. If these are ok, then it replaces its own metatree with downloaded one.

h2. See also

* [[../../protocols/http/meta|meta resource]]
* [[../metatrees]]

File deleted: hellnet/tech/metachunks [Diff]

-- a/hellnet/tech/metachunks++ /dev/null
@@ -1,6 +1 @@
h1. Metachunks

Metachunks are special files, which contain hashes of [[chunk]]s, inserted under specific category. For example, @hell-talk@ uses metachunk "talk:0" to exchange phrases between nodes.

Metachunks are stored in meta/<value>/<key> files and contain concatenated hashes

File created: hellnet/tech/metatrees [Diff]

-- /dev/null++ b/hellnet/tech/metatrees
@@ -1 +1,34 @@
h1. Metatrees

Metatrees are signed trees of named file links. They can be used to publish file structures or any other treeish structure. Each metatree is identified by [[../cryptography/asymmetric|public key]] hash and key-unique name.

Example of metatree:

This would be stored in ./meta/22fea70fde222e2463b1dd716fa9f7faf75d90ebc6517333643826348c05950021fd2a2b31dcb23c1971149adf952bd1f38763b2338708acd12e97823a5017d2/test

bc. {
"updated" : 1258639915,
"key" : "hell://file/22fea70fde222e2463b1dd716fa9f7faf75d90ebc6517333643826348c05950021fd2a2b31dcb23c1971149adf952bd1f38763b2338708acd12e97823a5017d2?key=a1234567",
"name" : "test",
"content" : {
"helloworld" : "hell://file/18895861928ce6793b3386d0fccacfcca35b2aa845fc895f06013fbac50ef9cbf1f77352f041b3f82fbce109b209cd09ff763d2a95c0eba2a21967dbe32f39e5.35abcdef",
"hellodir" : {
"file1" : "hell://file/7c657811658adf5d5f77bf571270a8ad242ed454fb353ff90f6ad6248edcba14fd155b8a78ad9af53fc4a58dd10464295322655ade5264598a7b5e537032d539",
"file2" : "hell://file/2fc800b58bf1903d8b98a007f301d4e59baf69f9e60609e00e4cfa0c6f8307ff8abb2155c8ff2642eb687b296c99ca95ae49e322ef3f95eadddada011149e737"
}
}
}

Description of top-level fields:

"updated" : UNIX timestamp of last update
"key" : hash of public key
"name" : name of this meta
"content" : filesystem with unlimited subdirectories, keys are filenames, values are hell:// links (only /chunk or /file)

Metatrees are stored in ./meta/$public_key_hash/$name (metatree itself), /meta/$public_key_hash/$name.date (value of "updated" field), /meta/$public_key_hash/$name.sign (detached signature)

h3. See also

[[../protocols/http/meta|Metatrees transfer|]]

File: start [Diff]

-- a/start++ b/start
@@ -1,14 +1,14 @@
h1=.
h1. Welcome to BitCheese.net

p=. !http://dump.bitcheese.net/images/ximynag/anti-romantic-small.png!

h1=.

p. !http://dump.bitcheese.net/files/marykys/human-brain.png!

h1. Places of interest

h2=.

h2. English

p=.

p. "Bitcheese.net wiki":/wiki
[ *New* ] Wear your safety "CSS":/setcss!
Non-coding [[art_thou|art]]
[ *New* ] Partial hackage "mirror":http://dump.bitcheese.net/hackage
[[faq|Bitcheese.net FAQ]]
[[hellnet|Hellnet docs]]
[[QMPDClient]]

@@ -17,9 +17,9 @@
[[Voker57|About me]]
[[nbl_markup|NBL markup]]

h2=.

h2. Russian

p=.

p. "Блог":/vlog
[[translations|Переводы песен]]
[[Sauerbraten_Editing_Tutorial.ru|Введение в редактирование карт в Sauerbraten]]

By Alexander Markov on 2009-11-21 21:42:06 +0000