neue Rubrik news (Mesirii, 25. Aug 1999, 09:48:25):
Hallo,
da die Zeitung so oft leer ist, und Hate keine Zeit hat, sollen in dieser
Rubrik unregelmaessig ein paar News gepostet werden, wer sie nicht lesen
will kann die Rubrik ja abbestellen.

Mesi, news-Poster

-----------------------------------------------------------------------------



Pech f?|r Notebook-Ruber (Taragon, 25. Aug 1999, 09:53:19):

Magere Beute haben die drei bewaffneten Mnner gemacht, die am Samstag einen   
angeblich mit 1450 Compaq-Notebooks beladenen Transporter |berfallen hatten.
Mittlerweile steht fest, dass den Rubern statt kompletter Notebooks           
lediglich Gehuse und Displays in die Hnde gefallen sind. Die erbeuteten
Notebook-Teile sollten nach Recherchen von The Register nach Schottland       
transportiert werden. Dort sollten sie in einer Fabrik des taiwanesischen
Unternehmens Inventec zusammengebaut, mit Festplatten und Tastaturen          
ausger|stet und spter unter Compaq-Label verkauft werden.   Compaq teilte
inzwischen mit, die erbeuteten Teile seien zum Zeitpunkt des \berfalls
vollstndig im Besitz von Inventec gewesen. Diese Erklrung ist Compaq         
offenbar nicht leicht gefallen. Bisher hatten Compaq-Manager immer wieder
beteuert, ihr Unternehmen baue Notebooks ausschliewiederlich in eigener Regie.
Oliver Ehlebracht (em/c't)                                                    

-----------------------------------------------------------------------------



Re: neue Rubrik news (Bambulko, 25. Aug 1999, 10:43:07):
~#! rn=Mesirii rt=935574505 rg=news
~#! tid=935574505
Oh nein, gibt es wirklich Leute hier, die so oft hier sind, das sie jetzt auch
noch ihre nachrichten hier lesen muessen? 
Ist ja traurig....

Bambulko

-----------------------------------------------------------------------------



Re:   buecher.de uebernimmt Internet-Antiquariat (Grimmborn, 25. Aug 1999, 16:22:51):
~#! rn=Mesirii rt=935581453 rg=news
~#! tid=935581453
Entschuldige, aber die ganzen planlos zusammenabgeschriebenen Meldungen
koennen doch sicher nicht Sinn dieser Rubrik sein?

Grimmborn der Verleger

-----------------------------------------------------------------------------



Re: Re:   buecher.de uebernimmt Internet-Antiquariat (Patryn, 25. Aug 1999, 16:26:10):
~#! rn=Grimmborn rt=935598171 rg=news
~#! tid=935581453
ich fand die meldungen zum teil sehr interessant. die rubrik war eh leer,
also such was anderes, worueber du dich ereifern kannst.

------
patryn

-----------------------------------------------------------------------------



Re^3:   buecher.de uebernimmt Internet-Antiquariat (Calimera, 25. Aug 1999, 16:26:42):
~#! rn=Patryn rt=935598370 rg=news
~#! tid=935581453
ich fand es eindeutig zu viel

-----------------------------------------------------------------------------



Re^4:   buecher.de uebernimmt Internet-Antiquariat (Wurzel, 25. Aug 1999, 18:43:13):
~#! rn=Calimera rt=935598402 rg=news
~#! tid=935581453
ich find es gut. normal komm ich eh kaum dazu zeitung zu lesen. wenn sich
schon jemand die muehe macht, find ich das toll. wem es nicht passt, kann
die rubrik ja abbestellen oder sich alternativ in die ecke stellen und heulen.

wurzel

-----------------------------------------------------------------------------



Re^5:   buecher.de uebernimmt Internet-Antiquariat (Heromcfly, 25. Aug 1999, 18:45:31):
~#! rn=Wurzel rt=935606593 rg=news
~#! tid=935581453

mit nn durchscrollen is aber   bequemer als abbestellen und auf die art und
weise isses ne menge scroll 
-P


-----------------------------------------------------------------------------



Re: Also doch: Muecken riechen leckeres Blut aus der Ferne (Lug, 25. Aug 1999, 22:52:47):
~#! rn=Mesirii rt=935577932 rg=news
~#! tid=935577932
JAAAAAA,

genau, sag ich auch immer, aber keiner glaubt es einem. Die Biester fressen
nur mich auf...
Lug

-----------------------------------------------------------------------------



Re: Re: Also doch: Muecken riechen leckeres Blut aus der Ferne (Grimmborn, 26. Aug 1999, 11:44:36):
~#! rn=Lug rt=935621567 rg=news
~#! tid=935577932
Was soll das sein? Etwa ein Beleg fuer die These dass Muecken Feinschmecker
sind?

GdA

-----------------------------------------------------------------------------



Re: Re:   buecher.de uebernimmt Internet-Antiquariat (Mesirii, 26. Aug 1999, 11:47:30):
~#! rn=Grimmborn rt=935598171 rg=news
~#! tid=935581453
Doch das sind, sie ;)
siehe Artikel 1 ;)
Mesi

-----------------------------------------------------------------------------



Re^3:   buecher.de uebernimmt Internet-Antiquariat (Grimmborn, 26. Aug 1999, 11:54:15):
~#! rn=Mesirii rt=935668050 rg=news
~#! tid=935581453
In dem Fall gibts immer noch die Rubrik dw-news.

GdA

-----------------------------------------------------------------------------



Re: Illegaler Holzeinschlag bedroht Indonesiens Orang Utans (Hobo, 27. Aug 1999, 08:53:50):
~#! rn=News rt=935668332 rg=news
~#! tid=935668332
Ich kenn diesen Dr. Olaf Elicki ja nicht, aber...
Orang Utans wuerde ich jetzt nicht unbedingt als "pussierlich" bezeichnen.

Hmm, wie waer's generell mal, wenn man neben dem Autor auch noch erfahren
koennte, aus welcher Veroeffentlichung die Meldung stammt? Wenn's sowas wie
BILD-online gibt, wuesste ich das naemlich gern, wenn ich Schmaarn davon lese
:)

  Hobo

-----------------------------------------------------------------------------



Re: Re: Illegaler Holzeinschlag bedroht Indonesiens Orang Utans (Mesirii, 27. Aug 1999, 11:17:42):
~#! rn=Hobo rt=935744030 rg=news
~#! tid=935668332
Hallo Hobo,
die news sind vom Wissenschaftsdienst Online.
http://www.wissenschaft.de/bdw/wdo/wdoframe2.hbs
Mesi

-----------------------------------------------------------------------------



Neues Medium ? (Firehawk, 27. Aug 1999, 19:10:04):
Ich hab grade gelesen, dass Sharp eine Disc entwickelt hat, auf die 200
Gigabyte passen.
Damit hat sie 40-fache Speicherkapazitaet einer DVD.
Man rechnet mit Verfuegbarkeit entsprechender Geraete in zwei Jahren (na mal
sehen).

Der entsprechende Artikel ist an folgender Adresse zu finden:
http://www.next-generation.com/jsmid/news/7474.html


-----------------------------------------------------------------------------



  Bedarf an IT-Fachkraeften waechst (News, 14. Sep 1999, 06:06:00):
   Die Nachfrage IT-Fachkraeften hat im ersten Quartal 1999 um 27 Prozent
   zugenommen. Zu diesem Ergebnis kommt eine [1]Stellenmarktanalyse des
   Muenchner Weiterbildungsunternehmens CDI. Fuer diese Untersuchung wertet
   CDI regelmaessig den Stellenteil in 30 deutschen Tageszeitungen und 4
   Fachzeitschriften aus. Insgesamt wurden in den ersten drei Monaten des
   Jahres knapp 29.000 Stellenangebote fuer IT-Fachkraefte gefunden.
   Besonders gefragt waren Programmierer (30 Prozent) vor
   Systemfachleuten (20 Prozent) und IT-Beratern (18 Prozent). Drei
   Fuenftel der Angebote kamen direkt aus der IT-Branche, 11 Prozent aus
   der Industrie und 5 Prozent von Banken und Versicherungen.
   
   Mit einer Stichprobe hat CDI auch die Anforderungen der Arbeitgeber
   ermittelt. Demnach waren Programmierer, die C++, C oder Java
   beherrschen, besonders begehrt. Bei Netzwerkern werden vor allem
   tiefere Kenntnisse von Windows NT und UNIX verlangt; bei Jobs im
   Datenbankbereich sind Erfahrungen mit Oracle fuer ein Drittel aller
   Stellen Bedingung.
   
   Am groessten war die Zunahme an Stellenanzeigen fuer Internet- und
   Multimedia-Spezialisten. Waehrend im Vergleichszeitraum des Vorjahres
   880 Anzeigen vermerkt wurden, waren es im ersten Vierteljahr dieses
   Jahres bereits 1300. Hier haben Programmierer und Techniker (28
   Prozent) die besten Chancen, gefolgt von Marketing-Experten (19
   Prozent) und Screen-Designern (18 Prozent). 38 Prozent der Stellen
   wurden von Multimedia-Agenturen ausgeschrieben, gefolgt von
   IT-Unternehmen (18 Prozent) und Werbeagenturen (10 Prozent).
   ([2]anm/c't)
   

-----------------------------------------------------------------------------



  Internet ab 3,8 Pfennig pro Minute (News, 14. Sep 1999, 06:06:02):
   Die [3]Networking People GmbH in Augsburg bietet ab sofort den
   Internet-Zugang zwischen 21 und 5 Uhr fuer 3,8 Pfennig pro Minute an.
   Der Provider rechnet die Onlinezeit sekundengenau ab; die Einwahl
   erfolgt ueber eine kostenlose 0800-Nummer. Networking People nennt
   diesen Tarif "Internet-By-Call", verlangt jedoch eine
   Einrichtungsgebuehr von 14,95 Mark. 16 MegaByte Speicherplatz fuer die
   eigene Homepage sowie 5 E-Mail-Adressen sind in dem Paket enthalten.
   
   Fuer die Zeit zwischen 18 und 21 Uhr sowie von 5 bis 8 Uhr verlangt der
   Provider 4,75 Pfennig je Minute; tagsueber 5,5 Pfennig. Die
   Vertragslaufzeit betraegt mindestens einen Monat.
   
   Noch guenstiger surfen kann man im Einzugsbereich eines der 84
   Einwahlpunkte von [4]Viag Interkom, die jedoch nicht flaechendeckend
   zum Ortstarif erreichbar sind. Ueber diesen Provider bietet neben
   [5]DellNet inzwischen auch [6]Sony einen "kostenlosen" Internet-Zugang
   an. Durch Optionstarife der deutschen Telekom kostet so die
   Onlineminute abends nur 2,1 Pfennig. ([7]ll/c't)
   

-----------------------------------------------------------------------------



  Kauf dir eine Palm-Aktie (News, 14. Sep 1999, 06:06:03):
   [8]3Com gibt den Organizer-Zweig Palm Computing ab. Anfang des
   kommenden Jahres will der Konzern die erfolgreiche Sparte ausgliedern
   und als sparates Unternehmen an die Boerse bringen. 3Com will in sich
   in Zukunft nur noch auf sein Stammgeschaeft der Netzwerkloesungen
   konzentrieren.
   
   Mit fuenf Millionen verkaufter Organizer (Pilot, PalmPilot, Palm
   III/IIIx/V/VII) ist 3Com Marktfuehrer im gesamten Bereich der Personal
   Digital Assistants. Ueber Lizenzierungen und OEM-Vertraege will Palm
   Computing in Zukunft das hauseigene Betriebssystem PalmOS auch bei
   anderen Herstellern platzieren.
   
   Als neues Mitglied des "Board of Directors" von Palm Computing steht
   nach Angaben von 3Com der ehemalige Netscape-Chef James L. Barksdale
   fest. ([9]ts/c't)
   

-----------------------------------------------------------------------------



  IBM nimmt Sun-Server ins Visier (News, 14. Sep 1999, 06:06:04):
   IBM kuendigt eine neue Serie von Unix-basierenden Servern fuer
   Internet-Dienste an. Nach den NT-basierenden [10]Mini-Servern fuer
   Internet-Provider ist das schon die zweite Kampfansage an Marktfuehrer
   Sun innerhalb weniger Wochen.
   
   Das Spektrum der Server reicht von der RS/6000 B50 Pizzaschachtel
   (Codename Pizzazz), die sich in Racks montieren laesst, bis hin zu
   Boliden wie der RS/6000 S80, die mit bis zu 24 PowerPC-Prozessoren in
   Kupfertechnologie bestueckt werden kann. Alle Server laufen mit IBMs
   eigener Unix-Variante AIX 4.3.3. Die Pizzaschachtel soll sich
   wahlweise auch unter Linux betreiben lassen. Ausserdem will IBM Anfang
   naechsten Jahres Zusatzsoftware als Open Source bereitstellen, die es
   erlaubt, Linux-Applikationen unter AIX auszufuehren. ([11]ju/c't)
   

-----------------------------------------------------------------------------



  Microsofts Plan fuer die Post-PC-Aera (News, 14. Sep 1999, 06:06:06):
   Microsoft will in Zukunft staerker auf Web-basierende Software setzen.
   Das berichtet das Wall Street Journal in seiner aktuellen Ausgabe. Die
   neue Software-Strategie, die intern "Windows DNA 2000" genannt wird,
   soll heute in San Francisco der Oeffentlichkeit vorgestellt werden. Das
   Konzept beinhaltet unter anderem ein Identifikations- und
   Bezahlungs-System fuer das Internet. Ueber seine MSN-Website will
   Microsoft Software-Entwicklern Web-basierende Komponenten zur
   Verfuegung stellen. Langfristig soll die gesamte Produktpalette vom
   Einzelplatzrechner auf den mit dem Internet verbundenen PC umgestellt
   werden.
   
   Das Konzept beruht auf einem internen Memo, das Bill Gates im
   vergangenen Jahr geschrieben hat. Die Ankuendigung zum jetzigen
   Zeitpunkt duerfte allerdings mehr mit den Angebot des Konkurrenten Sun
   zu tun haben, der vor kurzem erklaerte, er wolle fuer beliebige Clients
   [12]Office-Software uebers Netz zur Verfuegung stellen. Unmittelbar nach
   dem Coup hatte auch Microsoft fuer die naehere Zukunft Web-basierende
   Office-Dienste [13]angekuendigt. ([14]wst/c't)
   

-----------------------------------------------------------------------------



  Zeuge Gates: "Bizarr" und "unglaubwuerdig" (News, 14. Sep 1999, 06:06:08):
   Mit ungewoehnlich scharfen Worten hat das US-Justizministerium die
   letzte Runde im Kartellprozess mit Microsoft eingelaeutet. In einer
   Zusammenfassung des bisherigen Prozessverlaufs attackierte die Justiz
   vor allem Microsoft-Boss Bill Gates. Seine Rolle bei
   aussergerichtlichen Zeugenaussagen sei "bizarr" gewesen und seine
   Einlassungen "schlicht unglaubwuerdig". Trotz der Dementis von Gates
   sei erwiesen, dass Microsoft dem Rivalen Netscape erheblichen Schaden
   zugefuegt habe.
   
   Dem haelt Microsoft entgegen, dass von einem Schaden keine Rede sein
   koenne. Netscape sei fuer rund 10 Milliarden Dollar an AOL verkauft
   worden. AOL uebe nach der Vereinigung mit Netscape weiterhin
   erheblichen Wettbewerbsdruck auf Microsoft aus. Netscape wurde und
   werde nicht am Vertrieb des rivalisierenden Browsers gehindert;
   Verbrauchern seien deshalb auch keine Nachteile entstanden.
   
   Redmond habe seine Sicht der Dinge waehrend des Prozessverlaufs
   mehrfach revidiert, konterte das Justizministerium. "Nachdem
   [Microsoft] anfaenglich behauptete, man habe das Opfer nicht
   erschossen, sagte man spaeter, alle seien an der Erschiessung beteiligt
   gewesen und das Opfer waere sowieso gestorben. Und nun sagt Microsoft,
   das Opfer ist voellig unverletzt." Durch die kostenlose Weitergabe des
   Internet Explorer sei Netscape zwar nicht am Vertrieb, aber am Verkauf
   seiner Software gehindert worden. Vom geschenkten Explorer wuerden
   Verbraucher ueberdies nur kurzfristig profitieren; langfristig muessten
   sie mit dem Verlust der freien Produktwahl bezahlen. ([15]em/c't)
   

-----------------------------------------------------------------------------



  Surfen per Kabel (News, 14. Sep 1999, 06:06:09):
   Gleich zwei Kabelnetz-Betreiber wollen ihren Kunden Internet-Zugaenge
   ueber das Fernsehkabel anbieten. Die Mainzer [16]PrimaCom will am
   Mittwoch in Leipzig den regulaeren Betrieb starten. Unter 100 Mark im
   Monat soll der Internet-Zugang mit bis zu 768 kBit/s fuer Kabelkunden
   im Leipziger Stadtteil Paunsdorf kosten. Unklar bleibt noch, ob neben
   dieser Pauschale weitere Kosten auf die Anwender zukommen. Genaue
   Preise und weitere Konditionen will der Anbieter erst am Mittwoch
   bekannt geben.
   
   Noch nicht ganz so weit ist [17]Ost-Tel-Com aus Steinpleis bei
   Zwickau. Vorerst koennen nur wenige Testbenutzer per Kabelmodem im
   Internet surfen. In etwa acht Wochen soll der Testbetrieb
   abgeschlossen sein. Wer in den umliegenden Orten Werdau, Fraureuth
   oder Leubnitz wohnt, kann sich an dem Pilotbetrieb noch beteiligen. Zu
   den Preisen fuer den Internet-Zugang haelt sich Ost-Tel-Com aber vorerst
   noch bedeckt.
   
   ([18]ll/c't)
   

-----------------------------------------------------------------------------



  AMD antwortet auf Intels Preisoffensive (News, 14. Sep 1999, 06:06:10):
   Nachdem Intel die Prozessorpreise im [19]Low-Cost- und
   [20]Mobile-Bereich massiv gesenkt hat, antwortet AMD wie ueblich
   ebenfalls mit Preissenkungen bei den K6-Prozessoren. Der K6-2/475 wird
   um 25 Prozent auf nunmehr 114 Dollar (OEM-Peis ab 1000 Stueck)
   verbilligt, die Preise der anderen K6-2-Versionen fallen um 17 Prozent
   (K6-2/450 MHz auf 93 Dollar) beziehungsweise 11 Prozent (K6-2/400 auf
   73 Dollar). Der Preis des erst kuerzlich eingefuehrten
   MHz-Spitzenreiters K6-2/500 bleibt bei 167 Dollar. Etwas moderater
   faellt die Reduzierung beim K6-III aus, der 400-MHz-Chip wird nun fuer
   173 Dollar - 6 Prozent guenstiger als zuvor - angeboten.
   
   Die Athlon-Preise bleiben vorerst konstant. Hier erwartet man
   allerdings Bewegung, wenn schnellere Athlon-Versionen - vermutlich im
   Oktober - eingefuehrt werden. ([21]as/c't)
   

-----------------------------------------------------------------------------



  Playstation-2-Praesentation via Internet (News, 14. Sep 1999, 06:06:12):
   Am kommenden Freitag startet die Tokyo Game Show (TGS), auf der Sony
   erstmals seine neue Spielekonsole "Playstation-2" vorstellt. Wer nicht
   die Zeit und das Geld hat, sich vor Ort von den Qualitaeten der neuen
   128-Bit-Konsole zu ueberzeugen, kann dies via Internet tun. Waehrend der
   Dauer der Messe laesst sich die Praesentation der Konsole und der
   dazugehoerigen Spiele ueber die [22]Sony-WebCam verfolgen. Die
   Veranstaltung endet am Sonntag. Wegen der Zeitdifferenz von acht
   Stunden duerfte der Besuch der Website hierzulande aber nur zwischen 1
   Uhr und 10 Uhr morgens interessant sein.
   
   Erst vor wenigen Tagen hatte Sony den Verkaufsstart der neuen Konsole
   um mehrere Monate nach hinten verschoben: Die Playstation-2 soll nun
   erst am 4. Maerz in Japan auf den Markt kommen werden. Der Europastart
   wird daher aller Voraussicht nach nicht vor Ende 2000 stattfinden.
   Einen Grund fuer die Verzoegerung hatte Sony-Unterhaltungschef Ken
   Kutaragi nicht genannt. ([23]chw/c't)
   

-----------------------------------------------------------------------------



  Motorola: 10 Milliarden fuer Surfbox-Hersteller (News, 14. Sep 1999, 06:06:13):
   Motorola plant die Uebernahme von General Instrument, dem fuehrenden
   US-Hersteller fuer TV-Surfboxen. Das Unternehmen aus Pennsylvania ist
   mit dem Chiphersteller Motorola durch langjaehrige Geschaeftsbeziehungen
   verbunden. General Instrument gehoert auch zu den groessten Produzenten
   von Kabel-Modems, die von Motorola mit Chips ausgestattet werden. Nach
   Informationen des Wall Street Journal soll die Uebernahme im Zuge eines
   Aktientauschs im Wert von 10 Milliarden US-Dollar erfolgen. Demnach
   erhalten Aktionaere pro General-Instrument-Wertpapier etwas mehr als
   eine halbe Motorola-Aktie.
   
   Mit dem Zukauf koennte sich Motorola nach Ansicht von Beobachtern eine
   Goldgrube erschliessen. Die TV-Kabel gelten als Basis kuenftiger
   breitbandiger Angebote und Surfboxen als deren verlaengerter Arm ins
   Internet und zu neuen digitalen Diensten. General Instrument wird
   darueber hinaus nachgesagt, die Firma unterhalte spezielle Beziehungen
   zur Kabel-TV-Industrie. Das Unternehmen hatte in der Vergangenheit
   grosse Auftraggeber mit der Aussicht auf Firmenbeteiligungen angelockt.
   ([24]em/c't)
   

-----------------------------------------------------------------------------



  Ungar erpresste Scientology mit "Dianetika"-Pornosite (News, 14. Sep 1999, 06:06:14):
   Ein Ungar hat die Scientology-Organisation monatelang mit einer
   pornografischen Website zu erpressen versucht. Ein Budapester
   Bezirksgericht verurteilte den 23-Jaehrigen dafuer nun zu einer
   einjaehrigen Bewaehrungsstrafe, berichtete die ungarische Tageszeitung
   "Magyar Nemzet" am Montag. Der Ungar hatte mehrere E- Mails an die
   Scientology-Zentrale in Los Angeles geschrieben, in denen er fuer die
   Einstellung der Web-Seite zunaechst 25 000, dann 30 000 Dollar
   forderte. Dabei gab er seine Kontonummer an, sodass die Polizei ihn
   rasch ermitteln konnte.
   
   Der Erpresser hatte unter der Adresse www.dianetika.com eine Web-Seite
   im Internet eingerichtet, auf der er seit November 1998 Pornofotos von
   ungarischen Schoenheiten veroeffentlichte. Adresse und Aufmachung waren
   so gewaehlt, dass sich die Seite leicht und irrtuemlicherweise der
   Scientology-Organisation zuordnen liess. Das Hauptwerk ihres Gruenders
   Ron Hubbard und die darin verkuendete umstrittene Lehre heissen
   "Dianetik". Scientology bezeichnet sich selbst als "Kirche".
   ([25]cp/c't)
   

-----------------------------------------------------------------------------



  "Feature freeze" fuer neuen Linux-Kernel (News, 14. Sep 1999, 06:06:16):
   Mit dem Erscheinen des Entwicklerkernels 2.3.18 hat Linus Torvalds
   einen "feature freeze" fuer den kommenden Anwenderkernel 2.4
   angekuendigt. Bis zum Erscheinen von Linux 2.4 wird es keine
   konzeptionellen Aenderungen am Linux-Kernel mehr geben, kleinere
   Modifikationen (von Bugfixes bis zu neuen Treibern, die sich ohne
   Aenderungen an anderen Kernelteilen integrieren lassen) sind allerdings
   noch moeglich. Der "code freeze" -- ein Schnappschuss des aktuellen
   Entwicklungsstandes, der Grundlage des neuen Anwenderkernels ist --
   soll in etwa zwei Monaten erfolgen; damit koennte Linux 2.4 noch dieses
   Jahr erscheinen.
   
   Zu den wichtigsten [26]Neuerungen gegenueber der aktuellen Version 2.2
   gehoeren deutlich verbesserte Multiprozessorfaehigkeiten, USB-, I2O- und
   Parallelportunterstuetzung sowie ein grundlegend ueberarbeitetes Routing
   im Kernel. Ausserdem sind eine Reihe neuer Treiber (unter anderem fuer
   Sound-, Video- und ISDN-Karten sowie verschiedene USB-Geraete)
   hinzugekommen. Insgesamt wird der Schritt von Linux 2.2 auf 2.4 jedoch
   weniger gross ausfallen als der Uebergang vom Kernel 2.0 zur Version 2.2
   Anfang dieses Jahres. ([27]odi/c't)
   

-----------------------------------------------------------------------------



  Erster zertifizierter R/3-Benchmark auf Linux (News, 14. Sep 1999, 06:06:18):
   Siemens hat den ersten SAP-zertifizierten R/3-Standard-Benchmark auf
   Linux erfolgreich absolviert. Auf einer Primergy 870/40 erreichte das
   Heidelberger Siemens SAP Competence Center mit 241 SD- (Sales &
   Distribution) Benchmark-Benutzern auf einer Zentraleinheit den
   hoechsten Wert, der bisher fuer diese R/3-Version auf
   Vierfach-Intel-Systemen gemessenen wurde. Das System verfuegte ueber
   vier Xeon-III-CPUs mit 2 MByte L2-Cache und lief unter dem
   Linux-Kernel 2.2.11 mit der Datenbank SAP DB 6.2.10 und der
   R/3-Version 4.0B.
   
   Damit belegt diese Konfiguration derzeit Platz 12 auf der bei IDEAS
   gefuehrten[28]Top-20-Liste von R/3-Benchmark-Ergebnissen. Siemens hatte
   schon kurz nach der [29]Ankuendigung, Linux-basierende
   R/3-Komplettsysteme anzubieten, [30]erste Performance-Messungen von
   R/3 auf Linux durchgefuehrt, bei denen sich derartige Ergebnisse
   bereits andeuteten. ([31]avr/iX)
   
   Microsoft raet: Active Scripting abschalten!
   In Reaktion auf einen Bericht des Bulgaren Georgi Guninski, der --
   [32]wieder einmal -- auf eine neue Sicherheitsluecke im Internet
   Explorer 5 (IE5) hinweist, raet Microsoft in einem
   [33]Sicherheitsbulletin dazu, Active Scripting abzuschalten, um sich
   zu schuetzen bis ein Patch zur Verfuegung steht. Russ Cooper, der
   Moderator der Sicherheitsmailingliste [34]NTBugtraq, kommentiert: "Ein
   derart drastischer Vorschlag ... koennte bedeuten, dass sie [Microsoft]
   sich endlich entschlossen haben, all diesen unsicheren
   Scripting-Geschichten ... ein Ende zu machen." So recht daran glauben
   mag aber nicht einmal Cooper selbst.
   
   Auch Netscape sah sich schon genoetigt, die Notbremse zu ziehen und
   seinen Kunden zum Abschalten von [35]Java und [36]JavaScript zu raten.
   c't empfiehlt auf Grund der immer wieder auftretenden
   Sicherheitsprobleme mit jeglicher Art von aktiven Inhalten, Java,
   Javascript, ActiveX usw. prinzipiell abzuschalten und nur bei
   ausgewaehlten vertrauenswuerdigen Websites in Ausnahmefaellen zuzulassen.
   
   Der neue IE-Bug erlaubt einem Angreifer unter bestimmten Umstaenden,
   per WWW ueber die Explorer-Funktion "ImportExportFavorites" Dateien auf
   die heimische Festplatte zu schreiben und darueber Systemkommandos
   auszufuehren. Damit waere dann jegliche Aktion moeglich, die auch der
   rechtmaessige Anwender veranlassen koennte. ([37]nl/c't)
   

-----------------------------------------------------------------------------



  Andreessen sagt AOL Bye-Bye (News, 14. Sep 1999, 06:06:20):
   Netscape-Mitbegruender Marc Andreessen gibt seinen Posten als
   Chefentwickler bei AOL auf. Wie das Unternehmen am Freitag mitteilte,
   erfolgt die Trennung einvernehmlich. Andreessen werde AOL weiter als
   Berater zur Verfuegung stehen. "Marc wollte mehr Zeit damit verbringen,
   mit Start-Up-Firmen zu arbeiten. Wir freuen uns, dass unsere neue
   Vereinbarung ihm das in einer Weise ermoeglicht, die unsere
   Investmentziele voranbringt", kommentierte AOL-Chef Steve Case.
   
   Die Rolle eines Spitzenmanagers, die ihm nach dem [38]Kauf von
   Netscape durch AOL zugefallen war, lag Andreessen offenbar nicht:
   "Tausende Leute zu fuehren, das ist nicht gerade seine starke Seite,"
   zitiert [39]Wired einen Freund des 28-jaehrigen. Beobachter aus der
   Wirtschaft zeigten sich wenig ueberrascht, sondern eher erleichtert
   ueber den Abgang des Web-Pioniers. Die Position des Chefentwicklers bei
   AOL uebernimmt William Raduchel, bisher Chief Strategy Officer von Sun
   Microsystems. AOL und Sun sind durch einen strategischen
   Kooperationsvertrag miteinander verbunden. ([40]cp/c't)
   

-----------------------------------------------------------------------------



  US Army wechselt von Windows NT zu Mac OS (News, 14. Sep 1999, 06:06:21):
   Geplagt von wiederholten Hackerangriffen hat die [41]US Army
   ueberraschende Konsequenzen gezogen: Ihre Websites laufen nicht laenger
   auf NT-basierenden Servern, sondern auf WebStar unter Mac OS.
   Systemadministrator Christopher Unger erklaerte dazu laut [42]ArmyLink
   News, die Army habe ihre Websites auf eine sicherere Plattform
   umgestellt. Er bezog sich dabei auf eine aeltere Aussage des Word Wide
   Web Consortium (W3C), wonach Mac OS weniger Angriffspunkte bietet,
   weil es keine Kommandozeile hat und kein Remote Login erlaubt.
   ([43]cp/c't)
   

-----------------------------------------------------------------------------



  Neuer Biochip prueft Lebensmittel (News, 14. Sep 1999, 06:06:22):
   Mit einem neuen Diagnoseverfahren koennen Lebensmittel- oder Blutproben
   gleichzeitig auf mehrere Dutzend Inhaltstoffe untersucht werden. Das
   System beruht auf einem Biochip, dessen Sensoroberflaeche mit Hunderten
   von Fluessigkeitstroepfchen, sogenannten "Dots" bestueckt ist. Diese
   wenige millionstel Millimeter kleinen Tropfen beinhalten die
   Analysemolekuele. Damit koenne beispielsweise fremdes Erbgut in
   gentechnisch-veraenderten Lebensmitteln festgestellt werden, aber auch
   Eiweissstoffe, teilte das Institut fuer Mikro- und Informationstechnik
   in Villingen-Schwenningen am Freitag mit.
   
   Kernstueck ist ein Dosierkopf, der aehnlich wie ein Tintenstrahldrucker
   die Nachweissubstanzen in winzigen Mengen auf einen Chip bringen kann.
   Jede reagiert individuell nach dem Schluessel-Schloss-System. Falls ein
   gesuchter Stoff an "sein" Analysemolekuel gebunden hat, kann er mit
   Fluoreszenz-Farbstoffen nachgewiesen werden. Aus dem spezifischem
   Muster auf dem Biochip laesst sich die Substanz identifizieren. Auch
   Tumorforscher und Gerichtsmediziner koennen von dem Verfahren namens
   "Topspot" profitieren. Die Untersuchung dauert den Angaben zufolge
   materialabhaengig zwischen vier und acht Stunden. Hubert Bernauer von
   Freiburger Firma Biochip Technologies, die an der Entwicklung
   beteiligt war, rechnet fuer das naechste Jahr mit der Markteinfuehrung.
   ([44]cp/c't)
   

-----------------------------------------------------------------------------



  Zukunft von Global One ungewiss (News, 14. Sep 1999, 06:06:24):
   Die Zukunft des internationalen Telekommunikationsverbundes Global One
   ist weiterhin in der Schwebe. Auf einem Telekom-Tag in New York sprach
   der Vorstandsvorsitzende Ron Sommer von einem nicht optimalen
   Verhaeltnis in der Allianz. Er hoffe, dass die unbefriedigende
   Situation bis zum Jahresende geloest werde.
   
   Global One ist das Gemeinschaftsunternehmen der Deutschen Telekom,
   France Telecom und der US-Firma Sprint Corp. Mit France Telecom hatte
   sich das Bonner Unternehmen durch ihren Versuch, Telecom Italia zu
   uebernehmen, zerstritten. Global One machte 1998 1,2 Milliarden
   US-Dollar Umsatz und steckt seit Gruendung 1996 in den roten Zahlen.
   
   In der Branche wird seit einigen Monaten ueber verschiedene Optionen in
   dem Buendnis spekuliert. Presseberichte, wonach die France Telecom
   angeblich ausscheiden wuerde und die Telekom und Sprint den Verbund
   weiterfuehren moechten, wurden von den Franzosen dementiert. Fuer moeglich
   gehalten wird auch ein Rueckzug der Telekom aus Global One und Sprint,
   an dem der Telefonriese mit zehn Prozent beteiligt ist. So wurden
   Aussagen Sommers interpretiert, wonach die urspruengliche Beteiligung
   an Sprint von 1,4 Milliarden Dollar inzwischen acht Milliarden wert
   sind. ([45]cp/c't)
   

-----------------------------------------------------------------------------



  Kunde kann sich gegen Kreditkartenmissbrauch wehren (News, 14. Sep 1999, 06:06:26):
   Wer seine Kreditkartennummer im Internet angibt und sich anschliessend
   ueber falsche Abbuchungen wundert, ist rechtlich auf der sicheren
   Seite. Darauf hat die Rechtsanwaltskammer Koblenz am Freitag
   hingewiesen. "Wer nur seine Kreditkartennummer angibt, ist nicht dafuer
   verantwortlich, wenn durch einen Missbrauch Schaeden entstehen." Die
   herkoemmlichen Allgemeinen Geschaeftsbedigungen der
   Kreditkartenunternehmen saehen vor, dass die Kunden nicht hafteten,
   wenn die Zahlung beleglos -- also ohne Unterschrift -- und ohne
   Geheimzahl erfolgt sei. Spaetestens bis 4. Juni 2000 werde dieser
   Erstattungsanspruch auch gesetzlich festgelegt sein. Der Gesetzgeber
   muesse bis dahin eine EU-Richtlinie umsetzen.
   
   Die Rechtsanwaelte forderten die Verbraucher auf, zu Unrecht abgebuchte
   Summen bei den Kreditkartenunternehmen zu beanstanden. Das Geld muesse
   den Kunden dann wieder gutgeschrieben werden. Sollte sich das
   Kreditinstitut jedoch weigern, koenne der Kunde seine Ansprueche mit
   Hilfe eines Anwaltes durchzusetzen, betonte die Kammer. (dpa)
   ([46]cp/c't)
   

-----------------------------------------------------------------------------



  EnBW bleibt bei Internet per Stromkabel (News, 14. Sep 1999, 06:06:28):
   Die Energie Baden-Wuerttemberg AG (EnBW) will ihr "Digital
   Powerline"-Projekt fortfuehren. Der angekuendigte [47]Ausstieg von
   Nor.web aus der Entwicklung der Datenuebertragung ueber Stromnetze habe
   bei EnBW fuer Verwunderung gesorgt, heisst es in einer Pressemitteilung
   des viertgroessten Energieversorgungsunternehmens in Deutschland. Die
   EnBW sehe keinen Anlass, ihre bisherige Linie zu korrigieren und werde
   deshalb ihre Feldtests fortfuehren. "Der Rueckzug von Nor.web ist fuer
   uns nicht nachvollziehbar, die Begruendungen schon gar nicht", sagte
   EnBW-Chef Gerhard Goll. Die bisherigen Tests haetten gezeigt, dass
   grosses Interesse bei Kunden und Providern an der Powerline-Technik
   vorliege. Auch die bisherigen Analysen zur Wirtschaftlichkeit gaeben
   keinen Anlass zu einem Ausstieg. EnBW plane, die Weiterentwicklung zu
   forcieren. 18 Feldversuche in zehn Laendern haetten die Einsatzfaehigkeit
   nachgewiesen. Digital Powerline ist ein Projekt von EnBW und tesion,
   einer Tochter von EnBW und Swisscom. 40 Nutzer beteiligen sich seit
   Dezember 1998 an einem Feldversuch in Herrenberg, bei dem Daten und
   Internetdienste ueber das Stromnetz zum heimischen PC gelangen.
   
   ([48]anm/c't)
   

-----------------------------------------------------------------------------



  Windows 9x: Sicherheitsupdate fuer Telnet (News, 14. Sep 1999, 06:06:29):
   Der Telnet-Client von Windows 9x hat (auch in der Zweitausgabe von
   Windows 98) ein Sicherheitsproblem, dass ueber einen so genannten
   Buffer-Overflow-Angriff unter Umstaenden das Ausfuehren boesartigen
   Programmcodes erlaubt. Microsoft hat in seinem [49]Sicherheitsbulletin
   99-033 einen Patch angekuendigt, der aber vorerst nur ein
   englischsprachiges Telnet-Programm liefert. Die Verfuegbarkeit
   internationalisierter Versionen ist ohne weiteres nur ueber die
   Windows-Update-Funktion zu ermitteln. Dort soll der Patch in Kuerze
   erscheinen. ([50]nl/c't)
   

-----------------------------------------------------------------------------



  Kritik an Windows-2000-Sicherheit (News, 14. Sep 1999, 06:06:32):
   David Litchfield hat in einigen E-Mails an die
   [51]Sicherheitsmailingliste Bugtraq Risiken der COM-Architektur
   (Component Object Model) in Windows 2000 angesprochen. COM liefert
   unter anderem die Grundlage fuer Microsofts ActiveX-Technologie.
   Litchfield wagte die Prognose, dass man die groessten Sicherheitsloecher
   in Windows 2000 bei COM und [52]DCOM (Distributed COM) finden wird.
   
   Um seine These zu untermauern, fuehrte er als Beispiel an, wie ein
   Angreifer ueber VBScript- oder ActiveX-Anweisungen in einer E-Mail oder
   Webseite einen Telnet-Server auf dem Rechner des Opfers starten
   koennte. Mit Outlook Express genuege es bereits, die Betreff-Zeile in
   der Mailuebersicht zu selektieren, um den riskanten Code und damit den
   Telnet-Server zu starten. Eine Warnmeldung an den Benutzer soll laut
   Litchfield nicht verhindern, dass dieses Programm arbeitet, auch wenn
   der Benutzer "Abbruch" waehlt.
   
   Ein laufender Telnet-Server waere allerdings auf Einzelplatzrechnern
   mit der jetzigen Windows-2000-Beta eine universelle Hintertuer: Der
   Name des einzigen Benutzers ist ein autorisierter
   Administrator-Account und nach der Standardinstallation nicht durch
   ein Passwort geschuetzt. Damit hat ein Angreifer ueber Telnet
   umfassenden Zugriff auf den Computer.
   
   Unmittelbaren Grund zum Alarm gibt es zwar nicht: Schliesslich befindet
   sich die aktuelle Windows-2000-Version im Beta-Stadium und der Sinn
   eines umfassenden Betatests ist ja gerade, Fehler aufzudecken.
   Andererseits stellt sich die Frage, ob nicht durch COM und die
   "Internet-Programme" (ActiveX, VBScript usw.) schon ein
   konzeptionelles Sicherheitsrisiko besteht, das spaeter nahezu
   zwangslaeufig zu Problemen fuehren wird. ([53]nl/c't)
   

-----------------------------------------------------------------------------



Gibt es bald eine Pille gegen Schwerhoerigkeit? Fehlende Botenstoffe im (News, 14. Sep 1999, 06:06:44):

   Medizin:
   
   Gibt es bald eine Pille gegen Schwerhoerigkeit? Fehlende Botenstoffe im
   Gehirn
   
   (Meldung vom 10.9.1999)
   
   Schwerhoerigkeit im Alter kann auch durch eine nachlassende Produktion
   von Neurotransmittern verursacht werden. Wissenschaftler des
   Max-Planck-Instituts fuer Neurobiologie in Martinsried haben einen ganz
   neuen Aspekt der Schwerhoerigkeit im Alter erforscht. Sie entdeckten,
   dass die Nervenzellen, die die Signale vom Ohr ins Gehirn weiterleiten,
   mit zunehmendem Alter weniger Botenstoffe - sogenannte
   Neurotransmitter - produzieren. Das beeintraechtigt die Qualitaet der
   Weiterleitung der Nervenimpulse, die von den Haarzellen des Innenohrs
   an das Gehirn geschickt werden.
   
   Bislang glaubte man, dass das Absterben solcher Haarzellen im Ohr die
   Wahrnehmung von Geraeuschen beeintraechtigt. Diese Zellen uebersetzen die
   Schallschwingungen der Luft in Nervensignale.
   
   Mit den neuen Erkenntnissen ueber Ursachen der Schwerhoerigkeit ergeben
   sich ganz neue Ansaetze zur Therapie. Mit Medikamenten koennte die
   Produktion der Neurotransmitter gesteigert werden und Schwerhoerigkeit
   behandelt werden.
   
   [Quelle: Dr. Michael Wochner]

-----------------------------------------------------------------------------



Junge Forscher-Generation zunehmend gegen Tierversuche (News, 14. Sep 1999, 06:06:48):

   Forschungspolitik:
   
   Junge Forscher-Generation zunehmend gegen Tierversuche 
   
   (Meldung vom 10.9.1999)
   
   Auf einer [1]Tagung ueber Tierversuche und Alternativen, die kuerzlich
   in Bologna stattfand, haben 900 Wissenschaftler einen Drei-Punkte-Plan
   zur Reduzierung von Tierversuchen bei der Medikamenten- und
   Kosmetik-Erprobung verabschiedet.
   
   Der Drei-Punkte-Plan beinhaltet die sogenannten "drei R's": 1)
   Reduction: Weniger Tiere verwenden dadurch, dass effizientere Methoden
   entwickelt werden oder solche Methoden angewandt werden, bei denen
   keine Tierversuche notwendig sind.
   
   2) Refinement [Verfeinerung]: "Humanere" Methoden anwenden, bei denen
   der Schmerz der Tiere minimiert wird.
   
   3) Replacement [Ersetzung]: Voellig neue Methoden entwickeln, die
   keinerlei Tierversuche erfordern.
   
   Tierschuetzern geht dieser Plan noch nicht weit genug. Sie warfen
   waehrend der Demonstrationen, die die Tagung begleiteten, den Forschern
   vor, noch viel zu viele Kompromisse zu machen.
   
   Tatsaechlich ist es so, dass laut Statistik z.B. in Gross-Britannien die
   Tierversuche seit 1970 etwa um die Haelfte zurueckgegangen sind.
   Allerdings ist eine andere Zahl in diese Statistik nicht eingeflossen,
   naemlich die Zahl jener Tiere, die in den Experimenten erst entstanden
   sind, vor allem transgene Tiere. Man schaetzt, dass allein im vorigen
   Jahr etwa 5 Mio. Tiere getoetet worden sind, die "nutzlos" waren, weil
   das genetische Experiment nicht geklappt hatte, oder weil sie das
   falsche Gewicht oder das falsche Geschlecht hatten.
   
   Dennoch ist Tagungsleiter Michael Balls optimistisch: "Es gibt einen
   Mentalitaetswandel, und immer mehr Leute kommen zu der Einsicht, dass
   die drei R's fuer alle ein Gewinn sind. Sie sind gut fuer die tiere und
   gut fuer die Wissenschaft," sagte er gegenueber BBC News.
   
   Weiteres zum Thema Tierversuche [2]hier
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



War Erfinder des Aspirins nicht Felix Hoffmann, sondern ein in (News, 14. Sep 1999, 06:06:52):

   Wissenschaftsgeschichte:
   
   War Erfinder des Aspirins nicht Felix Hoffmann, sondern ein in
   Deutschland verfolgter Jude? 
   
   (Meldung vom 10.9.1999)
   
   Das weltberuehmte Medikament Asprin, vor 100 Jahren in den Bayer-Werken
   entwickelt, hat als geistigen Vater vermutlich nicht, wie bisher
   angenommen, Felix Hoffmann, sondern Arthur Eichengruen - einem
   deutschen Juden, der wegen des zunehmenden Antisemitismus in der
   Nazi-Zeit nicht mehr dazu kam, seinen Urheberrechtsanspruch geltend zu
   machen.
   
   Diese These vertritt Walter Sneader, Pharmaziehistoriker von
   Strathclyde University in Glasgow (Gross-Britannien), der sie in dieser
   Woche bei der Jahrestagung der Royal Society of Chemists in Edinburgh
   vorstellt.
   
   Aufmerksam geworden auf diese Geschichte war Walter Sneader, als er in
   der "History of Chemical Technology" aus dem Jahre 1934 einen
   romantisierenden Bericht von Hoffmanns Aspirin-Erfindung las. Er
   erforschte die Umstaende genauer und fand heraus, dass Hoffmann einer
   von 10 Mitarbeitern war, die am Ende des vorigen Jahrhunderts unter
   Arthur Eichengruen bei Bayer arbeiteten. Er fand ueberdies Hinweise
   darauf, dass Eichengruen mit einer Forschung befasst war, die zur
   Entwicklung von Aspirin fuehren sollte.
   
   Dass Hoffmann 1934 die Erfindung des Asprins fuer sich beansprucht hat,
   duerfte Eichengruen nicht entgangen sein, doch zu dieser Zeit hatte
   Eichengruen natuerlich andere Sorgen. Er hoffte, im aufkommenden
   Antisemitismus seine Firma Eichengruen Chemische Werke, die er 1908
   nach seinem im Guten erfolgten Ausscheiden bei Bayer gegruendet hatte,
   zu retten. Es gelang ihm nicht. Bald darauf wurde er in das KZ
   Theresienstadt deportiert. Er ueberlebte es, doch er konnte erst kurz
   vor seinem Tod 1949 in der damals unbedeutenden Zeitschrift
   "Pharmazie" seinen Anspruch auf die Entwicklung des Aspirin erheben.
   
   Die Bayer AG haelt der These Sneaders entgegen, dass Hoffmann bereits
   1897 seine Erfindung des Aspirins in einem Werk-Journal beschrieben
   hatte und 1899 als Inhaber des US-Patents eingetragen wurde. Daher
   haette Eichengruen schon in jenen fruehen Jahren die Urheberschaft
   Hoffmanns bestreiten koennen. "Wir haetten Eichengruen die Erfindung
   zugesprochen. Warum nicht?" sagte Bayer-Sprecher Hartmut Alsfasser
   gegenueber Nando Times. "Er hat auch 47 andere Patente."
   
   Weiteres zum Thema Aspirin [1]hier.
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



War Papst Pius XII ein Antisemit? (News, 14. Sep 1999, 06:06:54):

   Geschichte:
   
   War Papst Pius XII ein Antisemit?
   
   (Meldung vom 10.9.1999)
   
   Papst Pius XII (1876-1958, Papst 1939-58) war von Kirchenhistorikern
   schon immer vorgeworfen worden, sich waehrend des Dritten Reiches nicht
   gerade ruehmlich verhalten zu haben. Er habe, so der Vorwurf, zu lange
   zu Hitlers Krieg und zur Deportation der Juden geschwiegen. In
   Deutschland ist sein Pontifikat besonders nach dem Erscheinen von Rolf
   Hochhuths Drama "Der Stellvertreter"(1963) diskutiert worden.
   
   John Cornwell, ein britischer Kirchenhistoriker und
   Wissenschaftsjournalist, vertritt jetzt in seinem neuen Buch "Hitler's
   Pope: The Secret History of Pius XII" eine sehr viel brisantere These:
   Pius XII habe nicht nur geschwiegen, sondern Hilfe fuer die Juden sogar
   auch dann versagt, als diese fuer ihn gefahrlos moeglich gewesen waere.
   
   Obwohl er waehrend des 2. Weltkriegs von einer bevorstehenden
   Deportation von 1000 Juden aus Rom gewusst habe, habe er es
   unterlassen, die betroffenen Menschen zu warnen. Die Deportation
   ueberlebten nur 15 Personen.
   
   In bisher geheimen Vatikan-Akten hat Cornwell Briefe und Unterlagen
   gefunden, aus denen er den Schluss zieht, dass die unterlassene
   Hilfeleistung von Pius XII nicht nur auf menschliche Schwaeche oder
   Feigheit begruendet war, sondern auf einen ausgepraegten Antisemitismus.
   
   Der Vatikan hatte Pius XII bisher immer in Schutz genommen und darauf
   verwiesen, dass er hinter den Kulissen sehr viel fuer bedrohte Juden
   getan habe und auch tausende gerettet habe.
   
   Bibliographischer Hinweis: John Cornwell: Hitler's Pope: The Secret
   History of Pius XII. Viking Press 1999, ersch. voraussichtl. Oktober
   99.
   
   Weiteres zum Thema Vatikan [1]hier.
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



Rechtzeitig vorbeugen: Jetzt zur Grippeschutzimpfung (News, 14. Sep 1999, 06:06:56):

   Gesundheit:
   
   Rechtzeitig vorbeugen: Jetzt zur Grippeschutzimpfung 
   
   (Meldung vom 10.9.1999)
   
   Die Arbeitsgemeinschaft Influenza empfiehlt sich bereits im September
   gegen Grippe impfen zu lassen. Das gilt besonders fuer aeltere Menschen
   und solche, die an chronischen Krankheiten leiden. Der Impfschutz
   beginnt zwei Wochen nach Impfung und haelt etwa ein halbes Jahr an.
   
   Bei der Grippewelle im vergangenen Winter waren 7 bis 8 Millionen
   Menschen an Grippe erkrankt, 40000 so schwer, dass ein
   Krankenhausaufenthalt notwendig war. Die Grippeschutzimpfung wird von
   den Kassen bezahlt.
   
   Weitere Meldungen zu Thema Grippe finden Sie [1]hier.
   
   [Quelle: Dr. Michael Wochner]

-----------------------------------------------------------------------------



Biologische Ursachen der Drogensucht. "Auch andere Faktoren (News, 14. Sep 1999, 06:07:00):

   Psychologie:
   
   Biologische Ursachen der Drogensucht. "Auch andere Faktoren
   notwendig."
   
   (Meldung vom 10.9.1999)
   
   Hat Drogensucht eher soziale oder biologische Ursachen?
   US-Wissenschaftler entdeckten einen Mechanismus im Hirn, der zumindest
   unterschiedliche Reaktionen auf Rauschmittel erklaeren kann. Demnach
   kann die Anzahl der Dopamin-D2-Rezeptoren im Hirn den Ausschlag geben:
   Je weniger dieser Rezeptoren vorhanden waren, desto eher mochte die
   Versuchsperson den Effekt einer leichten Droge, dem Stimulanzmittel
   Methylphenidat. Personen mit hoeherer Rezeptorzahl, an welche
   normalerweise der Botenstoff Dopamin "andockt", beschrieben den Effekt
   des Mittels eher als unangenehm, berichtet das Fachblatt "American
   Journal of Psychiatry".
   
   Der chemische Botenstoff Dopamin regt im Hirn besondere Zentren an,
   die die Motivation, das Verhalten und die Lernfaehigkeit steuern. Rund
   eine halbe Million Dopaminzellen im Stammhirn produzieren den Stoff
   auf bestimmte Reize hin, etwa bei ueberraschender Belohnung - doch auch
   Drogen wie Heroin oder Kokain aktivieren eine Ausschuettung.
   
   Fuer die Neigung zum Rausch und zur Abhaengigkeit ist aber offenbar
   nicht die Ausschuettung verantwortlich, sondern die Zahl der Rezeptoren
   im Hirn, die das ausgeschuettete Dopamin auch aufnehmen koennen. "Diese
   Erkenntnisse unterstuetzen die Theorie, dass die Hirnchemie manche
   Menschen fuer Drogenmissbrauch anfaellig macht", so Dr. Alan I. Leshner,
   Direktor des [1]National Institute on Drug Abuse (NIDA), das die
   Studie finanzierte. "Die biologischen Sachverhalte zu verstehen, hilft
   uns herauszufinden, weshalb manche Menschen besonders anfaellig sind,
   und liefert uns neue moegliche Ziele fuer Vorbeugung und Behandlung."
   
   Das Team um Dr. Nora Volkow vom Brookhaven National Laboratory und der
   [2]State University of New York, Stony Brook, fuehrte den Nachweis:
   Dreiundzwanzig Versuchspersonen, nicht drogenabhaengig, bekamen das
   Rauschmittel Methylphenidat und sollten seine Effekte beschreiben.
   Ausserdem zaehlte man in ihren Hirnen, mit Hilfe der sogenannten
   Positronenemissions-Tomographie (PET), die Dopamin-D2-Rezeptoren.
   
   Zwoelf der Teilnehmer beschrieben Methylphenidat als angenehm, weil die
   Substanz sie gluecklich machte bzw. ihre Stimmung verbesserte. Neun der
   Maenner beschrieben den Effekt als unangenehm, da es sie aergerlich oder
   argwoehnisch machte - nur zwei Teilnehmer empfanden das Mittel als
   neutral. Die PET-Hirnuntersuchung zeigte einen eindeutigen
   Zusammenhang zwischen Effekt und Rezeptorzahl: Bei der ersten Gruppe
   lag die Zahl niedriger als bei der zweiten.
   
   Allerdings warnen die Wissenschaftler davor, diesen Zusammenhang
   ueberzubewerten. So Dr. Volkow: "Die Tatsache, dass die Teilnehmer, die
   Methylphenidat mochten, zwar niedrige Rezeptorzahlen aufwiesen, aber
   trotzdem keine Drogen missbrauchen, zeigt, dass fuer eine echte
   Anfaelligkeit fuer Drogenmissbrauch auch andere Faktoren notwendig sind"
   
   [Quelle: Doerte Sasse]

-----------------------------------------------------------------------------



Neue Hinweise fuer Wasser auf Jupiter-Mond Europa (News, 14. Sep 1999, 06:07:04):

   Astronomie allg.:
   
   Neue Hinweise fuer Wasser auf Jupiter-Mond Europa
   
   (Meldung vom 10.9.1999)
   
   Neue Bilder von der Raumsonde [1]Galileo zeigen, dass die Oberflaeche
   des Jupiter-Mondes [2]Europa vor etwa 50 Millionen Jahren teilweise
   geschmolzen war.
   
   Auf den Bildern sind zwei rostfarbene, 80 Kilometer grosse Gebiete zu
   sehen, die "Thera" und "Thrace" genannt worden sind. Die Oberflaeche
   des Mondes sieht an diesen Stellen unordentlich aus, als ob hier
   Eisschollen aufeinandergeprallt waeren.
   
   Die Region "Thera" liegt leicht unter dem Niveau der umgebenden
   Ebenen. Offensichtlich ist die Region irgendwann in der Vergangenheit
   kollabiert. Aus der Zahl der Krater, die Europa bedecken, laesst sich
   schliessen, dass das vor etwa 50 Millionen Jahren - also im Verhaeltnis
   zum Alter des Mondes recht kurzer Zeit - geschehen ist.
   
   Eine Wissenschaftlerin der Universitaet von Arizona vergleicht zurzeit
   Aufnahmen der Voyager-Sonde mit Galileo-Bildern, um festzustellen, ob
   sich die Oberflaeche von Europa in den letzten 20 Jahren veraendert hat.
   Aus anderen Galileo-Aufnahmen laesst sich schliessen, dass die
   Oberflaeche von Europa an einigen Stellen salzig ist. Wahrscheinlich
   gibt es zum Beispiel in der Thrace-Region Magnesiumsulfat, auch als
   Bittersalz bekannt. Da salziges Wasser bei niedrigeren Temperaturen
   schmilzt als Suesswasser, koennte das erklaeren, warum Thrace anscheinend
   frueher einmal ueberschwemmt teilweise aufgeschmolzen wurde.
   
   Die braune Farbe, vermuten Forscher, koennte von Eisen- oder
   Schwefelverbindungen stammen, da Bittersalz nicht braun aussieht.
   Aufschluesse darueber, ob es unter der Oberflaeche fluessiges Wasser geben
   koennte, kann die Kristallform des Eises geben: Wenn Eis aus fluessigem
   Wasser entsteht, bildet sich das sogenannte hexagonale Eis, genau wie
   auf der Erde. Bei kaelteren Temperaturen entstehen amorphes oder
   kubisches Eis.
   
   Falls auf der Oberflaeche von Europa hexagonales Eis vorhanden ist,
   muesste um den Mond ein Halo zu sehen sein, wenn das Sonnenlicht in
   einem bestimmten Winkel auf die Oberflaeche trifft.
   
   Robert Carlson und Kollegen von Jet Propulsion Laboratory der Nasa
   haben versucht, den Halo mit dem [3]"Near Infrared Mapping
   Spektrometer" von Galileo bei einem Vorbeiflug an Europa aufzunehmen.
   Noch analysieren die Wissenschaftler die Daten. Allerdings wird
   hexagonales Eis durch energiereiche Strahlung, wie sie sich im
   Magnetfeld des Jupiter ansammelt, in amorphes Eis umgewandelt.
   
   Die Chancen, tatsaechlich hexagonales Eis zu finden, haengen davon ab,
   wie lange es schon her ist, dass Europa geschmolzen war.
   
   Weiteres zum Thema Europa finden Sie [4]hier.
   
   [Quelle: Ute Kehse und Nasa]

-----------------------------------------------------------------------------



Neue Art von Materie erzeugt. (Quanten-Degeneration bei Fermionen) (News, 14. Sep 1999, 06:07:06):

   Physik allg.:
   
   Neue Art von Materie erzeugt. (Quanten-Degeneration bei Fermionen) 
   
   (Meldung vom 10.9.1999)
   
   Zwei Wissenschaftlern ist es gelungen, eine neue, eigenartige Form der
   Materie zu erzeugen: Brian DeMarco und D. Jin von der [1]University of
   Colorado kuehlten Kalium-Molekuele so stark ab, dass sie nicht mehr den
   Regeln der klassischen Physik, sondern denen der Quantenphysik
   gehorchten. Die Forscher schreiben im Wissenschaftsmagazin [2]Science,
   dass die Molekuele ein Verhalten namens Quanten-Degeneration zeigten,
   eine Vorstufe zur Fermi-Kondensation. Elementarteilchen gehoeren
   entweder zu den Bosonen oder den Fermionen. Waehrend Bosonen alle den
   gleichen Energiezustand annehmen koennen, ist das bei den Fermionen, zu
   denen Protonen, Neutronen, Elektronen und auch die Kalium-Molekuele
   zaehlen, nicht moeglich.
   
   1995 gelang es, ein sogenanntes Bose-Einstein-Kondensat zu erzeugen -
   Bosonen im gleichen Energiezustand bei niedrigen Temperaturen. Daraus
   entwickelten Wissenschaftler spaeter die ersten Atomlaser. Auch ein
   Fermi-Kondensat, dem die Physiker mit der Quantendegeneration jetzt
   ein Stueck naeher gekommen sind, schreiben DeMarco und Jin, liesse sich
   fuer Atomlaser benutzen, oder auch, um Wechselwirkungen zwischen Atomen
   zu untersuchen.
   
   Weiteres zum Thema Atomlaser finden Sie [3]hier. Quelle: Science
   
   [Quelle: Ute Kehse]

-----------------------------------------------------------------------------



Ist das Sonnensystem aus winzigen Glaspartikeln entstanden? (News, 14. Sep 1999, 06:07:08):

   Astronomie allg.:
   
   Ist das Sonnensystem aus winzigen Glaspartikeln entstanden?
   
   (Meldung vom 10.9.1999)
   
   Der Staub, aus dem sich das Sonnensystem bildete, koennte zu einem
   erheblichen Teil aus winzigen Glaspartikeln bestanden haben. Wie John
   Bradley vom Georgia Institute of Technology in Atlanta und Kollegen im
   Fachjournal [1]Science berichten, haben die sogenannten GEMS-Partikel
   (Glass with Embedded Metal and Sulfide) ein aehnliches Spektrum wie die
   Kometen Halley und Hale-Bopp, wie Silikate in den aeusseren Schalen
   mancher jungen Sterne und wie Silikate in interstellaren Wolken.
   
   Die Partikel sind wenige Milliardstel Meter gross und bestehen aus
   Silikat, das Metall und Sulfid eingelagert hat. Wissenschaftler haben
   solche Partikel in der Stratosphaere, der zweituntersten Schicht der
   Atmosphaere, eingesammelt. Sie stammen von Kometen und Asteroiden.
   
   Bradley und seine Kollegen bestrahlten die Partikel mit intensiver
   Synchrotron-Strahlung, um ihre Spektrum zu messen. Die Wissenschaftler
   vermuten, dass solche Silikate auch in der Wolke vorhanden waren, aus
   der das Sonnensystem entstand. Weiteres ueber die Entstehung des
   Sonnensystems finden Sie [2]hier.
   
   [Quelle: Ute Kehse und Science]

-----------------------------------------------------------------------------



Endlich nach hinten schauen: Genetiker schaffen Froesche mit drei Augen (News, 14. Sep 1999, 06:07:10):

   Gentechnik:
   
   Endlich nach hinten schauen: Genetiker schaffen Froesche mit drei Augen
   
   (Meldung vom 13.9.1999)
   
   Der Entwicklungsbiologe Richard Lang und seine Kollegen vom New Yorker
   University Medical Center stellen in der Oktoberausgabe von
   "Development" Froesche vor, die ein drittes Auge besitzen.
   
   Die Wissenschaftler hatten die RNA, die den Bauplan fuer das Protein
   Pax6 enthaelt, in die Eizellen der Tiere eingefuegt. Bei 10% der
   Kaulquappen bildete sich daraufhin am Hinterkopf ein zusaetzliches
   Auge. Zwar war dieses Auge etwas kleiner als die normalen Augen,
   verfuegte aber ueber alle anatomischen Merkmale und hatte eine
   Nervenverbindung zum Gehirn.
   
   Die Forscher wollten mit diesem Experiment beweisen, dass Pax6 ein
   sogenanntes "Master-Gen" ist. Solche Gene steuern die Aktivitaet vieler
   anderer Gene, die an der Entwicklung eines Organs - wie zB des Auges -
   beteiligt sind. ([1] Abstract)
   
   Mehr zum Thema "Master-Gen" finden sie [2]hier.
   
   [Quelle: Michael Wochner]

-----------------------------------------------------------------------------



Liess ein Gammablitz die Erde entstehen? (News, 14. Sep 1999, 06:07:12):

   Astrophysik:
   
   Liess ein Gammablitz die Erde entstehen?
   
   (Meldung vom 13.9.1999)
   
   Unser Sonnensystem koennte doch ungewoehnlicher sein als bisher gedacht:
   Zwei Astrophysiker aus Irland vermuten, dass ein Gammablitz im Umkreis
   von 300 Lichtjahren die Bildung der Planeten beguenstigt haben koennte.
   Wie das Wissenschaftsmagazin [1]New Scientist berichtet, haben Brian
   McBreen und Lorraine Hanlon vom University College in Dublin die
   Theorie aufgestellt, dass die energiereiche Roentgen- und
   Gammastrahlung, die bei einem Gammablitz entsteht, den Staub in der
   protoplanetaren Wolke zu sogenannten Chondren verschmolzen hat. (Mehr
   zu [2]Gammablitz.)
   
   Chondren sind glasartige Gesteinskuegelchen, die reich an Eisen und
   Silikaten sind. Primitive Steinmeteoriten, die sogenannten Chondrite,
   bestehen zum grossen Teil aus den Chondren. In einem Artikel, der fuer
   die Fachzeitschrift "Astronomy and Astrophysics" angenommen wurde,
   berichten McBreen und Hanlon, dass ein Gammablitz in der Naehe des
   jungen Sonnensystems genug Energie geliefert haette, um den Staub zu
   fluessigen Tropfen zu schmelzen, die dann hinterher zu den Chondren
   abgekuehlt waeren. Aus diesen dichteren Partikeln haetten sich die
   Planeten leichter bilden koennen als aus Staub.
   
   Bislang war es den Astrophysikern ein Raetsel, wie sich die Chondren
   geformt haben. Ein unwahrscheinliches Ereignis wie ein Gammablitz in
   der Naehe als Ursache wuerde unser Sonnensystem allerdings zu etwas
   Besonderem machen.
   
   Mehr zur Entstehung des Sonnensystems finden Sie [3]hier.
   
   [Quelle: Ute Kehse und New Scientist]

-----------------------------------------------------------------------------



Ohne Muell: Warme Luft als Energiequelle der Zukunft (News, 14. Sep 1999, 06:07:16):

   Technik:
   
   Ohne Muell: Warme Luft als Energiequelle der Zukunft
   
   (Meldung vom 13.9.1999)
   
   Schon leicht erwaermte Raumluft soll genuegen, um effektiv Elektrizitaet
   zu erzeugen, versprechen die Entwickler eines neuartigen Generators
   aus den USA. Das Aggregat namens ESI22 entzieht der Warmluft die
   Energie, wandelt sie in elektrischen Strom um und gibt die kaeltere
   Luft wieder ab. Idealerweise liesse es sich deshalb mit einem
   Kuehlschrank oder einer Klimaanlage kombinieren, so die Herstellerfirma
   [1]Entropy Systems Inc. (ESI) aus Ohio.
   
   Doch auch Autos, Boote oder Rasenmaeher sollen sich damit antreiben
   lassen. Das Aggregat erzeugt keinerlei Schadstoffe, verbraucht weder
   fossile noch nukleare Brennstoffe und benoetigt keine Kuehlmittel, so
   die Konstrukteure.
   
   Herkoemmliche Generatoren koennen nur recht heisse Luft, etwa aus
   Verbrennungsmotoren, in Elektrizitaet umwandeln. ESI22 hingegen nutzt
   offenbar auch geringe Temperaturunterschiede, kann bei jedem Wetter
   und sogar bei Temperaturen unter Null betrieben werden und liefert
   laut ESI bessere Effizienzwerte als alle herkoemmlichen Motoren,
   Kuehlschraenke oder Brennstoffzellen. Patente sind rund um die Welt
   erteilt, erste Geraete sind in den USA fuer knapp 150.000 Mark zu haben.
   
   Mehr ueber die Energiegewinnung in der Zukunft finden Sie [2]hier.
   
   [Quelle: Doerte Sasse, ESI und EurekAlert]

-----------------------------------------------------------------------------



R100 erledigt Hausarbeiten und redet nett mit der Familie (News, 14. Sep 1999, 06:07:18):

   Technik:
   
   R100 erledigt Hausarbeiten und redet nett mit der Familie
   
   (Meldung vom 13.9.1999)
   
   Auf die persoenlichen Beduerfnisse seiner "Arbeitgeberfamilie" soll ein
   neuer japanischer Haushaltsroboter eingehen koennen. R100 ist der
   Prototyp einer neuen Generation solcher Roboter, die nicht nur stupide
   Putzarbeiten und aehnliche Dienstleistungen erledigen sollen - R100
   kann auch kommunizieren und interagieren: "Haushaltsroboter der
   Zukunft werden nicht nur den Teppich saugen und den Muell 'rausbringen
   koennen, sie muessen auch mit ihren Besitzern kommunizieren, Befehle
   verstehen und Gegenstaende erkennen", so Aston Bridgeman, Sprecher der
   Herstellerfirma [1]NEC.
   
   Der 44 Zentimeter hohe Roboter, knapp 8 Kilogramm schwer, konzentriert
   sich offenbar voll auf die Kommunikation: Statt Arme oder mechanischer
   Werkzeuge ist er rund um die "Huefte" mit einer Reihe Linsen und
   Sensoren ausgestattet. Damit kann er Infrarot-Signale senden, um
   Fernsehgeraete, Stereoanlagen oder andere ferngesteuerte Geraete im Haus
   zu kontrollieren. Zwei Kameras im "Kopf" helfen ihm, Gegenstaende und
   menschliche Gesichter zu erkennen, so dass er Familienmitglieder mit
   Namen ansprechen kann. Dabei kommen ihm rund 300 gespeicherte
   Basis-Saetze zugute, mit denen er auf Gruesse wie "Guten Tag" oder "Wie
   geht's?" antworten kann.
   
   Zudem fungiert R100 als Nachrichtenzentrale der Haushaltsmitglieder
   untereinander: Statt einen Zettel zu schreiben, laesst sich per Kamera
   eine Videonachricht aufzeichnen. Erkennt der Roboter dann das Gesicht
   der Person, fuer die die Nachricht gedacht ist, meldet er sich und
   spielt das Band wieder ab.
   
   NEC hat R100 zusaetzlich mit einigen "Niedlichkeitsfaktoren"
   ausgestattet: wenn er gestreichelt wird, beginnt er Musik zu spielen
   und zu tanzen, er kann "einschlafen" und sogar im "Schlaf" sprechen.
   In zwei Jahren soll er in Japan erstmals zu kaufen sein.
   
   [Quelle: Doerte Sasse und NewScientist]

-----------------------------------------------------------------------------



Aids-Virus soll beim Kampf gegen Krebs helfen (News, 14. Sep 1999, 06:07:20):

   Krebs-Forschung:
   
   Aids-Virus soll beim Kampf gegen Krebs helfen
   
   (Meldung vom 13.9.1999)
   
   Steven Dowdy und ein Team vom Howard Hughes Medical Institute stellen
   in der aktuellen Ausgabe von "Science" ein neues Verfahren vor, mit
   dem Proteine ins Innere von Zellen transportiert werden koennen.
   
   Die Wissenschaftler benutzen dazu ein Bruchstueck des Proteins TAT des
   HI-Virus. Bei der Infektion von HIV spielt TAT keine Rolle, aber es
   ist in der Lage, die Zellmembran von Zellen zu durchdringen. Die
   Forscher machten sich diese Faehigkeit zunutze, indem sie TAT an grosse
   Proteine anfuegten, die normalerweise die Zellmembran nicht passieren
   koennen. So gelang es ihnen das ueber 1000 Aminosaeuren umfassende Enzym
   beta-Galaktosidase in Zellen einzuschleusen, wo es seine biochemische
   Funktion erfuellte.
   
   Defekte Proteine und Enzyme im Zellinneren sind eine haeufige Ursache
   von schweren Stoffwechselerkrankungen und Krebs. Aufgrund ihrer Groesse
   und ihrer chemischen Eigenschaften konnten intakte Proteine bislang
   nicht von aussen zugefuehrt werden. Eine solche Proteintherapie ist nun
   dank TAT moeglich. Bei diesem Verfahren wird im Gegensatz zur
   [1]Gentherapie kein genetisches Material uebertragen.
   
   [Quelle: Michael Wochner und Science (1999 Sep 3;285(5433):1569-1572)]

-----------------------------------------------------------------------------



Chinesische Bambus-Chronik: Aeltestes Dokument einer Sonnenfinsternis? (News, 14. Sep 1999, 06:07:24):

   Sonnenfinsternis99 News:
   
   Chinesische Bambus-Chronik: Aeltestes Dokument einer Sonnenfinsternis?
   
   (Meldung vom 13.9.1999)
   
   Die erste Sonnenfinsternis, von der wir aus der Ueberlieferung Kenntnis
   haben, fand 899 v. Chr. in China statt. Berichtet wird davon in der
   sogenannten Bambus-Chronik, die dem Grab des Koenigs Wei Xiang, der um
   500 v. Chr. regierte, beigegeben wurde. "Im ersten Jahr von Koenig Yi
   wurde es in Zheng zweimal Morgen.", heisst es in dem Text.
   
   Jetzt haben, wie New Scientist in seiner neuesten Ausgabe vom 11.9.99
   berichtet, drei chinesische Wissenschaftler sich daran gemacht, das
   genaue Datum der Sonnenfinsternis zu errechnen: Ciyuan Liu von den
   Nationalen Astronomischen Observatorien in Lintong, Jianke Li, zur
   Zeit an der Australian National University in Canberra und Xiaolu Zhou
   von der Nordwest Universitaet in Xi'an. Das genaue Datum muss nach
   ihren Berechnungen der 21. April 899 gewesen sein.
   
   Wenn die Sonnenfinsternis bei Tagesanbruch stattfand, dann haetten die
   Menschen in jener Zeit den Himmel erst mysteroes aufleuchten sehen,
   dann die Verdunkelung wahrgenommen und dann wieder das Hellwerden -
   ein zweiter Tagesanbruch. Das wuerde die raetselhafte Beschreibung im
   Text erklaeren.
   
   Der Ort Zheng, der in der Bambus-Chronik genannt wird, befand sich,
   nach allem, was man heute weiss, in der Naehe der heutigen Stadt Xi'an.
   
   Der Text ist jedoch nicht unumstritten. Die zweitaelteste Ueberlieferung
   einer Sonnenfinsternis stammt ebenfalls aus China, und zwar aus dem
   Jahre 708 v. Chr. Aus dieser Quelle geht hervor, dass die Beobachter
   sehr wohl wussten, dass sie es mit ener Sonnenfinsternis zu tun
   hatten. Richard Stephenson von der University of Durham nimmt denn
   auch an, dass Sonnenfinsternisse im alten China durchaus bekannt waren
   und somit die seltsame Textstelle in der Bambus-Chronik nicht auf eine
   Sonnenfinsternis hinweise.
   
   Li hingegen haelt an seiner These fest, dass um 900 v. Chr. in der
   Region Xi'an Sonnnenfinsternisse noch nicht bekannt waren und dies die
   erste war, die die damaligen Menschen sahen. Fuer die Physiker ist es
   wichtig, von moeglichst weit zurueckliegenden Sonnenfinsternissen
   Kenntnis zu haben. "Je weiter wir in der Vergangenheit zurueckgehen
   koennen, desto genauer werden unsere Vorhersagen." sagt Li.
   
   Mehr zum Thema Sonnenfinsternis finden sie [1]hier.
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



Schwankender Lebenswille bei Todkranken. Konsequenzen fuer Sterbehilfe (News, 14. Sep 1999, 06:07:26):

   Psychologie:
   
   Schwankender Lebenswille bei Todkranken. Konsequenzen fuer Sterbehilfe
   
   (Meldung vom 13.9.1999)
   
   Patienten mit Krebs im Endstadium haben einen stark schwankenden
   Lebenswillen, selbst innerhalb eines kurzen Zeitraums. Dies belegt
   eine Studie von Harvey Chochinov von der University of Manitoba in
   Winnipeg, Kanada, und seinen Kollegen, die in der letzten Ausgabe von
   "The Lancet" (1999; Vol. 354, 816-819) veroeffentlicht worden ist.
   
   Die Forscher haben 168 Krebspatienten im Alter zwischen 31 und 89
   Jahren zweimal am Tag einen Fragebogen ausfuellen lassen, auf dem die
   Patienten den Grad ihres Wohlbefindens, ihrer Aengste, moeglicher
   Depressionen, der Schmerzstaerke ebenso angeben sollten wie den ihres
   Lebenswillens.
   
   Dabei zeigte sich zum einen, dass der Lebenswille sogar innerhalb von
   zwoelf Stunden unterschiedlich stark ausgepraegt ist. Zum anderen liess
   sich auch feststellen, dass der Lebenswille stark vom allgemeinen
   Befinden abhing. Ob jemand gerade starke Depressionen, Angstzustaende
   oder Atembeschwerden hatte, stand in engem Zusammenhang damit, wie
   sehr er am Leben hing. Die Autoren ziehen aus ihrer Untersuchung den
   Schluss, dass bei einer erlaubten Sterbehilfe unbedingt das Kriterium
   eines laengerwaehrenden Wunsches, zu sterben, beachtet werden muesse.
   Mehr zum Thema Sterbehilfe finden Sie [1]hier.
   
   [Quelle: Dr. Doris Marszk und The Lancet]

-----------------------------------------------------------------------------



R100 erledigt Hausarbeiten und redet nett mit der Familie (News, 14. Sep 1999, 06:07:30):

   Technik:
   
   R100 erledigt Hausarbeiten und redet nett mit der Familie
   
   (Meldung vom 13.9.1999)
   
   Auf die persoenlichen Beduerfnisse seiner "Arbeitgeberfamilie" soll ein
   neuer japanischer Haushaltsroboter eingehen koennen. R100 ist der
   Prototyp einer neuen Generation solcher Roboter, die nicht nur stupide
   Putzarbeiten und aehnliche Dienstleistungen erledigen sollen - R100
   kann auch kommunizieren und interagieren: "Haushaltsroboter der
   Zukunft werden nicht nur den Teppich saugen und den Muell 'rausbringen
   koennen, sie muessen auch mit ihren Besitzern kommunizieren, Befehle
   verstehen und Gegenstaende erkennen", so Aston Bridgeman, Sprecher der
   Herstellerfirma [1]NEC.
   
   Der 44 Zentimeter hohe Roboter, knapp 8 Kilogramm schwer, konzentriert
   sich offenbar voll auf die Kommunikation: Statt Arme oder mechanischer
   Werkzeuge ist er rund um die "Huefte" mit einer Reihe Linsen und
   Sensoren ausgestattet. Damit kann er Infrarot-Signale senden, um
   Fernsehgeraete, Stereoanlagen oder andere ferngesteuerte Geraete im Haus
   zu kontrollieren. Zwei Kameras im "Kopf" helfen ihm, Gegenstaende und
   menschliche Gesichter zu erkennen, so dass er Familienmitglieder mit
   Namen ansprechen kann. Dabei kommen ihm rund 300 gespeicherte
   Basis-Saetze zugute, mit denen er auf Gruesse wie "Guten Tag" oder "Wie
   geht's?" antworten kann.
   
   Zudem fungiert R100 als Nachrichtenzentrale der Haushaltsmitglieder
   untereinander: Statt einen Zettel zu schreiben, laesst sich per Kamera
   eine Videonachricht aufzeichnen. Erkennt der Roboter dann das Gesicht
   der Person, fuer die die Nachricht gedacht ist, meldet er sich und
   spielt das Band wieder ab.
   
   NEC hat R100 zusaetzlich mit einigen "Niedlichkeitsfaktoren"
   ausgestattet: wenn er gestreichelt wird, beginnt er Musik zu spielen
   und zu tanzen, er kann "einschlafen" und sogar im "Schlaf" sprechen.
   In zwei Jahren soll er in Japan erstmals zu kaufen sein.
   
   [Quelle: Doerte Sasse und NewScientist]

-----------------------------------------------------------------------------



Neues Pestizid wirkt nur auf den Schaedling (News, 14. Sep 1999, 06:07:32):

   Oekologie:
   
   Neues Pestizid wirkt nur auf den Schaedling
   
   (Meldung vom 13.9.1999)
   
   Ein neuartiges Insektenschutzmittel aus Australien soll nicht nur die
   Landwirte vor Schaedlingsfrass schuetzen, sondern auch die Umwelt und
   nuetzliche Insekten vor ueberfluessigem Gift. Das Pestizid setzt gezielt
   an einzelnen Hormon-Molekuelen an, die das Wachstum der Insekten
   steuern - dadurch ist es artenspezifisch und soll weder fuer andere
   Insekten noch fuer Menschen, Saeugetiere oder Voegel eine Gefahr
   darstellen.
   
   Das Hormon Ecdyson reguliert beim Insekt den "Haeutungsprozess": Zu
   verschiedenen Zeitpunkten ihres Lebens wird den Tieren ihr
   Chitinpanzer zu eng, fuer weiteres Wachstum muessen sie herausschluepfen,
   nachdem sich ein neuer, noch weicher Panzer bereits gebildet hat.
   
   Die Molekularforscher der [1]Commonwealth Scientific and Industrial
   Research Organisation (CSIRO), des [2]Biomolecular Research Institute
   und der Firma Dunlena Pty Ltd. arbeiten an der Bestimmung der
   Hormon-Rezeptoren von verschiedenen Schaedlingsarten. Ist die
   spezifische Struktur bekannt, lassen sich die Rezeptoren gezielt
   blockieren, so dass das Insekt in seiner Huelle gefangen ist und
   stirbt.
   
   "Dies wird betraechtliche Sicherheits- und Umwelt-Vorteile haben, weil
   die neuen Produkte nichts anderes als die Ziel-Insekten
   beeintraechtigen werden.", so der Projektleiter Dr. Paul Savage. Er
   rechnet damit, dass der Erfolg seines Forschungsteams eine ganz neue
   Aera der Schaedlingsbekaempfung einlaeuten koennte.
   
   Die Wirkstoffe sollen bei niedrigerer Dosis effektiver sein als heute
   verwendete Substanzen, und weitere Varianten gegen andere
   Insektenarten sollen sich relativ schnell entwickeln lassen. Auch soll
   es das neue Pestizid den Insekten schwerer machen, mit der Zeit
   Resistenzen gegen das Pestizid zu entwickeln - da es, anders als
   chemische Wirkstoffe, direkt an einem kritischen Punkt ihres
   Lebenszyklus' angreift.
   
   Mehr ueber Pestizide erfahren Sie [3]hier.
   
   [Quelle: Doerte Sasse, CSIRO und bbc]

-----------------------------------------------------------------------------



Zahlreiche Mini-Staubstuerme auf dem Mars. Faerbten die "Staubteufel" (News, 14. Sep 1999, 06:07:34):

   Astronomie allg.:
   
   Zahlreiche Mini-Staubstuerme auf dem Mars. Faerbten die "Staubteufel"
   den Planeten rot?
   
   (Meldung vom 13.9.1999)
   
   Miniatur-Staubstuerme, die sogenannten "Staubteufel", koennten eine
   Rolle dabei spielen, die Oberflaeche des [1]Mars mit dem
   allgegenwaertigen roten Staub zu bedecken. Das berichten Forscher um
   Stephen Metzger von der University of Nevada in Reno in den
   [2]Geophysical Research Letters.
   Sie untersuchten Aufnahmen der Raumsonde Mars Pathfinder, auf denen
   groessere Staubstuerme zu sehen waren. Die Wissenschaftler filterten die
   Bilder, so dass sie kleinere Strukturen und Muster aufloesen konnten.
   Sie entdeckten fuenf Staub-"Pilze", die ihrer Meinung nach den
   Staubteufeln aehneln, wie sie auf der Erde an sonnigen Tagen auf
   Feldern oder Strassen durch aufgewirbelten Dreck entstehen.
   
   Die Strukturen auf dem Mars waren zwischen 15 und 50 Metern breit und
   zwischen 50 und 400 Metern hoch. "Moeglicherweise loesen die Staubteufel
   die grossen Staubstuerme aus, die den ganzen Planeten umgeben",
   schreiben die Forscher. Auch daran, die feinen Partikel in die
   Atmosphaere zu bringen, koennten die Staubteufel beteiligt sein.
   Weiteres zum Thema Mars finden Sie [3]hier.
   
   [Quelle: Ute Kehse ]

-----------------------------------------------------------------------------



Fortschritt bei Kernfusion (News, 14. Sep 1999, 06:07:38):

   Energie:
   
   Fortschritt bei Kernfusion
   
   (Meldung vom 13.9.1999)
   
   Wissenschaftlern von der University of Wisconsin-Madison ist es
   gelungen, mit einer neuartigen Maschine Plasma zu erzeugen. Damit
   haben Joseph Talmadge und sein Team einen weiteren wichtigen Schritt
   auf dem Weg zur [1]Kernfusion getan.
   
   Bei diesem Prozess wird Energie dadurch erzeugt, dass
   Wasserstoff-Kerne zu Helium verschmolzen werden. Das gelingt nur bei
   extrem hohen Temperaturen, bei denen die Materie in Form von Plasma,
   also in ionisiertem, elektrisch leitfaehigem Zustand, vorliegt.
   
   Ein Problem bei der Kernfusion besteht darin, das extrem heisse Plasma
   einzuschliessen. Dazu sind starke Magnetfelder noetig. Die
   Wissenschaftler aus Wisconsin haben jetzt zum ersten Mal mit der
   HSX-Maschine (Helically Symmetric Experiment) Plasma erzeugt, die zwei
   bestehende Technologien vereinigt.
   
   Das erzeugte Magnetfeld ist symmetrisch, so dass die Energie, die das
   Plasma zusammenhaelt, in Magnetfeld-Windungen ausserhalb des Plasmas
   liegt. Das macht HSX als Fusionsreaktor stabiler. Im Innern des
   Reaktors koennen Temperaturen bis zu zehn Millionen Grad erreicht
   werden.
   
   Zunaechst sollen die Eigenschaften von Plasma und Moeglichkeiten, es
   auszunutzen, untersucht werden. Die Kernfusion ist der Prozess, der
   die Energie im Innern der Sterne erzeugt- eine praktisch unermessliche
   Energiequelle - fall es gelingt, sie anzuzapfen.
   
   Weiteres zum Thema Kernfusion finden Sie [2]hier und [3]hier
   (Europaeische Fusionsforschung).
   
   [Quelle: Ute Kehse]

-----------------------------------------------------------------------------



Cochlea-Implantat: Gehirn muss in jungen Jahren hoeren lernen (News, 14. Sep 1999, 06:07:40):

   Medizin:
   
   Cochlea-Implantat: Gehirn muss in jungen Jahren hoeren lernen
   
   (Meldung vom 13.9.1999)
   
   Tiere, die taub geboren wurden - und vermutlich auch Menschen - koennen
   mit Hilfe eines Cochlea-Implantats hoeren lernen, wenn das Implantat
   frueh genug eingesetzt wird. Dies ist das Ergebnis von Untersuchungen,
   die Rainer Klinke vom Physiologischen Institut III der Universitaet
   Frankfurt an jungen Katzen durchgefuehrt hat.
   
   Klinke und sein Team pflanzten taubgeborenen Katzen im Alter von 3-4
   Monaten die Cochlea-Implantate ein und stellten fest, dass die
   Kaetzchen schon nach 1-3 Wochen zuverlaessig auf Toene reagierten.
   
   Cochlea-Implantate werden schon seit einigen Jahren Gehoerlosen
   eingesetzt. Es handelt sich dabei um ein Geraet, das einem Hoergeraet
   nicht unaehnlich ist, aber nicht nur aussen am Ohr angebracht wird,
   sondern auch einen inneren Teil hat, der operativ eingesetzt werden
   muss und der direkt den Gehoernerv stimulieren soll.
   
   Wird das Geraet lange nach der Phase des Spracherwerbs eingesetzt, ist
   es fuer den Gehoerlosen kaum noch von Nutzen. Durch seine Katzenversuche
   weiss Klinke auch, warum: Das Gehirn sowohl des Gehoerlosen als auch
   das des Hoerenden muss Hoeren lernen, und dieser Prozess findet in der
   fruehesten Kindheit statt. Er ist auch die Bedingung fuer den
   Spracherwerb. Wird jemand gehoerlos, lange nachdem der Sprachwerb
   abgeschlossen ist, kann ihm ein Cochlea Implantat helfen, da das
   Gehirn ja schon einmal hoeren und also auch sprechen gelernt hat.
   
   Bei von Geburt an gehoerlosen Kindern muesste das Cochlea Implantat also
   etwa im ersten Lebensjahr eingesetzt werden.
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



Amerikanische Psychologie fuer russische Problemkinder (News, 14. Sep 1999, 06:07:42):

   Gesellschaft:
   
   Amerikanische Psychologie fuer russische Problemkinder
   
   (Meldung vom 13.9.1999)
   
   Fuer Jugendliche in Nizhnij Novgorod, die, wie in ganz Russland,
   zunehmend drogen- und alkoholabhaengig sowie selbstmordgefaehrdet sind,
   hat Martha Holden, Direktorin des [1]Residential Child Care Project
   der Cornell University jetzt ein Hilfsprogramm exportiert.
   
   Holden hat zusammen mit zwei Kollegen, zwei Dolmetschern und einem
   300-Seiten-Handbuch, das ins Russische uebersetzt wurde, 16
   Hochschullehrer, Psychologen und andere eine Woche lang geschult. Das
   Programm ist bisher in der gesamten englischsprachigen Welt erprobt
   worden; kuerzlich ist es ins Spanische uebersetzt worden, um in Puerto
   Rico eingesetzt zu werden.
   
   Mit der Uebersetzung ins Russische wird es jetzt erstmals in einem Land
   angewandt, das ueberhaupt nicht zur englischsprachigen Welt gehoert.
   Anders als es in Russland ueblich ist, wo auffaellig gewordene
   Jugendliche in Straflager und Besserungsanstalten eingeliefert werden,
   stellt das Residential Child Care Project auf eine Arbeit in
   therapeutischen Gruppen und Wohngemeinschaften ab.
   
   "Mit meinen Cornell-Kollegen Nick Pidgeon und Jack Holden versuchten
   wir den Russen zu helfen, die Krise der jungen Leute als eine
   Moeglichkeit zu sehen, sie zu analysieren und den betroffenen Kids Wege
   zu besserem Verhalten zu eroeffnen. Gleichzeitig zeigen wir den
   Betreuern, wie sie aus den Krisen lernen koennen und mit den
   Jugendlichen Strategien diskutiere koennen, so dass aehnliche
   Situationen beim naechsten Mal besser bewaeltigt werden koennen",
   erklaerte Holden.
   
   [Quelle: Dr. Doris Marszk]

-----------------------------------------------------------------------------



Leider nix mehr mit 1.7 Pf/Min (Mesirii,  9. Nov 1999, 12:09:16):

Siehe auch:
http://www.heise.de/newsticker/data/je-08.11.99-000/

Aus nem Kommentar fuer Hannoveraner:

Statt dessen benutze ich momentan
Nikoma und demnaechst Hannovers CityCarrier, bei dem ich fuerr 21,- DM im
Monat tagsueber (8-18 Uhr) fuer 2 Pfennig und die restliche Zeit fuer 1
Pfennig die Minute surfe (bei sek.-genauer Abrechnung nach der ersten
Minute). Da braucht man eigentlich schon fast keine Flatrate mehr
(zumindest nicht bei den momentan Flatratepreisen).
Ich wuerde sowieso vielmehr Leuten empfehlen zu entsprechenden
CityCarriern zu wechseln, da man da auch im Orts- und Nahbereich (bis
50 km) noch eine ganue Menge sparen kann. Ausserdem kann man dann z.B.
auch einen ISDN-Anschluss fuer 39,- DM inkl. pro Monat bekommen.
Mesi, traurig dass er nimmer billig mudden kann

-----------------------------------------------------------------------------



flatrates (Mesirii, 17. Nov 1999, 12:14:35):
  Flatrates werden billiger
   Der Internet-Provider Silyn-Tek senkt zum 1. Dezember die Preise fuer
   seine Flatrate-Angebote. Damit kostet der unbeschraenkte
   Internet-Zugang (inklusive Telefonkosten) den Internet-Surfer noch 189
   Mark pro Monat, wenn er sich fuer drei Jahre an den Provider bindet.  
   Bei 24-monatiger Laufzeit zahlt man jedoch 239 Mark im Monat, bei
   12-monatiger sogar 299 Mark.

   Zusaetzlich wollen bisher Unbekannte im deutschen Providermarkt in
   diesen Markt einsteigen. Ueber die Qualitaet der Angebote sind derzeit
   noch keine Aussagen moeglich.
   
   Die Firma Freeprovider kuendigt an, ab 1. Januar einen Flatrate-Zugang
   fuer 120 Mark pro Monat anbieten zu wollen -- ein Tarif, bei dem jedoch
   eine zusaetzliche Finanzierung durch Werbebanner erfolgt, wie der
   Anbieter auf seiner Homepage schreibt. Zudem wird eine Anmeldegebuehr  
   von 50 Mark faellig; Anmeldungen will die Firma ab Mitte Dezember 
   entgegennehmen.
   
   Den Vogel schiesst die Firma NetAndGo ab: Sie will ab 1. Februar fuer
   nur 89 Mark pro Monat unbegrenztes Surfen ermoeglichen. Die Anmeldung  
   soll ab 1. Dezember moeglich sein. (ll/c't)

-----------------------------------------------------------------------------



tf-gimmicks (Mesirii, 18. Apr 2000, 12:40:22):
/def beat = \
        /set output=$(/ps -r)%;\
        /if (strstr(output,strcat("/beat_",{1}," "))>-1) \
           /set beat_%{1}%;\
/ps%;\
           /eval /kill \%beat_%{1}%;\
           /purge beat_%{1}%;\
           /clear_hook beat_%{1}%;\
        /endif%;\
        /def beat_%{1} = \
        /if (do_beat>=0 & do_beat_%{1}>=0) \
        /if (do_beat_%{1}==1 & do_beat==1) \
          /eval_hook beat_%{1}\%;\
        /endif\%;\
        /repeat -%{1} 1 /beat_%{1}\%;\
        /set beat_%{1}=\%?\%;\
        /endif\%;%;\
        /set do_beat_%{1}=1%;\
        /beat_%{1}%;

Benutzung mit: /beat sekunden z.B. /beat 15 erzeugt nen regelmaessigen
Prozess,
der Aktionen ausfuehren kann.
gesteuert kann das Ganze ueber zwei Variablen werden eine globale
do_beat und eine lokale do_beat_15 (z.B)
wenn diese jeweils 1 sind, werden die kommandos ausgefuehrt und der prozess
regelmaessig gestartet.
wenn diese jeweils 0 sind, werden keine kommandos ausgefuehrt, aber der
prozess laeuft weiter
wenn sie <0 sind, wird der prozess gestoppt und muss dann mit /beat 15
wieder gestartet werden, nachdem die steuervariablen zurueckgesetzt wurden

Mesi, jetzt wirklich viel Spass wuenschend.


-----------------------------------------------------------------------------



arrays in tf (Mesirii, 25. Apr 2000, 14:41:16):
Wieder mal was aus der Alchemistenkueche ;)
Diesmal Arrayfunktionen, da ganz nuetzlich:
Nutzung mit /funktion array [index [wert]] je nach bedarf
/def aget = \
        /test value:=\{array_%{1}___%{2}\}%;\
        /return value%;\
        
/def aput = \
        /set array_%{1}___%{2}=%{-2}%;\
        /if (astart()>{2}) /test array_%1___min_len:={2}%; /endif%;\
        /if (alen()<{2}) /test array_%1___max_len:={2}%; /endif%;

/def aclear = \
        /purge_vars array_%1___*%;\
        /set array_%1___max_len=0%;\
        /set array_%1___min_len=0%;

/def alen = \
        /return \{array_%{1}___max_len\}%;

/def astart = \
        /return \{array_%{1}___min_len\}%;

/def ashow = \
        /listvar -g array_%{1}___*%;

/def asshow = \
        /let count=$[alen({1})+1]%;\
        /let res=%;\
        /while (--count>=astart({1})) \
          /let res=$[aget({1},count)] %res%;\
        /done%;\
        /echo %res%;\
Mesi, in Proggerlaune

-----------------------------------------------------------------------------



quicksort fuer die arrays (Mesirii, 25. Apr 2000, 14:45:26):
Die Arrayfunktionen brauchte ich nur fuer das folgende Quicksort.
Erst noch n paar Hilfsfunktionen, und dann das sort + Beispiel
/def aswap = \
        /test value:=\{array_%{1}___%{2}\}%;\
        /test array_%{1}___%{2}:=\{array_%{1}___%{3}\}%;\
        /test array_%{1}___%{3}:=value%;

< 0 wenn aa < bb
/def ascmp = \
        /test value:=strcmp(\{array_%{1}___%{2}\},\{array_%{1}___%{3}\})%;\
        /return value%;

/def asicmp = \
        /test
value:=strcmp(tolower(\{array_%{1}___%{2}\}),tolower(\{array_%{1}___%{3}\}))%;
\
        /return value%;

< 0 wenn 1 < 2
/def ancmp = \
        /test value:=(\{array_%{1}___%{2}\}-\{array_%{1}___%{3}\})%;\
        /return value

feld,beginn, ende, sortierfunktion
/def asort = \
/if (++ainit>8) /return%; /endif%;\
        /let asort1=$[{2}-1]%; /let asort2=$[{3}+1]%;\
        /let cmp=$[(asort1+asort2)/2]%;\
/echo ivorn %2 $[aget({1},{2})]%;\
/echo ihinten %3 $[aget({1},{3})]%;\
/echo cmp %cmp $[aget({1},cmp)]%;\
        /if (abs({2}-{3})<=1) \
           /if (abs({2}-{3})==1) \
           /%{4} %{1} %{2} %{3}%;\
           /if ({?}>0) /aswap %{1} %{2} %{3}%; /endif%;\
           /endif%;\
           /return %; \
        /endif%;\
        /while (asort1<asort2) \
        /%{4} %{1} $[++asort1] %cmp%;\
        /while (asort1<asort2 & {?}<0) \
          /%{4} %{1} $[++asort1] %cmp%;\
        /done%;\
        /%{4} %{1} $[--asort2] %cmp%;\
        /while (asort2>asort1 & {?}>0) \
          /%{4} %{1} $[--asort2] %cmp%;\
        /done%;\
        /if (asort1<asort2) \
/echo vorn %asort1 $[aget({1},asort1)]%;\
/echo hinten %asort2 $[aget({1},asort2)]%;\
        /aswap %{1} %asort1 %asort2%;\
        /endif%;\
/test ++asort1%;\
/test --asort2%;\
/asshow %{1}%;\
        /done%;\
        /asort %{1} %2 %asort2 %4%;\
        /asort %{1} %asort1 %3 %4%;\

/def ainit = \
        /aclear a%;\
        /aput a 1 Michael%;\
        /aput a 2 Susi%;\
        /aput a 3 Joerg%;\
        /aput a 4 Lina%;\
        /aput a 5 Gabi%;\
        /aput a 6 Selina%;\
        /asshow a%;\
        /test asort("a",1,6,"asicmp")%;\
        /asshow a%;
Mesi, TF-ler

-----------------------------------------------------------------------------



