| German | English |
|---|---|
| Das Problem | The Problem |
| Ich betreibe ein TP-LINK Powerline, an dem mein Rechner per Ethernet angeschlossen ist und das Android Smartphone per WLAN. Nun habe ich Chromecast gekauft und mit dem Smartphone eingerichtet. Danach war er aber in der Google Cast-App nicht mehr sichtbar für das Smartphone - stattdessen aber für den Rechner, der ja per Kabel mit dem Powerline-Adapter verbunden ist. Was stimmt mit meiner Konfiguration nicht? | We're having a TP-LINK Powerline, my computer has a wired ethernet connection to it whereas my Android smartphone connects wireless via WLAN. Now I setup a Chromecast with my smartphone. However, after the setup the Chromecast disappeared and could no longer be found by the Google Cast app on my smartphone - instead, Chromecast became visible to my computer which has a wired connection. What's wrong with my configuration? |
| Die Analyse | The Investigation |
| Offenbar war das Powerline nicht im gleichen logischen Netzwerk, wie mein Router. Einer von beiden hatte die IP 192.168.0.1, der andere 192.168.1.1. Das führte auch dazu, dass ich die Web-Management-Oberfläche des Powerline nicht mehr aufrufen konnte, was ich zur Fehlerkorrektur aber tun muss. | Apparently my Powerline was not sharing the same logical network with my router. One has the IP address 192.168.0.1, the other had 192.168.1.1. That also hindered me from opening the web management site of my Powerline, which I needed to access to fix things. |
| Die Lösung | The Solution |
|
|
| Das Resultat | The Outcome |
| Alle Geräte finden nun meinen Chromecast, außerdem kann ich das Powerline nun endlich über seine Web-Management-Oberfläche konfigurieren, und alle Rechner im Netzwerk können sich gegenseitig erkennen, egal ob sie drahtlos oder mit Kabel angebunden sind. | All devices can now see my Chromecast, plus I can finally configure my Powerline via its web management site, and all devices in my network finally find each other, no matter if they are connected in a wireless or wired way. |
| Dankeschön geht an | Credits to |
| https://www.administrator.de/wissen/kopplung-2-routern-dsl-port-48713.html | |
Ventil meiner flüssigen und überflüssigen Gedanken
Samstag, 13. August 2016
Chromecast, Powerline, Router, Ethernet
Mittwoch, 12. März 2014
Collapsibles mit jQuery und knockout.js
| Deutsch | English |
|---|---|
| Wer mit jQuery UI bzw. jQuery Mobile und Collapsibles arbeitet, kann sich das Layout seiner Seite gehörig zerschießen, wenn er den Titel des Collapsibles via knockout.js bindet. Der Unterschied ist klein, aber delikat: | When working with jQuery UI or jQuery Mobile and using Collapsibles, you can mess up your layout by binding the heading of the Collapsible via knockout.js. The difference between good and bad is both small and important: |
| Falsch/Bad | Gut/Good |
|---|---|
|
<div data-role="collapsible">
<h3 data-bind="text: property"></h3> <p>...</p> </div> | <div data-role="collapsible">
<h3> <span data-bind="text: property"></span> </h3> <p>...</p> </div> |
| Erklärung | Details |
|---|---|
| Mit dem text-Binding von knockout.js wird der gesamte Markup innerhalb des h3 Elements auf den gebundenen Wert gesetzt. Dabei würde der jQuery UI/Mobile Markup des Collapsibles überschrieben, sobald der gebundene Wert sich ändert. Im span-Element richtet das Binding hingegen keinen Schaden an. | The text-binding of knockout.js will set all markup code within the h3 element to the bound value. This would destroy jQuery UI/Mobile markup of the Collapsible as soon as the bound value changes. Anyway, the binding will not cause any problems inside of the nested span element. |
Donnerstag, 30. Januar 2014
Mein Wunschzettel an die perfekte Programmiersprache
Lesbare Syntax
Typstrenge, keine Pointer-Arithmetik - aber sichere Zeiger
Native Unterstützung für verschiedene Mengen
Generics
Objektorientierung, Interfaces, implizite Interfaces
Threads und Tasks, Rendez-vous, Message-basierte Kommunikation
Reflection, AOP, Metamodell
Memory Management
Bibliotheken, Bibliotheken, Bibliotheken - aber bitte sinnig
- XML Verarbarbeitung
- HTTP/Web-Clients
- Web-Services (REST, WS-HTTP, ...)
- Cryptographie
- Komprimierung
- Bildverarbeitung
- GUI
- ...
Contracts, Preconditions, Postconditions - verfügbar und optional
Und jetzt bist du dran! Was steht auf deinem Wunschzettel an die perfekte Programmiersprache?
Mittwoch, 23. Oktober 2013
DragDrop registration did not succeed
| Deutsch | English |
|---|---|
| Mein C# Programm hat einen Laufzeitfehler mit folgendem Text verusacht: | My C# program caused an exception with the following message: |
System.InvalidOperationException: DragDrop registration did not succeed. ---> System.Threading.ThreadStateException: Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it.
at System.Windows.Forms.Control.SetAcceptDrops(Boolean accept) --- End of inner exception stack trace --- at System.Windows.Forms.Control.SetAcceptDrops(Boolean accept) at System.Windows.Forms.Control.OnHandleCreated(EventArgs e) at DevExpress.XtraTreeList.TreeList.OnHandleCreated(EventArgs e) at System.Windows.Forms.Control.WmCreate(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m) at DevExpress.XtraTreeList.TreeList.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) |
|
| Ich habe eine Weile gebraucht, aber schließlich die Fehlerursache gefunden: | It took me some time to find the reason for this: |
| Das Programm hat in einem BackgroundWorker Controls instanziiert und deren Handle erzeugt. Da BackgroundWorker IMMER im MTA Modus arbeitet, kommt es zu dieser Exception. | The program used a BackgroundWorker to instantiate controls. The thread of BackgroundWorker is always in MTA, leading to the exception. |
| Was tun? | How to fix it? |
| BackgroundWorker muss durch einen richtigen Thread ersetzt werden, denn an diesem Thread kann man noch vor dem Ausführen via SetApartmentState auf STA umschwenken. | BackgroundWorker needs to be replaced by a real Thread, you can then use SetApartmentState to switch to STA. |
Freitag, 19. Juli 2013
Parent Columns and Child Columns don't have type-matching columns.
Today I got an exception with the following message and stack trace when deserializing a DataSet.
Parent Columns and Child Columns don't have type-matching columns.
at System.Data.DataRelation.CheckState()
at System.Data.DataRelation.Create(String relationName, DataColumn[] parentColumns, DataColumn[] childColumns, Boolean createConstraints)
at System.Data.DataRelation..ctor(String relationName, DataColumn[] parentColumns, DataColumn[] childColumns)
at System.Data.XSDSchema.HandleKeyref(XmlSchemaKeyref keyref)
at System.Data.XSDSchema.HandleDataSet(XmlSchemaElement node, Boolean isNewDataSet)
at System.Data.XSDSchema.LoadSchema(XmlSchemaSet schemaSet, DataSet ds)
at System.Data.DataSet.ReadXml(XmlReader reader, XmlReadMode mode, Boolean denyResolving)
at System.Data.DataSet.ReadXmlSerializable(XmlReader reader)
at System.Data.DataSet.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
at System.Xml.Serialization.XmlSerializationReader.ReadSerializable(IXmlSerializable serializable, Boolean wrappedAny)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrionWS.Read35_ServerActionResponse()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer64.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
However, the columns did have the same data type. It took me ages to find out that they need to have the same DateTimeMode as well.
Deutsch:
Ich habe obige Exception und Stacktrace erhalten beim Deserialisieren eines DataSet.
Dabei hatten die Spalten den selben Datentyp. Es hat ewig gedauert herauszufinden, dass die Spalten auch den gleichen DateTimeMode haben müsen.
Donnerstag, 18. Juli 2013
Warum Microsoft, Yahoo, Google und co Interesse an Transparenz haben
(A) Das US Gesetz zwingt diese Unternehmen dazu, keine Aussagen zur Überwachung zu machen oder gar zu lügen. Der Image-Schaden dafür landet aber bei den Unternehmen, nicht bei der NSA. Auch die Kosten für Pressearbeit und Promotion bleiben an den Unternehmen hängen.
(B) Die Unternehmen wollen sich nicht vorwerfen lassen, Terror oder Verbrechen zu unterstützen. Auch das schadet dem Image. Und auf die paar Leute, die entweder selbst Verbrecher sind oder die gesteigerten Wert auf Datenschutz legen, können die Unternehmen sehr gut verzichten.
(C) Die Unternehmen wollen nicht als Datenkraken dastehen, sondern als verlässliche Partner für die Wirtschaft. Kein Unternehmen wird sich aber darauf einlassen, seine Daten in Microsofts, Amazons oder Googles Cloud zu legen (und dafür zu bezahlen), wenn die Gefahr von Diebstahl und Wirtschaftsspionage besteht. Solch ein Image-Schaden könnten die gesamte Cloud-Blase der IT Industrie platzen lassen und damit auch die erhoffte Zukunft der Branche.
Freitag, 8. März 2013
Die Reise
Das Spiel kommt nicht daher wie die meisten anderen Spiele. Es geht nicht ums Abschießen von anderen, um Kriegführung, Strategie oder Simulation. Stattdessen führt der Spieler seinen Avatar durch eine lange, poetische Reise. Ja, das Spiel ist poetisch. Es strotzt vor Symbolen und Sinnbildlichkeit. Die Reise ist das Symbol für den Lebensweg, und alles was auf dieser Reise geschieht, lässt sich als ein spezielles Ereignis auf dem Lebensweg deuten. (z.B. das Lernen von Sprache)
Ich habe obiges Video mit Genuss betrachtet und spreche den Machern ein Kompliment aus für das vielleicht gelungenste Spiel der letzten Jahre.
Mittwoch, 23. Januar 2013
Falsche Farben bei Videos in Totem, MiniTube etc. / Wrong colors of videos in Totem, MiniTube etc.
Deutsch
|
English
|
| Auf meinem Ubuntu Linux System stellen Totem, MiniTube und andere Videoabspieler (aber nicht Flash und HTML5 Videos im Browser) falsche Farben dar. Blauer Himmel wird z.B. orange, Gesichter grün. | On my Ubuntu Linux system Totem, MiniTube and other video players (but not Flash and HTML5 videos in browsers) get displayed with wrong colors. For example, blue sky turns orange, faces turn green. |
| Das liegt an einer verstellten Einstellung zum Farbton von Videos. (Siehe Ubuntu Forum) Unter askubuntu findet man die Lösung: | This is caused by a wrong setting of the hue on video playback. (see Ubuntu forum) The fix for this has been provided by askubuntu: |
|
|
Ein Blick auf Vala
Compiler und Tools
IDE
Die Guten, die Schlechten und die Hässlichen
- Methoden überladen - geht nicht. Methoden unterschiedlicher Signatur müssen unterschiedliche Namen haben. Das mag für einen C-Programmierer wenig ausmachen, ist aber wirklich nicht mehr Stand der Technik.
- GObject und co. - Vala nutzt die Infrastruktur von GObjekt sehr heftig, hat sie aber nicht richtig in die Sprache integriert. Wenn faktisch jede Klasse ohnehin von GLib.Objekt ableitet muss - warum ist das nicht in die Sprache integriert und ich muss es immer wieder angeben? So fühlt sich Vala immer wieder als Wrapper für GObject und Konsorten an, seien es Signale oder das lästige Speichermanagement. Es sind die technischen Schwächen von C und GObject, wegen derer man sich in Vala mit den owned und unowned Schlüsselwörtern herumschlagen muss, wegen derer Multithreading stellenweise kompliziert ist (siehe yield), wegen derer man sich Gedanken ums Speichermanagement machen muss (das tun Ada, Java und C# selbstständig).
- Es fehlt an plattformübergreifenden Bibliotheken. Python, Java, JavaScript, Ruby, C#, Delphi, Ada, diese Sprachen sind erfolgreich, weil sie einen umfangreichen Satz an Bibliotheken mitbringen, die immer und überall verfügbar sind. In Vala muss man sie sich erst besorgen. Das mag für einen C-Programmierer Alltag sein, als moderner Programmierer ist es aber einfach nur lästig.
- Default-Werte für Properties.
- Das aus C# bekannte INotifyPropertyChanged Interface, mit dem man Wertänderungen eines Properties mitgeteilt bekommt, wird in Vala praktisch automatisch umgesetzt, weil GObject es kann.
Fazit
Mittwoch, 2. Januar 2013
Unable to connect to RDP server / Verbindung zum RDP Server fehlgeschlagen
| German | English |
| Nachdem ich von meinem Rechner mit Ubuntu 12.04 lange Zeit via RDP (z.B. mit Remmina) auf einen Windows 7 Rechner zugriff, hat dies vor kurzem plötzlich aufgehört zu funktionieren mit folgendem Fehler: | I've connected to Windows 7 from my Ubuntu 12.04 for some time now via RDP (e.g. using Remmina). However, this has suddenly stopped working recently. I got the following error: |
| Verbindung zum RDP Server fehlgeschlagen | Unable to connect to RDP server |
| Das Problem steckte im Cache für bekannte Hosts und ihre Fingerprints. Dadurch wird normalerweise sichergestellt, dass man mit dem richtigen Zielrechner verbunden wird. Die Lösung für das Problem findet man mal wieder bei ask ubuntu, man muss den Cache löschen. Also einfach die Kommandozeile öffnen und folgenden Befehl ausführen: | The problem originated from a cache of known hosts and their finger prints. Normally, this would ensure that you connect to the right target PC. The solution for the problem can once again be found on ask ubuntu, you simply have to clear the cache. So open a terminal and type: |
rm ~/.freerdp/known_hosts | |
(Man kann auch das ganze Verzeichnis ~/.freerdp löschen...) |
(You could also delete the folder ~/.freerdp....) |
Mittwoch, 3. Oktober 2012
Minitube stops playing / Minitube bricht ab
| Deutsch | English |
| Das Problem: Minitube bricht beim Abspielen von Videos in Linux / Ubuntu nach wenigen Sekunden ab. | Problem: Minitube stops playing video in Linux / Ubuntu after some seconds. |
| Lösung: Lies ein langes Protokoll auf Launchpad und tippe dann folgendes in die Konsole ein: | Solution: Read a long log on Launchpad and do the following from console: |
| 32-Bit-System: sudo mv /usr/lib/ |
32-Bit-System: sudo mv /usr/lib/ |
| 64-Bit-System: sudo mv /usr/lib/ |
64-Bit-System: sudo mv /usr/lib/ |
| Voilà, jetzt Minitube neu starten und los geht's! | Done, restart Minitube and enjoy! |
Dienstag, 21. August 2012
Sharing posts from within Blogger won't work in Chrome and Chromium?
Deutsch
|
English
|
| Blogger verfügt seit einiger Zeit über eine bessere Anbindung an Google+, so dass man seine Posts direkt teilen kann. Wenn man einen neuen Post veröffentlicht oder den Teilen-Link eines Posts anklickt, soll Blogger ein Fenster öffnen, in dem man den Post in seinen Kreisen weitergeben kann. | Blogger has recently gotten a tighter integration with Google+, so that you can directly share your posts from within Blogger. When publishing a new post or when clicking the posts share-link, Blogger would open a window that lets you share the post with your circles. |
| Leider hat das bei mir bisher nicht funktioniert: Das Fenster öffnet sich in Chrome oder Chromium lediglich ganz kurz, schließt sich danach aber gleich wieder. | However, this did not work for me: The window would show up in Chrome and Chromium for a second and then immediately close. |
| Hier die Lösung des Problems: | The solution is as follows: |
| Das Problem entsteht, wenn man Cookies von Drittanbietern gesperrt hat. Man muss einfach nur folgende Ausnahmen hinzufügen: | The problem is caused by blocking third-party cookies. Just add the following exceptions to your third-party cookies section: |
[*.]google.com
[*.]blogger.com
[*.]blogspot.com
| |
| Voilà, das Fenster zum Teilen der Posts lässt sich nun öffnen! | Well done, the window for sharing your posts will show up now. |
Windows Communication Foundation - Monster die Zweite
"The sequence has been terminated by the remote endpoint. Due to a user abort the reliable session cannot continue. The reliable session was faulted."Diese und ähnliche Fehlermeldungen werden von WCF erzeugt, wenn irgendwas schief geht. Leider erachtet WCF es nicht für nötig, mich darüber zu informieren, was genau das Problem war. Ist IIS falsch konfiguriert? Ist WCF falsch konfiguriert? Stimmt meine web.config oder app.config nicht? Muss eine Betriebssystem-Einstellung angepasst werden? Kann es an der Firewall liegen? Auf alle diese Fragen gibt WCF mir keine Antwort, sondern nur kryptische und völlig uninformative Meldungen.
Also musste ich mal wieder selber alles herausfinden, was - natürlich - erheblich viel Zeit in Anspruch nimmt, aber das kennen wir bei WCF ja schon.
Also prüfte ich zuerst meine Konfiguration. In meiner Not habe ich sogar alle Ratschläge aus dem IIS Blog befolgt (die Anmerkungen zu Application Pools sind erhellend!), jedoch erfolglos.
Nach ratlosem Suchen bemerkte ich eher zufällig: Es gibt eine Methode des Services, die sich via NetTcpBinding erfolgreich aufrufen lässt. Das bedeutet also, dass IIS, Betriebssystem und WCF grundsätzlich richtig eingerichtet sind.
Also analysierte ich genauer die Methoden, die sich nicht aufrufen ließen. Dazu heftete ich meinen Debugger an den Worker Process des IIS an. So konnte ich feststellen, dass die Methoden fehlerfrei ausgeführt wurden, und zwar bis zur return-Anweisung.
Nun muss man wissen, dass die Methoden DataSet-Instanzen liefern. Hat WCF etwa ein Problem bei der Serialisierung und dem Versand von DataSets? Da viele Leute genau sowas schon gemacht haben, lautet die ermunternde Antwort: Nein. Stattdessen fand ich den Ratschlag auf StackOverflow, man solle die Quotas erhöhen.
Die Quotas legen u.a. die Maximalgröße von Arrays, Nachrichtenblöcken und Paketen fest. Wenn diese Größen überschritten werden, kommt es in WCF zu Exceptions. Und diese Fehler heißen dann nicht etwa "Quota XY exceeded", was einem ja einen Hinweis auf die Fehlerursache geben könnte, sondern... hm... z.B. "This request operation sent to XY did not receive a reply within the configured timeout", was uns natürlich in die total falsche Richtung schickt.
Nachdem ich die Quotas also entsprechend erhöht habe, lassen sich beide Bindings betreiben.
Ich möchte einen Toast aussprechen auf Microsoft und die Kunst, Probleme beim Namen zu nennen.
Freitag, 17. August 2012
Windows Communication Foundation - Monster!!!
Aber dieses Problem entpuppt sich als extrem komplex, was mich verwundert, denn die Aufgabenstellung ist kinderleicht. Mittlerweile kann ich WCF einfach nicht mehr hören. Microsoft prahlt unentwegt damit, wie toll diese Technik sein soll, ich aber sage euch: BULLSHIT! Im 21. Jahrhundert komplizierte XML Konfigurationen von Hand nehmen? Dokumentation - Fehlanzeige? Fehlerdiagnose = Eventlog? Fehlermeldungen, die überhaupt keine Anhaltspunkte liefern, was man falsch macht? Keine grafische Unterstützung durch Visual Studio oder IIS? Echt zum Kotzen das alles, aber leider alternativlos.
Also, hier die Chronik meines Leidens:
- Der asmx Web Service und seine Methoden müssen mit WCF Attributen versehen werden, wie Kenny Wolf beschreibt - bitte ignoriert aber seine web.config.
- Nun fügt man dem ASP.NET Projekt mit dem asmx Web Service einen WCF Service hinzu (.svc-Datei). Das kann man mit Visual Studio machen, dann werden schon einige tolle Eintragungen in die web.config getätigt. Die svc-Datei muss man bearbeiten und als neue Code-Behind-Datei die bestehende asmx.cs-Datei eintragen. Die alte Code-Behind-Datei kann man wegwerfen.
- Nun muss man in der MSDN nachlesen, wie man den Service konfiguriert. Schließlich zwingt WCF uns zum Verfassen von XML Konfigurationsdaten in epischem Ausmaß. Von Hand, versteht sich.
- Danach geht's immernoch nicht, weil WCF bei mir noch gar nicht im IIS registriert ist. (What the f*ck...) Also ServiceModelReg aufrufen.
- Danach geht's immernoch nicht, weil IIS noch nicht verkraftet, dass mein WCF Service erstmal nur ein WsHttpBinding mitbringt. Also schnell bei StackOverflow nach der Lösung dafür suchen: Vorübergehend schalte ich Net.Tcp ab. Auf .NET 4 will ich nicht aktualisieren, also muss ich wieder einen Sermon in die XML Konfiguration aufnehmen, etwa so:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="net.tcp://localhost"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
Ab das Binding für NetTCP habe ich ja noch gar nicht in die web.config geschrieben. Ich ahne, dass hier noch unangenehme Arbeit auf mich wartet. Und vor allem viel handgeschriebener XML Konfigurationscode.
Das Problem: Es ist fast unmöglich, Informationen darüber zu finden, wie das NetTcpBinding im IIS aufgesetzt werden muss.
- Unbedingt nachvollziehen sollte man die Schritte aus einem Schweizer MSDN Blog.
- Und nicht vergessen: Den Workaround aus Schritt 5 (oben) wieder entfernen, sonst geht's nämlich wieder nicht und man sucht stundenlang, weil es keine richtige Fehlermeldung gibt.
Ich habe meinen bestehenden asmx Web Service als WCF Service im IIS mit zwei Endpunkten (WsHttpBinding und NetTcpBinding) veröffentlicht.
Aber an der Stelle hört das Drama leider noch nicht auf. Da mein asmx Web Service rege auf die Session-Variable zugreift (zu meiner großen Freude!), werde ich noch etliche Anpassungen vornehmen müssen, denn in WCF macht man das anders.
Mir stehen also noch spannende Ereignisse bevor...
Samstag, 21. April 2012
Adobe Flash Player Rot/Blau Red/Blue
| Deutsch | English |
| Ich habe heute auf meinem Rechner mit Ubuntu ein seltsames Verhalten bemerkt, das mich einige Zeit gekostet hat: Bei YouTube Videos und anderen Inhalten, die Adobes Flash Player abspielt, sind die Farben Rot und Blau vertauscht. Dieses Verhalten zeigt sich auf meiner NVidia Grafikkarte und hängt mit der hardwarebeschleunigten Darstellung zusammen, die das Flash Plug-in gerne vornehmen will. Also muss die Hardwarebeschleunigung deaktiviert werden. Rechts-Klick auf ein laufendes Video, Einstellungen wählen - der Einstellungsdialog erscheint - reagiert aber nicht auf Mausklicks und kann nicht geschlossen werden. Die Lösung ist nicht leicht zu finden, Adobe gibt sie aber in seinem Forum: Man muss das Video im Vollbildmodus abspielen, dann die Einstellungen öffnen (diese funktionieren nun!) und kann dann die Hardwarebeschleunigung deaktivieren. Danach spielt Flash alles wieder mit richtigen Farben ab. Auf jeden Fall habe ich heute gelernt: "Google kann nicht ALLES wissen." :) |
Today I noticed the weirdest behavior of Adobes Flash Player on my Ubuntu PC which took me some time to fix: Playing content on YouTube or other sites would work, but with swapped red and blue color channels. I'm using a NVidea graphics card and the bug seems to result from a feature called hardware acceleration which is used by the Flash Plug-in. So I needed to deactivate hardware acceleration. Right-clicking a running video and choosing Settings would open the settings dialog. Anyway, the dialog freezes and wouldn't let me click or enter data, it appeared to hang. The solution was not easy to find, but Adobe actually offers a workaround on its forum: You need to play a video in full screen mode, open the settings dialog (which should work then) and deactivate hardware acceleration. After reloading the site Flash will display all colors nicely. So besides of learning how to fix this specific bug, the lesson of the day is: "Google won't find ANYTHING you're looking for." :) |
Mittwoch, 18. April 2012
WUBI vs. UNetbootin
Für Windows-Nutzer, die auf ihrem Rechner gleichzeitig auch Ubuntu betreiben möchten, gibt es im wesentlichen zwei Alternativen:
- Die Installation von Ubuntu innerhalb von Windows mittels WUBI. Dadurch wird Ubuntu wie eine normale Anwendung für Windows installiert und deinstalliert, beim Neustart des Rechners kann dann aber statt Windows auch Ubuntu gestartet werden. Ubuntu läuft dann zwar nicht in Windows, legt dort aber seine Dateien ab.
- Die Installation von Ubuntu neben Windows in einer eigenen Partition. Dazu wird eine CD oder ein USB Stick zum Booten verwendet, von dem aus der Ubuntu Installer das Betriebssystem einrichtet.
Stattdessen empfiehlt es sich, mit UNetbootin einen bootfähigen USB Stick (benötigt nur 1 GB) zu erstellen und Ubuntu dann vom Live-System auf diesem Stick zu installieren. Das ist zwar etwas langwieriger und unbequemer, bietet aber mehr Sicherheit, denn der Ubuntu Installer verkleinert die Windows-Partition und richtet beide Betriebssysteme so nebeneinander ein, dass sie sich nicht gegenseitig gefährden können. Außerdem kann man am Live-System auf dem Stick bereits testen, wie gut Ubuntu mit der eigenen Hardware zurecht kommt: Wird z.B. das WLAN erkannt? (Tip: Bei Problemen mit dem WLAN kann es helfen, im NetworkManager die IPv6 Unterstützung zu kappen...)
In diesem Sinne - frohes Installieren!
Sonntag, 5. Februar 2012
Beauty lies in Code!
Sei gespannt, schöne Open-Source-Welt!
Bis dahin lautet mein Motto: Quelltext ist voller Schönheit!
Mittwoch, 16. November 2011
Softwareupgrade
Mein gutes Gefühl währte bis zum abschließenden Rechnerneustart. Die grafische Oberfläche, an der man sich anmeldet, erschien nämlich nicht. Schluck! Ein modernes Betriebssystem ohne Grafik? ... Keine gute Idee!
Nun war es schon recht spät, aber ein Informatiker mit kaputtem Betriebssystem, das hat dann doch meine Berufsehre gekränkt. Daher schlug ich mir die Nacht um die Ohren. Woran lag's? Offensichtlich hat der proprietäre Nvidia-Grafiktreiber beim Upgrade seinen Dienst quittiert. Die Lösung beschränkte sich also darauf, die Datei /etc/X11/xorg.conf zu löschen und den Rechner neu zu starten. Danach konnte man den Treiber einfach wieder installieren.
Da bin ich nun, ich stolzer Mann, mit meinem neuen Betriebssystem. So ganz glücklich bin ich damit noch nicht, an die neuen Konzepte der Gnome-3-Shell muss ich mich erst gewöhnen und die Anpassungsmöglichkeiten sind sehr unbequem. Also muss man sich etwas mühsam durch diverse Anleitungen zum Fein-Tuning kämpfen, und auch so manche Kinderkrankheiten überwinden, z.B. zeigt die Gnome-Shell viele Anwendungen doppelt an.
Dennoch, es ist vollbracht:
Ubuntu Oneiric Ocelot mit Gnome-3 ist ein bisschen wie ein tolles Abendkleid: Wenn man erst mal drin steckt sieht es umwerfend aus, aber irgendwie zwickt den ganzen Abend lang irgendwo noch eine Naht.
Im Gegensatz zu Kunden von Firmen mit bunten Fenstern auf dem Logo darf ich aber die Hoffnung genießen, dass die nächsten Upgrades hier entscheidende Verbesserungen mit sich bringen.
Drückt mir dir Daumen!
Samstag, 30. Juli 2011
HP LaserJet P1102 on Ubuntu / Linux
This is a short guide on how to get HP LaserJet P1102 running on Ubuntu / Linux. I ran this successfully on Ubuntu 10.04. Have the printer powered off and disconnected before you start. | Das ist eine kleine Anleitung, wie man HP LaserJet P1102 auf Ubuntu / Linux installiert, ich habe das unter Ubuntu 10.04 ausprobiert. Schalte den Drucker aus und schließe ihn nicht an. |
Run a console und follow the instructions on the foo2zjs website: | Öffne eine Kommandozeile und folge der Anleitung auf der foo2zjs Web-Seite: |
wget -O foo2zjs.tar.gz | |
The printer configuration dialog appears. Now connect the printer to your computer (USB) and switch the printer on. The printer is automatically recognized by the system and gets listed in the printer configuration dialog. You're ready to go! | Das Drucker-Einstellungsfenster öffnet sich. Schließe den Drucker am Rechner an (USB) und schalte ihn an. Der Drucker wird automatisch vom System erkannt und erscheint im Drucker-Einstellungsfenster. Du kannst loslegen! |
Samstag, 1. Mai 2010
Die Sünden der Programmierer
Der Großteil aller Programme ist in der Programmiersprache C bzw. deren Erweiterung C++ geschrieben. Der Grund dafür liegt höchstwahrscheinlich darin, dass viele Entwickler gar keine andere Sprache kennen, denn dem Verstand erschließt sich dieser Sachverhalt nicht:
- C-Programme sind nicht nachweislich "schneller" als Programme in anderen Programmiersprachen.
- Die Sprache C ist nur sehr lückenhaft spezifiziert - Interpretationsspielraum und Verlässlichkeit sind aber Gegenspieler.
- C ist nicht typsicher, insbesondere wegen seiner Zeigerarithmetik. Das ist, als würde man einen Verkäufer fragen: "Wo liegen die Bananen?" und er weist einen den Weg in die Spielzeugabteilung. Moderne Sprachen unterbinden das.
- C prüft nicht. Arrays in C sind deshalb nicht sicher. Es ist, als würde man ein Auto mit 5 Plätzen kaufen können, und 6 Leute hineinstecken. Moderne Programmiersprachen unterbinden das. In modernen Sprachen fallen viele Programmierfehler schon beim Programmieren auf - bei C entdeckt der Benutzer sie erst bei der Benutzung des Programms.
- C ist schwer lesbar. Es ist viel schwerer, einen Fehler in einem C-Programm zu finden, weil man viel länger braucht, überhaupt erstmal den Sinn des Programms zu verstehen.
- Programmiersprachen sind Religionen. Jeder meint, die richtige zu haben. Das macht den Blick dicht dafür, eine bessere Lösung zu erforschen.
Ein nicht unwesentlicher Grund dafür, das Programme abstürzen, Bankkonten von Betrügern leer geräumt werden und private Details ausspioniert werden können, ist also darin zu finden, dass man etwas nicht mehr ändern möchte, weil es "gewachsen" ist.
Krebs ist auch oft gewachsen.

