Wednesday, April 28. 2010LaTeX - Wurzel mit Haken
Ich schreibe ja recht viele Texte mit LaTeX. Kuerzlich hat A. folgendes Problem an mich herangetragen, dass ich nicht auf anhieb loesen konnte: Wurzeln sollten mit einem "Haken" hinten gesetzt werden, damit man eindeutig erkennen kann wo der Ausdruck unter der Wurzel endet.
![]() W. aus Graz hat daraufhin folgendes Macro ausgegraben das offenbar schon seit einiger Zeit im Netz die Runde macht und den Job erledigt: \def\hksqrt{\mathpalette\DHLhksqrt} Leider unterstuetzt diese Loesung keine Wurzeln belibiger Ordnung (wie die aussere Wurzel und die Wurzel im Zaehler in der Abbildung). Daher hab ich die o.g. Loesung etwas aufgebohrt so dass sie wie das LaTeX \sqrt Kommando die Ordnung der Wurzel als optionales Argument versteht: \documentclass{article} Vielleicht googelt ja mal jemand nach dem Problem und stolpert dann dabei ueber mein Blog.. PS: Morgen (Donnerstag, 29.4.2010) halte ich ab 19:00 im Metalab einen Vortrag ueber Graphiken mit LaTeX erstellen: http://www.luga.at/veranstaltungen/latex-2010-04-29/ PPS: Im Metalab gibt es ein regelmaessiges TeX/LaTeX Treffen: http://metalab.at/wiki/Leidensgruppe_LaTeX Sunday, January 24. 2010
Was muss ein Taschenrechner koennen ... Posted by Clifford Wolf
in Technical at
14:11
Comments (0) Trackbacks (0) Was muss ein Taschenrechner koennen (Teil 3)
Vor ziemlich genau 2 Jahren habe ich ueber den CASIO fx-991ES geblogged. Bis vor ein paar Tagen war das meiner Meinung nach der empfehlenswerteste wissenschaftliche Rechner in der unteren Preisklasse (unter 30 EUR).
Jetzt bin ich ueber den SHARP EL-W506 (schon um 20,90 EUR bei Amazon gesehen, ich hab ihn aber um ein paar Euronen mehr aus dem offline Einzelhandel) gestolpert und muss sagen: das Graet ist sehr ueberzeugend! Soweit habe ich kein Feature des CASIO fx991ES gefunden das es nicht auch beim SHARP EL-W506 gaebe. In umgekehrter Richtung gibt es aber ein paar Kleinigkeiten und insgesammt ist mir der SHARP in der Bedienung noch etwas sympatischer als der CASIO.Vom Funktionsumfang sind sich die Rechner sehr aehnlich. Beide koennen nummerisch intergrieren und differenzieren. Beide beinhalten einen newton solver fuer gleichungen und haben einen modus zum loesen linearer systeme mit 2 oder 3 unbekannten sowie quadratischer und kubischer gleichungen. Beide koennen im komplexen (dazu unten noch etwas mehr) mit listen und mit matrizen rechnen und haben funktionen zur statistischen analyse. jedoch finde ich den zugang zu den aufwendigeren oder seltener benutzten funktionen bei SHARP intuitiver und ich habe vor allem den eindruck, dass das display besser genutzt wird. So faellt es beim CASIO beim eingeben von Matrizen schon recht schwer zu erkennen was man da eigentlich gerade tut, waehrend die selbe Aufgbae beim SHARP bei einem etwa gleich grossen Display kein Problem darstellt. Wenn man weiter ins detail geht findet man auch einige funktionale unterschiede. Z.bsp. kann der SHARP matrizen invertieren. Beim numerischen integrieren und differenzieren kann man beim SHARP die groesse des epsilons angeben. Die Summenfunktion unterstuetzt eine Schrittweite. Beim CASIO sucht man diese features vergeblich. Der SHARP hat einen Funktionskatalog fuer exotischere Funktionen der mich am ersten Blick etwas an die Bedienung von meinem HP50g erinnert. Auch die Liste der Konstanten und die Liste der unit conversions sind beim SHARP in einem menue abrufbar. Bei CASIO muss mann die Nummer der Konstant bzw. der unit conversion kennen (eine Liste gibt es aber auf der innenseite des deckels). Die Aufwendigeren Funktionen (solver, matrizenrechnungen, etc) haben beim SHARP ein meiner meinung nach ein viel intuitiveres interface. Der SHARP hat mehr Speicher als der CASIO - unter anderem einen Speicher um bis zu 4 haeufig verwendete Terme ablegen zu koennen und 4 speicher (D1 - D4) auf die man haeufig verwendete taschenrechner funktionen (z.bsp. solche die sonst nur ueber menues erreichbar sind) legen kann. Sehr angenehm finde ich die Art wie beim SHARP mit zahlenbasen ungleich 10 gerechnet und umgewandelt wird. Das geht zwar mit dem CASIO auch alles, ist aber beim SHARP um einiges konfortabler geloest. Leider ist mein groesster Kritikpunkt am CASIO auch beim SHARP gueltig: er kann nicht mit komplexen Exponenten rechnen. Ich hatte die Hoffnung, dass man zumindest einen geschlossenen Term fuer a^b mit komplexem a und b in einem der formelspeicher ablegen kann. Aber leider gestaltet sich das als etwas aufwendiger, weil die Umwandlung von komplexen Zahlen zwsichen Komponentenschreibweise und Polarkoordinaten und das extrahieren der einzelnen Elemente nur im Ergebnis einer Berechnung moeglich und nicht als Funktion auf eine Variable anwendbar ist. Zwar kann man mit re=(x+conj(x))/2 und im=(x-conj(x))/2 real und imaginaerteil extrahieren und mit abs(x) den betrag, ohne atan2() und ohne fallunterscheidung ist das zufuss berechnen des winkels in der gaussschen zahlenebene aber zu aufwendig um dann einen geschlossenen Ausdruck sinnvoll eingeben zu koennen. Es ist mir nach wie vor ein Raetsel wesshalb die Hersteller von Taschenrechnern zwar einen Newton Solver in ihre Geraete um knappe 20 EUR einbauen, nicht aber die Zerlegung der Berechnung eines komplexen Exponenten implementieren koennen. Wer sich einen neuen Taschenrechner anschaffen, dabei aber nicht viel Geld ausgeben moechte dem kann ich den SHARP EL-W506 sehr ans Herz legen. Bei mir hat er den CASIO fx-991ES als den Taschenrechner den ich immer dabei habe abgeloest. Thursday, January 14. 2010rpn, iomem, teletype
Im letzten Maerz habe ich angekuendigt in unregelmaessigen Abstaenden ueber die kleinen Tools zu schreiben die ich mir im laufe der Zeit fuer die unterschiedlichsten Aufgaben zusammengestoepselt habe. Vor 10 Monaten ging es um einige JavaScript Programme fuer Berechnungen aus dem Bereich der Elektrotechnik. In diesem Post will ich drei Tools vorstellen die eher in den Bereich embedded bzw. hardwarenahe entwicklung gehen.
Clifford's Tools: http://svn.clifford.at/tools/trunk/ rpn und rpn64: Ueber dieses Programm und das nachfolgende habe ich 2007 schon mal in aller kuerze geblogged. Rpn ist ein einfacher rechner mit 32 bit integern fuer rechenoperationen in reverse polnish notation. rpn64 ist die version fuer 64 bit integer. Das eigentliche Highlight des Rechners ist aber nicht das rechnen an sich sondern das format seiner Ausgabe: Wenn man oft damit zu tun hat die Inhalte von irgendwechen Registern auseinanderzuklauben oder mal schnell fuer einen test das richtige wort zusammenstoepseln muss das in ein register geschrieben werden soll, dann ist dieses tool eine wertvolle hilfe. "rpn --help" erzeugt eine 4 seitige uebersicht ueber alle aufrufarten und operationen die rpn versteht. Unter anderem gehen einfache rechnungen und bitoperationen, ein uns ausgabe kann in binaer, dezimal, hexadezimal oder oktal erfolgen. Wenn es keine angabe zum ausgabeformat gibt wird das oben gezeigte verbose format verwendet. Ich verwende das tool hauptsaechlich auf der kommandozeile um bitmuster zu zerlegen. machnmal ist es aber auch praktisch um z.bsp. kleine shell scripts zu schreiben die wiederkehrende berechnung/analyse von bestimmten bitmustern wie z.bsp. statusregistern zu automatisieren. iomem: iomem ist ein tool das man auf PCs wohl besser nicht starten sollte: es erlaubt den direkten zugriff auf memory-gemappte register. in embedded systems kann das aber sehr praktisch sein, wenn man fuer einfache aufgaben nicht gleich einen treibewr schreiben muss sondern mit iomem direkt im speicher herumpfuschen kann. Um z.Bsp. das 32 bit register an der Addresse 0x12345678 auszulesen ruft man "iomem r32 0x12345678" auf. Um die vier 16 bit register an der io adresse 0x100 auszulesen wuerde man "iomem r16-port:4 0x100" ausfuehren. es gibt modi um auf registerbloecke zu lesen und zu schreiben und um mehrere lese oder schreib zugriffe auf ein fifo register zu machen. Man kann auch pollend darauf warten das ein register ein bestimmtes bitmuster annimmt. Ich empfehle aber das Programm nur zu verwenden wenn man weiss was man da tut. Es gibt einen grund warum es normalerweise kein command line tool gibt um direkt hardware register zu manipulieren.. teletype: teletype is ein raw serial terminal. mit "raw" meine ich in diesem fall, dass es nicht versucht terminal escape codes selbst zu interpretieren sonder die bytes von der seriellen schnittstelle 1:1 an das controlling tty weitergibt. ansi, vt100, und andere escape codes muss das controlling tty selbst auswerten - oder der user bekommt den schrott halt angezeigt. das hat den vorteil, dass man alle features eines X terminal windows auch beim verwenden der seriellen schnittstelle hat. Insbesondere dass bei curses basierenden serial terminals die history funktion des terminal windows verloren geht hat mich immer sehr gestoert. dafuer hat teleteype einige features die andere terminal-programme nicht haben wenn es um das automatisieren oder teilautomatisieren von ablaeufen geht. speziell so dinge wie mit kleinen shell scripts devices flashen geht damit recht leicht. Wen man das programm ohne weitere parameter startet bekommt man eine uebersicht der optionen und befehle: $ teletype --------------------------------------------------------- Usage: teletype device [speed] [escape-letter] [command(s)] Default speed is 9600 Baud. Default escape letter is 'A'. Supported speed rates: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Control Key Kombos: Ctrl-A A Send a Ctrl-A over the line Ctrl-A B Send a break over the line Ctrl-A 0 Send a a single zero byte over the line Ctrl-A H Print help message (command overview) Ctrl-A R Toggle RTS (Ready To Send) signal Ctrl-A D Toggle DTR (Data Terminal Ready) signal Ctrl-A T Toggle timestamp-mode and reset timer Ctrl-A L Set slow send mode (N chars/sec, 0=unlimited) Ctrl-A N Create network link to remote TCP/IP port Ctrl-A E Toggle local terminal echo Ctrl-A C Run a chat script (or any other command such as 'sx') Ctrl-A W Wait one second (this is usefull for scripts) Ctrl-A U Set baud rate (use with care!) Ctrl-A S Print line status Ctrl-A \ Exit without serial reset Ctrl-A X Exit with serial reset Ctrl-A . [x] Change escape key from Ctrl-A to Ctrl-[x] Commands are in the form of '-<Key><Argument>'. E.g.: teletype /dev/tts 9600 -b -l10 -c'chat -f myscript.txt' -l0 -u115200 -c'sx datafile.bin' -x --------------------------------------------------------- Wednesday, August 5. 2009Int vs. Float vs. Double
Ich erzaehle seit einiger Zeit bei allen moeglichen Gelegenheiten, dass meiner Meinung nach Scriptsprachen in Zukunft auf die verwendung von Integer typen verzichten sollten und statt dessen double precission floats als basis number-type verwenden sollten, oder zumindest bei divisionen automatisch nach double float casten sollten. Offensichtlich kann double float mit der 56 bit Mantisse ein 32 bit vollstaendig abbilden. D.h. es kaeme hier in keiner weise zu einem Verlust an genauigkeit. Das mehr an Speicherplatz verbrauch ist ebenfalls zu vernachlaessigen: das geht in aller Regel im Verwaltungsoverhead der VM unter.
Die Vorteile liegen auf der Hand: ersten muss man sich bei Sprachen mit dynamischer typisierung dann keine gedanken darueber machen, ob eine variable jetzt nun int oder float ist und wie eine divison nun definiert ist (das ist ein punkt der mich an python 2 aergert - afaik hat kommt bei python 3 bei einer division immer ein float raus, ausser man verwenden den speziellen // operator fuer integer divisionen) und andererseit macht es das VM design etwas einfacher wenn man es nur mit einem number-type zu tun hat. Das Gegenargument bleibt immer die performance. Also hab ich mal einen kleinen Test mit zwei typischen integer algorithmen gemacht: Das zaehlen von primzahlen mit einem ganz trivialen primtest und einfach nur zaehlen ohne weitere berechnungen: int testi(int n)
{
int counter = 0;
for (int i = 2; i < n; i++)
{
for (int j = 2; j < i; j++)
if (i % j == 0)
goto next_candidate;
counter++;
next_candidate:;
}
return counter;
}
int test2i(int a, int b)
{
int counter = 0;
for (int i = 0; i < a; i += b)
for (int j = 0; j < a; j += b)
counter++;
return counter;
}diese funktionen hab ich drei mal implementiert: fuer die C-typen int, float und double. bei float und double wird die modulo division mit der math.h funktion fmodf() bzw. fmod() umgesetzt. die implentierungen hab ich in jeweils eigene c-file gelegt und nochmals ein extra c-file mit einer main() implentierung erstellt. durch die verwendung jeweils eigener c-dateien soll sichergestellt werden, dass der compiler die funktion moeglichst generisch uebersetzt und nicht mit inlining und const folding in die main implementierung hineinzieht. Compiliert habe ich das ganze mit gcc 4.3.1 (-O3 -march=i386) und getestet auf meinem AMD Athlon(tm) 64 X2 Dual Core Processor 6000+. Im Test wird die erste funktion jeweils mit dem parameter 100000 und die zweite jeweils mit den parametern 40000 und 1 gestartet. Das Ergebnis des Primzahlen-Tests: Die integer variante braucht ganze 6,614 Sekunden um durchzulaufen. Die float bzw. double variante braucht 4,171 bzw. 4,172 Sekunden, ist also sogar deutchlich schneller! Das Ergebnis des Zaehlerschleifen-Tests: Die integer variante braucht 1,666 Sekuden. Die float bzw. double variante braucht 2,486 bzw. 2,450 Sekunden. Hier hat die integer variante klar die nase vorn! Fazit: Es liegen keine Welten zwischen integer und float performance. Gerade bei interpretierten Sprachen durfte sich der tatsaechliche Performanceunterschied kaum bemerkbar machen. Bei JIT compilation muesste man sich da schon mehr gedanken machen um die maximale performance rausholen zu koennen, und das erste beispiel zeigt, dass hier ein JIT compiler unter umstaenden sogar mehr performance rausholen koennte wenn integer typen (zumindest in bestimmten faellen) zu floats kompiliert werden. Der Python3 Ansatz den Divisionsoperator unabhaenig von den Operanden als floating point division zu implementieren und einen eigenen operator fuer integer divisionen einzufuehren erscheint mir aber in jedem falle sinnvoll. Die Bestrebungen in ECMA-Script 4 und Perl 6 eigene int typen einzufuehren halte ich dafuer fuer fragwuerdig, vor allem weil man davon ausgehen kann, dass bis zur umsetzung von ECMA-Script 4 und Perl 6 wahrscheinlich auch alle embedded CPUs, die maechtig genug zum hosten dieser Sprachen sind (ECMA-Script findet z.Bsp. bereits Anwendung bei den HD-DVD Menues als VM-Backend) ueber mindestens so schnelle floating point wie fixkomma einheiten verfuegen werden. Thursday, July 9. 2009
Building and installing qcad ... Posted by Clifford Wolf
in Technical at
10:27
Comments (3) Trackbacks (0) Building and installing qcad 2.0.5.0-1 community edition
Ich hatte in den letzten Wochen gleich mehrmals das recht zweifelhafte vergnuegen qcad von den Sourcen zu bauen. Offenbar hat der autor nur ein sehr eingeschraenktes interesse daran diesen prozess so problemlos wie moeglich zu gestalten. Einerseits gibt es kein "make install", andererseit gibt es einige troubles mit aktuellen gcc versionen. Letzteres ist das gleiche drama wie bei vielen anderen packages auch: die neuen aufgeraeumten C++ headers includen nicht mehr
http://www.clifford.at/writings/qcad-2.0.5.0-1-build.patch Vielleicht ist mit diesem kleinen patch ja auch noch dem einen oder anderen ausser mir geholfen... Saturday, March 14. 2009
Clifford's Tools: JavaScript ... Posted by Clifford Wolf
in Links, Private, Technical at
13:42
Comments (0) Trackbacks (0) Clifford's Tools: JavaScript Electronik Helferlein
Meinereiner wartet seit einiger Zeit ein kleines Subversion Repository mit allen moeglichen kleinen Tools, die ich fuer den Eigenbedarf entwickle. Ich habe mich nun entschlossen in unregelmaessigen Abstaenden das eine oder andere dieser Tools in meinem Blog vorzustellen.
Clifford's Tools: http://svn.clifford.at/tools/trunk/ In den letzten Monaten hatte ich wieder mal ein bischen Zeit zum elektronikbasteln und habe im Zuge der Basteleien ein paar im Webbrowser lauffaehige JavaScript Tools entwickelt um mich selbst bei der Loesung einiger haeufiger Probleme beim Designen von elektronischen Schaltungen zu unterstuetzen. RLC-Filter Calculator: http://svn.clifford.at/tools/trunk/electrotools/fcalc.html E6 Resistor Calculator: http://svn.clifford.at/tools/trunk/electrotools/rcalc.html Das naechste Tool ist mathematisch weniger interessant: Es loest eine Variation des Rucksackproblems durch einfaches Ausprobieren: Im metalab haben wir die E6 Widerstandsreihe im Sortiment. Werte die ausserhalb der E6 Reihe liegen muessen durch eine Kombination von mehreren Widerstandswerten genaehert werden. Das Programm rcalc findet zu einem gegebenen Widerstandswert jene Schaltungen die am besten geeignet sind diesen Wert zu naehern. Mit der Kombination von bis zu drei Widerstaenden laesst sich so gut wie jeder Wert so weit naehern, dass der gewuensche Wert wieder innerhalb der 1%igen Bauteiltoleranz liegt. Voltage Divider Calculator: http://svn.clifford.at/tools/trunk/electrotools/vdcalc.html Das dritte und letzte Tool das ich in diesem Blog Eintrag vorstellen moechte ist eine Variation des oben vorgestellten E6 Resistor Calculators: Als Designer elektronischer Schaltungen steht man oft vor der Aufgabe Spannungsteiler moeglichst genau dimensionieren zu muessen. Auch hier hat man nicht immer jeden belibigen Widerstandswert griffbereit sonder muss sich z.Bsp. im metalab wieder auf die E6 Reihe beschraenken. Das Programm vdcalc ermittelt die passenden Widerstandskombinationen und rechnet dann mit den Bauteiltoleranzen auch die Toleranzen fuer die Spannungen zurueck. Falls sich jemand fragen sollte: Die Toleranzen fuer V1 sind z.Bsp. dann interessant wenn man den Spannungsteiler zum parametrieren eines Festspannungsreglers verwendet der auf eine bestimmte Spannung V2 regelt. Thursday, January 1. 2009
Papers zu Lock-Free und Wait-Free ... Posted by Clifford Wolf
in Technical at
22:29
Comments (2) Trackbacks (0) Papers zu Lock-Free und Wait-Free Algorithmen
Herlihy, M. Wait-free Synchronization. ACM Transactions on Programming Languages and Systems 13, 1 (1991), 124-149.
Andrei Alexandrescu. Lock-Free Data Structures. December 17, 2007. M. Herlihy and J. Wing. Linearizability: A Correctness Condition for Concurrent Objects. ACM Transactions on Programming Languages and Systems, Vol. 12, No. 3, July 1990, Pages 463-492. B.N. Bershad. Practical Considerations for Non-Blocking Concurrent Objects. Proceedings of the 13th International Conference on Distributed Computing Systems (DCS), pp. 264-273, May 1993. Also published as a Carnegie-Mellon University Technical Report CMU-CS-91-183, October 1991. Monday, December 29. 2008
Windows Software Hitliste Posted by Clifford Wolf
in Technical at
07:10
Comments (13) Trackbacks (0) Windows Software Hitliste
Ich installiere gerade die neue CAD Station im Metalab. Aus diesem Anlass poste ich hier mal eine Liste von Software die ich normalerweise auf einem Windows System installiere damit es fuer mich verwendbar wird:
Firefox und diverse Add-ons:
Unix Tools auf Windows:
Connectivity mit UNIX:
Der uebliche Krempel von Adobe:
Subversion:
Kleine Tools die man haben will:
Weitere Software (bei Bedarf):
Wissenschaft und Technik (bei Bedarf):
Last but not least meine reinstall scripte um mit Dualboot aus Linux Images vom Windows schnell und bequem erzeugen und rueckspielen zu koennen: Fuer Hinweise zu weiterer Free- oder Free-as-in-free-beer-Software, die Windows etwas brauchbarer oder leichter zu ertragen macht bin ich natuerlich dankbar. Comments zu diesem Blog-Eintrag sind ein geeigneter Ort fuer soche Hinweise.. Wednesday, September 17. 2008
ffmpeg: video via dv1394 und audio ... Posted by Clifford Wolf
in Technical at
15:10
Comments (3) Trackbacks (0) ffmpeg: video via dv1394 und audio via OSS
Schoen langsam verstehe ich, wie das bei ffmpeg so rennt: Alle Infos die man zum benutzen so braucht findet man eh im Sourcecode, und wenn es dann auch noch wie angepriessen funktionieren soll dann muss man halt ein bischen patchen. Also ich persoenlich mag so etwas ja sehr gerne: bis auf die Sache mit der Schokolade ein Programm wie ein Ueberraschungsei. Nur ob alle Anwender so denken?
Wie dem auch sei: Mit dem oben verlinkten Patch tut ffmpeg endlich so wie ich mir das von Anfang an erwartet habe. ffmpeg -f dv -i /dev/dv1394/0 -f oss -i /dev/sound/dsp -vb 1000000 -y -map 0.0 -map 1.0 demo.avi Wednesday, September 17. 2008
Linuxwochenende 2008: 20./21. September Posted by Clifford Wolf
in Events, Private, Technical at
03:01
Comments (0) Trackbacks (0) Linuxwochenende 2008: 20./21. September
Kommenden Samstag und Sonntag findet im Wiener Metalab das Linuxwochenende 2008 statt. Programm gibt es auf der Homepage:
Wenn folgendes so hinhaut, wie ich mir das erhoffe, wird es auch einen Videomitschnitt mit Sound direkt vom Speaker-Mikrophon geben, obwohl meine DV Kamera keinen Audio-Eingang hat. Ein kleiner Job fuer FFMPEG - aber ein grosser Schritt fuer die semiautomatisierte Aufzeichnung von Vortraegen im Metalab. ffmpeg \ -f dv -i <( dvgrab -noavc -format raw - 2> dvgrab.err ) \ -itsoffset 0.7 -f s16le -ar 44100 -ac 1 -i <( arecord -f S16_LE -c1 -r44100 - 2> arecord.err ) \ -vb 1000000 -y -map 0.0 -map 1.0 demo.avi Thursday, September 11. 2008
Vortraege in Graz - CMOS und GIT Posted by Clifford Wolf
in Events, Private, Technical at
10:11
Comment (1) Trackbacks (0) Vortraege in Graz - CMOS und GIT
Heute und morgen halte ich Vortraege auf der FH-Joanneum in Graz.
(Offen fuer alle die es interessiert und bei freiem Eintritt.) Donnerstag 11. September, 15:00: Vom (MOSFET) Transistor zum (CMOS) Gatter Freitag 12. September, 14:00: Sourcecode Management mit GIT Es wird Videoaufzeichnungen geben. Thursday, July 24. 2008
Hexaglot Quicktionary 2 Premium Posted by Clifford Wolf
in Buch und Film, Technical at
21:12
Comments (0) Trackbacks (0) Hexaglot Quicktionary 2 PremiumDie Hauptanwendung: Man scannt Woerter (z.Bsp. aus einem Buch) ein und am Display erscheint innerhalb von 2-3 Sekunden der dazu passende Woerterbucheintrag. Die OCR funktioniert wirklich hervorragend (bei schlechtem Druck oder kursiver Schrift muss man manchmal ein Wort ein zweites oder drittes mal scannen, das Woerterbuch kommt mit leichten Scanfehlern aber auch gut zurecht) und zumindest das englische Woerterbuch ist sehr umfangreich. Der Quicktionary erkennt automatisch alle gaengigen Flexembildungen und kennt auch erstaunlich viele Redewendungen. Ich habe ihn mir gekauft, weil ich bei englischen Buechern - obwohl ich eigentlich recht gut Englisch kann - im Schnitt immer noch ein Wort pro Seite finde, beim dem ich mir mit der Bedeutung nicht sicher bin. Die ueberlese ich dann meistens und rekonstruiere die Bedeutung aus dem Kontext, da ich zu faul bin nachzuschlagen. Damit ist jetzt Schluss. Grundsaetzlich kann man Text zwar auch ueber die Tasten eingeben, das ist aber sehr muehsam und bietet eigentlich keine Vorteile mehr gegenueber einem Besuch auf dict.leo.org. Auf der Rueckseite des mitgelieferten Etuis sind aber Strichcodes fuer Buchstaben, Ziffern-, Sonder- und Steuerzeichen (auch slawische Buchstaben), die man durch Einscannen ebenfalls zur Texteingabe verwenden kann. Das ist zumindest eine kleine Erleichterung, um z.Bsp. Texte, die sich partout nicht richtig scannen lassen (etwa wenn bei kopierten Seiten oder billigen Drucken ein Farbkleks in einen Buchstaben hineinragt), fuer die Uebersetzung zu korrigieren. Ueber die mitgelieferte Software kann ich nicht viel sagen: Es handelt sich um ein Windows Programm. Jedenfalls erlaubt sie wohl das nachtraegliche Hochladen von Woerterbuechern (die CD beinhaltet einige weitere Woerterbuecher neben den Woerterbuechern Deutsch-Englisch und Englisch-Deutsch, die auf dem Stift vorinstalliert sind). Laut Handbuch kann man auch kurze Texte als Ganzes, Visitenkarten, Internet-Adressen und sogar Tabellen mit dem Stift scannen und speichern, und dann auf den PC ueberspielen. Thursday, June 26. 2008
Sourcecode Management mit GIT Posted by Clifford Wolf
in Technical at
09:32
Comments (2) Trackbacks (0) Sourcecode Management mit GIT
Mein gestriger GIT Vortrag im Metalab war trotz Konkurrenz durch die UEFA sehr gut besucht. Etwa die Haelfte derer die gekommen waren haben die vollen 4 1/2 Stunden durchgehalten..
Die Folien sind wie ueblich nun auch online: http://www.clifford.at/papers/2008/git/ Das mit der Videoaufzeichnung hat leider nicht geklappt. Einige Leute auf der LUGA Liste hatten sich ein Video gewuenscht und Rhonda hat mir ausgerichtet, dass Mika aus Graz den Vortrag gerne als Video gehabt haette.. Eine aehnliche Situation gab es auch schon mit meinem CMOS Einfuehrungsvortrag im letzten Jahr. Ein Angebot nach Graz: Ich halte an einem Wochenende beide Vortraege in einer Grazer Location und ihr macht eine Videoaufzeichnung fuer diejenigen die es weder in Graz noch in Wien geschafft haben die Vortraege zu besuchen. Saturday, June 14. 2008
Offener Brief an Hetzner Posted by Clifford Wolf
in Politik, Technical at
15:20
Comments (5) Trackbacks (0) Offener Brief an Hetzner
Zunaechst moechte ich gerne klarstellen, dass ich mit den Leistungen der Firma Hetzner, auf deren Server unter anderem meine Homepage mit diesem Blog laeuft, sehr zufrieden bin. Jedoch gibt es selbst beim besten Anbieter immer ein gewisses Verbesserungspotential. Und so ein Potential habe ich nun bei der Betreuung der abuse@hetzner.de Adresse ausfindig machen koennen. Leider haelt der zustaendige Mitarbeiter bei der Firma Hetzner es offenbar fuer unnoetig auf meine E-Mails zu antworten. Daher habe ich mich fuer diesen Weg des offenen Briefes entschieden...
Vor etwas mehr als einer Woche, naemlich am 5. Juni 2008, schickte mir Julian Weinberger (julian.weinberger at hetzner.de) diese Mail. Der wichtigste Passus in dem Schreiben ist wohl: uns wurde eine Spam oder Abuse - Meldung für die o.g. IP gemeldet. Habe ich einen offenen Relay? Verdiene ich mir nebenbei was mit dem Verkauf von Viagra dazu? Mitnichten. Die "Spam Mail" um die es ging war praktischerweise attached. Ich moechte mal kurz zitieren: This is the Postfix program at host phoenix.clifford.at. Die meisten Leute, die meinen Blog lesen, haben sicher schon verstanden was da passiert. Ich moechte es dennoch kurz umreissen: Bei E-Mails gibt es keine Authentifizierung der Absender-Adresse. Zwar gibt es mehrere Ansaetze (Sender ID, Sender Policy Framework (SPF), DomainKeys, etc.) - aber keiner von denen hat es bis jetzt zum Internet Standard (RFC) geschafft und ohne eine flaechendeckende Umsetzung ist eine solche Technologie sowieso wertlos. Das bedeutet, eine E-Mail kann mit jeder beliebigen Absender-Adresse verschickt werden, und fuer den Empfaenger gibt es keine technische Moeglichkeit zu ueberpruefen, ob die Absender-Adresse echt oder gefaelscht ist. Spammer verschicken gerne ihre E-Mails mit gefaelschten Absender-Adressen (zum Beispiel wenn die Opfer gar nicht auf das E-Mail antworten sondern auf einen Link klicken sollen), um es schwerer zu machen die Mails zu filtern. Wenn jetzt ein Spammer eine E-Mail an meinen Server schickt, die Adresse an die die Mail geschickt wurde existiert jedoch nicht, so schickt mein Server eine Fehlermeldung an den vermeintlichen Absender der Mail zurueck. Da es keine technische Moeglichkeit gibt, die Absenderadresse zu verifizieren, gibt es nichts was ich da machen koennte. Diesen Umstand habe ich in meiner Antwortmail an Herrn Weinberger dargelegt und mit folgender Bemerkung geschlossen: ueberhaupt wuerde ich gerne wissen, welche reaktion Sie von mir erwarten, Nun habe ich nicht ernsthaft mit einer Antwort gerechnet. Ausser natuerlich, Herr Weinberger haette tatsaechlich einen sinnvollen Vorschlag gehabt, wie ich mich in so einer Situation zu verhalten haette. Ich bekam keine Antwort auf mein Schreiben. Dafuer aber gestern, am Freitag dem 13., eine neue Mail.. uns wurde eine Spam oder Abuse - Meldung für die o.g. IP gemeldet. Und natuerlich wieder aufgrund einer Postfix Fehlermeldung wegen einer nicht zustellbaren E-Mail. Werte Firma Hetzner: Ich bin es durchaus gewohnt, routinemaessig E-Mails ungelesen zu loeschen. Dabei handelt es sich jedoch vorwiegend um Spams und Phishing Mails, die es durch den Spam-Filter geschafft haben, sowie um Fehlermeldungen wegen unzustellbarer Spam-Mails, die mit meiner E-Mail Adresse als Absenderadresse verschickt wurden. Ich faende es aber seltsam nach dem gleichen Muster E-Mails loeschen zu muessen, die mir mein Hosting-Provider schickt. Besonders wenn er mich in diesen Mails dazu auffordert Handlungen zu setzen. Also bitte: Was waeren Ihrer Meinung nach "alle nötigen Maßnahmen um dies ferner zu Vermeiden"? Soll ich mich in den IETF Arbeitsgruppen zur Verabschiedung eines Standards zur Absenderauthentifizierung engagieren? So etwas kann ich natuerlich gerne tun, wenn Sie das wollen. Aber natuerlich nur unter der Voraussetzung, dass die Firma Hetzner mir die dabei anfallende Arbeitszeit sowie die Spesen bezahlt. Andernfalls: Bitte unterlassen Sie es in Hinkunft, mir E-Mails zu schicken, in denen Sie mich auffordern Massnahmen gegen etwas zu treffen, wogegen ich keine Massnahmen treffen kann. Eine Stellungnahme waere ebenfalls nett. Kunden automatisiert E-Mails zu schicken und Antworten auf diese E-Mails einfach zu ignorieren, so sieht meiner Meinung nach gelungene Kundenbetreuung nicht aus. Ich faende es ausgesprochen schade, Ihre Firma in Zukunft nicht mehr emfehlen zu koennen, wenn ich nach einem guten Hosting Provider gefragt werde. mfg, - Clifford Wolf Thursday, April 3. 2008
Xilinx ISE WebPACK 10.1 - Isim FAIL Posted by Clifford Wolf
in Technical at
23:30
Comments (0) Trackbacks (0) Xilinx ISE WebPACK 10.1 - Isim FAIL
Xilinx hat vor ein paar Tagen die Version 10.1 ihrer Entwicklungsumgebung ISE herausgebracht, zu der ich mir auch gleich die gratis-Version, das ISE WebPACK angesehen habe. Ganz konkret hat mich der Verilog+VHDL Simulator "ISIM" interessiert, den ich seit der Version 9.2 von benutze. Bei der alten Version gab es noch einige Kinderkrankheiten. Zum Beispiel bin ich ueber einige noch nicht implementierte Sprachfeatures gestolpert, habe es mehrmals geschafft die Simulation zum Segfaulten zu bringen und in einem Fall habe ich sogar unsinnige Simulationsergebnisse erhalten. Dennoch war ich mit der 9.2er Version von "ISIM" im allgemeinen recht zufrieden, habe mir aber von der neuen Version einige Verbesserungen erhofft. Der erste Eindruck von der neuen Version laesst aber schlimmes befuerchten:
Ich wollte ISIM gleich mit einem meiner aktuellen Projekte testen. In diesem Test-Projekt kommen einige Block Ram Primitives (BRAM18SDP und BRAM36) vor, welche mit den INIT_* und INITP_* Parametern mit Daten vorinitialisiert werden. Waehrend die alte ISIM Version fuer beide Primitives jeweils nur einen Augenblick zur Uebersetzung gebraucht hat, braucht die neue ISIM Version fuer jede Instanz eines der Primitives etwa 5 Minuten. Daheinter steht offenbar eine gut gemeinte Performance-Optimierung, die zur Folge hat, dass ein Verilog Modul fuer jede Kombination von Parametern neu uebersetzt werden muss. Diese Uebersetzung funktioniert ueberigens so, dass der HDL-Code in C-Code umgewandelt wird, welcher dann mit einem von Xilinx mitgeliefertem GCC in Objektcode compiliert wird. Ein Vorgehensweise, die ich grundsaetzlich fuer schlau halte. Nur geht da irgend etwas schief und die C-Files fuer meine Block Ram Primitives werden etwas ueber 4MB gross. Das zu compilieren braucht eben seine Zeit - und auf ein mal dauert die Simulation deutlich laenger als Synthese, Mapping, Place&Route und In-Circuit-Test gemeinsam. Massive Fail. "Verschlimmbessert" sagt man in der Regel zu so etwas. Ich hab auf meiner Workstation jetzt wieder ISE 9.2 im Einsatz.. |
Calendar
QuicksearchArchivesCategoriesSyndicate This BlogBlog Administration |
|||||||||||||||||||||||||||||||||||||||||||||||||
