Archiv Mai 2008


Das Rechenmodul

Das "Modul" ist eine der aritmentiche auf nahezu allen Programmiersprachen (Ich habe es das erste Mal mit dem Grund Commodore 64) . Es kann als eine einfache Bediener erscheinen, wie im Fall von Actionscript oder Javascript verwenden, die sowohl den Charakter "Prozent" (a% b) oder als Methode oder Bildung. Für Entwickler können in Zusammenhängen nützlich scheinbar voneinander verschieden sein. Gskinner sprach vor kurzer Zeit, die einige Klassiker, aber interessante Beispiele.

Einfach ausgedrückt, bilden der Betrieb kehrt zwischen zwei Zahlen der Rest ihrer Division. Der Vollständigkeit halber sagen wir, dass der Betrieb des Moduls ist ein sehr breites Thema, das ich in deckte auch die RSA-Verschlüsselung ! Dieses Mal werden wir aber nicht von Codes oder Chiffren, aber nützliche Dinge und viel einfacher zu sprechen.

Teilbar durch Wechsel ...

Der erste Einsatz kann man den Betrieb des Moduls zu machen ist, um zu bestimmen, ob eine Zahl teilbar ist durch eine Anzahl b! Wenn der risultatto eines% b (I verwenden hier die Notation%, um den Betrieb des Moduls angeben) Null ist, was durch b teilbar ist. Ich erinnere mich, als ich mit einem ähnlichen Problem umzugehen wusste ich nicht, den Betrieb des Moduls. Auf dem Commodore 64 musste ich wissen, ob eine Zahl durch 2 teilbar war an der Zeit, die ich verwendet diese Syntax (ich den Code gefunden origionale - 1983).:

1
2
3
10 INPUT A
12 B = A / 2: IF B = INT (B) THEN PRINT "OK DIE ZAHL" A "UND" EVEN ": GOTO 10
14 PRINT "DIE ZAHL" A "UND" ODD ": GOTO 10

Der Commodore 64 BASIC, jedoch nicht den Betrieb des Moduls besitzen - zumindest, dass ich mich erinnern kann!

In der Praxis tat ich genau das, was seiner Natur macht die Aufgabe des Moduls: nur die Überprüfung, dass die Division durch 2 hatte keine Ruhe, in diesem Fall nur die Überprüfung, dass das Ergebnis nicht Dezimalstellen enthalten ( IF B = INT(B) )! Wenn die Teilungsoperation gleich seine ganze Zahl ist, dann ist die Zahl sogar noch!

Wenn a unseren Wert überwacht werden, können durch die gleiche Sache zu beschließen:

1
2
3
a % 2 ) == 0 ) { if ((a% 2) == 0) {
/ / Auch
}

Oder der 3, nach:

1
2
3
a % 3 ) == 0 ) { if ((3%) == 0) {
/ / Durch 3 teilbar
}

Kleine Anmerkung: Dank der Strecke, wenn es mit den Mächten der zwei ihm auch dort ein schneller Weg, um zu überprüfen, ob eine Zahl gerade oder ungerade zu tun hat. In binärer Schreibweise, in der Tat, sind die Zahlen alle gleich Null sind, das erste Bit! Unter Verwendung der logischen Operatoren, ist es möglich, zu wissen, ob eine Zahl ungerade oder einfach "testanto" das erste Bit:

1
2
3
! ( a & 1 ) ) { if (! (a & 1)) {
/ / Auch
}

Bei der Montage wird beispielsweise ist dies der tägliche Brot! Es ist sogar noch unmittelbarer und einfach (das Motorola 68020, zum Beispiel, hatte eine Anweisung BTST , dass die "Header" nur ein einzelnes Bit ;) ). – moltiplicazione bit a bit) tra il nostro valore a e 1 (chiamato maschera ). Die logischen Operationen (AND, OR, NOT, XOR, etc ...), in der Tat bekannt, um schneller auf Ebene und dann eseguzione "Zeitmaschine!" (a & 1) führt die logische UND ( & - Multiplikation Bits) zwischen unseren Wert a 1 (die Maske genannt). Wenn a = 7 (00000111), zum Beispiel:

1
2
3
UND 00000111
00000001 =
00000001; ungerade

Wenn a = 8:

1
2
3
UND 00001000
00000001 =
00000000; gleich

Können wir nicht nur überprüfen, die Zahlen, das heißt, mit dem ersten Bit auf 0 gesetzt, und somit durch 2 teilbar, aber wir können auch prüfen, ob eine Zahl durch 4 teilbar, 8, 16, 32, 64, usw. ... mit den entsprechenden Formen:

1
2
3
! ( a & 3 ) ) { if (! (a & 3)) {
/ / Durch 4 teilbar (Maske = 00000011 = 3), da 4 00000100)
}

Wenn die letzten beiden Bits Null sind, ist die durch 4 teilbare Zahl! Wenn die letzten 3 Bits (Maske 00000111) Null sind, ist die Zahl teilbar durch 8! Usw :)

Gskinner zeigt die Verwendung des Moduls im Fall der Erzeugung von alternierenden Werten. Ein klassisches Beispiel ist, um den Hintergrund einer Liste von Elementen zu ändern:. Eine weiße und eine graue Linie Gskinner schlägt vor:

1
2
3
4
5
rowIndex % 2 == 0 ) { if (rowIndex% 2 == 0) {
rowcolor = 0xFFFFFF;
{ Else {}
rowcolor = 0xCCCCCC;
}

Zunächst kann der obige Code eine einzelne Codezeile gelöst werden:

1
2 == 0 ) ? 0xFFFFFF : 0xCCCCCC ; ? rowcolor = (rowIndex% 2 == 0) 0xFFFFFF: 0xCCCCCC;

Darüber hinaus ist in diesem speziellen Fall würde nicht wirklich eine "schwere" Betrieb des Moduls durchführen. Diese besondere Situation wird oft in einer Schleife beschäftigt, und so wäre es "gut" nicht auf Taktzyklen Maschine verschwenden. In diesen Fällen, Ich mag die sauberste (und logische) Lösung:

1
fooIndex == false ) ) ? 0xFFFFFF : 0xCCCCCC ; rowcolor = (fooIndex = (fooIndex == false)) 0xFFFFFF: 0xCCCCCC;

o false , a seconda di come vogliamo impostare inizialmente il nostro colore sfondo. Wo ist fooIndex precedentemete Wert wird auf true oder false , je nachdem, wie wir unsere Hintergrundfarbe zunächst eingestellt. Dieser Ansatz ist subtiler und weniger direkt auf den ersten Blick, aber schneller, weil es führt logische Operationen von true / false. la condizione (fooIndex == false) sarà falsa e di conseguenza fooIndex verrà impostato da true a false. Wenn fooIndex wahr ist, wenn die Anweisung ausgeführt wird (fooIndex = (fooIndex == false) ) die Bedingung (fooIndex == false) ist falsch und daher fooIndex wird von true auf false gesetzt werden. verrà impostato da false a true! Das zweite Mal, aber die Bedingung (fooIndex == false) und dann wird es wahr sein fooIndex wird von false auf true gesetzt werden! Usw ...

Wiederholungen: um das Verhalten zu beobachten

Die Finite-Arithmetik, die die Grundlage für den Betrieb der Betrieb des Moduls ist, wird es häufig als Takt Arithmetik bezeichnet. Eine klassische Uhr mit Zeigern hat ein Zifferblatt in 12 Stunden (12 Tage Nacht plus 12!), Ausreichend, um eine der 24 Stunden an einem Tag zeigen, unterteilt. Um 08:00 am Wenn ich Sie jetzt fragen, markieren Sie Ihre Uhr innerhalb von 18 Stunden, würden Sie antworten 8 +18 = 26! Aber 02.00 Uhr in der Nacht! Vielleicht unbeabsichtigt und ohne es zu wissen, führen wir conitnuamente Operations-Modul, wenn wir uns mit der Zeit.

In Italien sind wir zu dem System für 24 Stunden (oder gemischt) verwendet. Als wir 16.00 quell'orario bedeuten, dass in anderen Ländern werden als 4.00 bezeichnet. Wer nutzt den Postfix am / pm, aus diesen Stunden diune Nacht zu unterscheiden, führt noch oft der Betrieb des Moduls, in diesem Fall Modul 12! Wir Italiener und andere, jedoch ist gewöhnt, die 24 Stunden zu prüfen, führen wir Transaktionen mit Formular 24!

Wenn es 11 Uhr am Morgen (11.00 Uhr für alle) und denken "in 5 Stunden" wir reagieren Italienisch 5 +11 = 16 (vier am Nachmittag), könnte auch ein Ausländer beantworten 5 +11 = 4.00. Seit 5 + 11 klassischen Arithmetik, ist offensichtlich 16, ebenso wie der Fremde Antwort auf 4.00? Er führen Sie einfach das Modul 12 auf das Ergebnis: 5 + 11 = 16 mod 12 = 4 ist nicht notwendig, dass Sie einen Taschenrechner, um die Genauigkeit der Berechnung zu überprüfen, aber gehen Sie wie sie ein wenig zu tun, "alle;. zeigte ein Zifferblatt einer Uhr und legen Sie die Hände auf den 11 geistig, dann fügen - auch optisch - 5 Stunden, wie von Zauber Sie tatsächlich über 4! Das ist, warum sie vier genannt am Nachmittag 16 :)

In Italien statt, verwenden Sie ein Formular 24, in der Tat: 11 +5 = 16 mod 24 = 16 23.00 Wenn Sie am Abend sind, werden nach 5 Stunden das 28:00, weil 28 Modulo 12 = 4 nicht sein.! 122514884225 Formblatt 24 = 17! Was passiert, ist, dass das Modul Ziffer des Ergebnisses 24 überschreitet nie 24 Aber am interessantesten ist, dass die Zahlen auf unbestimmte Zeit wiederholt.:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1% 24 = 1
2% 24 = 2
3% 24 = 3
...
22% 24 = 22
23% 24 = 23
24% 24 = 0
25% 24 = 1
26% 24 = 2
27% 24 = 3
...
48% 24 = 0
49% 24 = 1
50% 24 = 2
51% 24 = 3
...

Diese Wiederholung ist eine entwaffnende Leichtigkeit. Stellen Sie sich vor, zum Beispiel, mit der ein Objekt, ein Movieclip, ähnlich einem Schachbrett haben, in vier Spalten. Erstellen Sie ein Movieclip-NE Quadrat, 55 × 55 Pixel und das Fenster Eigenschaften esportiamolo mit dem Namen Simbolo . Der folgende Code wird unser Movieclip auf vier Säulen haben und gehen "Kopf" durch den Betrieb des Moduls:

1
2
3
4
5
6
7
Number = 4 ; var col: Anzahl = 4;
var i= 0 ; i < 12 ; i ++ ) { for (var i = 0; i <12; i + +) {
Sprite = new Simbolo ( ) ; var s: Sprite = new Form ();
s ) ; addChild (s);
= ( i % col ) * 60 ; . s = x (i% col) * 60;
= Math . floor ( i / col ) * 60 ; . s y = Math Boden (i / col) * 60.
}

cresce in modo indefinito. Wie Sie aus dem Code, der Variablen sehen i -Schleife for steigt auf unbestimmte Zeit. Aber die Koordinaten x unserer Movieclip nie einen bestimmten Wert überschreitet, und wiederholt sich zeitlich unbegrenzt! Hier ist ein konkretes Beispiel:

Wird geladen ... Flash Player

Durch die beiden Regler kann die Anzahl der Spalten (der Form) und die Gesamtzahl der Elemente variieren, unter Verwendung des obigen Algorithmus.

Fortgesetzt werden ...

Papervision3D: Basicview

Papervision3D 2.0 (greatwhite) entwickelt sich ständig weiter und es gibt viele Funktionen, die fast wöchentlich hinzugefügt werden. Im April wurde auf dem Entwickler-Blog (eingeweiht http://dev.papervision3d.org/ ), aber die Version 2.0 ist noch nicht freigegeben OFFIZIELL ist oft schwierig, das wahre Potenzial zu entreißen. Einer der letzten Neuerungen eingeführt, jedoch ist das neue Objekt BasicView eine Umgebung, die 3D schafft mit wenigen Zeilen Code. Es ist genug, um dieses Objekt zur Verfügung, um die Szene zu haben, zu erstellen, und das Ansichtsfenster Zimmer auf einen Schlag.

Fortgesetzt werden ...

Google AJAX Library API: ein Wendepunkt für Entwickler

AJAX Libraries API Google , in der letzten Periode hat eine Vielzahl an Werkzeugen für Entwickler freigegeben durch die ständige Aktualisierung ihrer Releases. Jetzt hält eine Vereinbarung mit den beliebtesten AJAX-Frameworks, und nicht nur um die Verteilung der Bibliothek zentralisieren jQuery , Prototype , script.aculo.us , MooTools und Dojo !

In der Praxis ist es möglich, diese Bibliotheken nutzen die Infrastruktur und das Google-Netzwerk, mit deutlichen Vorteilen in Bezug auf Geschwindigkeit und Sicherheit zugreifen.

Die Geschwindigkeit, in der Beladung wird durch das gleiche Netzwerk, Google, neben der Bereitstellung selbst eine Struktur einer verteilten Server ermöglicht (Standard) Lade komprimiert (gzip / minify) Bibliotheken gewährleistet. Die Hosting Google näher an die Anfrage wird verwendet, um den Code zu senden und, im Falle der nicht zu erreichen oder unten vorübergehend, wird das Google-Netzwerk zu gewährleisten, aber das Senden der Javascript-Code!

Fortgesetzt werden ...

undolibrary: Actionscript 3.0-Bibliothek auf Google Code

Ich öffnete ein Projekt auf Google Code : undolibrary. Denn jetzt, enthält diese Bibliothek nur eine Komponente (Regler - Regler), um mit Actionscript 3.0 verwendet werden. Ich erwähne dies, weil diese Komponente Vorbereitung einer Reihe von Tutorials / Quellen in Flash, die ich wollte verfügbar zu machen.

Wird geladen ... Flash Player

Google Code

Zunächst stelle ich das Konzept der Google Code für die, die fremd waren. Google Code ist ein kostenloser Service von Google, um die Code-Aktien zur Verfügung gestellt, sondern vor allem, um in einer kooperativen Weise mit einem Versionierungssystem (Subversion) Aktien und Wikis sinnvoll, Entwicklungsgruppen (vor allem Open Source) oder auf einzelne Programmierer. Auf der Google-Code-Seite enthalten:

Sie können für andere Projekte mit einer Suchmaschine speziell gebaut zu suchen. Viele Entwicklungsgruppen, bestehend aus Teams, die in weit entfernten geografischen Gebieten befinden, die Vorteile dieser Austausch zusammen zu arbeiten, durch eine gut etablierte System der Versionsverwaltung (- Spin-Off von Projekten zur Kasse / checkin nicht überlappen oder supproto zu Ast zu erstellen) gesichert . Bibliotheken und Werkzeuge wie Papervision3D , Tweener oder as3corelib , die beispielsweise direkt auf Google Code genießen eine Seite eines Hosting und Entwicklung von anderen öffentlichen Zugriff auf die Quelle und Dokumentationen herunterladen entfernt.
Wichtiger Punkt, dann ist die Möglichkeit - ein Projekt öffnen - um den Zugang und die Betrachtungs gesetzt. Wenn Sie möchten, können Sie Ihre Arbeit zu schützen oder es komplett privat, und nicht als öffentliche.

Fortgesetzt werden ...

Adobe Dreamweaver CS4 Beta-Vorschau

Adobe Labs

Auf Adobe Labs zur Verfügung Beta von Adobe Dreamweaver CS4 (Stiletto), Adobe Fireworks und Adobe Soundbooth ! Es ist möglich, die Beta-Version von Dreamweaver parallel zur bestehenden installieren, aber Sie können nur eine Instanz der Anwendung (oder CS4 oder CS3 Beta, zum Beispiel). Adobe empfiehlt jedoch, dass Sie eine Sicherungskopie aller Einstellungen vornehmen und betonte, dass ein Beta- nichts über Probleme zu garantieren.

Zu den interessantesten, abgesehen von der völlig neu gestalteten Benutzeroberfläche, verfügbar in Dreamweaver beta, finden wir:

  • Live View: Mit der Einführung des Open Source WebKit-Engine (das gleiche von Safari und Adobe AIR verwendet wird) ist nun möglich, mit Code und Vorschau zugleich arbeiten mit einer Ausbeute WYSIWYG noch nie gesehen
  • Support-Code-Hinting (Autovervollständigung / Synopse) für einige Ajax-Frameworks: jQuery, Prototype und Spry (schade, es war nicht enthalten, selbst Mootools)
  • Integration mit Subversion! Es war an der Zeit!
  • Support (native) Adobe AIR - so einfach zusätzliche Erweiterungen

Auf Adobe TV ( http://tv.adobe.com ) können Sie diese Demonstrationen von Beta folgen!

Ansätze, also die Zeit, um das gesamte Paket zu aktualisieren ...

Fortgesetzt werden ...

Optimieren Sie das Laden einer Website

Dank der Anregungen und Ratschläge von David Salerno versucht, die Belastung der undolog.com Aktivitäten, die, als eine Frage der "Zeit", hatte ich immer abschrecken zu optimieren. In der Tat war ich nicht in der Lage, all die kostbaren direkt zu David bewerben, aber ich war in der Lage, einen guten zu geben "aufgeräumt" und überhaupt reduzieren die Ladezeit!

Reduktion von Widgets, Badget und Antipixel

Das erste, was ich tat, war, die von den verschiedenen Widgets im Blog enthalten hergestellt Belastung zu minimieren:

  • Ich sank die Zeilen im Widget angezeigt MyBlogLog : 10 bis 5 Zeilen
  • Ich löschte den antipixel von Blogroll
  • Bibliothek aNoobi zeigen zwei Bücher statt 5

Fortgesetzt werden ...

(Mt) Media Temple: Exchange Hosting

(Mt) Media Temple

Nachdem die Probleme der Ausfallzeit (und sehr wenig nach unten Zeit) in den letzten Monaten hatte (und ich meine Monate), ich hoffe, ich habe die richtige Wahl für das Hosting undolog.com gemacht! Ich entschied mich (mt) Media Temple , robust und "bekannte" Hosting hoch skalierbar.

Fortgesetzt werden ...

Jetzt Live, Radiopodcast

Radiopodcast

Heute Abend um 21:40 Uhr, mit Live- DJ Frank und Thomas Tessarolo ! Wir diskutieren Current.TV und mehr! Voran Sie nicht mehr Überraschungen! :)

Fortgesetzt werden ...

Erstellen Sie benutzerdefinierte Ereignisse in Actionscript 3.0

Erstellen Sie benutzerdefinierte Ereignisse in Actionscript 3.0 ist sehr einfach. Benutzen Sie sie, dann kann die Methode addEventListener() und unsere Aufgabe aller Standards. ) BottoneEvent . Wenn wir eine Klasse, wie geschaffen Bottone ist es richtig, auf eine oder mehrere Veranstaltungen in dieser durch eine spezielle Klasse (abgeleitet von der Klasse zuordnen Event ) BottoneEvent . Der Klick mit der Maus über, oder jede andere Veranstaltung: Wir könnten alle Ereignisse, die den Betrieb unseres Themas zu erreichen! Auch die Definition unserer persönlichen Basis. Das Skelett - generisch - eine benutzerdefinierte Ereignisklasse ist:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package {
/ *
** @ Name: BottoneEvent.as
@ ** Beschreibung: Klasse von Ereignis abgeleitet, um ihre eigenen Veranstaltung verwalten
** @ Autor: = rückgängig machen =
@ ** Web: http://www.undolog.com
** @ E-Mail: @ g.fazioli undolog.com
* /
.*; Import flash.events *.

BottoneEvent extends Event { public class BottoneEvent erstreckt Ereignis {

String = 'pluto' ; // codice qualsiasi, anche 'mioevento' in minuscolo public static const MIOEVENTO: String = 'bar', / / jeder Code, auch 'mioevento "in Kleinbuchstaben

Valore : Number = NaN ; public var-Wert: Anzahl = NaN;
/ *
** @ Name: BottoneEvent
@ ** Beschreibung: Konstruktor
* /
public function BottoneEvent ( type : String , v : Number , bubbles : Boolean = false , cancelable : Boolean = false ) : void {
type , bubbles , cancelable ) ; super (Typ, blasen, kündbaren);
Value = v ; . Dieser Wert = v;
}

/ *
@ Override **
* /
clone ( ) : Event { überschreiben public function clone (): Event- {
this . type , this . Value , this . bubbles , this . cancelable ) ; return new KnobEvent (this. Typ, dieser Wert ist, diese Blasen, diese stornierbar...);
}
}
}

Fortgesetzt werden ...

FIVe3D: Spezialeffekte auf einem Würfel! Warten auf Flash 10

Wahrscheinlich wird es freigegeben werden, wenn die neue Version von Adobe Flash, 3D-Bibliotheken auf "niedrigem Niveau", wie FIVe3D ein schlechtes Ende zu machen! Doch bevor "cestinarle", hier ist ein Beispiel dafür, was (mit der neuesten Version 2.1) erreicht werden:

Wird geladen ... Flash Player

Der Code der Demo ist ganz oben zu artikulieren, so dass ich nicht in seiner Gesamtheit Online vorzuschlagen. Ich poste, aber einige interessante Teile des Codes.

Update: für die Quelle klicken Sie hier

Fortgesetzt werden ...