Archief | Tarwe

| ÄHNLICHE ARTIKEL 03-9-2010 ~ 1 Reactie | VERWANTE ARTIKELEN

Wubi - Linux voor Windows Installer


Diesen Artikel drucken Print dit artikel
Lees dit artikel Lees dit artikel

Ik ben in het proces weer op de rails te krijgen en mijn Eee PC met Windows XP en hem Puppeee uit te rusten.

Tijdens mijn onderzoek heb ik struikelde over een instrument ultrageniales: Wubi ! Het is een Ubuntu-installatieprogramma dat kan in Windows als een normale installatie programma kan gebruikt worden : D !
Het punt: produceert dus een soort van virtuele partitie die is op mijn Windows partitie. To installeren u moet dus zorg niet verloren partitie, de boot loader of de rest van de installatie ... en als je geen behoefte aan have Linux, kunt u gemakkelijk uninstall op.

Het geheel is niet een eenvoudige manier te vergelijken met virtualisatie. Bij het opstarten kun je kiezen voor de Windows bootloader, als je wilt dat de Windows of de geïnstalleerde Ubuntu te laden. ... gewoon geweldig! : D

Dual boot groet, Kenny



Hoge kwaliteit canvas hoeft niet duur te zijn: Op de top Fotoleinwand.de om uw aangepaste foto op doek voor de vaste lage prijs - te beginnen met een formaat van 30x30 cm voor € 12 tot XXL doeken in grootte 120x80cm voor 55 €.

gebruikt voor uw foto op canvas foto canvas geplaatst enige echte schildersdoek met een hoge kwaliteit en duurzaamheid. Dankzij de moderne printtechnologie in een mum van tijd je foto in een echte foto-kunstwerk wordt omgezet - en tegen een onklopbare prijs!



| ÄHNLICHE ARTIKEL 02-9-2010 ~ 1 Reactie | VERWANTE ARTIKELEN

[Update] gedachten aan het licht ...


Diesen Artikel drucken Print dit artikel
Lees dit artikel Lees dit artikel

Eigenlijk vind ik het zo, dat ik rijden elke dag met de auto ongeveer drie vierde van een uur om te gaan werken. Want hoewel ik een auto rijden, ik heb genoeg tijd, soms over God en de wereld om na te denken.

Deze keer heb ik nagedacht over licht, kleur en warmte. Eigenlijk is de proefpersonen had inderdaad iedereen in de school. Kleuren zijn licht en niet helemaal gezien dus - in feite, dit is gewoon om fotonen , dus zoiets als energie-ballen . Als nu in onze ogen op een van de kleur-receptoren (de kegeltjes ) te ontmoeten, zullen ze een bepaalde kleur worden uitgelegd . Of witte mensen zijn nu wit, dus eigenlijk gewoon afhankelijk van hoe de hersenen analyseert de informatie van de receptoren en assembleert.

Dit is vrij spannend, want ons lichaam heeft naast de kleur-receptoren van het oog nog een zintuig dat fotonen kunnen weten: de huid . Dit is spannend omdat de huid in theorie doet hetzelfde werk als de ogen, doe dat dan maar in een totaal andere manier.
Misschien zegt nu van de ene of de andere "Mijn huid kan niet het licht niet zien!" Dat is ook waar ... de huid reageert niet op het zichtbare licht van het elektromagnetisch spectrum , maar ze reageerde op de warmtestraling , die meestal in het infrarode spectrum is : D ! De warmtestraling - of vooral het infrarood licht - zou theoretisch kunnen worden waargenomen door onze ogen als het zou fijn genoeg.
Dat zou ons een voordeel, zelfs in de natuur, want dan konden we zien levende dingen, zelfs in volledige duisternis - gewoon met de (voor de mensen zichtbaar) licht dat ze uitstralen.
Of de andere kant dacht ik: Stel je voor Stel je voor, zou je kunnen creëren een kunstmatige huid die niet reageert op stralingswarmte, maar om de stralen van het zichtbare licht. Daarna de huid zou kunnen "voelen" als ze idee naderend object - een of andere manier een eng. ;-)

Ook grappig: Wanneer de tijden aan de andere kant van het spectrum is, kom je op ultraviolette straling - dit zijn de stralen die de huid huidkanker veroorzaken, schade aan het genetisch materiaal, en omdat dat is onze beschermende pigmenten.
Een bijzonder kenmerk van deze UV-straling is dat het meestal doorschijnend glas undurchlässlig voor UV-straling is. Als we nu denken dat we alleen kunnen ultraviolet licht dan zien, zou blijken dat het glas zou helemaal niet transparant zijn voor ons betekenen.
De vraag die voortvloeit uit deze kennis zou zijn: Is het mogelijk dat er wezens zijn die er doorheen kunt kijken stenen muren, zoals we kunnen zien door glas? : D

Wat denk je? Is dit zichtbaar en onzichtbaar licht niet een groot ding? :-)

Update:
Ik werd gevraagd of zou het theoretisch mogelijk zijn om de gevaarlijke straling te zien. Het antwoord is: deels, gedeeltelijk. De radioactieve straling, waarvan we weten dat, grofweg drie soorten straling: de alfa-straling , de beta-straling en gamma-straling . Terwijl de gamma straling - straling - potentieel "elektromagnetische gezien als" kan, wordt er gekeken naar de alfa en beta straling van verschillende, namelijk, zijn er geen macht pellets gestookt, maar deeltjes straling uitgezonden. Met andere woorden: In aanvulling op de zaklamp (gamma straling) straling ook de straatstenen (alfa-en bèta-straling).
Per definitie is overigens de alpha straling (bestaande uit heliumkernen), de meest gevaarlijke: Wanneer deze deeltjes stuiten als het genetische materiaal in een cel, de DNA-streng te worden vernietigd en mutaties in de celdeling (kanker). Niettemin, gammastraling is de gevreesde: namelijk, dit kan moeilijk aan schild . Dit betekent dat u een gamma-emitter wrap met veel materiële behoeften niet meer straling kan doordringen tot de buitenkant.
Echter, er is een mogelijkheid om rond te zweven genoemd bewijzen dit: de zogenaamde Geiger-Mueller counter (beter bekend als de geigerteller). In deze, de positief geladen deeltjes van de straling raakte een gas voorstelt, waarvan ze elektronen vrijkomen. Deze elektronen maak vervolgens een elektrische stroom, waardoor het effect van de deeltjes aangeeft.
Ik hoop dat ik de vraag kon beantwoorden redelijk bevredigend. : D

Verlichte groet, Kenny

PS: Liefde biologen, chemici en fysici, vraag me niet voor de pseudo-huid-trips, die ik heb ondernomen in dit artikel. Als u correcties, zou ik het waarderen opmerkingen. :-)

| ÄHNLICHE ARTIKEL 08.24.2010 ~ 4 Reacties | VERWANTE ARTIKELEN

Uw Twitter - als je wilt!


Diesen Artikel drucken Print dit artikel
Lees dit artikel Lees dit artikel

@ Dqmhose had onlangs vroeg me of het met Stijlvol is het mogelijk om Twitter berichten van mensen te verbergen, je weet het niet. Zijn reden: veel van deze berichten zijn echt spam en dus verwaarloosbaar.

Omdat Twitter-berichten van onbekende mensen, maar niet gekenmerkt door de extra CSS, mijn antwoord was "Nee" - maar ik heb hem beloofd dat ik anzugucken eens weet of het hele ding met Greasemonkey mogelijk zijn. In tegenstelling tot Stijlvol is gedefinieerd op Grease Monkey is niet gewoon maar een beetje CSS, maar kan met behulp van JavaScript een grotere impact op de site.

Alleen het werk geregeld, echter, daar is het niet eenvoudig om erachter te komen welke mensen bekend zijn voor iedereen. Op het gebruik van de Twitter API, zou ik evenwel af van elk geval - de inspanning zou ik geen waarde hebben : D !
Dit is de reden waarom mijn oplossing werkt inmiddels een puzzel werk - doet het toch ;-) . Hoe dat precies zit, zal ik u vertellen hetzelfde ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1990
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
/ / == == User Script
/ / @ Naam Block berichten van niet-volgende dingen
/ / @ Naamruimte http://weizenspr.eu
/ / @ Include * http://twitter.com/
/ / @ Include https: / / twitter.com / *
/ / == / User Script ==

true ; var Homescreen = true;
2000 ; // in milliseconds (values <= 0 deactivate the timer) var hideAgainTimer = 2000 / / in milliseconden (waarden <0 = uitschakelen van de timer)
[ "followers" , "followings" ] ; // can either be "followers" and/or "followings" Deze mensen var show = ["volgelingen", "volgende dingen"], / / hetzij kan worden "volgelingen" en / of "volgende dingen"
true ; var showDebugAlerts = true;

/ / EDIT NIET onder deze lijn

/ / Opties
"followers" ; followersOption var = "volgelingen";
"followings" ; followingsOption var = "volgende dingen";

/ / Twitter-pagina titels
"Twitter / People who follow " ; followersTitle var = "Twitter / mensen die" te volgen;
"Twitter / People " ; followingsTitle_Start var = "Twitter / mensen";
" is following" ; followingsTitle_Stop var = "is na";
"Twitter / Home" ; home var titel = "Twitter / Home";
"Twitter / @" ; var antwoord titel = "Twitter / @";

/ / URL Twitter
"http://twitter.com/following" ; followingsURL var = "http://twitter.com/following";
"http://twitter.com/followers" ; followersURL var = "http://twitter.com/followers";
"http://twitter.com" ; twitterHost var = "http://twitter.com";

/ / Twitter-id's en klassen
"hentry u-" ; className_Start var = "hentry U";
" status" ; className_Stop var = "status";
" share status" ; className2_Stop var = "aandeel in de status";
"me next" ; nextLinkRel var = "mij de volgende";
"pagination" ; paginationId var = "paginanummering";
"timeline" ; timelineId var = "time line";
"session-user-screen_name" ; usernameMeta var = "sessie-user-screen_name";
"label screenname" ; userSpanClass var = "label schermnaam";

/ / HTML en CSS fragmenten
"a" ; anchorTag var = "a";
"none" ; displayNone var = "none";
"div" ; divTag var = "div";
"li" ; ItemTag var = "li";
"meta" ; var metatag = "meta";
"p" ; paragraphTag var = "p";
"span" ; spanTag var = "span";

/ / Greasemonkey optienamen
"following_" ; followingOption var = "following_";
"followingCount" ; followingCountOption var = "followingCount";

getUsernameFromMeta ( ) ; var = gebruikersnaam getUsernameFromMeta ();
username != null ) { if (gebruikersnaam! = nihil) (
document. title . toLowerCase ( ) == ( followingsTitle_Start + username + followingsTitle_Stop ) . toLowerCase ( ) ) || if ((document. titel. toLowerCase () == (followingsTitle_Start + gebruikersnaam + followingsTitle_Stop). toLowerCase ()) | |
. toLowerCase ( ) == ( followersTitle + username ) . toLowerCase ( ) ) ) { (Document. titel. ToLowerCase () == (followersTitle + gebruikersnaam). ToLowerCase ())) (
false ; showFollowers var = false;
false ; showFollowings var = false;

showThesePeople != null ) { if (show deze mensen! = null) (
var index = 0 ; index < showThesePeople. length ; index ++ ) { for (var index = 0; index <tonen deze mensen. lengte; index + +) (
showThesePeople [ index ] . toLowerCase ( ) == followersOption. toLowerCase ( ) ) { if (show Deze mensen [index]. toLowerCase () == followersOption. toLowerCase ()) (
; showFollowers = true;
)
showThesePeople [ index ] . toLowerCase ( ) == followingsOption. toLowerCase ( ) ) { if (show Deze mensen [index]. toLowerCase () == followingsOption. toLowerCase ()) (
; showFollowings = true;
)
)

showFollowers && showFollowings ) { if (& & showFollowers showFollowings) (
confirm ( "Do you want to update your followings userlist?" ) ; var overgaan = confirm ("Wil je userlist update uw volgende dingen");
proceed ) { if (doorgaan) (
null ; allFollowers var = null;
null ; allFollowings var = null;

showFollowers ) { if (showFollowers) (
followersURL ) ; allFollowers = retrieveFollowings (followersURL);
)
showFollowings ) { if (showFollowings) (
followingsURL ) ; allFollowings = retrieveFollowings (followingsURL);
)

new Array ( ) ; Totaal-var = new Array ();
0 ; var count = 0;

allFollowers != null ) { if (allFollowers! = null) (
var indexA = 0 ; indexA < allFollowers. length ; indexA ++ ) { for (var indexering = 0; indexering <allFollowers. lengte; indexering + +) (
] = allFollowers [ indexA ] ; Totaal-lijst [aantal + +] = allFollowers [indexa];
)
)
allFollowings != null ) { if (allFollowings! = null) (
var indexB = 0 ; indexB < allFollowings. length ; indexB ++ ) { for (var indexB = 0; indexB <allFollowings. lengte; indexB + +) (
] = allFollowings [ indexB ] ; Totaal-lijst [aantal + +] = allFollowings [indexB];
)
)

; saveFollowings (Totaal-);

showDebugAlerts ) { if (showDebugAlerts) (
"Finished update: " + totalList. length + " entries added" ) ; alert ("Finished update:" + Totaal-. lengte + 'items toegevoegd ");
)
)
)
)
)

document. title . toLowerCase ( ) == homeTitle. toLowerCase ( ) ) && ( checkHomeScreen ) ) { if ((document. titel. toLowerCase (home == titel). toLowerCase ()) & & (check beginscherm)) (
hideUnwantedReplies ();
)

document. title . toLowerCase ( ) == ( replyTitle + username ) . toLowerCase ( ) ) { if (document. titel. toLowerCase () == (antwoord titel + gebruikersnaam). toLowerCase ()) (
hideUnwantedReplies ();
)
)

getUsernameFromMeta functie () (
null ; var result = nihil;

document. getElementsByTagName ( metaTag ) ; var = allMetas document. getElementsByTagName (meta-tag);
null ; singleMeta var = null;

var index = 0 ; index < allMetas. length ; index ++ ) { for (var index = 0; index <allMetas. lengte; index + +) (
index ] ; singleMeta allMetas = [index];

singleMeta != null ) { if (singleMeta! = null) (
singleMeta. name . toLowerCase ( ) == usernameMeta. toLowerCase ( ) ) { if (singleMeta. naam. toLowerCase () == usernameMeta. toLowerCase ()) (
; resultaat = singleMeta. content;

te breken;
)
)
)

return resultaat;
)
clearFollowings functie () (
GM_getValue ( followingCountOption , 0 ) ; var = followingCount GM_getValue (followingCountOption, 0);

var index = 0 ; index < followingCount ; index ++ ) { for (var index = 0; index <followingCount; index + +) (
index ) ; GM_deleteValue (followingOption + index);
)
; GM_deleteValue (followingCountOption);
)

loadFollowings functie () (
null ; var result = null;

GM_getValue ( followingCountOption , 0 ) ; var = followingCount GM_getValue (followingCountOption, 0);

followingCount > 0 ) { if (followingCount> 0) (
Array ( followingCount ) ; resultaat = new Array (followingCount);

var index = 0 ; index < followingCount ; index ++ ) { for (var index = 0; index <followingCount; index + +) (
= GM_getValue ( followingOption + index ) ; resultaat [index] = GM_getValue (followingOption + index);
)
)

return resultaat;
)

followingsArray ) { functie saveFollowings (followingsArray) (
clearFollowings ();

followingsArray != null ) { if (followingsArray! = null) (
followingsArray. length ) ; GM_setValue (followingCountOption, followingsArray. Lengte);

var index = 0 ; index < followingsArray. length ; index ++ ) { for (var index = 0; index <followingsArray. lengte; index + +) (
index , followingsArray [ index ] ) ; GM_setValue (followingOption + index, followingsArray [index]);
)
)
)

followingsArray , itemClassName ) { Antwoorden functie te controleren klasse (followingsArray, itemClassName) (
false ; var result = false;

followingsArray != null ) { if (followingsArray! = null) (
var index = 0 ; index < followingsArray. length ; index ++ ) { for (var index = 0; index <followingsArray. lengte; index + +) (
className_Start + followingsArray [ index ] + className_Stop ) . toLowerCase ( ) == itemClassName. toLowerCase ( ) ) || if (((+ className_Start followingsArray [index] + className_Stop). toLowerCase () == itemClassName. toLowerCase ()) | |
followingsArray [ index ] + className2_Stop ) . toLowerCase ( ) == itemClassName. toLowerCase ( ) ) ) { ((+ ClassName_Start followingsArray [index] + className2_Stop). ToLowerCase () == itemClassName. ToLowerCase ())) (
; resultaat = true;

te breken;
)
)
)

return resultaat;
)

hideUnwantedReplies functie () (
loadFollowings ( ) ; var volgende dingen loadFollowings = ();
document. getElementById ( timelineId ) ; var tijdlijn = document. getElementById (timelineId);

timeline. getElementsByTagName ( itemTag ) ; var = allitems tijdlijn. getElementsByTagName (ItemTag);
null ; singleItem var = null;

var index = 0 ; index < allItems. length ; index ++ ) { for (var index = 0; index <allitems. lengte; index + +) (
index ] ; singleItem = allitems [index];

singleItem != null ) { if (singleItem! = null) (
! checkReplyClass ( followings , singleItem. className ) ) { if (! check Antwoorden klasse (volgende dingen, singleItem. className)) (
= displayNone ; singleItem style .. = displayNone display;
)
)
)

hideAgainTimer > 0 ) { if (hideAgainTimer> 0) (
hideAgainTimer ) ; setTimeout (hideUnwantedReplies, hideAgainTimer);
)
)

/ / Als http://www.developers-guide.net/c/117-eine-einfuehrung-in-ajax-und-xmlhttprequest.html uit
createHttpRequest functie () (
null ; var result = null;

window. ActiveXObject ) { if (window. ActiveXObject) (
proberen (
/ / IE 6 en hoger
ActiveXObject ( "MSXML2.XMLHTTP" ) ; resultaat = new ActiveXObject ("Msxml2.XMLHTTP");
( e ) { ) Vangst (e) (
proberen (
/ / IE 5
ActiveXObject ( "Microsoft.XMLHTTP" ) ; resultaat = new ActiveXObject ("Microsoft.XMLHTTP");
( e ) { } ) Vangst (e) ()
)
{ ) Else (
window. XMLHttpRequest ) { if (window. XMLHttpRequest) (
proberen (
/ / Mozilla, Opera, Safari ...
XMLHttpRequest ( ) ; resultaat = new XMLHttpRequest ();
( e ) { } ) Vangst (e) ()
)
)

return resultaat;
)

url ) { retrieveSource functie (url) (
null ; var result = null;

createHttpRequest ( ) ; var httpRequest createHttpRequest = ();

httpRequest != null ) { if (httpRequest! = null) (
"GET" , url , false ) ; httpRequest. open ("GET", url, false);
null ) ; httpRequest. zenden (null);

httpRequest. readyState == 4 ) && ( httpRequest. status == 200 ) ) { if ((httpRequest. readyState == 4) & & (status == httpRequest. 200)) (
; resultaat = httpRequest. ResponseTekst;
)
)

return resultaat;
)

source ) { retrieveEntries functie (bron) (
new Array ( ) ; var result = new Array ()
0 ; var count = 0;

source != null ) { if (bron! = null) (
document. createElement ( paragraphTag ) ; var element = document. createElement (paragraphTag);
source ; element. innerHTML = bron;

null ; allAnchors var = null;
null ; Anchor var single = null;

element. getElementsByTagName ( spanTag ) ; var element = allSpans. getElementsByTagName (spanTag);
null ; singleSpan var = null;

allSpans != null ) { if (allSpans! = null) (
var index = 0 ; index < allSpans. length ; index ++ ) { for (var index = 0; index <allSpans. lengte; index + +) (
index ] ; singleSpan allSpans = [index];

singleSpan != null ) { if (singleSpan! = null) (
singleSpan. className . toLowerCase ( ) == userSpanClass. toLowerCase ( ) ) { if (className singleSpan .. toLowerCase () == userSpanClass. toLowerCase ()) (
( anchorTag ) ; allAnchors = singleSpan. getElementsByTagName (anchorTag);

allAnchors != null ) && ( allAnchors. length > 0 ) ) { if ((allAnchors! = null) & & (allAnchors. lengte> 0)) (
0 ] ; Single Anchor allAnchors = [0];

singleAnchor != null ) { if (enkele Anchor! = null) (
] = singleAnchor. innerHTML ; resultaat: [aantal + +] = enkele anker. innerHTML;
)
)
)
)
)
)

"" ; element. innerHTML = "";
)

return resultaat;
)

source ) { retrieveNextPage functie (bron) (
null var result = null

source != null ) { if (bron! = null) (
document. createElement ( paragraphTag ) ; var element = document. createElement (paragraphTag);
source ; element. innerHTML = bron;

null ; allAnchors var = null;
null ; Anchor var single = null;

element. getElementsByTagName ( divTag ) ; var element = allDivs. getElementsByTagName (divTag);
null ; singleDiv var = null;

allDivs != null ) && ( allDivs. length > 0 ) ) { if ((allDivs! = null) & & (allDivs. lengte> 0)) (
var indexA = 0 ; indexA < allDivs. length ; indexA ++ ) { for (var indexering = 0; indexering <allDivs. lengte; indexering + +) (
indexA ] ; singleDiv = allDivs [indexa];

singleDiv != null ) && ( singleDiv. className . toLowerCase ( ) == paginationId. toLowerCase ( ) ) ) { if ((singleDiv! = null) & & (singleDiv. naam van de klasse. toLowerCase () == paginationId. toLowerCase ())) (
( anchorTag ) ; allAnchors = singleDiv. getElementsByTagName (anchorTag);

allAnchors != null ) && ( allAnchors. length > 0 ) ) { if ((allAnchors! = null) & & (allAnchors. lengte> 0)) (
var indexB = 0 ; indexB < allAnchors. length ; indexB ++ ) { for (var indexB = 0; indexB <allAnchors. lengte; indexB + +) (
indexB ] ; Single Anchor = allAnchors [indexB];

singleAnchor != null ) && ( singleAnchor. rel . toLowerCase ( ) == nextLinkRel. toLowerCase ( ) ) ) { if ((enkele Anchor! = null) & & (singleAnchor. rel. toLowerCase () == nextLinkRel. toLowerCase ())) (
; resultaat = een Anchor. href;

te breken;
)
)
)
)
)
)

"" ; element. innerHTML = "";
)

return resultaat;
)

url ) { retrieveFollowings functie (url) (
new Array ( ) ; var result = new Array ();
0 ; var count = 0;

retrieveSource ( url ) ; var source = retrieveSource (url);
null ; nextpage var = null;
retrieveEntries ( source ) ; var output = array retrieveEntries (bron);

outputArray != null ) && ( outputArray. length > 0 ) ) { if ((output array! = null) & & (outputArray. lengte> 0)) (
var index = 0 ; index < outputArray. length ; index ++ ) { for (var index = 0; index <uitgang van de array. lengte; index + +) (
] = outputArray [ index ] ; resultaat: [aantal + +] = output array [index];
)

doen (
source ) ; nextpage = retrieveNextPage (bron);

nextPage != null ) { if (nextpage! = null) (
showDebugAlerts ) { if (showDebugAlerts) (
"Proceeding with next page: " + nextPage ) ; alert ("over te gaan tot de volgende pagina:" nextpage +);
)

nextPage ) ; source = retrieveSource (nextpage);
source ) ; output = array retrieveEntries (bron);

outputArray != null ) && ( outputArray. length > 0 ) ) { if ((output array! = null) & & (outputArray. lengte> 0)) (
var index = 0 ; index < outputArray. length ; index ++ ) { for (var index = 0; index <uitgang van de array. lengte; index + +) (
] = outputArray [ index ] ; resultaat: [aantal + +] = output array [index];
)
)
)
( nextPage != null ) ; ) Hoewel (nextpage! = NULL);

showDebugAlerts ) { if (showDebugAlerts) (
result. length + " entries found" ) ; alert (result. lengte + "items gevonden");
)
)

return resultaat;
)

De eerste stap is het configureren van het script. Er zijn een paar parameters die ingesteld kunnen worden:

  • Als alleen de antwoorden moeten worden gefilterd, of kan worden aangepast als het Home Screen API Retweet?
  • Alle hoeveel milliseconden wordt beschouwd als vrij van vuilnis weer?
  • Wiens tweets worden getoond? Door de mensen die je volgt zelf, door de mensen die het volgen van een of beide groepen?
  • Als debug-berichten worden weergegeven?

Hierna moet je het script, en vervolgens worden geactiveerd wanneer de pagina met de lijst van zijn volgelingen of volgende van zijn bezoek. De reden? Tjaaa ... omdat ik niet gebruik maken van de API, schreef ik een crawler dat deze pagina's durchcrawled en dus vinden de mensen die behoren tot de juiste groepen ... en belt een van de twee zijden zal de start van de crawler merk. Dat betekent ook dat u zou moeten bezoeken een van de twee regelmatig. ;-)

Filteren groet, Kenny

| ÄHNLICHE ARTIKEL De 23 augustus 2010 ~ 5 Reacties | VERWANTE ARTIKELEN

[Update] geheugen 2 * n stappen op te lossen ...


Diesen Artikel drucken Print dit artikel
Lees dit artikel Lees dit artikel

Net nu ben ik de IT-nieuws op de International Computer Science Olympiad struikelde - dit werd dit jaar gehouden wordt voor de 22ste keer, dit keer in Ontario, Canada. Een taak die ik in het bijzonder was geïntrigeerd: Hoe veel oplossen van een alleenstaande op het beste geheugen?

In de taak, was het reeds bestaande kader - moesten we alleen de ontwikkeling van de werkelijke logica. Er waren twee deeltaken ... de eerste was net zo ver gekomen dat alle kaarten waren ten minste eenmaal ontdekt. Om dit tellen, werd ontdekt voor elk paar - zelfs als het niet was gedetecteerd op hetzelfde moment - een zoete verspreiden. In een gegeven moment was de zelf-geschreven programma zal ontvangen alle 25 mogelijke druppels.
Het volgende niveau is dan dat de hele game verandert in een maximum van 100 kaarten (50 kaarten in het spel) moest worden opgelost. Natuurlijk is de eerste opdracht opgelost wanneer men heeft het tweede probleem meteen opgelost. ;-)

Toen ik dit verlaten, kreeg ik het volgende simpel idee: Waarom niet alle kaarten zetten de eerste plaats de waarden onthouden en vervolgens gewoon grazen alleen de koppels? Dan zou je moeten exact 50 bochten om alle kaarten te leren kennen en een ander 50 toeren om de kaarten in paren te onthullen. :-)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PasMemory programma;

gebruikt
CardGiver,
Geheugen;

var
; Line: String;

beginnen
PrepareCards;
Het spel;

; WriteLn ();
'Moves: ' , TurnCounter ) ; WriteLn ('zetten', Counter-turn);
'Over : ' , GameOver ) ; WriteLn ('Over', gameOver);
Line ) ; ReadLn (lijn);
einde.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1990
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
CardGiver eenheid;

interface

Boolean ; GameOver functie: Boolean;
Boolean ; PrepareCards functie: Boolean;
CardID : Byte ) : Char ; Draaifunctie Card (CardId: Byte): Char;
Integer ; Draaifunctie Teller: Integer;

uitvoering

var
[ 1 ..50 ] of Char ; Stapel: array [1 .. 50] van Char;
; Eerste kaart: Byte;
; Zet Count: Integer;

Boolean ; GameOver functie: Boolean;
var
Byte ; Index: Byte;
beginnen
; Resultaat: = true;

Low ( CardStack ) to High ( CardStack ) do voor de Index: = Laag (stapel) tot hoog (stapel) doen
beginnen
CardStack [ Index ] <> # 0 ) then if (stapel [index] <> # 0) then
; Resultaat: = false;
einde te maken;
einde te maken;

Boolean ; PrepareCards functie: Boolean;
const
= 25 ; Card Count: bytes = 25;
var
[ 1 ..25 ] of Byte ; Kaarten: array [1 .. 25] van Byte;
; Gedaan: Boolean;
Byte ; Index: Byte;
; Temp: Byte;
beginnen
; Eerste kaart: = 0;
; Zet Count: = 0;

Low ( Cards ) to High ( Cards ) do voor de Index: = Laag (Cards) tot hoog (kaarten) te doen
] := 2 ; Kaarten [Index]: = 2;

Low ( CardStack ) to High ( CardStack ) do voor de Index: = Laag (stapel) tot hoog (stapel) doen
beginnen
; Gedaan: = false;
herhalen
( Random ( CardCount ) ) ; Temp: = Succ (Random (Card graaf));
Cards [ Temp ] > 0 ) then if (kaarten [temp]> 0) then
beginnen
:= Pred ( Cards [ Temp ] ) ; Kaarten [temp]: = Pred (kaarten [temp]);
] := Char ( Pred ( Temp + 65 ) ) ; Stapel [index]: = Char (Pred (Temp + 65));

; Gedaan: = true;
einde te maken;
tot Gereed;
einde te maken;

; Resultaat: = true;
einde te maken;

CardID : Byte ) : Char ; Draaifunctie Card (CardId: Byte): Char;
beginnen
CardID > = Low ( CardStack ) ) and ( CardID < = High ( CardStack ) ) ) then if ((CardId> = Laag (stapel)) en (CardId <= Hoog (stapel))) dan
beginnen
FirstCard = 0 ) and ( CardStack [ CardID ] <> # 0 ) ) then if ((eerste kaart = 0) en (stapel [CardId] <> # 0)) then
beginnen
CardID ] ; Resultaat: = stapel [CardId];
( TurnCount ) ; Zet Count: = Succ (Turn Graaf);

Eerste kaart: = CardId;
einde
anders
beginnen
FirstCard <> 0 ) and ( FirstCard <> CardID ) and ( CardStack [ CardID ] <> # 0 ) ) then if ((eerste kaart <> 0) en (de eerste kaart <> CardId) en (stapel [CardId] <> # 0)) then
beginnen
CardID ] ; Resultaat: = stapel [CardId];
( TurnCount ) ; Zet Count: = Succ (Turn Graaf);

CardStack [ CardID ] = CardStack [ FirstCard ] ) then if (stapel [CardId] = stapel [eerste kaart]), dan
beginnen
'Pair : ' , CardStack [ CardID ] ) ; WriteLn ('koppelen', stapel [CardId]);

:= # 0 ; Stapel [CardId]: = # 0;
:= # 0 ; Stapel [eerste kaart]: = # 0;
einde te maken;

; Eerste kaart: = 0;
einde
anders
beginnen
; Resultaat: # = 0;
einde te maken;
einde te maken;
einde
anders
; Resultaat: = # 0;
einde te maken;

Integer ; Draaifunctie Teller: Integer;
beginnen
Resultaat: = Zet Graaf;
einde te maken;

initialisatie
Randomize;

einde.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Memory-eenheid;

interface

Boolean ; Play Game functie: Boolean;

uitvoering

gebruikt
CardGiver;

Boolean ; Play Game functie: Boolean;
var
[ 1 ..50 ] of Char ; Stapel: array [1 .. 50] van Char;
Byte ; Index: Byte;
; IndexB: Byte;
beginnen
1 to 25 do voor de Index: = 1 tot 25 Don
beginnen
( Index * 2 ) ] := TurnCard ( Pred ( Index * 2 ) ) ; Stapel [Pred (index * 2)]: = Turn Card (Pred (index * 2));
* 2 ) ] := TurnCard ( ( Index * 2 ) ) ; Stapel [(index * 2)]: = Turn Card ((index * 2));

CardStack [ Pred ( Index * 2 ) ] = CardStack [ ( Index * 2 ) ] ) then if (stapel [Pred (index * 2) = stapel] [(index * 2)]), dan
beginnen
( Index * 2 ) ] := # 0 ; Stapel [Pred (index * 2)]: = # 0;
* 2 ) ] := # 0 ; Stapel [(index * 2)]: = # 0;
einde te maken;
einde te maken;

1 ; Index: = 1;
-Repeat
CardStack [ Index ] <> # 0 ) then if (stapel [index] <> # 0) then
beginnen
Succ ( Index ) to High ( CardStack ) do voor indexB: = Succ (Index) tot hoog (stapel) doen
beginnen
CardStack [ Index ] = CardStack [ IndexB ] ) then if (stapel [index] = stapel [indexB]), dan
beginnen
) ; Turn Card (index);
; Turn Card (indexB);

] := # 0 ; Stapel [index]: = # 0;
:= # 0 ; Stapel [indexB]: = # 0;

Break;
einde te maken;
einde te maken;
einde te maken;

Succ ( Index ) ; Index: = Succ (Index);
Index > High ( CardStack ) ) ; tot (index> Hoog (stapel));

; Resultaat: = true;
einde te maken;

einde.

Daar had ik de standaard mechanisme Kartenumdreh helaas ben om te lopen, heb ik ook deze weer net nieuwe uitvoering (met inbegrip van automatische menging van de kaarten, en een herziening van de vraag of het spel is echt voorbij). En wat kan ik zeggen? Mijn idee was precies de juiste - en dankzij een kleine optimalisatie (indien een dergelijk paar wordt gevonden bij de eerste detectie is, moet worden beschouwd als een tweede keer) nodig is in sommige gevallen zelfs minder dan 100 kaarten gaat ... ;-)

Update:
Jan Hendrik Burdinski hatte die Idee geäußert, nicht einfach nur alle Karten einmal aufzudecken und dann abzuräumen, sondern schon beim Aufdecken vorher gefundene Partnerkarten mit zu berücksichtigen. Die Idee hat mir so gut gefallen, dass ich sie auch noch umsetzen wollte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit Memory;

interface

function PlayGame : Boolean ;

implementation

uses
CardGiver;

function PlayGame : Boolean ;
var
CardA : Char ;
CardB : Char ;
CardStack : array [ 'A' .. 'Z' ] of Byte ;
Index : Char ;
IndexB : Byte ;
begin
for Index := 'A' to 'Z' do
CardStack [ Index ] := 0 ;

IndexB := 1 ;
while ( IndexB < = 50 ) do
begin
CardA := TurnCard ( IndexB ) ;
if ( CardA <> # 0 ) then // card is valid
begin
if ( ( CardStack [ CardA ] > = 1 ) and ( CardStack [ CardA ] < = 50 ) ) then // card value has been seen before
begin
// flip matching card
TurnCard ( CardStack [ CardA ] ) ;
CardStack [ CardA ] := 255 ;
einde
else
begin
if ( CardStack [ CardA ] = 0 ) then // card value has not been seen before
begin
// save card position
CardStack [ CardA ] := IndexB;

// flip second card
IndexB := Succ ( IndexB ) ;
if ( IndexB < = 50 ) then
begin
CardB := TurnCard ( IndexB ) ;

if ( CardA = CardB ) then // 1st and 2nd card are a pair
CardStack [ CardB ] := 255
else
begin
if ( ( CardStack [ CardB ] > = 1 ) and ( CardStack [ CardB ] < = 50 ) ) then // card value has been seen before
begin
// flip matching cards
TurnCard ( IndexB ) ;
TurnCard ( CardStack [ CardB ] ) ;
CardStack [ CardB ] := 255 ;
einde
else
begin
// save card position
CardStack [ CardB ] := IndexB;
end ;
end ;
end ;
end ;
end ;
end ;

// move to next card
IndexB := Succ ( IndexB ) ;
end ;

Result := true ;
end ;

end .

Wie man sieht, ist die Logik etwas umfangreicher, da nun mehrere Schritte gemacht werden müssen:

  • Die erste Karte wird aufgedeckt.
  • Es wird überprüft, ob das Symbol der ersten Karte schonmal gefunden wurde.
  • Falls ja, wird die Partnerkarte aufgedeckt und von vorne begonnen (ein Pärchen wurd gefunden).
  • Falls nein, wird die Position des Symbols der ersten Karte gespeichert und die zweite Karte aufgedeckt.
  • Es wird überprüft, ob beide Karten identisch sind.
  • Falls ja, wird von vorne begonnen (ein Pärchen wurde gefunden).
  • Falls nein, wird geprüft, ob das Symbol der zweiten Karten schonmal gefunden wurde.
  • Falls ja, wird die zweite Karte (nochmal) und ihre Partnerkarten aufgedeckt und von vorne begonnen (ein Pärchen wurde gefunden).
  • Falls nein, wird die Position des Symbols der zweiten Karte gespeichert und von vorne begonnen.

Der Algorithmus ist meiner Meinung ziemlich performant und benötigt im Schnitt ca. 80 Kartenumdrehungen. Des Best-Case ist, dass die Karten paarweise sortiert sind. Der Worst-Case liegt übrigens dann vor, wenn die Karten so angeordnet sind, dass die Paarfindung immer durch das Umdrehen der zweiten Karte der Runde ausgelöst wird. Also zB in diesem Fall: “AYBACBDCEDFEGFHGIHJIKJLKMLNMONPOQPRQSRTSUTVUWVXWYX”

Spielerische Grüße, Kenny

23 August 2010 ~ 30 Comments | ÄHNLICHE ARTIKEL

Gewinne ein T-Shirt!


Diesen Artikel drucken Print dit artikel
Diesen Artikel vorlesen Lees dit artikel

DAS GEWINNSPIEL WURDE BEREITS BEENDET!

Ich wurde von einem Shopbetreiber hier aus meiner Heimat Berlin angeschrieben und gefragt, ob ich nicht gerne ein paar T-Shirts unter die Leute bringen will. Da ich die Idee großartig fand, möchten Shirt-Selbst-Bedrucken.de und ich euch gerne zu einem Bloggergewinnspiel einladen! : D

Zu gewinnen gibt es:

Die Teilnahme ist ziemlich einfach:

  • Schreibt einen Artikel über das Gewinnspiel
  • Verlinkt die Seite Shirt-Selbst-Bedrucken.de (Linktext egal, nofollow erlaubt)
  • Schickt einen Trackback an diesen Gewinnspiel-Beitrag
  • Die ersten 15 Personen, die teilgenommen haben, bekommen ein T-Shirt! : D

Solltet ihr keinen Trackback schicken können, könnt ihr auch einen Link zu eurem Artikel unten in den Kommentaren hinterlassen. Für die Gewinnerermittlung gilt der Zeitstempel des Trackbacks/des Kommentars hier im Blog. Der Rechtsweg ist ausgeschlossen. Das Gewinnspiel endet am Sonntag, dem 29.08.2010, um Punkt 12:00 Mittags.

Unter allen, die bis zum Gewinnspielende teilgenommen haben, werden zusätzlich die beiden Gutscheine à 20€ verlost. Die Gewinnerziehung erfolgt per Random.org .

Was ihr von der Teilnahme habt?

  • Die ersten 15 Teilnehmer bekommen ein Gratis-T-Shirt : D !
  • Alle Teilnehmer erhalten einen dofollow-Backlink!
  • Alle Teilnehmer haben die Chance auf einen von zwei verlosten 20€ Shirt-Selbst-Bedrucken.de-Einkaufsgutschein!

Was die Gewinner tun müssen, um ihren Gewinn zu erhalten, erkläre ich euch am nächsten Sonntag in einem separaten Artikel. :-)

Viel Spaß beim Gewinnspiel! : D

23 August 2010 ~ 5 Comments | ÄHNLICHE ARTIKEL

sp!!k II: Die Funktionsweise


Diesen Artikel drucken Print dit artikel
Diesen Artikel vorlesen Lees dit artikel

Nachdem ich euch das letzte Mal die Idee von sp!!k vorgestellt habe, wollte ich euch diese Woche erklären, was ich mir überlegt hatte, um die Theorie praktisch umzusetzen. Dabei sollte man wissen, dass mit der Umsetzung mehrere Fliegen mit einer Klappe geschlagen werden sollten:

  • Es sollte möglich sein, dass man seinen eigenen sp!!k-Server betreibt, aber trotzdem andere Nutzer auf diesem Server arbeiten können.
  • Es sollte möglich sein, alle wichtigen, schriftlichen Kommunikationsformen mit sp!!k abzudecken.
  • Der Erzeuger eines Inhaltes sollte stets die Kontrolle über seine eigenen Inhalte haben.
  • Spam sollte, soweit möglich, verhindert werden.

Fangen wir mit der Beschreibung der Lösung an der Wurzel an – den Conversations (engl. für “Gespräche”). Alle Gespräche laufen in sogenannten Konversationssträngen ab – diese bestehen aus einem Ausgangspunkt und beliebig vielen Anhängen (sogenannte Chapter [engl. für "Kapitel"]). Die Anhänge sind dabei selbst auch wieder Konversationsstränge, die Anhänge beinhalten können.

Nehmen wir als Beispiel ein Forum: In so einem Forum können Mitglieder “Threads” anlegen – das sind Themen, die besprochen werden sollen. Ein Thread besteht immer mindestens aus dem Ausgangspost und den Antworten der Threadteilnehmer. Je nach Forensoftware kann entweder nur auf den Ausgangspost geantwortet werden (wodurch alle Antworten automatisch zeitlich geordnet sind), oder aber man kann auf die Antwort eines anderen Threadteilnehmers antworten. Genau dies ist in sp!!k durch die Conversations und die Chapter möglich.
Aber nicht nur dort sind sie möglich. Ein gutes Beispiel sind E-Mail-Konversationen: Dort gibt es die verschiedensten Versuche, Konversationsstränge abzubilden – anhand der Betreffzeile, anhand der Empfängeradressen, anhand von zusätzlichen Header-Informationen… bei sp!!k handelt es sich beim “E-Mailing” einfach um eine Conversation (“Initial-E-Mail”) und beliebig vielen Chapters (“Antworten”).
Bei Chaträumen ist es wieder da gleiche: Irgendjemand eröffnet durch die erste Nachricht den Raum (die Conversation) und alle anderen können Antworten in diesen Raum posten.
Wer jetzt mitgedacht hat, weiß, dass es bei Webseiten natürlich der gleiche Vorgang ist: ein Inhalt (zB ein “Blogeintrag”) plus beliebig viele Kommentare… es ist immer das gleiche Bild. :-)

So eine Conversation (und damit auch die Chapter) zeichnen sich durch ein paar Besonderheiten aus. Zum einen gibt es für jede Conversation eine Art Access Control List , mit der der Initiator bestimmen kann, wer die Konversation lesen darf und wer der Konversation weitere Kapitel hinzufügen darf. Über diesen Mechanismus wird der Unterschied zwischen öffentlichen Inhalten und privaten Inhalten erreicht: Eine “E-Mail” hat also eine sehr strenge ACL, während eine öffentliche “Webseite” eine weitreichende ACL hat. :-)

Zudem besitzt so eine Konversation eine Art Haltbarkeitsdatum – je nach Aufgabe (E-Mail, Webseite oder Chat) muss so ein Inhalt nämlich unterschiedlich lang gültig sein. Die Haltbarkeitsspanne fängt an bei “für immer” und endet bei “bis die Nachricht abgerufen wurde” .

Der nächste Punkt dürfte ein wenig überraschend sein: ALLE Inhalte, die jemand produziert, verbleiben in dem Speicherbereich dieser Person. Dabei ist es egal, ob es sich um eine Webseite, einen Forenbeitrag, eine Chatnachricht oder um eine E-Mail handelt. Es gibt keine Inhalte, die irgendwo anders hin dupliziert werden oder ähnliches.
Dadurch wird gewährleistet, dass jeder sp!!k-Nutzer zu jederzeit bestimmen kann, welche seiner Inhalte abrufbar sind und von wem diese abrufbar sind. Ein netter Nebeneffekt ist, dass Spam-Nachrichten damit (hoffentlich) effektiv unterbunden werden. Der Grund ist, dass ein Spamer jede Spam-Nachricht in seinem eigenen Bereich aufbewahren muss. Sollte sich eine Nachricht also als Spam herausstellen, könnte man soetwas wie eine Blacklist verweden, um andere Empfänger vor dieser Nachricht zu warnen.

Jetzt stellt sich der ein oder andere sicherlich die Frage: “Wenn die Nachrichten beim Absender bleiben, wie weiß der Empfänger dann, dass er sie lesen soll?”

Genau dafür gibt es sogenannte Calls (engl. für “Anrufe”). Sollte ein neues Dokument veröffentlicht werden, das an eine (oder mehrere Personen) addressiert ist, wird den Empfängern ein Call zugesendet, der ihnen mitteilt “hier gibt es eine neue Nachricht, auf die ihr Zugriff habt” . Neben diesen Calls für private Inhalte kann man zudem die Calls öffentlicher Inhalte abonnieren – damit man zB über neue Blogbeiträge informiert wird.

Da öffentliche Inhalte normalerweise nicht per Call verteilt werden, gibt es für sie zwei Catalogs (engl. für “Kataloge”), in denen alle öffentlichen Inhalte indiziert werden. Dabei ist der eine Katalog für lokale Conversations gedacht (Konversationen, die nur Mitglieder des eigenen Servers lesen dürfen) und ein Katalog für globale Konversationen (also Conversations, die auch von Mitgliedern anderer Server gelesen werden dürfen).

Und da wären wir auch schon beim letzten Thema für heute: andere Server. Ich habe mir sp!!k als Mischung zwischen einem zentralen und einem dezentralen Netzwerk vorgestellt. Dafür gibt es einige Gründe: So wird es wahrscheinlich Nutzer geben, die lieber ihren eigenen Server betreiben wollen, um ihre Daten keinem Provider anvertrauen zu müssen. Andere wiederum haben wahrscheinlich garnicht die Technik und das Wissen, um einen Server zu betreiben – die werden dann auf freie oder bezahlte Angebote zurückgreifen. Natürlich sollen trotzdem alle die Möglichkeit haben, miteinander zu kommunizieren, wenn sie das wollen.

Um nun den Zugriff auf die Inhalte eines anderen Servers zu erleichtern, habe ich mir überlegt, dass es das einfachste wäre, jeder Conversation einen eindeutigen Namen zuordnen zu lassen. Die URL-Struktur habe ich mir so vorgestellt:

spiik://Username@Host:Port/Conversation

Wenn solch eine URL nun auf einen fremden Host zeigt, soll sich der eigene Server zu dem fremden Server verbinden, die Identität sicherstellen und anschließend den Inhalt abrufen und an den User weiterleiten. Wie das ganze sicherheitstechnisch ablaufen soll, erkläre ich euch beim nächsten Mal… ;-)

Konversationsgrüße, Kenny

20 August 2010 ~ 1 Comment | ÄHNLICHE ARTIKEL

[Update] Eigene Tweets auf Twitter.com verstecken…


Diesen Artikel drucken Print dit artikel
Diesen Artikel vorlesen Lees dit artikel

Auf Twitter habe ich vorhin spaßeshalber verkündet , dass ich mich selber entfolgen würde, wenn ich es könnte : D . Um nicht darauf warten zu müssen, bis Twitter dieser Bitte nachkommt, habe ich mich selbst kurz dran gesetzt und einen Stil für das Firefox-Addon Stylish erstellt:

1
2
3
4
5
6
7
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("twitter.com") {
.mine {
display: none !important;
}
}

Wie ihr Stylish benutzt, könnt ihr unter anderem in diesem Artikel erfahren. :-)

Update:
Die Idee dazu lieferte übrigens @dqmhose , von dem man seit Kurzem auch seinen neuen Blog bewundern darf. :-)

Versteckte Grüße, Kenny

19 August 2010 ~ 9 Comments | ÄHNLICHE ARTIKEL

[Update] Die Fußgänger-Ampel…


Diesen Artikel drucken Print dit artikel
Diesen Artikel vorlesen Lees dit artikel

Heute während der Autofahrt zur Arbeit musste ich unweigerlich an die Fußgängerampel denken. Und da ich die dabei herausgefundene Erkenntnis so großartig fand, wollte ich ihr gern einen eigenen Artikel widmen… : D

Es hat mich immer schon geärgert, dass bei getrennten Fahrspuren (zB durch eine Verkehrsinsel) eine Straßenseite immer eher grün bekommt als die andere. Und man selber steht natürlich immer auf der falschen Seite und muss den anderen Fußgängern dabei zugucken, wie sie einem entgegen laufen, während man selber noch auf sein Grün wartet. Aber warum ist das so? Warum werden bei einer breiten Straße nicht beide Laufrichtungen gleichzeitig auf grün geschaltet? Die Antwort darauf ist verblüffend! : D

Um die Situation – die damit vermieden wird – mal darzustellen, habe ich eine typische Kreuzung aufgemalt. Die Autos, die von links nach rechts fahren haben gerade rot bekommen und die, die von oben nach unten fahren, kriegen gleich grün. Die Fußgänger dürfen natürlich zuerst loslaufen.
In unserem fiktiven Beispiel dürfen alle Fußgänger gleichzeitig loslaufen. Und da passiert das Unglück! Ein von rechts kommender Autofahrer war bei Gelb noch schnell über die Ampel gefahren und rast nun direkt auf die Fußgänger zu, die bereits auf die Straße gelaufen sind… eine gefährliche Situation!

Die Fußgängerampel

Um genau diese gefährliche Situation zu vermeiden, dürfen die Fußgänger, die aus der Sicht der Autofahrer “hinter der Kreuzung” über Straße laufen, erst später losgehen als die Fußgänger, die “vor der Kreuzung” die Straße überqueren. Dadurch haben alle Autos die Kreuzung bereits verlassen, bevor die gefährdeten Fußgänger die Straße betreten dürfen.

So gesehen also super einfach und super intelligent – aber welcher normale Fußgänger wird schon solchen Gedankengängen folgen, während er sich ärgert, dass er mal wieder länger warten muss, als alle anderen…

Update:
Ich habe die Illustration nochmal neu gemacht: Hoffentlich wird das Problem jetzt deutlicher. Die alte Abbildung sah so aus:

Fußgängerampeln



Verkehrte Grüße, Kenny

18 August 2010 ~ 3 Comments | ÄHNLICHE ARTIKEL

Die Eingetragene Partnerschaft und die Erbschaftssteuer


Diesen Artikel drucken Print dit artikel
Diesen Artikel vorlesen Lees dit artikel

Gisteren was een goede dag voor de homoseksuele wereld, voor het Federale Constitutionele Hof in Karlsruhe heeft een ongelijke behandeling van de geregistreerde partnerschappen met het huwelijk met betrekking tot de successierechten te ongrondwettelijk verklaart. Het hele web buitelen de artikelen op deze beslissing. Ik wilde mezelf de hele tijd, echter, net als het licht vanuit een ander perspectief.

Vroeger zou ik graag kort, maar een artikel van Duitsland Funk punt. Dit was een interview met Dorothee Bär (CSU) - Lid van de Bundestag commissie over familie zaken - gevoerd over de vraag of, dan is de ongelijke behandeling van homoseksuele en heteroseksuele paren in andere gebieden, zoals de inkomstenbelasting wet zou worden afgeschaft.
In mijn ogen is het echt geweldig, hoeveel deze vrouw winden, gewoon: "Ja." Aanbeveling aan niet te doen! In plaats daarvan krijg je uitspraken als "Voor de inkomstenbelasting [...] [zoals wij hebben de] [...] [...], in het regeerakkoord dat wij in burgerlijke partnerregistraties voor koppels te verminderen discriminatie van gehuwde Om [...]." horen!
Ten eerste hebben we gezien hebben sinds de verkiezingen dat het regeerakkoord is het papier niet waard waarop het geschreven is, en de andere is een vermindering van de achterstand is niet hetzelfde als de gelijkheid van de twee vormen van het huwelijk! Maar kijk op het artikel in de meest complete van een ... Politikergebrabbel beste!

Maar nu mijn eigenlijke commentaar op de uitspraak en de reactie op het web. Ten eerste, ik denk dat het enerzijds geweldig om te Karlsruhe zie de onrechtvaardigheid in het erfrecht nu uit nietig is verklaard, aan de andere kant is het grijpen verontrustend dat opnieuw (je) de laatste beschermende barrière Grondwet was de Duitser die, om zijn grenzen aan de wetgevers blijkt dat! Ik vind het onaanvaardbaar dat de politici die het nodige om dit anti-grondwettelijke bepalingen, nog steeds in functie en worden beloond voor dergelijke mislukkingen voort te zetten. Het werk, energie en het geld wordt ingelegd in de reactie en correctie van deze ongrondwettelijke wetten kunnen - met de juiste screening - worden gebruikt voor veel meer nuttige dingen!

Afgezien van deze nieuwe blunder van onze politici, Ik vind het beangstigend, als de bevolking dit besluit neemt voor een deel. Zoals zal worden zeuren over dat, zodat de instelling van het huwelijk wordt vernietigd en de vernietiging van de Duitse vaderland feed is verstrekt. Wat een dom gelul! Homoseksuele paren betalen als de pensioenfondsen in hoe elke kinderloos, heteroseksueel paar ook - en, net als bij onvruchtbaar zijn, heteroseksuele paren zijn ook homoseksuele paren die wanhopig om kinderen te adopteren, te wijten aan de strenge wettelijke positie kan niet of slechts met een enorme inspanning.
De mensen die zeggen dat het zou helpen Ehevorteile Famlienentwicklung zijn verkeerd! Als je wilde, dan zouden we gehuwden (en geregistreerde partnerschappen) met kinderen in het huishouden te helpen bij laag-en niet-paren (en geregistreerde partnerschappen) in het algemeen. Die zou een schoen van!
Maar dan zou je denken opgeleide mensen terug: het huwelijk (en de eigentragene partnerschap) voor de samenleving doet meer dan alleen nieuwe belastingplichtigen gebruik in de wereld. De partners in deze relatie zijn wettelijk verplicht een voor de ander. Indien leiden tot boetes, zowel stick met hun gezamenlijke prive-eigendom, indien een van beide ziek, de ander betaalt ook voor de kosten van op en op en onmiddellijk. Het gevaar dat wordt geleverd als een afhankelijke, niet-gehuwde persoon in een verpleeghuis (en veroorzaken enorme kosten) is waarschijnlijk aanzienlijk lager dan voor een persoon die alleen woont. Alleen de juridische verplichtingen van de twee partners voor elkaar genoeg is, moet het huwelijk (en het geregistreerd partnerschap) te voelen als subsidiabel.

Tot nu toe, ik zou zeker geen run logische rechtvaardiging voor het niet weerlegbaar op de weg, waarom kunnen homoseksuele en heteroseksuele paren veheiratete niet dezelfde rechten en plichten.

Fiscaal vriendelijke groet, Kenny

| ÄHNLICHE ARTIKEL 15/08/2010 ~ 5 Reacties | VERWANTE ARTIKELEN

Sp! k I: Het Idee


Diesen Artikel drucken Print dit artikel
Lees dit artikel Lees dit artikel

Na al deze ideeën in een deel, voor de jaren die met me mee, dacht ik bij mezelf vandaag: Waarom zou ik niet alleen het weer schrijven? Misschien is dat moedigt me zo eens aan alle in actie. :-)

Laten we beginnen aan het front: Al voor mijn studies had ik denken, "Waarom hebben we zo veel kanalen van communicatie?". Hoe heb e-mails, forums, chats persoonlijke (Messenger), groeps-chat (zoals bijv. een IRC), statisch home pages, blogs enzovoort, enzovoort. Al deze toepassingen (al dan niet een web-applicatie of niet) echt maar een taak: wij importeren gewoon de persoon of groep P N en B, een bericht kan een antwoord zijn A. Het is altijd hetzelfde spel!

Waarom doe je niet uit krijgen, van dit alles - is lijkt to make - een single kanaal dat alle vereiste fundamentele functies omvat? Stel je voor, stel je eens voor het enorme potentieel!

Ik zou graag eens een overzicht te geven een voorbeeld: Laten we zeggen dat u de website bezoekt van een auto reparatiewerkplaats. Daar vindt u het adres te vinden, de geaccepteerde merken en openingstijden. Maar hoe zit het nu, als je een speciale auto - een oldtimer, bijvoorbeeld? Zou je niet omwille van het bezoek is er om te weten of de winkel wordt geleverd, bepaalde delen op alle?
In een dergelijk geval, zou u waarschijnlijk op zoek naar de e-mail adres of telefoonnummer van de workshop. Maar goed, misschien is er geen telefoonnummer vermeld en e-mailing een te lang duurt? Dan alleen de Go zou worden overgelaten.
In een volledig geïntegreerde oplossing die we kunnen in plaats daarvan slechts een soort van instant message schrijf direct naar de site exploitanten - dit is online, hij kon ze lezen en direct reageren. We moeten dus niet alleen ingewikkeld het zoeken naar contact informatie.

Een ander geval: u hebt gelezen in een forum een bijdrage van een individu en wil om te bespreken op een snellere manier om met de bijdrage van die persoon. Nu de affiches ofwel heeft neergelegd zijn contacten in zijn profiel, of dat u moet blijven in forums umherdümpeln snelheid.
Met een geïntegreerde oplossing die we kunnen in plaats daarvan stuurt elk lid een instant message forums. Indien nodig kan een merk de top van een prive-Entertainment Group entertainment - en als het probleem is opgelost - om het gesprek weer beschikbaar te maken als forum posts.

U denkt dat klinkt ingewikkeld? In feite is het helemaal niet. Als je kijkt naar de huidige standaard communicatiekanalen Staring zie, besef je dat er in feite vier soorten van hen:

  • publiek, permanent beschikbare berichten (website, blog, forum)
  • publiek, tijdelijk niet beschikbaar berichten (groeps-chat)
  • particuliere, permanent beschikbare berichten (e-mail)
  • prive, op korte termijn beschikbaar Nachtichten (Messenger)

Ik weet dat er al verschillende pogingen ondernomen om een of andere manier met elkaar te verbinden alles. Voor dergelijke oplossingen kunnen worden in de e-mail programma dan, zie bijvoorbeeld, die nu met behulp van de Instant Messenger online wanneer u een instant message sturen naar een offline contact, wordt het bericht verzonden per post en ga zo maar door.

De vraag die zich aandient voor mij in een dergelijke aanpak is de vraag of het wenselijk is om de verschillende protocollen wilt u gewoon een of andere manier met elkaar te verbinden? Zoals we hebben gezien, Google heeft met het product, "Wave" is de beproefde - en mislukt.
Ik denk dat het zinvoller om de ontwikkeling van de kern functionaliteit van volledig nieuwe en voorheen gebruikte protocollen (zoals e-mail) alleen te worden gebruikt als een soort van externe interface.

De werktitel is uit de manier waarop de hele SP! K (spiik, spreken Engels. Speak!). Als men kan denken aan iets beter, natuurlijk, kan hij verslag te allen tijde : D . Ik denk dat in het volgende artikel zal ik uitleggen hoe ik mijn geplande ontwikkeling had en wat ik me had voorgesteld functies over.

Opmerkingen over het idee dat ik zou zeer gelukkig zijn! :-)

Fantasierijk groet, Kenny

188
no-www.org extra-www.org

Database: 59 queries in een paar seconden 0.8460.846