Ich hatte kürzlich eine Diskussion über die Suche nach einer Methode, um wirklich zufällige Zahlen zu erzeugen. Die Diskussion endete damit, atmosphärische Geräusche zu verwenden. Hat jemand das getan? Was ist daran beteiligt? Hat jemand einen Webservice erstellt, der Zufallszahlen zurückgibt, die aus Rauschen stammen?
Ihre beste Wette für einen Web-Service für Zufälligkeit ist RANDOM.ORG , sie verwenden atmosphärischen Lärm als Quelle von Entropie:
RANDOM.ORG ist ein echter Zufallszahlenservice, der Zufälligkeit über atmosphärisches Rauschen erzeugt.
Interessanterweise untersucht Intel zurzeit eine Methode zur Einbettung von Zufallszahlen basierend auf Spannungs- und Temperaturschwankungen innerhalb eines Chips a>. Während es möglich ist, Zufälligkeit basierend auf Rauschen außerhalb eines Prozessors als eine externe Einheit zu erzeugen, wenn der Generator außerhalb der CPU ist, ist es möglich, Leistungsbeschränkungen und andere Faktoren für den Generator zu isolieren, wodurch die externe Einheit anfälliger wird . Aus dem Artikel:
Die Schaltung in den Hauptprozessor zu bauen, schließt diese Möglichkeit aus, sagt Krishnamurthy, obwohl die Barriere dazu praktisch war. Die am besten etablierten Verfahren zum Erzeugen von Zufallszahlen verwenden analoge Schaltungen, die sich auf thermisches Rauschen als eine Quelle der Zufälligkeit stützen, und diese Schaltungen werden nicht einfach mit den Techniken hergestellt, die verwendet werden, um die digitalen Schaltungen eines Mikroprozessors herzustellen. Sie lassen sich auch nicht einfach auf die Größe von Bauteilen moderner Chips herunterskalieren.
Sie können RANDOM.ORG verwenden, um echte Zufallszahlen zu erhalten. Sie haben sowohl eine Website als auch einen Webservice, die dies unterstützen, und benutzen atmosphärisches Rauschen (IIRC), um die Werte zu erzeugen.
Die API für ihr HTTP-Protokoll ist hier verfügbar .
Random.org macht das, wenn ich mich richtig erinnere. Sie verwenden atmosphärisches Rauschen, weil es sehr wenig "gemusterten" Rauschen aufweist, das die gewünschte gleichmäßige Verteilung verzerrt.
Tags und Links .net random web-services
Ich würde "konzeptionelles Gewicht" als die Anzahl der abstrakten Konzepte interpretieren, die Sie lernen und verstehen müssen, um die API zu verwenden. Konzepte werden normalerweise öffentlichen Klassen zugeordnet, während Klassen, die nicht öffentlich sind, zu der Hauptkomponente, aber nicht zur konzeptionellen Gewichtung hinzugefügt werden.
Wenn Sie es also technisch ausdrücken, hat eine API ein hohes konzeptionelles Gewicht, wenn ein typischer API-Client explizit viele Klassen der API verwenden muss, um damit zu arbeiten.
"Gutes Leistungsgewicht" bedeutet dann, dass die API so wenig öffentliche Klassen wie möglich verwenden sollte, um so viel Funktionalität wie möglich anzubieten. Das bedeutet eine API sollte:
Ich nehme an, dass eine API mit einem guten Leistungsgewicht eine API ist, die eine Menge Funktionalität (Leistung) bietet, während sie nur wenig Aufwand erfordert, damit sie richtig funktioniert (gewichtet).
Dies kann beispielsweise über "Convention over Configuration" erfolgen. (Beachten Sie, dass dies nur ein Beispiel ist und Sie dies auf verschiedene Arten erreichen können.)
Es wäre hilfreich, einen Link zu Blochs Präsentation zu haben, er könnte sich auf etwas anderes beziehen: -)
In Blochs Präsentation sagte er, dass der Designer nach einem guten Leistungsgewicht für API suchen sollte. Darüber hinaus betonte er, dass konzeptionelles Gewicht wichtiger ist als Bulk . Ich denke, das Gewicht ist für ' konzeptionelles Gewicht ', Masse ist für die Anzahl der Methoden einer Klasse.
Aber ich konnte nicht verstehen, was " konzeptionelles Gewicht " ist, was " Macht-Gewicht-Verhältnis " ist. Willkommen zu jeder Erklärung!
Bloch gab ein Beispiel: %code% hat ein gutes Leistungsgewicht. Wenn Kunden einen Index einer Unterliste wissen wollen, muss er nicht eine niedrige "p2w ratio" -Methode %code% aufrufen, stattdessen könnte er %code% aufrufen. Bloch hielt dies für ein "Leistungsgewicht".
Herkunft:
API sollte so klein wie möglich, aber nicht kleiner sein
Ich würde das sagen
Ein weiterer wesentlicher Aspekt des Leistungsgewichtes einer API oder gar einer Sprache als Ganzes ist ihre Ausführlichkeit. Das heißt, wie viel Sie eingeben müssen, um eine Aufgabe zu erledigen und die Lesbarkeit des resultierenden Codes. In Java hat %code% ein besseres Leistungsgewicht als %code% , die Schnittstelle, die es ersetzen sollte, weil %code% einen kürzeren Namen und kürzere Methodennamen hat, die nicht länger sind als sie benötigen sei und mache den gleichen Job ohne Verlust an Klarheit (wie auch die zusätzliche Methode %code% ).
Er bezieht sich auf all die Dinge, die Sie durch die Verwendung einer API erhalten. Sein Beispiel ist das Collections-API, bei dem Sie bei jedem Zugriff nur bestimmte Funktionen erhalten. Auf der anderen Seite werden einige APIs viel mehr laden, nur um Ihnen einige Funktionen zu geben.