Tuesday 31 October 2017

Forex Scanner Pro


Menu Home Software Funktionen und Editionen von ChartAlertreg mdash End-of-Day Software mdash Advisory, Charting und Scansoftware mdash Inkl. EoD NSEBSEMCXNCDEXGlobal Daten mdash Wird 3rd-Party-Echtzeit-Daten in der Zukunft Galerie mdash Screenshots von ChartAlertreg Demos mdash Flash-basierte Videos von ChartAlertreg Zukunft lesen Mitteilungen mdash Enthält Geschichte von früheren Versionen 4-wöchige Auswertung Test mdash Rs.1000 Nur mdash Verfügbar einmal pro 12 Monate Kauf Bestellen über CCAvenue mdash Secure Online Payment Gateway Jetzt mdash Erneuern über CCAvenue Secure Online Payment Gateway mdash Rabatte zur Verfügung, wenn Sie ein aktives Abonnement Zahlungsoptionen mdash Direct Deposit zum CashChqNEFT Zahlungen mdash Sichere Online-Zahlungsdetails Downloads ChartAlertreg mdash herunterladen Herunterladen, Installieren und Aktivieren von mdash Reaktivieren auf einem anderen Computer mdash Upgrade auf ein neues Versionshandbuch Update mdash Tägliche Datendateien mdash Nützlich, wenn WebUpdate nicht funktioniert FAQs Kontakt Diagramm und Scan 1 MetaStock 2-Format Echtzeit - oder Intraday-Datenströme während der Handelszeiten Im MetaRefresher 2-Modus von Datenanbietern von Drittanbietern 1 Der Advanced Scanner in ChartAlert kann zum manuellen Scannen von Drittanbieterdaten verwendet werden 2 MetaStock reg andor MetaRefresher reg muss nicht auf Ihrem Computer installiert sein ChartAlert reg mdash Das ideale Echtzeit - und End-of-Day-Software für Charting und Scanning NSEBSE Aktien und Aktienindizes, NSE-Futures und Index-Optionen, NSE Währungsderivate und MCXNCDEX Rohstoffe mdash Es Advisories für den indischen Aktienmarkt xf1fe Liste der Technische Indikatoren auch in ChartAlertreg Absolute Breitenindex Accumulation Schaukel Index AccumulationDistribution Linie AdvanceDecline Linie AdvanceDecline Linienbreite AdvanceDecline Verhältnis Advancing-Rückläufige Ausgaben Arme Index (TRIN) Aroon Oscillator Aroon AufAb Average True Range Bollinger B Bollinger Band Breite Bollinger Bands Bolton-Tremblay-Indikator Breite Thrust CCI mdash ChartAlertreg Chaikin AD Oszillator Chaikin Money Flow Chaikin Volatilität Chande Momentum Oscillator Kronleuchter-Ausstieg Schließen Standort Wert Commodity Channel Index Commodity Selection Index Vergleichsleistungsvergleichs Relative Strength Index Vergleichs Relative Strength Indicator Coppock Indikator kumulativer Volumenindex Darvas Box DEMA Nachfrage Index Preis trendbeseitigten Price Oscillator Directional Movement Index Donchian Kanal Donchian Kanalbreite unten De-trended Durchschnittliche dynamische Momentum Index Leichtigkeit der Bewegung ElliottWave Oscillator Envelope Schnelle Stochastic Force-Index Forecast Oszillator Heikin-Ashi Ichimoku Inertia Insync Index Intraday Momentum Index Keltner Channels Keltner Channels (ATR) Klinger Oszillator-Know Sure Thing (KST) Lineare Regression Indikator MACD MACD mdash ChartAlertreg Markt Facilitation Index-Mass-Index McClellan Oszillator MESA Sinus Momentum Money Flow Index Moving Average Confluence Moving Average Band Moving Average Band (Displaced) Negative Volume Index Net Momentum Oscillator On Balance Volume Parabolic SAR Leistung Polarized Fractal Efficiency Positive Volume Index Price Oscillator Preis Volumen Rang Preis Put-Call-Verhältnis (OI-Kontrakte) Put-Call-Verhältnis (OI-Indexkontrakte) Put-Call-Verhältnis (OI-Gesamtkontrakte) Put-Call Ratio (Aktienkontrakte) insgesamt Verträge) Qstick Random Walk Index Bereichsanzeige Änderungsrate Relative Momentum Index Relative Performance Relative Strength Index Relative Volatility Index RSI mdash ChartAlertreg r-squared RVI mdash ChartAlertreg Slow Stochastic Standardfehler Bands STIX Stochastic Momentum Index Stochastic StochRSI Supertrend Indikator Swing-Index T3 TEMA Zeitreihen Vorhersage Traders Routine mdash Pivot Punkte und Trend TRIX Wahre Stärke Index Twiggs Money Flow Ultimate Oscillator UpsideDownside Verhältnis UpsideDownside Volumen vertikal horizontal Filter VIDYA Volatilität Verhältnis Volumen Volumen Rate Indikator Oszillator Volumen Preis Bestätigung Veränderung Volumen VolumeDelyVolume Open Interest Wilders Glättung Williams R Williams Acc. Dist. Zero-Lag EMA Zig Zag mdash Standard-Zickzack-Schwingen mdash Charting Zig Zag mdash Swing-Charting (Custom) Zig Zag mdash Swing-Charting (NT) Erweiterte Scanner xf00c C hart A lert reg enthält eine leistungsstarke L anguage mdash reg Scripting Language CASL xf00c schreiben S cripting CASL-basierte Scanning-Algorithmen mdash in einfachen und einfachen Englisch mdash, die für bullish und bärische Signale scannen xf00c Factory Scans Algorithmen sind für Candlesticks und Chart-Muster zur Verfügung. Technische Indikatoren und Handelssysteme xf00c Der eingebaute TEP xf059 hilft Ihnen, Scans zu editieren, zahlreiche ANDOR-Bedingungen zu verwenden, Filter zu verwenden, mehrere Scans zu kombinieren usw. xf00c Kommt mit Tonnen von Factory Scans. Deren Parameter vom Endbenutzer kopiert, angepasst, gespeichert und wiederverwendet werden können. Grundlegende Scanner xf00c Die maschinengesteuerte Pattern Detection und Scanning Engine kann nach Patterns xf059 und potenziellen Bullish - und Bearish-Signalen scannen. Xf059 xf00c Die Scan-Ausgabe wird veröffentlicht In einem extrem anpassbaren und umfangreich manipulierbaren Rasterformatbericht xf00c Kommt mit Tonnen von Fabrikscans. Deren Parameter vom Endbenutzer kopiert, angepasst, gespeichert und wiederverwendet werden können End of Day Daten xf00c ChartAlert reg enthält End-of-Day Daten ohne zusätzliche Kosten xf00c NSE mdash Aktien-Futures, Index-Optionen, Währung Derivate xf00c Global mdash Aktienindizes, Rohstoffe Futures, Forex, Baltic Freight Index Drittanbieter-Echtzeitdaten xf00c ChartAlert reg können MetaStock-Reg-Format lesen Echtzeitdaten-Streaming im MetaRefresher-Regime-Modus von Drittanbieter-Datenanbietern Coming Alerts aka Auto-Scanning mdash Leise im Hintergrund mdash für Patterns xf059 und potenzielle Bullish und Bearish Signale xf059 A ChartAlert reg Abonnement nicht enthalten Echtzeit-Daten MetaStockreg MetaRefresherreg müssen nicht auf Ihrem Computer installiert werden, um 3rd-Party-Echtzeit-Daten zu erhalten Benutzerfreundlich ChartAlert Reg ist einfach Zum Herunterladen, Installieren und Einrichten. Sobald es aktiviert ist, ist ChartAlert reg einfach zu verstehen und zu verwenden, da seine freundliche Schnittstelle. Ausführliche Dokumentation ChartAlert reg wird mit umfassenden Hilfedateien ausgeliefert, die die verfügbaren Funktionen nutzen. Es enthält auch detaillierte Dokumentation zu reg Scripting LanguageCASL-Funktionen. Kostenlose Upgrades Alle Software-Upgrades sind während eines Abonnements absolut kostenlos. Dies schließt den Zugriff auf zukünftige Versionen auch während Ihres 4-wk Evaluation Trial. Völlig kundengerecht Alle ChartAlert Regaleigenschaften sind völlig kundengerechtes mdash Es ist so einfach wie ein linker Mausklick und die kundenspezifischen Einstellungen können durch die Software für immer gespeichert werden. Multi-Threaded und Fast ChartAlert Reg ist voll multi-threaded. Dies macht die tägliche Datenaktualisierung und Scan-Prozesse blitzschnell. MT wird auch helfen, RT-Charting-Scan in der Zukunft. Friendly Support Schreiben Sie, wenn Sie jemals einen Haken. Wir reagieren auf E-Mails in 24 Stunden. Wenn Ihre Anforderung komplex ist, bemühen wir uns, in 48 Stunden nach einer Lösung zu suchen und darauf zu antworten. Xf108 xf109 Rechnersystemanforderungen xf108 xf109 Computerkonfiguration. NET Framework xf17a Windows reg Betriebssystem xf179 Apple reg Computer. Parallels Desktop, VirtualBox, und so weiter. Xf17a Windows Reg OS über Boot Camp xf108 xf109 Minimum Empfohlene Computerkonfiguration Microsoft reg Windows Reg 7 mit SP1 Empfohlene Betriebssystem mdash Microsoft reg Windows Reg 7 Home Premium oder Professional mit SP1 Intel Reg Coretrade i3 2GHz CPU Empfohlene CPU mdash Intel Reg Coretrade i5 Quad-Core 3GHz 4GB RAM Empfohlener RAM mdash 8GB 500MB freier Festplattenspeicher (für Börsenberatungsarchive und technische Analysetabellen) 1024 x 768 Bildschirmauflösung Empfohlene Bildschirmauflösung mdash 1366 x 768 (oder) 1920 x 1080 Maus (oder gleichwertiges Zeigegerät ) Internetverbindung zum Herunterladen von Daten, Aktualisieren von Software usw. xf17a. NET Framework Windows reg Betriebssystem NET Framework Ver4.5 mdash für ChartAlert reg mdash wird nur in den folgenden Betriebssystemen unterstützt: Windows reg 2000 und Windows reg Millennium Windows reg XP Windows reg Servertrade 2003 und Windows reg Servertrade 2008 Windows reg Windows Reg 7, Windows reg 8.x und Windows reg 10 Microsoft reg hat die Unterstützung für alle anderen Betriebssysteme unterbrochen. Wenn Ihr Betriebssystem nicht in der Liste oben ist, dann wird. NET Framework Ver4.5 mdash für ChartAlert reg mdash wird nicht auf Ihrem Computer installiert. Das. NET Framework wird mit Windows Reg Vista, Windows Reg 7, Windows Reg 8.x und Windows Reg 10 integriert. Das Herunterladen und Installieren von. NET Framework auf diesen Computern ist nicht erforderlich. Xf179 Intel Reg basiert Apple Reg Computer mdash Parallels Desktop, VirtualBox, etc. Dieser Abschnitt ist anwendbar auf Mac Mac Mac Mac Mac Mac Mac Mac Mac Mac MacBook Pro Mac Pro Computer Benutzer. ChartAlert Reg wurde nicht auf Apple Reg-Computern mit Windows reg getestet nativ auf Parallels Desktop, VirtualBox, etc. Wenn Sie ein Apple Reg Computer Benutzer, dann informiert werden, dass ChartAlert reg kann oder nicht auf Ihrem Apple Reg Computer ausgeführt werden. Daher bitten wir Sie, nicht für eine Evaluation Trial oder ein Abonnement Plan entscheiden, wenn Sie planen, ChartAlert Reg auf einem Apple Reg Computer verwenden. Wir bedauern auch, dass Sie derzeit nicht in der Lage, jede Art von technologischer Unterstützung zu helfen, Setup ChartAlert Reg erfolgreich auf einem Apple Reg Computer mit Parallels Desktop, VirtualBox, etc. xf179 Intel Reg basiert Apple reg Computer mdash xf17a Windows reg Betriebssystem über Boot Camp Dieser Abschnitt gilt für iMac Mac MacBook Air MacBook Pro Mac Pro Computerbenutzer. ChartAlert Reg wurde erfolgreich auf Intel Reg-basierten Apple Reg-Computern mit Windows reg OS getestet, die über Boot Camp laufen. Bitte stellen Sie sicher, dass Windows Reg und. NET Framework 4.5 auf der Windows Reg-Seite Ihres Apple Reg-Computers über Boot Camp installiert wurden, bevor Sie ChartAlert reg zusammen mit seinen Historical DataSets installieren. Wir sind auch glücklich, Ihnen mitzuteilen, dass sie zurzeit in der Lage waren, technologische Unterstützung zur Verfügung zu stellen, um ChartAlert Reg erfolgreich auf einem Apple Reg Computer basierend auf einem Intel Reg Prozessor mit Windows reg Betriebssystem zu installieren, das über Boot Camp. Speed ​​läuft. Wert. Ausführung. Daten, die um 15 Minuten verzögert sind Die Top 5-Listen sind keine Empfehlung von ETRADE Securities oder ihren verbundenen Unternehmen zum Kauf, Verkauf oder Besitz von Sicherheiten, Finanzprodukten oder Instrumenten, noch ist es eine Bestätigung für eine bestimmte Sicherheit, Firma, Fondsfamilie, Produkt oder Dienstleistung . Auswahlkriterien: Aktien des Dow Jones Industrial Average, die vor kurzem die höchsten Dividenden als Prozentsatz ihres Aktienkurses bezahlt haben. Dividendenrendite ist ein Verhältnis, das zeigt, wie viel ein Unternehmen zahlt sich in Dividenden jährlich relativ zu seinem Aktienkurs. Es ist ein Weg, um zu messen, wie viel Einkommen Sie für jeden Dollar in eine Aktie investiert bekommen. Dividendenrenditen geben eine Vorstellung von der Bardividende, die von einer Anlage in eine Aktie erwartet wird. Dividendenrenditen können sich täglich ändern, da sie auf dem vorherigen Tag Schlusskurs der Aktie basieren. Es bestehen Risiken, die mit Dividendenrendite-Strategien verbunden sind, wie das Unternehmen, das keine Dividende ausschüttet oder die Dividende weit weniger ist als das, was erwartet wird. Darüber hinaus sollte die Dividendenrendite nicht allein bei der Entscheidung, in eine Aktie zu investieren, herangezogen werden. Eine Anlage in Hochzinsanleihen und Anleihen beinhaltet bestimmte Risiken wie Marktrisiko, Preisvolatilität, Liquiditätsrisiko und Ausfallrisiko. Daten zur Verfügung gestellt von Wall Street on Demand und Thomson Reuters Was gerade passiert ist. Und was kommt als nächstes. Holen Sie sich aktuelle Nachrichten und Analysen aus Top-Publikationen und Websites. Neu bei Online-Investitionen Sehen Sie, wie ETRADE Ihnen dabei helfen kann, die Kontrolle über Ihre Investitionen online zu übernehmen. Erhalten Sie eine dreiminütige Tour von. Erstellen Sie ein Investment-Portfolio Sie haben Ihre Ziele identifiziert und einige Grundlagenforschung. Sie verstehen den Unterschied zwischen. Investieren für Einkommen Cara Esser von Morningstar erklärt einige alternative Anlageideen, um Einkommen zu schaffen. Investieren in Aktien Unternehmen verkaufen Aktien der Aktie an Investoren als eine Möglichkeit, Geld zu finanzieren Expansion, bezahlen. BITTE LESEN SIE DIE WICHTIGEN ANGABEN. WICHTIGER HINWEIS: Optionen und Termingeschäfte sind komplex und beinhalten ein hohes Risiko, sind für anspruchsvolle Anleger gedacht und eignen sich nicht für alle Anleger. Für weitere Informationen, lesen Sie bitte die Merkmale und Risiken von standardisierten Optionen und Risiko Offenlegung für Futures und Optionen, bevor Sie Optionen beginnen. Bei eventuellen Schadenersatzansprüchen werden wir auf Anfrage Auskunft geben. Der Fonds-Prospekt enthält seine Anlageziele, Risiken, Gebühren, Aufwendungen und andere wichtige Informationen und sollte sorgfältig gelesen und sorgfältig betrachtet werden, bevor Sie investieren. Für einen aktuellen Prospekt, besuchen Sie etrademutualfunds oder besuchen Sie die Exchange Traded Funds Center bei etradeetf. Bei Anlagen in Wertpapieren handelt es sich um Risiken, einschließlich eines möglichen Verlustes des Kapitals. ETRADE-Gutschriften und - Angebote können den US-Quellensteuern und der Berichterstattung im Einzelhandelswert unterliegen. Steuern im Zusammenhang mit diesen Angeboten sind die Verantwortung des Kunden. Provisionen für Aktien und Optionen Trades sind 9,99 mit einer 75 Gebühr pro Optionsvertrag. Um für 7,99 Provisionen für Aktien - und Optionsgeschäfte und einen 75-fachen Pro Optionsvertrag zu qualifizieren, müssen Sie mindestens 150 Aktien - oder Optionsgeschäfte pro Quartal ausführen. Um weiterhin 7,99 Aktien - und Optionsgeschäfte sowie einen 75-fachen Optionsschein zu erhalten, müssen Sie bis Ende des folgenden Quartals 150 Aktien - oder Optionsgeschäfte durchführen. Sie können die Exchange Traded Funds (ETFs), die über das ETF-Programm der ETRADE Securities zur Verfügung stehen, kaufen und verkaufen, ohne Maklerprovisionen zu bezahlen. Für Margin-Kunden, die ETFs, die durch das Programm gekauft werden, sind nicht Marge förderfähig für 30 Tage ab dem Kaufdatum. Um den kurzfristigen Handel abzuschrecken, kann ETRADE Securities eine kurzfristige Handelsgebühr für Verkäufe von teilnehmenden ETFs verlangen, die weniger als 30 Tage gehalten werden. Sie können in den Investmentfonds über ETRADE Securities ohne Belastung, ohne Transaktionsgebühr Programm ohne Bezahlung von Lasten, Transaktionsgebühren oder Provisionen zu investieren. Um den kurzfristigen Handel abzuschrecken, wird ETRADE Securities eine Vorzeitige Rücknahmegebühr von 49,99 auf Rücknahmen oder Umtausch von Leergut, keine Transaktionsgebühr, die weniger als 90 Tage gehalten wird, berechnen. Direxion (außer dem Rohstofftrends Strategy Fund DXCTX), ProFunds, Rydex Investmentfonds und alle Geldmarktfonds unterliegen nicht der Early Redemption Fee. Sämtliche im Fonds-Prospekt beschriebenen Gebühren und Aufwendungen gelten weiterhin. Bitte lesen Sie den Fonds-Prospekt sorgfältig, bevor Sie investieren. Pricing gilt für Online-Sekundärmarktgeschäfte. Inklusive Agenturanleihen, Unternehmensanleihen, Kommunalanleihen, Brokered CDs, Pass-thrus, CMOs und Asset Backed Securities. Andere Gebühren und Provisionen können für andere festverzinsliche Wertpapiere gelten. Klicken Sie hier für weitere Informationen. Der neue Kontoinhaber wird für jeden Futures-Handel, der ausgeführt wird, sobald ein qualifiziertes Konto eröffnet ist, und die hinterlegten Geldmittel gelöscht werden. Nach der 90-Tage-Angebotsperiode beträgt jeder Futures-Handel 2,99 (pro Seite, pro Vertrag, zzgl. Umtauschgebühren). Dieses Angebot gilt nicht für IRAs, andere Ruhestands-, Geschäfts-, Vertrauens - oder ETRADE-Bankkonten. Ausgeschlossen sind aktuelle ETRADE Securities-Kunden, ETRADE Financial Corporation. Associates und Nicht-US-Bürger. Das Angebot gilt nur für neue ETRADE Futures Konten, die mit einer 10.000 Mindesteinzahlung eröffnet werden. Kontoinhaber müssen für mindestens sechs Monate eine Mindestfinanzierung in allen Konten (10.000 abzüglich etwaiger Handelsverluste) beibehalten oder Kredite übergeben werden. Beschränken Sie pro Kunde ein neues ETRADE Futures-Konto. Wir behalten uns das Recht vor, dieses Angebot jederzeit zu kündigen. Zusätzlich zu den 2,99 pro Kontrakt pro Seite Provision, Futures-Kunden werden bestimmte Gebühren, einschließlich der anwendbaren Futures-Börse und NFA Gebühren sowie Boden-Brokerage Gebühren für die Durchführung von nicht elektronisch gehandelten Futures und Futures-Optionen Verträge beurteilt werden. Diese Gebühren werden nicht durch ETRADE Securities gegründet und variieren je nach Börse. Die ETRADE Pro-Handelsplattform steht den Kunden, die in einem Kalenderviertel mindestens 30 Aktien - oder Optionsgeschäfte abwickeln, ohne Aufpreis zur Verfügung oder hält einen Maklerkontostand von mindestens 250.000. Die Prognosen oder andere Informationen, die vom Strategiescanner in Bezug auf die Wahrscheinlichkeit verschiedener Investitionsergebnisse generiert werden, sind hypothetischer Natur, reflektieren nicht die tatsächlichen Investitionsergebnisse und sind keine Garantien für zukünftige Ergebnisse. Strategy Scanner ist ein Produkt von Trade Ideas LLC, einem Dritten, der nicht mit der ETRADE Financial Corporation oder einer ihrer Tochtergesellschaften verbunden ist. Kunden werden 25 für Broker-assisted Trades, plus anwendbare Provision berechnet. In Kiplingers 2016 biennale Broker Überprüfung von sieben Unternehmen in acht Kategorien, erhielt ETRADE 1 in mobilen und drei von fünf Sternen insgesamt. ETRADEs Sternbewertungen für alle Kategorie-Rankings von 5: Overall (3 Sterne), Mobile (4 Sterne), Tools (3,5 Sterne), Beratungsdienste (3,5 Sterne), Benutzerfreundlichkeit (3,5 Sterne), Forschung (3 Sterne) Kosten (3 Sterne) und Investitionsmöglichkeiten (3 Sterne). Lesen Sie die vollständige 2016 Best of Online Brokers Survey. 2016 Die Kiplinger Washington Redakteure. Alle Rechte vorbehalten. Wertpapiere und Futures-Produkte und Dienstleistungen von ETRADE Securities LLC, Mitglied FINRA SIPC NFA angeboten. Die Anlageberatung erfolgt über ETRADE Capital Management, LLC, einem eingetragenen Anlageberater. Bankprodukte und - dienstleistungen werden von der ETRADE Bank, einer Eidgenössischen Sparkasse, Mitglied FDIC angeboten. Oder deren Tochtergesellschaften. ETRADE Securities LLC, ETRADE Capital Management, LLC und ETRADE Bank sind separate, aber verbundene Unternehmen. Die Reaktionszeiten des Systems und die Zugriffszeit des Kontos können aufgrund einer Vielzahl von Faktoren, einschließlich Handelsvolumen, Marktbedingungen, Systemleistung und anderen Faktoren, variieren. 2017 ETRADE Financial Corporation. Alle Rechte vorbehalten. ETRADE Urheberrechtsrichtlinie

5 Regeln Von Optionen Handel


Top 10 Regeln für den erfolgreichen Handel Laden des Spielers. Die meisten Leute, die daran interessiert sind, zu lernen, wie man rentable Händler müssen nur ein paar Minuten online zu verbringen, bevor Sie solche Sätze wie planen Sie Ihren Handel Handel Ihren Plan und halten Sie Ihre Verluste auf ein Minimum. Für neue Händler, können diese Leckerbissen von Informationen mehr wie eine Ablenkung als jede umsetzbare Beratung scheinen. Neue Händler wollen oft nur wissen, wie sie ihre Charts, so dass sie sich beeilen und Geld verdienen können. Um im Handel erfolgreich zu sein, muss man jedoch die Bedeutung und die Einhaltung eines Satzes von Regeln verstehen, die alle Arten von Händlern mit einer Vielzahl von Handelskontogrößen geführt haben. Jede Regel allein ist wichtig, aber wenn sie zusammenarbeiten, sind die Effekte stark. Der Handel mit diesen Regeln kann erheblich erhöhen die Chancen auf Erfolg in den Märkten. Regel Nr. 1: Immer einen Trading-Plan verwenden Ein Trading-Plan ist ein schriftlicher Satz von Regeln, die ein Trader s Eintrag, Exit und Geld-Management-Kriterien spezifiziert. Mit einem Handelsplan können Händler dies tun, obwohl es ein zeitaufwendiges Unterfangen ist. Mit der heutigen Technologie ist es einfach, eine Trading-Idee zu testen, bevor Sie echtes Geld riskieren. Backtesting, das Trading-Ideen auf historische Daten, erlaubt Händler, um festzustellen, ob ein Trading-Plan ist lebensfähig, und zeigt auch die Erwartung der Pläne Logik. Sobald ein Plan entwickelt worden ist und Backtesting gute Ergebnisse zeigt, kann der Plan im realen Handel verwendet werden. Der Schlüssel hier ist, um den Plan zu halten. Trades außerhalb des Handelsplans, auch wenn sie sich als Gewinner erweisen, gilt als schlechter Handel und zerstört jede Erwartung, die der Plan gehabt haben könnte. (Erfahren Sie mehr über Backtesting in Backtesting: Interpretation der Vergangenheit.) Regel Nr. 2: Trading wie ein Geschäft behandeln Um erfolgreich zu sein, muss man den Handel als Voll - oder Teilzeitgeschäft ansprechen - nicht als Hobby oder Job . Als Hobby, wo kein wirkliches Engagement für das Lernen gemacht wird, kann der Handel sehr teuer sein. Als Job kann es frustrierend sein, da es keine regelmäßige Gehaltsscheck. Der Handel ist ein Geschäft und verursacht Kosten, Verluste, Steuern, Unsicherheit, Stress und Risiken. Als Händler sind Sie im Wesentlichen ein Kleinunternehmer und müssen Ihre Forschung und strategize, um Ihr Geschäft Potenzial zu maximieren. Regel Nr. 3: Verwenden Sie Technologie zu Ihrem Vorteil Trading ist ein wettbewerbsfähiges Geschäft, und man kann davon ausgehen, dass die Person sitzt auf der anderen Seite eines Handels ist die volle Nutzung der Technologie. Charting-Plattformen ermöglichen Tradern eine unendliche Vielfalt von Methoden für die Anzeige und Analyse der Märkte. Backtesting eine Idee zu historischen Daten vor dem Bargeld riskieren kann ein Trading-Konto zu speichern, ganz zu schweigen von Stress und Frustration. Getting Market Updates mit Smartphones ermöglicht es uns, Trades praktisch überall zu überwachen. Sogar Technologie, die wir heute für selbstverständlich halten, wie High-Speed-Internet-Verbindungen, können erheblich erhöhen Trading-Performance. Mit Technologie zu Ihrem Vorteil und halten derzeit mit verfügbaren technologischen Fortschritte, kann Spaß machen und belohnt im Handel. Regel Nr. 4: Schützen Sie Ihr Handelskapital Sparen Sie Geld, um ein Handelskonto zu finanzieren kann eine lange Zeit und viel Aufwand dauern. Es kann noch schwieriger (oder unmöglich) das nächste Mal um. Es ist wichtig zu beachten, dass der Schutz Ihres Handelskapitals nicht gleichbedeutend damit ist, dass Sie keine Trades verlieren. Alle Händler haben verlieren Trades, die ein Teil des Geschäfts ist. Der Schutz von Kapital beinhaltet keine unnötigen Risiken und tun alles, was Sie können, um Ihr Handelsgeschäft zu bewahren. (Siehe Risk-Management-Techniken für aktive Händler für mehr.) Regel Nr. 5: Werden Sie ein Student der Märkte Denken Sie an es als Weiterbildung - müssen die Händler konzentrieren sich auf das Lernen mehr jeden Tag. Da viele Konzepte vorausbestimmtes Wissen tragen, ist es wichtig, sich daran zu erinnern, dass das Verständnis der Märkte und all ihrer Feinheiten ein kontinuierlicher, lebenslanger Prozess ist. Harte Forschung ermöglicht es Händlern, die Fakten zu lernen, wie das, was die verschiedenen Wirtschaftsberichte bedeuten. Fokus und Beobachtung erlauben den Händlern, Instinkt zu gewinnen und die Nuancen zu erlernen, das ist, was hilft, die Händler verstehen, wie diese Wirtschaftsberichte den Markt beeinflussen, den sie handeln. (Lesen Sie in unserem Economic Indicators Tutorial ca. 24 verschiedene Wirtschaftsberichte.) Weltpolitik, Ereignisse, Wirtschaft - auch das Wetter - wirken sich alle auf die Märkte aus. Das Marktumfeld ist dynamisch. Je mehr Händler die vergangenen und aktuellen Märkte verstehen, desto besser werden sie für die Zukunft gerüstet sein. Regel Nr. 6: Nur Risiko, was Sie sich leisten können In Regel Nr. 4, erwähnte ich, dass die Finanzierung eines Handelskontos kann ein langer Prozess sein. Bevor ein Händler beginnt mit echten Bargeld, ist es zwingend erforderlich, dass das gesamte Geld in das Konto wirklich verbraucht werden. Wenn dies nicht der Fall ist, sollte der Händler speichern, bis es ist. Es sollte selbstverständlich sein, dass das Geld in einem Trading-Konto nicht für die Kinder College-Studiengebühren oder die Zahlung der Hypothek zugewiesen werden sollte. Trader dürfen sich nie erlauben zu denken, dass sie einfach Geld von diesen anderen wichtigen Pflichten leihen. Man muss bereit sein, das gesamte Geld für ein Handelskonto zu verlieren. Geld zu verlieren ist traumatisch genug, es ist um so mehr, wenn es Kapital ist, das niemals riskiert sein sollte. Regel Nr. 7: Entwicklung einer Trading-Methodik auf der Grundlage von Facts Die Zeit, eine solide Handelsmethodik zu entwickeln, ist die Mühe wert. Es kann verlockend sein, in die so einfach sein, wie das Drucken Geldhandel Betrug, die weit verbreitet sind im Internet. Aber Tatsachen, nicht Emotionen oder Hoffnung, sollten die Inspiration hinter der Entwicklung eines Handelsplans sein. Händler, die nicht in Eile zu lernen, haben in der Regel eine leichtere Zeit Durchsieben alle Informationen über das Internet. Betrachten Sie dies: wenn Sie eine neue Karriere zu starten, mehr als wahrscheinlich würden Sie an einer Hochschule oder Universität für mindestens ein Jahr oder zwei studieren müssen, bevor Sie qualifiziert wurden, um sogar für eine Position auf dem neuen Gebiet bewerben. Erwarten Sie, dass das Lernen, wie der Handel Anforderungen mindestens die gleiche Menge an Zeit und faktisch getrieben Forschung und Studie. Regel Nr. 8: Verwenden Sie immer einen Stop Loss Ein Stop-Loss ist ein vorherbestimmtes Risiko, dass ein Händler bereit ist, mit jedem Trade zu akzeptieren. (Siehe Day Trading Strategies für Anfänger für eine Grundierung bei der Auswahl der richtigen Strategie. Der Stopverlust kann entweder ein Dollarbetrag oder ein Prozentsatz sein, aber so oder so begrenzt er die Händlerbelastung während eines Handels. Mit einem Stop-Loss kann einige der Emotionen aus dem Handel nehmen, da wir wissen, dass wir nur verlieren X-Betrag auf einem bestimmten Handel. Ignorieren einen Stop-Loss, auch wenn es zu einem Gewinner führt, ist schlecht Praxis. Exiting mit einem Stop-Loss, und damit einen verlierenden Handel, ist immer noch ein gutes Geschäft, wenn es innerhalb der Handelspläne Regeln fällt. Während die Vorliebe ist, alle Trades mit einem Gewinn zu beenden, ist es nicht realistisch. Mit einem schützenden Stop-Loss hilft sicherzustellen, dass unsere Verluste und unser Risiko begrenzt sind. Regel Nr. 9: Wissen, wann zu stoppen Trading Es gibt zwei Gründe für den Handel zu stoppen: ein ineffizienter Handelsplan und ein ineffektiv Trader. Ein ineffektiver Handelsplan zeigt viel größere Verluste als in historischen Tests erwartet. Märkte können sich geändert haben, kann die Volatilität innerhalb eines bestimmten Handelsinstruments verringert haben, oder der Handelsplan ist einfach nicht so gut wie erwartet. Eines davon profitiert, indem es nicht emotional und geschäftsmäßig verbleibt. Es könnte Zeit sein, den Handelsplan neu zu bewerten und einige Änderungen vorzunehmen oder mit einem neuen Handelsplan zu beginnen. Ein erfolgloser Handelsplan ist ein Problem, das gelöst werden muss. Es ist nicht unbedingt das Ende des Handelsgeschäfts. Ein ineffektiv Trader ist einer, der seinem Trading-Plan nicht folgen kann. Externe Stressoren, schlechte Gewohnheiten und mangelnde körperliche Aktivität können alle zu diesem Problem beitragen. Ein Händler, der nicht in Peak-Zustand für den Handel sollte eine Pause, um mit persönlichen Problemen zu behandeln, sei es Gesundheit oder Stress oder etwas anderes, dass der Händler nicht wirksam ist. Nachdem alle Schwierigkeiten und Herausforderungen behandelt wurden, kann der Händler wieder aufnehmen. Regel Nr. 10: Halten Handel in der Perspektive Es ist wichtig, konzentriert sich auf das große Bild beim Handel. Ein verlierender Handel sollte uns nicht überraschen - er ist ein Teil des Handels. Ebenso ist ein Gewinnhandel nur ein Schritt auf dem Weg zum profitablen Handel. Es ist die kumulative Gewinne, die einen Unterschied machen. Sobald ein Händler akzeptiert Gewinne und Verluste als Teil des Geschäfts, Emotionen haben weniger Auswirkungen auf die Handelsleistung. Das ist nicht zu sagen, dass wir nicht über einen besonders fruchtbaren Handel aufgeregt werden können, aber wir müssen bedenken, dass ein verlierender Handel nicht mehr fern ist. Die Festlegung realistischer Ziele ist ein wesentlicher Bestandteil des Handelns in der Perspektive. Wenn ein Händler ein kleines Handelskonto hat, sollte er oder sie nicht erwarten, in riesige Renditen zu ziehen. Eine 10 Rendite auf einem 10.000 Konto ist ganz anders als eine 10 Rendite auf einem 1.000.000 Trading-Konto. Arbeiten Sie mit dem, was Sie haben, und bleiben Sie vernünftig. Schlussfolgerung Das Verständnis der Bedeutung der einzelnen Handelsregeln, und wie sie zusammenarbeiten, können Händler helfen, ein tragfähiges Handelsgeschäft zu gründen. Handel ist harte Arbeit, und Händler, die die Disziplin und Geduld haben, diese Regeln zu folgen, können ihre Chancen auf Erfolg in einem sehr wettbewerbsfähigen arena. A Billionaires 5 Regeln für Optionen Trading Ich habe gesegnet worden, dass ich für und hatte Kunden, die gearbeitet haben Waren Billionäre. Aber es gibt einen Billionär, den ich während meiner Hedge-Fund-Tage kennengelernt habe, die ich nie vergessen werde, denn er war einer der besten Optionenhändler, die ich je gesehen habe. Er hatte ein 5-Schritt-System für den Handel Optionen, die ich für meine alle meine Optionen handeln heute. Ich werde dies mit Ihnen heute zu teilen und ich nenne diese 8221 Die Billionaires 5 Regeln der Optionen Trading8221 1) Nie kaufen Sie eine Option (ein Put oder ein Call), es sei denn, es ist ein Katalysator oder ein Ereignis. Dies bedeutet, Sie kaufen nur eine Option, wenn es ein Ereignis, das drastisch verschieben wird der Preis der Aktie nach oben oder unten. Diese Ereignisse oder Katalysatoren können alles sein aus: Earnings Ankündigungen, Fed Meetings, Economic Releases, ein Activist Hedge Fund Kauf einer Aktie für jede Art von Corporate Change, CEO, Verkauf einer Business Unit, Fusion oder Übernahme. Der Schlüssel ist, die Option kaufen, bevor dieses Ereignis auftritt, möchten Sie nie wollen, eine Option nach dem Katalysator oder Veranstaltung kaufen. Also in Zusammenfassung nur kaufen eine Option, wenn es Katalysator oder Ereignis, das dramatisch ändern wird der Preis der Aktie. 2) Dieser Katalysator oder Ereignis muss auftreten, bevor die Option abläuft. Ein einfaches Beispiel hierfür ist Earnings, Sie wollen nur eine Option kaufen, die mehr als eine Woche nach dem Ertragsdatum abläuft. Wieder bedeutet dies, wenn Sie eine Option kaufen, stellen Sie sicher, lassen Sie sich genug Zeit, so dass Ihre Option nicht vor dem Katalysator oder Ereignis abläuft. 3) Die Option muss billig sein. Dies kann schwer zu messen, aber ich mag es einfach zu halten, ich persönlich don8217t wie die Zahlung mehr als eine 1 für jede Option. Aber wenn seine eine hohe Preisbestand, werde ich nur kaufen, die Option es gibt mir mindestens 25-mal Hebelwirkung oder mehr auf den Bestand. Bedeutung dividieren Sie den Kurs der Aktie durch den tatsächlichen Optionspreis. Zum Beispiel, wenn die Aktie von XYZ 100 nicht zahlen mehr als 4 für die Option auf diesem Stock, that8217s der einfachste Weg, um sicherzustellen, dass die Option billig ist. 4) Kaufen Sie nur Optionen in Aktien mit geringer Volatilität. Dies bedeutet, dass Sie Optionen auf Aktien kaufen wollen, die seitwärts von der Wohnung seit Monaten auf einmal verschoben haben. Schauen Sie sich ein Diagramm, wenn es nicht einen signifikanten Aufwärtstrend oder Abwärtstrend in den letzten 3 bis 4 Monaten gab es eine gute Chance, dass die Volatilität in der Aktie niedrig ist und die Optionen sind billig. Auch wenn Sie Optionen-Software haben, können Sie vergleichen die Aktie und ihre Optionen implizite Volatilität und zugrunde liegenden Volatilität auf seine historische implizite und zugrunde liegende Volatilität. Das klingt verwirrend, aber es ist die gleiche Prämisse Value Investoren verwenden, kaufen sie Aktien, wenn sie billig sind im Vergleich zu dem, was sie historisch verkauft, so wollen Sie Optionen kaufen, wenn die Volatilität niedrig oder niedriger als das, was es historisch verkauft hat. 5) Kaufen Sie nur Optionen, wenn Sie 200 oder mehr auf die Option machen können. Dies ist sehr wichtig, zu viele Menschen kaufen Optionen ohne Ausgangsplan oder Gewinnziel. Sie müssen ein Ziel setzen oder verkaufen Punkt, wenn Sie eine Option kaufen und machen es lohnt sich aus einer Risikobereitschaft Standpunkt. Die Option sollte mindestens 200 oder mehr Oberseite haben. Warum 200, weil es eine gute Chance gibt, wenn Sie eine Option kaufen, verlieren Sie den gesamten Wert oder Prämie der Option (oder 100 Ihrer Investition in die Option) daher für dieses Risiko belohnt werden, müssen Sie 200 machen können Oder mehr in dieser Option. Einfach gesagt nur kaufen Sie eine Option, wenn Sie mindestens ein 2 bis 1 Belohnung Risiko-Szenario haben. Jetzt gebe ich Ihnen ein echtes Lebenbeispiel für einen Optionshandel, den ich gerade gemacht habe, wo ich nur 2 von den 5 Schritten gefolgt bin und es kostet mich teuer auf meinem Handwerk. Vor etwa zwei Wochen kaufte ich eine große Menge von Put-Optionen auf Silber, (The Silver ETF, Symbol SLV), die am 28. Juni abgelaufen. Die Option war sehr günstig Ich zahlte .50 Cent pro Option. Ich folgte den Schritten 3 und 4, indem ich eine billige Put-Option (0,50 Cent) erwarb, deren Volatilität niedrig war, so dass die Optionen nicht nur im Preis billig waren, sondern auch billig in Bezug auf die historische Volatilität von Silver8217 waren. Mein großer Fehler war aber nicht der richtige Katalysator, ich dachte, Silber würde im Preis fallen, aber ich war nur genau, warum ich dachte, es würde fallen, weil die Job-Nummern, die vor 2 Wochen veröffentlicht wurden, wäre stark und würde daher verursachen Silber zu verkaufen. Auch ich dachte, Silber hatte eine riesige Abwärtskonsolidierung Muster gebrochen und daher würde es fallen 10 in den nächsten paar Wochen. Nun waren die Job-Nummern gut, und Silber verkaufte sich, und ich war bis zu 100 auf meine Silber-Put-Optionen in 2 Tagen, aber statt nach dem Trading Rules mein Billionaire Freund lehrte mich, nahm ich meine 100 Profit und ging nach Hause. Aus diesem Grund habe ich nicht die 200 oder mehr Gewinn-Regel folgen, und ich hatte nicht den richtigen Katalysator, der sich um die Fed-Sitzung verpasste ich deshalb verpasst auf einer der größten Züge in Silver8217s Geschichte, seine 7 Rückgang heute. Indem ich nicht meine Billionaire friend8217s 5 Handelsregeln für Optionen folgte, verpasste ich einen riesigen Handel. Ich hätte 400 auf meinem Silver Puts heute statt der 100 habe ich vor zwei Wochen gemacht. So lernte ich aus erster Hand, wie viel es kostet, indem Sie nicht jede der 5 Regeln oben. Also meine Lektion für Sie ist nicht nur diese 5 Regeln für Trading-Optionen wichtig, aber noch wichtiger ist, dass Sie sicherstellen, bevor Sie eine Option kaufen, dass Sie jede und jeder der 5 Regeln, die ich oben angegeben habe. Bedeutung nicht kaufen eine Option, es sei denn, es erfüllt jede einzelne der 5 Regeln. Um es einfach für sich selbst ausdrucken diese Regeln und dann, bevor Sie eine Option handeln, stellen Sie sicher, dass Sie überprüfen können jede Regel, bevor Sie die Option kaufen. Wenn Sie dies tun, verspreche ich, dass nicht nur Sie erheblich verbessern den Erfolg Ihrer Optionen Handel, aber Sie werden eine Menge Geld in den Prozess als gut. Will Meade Präsident der Milliardäre Portfolio Milliardäres Portfolio wmeadepurealpharesearch copy2016 Billionaires Portfolio.

Forex Preise Singapur Dollar


Die Welten vertrauenswürdige Währungsbehörde nordamerikanische Ausgabe Der Dollar handelte weicher, ist aber bequem über dem Post-Trump Pressekonferenz Tiefs geblieben. USD-JPY ist in den oberen 114s geglitten, nachdem er die Gewinne über 115.00 nicht beibehalten konnte, aber über eine große Zahl oben auf dem gestrigen einmonatigen Tief an bleibt. Lesen Sie weiter X25B6 2017-01-13 12:08 UTC Europäische Ausgabe Der Dollar ist weicher Handel in den Londoner öffnen, bleibt aber bequem über die Post-Trump Pressekonferenz Tiefs. USD-JPY ist in den oberen 114s geglitten, nachdem er die Gewinne über 115.00 nicht beibehalten konnte, aber über eine große Zahl oben auf gestern bleibt. Lesen Sie weiter X25B6 2017-01-13 07:40 UTC Asian Edition FX Handel war relativ ruhig in N. Y. am Freitag, obwohl der Dollar leicht perk bis marginal, so dass der USD-Index bei 101,30 in den Schluss. Anständige Einzelhandelsumsätze und Inline-PPI-Daten halfen der USD-Stimmung, allerdings vor einem langen U. S.-Wochenende, der Rallye. Lesen Sie weiter X25B6 2017.01.13 19.15 UTCOANDA 1080108910871086108311001079109110771090 10921072108110831099 Cookie 10951090108610731099 1089107610771083107210901100 1085107210961080 10891072108110901099 10871088108610891090109910841080 1074 1080108910871086108311001079108610741072108510801080 1080 108510721089109010881086108010901100 10801093 10891086107510831072108910851086 108710861090108810771073108510861089109011031084 10851072109610801093 10871086108910771090108010901077108310771081. 10601072108110831099 Cookie 10851077 10841086107510911090 1073109910901100 108010891087108610831100107910861074107210851099 107610831103 109110891090107210851086107410831077108510801103 10741072109610771081 10831080109510851086108910901080. 1055108610891077109710721103 108510721096 1089107210811090, 10741099 108910861075108310721096107210771090107710891100 1089 10801089108710861083110010791086107410721085108010771084 OANDA8217 109210721081108310861074 Cookie 1074 108910861086109010741077109010891090107410801080 1089 10851072109610771081 105510861083108010901080108210861081 108210861085109210801076107710851094108010721083110010851086108910901080. 1048108510891090108810911082109410801080 10871086 107310831086108210801088108610741072108510801102 1080 10911076107210831077108510801102 109210721081108310861074 Cookie, 1072 10901072108210781077 1091108710881072107410831077108510801102 108010841080 108710881080107410771076107710851099 10851072 10891072108110901077 aboutcookies. org. 1042 108910831091109510721077 10861075108810721085108010951077108510801103 1080108910871086108311001079108610741072108510801103 109210721081108310861074 Cookie 108610871088107710761077108310771085108510991077 1092109110851082109410801080 108510721096107710751086 10891072108110901072 10731091107610911090 1085107710761086108910901091108710851099. 104710721075108810911079108010901100 108410861073108010831100108510991077 1087108810801083108610781077108510801103 1042109310861076 1042109910731088107210901100 1089109510771090: ampltiframe src4489469.fls. doubleclick. netactivityisrc4489469typenewsi0catoanda00dclatdcrdidtagforchilddirectedtreatmentord1num1 mcesrc4489469.fls. doubleclick. netactivityisrc4489469typenewsi0catoanda00dclatdcrdidtagforchilddirectedtreatmentord1num1 breite1 height1 frameborder0 Styledisplay: keine mcestyledisplay: noneampgtampltiframeampgt OANDAs Währungsrechner Tools verwenden OANDA Preise Handel. Die von führenden Marktdaten-Mitarbeitern zusammengestellt wurden. Unsere Preise werden vertrauenswürdig und von großen Unternehmen, Steuerbehörden, Wirtschaftsprüfungsgesellschaften und Einzelpersonen auf der ganzen Welt verwendet. Oanda,. . , 1990:, 3-ISO. Aufrechtzuerhalten. ,. (.) FxConverter169 199682112017 OANDA Corporation. 104210891077 10871088107210741072 10791072109710801097107710851099. 10581086107410721088108510991077 10791085107210821080 OANDA, fxTrade 1080 108910771084107710811089109010741086 10901086107410721088108510991093 107910851072108210861074 fx 10871088108010851072107610831077107810721090 OANDA Corporation. 104210891077 108710881086109510801077 10901086107410721088108510991077 10791085107210821080, 10871088107710761089109010721074108310771085108510991077 10851072 1101109010861084 10891072108110901077, 11031074108311031102109010891103 10891086107310891090107410771085108510861089109011001102 108910861086109010741077109010891090107410911102109710801093 1074108310721076107710831100109410771074. 10581086108810751086107410831103 10821086108510901088107210821090107210841080 10851072 10801085108610891090108810721085108510911102 107410721083110210901091 108010831080 10801085109910841080 107410851077107310801088107810771074109910841080 1087108810861076109110821090107210841080 1089 10801089108710861083110010791086107410721085108010771084 10841072108810781080 1080 1082108810771076108010901085108610751086 10871083107710951072 107410831077109510771090 1074109910891086108210801077 10881080108910821080 1080 10871086107610931086107610801090 10851077 1074108910771084 1080108510741077108910901086108810721084. 10561077108210861084107710851076109110771084 107410721084 109010971072109010771083110010851086 1086109410771085108010901100, 10871086107610931086107611031090 10831080 107410721084 10901072108210801077 10901086108810751086107410991077 10861087107710881072109410801080 1089 109110951077109010861084 10741072109610801093 108310801095108510991093 1086107310891090108611031090107710831100108910901074. 1042107210961080 109110731099109010821080 10841086107510911090 108710881077107410991089108010901100 10861073109810771084 10741072109610801093 1080108510741077108910901080109410801081. 1048108510921086108810841072109410801103, 10871088108010741077107610771085108510721103 10851072 107610721085108510861084 10891072108110901077, 10851086108910801090 10861073109710801081 10931072108810721082109010771088. 10561077108210861084107710851076109110771084 107410721084 10761086 108510721095107210831072 10901086108810751086107410831080 1086107310881072109010801090110010891103 10791072 1087108610841086109711001102 1082 10851077107910721074108010891080108410991084 1082108610851089109110831100109010721085109010721084 1080 109110731077107610801090110010891103, 109510901086 10741099 108710861083108510861089109011001102 108710861085108010841072107710901077 107410891077 1089108610871091109010891090107410911102109710801077 10881080108910821080. 10581086108810751086107410831103 10871086108910881077107610891090107410861084 108610851083107210811085 -108710831072109010921086108810841099 107410831077109510771090 10761086108710861083108510801090107710831100108510991077 10881080108910821080. 10571084. 108810721079107610771083 17110551088107210741086107410991077 1074108610871088108610891099187 10791076107710891100. 1060108010851072108510891086107410991081 10891087108810771076-1073107710901090108010851075 10761086108910901091108710771085 109010861083110010821086 10821083108010771085109010721084 OANDA Europe Ltd, 1103107410831103110210971080108410891103 10881077107910801076107710851090107210841080 105710861077107610801085107710851085108610751086 10501086108810861083107710741089109010741072 108010831080 1056107710891087109110731083108010821080 10481088108310721085107610801103. 105010861085109010881072108210901099 10851072 1088107210791085108010941091, 1092109110851082109410801080 109310771076107810801088108610741072108510801103 105210584 1080 108210881077107610801090108510861077 10871083107710951086 10891074109910961077 50: 1 1085107710761086108910901091108710851099 107610831103 1088107710791080107610771085109010861074 10571086107710761080108510771085108510991093 106410901072109010861074 1040108410771088108010821080. 1048108510921086108810841072109410801103 10851072 1101109010861084 10891072108110901077 10851077 1087108810771076108510721079108510721095107710851072 107610831103 1078108010901077108310771081 10891090108810721085, 1074 1082108610901086108810991093 10771077 108810721089108710881086108910901088107210851077108510801077 108010831080 1080108910871086108311001079108610741072108510801077 10831102107310991084 10831080109410861084 108710881086109010801074108610881077109510801090 1084107710891090108510991084 1079107210821086108510721084 1080 10871088107210741080108310721084. 10501086108410871072108510801103 1089 108610751088107210851080109510771085108510861081 1086109010741077109010891090107410771085108510861089109011001102 OANDA Europe Limited 1079107210881077107510801089109010881080108810861074107210851072 1074 104010851075108310801080, 108810771075108010891090108810721094108010861085108510991081 10851086108410771088 7.110.087, 11021088108010761080109510771089108210801081 10721076108810771089: Turm 42, Boden 9a, 25 Old Broad St, London EC2N 1HQ. 104410771103109010771083110010851086108910901100 10821086108410871072108510801080 1083108010941077108510791080108810861074107210851072 1080 108810771075109110831080108810911077109010891103 10591087108810721074108310771085108010771084 10921080108510721085108910861074108610751086 1085107210761079108610881072. 10831080109410771085107910801103 8470 542574. OANDA Japan Co. Ltd. 8212 108710771088107410991081 10761080108810771082109010861088 10871086 108610871077108810721094108011031084 1089 10921080108510721085108910861074109910841080 1080108510891090108810911084107710851090107210841080 1090108010871072 Kanto Lokale Finanz Bureau (Kin-sho) 108810771075. 8470 2137 1095108310771085 1040108910891086109410801072109410801080 1092108010851072108510891086107410991093 109211001102109510771088108910861074, 108810771075. 8470 1571.OANDA 1080108910871086108311001079109110771090 10921072108110831099 Cookie 10951090108610731099 1089107610771083107210901100 1085107210961080 10891072108110901099 10871088108610891090109910841080 1074 1080108910871086108311001079108610741072108510801080 1080 108510721089109010881086108010901100 10801093 10891086107510831072108910851086 108710861090108810771073108510861089109011031084 10851072109610801093 10871086108910771090108010901077108310771081. 10601072108110831099 Cookie 10851077 10841086107510911090 1073109910901100 108010891087108610831100107910861074107210851099 107610831103 109110891090107210851086107410831077108510801103 10741072109610771081 10831080109510851086108910901080. 1055108610891077109710721103 108510721096 1089107210811090, 10741099 108910861075108310721096107210771090107710891100 1089 10801089108710861083110010791086107410721085108010771084 OANDA8217 109210721081108310861074 cookie 1074 108910861086109010741077109010891090107410801080 1089 10851072109610771081 105510861083108010901080108210861081 108210861085109210801076107710851094108010721083110010851086108910901080 1048108510891090108810911082109410801080. 10871086 107310831086108210801088108610741072108510801102 1080 10911076107210831077108510801102 109210721081108310861074 Cookie, 1072 10901072108210781077 1091108710881072107410831077108510801102 108010841080 108710881080107410771076107710851099 10851072 10891072108110901077 aboutcookies. org. 1042 108910831091109510721077 10861075108810721085108010951077108510801103 1080108910871086108311001079108610741072108510801103 109210721081108310861074 Cookie 108610871088107710761077108310771085108510991077 1092109110851082109410801080 108510721096107710751086 10891072108110901072 10731091107610911090 1085107710761086108910901091108710851099. 104710721075108810911079108010901100 108410861073108010831100108510991077 1087108810801083108610781077108510801103 1042109310861076 1042109910731088107210901100 1089109510771090: - USDSGD 1040108210901091107210831100108510991077 10501091108810891099 10741072108311021090 1074 10881077107210831100108510861084 1074108810771084107710851080 10801079 OANDA fxTrade USDSGD 107610861083108310721088 105.710.641.040 (105.010.861.076 107410721083110210901099: USD) 1062107710851090108810861073107210851082: 10601077107610771088107210831100108510721103 108810771079107710881074108510721103 1089108010891090107710841072 (1085107210791099107410721077108410721103 10901072108210781077 10601077107610771088107210831100108510991081 108810771079107710881074 108010831080 106010771076) USD - 107210841077108810801082107210851089108210801077 1076108610831083107210881099 (1085107210791099107410721077108410991077 10901072108210781077 10751088108010851099, 1079107710831105108510991077 108010831080 10731072108210891099) 1092107210821090108010951077108910821080 11031074108311031102109010891103 107410891077108410801088108510861081 1074107210831102109010861081. 1062107710851099 10731086108311001096108010851089109010741072 10731080108810781077107410991093 108710881086107610911082109010861074 (1074108210831102109510721103 107910861083108610901086 1080 10851077109210901100) 1074109910881072107810721102109010891103 1074 10761086108310831072108810721093 (USD). 106910821086108510861084108010821072 105710641040 1074 107910851072109510801090107710831100108510861081 1084107710881077 10871088107710741086108910931086107610801090 10831102107310911102 107610881091107510911102 110110821086108510861084108010821091 1074 1084108010881077. 1040108410771088108010821072 1080108910871099109010991074107210771090 1091108910801083108010741072110210971077107710891103 10761072107410831077108510801077 10891086 1089109010861088108610851099 10881072108910901091109710801093 11011082108610851086108410801082, 1091 108510771105 108810721089109011051090 1076107710921080109410801090 109010861088107510861074108610751086 1073107210831072108510891072 1089 1076108810911075108010841080 10891090108810721085107210841080. 108910801085107510721087109110881089108210801081 107610861083108310721088 (105010861076 107410721083110210901099: SGD) 1062107710851090108810861073107210851082: 1042107210831102109010851086-1092108010851072108510891086107410861077 1091108710881072107410831077108510801077 105710801085107510721087109110881072 105710801085107510721087109110881089108210801081 107610861083108310721088 (1085107210791099107410721077108410991081 10901072108210781077 1089108010851075) 11031074108311031077109010891103 1074107210831102109010861081 10861076108510861081 10801079 10851072108010731086108310771077 108710881086109410741077109010721102109710801093 10891090108810721085. 1059 105710801085107510721087109110881072 10741099108910861082108610881072107910741080109010721103 10881099108510861095108510721103 110110821086108510861084108010821072, 10861090108310801095108010901077108311001085109910841080 1095107710881090107210841080 1082108610901086108810861081 11031074108311031102109010891103 1089109010721073108010831100108510991077 1094107710851099 1080 10861090108210881099109010721103 107610831103 1073108010791085107710891072 10891088107710761072, 108910741086107310861076108510721103 10861090 108210861088108810911087109410801080. 1054108910851086107410861081 110110821086108510861084108010821080 11031074108311031102109010891103 1101108210891087108610881090 108610881080107710851090108010881086107410721085108510991077 1086109010881072108910831080: 1073109910901086107410721103 11011083107710821090108810861085108010821072, 108210861084108711001102109010771088108510861077 108610731086108810911076108610741072108510801077, 1092107210881084107210941077107410901080109510771089108210721103 1080 108710881086109510721103 1093108010841080109510771089108210721103 108710881086107610911082109410801103. 10561072108910901091109710801081 108910771082109010861088 1092108010851072108510891086107410991093 10911089108310911075 108910761077108310721083 10571080108510751072108710911088 1092108010851072108510891086107410991084 1094107710851090108810861084 107010751086-104210861089109010861095108510861081 1040107910801080. 169 199682112017 OANDA Corporation. 104210891077 10871088107210741072 10791072109710801097107710851099. 10581086107410721088108510991077 10791085107210821080 OANDA, fxTrade 1080 108910771084107710811089109010741086 10901086107410721088108510991093 107910851072108210861074 fx 10871088108010851072107610831077107810721090 OANDA Corporation. 104210891077 108710881086109510801077 10901086107410721088108510991077 10791085107210821080, 10871088107710761089109010721074108310771085108510991077 10851072 1101109010861084 10891072108110901077, 11031074108311031102109010891103 10891086107310891090107410771085108510861089109011001102 108910861086109010741077109010891090107410911102109710801093 1074108310721076107710831100109410771074. 10581086108810751086107410831103 10821086108510901088107210821090107210841080 10851072 10801085108610891090108810721085108510911102 107410721083110210901091 108010831080 10801085109910841080 107410851077107310801088107810771074109910841080 1087108810861076109110821090107210841080 1089 10801089108710861083110010791086107410721085108010771084 10841072108810781080 1080 1082108810771076108010901085108610751086 10871083107710951072 107410831077109510771090 1074109910891086108210801077 10881080108910821080 1080 10871086107610931086107610801090 10851077 1074108910771084 1080108510741077108910901086108810721084. 10561077108210861084107710851076109110771084 107410721084 109010971072109010771083110010851086 1086109410771085108010901100, 10871086107610931086107611031090 10831080 107410721084 10901072108210801077 10901086108810751086107410991077 10861087107710881072109410801080 1089 109110951077109010861084 10741072109610801093 108310801095108510991093 1086107310891090108611031090107710831100108910901074. 1042107210961080 109110731099109010821080 10841086107510911090 108710881077107410991089108010901100 10861073109810771084 10741072109610801093 1080108510741077108910901080109410801081. 1048108510921086108810841072109410801103, 10871088108010741077107610771085108510721103 10851072 107610721085108510861084 10891072108110901077, 10851086108910801090 10861073109710801081 10931072108810721082109010771088. 10561077108210861084107710851076109110771084 107410721084 10761086 108510721095107210831072 10901086108810751086107410831080 1086107310881072109010801090110010891103 10791072 1087108610841086109711001102 1082 10851077107910721074108010891080108410991084 1082108610851089109110831100109010721085109010721084 1080 109110731077107610801090110010891103, 109510901086 10741099 108710861083108510861089109011001102 108710861085108010841072107710901077 107410891077 1089108610871091109010891090107410911102109710801077 10881080108910821080. 10581086108810751086107410831103 10871086108910881077107610891090107410861084 108610851083107210811085 -108710831072109010921086108810841099 107410831077109510771090 10761086108710861083108510801090107710831100108510991077 10881080108910821080. 10571084. 108810721079107610771083 17110551088107210741086107410991077 1074108610871088108610891099187 10791076107710891100. 1060108010851072108510891086107410991081 10891087108810771076-1073107710901090108010851075 10761086108910901091108710771085 109010861083110010821086 10821083108010771085109010721084 OANDA Europe Ltd, 1103107410831103110210971080108410891103 10881077107910801076107710851090107210841080 105710861077107610801085107710851085108610751086 10501086108810861083107710741089109010741072 108010831080 1056107710891087109110731083108010821080 10481088108310721085107610801103. 105010861085109010881072108210901099 10851072 1088107210791085108010941091, 1092109110851082109410801080 109310771076107810801088108610741072108510801103 105210584 1080 108210881077107610801090108510861077 10871083107710951086 10891074109910961077 50: 1 1085107710761086108910901091108710851099 107610831103 1088107710791080107610771085109010861074 10571086107710761080108510771085108510991093 106410901072109010861074 1040108410771088108010821080. 1048108510921086108810841072109410801103 10851072 1101109010861084 10891072108110901077 10851077 1087108810771076108510721079108510721095107710851072 107610831103 1078108010901077108310771081 10891090108810721085, 1074 1082108610901086108810991093 10771077 108810721089108710881086108910901088107210851077108510801077 108010831080 1080108910871086108311001079108610741072108510801077 10831102107310991084 10831080109410861084 108710881086109010801074108610881077109510801090 1084107710891090108510991084 1079107210821086108510721084 1080 10871088107210741080108310721084. 10501086108410871072108510801103 1089 108610751088107210851080109510771085108510861081 1086109010741077109010891090107410771085108510861089109011001102 OANDA Europe Limited 1079107210881077107510801089109010881080108810861074107210851072 1074 104010851075108310801080, 108810771075108010891090108810721094108010861085108510991081 10851086108410771088 7.110.087, 11021088108010761080109510771089108210801081 10721076108810771089: Turm 42, Boden 9a, 25 Old Broad St, London EC2N 1HQ. 104410771103109010771083110010851086108910901100 10821086108410871072108510801080 1083108010941077108510791080108810861074107210851072 1080 108810771075109110831080108810911077109010891103 10591087108810721074108310771085108010771084 10921080108510721085108910861074108610751086 1085107210761079108610881072. 10831080109410771085107910801103 8470 542574. OANDA Japan Co. Ltd. 8212 108710771088107410991081 10761080108810771082109010861088 10871086 108610871077108810721094108011031084 1089 10921080108510721085108910861074109910841080 1080108510891090108810911084107710851090107210841080 1090108010871072 Kanto Lokale Finanz Bureau (Kin-sho) 108810771075. 8470 2137 1095108310771085 1040108910891086109410801072109410801080 1092108010851072108510891086107410991093 109211001102109510771088108910861074, 108810771075. 8470 1571.

Monday 30 October 2017

D3 Js Gleitender Durchschnitt


Updates: 1) I8217ve legte alle Codebeispiele in codepen. iocollectionnjzYxo 2) Ich schreibe diesen Beitrag nach I8217m fertig meiner Visualisierung mit React-Serie, weil it8217s 4 Jahre alt und es gibt andere Möglichkeiten, dies zu tun jetzt. Daten sind das erste D in d3 (oder möglicherweise das dritte, aber es8217s definitiv einer von diesen). Sowieso. Setzen Sie Ihre Daten in die richtige Form ist entscheidend, um prägnante Code, der schnell läuft und ist leicht zu lesen (und später zu beheben) zu haben. Also, welche Form sollten Ihre Daten in Sie zweifellos haben viele Optionen. Um dieses Tutorial zu befolgen, gehen wir davon aus, dass Sie die Beziehung zwischen R038D-Ausgaben und dem BIP-Wachstum für eine Reihe von Ländern skizzieren möchten. Sie haben diese Datei. Voll tabellarischer Daten, die für jedes Land einen Namen, einen Kontinent, die Brutto-R038D-Ausgaben in Prozent des BIP, das BIP-Wachstum und für die Kontextpopulation und das Pro-Kopf-BIP auflistet. Also eine sehr grundlegende Ansatz wäre, um jede dieser Variablen in einem unabhängigen Array. (Don8217t bower scrolling, it8217s mehr von der gleichen) Dann können Sie nur erstellen Markierungen für jedes Datenelement und holen jedes Attribut unabhängig. Let8217s tun ein Blasendiagramm zum Beispiel. (Small aside: in der Post habe ich gewonnen8217t gehen Sie durch den Code, um die svg Container oder die Waage, anstatt sich auf die Datenstrukturen. Dieser Code, der wirklich nichts Besonderes ist, finden Sie im Quellcode der Beispiele) . Um unsere Kreise zu kreieren, würden wir so etwas schreiben: Siehe Beispiel in einem eigenen Tab oder Fenster, aber das ist die Hölle. Wenn aus irgendeinem Grund ein Fehler in einem der Werte auftritt, beispielsweise aufgrund einer Katze oder eines kleinen Kindes in der Nähe des Computers, ist der Fehler sehr schwierig zu beheben. Ein weiteres Problem ist, dass es sehr schwierig ist, jede Art der nachfolgenden Behandlung auf die Daten anzuwenden. Zum Beispiel werden Sie feststellen, dass es kleinere Blasen vollständig innerhalb der großen Orangenblase, die geschieht, auf sie zu sein. Es ist also nicht möglich, die kleineren Blasen zu überstreichen. Ein Weg, um Adresse, die zu sortieren Daten in der Reihenfolge der abnehmenden Bevölkerung (die Größe der Blasen), so dass es unmöglich wäre, diese Art von Situation zu haben. Nun, während es möglich ist, 6 Arrays nach den Werten von einem zu sortieren, ist es sehr chaotisch. Idealerweise sollten Sie alle Werte haben, die in einem einzigen Objekt grafisch übersetzt werden sollen. Sie möchten ein Array dieser Objekte haben, das Sie an die Datenmethode übergeben und so etwas schreiben können: Hier haben Sie nur eine Datenquelle, die viel sicherer ist. Also, wenn you8217re denken: Ich weiß, ich sollte eine Variable wie folgt zu erstellen: und dies getan, und darüber hinaus, wenn Sie 8220Hey denken, kann ich dies in Excel aus meiner CSV-Datei, mit einer Formel, die ich über die rows8221 kopieren , Müsst ihr jetzt im Namen all dessen, was gut und heilig ist, aufhören. Obwohl es funktioniert: Dieser Ansatz hat eine Reihe von Fehlern, die Sie alle vermeiden können, wenn Sie lesen. Zuerst wird die Ausführung Ihres Programms gestoppt, während Ihr Browser den Quellcode liest, der die Variable 8220data8221 enthält. Dies ist für 36 Zeilen vernachlässigbar, aber da Objekte immer größer und komplexer werden, kann eine äquivalente Variable Sekunden oder sogar Minuten zum Laden benötigen. Und jetzt haben wir ein Problem. That8217s ein Problem für Ihre Benutzer. Nun zu Ihnen: das Erstellen einer JSON-Variablen aus tabellarischen Daten ist mühsam und fehleranfällig. Die Formelbearbeitung Schnittstelle in Excel doesn8217t wirklich helfen Ihnen, wo Sie ein Zitat oder einen Doppelpunkt verlegt haben. Infolgedessen ist dies sehr zeitaufwändig. Don8217t tun, dass: es ist ein viel einfacher Weg. Gibt die Funktion d3.csv ein. Here8217s, wie es funktioniert. Sie sagen Ihrer d3.csv-Funktion den Speicherort einer csv-Datei (die wir alle zusammen hatten) und eine Funktion, die auf dem Array von Objekten ausgeführt werden muss (was wir immer wollten), indem Sie die erste Zeile als Schlüssel erstellt haben. Mit anderen Worten, sobald innerhalb der d3.csv-Funktion, die 8220csv8221 Variable wird genau das, was wir zugewiesen 8220data8221 früher, mit einem großen Unterschied, dass wir didn8217t haben, um diese Variable zu produzieren oder jede Art von manuellen Eingriff zu machen: wir sind Bestimmt entspricht er genau der Datei. Eine nette Sache mit dieser Methode ist, daß, da Ihre Variable nicht explizit im Quellcode ist, Ihr Browser es viel schneller lesen kann. Die Daten werden nur gelesen, wenn die Funktion d3.csv aufgerufen wird, im Gegensatz zum vorherigen Ansatz, bei dem die Gesamtheit des Quellcodes (einschließlich der Daten) gelesen werden musste, bevor die erste Anweisung ausgeführt werden konnte. Natürlich macht es nur einen Unterschied, wenn die Datengröße signifikant ist. Aber mit der d3.csv Ansatz würde Sie anzeigen eine 8220loading data8221 Warnung irgendwo auf Ihrer Seite, und entfernen Sie es, wenn in d3.csv. Viel besser als eine leere Seite. Drei Einschränkungen mit dieser Methode. Dies funktioniert nicht mehr in einem lokalen Dateisystem (dh beim Öffnen einer Datei im Browser). Die resultierende Datei kann nur auf einem Webserver laufen, der lokal sein kann (dh die Seite hat eine URL). Was auch immer in der d3.csv-Funktion geschieht, ist nicht mehr im globalen Geltungsbereich des Programms. Dies bedeutet, dass nach dem Start des Programms können Sie nicht öffnen Sie die Javascript-Konsole und überprüfen Sie den Wert von 8220csv8221, zum Beispiel. Dies macht diese Programme etwas schwieriger zu debuggen (es gibt natürlich Möglichkeiten, wenn). Alles, was aus der Datei gelesen wird, wird als Strings behandelt. Javascript macht eine Menge von Typ-Konvertierung aber darauf achten, dass, oder Sie haben Überraschungen. Dies ist, warum ich schrieb x (d. GERD) zum Beispiel (vor einer Zeichenfolge konvertiert sie in eine Zahl). Um diese überlegene Art der Datenerfassung zu feiern, werden wir in eine animierte Dateneingabe geworfen: Die Kreise werden bei einem Standardwert initiiert und bewegen sich zu ihrer Position. Sie können den Link überprüfen, um den Übergangseffekt zu sehen. So ist auf der Ebene der Marke (dh unserer Kreise) die bequemste Form der Daten ein Objekt mit mindestens so vielen Tasten, wie es grafische Eigenschaften dynamisch ändern. Eine flache Datenreihe ist in Ordnung, wenn wir nur eine Datenreihe haben. Aber was, wenn wir mehrere Serien in der Tat haben, haben die meisten Visualisierungen eine Struktur und eine Hierarchie. So let8217s gehen mit unseren Daten, aber jetzt let8217s nehmen an, dass wir Werte für verschiedene Kontinente als verschiedene kleine Scatterplots (8220small multiples8221) zeigen wollen. Intuitiv: we8217ll wollen 5 8220g8221 Gruppen zu unserem svg Behälter addieren, eine für jeden Kontinent und fügen dann ein Punkte pro Land in jedem Kontinent diesen Gruppen hinzu. Unsere Flat-Array so8217t Arbeit so gut dann. Was tun? Die Antwort d3 auf dieses Problem ist der d3.nest () Satz von Methoden. D3.nest () dreht ein flaches Array von Objekten, das dank d3.csv () ein sehr einfach verfügbares Format ist, in einem Array von Arrays mit der Hierarchie, die Sie benötigen. Nach unserer Intuition, wouldn8217t es schön, wenn unsere Daten wäre: Ein Array aus 5 Elementen, eine für jeden Kontinent, so könnten wir die 8220g8221 Gruppen erstellen, Und wenn jedes dieser 5 Elemente enthalten ein Array mit den Daten aller entsprechenden Länder, noch in diesem Objekt-Format, das wir lieben Dies ist genau das, was d3.nest (). D3.nest (), go Mit der. key () - Methode geben wir an, was wir zur Erstellung der Hierarchie verwenden werden. Wir wollen diese Daten nach Kontinenten gruppieren, so dass wir diese Syntax verwenden..sortKeys wird verwendet, um die Schlüssel in alphabetischer Reihenfolge zu sortieren, so dass unsere Panels in der alphabetischen Reihenfolge der Kontinente erscheinen. Wenn wir dies auslassen, erscheinen die Panels in der Reihenfolge der Daten (dh Ozeanien zuerst als Australien ist das erste Land). Wir hätten das vermeiden können, indem wir zuerst die Daten nach dem Kontinent sortierten, bevor wir sie verschachtelten, aber es war einfacher. Hier haben wir nur eine Ebene der Gruppierung, aber wir könnten mehrere durch Verkettung mehrere. key () - Methoden haben. Der letzte Teil der Anweisung. Einträge (csv), sagt, dass wir diese Operation auf unsere CSV-Variable zu tun. Hier ist, was die Daten-Variable aussehen wird: Nun, da wir unsere Daten in einer idealen Form let8217s ziehen die Marken: (Sie können auf den Link klicken, um den Übergangseffekt sehen und lesen Sie die vollständige Quelle). Dies ist alles sehr schön, aber wouldn8217t es besser sein, wenn wir einige aggregierte Informationen von den Kontinenten Let8217s versuchen, um herauszufinden, die durchschnittlichen Werte für R038D Ausgaben und BIP-Wachstum zu charakterisieren könnten. Kann es leicht gemacht werden Dies ist ein Job für die andere main d3.nest-Methode, Rollup. Rollup ist die Aggregationsfunktion. Hier ist ein Beispiel. Denken Sie daran, wie die Kombination von. key () und. entries () ein Array in Arrays von kleineren Arrays umgibt, wobei der Wert, der an die Funktion innerhalb der Rollup-Methode übergeben wird, jeder dieser Arrays ist Array von allen Objekten entsprechend Ländern in Amerika, dann ein Array von allen Objekten entsprechend Ländern in Europa, etc.) Auch wenn wir sortKeys in unserer vorherigen Nesting-Bemühung verwenden, verwenden wir sie auch hier besser. Hier ist, was die Variable aussehen wird: Unglaublich nur die Werte, die wir brauchen. Jetzt geht es nur darum, sie zur Skizze hinzuzufügen. Zwei kleine Ergänzungen hier: Dies ist das letzte Beispiel 8211 wieder können Sie auf den Link klicken, um den Übergang zu sehen und erhalten Sie die Gesamtheit der Quelle. Auf der Markierungsebene möchten Sie Objekte mit so vielen Eigenschaften haben, wie Sie grafische Variablen (wie x, y, füllen usw.) mit d3.csv () und eine flache Datei benötigen (d3 bietet auch Funktionen wie D3.json oder d3.xml, um Daten in einem anderen Format zu verarbeiten). D3.nest kann Ihnen helfen, gruppieren Sie Ihre Einträge, um Ihre Daten zu strukturieren und erstellen Sie mehr anspruchsvolle Visualisierungen Rollup kann verwendet werden, um die Daten gruppiert mit d3.nest Post navigation Lassen Sie eine Antwort Antworten abbrechen Sehr gut Tutorial Jerome 8211 während CSV doesn8217t bieten 8220spontaneous8221 Daten wie a MySQL-Abfrage, es verbessert sich erheblich auf die manuelle Eingabe-Ansatz. Ich vermute, die CSV könnte mit genug Flexibilität und Detail entworfen werden, um eine Datenbank zu simulieren, mit verschiedenen Filtern in d3. Hallo, danke obwohl d3 kann komplett interagieren mit einer Datenbank wie mySQL mit einem ähnlichen Ansatz jeromecukier. netblog20120102using-d3-mit-a-mysql-Datenbank, aber wenn Sie Daten im tabellarischen Format zu beginnen, ist d3.csv sehr praktisch Sehr nützlich Tutorial I8217d wie zwei Fragen zu stellen: Erstens: kann ich umbenennen die Attribute GERD und Wachstum, sagen wir. Als avgGERD oder avggrowth anstelle des alten Namens (Think of the AS-Schlüsselwort in SQL) zweite Frage: Bin ich gezwungen, zuvor alle Länder gruppieren, um die gleichen Attribute (in diesem Fall GERD und Wachstum) über das Array zu durchschnittlich Der Länder in einem Kontinent I8217m sollte auf einer ähnlich verschachtelten Struktur und I8217ve einige Mühe arbeiten, da ich can8217t definieren einen Accessor für die d3.mean () - Funktion. Vielen Dank im Voraus funktionieren würde. (Oder einen gültigen Schlüsselnamen anstelle von a und b). 2) technisch, nein. Aber Sie können wollen. Für jede Datenoperation in d3 oder javascript im Allgemeinen, und dies ist etwas, das ich in das Tutorial gesetzt haben könnte, gibt es die Möglichkeit, von einer leeren Struktur (entweder ein leeres Array oder ein leeres Objekt), Schleife durch die Quelldaten und starten Fügen Sie etwas zur Struktur hinzu. Zum Beispiel könnte ich schreiben: avgs csv. forEach (Funktion (d) var cd. continent wenn (avgs) avgs. navgs. n1 avgs. GERDavgs. GERDd. GERD avgs. growthavgs. growthd. growth sonst avgs) keys (avgs). Für jede (Funktion (c) avgs. GERDavgs. GERDavgs. n avgs. growthavgs. growthavgs. n) wird dies die gleiche Ausgabe wie zuvor ohne eine Nesting-Funktion, it8217s ein bisschen länger zu schreiben, aber möglicherweise klarer. Weniger triviale Operationen sind auch während der Schleife möglich. Vielen Dank für die schnelle Antwort Irgendwann habe ich das gleiche mit Ausnahme der Tatsache, ich habe nur einfach Javascript. Ich war neugierig, wenn man die Aufgabe innerhalb der. rollup () - Funktion ausführen könnte. PS: Kudos für Ihre große Lehre Stil, I8217m Lernen d3 und dieses Tutorial war unglaublich nützlich. Haufen von Kommentaren hier reden über die Arbeit mit einer echten Datenbank aber die nette Sache über dieses aus csv ist, dass Sie immer die Daten aus Ihrer Datenbank zu ziehen und schreiben csv-Dateien mit ihm 8211 auf diese Weise die Daten sowohl herunterladbar und funktioniert mit Das Tutorial sehr schön. Das würde obv geben dem Benutzer mehr Flexibilität, um die Daten auf andere Weise verwenden, sollten sie wollen oder müssen. Hallo Jerome. Das ist unglaublich hilfreich für mich. Eine Frage 8211, wie ich den Code ausführen, ohne die Namen der Attribute (Kontinent, GDP, etc.) I8217m sehr neu zu d3 so leid, wenn dies einfach ist. Ihr Code für die Referenz unten: d3.csv (8220data. csv8221, Funktion (csv) zuerst sortieren wir die Daten, dann erstellen wir die Markierungen, die wir in eine Ausgangsposition svg. selectAll (8220circle8221).data (csv).enter ( (8220c8221, Funktion (d)).attr (8220c8221, Funktion (d)) jetzt beginnen wir 8211, die Markierungen an ihre Position zu bewegen Große Tutorial, dies War super hilfreich für meinen Eintritt in d3 mit csvs I8217m versuchen, ein Liniendiagramm mit Datum als die x-Achse, die Summe der Aufträge als die y-Achse, und eine Zeilenfarbe für jeden meiner drei Läden. Mein Datensatz hat eine Zeile für Jeden Auftrag, so muss ich die Reihenfolge nach Datum und speichern: d3.csv (Datei, Funktion (Fehler, Daten) Daten data. map (Funktion (d) return store: d. store, date: parseDate (d. date ), Bestellungen: d. orders) Ich bekomme immer einen Fehler an dieser Zeile in den Code, und obwohl die Achse sind auf der Seite gezeichnet, gibt es keine Daten: Können Sie bieten jede Einsicht Vielen Dank im Voraus i can8217t definitiv ohne zu sehen Datendatei, aber meistens, definieren Sie Ihre Zeile Funktion irgendwo gut, würde der Name der Attribute von Ihrer Datendatei kommen. So dass davon ausgegangen, dass Sie wissen, Ihre Datei. Dass gesagt, für jedes Element des Arrays, können Sie tun, d3.keys (), die die Liste der Eigenschaften dieses Elements zurückgeben wird. Dh d3.keys (csv0). Hi Jerome, ich bin sehr neu in D3.js, derzeit arbeitete ich an einem Schulprojekt mit d3 und json. Ihr Tutorial war sehr hilfreich, so entscheide ich, es in meinem Projekt implementieren, da es die verschachtelten Daten seine viel ähnlicher zu mir, obwohl meine ist json Datei. Im Moment gruppiert es die Daten korrekt leider die einzelnen Daten, die durch den Kreis dargestellt wird, funktionieren nicht. Ich frage mich, was schief gelaufen ist, ich schätze es wirklich, wenn Sie einen Blick an ihm nehmen können. Hier ist der link zum projekt (githubemeshIPU-Zabbix-D3) Vielen Dank im Voraus Hey, danke für das Tutorial. Ich war ein wenig weg von den 3 Vorbehalte, aber they8217re eigentlich viel kleiner als Sie es klingen: 1. Ein wirklich einfacher Weg, um etwas auf einem Webserver laufen wird mit Site44 8211 Host die Dateien aus Ihrem dropbox. 2. Nicht sicher, dass ich dieses verstehen. Definieren Sie einfach eine globale Variable, dann weisen Sie ihr Werte im Callback zu. 3. Yep. Viele Tutorials über die Verwendung von json oder csv mit d3.json oder d3.csv, aber die einfachste Idee der Verwendung eines Arrays oder Datenobjekt ist immer noch ein mystery8230 Für einfache Anwendungen, die Aktualisierung eines Json oder CSV-Datei dynamisch ist ein Albtraum. In der Lage, ein Objekt mit den erforderlichen Daten dynamisch laden sollte einfach sein, verdammt es wirklich hilfreich Tutorial. ThanksRecently, ich wurde gefragt, wie Sie ein nachhaltiges Wissensmanagement schaffen. Die Antworten, die sie zuvor anscheinend auf diese Linien lagen, waren: unterschiedliche Wissensmanagementsysteme, Prozesse, Governance, Artefakte und Strukturen Das an diesem Wissensmanagement arbeitet. Denken Sie daran, dies war kein Projekt auf Wissensmanagement, sondern ein Programm, dass der Client war immer in. Sie dachten, dass sie Wissensmanagement dafür. Es gibt nichts, um die Antwort Schuld. Jahre des Management Lernens lehrte uns, dass, wenn wir ein Problem lösen wollen, mieten Menschen, es zu tun, Ressourcen zuzuteilen, und zeigen Engagement für sie. In der Tat, wir sprechen darüber, wie organisatorische Change Management (OCM). Sicher genug, dass es Beispiele für solche Fälle gibt. Bekanntlich zeigte IBM, wie es neue Systeme schaffen und unterstützen kann. Microsoft neu erfunden in der Internet-Ära, indem Sie genau das gleiche, bei der Schaffung einer neuen fokussierten Division. Doch in diesem Fall ist diese Antwort völlig falsch. Es sei denn, das Unternehmen ist im Geschäft des Wissensverkaufs, Wissensmanagementsysteme scheitern. Diese Art von Ansatz scheitert, wenn der Schwerpunkt nicht Wissensmanagement bedeutet. Dieses Problem ist insbesondere in vielen Wissensaustauschanwendungen, Kollaborationssystemen, Ausbildungssystemen und so weiter. Die allgemeine Erklärung, dass die Menschen geben, ist, dass die Designer scheiterte bei der Schaffung der richtigen Programme. Dass sie sich nur auf Computersysteme konzentrierten und OCM vernachlässigten. Oder, dass sie nicht genug Geld für die Unterstützung zuteilen. Alle diese Gründe sind richtig, aber nicht wirklich vollständig korrekt. Es gibt einen Grund, warum viel mehr Geld nicht zugewiesen wird, das Management sieht nicht den ROI. Oder, es ist ein Grund, dass sie OCM vernachlässigt dies war nicht der Fokus. Also, sagen wir, dass diese Systeme nicht wichtig sind Können wir sie wichtig machen Oder sollten wir sie sogar wichtig machen Lassen Sie uns dieses Thema ausführlich betrachten. Wie Organisationen versuchen, digital zu werden, erkennen sie die Bedeutung dieser Art von unterstützenden Systemen und noch nicht wissen, wie sie erfolgreich zu machen. Sie arbeiten über bringen viel mehr Berater, die Organisationskultur zu ändern und weiterhin scheitern. Daher verdient es ein tieferes Verständnis. Theorie der Nachhaltigkeit Am Anfang, in der Frage, die ich gefragt wurde, gab es ein Schlüsselwort: 8220nachhaltig8221. Normalerweise sehen wir dieses Wort in Ökologie, Architektur und Sozialwissenschaften. Dort spricht man über dauerhafte Systeme, Systeme, die sich selbst auffrischen, Systeme, die keinen externen Reiz benötigen, um sich selbst zu unterstützen. Normalerweise spricht man in der Ökologie über den Fußabdruck der Systeme: die Bemühungen, ein System zu schaffen, ein System zu pflegen und so weiter. Um ein System nachhaltig zu machen, wollen wir sicherstellen, dass es einen geringen Platzbedarf hat, und es hängt nicht von irgendjemandem explizitem Bemühen ab, es zu behalten. Lassen Sie uns zum Beispiel die nachhaltige Architektur betrachten: Es bedeutet, dass der Grundriss der Architektur niedrig ist. Es kann sich selbst durch geringen Energieverbrauch und vielleicht mit Solarenergie erhalten. Auch kann es recycle Wasser. Es kann Abfall zu reduzieren. Alle diese Metriken bedeuten, dass es nicht viel dauert, um die Architektur zu erhalten. Zum Beispiel in meinem Dorf, sind diese strohgedeckten Häuser mit Crossflow-Belüftung und Freiflächen gebaut. Heute werden die modernen Häuser mit Ziegelsteinen mit Fenster-AC-Einheiten gebaut. Kommen Sommer-Stromausfälle, sind die modernen Häuser unerträglich, während die alten Häuser sind nur unangenehm. Es ist das gleiche mit städtischen Design auch, wenn es mit der Natur harmonisch ist, ist es einfach zu erhalten. Die meisten Städte können nicht erhalten, ohne viel Mühe in diesen Tagen in die Straßen, Parkplätze, öffentliche Verkehrsmittel, Sanitär-und Wasserversorgung. Stellen Sie sich vor, wir bauen Städte für Menschen. Wir können sie nachhaltig machen. Sehen Sie den Kontrast zwischen zwei Entwürfen: Der erste setzt auf Parkplätze braucht es mehr und mehr Parkplätze, da es mehr und mehr Platz braucht und nur Autos können die Strecke zu durchqueren. Der zweite ist für Menschen gebaut, wo zu Fuß ist der Weg zu umgehen. Es funktioniert, weil es weniger Platz braucht. Bilderhöflichkeit: andrewalexanderprice Sicherlich können wir aus diesen Systemen bei der Gestaltung unseres Wissensmanagementsystems Lehren ziehen. Entwerfen für Menschen mit geringer Wartungs - oder Wartungsfreiheit oder mit der Art, wie Menschen es tun, anstatt sie zu verändern Eine neue Kultur aufzuzwingen. Nudge wie soziale Experimente anstelle von, sagen großen Sprung nach vorn Diese sind harte Fragen, ohne definitive Antworten. Dennoch können wir versuchen, die Rolle der nachhaltigen Systeme in der IT und die Schlüsselelemente für die Schaffung solcher Systeme zu verstehen. Drei Arten von IT-Systemen Lassen Sie uns sagen, dass eine Bank in neue Unternehmen der Massen-Wohlstand Kunden zu bekommen. Historisch dienten sie nur die Kunden mit 10 Millionen Dollar oder mehr. Jetzt wollen sie die gleichen Dienste für Menschen mit 250K zu verlängern. Lassen Sie uns sagen, dass die Organisation baut eine neue Abteilung zur Unterstützung dieser Initiative. Auch wenn es einfach klingt, ist dies eine schwierige Aufgabe. Erstens, die Mitarbeiter werden verwendet, um die Millionäre zu halten. Sie werden verwendet, um die Prozesse zu umgehen, um den Superreichen gerecht zu werden. Nun, dass sie mit regelmäßigen reichen Leute arbeiten, können ihre alten Wege nicht auf die neuen Zahlen skalieren. Und ihre Kompensation früher kann von verschiedenen Metriken abhängen: Handling ein paar HNI. Nun müssen sie verschiedene Metriken verwenden können insgesamt Geld unter Verwaltung. Die Systeme, die sie verwenden, werden für die am häufigsten verwendeten entworfen. Lassen Sie uns beschränken uns auf die Computersysteme (und unterstützende Prozesse), um diese Sparte laufen: Lassen Sie uns sehen, was diese Systeme tun und wo Nachhaltigkeit einen großen Unterschied machen kann. Kernsysteme Ohne diese Core-Systeme läuft das Unternehmen nicht einmal. Das Management stellt sicher, dass der Fokus auf diesen Systemen liegt. Diese Systeme laufen mit strengen SLAs, mit ausreichender Finanzierung und oft mit Meilensteinen, Boni und Strafen. Diese Metriken sind sehr eng mit den Geschäftsmetriken verknüpft. Diese Systeme müssen nicht nachhaltig sein, es gibt genug Unterstützung, um sie durch die Bereitstellung von externen Reiz. Es kann jedoch sein, dass die Architektur dieser Systeme nachhaltig gestaltet werden kann. Häufig werden diese Systeme umgeschrieben, um Veränderungen in der Wirtschaft zu unterstützen. Diese Umschreibungen können teuer sein und können Verzögerungen bei der Fähigkeit zur Reaktion auf die Märkte verursachen. Wenn wir die Architektur nachhaltig gestalten, können wir Änderungen am System vornehmen, ohne wesentliche Änderungen an der Kernkomponente der Architektur vorzunehmen. Zum Beispiel, wenn wir gute Modularisierung, gute Schnittstellen und kohärente Philosophie der Daten haben, können wir die bestehende Architektur ohne Änderungen erweitern. Zum Beispiel, wie Unix dauerte für die letzten 50 Jahre, ohne grundlegende Änderungen. Diese Art von Build-for-Change-Architektur kann Kernsysteme veränderbar machen und eine nachhaltige Architektur schaffen. Erforderliche Support-Systeme Die erforderlichen Support-Systeme gehören nicht zu den Core-Systemen. Aber um die Core-Systeme laufen zu lassen, brauchen wir diese Systeme. Die Metriken auf diesen Systemen, die SLAs und wie gut sie ausgeführt werden, werden nicht direkt in die Hauptkernmetriken übersetzt. Dennoch sind sie wichtig, wie Versicherung. Zum Beispiel, wenn die Sicherheit ein Problem ist, würden Sie hören. Wenn Operationen ein Problem sind, würden Sie wieder davon hören. Wenn es keine Probleme gibt, sind die Chancen werden Sie nicht über diese Systeme überhaupt hören. Ein interessanter Aspekt ist, dass diese Systeme in verschiedenen Unternehmen sehr ähnlich sind. Zum Beispiel wäre die HR, die anders für eine Bank, sagen wir, ein Einzelhandelsunternehmen Die Chancen sind, dass sie weg mit der Verwendung der Computersysteme, die Generika sagen können, sind Software als Dienst in der Cloud. Oder, noch besser, können sie sogar auslagern die meisten dieser Funktionen nach außen. Cloud passt hier sehr gut, sei es als Full-End-to-End-Service oder als Teildienst. Da diese Systeme obligatorisch sind, auch wenn es keinen direkten Geschäftswert gibt, wird die IT häufig auf diesen Systemen gemessen. Aus diesem Grund müssen diese Systeme nicht selbsttragend sein. Dennoch, da diese nicht Kern des Unternehmens sind, sehr selten wollen Unternehmen in diesen Systemen zu innovieren. Optionale Support-Systeme Diese Systeme sind das, was das Management in der Vision spricht. Zum Beispiel, wenn ein Unternehmen sagt, dass die Mitarbeiter die besten Vermögenswerte sind, das sind die Systeme soll den Wert dieses Vermögenswertes zu erhöhen. Jedes visionäre Programm spricht darüber, wie diese Systeme geschaffen und gepflegt werden. Und doch sind diese Systeme, die am Ende oft fehlschlagen. Da diese nicht im Weg der Kernlieferung sind, selbst wenn diese Systeme ausfallen, wirft niemand Alarme auf. Sie sind wie der Klimawandel Vorboten. Ein paar Eisbären sterben Nicht ein Mainstream-Interesse Aber wir alle wissen, dass ohne diese Systeme, modernen digitalen Unternehmen nicht überleben können. Warum habe ich so eine kühne Erklärung Werfen Sie einen Blick auf die Modelle der modernen digitalen Unternehmen: Google, Facebook, Netflix und so. Fast alle von diesen legen viel Wert auf die Einstellung, die Schaffung und die Pflege Talente. Sie nehmen diese optionalen Systeme und machen sie zu wettbewerbsfähigen Vermögenswerten so viel, dass die meisten Unternehmen, die digital sein wollen, wollen sie auf diese Aspekte zu emulieren. Die ganze Idee von Innovationslaboratorien oder - gremien oder 2-stufigen IT - oder datengesteuerten Organisationen nehmen diese Praktiken als einen Weg, solche dynamischen Organisationen zu schaffen. Für eine Organisation, die diese optionalen Support-Systeme als eine Kernkraft sehen will, muss man sich nicht nur auf digitale Unternehmen verlassen. Sie können sich auf Open-Source-Ökosysteme, wo diese optionalen Systeme sind gut entwickelt und nachhaltig. Zum Beispiel, in der Open-Source-Welt, wenn ein Freiwilliger sich einer neuen Software-Entwicklungsaufwand, wie er es geht, kann er den Code und die Dokumentation auf Github lesen. Er kann die alten Notizen oder Diskussionen über Mailing-Listen-Archive oder Google-Gruppen lesen. Er kann an den schwachen Kanälen teilnehmen. Er kann den Code forkeln Er kann einige einfache Probleme beheben und zurückgeben Er kann die Dokumentation verbessern. Kurz gesagt, ohne irgendwelche Ressourcen zu besteuern, kann er ein produktives Mitglied des Teams werden. Tatsächlich sind dies die herausragenden Merkmale dieses Entwicklungsprozesses, die ihn nachhaltig machen: Alle optionalen Systeme werden in die erforderlichen Systeme eingebacken: Das Wissensmanagement ist Bestandteil des Versionskontrollsystems. Die optionalen Systeme sind einfach. Zum Beispiel sind die meisten der Dokumentation in Abschriften geschrieben. Es ist ein Teil des Quellcodes. Es ist nicht aufwendig, aber schnell auf den Punkt der Boot-Umreifung. Es begrüßt die Mitwirkenden. Der Vorgang des Gabelns und des Codes ist einfach. In der Tat, die erste denken, die Menschen handhaben ist diese Vereinfachung, bevor sie das Projekt in Github. Wenn sich die Führung ändert, kann das gesamte Projekt geklont werden. Es gibt keine versteckten Informationen. Im Gegensatz dazu, in einem Unternehmen, ist dies, wie es sein könnte: Ein lokales, spezielles Toolset, das Leute zwingt, zu lernen, bevor sie beitragen Ein spezielles Team, das Onboarding Dokumentation, die oft ist out-of-date beizubehalten, Wenn man hat Um einen Beitrag zu dem Projekt zu leisten, wird es die Handhabung eines bestehenden (oft beschäftigten) Teammitglieds erfordern. Keine schnelle Befriedigung für die neue Ecke, dh es gibt keinen Anreiz für neue Teilnehmer, dem Programm beizutreten. Kurz gesagt, die Open-Source-Weg ist nachhaltig, weil es einfach ist, begrüßt es zu neuen Ecken, so dass sie das System erhalten können. Nachhaltige Organisationen Die gleichen Prinzipien arbeiten auch bei der Schaffung von Organisationen. Die meisten Unternehmen konzentrieren sich auf Kunden und Ergebnisse, die zu den direkten Metriken beitragen. Die indirekten Metriken, die diese Metriken auf lange Sicht ermöglichen, können für eine Weile fokussieren, aber in dem Moment, in dem sie weniger wichtig werden, fallen sie auf der anderen Seite. Weil sie nicht nachhaltig sind, besteht die Gefahr, dass sie zu einer Ödnis der Systeme mit Lippenbekenntnissen werden. Die meisten Organisationen erkennen dieses Problem. Ihre Lösung ist, den Fokus auf dieses Problem zu erhöhen. Aber das löst das Problem nicht für immer. Stattdessen wird es wie US-medizinische Gesundheitsversorgung. Der Witz ist, dass Menschen mit reichen Plänen am Ende immer schlechte Behandlung, wie jeder will sie für etwas zu behandeln. Und Menschen ohne Versicherung auch am Ende immer schlechte Behandlung. Nur mit der richtigen Art der Versicherung erhalten wir die richtige Behandlung. Die Idee ist der Fokus sollte die Schaffung solcher nachhaltigen Systeme die Systeme, die ohne kontinuierliche Fokus laufen können. Diese Systeme sollten als Nebenprodukt der Hauptmetriken laufen. Sie sollten laufen, weil die Traditionen gegründet. Sie sollten laufen, weil sie egoistische Interessen der Menschen dienen. Sie sollten laufen, weil die kollektiven Interessen der Menschen, um andere zu bestätigen. Checkliste für nachhaltige Systeme Mit dem Wissensmanagement haben wir begonnen und nachhaltig umgesetzt. Ich gab keine Antwort auf diese Frage. Stattdessen ging ich weiter auf die Erklärung der Nachhaltigkeit. Nun wollen wir auf ein nachhaltiges Wissensmanagement zurückgreifen. Während wir es nicht definieren können, können wir in der Lage sein, bei der Erstellung einer Checkliste zu helfen, um zu sehen, ob ein System nachhaltig ist. Offensichtlich wollen wir, dass es einen geringen Platzbedarf hat, aber das ist nicht genug. Die folgende Checkliste kann ein guter Anfang sein. Im stationären Zustand sollte das System keine zusätzlichen Ressourcen benötigen, um es zu unterstützen. Bis es in den stabilen Zustand gelangt, sollten sich die Stakeholder dafür einsetzen. Das System sollte sich automatisch selbst halten. Es sollte im Interesse einer Person sein, es zu benutzen. Es sollte im Interesse einer Person sein, dazu beizutragen. Es sollte im Interesse des Teams zu nutzen und zu pflegen. Es sollte einfach sein, mit dem System zu beginnen. Sie sollte nicht den bestehenden Arbeitsweisen widersprechen. Solche Systeme können auf Dauer erhalten werden. Wenn wir ein nachhaltiges Wissensmanagement aufbauen, ist dies die Liste, gegen die wir vorgehen sollten. Geschrieben von rama um 10:03 Uhr Was wäre, wenn ich Ihnen sagen, dass die E-Commerce-Website, die Sie entwickelt haben, könnte auf einer statischen Website gehostet werden, die es bieten würde Premier Performance Oder dass das Dokumenten-Management-System auf jeder Ebene ausgeführt werden könnte, Alten statischen Server wie Apache. Nginx. Stick mit mir und gut erforschen dieses Thema. Diese Informationen können auch für fortgeschrittene Entwickler zu grundlegend sein, aber für die meisten Manager kann diese Einführung längst überfällig sein. Ein bisschen Geschichte Vor langer Zeit waren die meisten Websites statisch. Alle, die sie dienten, waren Seiten html, Text und Bilder. Hyperlinks erlaubten uns, von einer Seite zur anderen zu navigieren. Die meisten waren inhaltsreiche Websites mit Informationen, Unterhaltung und Fotos. Jetzt ist es unvorstellbar, dass das Klicken auf die Hyperlinks die einzige Möglichkeit war, mit den Seiten zu interagieren. Wie in der Abbildung gezeigt, ist das Protokoll zwischen dem Webserver und dem Benutzer fest: http-Protokoll. Die Art und Weise der Webserver interagiert mit Backend-Informationen (im Falle von statischen Web, es ist html, css, js, Bilder und so) ist bis zu uns. Eine statische Website dient diesen Informationen direkt aus dem Dateisystem. Als die Leser begannen, Websites auf interessante Weise zu navigieren oder durch das Hinzufügen von Inhalten mit den Websites (wie Kommentare) zu interagieren, begannen wir serverseitige Programmierung zu benötigen. Serving aus einem Dateisystem wird nicht. Die Anwendung muss komplexe Anforderungen zu verstehen und irgendwie verwenden Sie die Informationen in den Dateien (oder Datenbanken), um die Informationen zu dienen. Da Datenbank eine populäre Wahl ist, um strukturierte Informationen zu halten, fing Web an, als Schnittstelle zu den Datenbankarten der einfachen crud Operationen zu dienen. In der Tat, Anwendungen wie phpMyAdmin sogar lassen die Menschen verwalten die Datenbanken im Web. Zurück zu den Web-Anwendungen, die ich erwähnt, 8212 E-Commerce, digitale Marketing-, Dokumenten-Management-Systeme 8212 alle diese Websites gelten als interaktive, dynamische und programmierbar und benötigen daher einen Web-Applikationsserver. Im Moment wählen Sie eine Plattform (in der Regel bedeutet es einen App-Server, eine Sprache, ein Framework, eine Reihe von Bibliotheken), youre stecken mit ihm für immer. Mal sehen, wie wir unseren Ausstieg gestalten können. Statisches Web mit automatisierter Look-and-Feel-Unterstützung Lassen Sie uns einen einfachen Fall der Informationsdarstellung betrachten. In this setup, all the consumers want to do is read the information. In that case, why not stick to a static website We can. The advantages are obvious. First and foremost, a static website is simple. It does not require any moving parts. Any old webserver can serve static content. You can even run a static website, with a simple one-liner in Python ( python mSimpleHTTPServer in Python 2.7 or python3 m http. server ). It is also incredibly fast. The server has to simply send pages it does not have to do any other computation. As such, it can be sped up even more by caching the content locally, or even using CDN (content delivery networks). You can use special purpose webservers such as nginx, that are optimized for serving static content too. Furthermore, it is simple to maintain. You can back it up in the cloud, move to a different provider, and even serve it from your own desktop. You do not need to back up a database or worry about software upgrades, portability issues, or even support. But, what are the downsides Let us consider the problems: How do you create nice looking pages Let us say that you want to create a standard look and feel. If you are the kind that use hand-coded HTML, you will cut and paste the HTML template and then edit it. Pretty soon, it becomes complex. If you want to change the look and feel, you will have to go through all the pages and edit the few lines. How do you create standard elements of a website For example, you want a menu scheme. If you add a new area, then you have to go to each page and add a link in the menu to this new area of website. Or, if you want to create a sitemap, you will find yourself constantly updating the sitemap. Considering that a website has repetitive information depending on the context, static way of maintaining a website is cumbersome. That is why, even for the static websites, people prefer WordPress. Joomla. or Drupal all of which are meant for dynamically creating websites. In these systems of dynamic content generation, the content is generated based on the request. No matter what application you use, it will have following issues: The application becomes slow: The server needs to execute the program to generate a page and serve the page. Compare it to the earlier scenario where the server merely had to read the file from the file system and serve In fact, the server can even cache it, if the file doesnt change often. The application becomes complex: All the flexibility of combining content with the themes based on configuration comes at a price. The application server has to do many things. Consider the following full description of the stack. Any web server that is generating pages dynamically, needs to depend on an execution engine. It can be an engine that interprets a language, or executes a binary. For any language, we need a framework. For instance, if we are using Javascript, we can use Express as the framework. This framework can do many things. At a bare minimum, it can route the calls that is, it interprets any request and maps the request to the right response. Next, it needs to have libraries that deal with writing the logic to actually manipulate the data. To present the data, we need a templating engine. Of course, you have fancy names like Model (the data), view (the templates etc), and the controller (the routing) for this kind of framework (MVC). The problem with any stack is that once you are committed to it, it is incredibly difficult to change it. To make matters worse, the frameworks that let you start easily (for example, lot of php based frameworks) are not the best frameworks for enterprise strength requirements (like say Java, which is excellent in libraries that deal with lot of integration). Ask Facebook They started with Php and had to lot of optimizations to get the performance they want. How can we do better Can we still use the static website, and support better usability of the website Reduce the costs of maintenance The answer is yes. If we were to separate the content generation and content delivery, we can get best of the both worlds. From this activity, what did we gain We gained performance: The runtime has to serve static files, giving us several different options to improve the performance. We gained simplicity, somewhat: Technically, it is possible to mix and match different systems of generation (which is somewhat like using different languages and compiling down to machine code). Readers can observe that content delivery networks can do this job of caching generated content on-the-fly, giving us the illusion of static generation of content. Static website generators If we are going to generate static website, what options do we have Let us see the alternatives. Firstly, we can use the same dynamic content generators and dump out the entire site in static pages. That is, if we are using Drupal, we can dump all the nodes. Or, with WordPress, or any other content management site. The challenge is, what if there is no unique URL for a content Lot of content management sites offer multiple ways of accessing the static content. For example, Lotus notes was notorious for such URL generation. Then, the static content dumping can be difficult. More over, these systems are not meant for static website generation the limitations keep showing up as you start relying on them. Secondly, we can use WYSIWYG editors such as Dreamweaver. They can create static content, apply a theme, and generate the website. They come with several beautiful themes, icons, and support scripts as well. The challenge is that these systems are not programmable. Suppose you are generating content from external system. These systems do not provide a way to automate the content ingestion and upgrading of the website. Thirdly, we can use a programmable system that generates the content. These days, this is the favored approach. These systems generate or update the complete website just from text based files. You can programmatically import content, update the website and publish it to production all through scripting. Furthermore, they offer standard templating, support for CSS and Javascript libraries. The downside, of course, is that these systems are not mature. They are not general purpose either. Still, for an experienced programmer, this is a wonderful option. There are several examples of the third type of generation systems. The most popular ones are the ones that support blogging. For instance, Jekyll is a popular static website generator, written in Ruby, with a blog flavor. The content is authored in markdown format. Octopress is built on Jekyll supporting blogs. In Javascript world, there are blacksmith. docpad. and a few more. Out of all the contenders, for my use, I like hugo and docpad. Hugo is the simplest of the lot and extremely fast. Docpad is more versatile in supporting lot of different kind of formats, templates, and plugins. In hugo, all that I had to do was to create a hierarchy and drop in. md files as description. Based on the folder structure, it creates the menus, content layout, and the URLs. Docpad is a bit more complex, but it is also essentially the same. Static web with high interactivity There is a big problem with the earlier approach. Consider the example we were giving about a document management system: what if we want to search for the right document Or, sort the documents by date Or, slice and dice the material Or, draw graphs, based on the keywords For all these tasks, historically, we depended on web server doing all the heavy lifting. Do you want to sort the documents Send a request to the server. Do you want to filter the documents Send another request. While this kind of interaction between the user and the web server gets the job done, it is not terribly efficient. It is a burden on the server it increases bandwidth requirement it feels sluggish to the user. Thankfully, the situation changed with advancement of Javascript. Turns out when any HTML page is digested by the the browser, it creates a data structure called DOM. With Javascript, you can query and change the DOM. That means, at run time, you can do sort, filter, display, hide, animate, draw graphs all that with the information available to the browser. With this kind of power, we can design interactive websites without going back to the server. With this additional requirement, how we develop web pages and what technologies we use will be different. See the sequence diagram titled JS based interactive sites. The web server sends the data, html, and javascript the first time. After that, any interaction is handled by the script itself. It can compute the new content based on the user interaction, from the existing data and make the necessary modification to the page by changing the elements of DOM. The implications of this design option are enormous. We do not need to burden the server we do not need to overload the network we provide quick interaction to the customer. The range of interactions is limitless. For instance, if we are offering an electronic catalogue of books, we can search the titles, sort by authors, filter by publishing date, and so on. In fact, these kinds of interactions are common enough to have several mature libraries supporting them. For example, for the tasks I mentioned in the previous paragraph, I would use dataTables. If I am doing the same with millions of entries, I would use Pourover by NYTimes (which used this library for their oscar award fashion slicing and dicing web page). Static web for collaboration For the kind of interactivity we discussed earlier, Javascript libraries work well. If you think about it, all those web pages are providing is read-only interactivity. What if you want readwrite interactivity For example, if you have a website with lots of content. You want to provide people a way of adding comments. Take the case of earlier Octopress itself we may want to add commenting capability to those blog posts. How would we do that We certainly need server side capability to do that. Fortunately, the server-side capability need not come from us. We can easily use 3rd party server for these capabilities. For instance, we can use disqus or Facebook for comments. We can use Google analytics to track the users. In fact, the 3rd party server ecosystem is so strong these days, we can develop highly interactive websites, with just static content served out of our server. You can learn what other leading web companies are using on their web pages and what services they are using from stackshare. io . How do you integrate into your website Here is an example: This action creates a checkout button. When the user checkouts, it creates a token and provides the browser. You do need to have some server side component that takes this token and charges the user it goes beyond the usual static website I was describing. But, for most other less critically secure website, you can conduct the updates from the browser itself. For example, take a look at how you would integrate the analytics from Google on your website: You find this code in several websites, which posts a click data to the Google server. Admittedly, most services need server to interact with them, for security purposes. Nevertheless, the heavy lifting is done by some 3rd party web server. Static website special case: Server less setup A special case of static website is desktop website. Suppose you want to share a folder with your friends. Easiest way to put the folder in dropbox and share it with them. Now, suppose, you want to provide some interactivity, say, searching the files etc. What would you do You could host the files in a website. Too much trouble. You could run a local webserver. But, that is too complex for most people. Why not run the site with file: protocol, without requiring a server, directly opening a file in the browser This approach works surprisingly well. The workflow could be as easy as this: Let people, including you, place the files in the shared folder. Watch the folder on update (or, do it periodically) and run a script that generates the data file. The user can open the index. html folder, which uses the data file to create a web page. With suitable library (like datatables) the user can navigate, search and sort the files. This is a simple poor mans content management service. You can enhance the document authoring process to add all other kind of meta data to files so that you can make more effective slice and dice operations of the folder. Static web for e-commerce: An exercise for you Let us take it up one more notch. Can we design an entire e-commerce site as a static website (or, at least with minimal server components) We want to be able to display the catalogue, let the users browse, discover, and even readwrite the comments. In addition, we should let them add items to shopping cart and check them out. We may even want to add recommendations based on what you are looking at. Now, how many items can we keep in the catalogue Remember that images are in separate files. We only need the text data. Looking at general information, it is max 2K per item. While there is no limit to the amount of data browser can load, anecdotal evidence suggests that 256MB is a reasonable limit. So, 100,000 items can be displayed in catalogue, without problems. Remember that all this data and images can be served out of a CDN. We can do one better. We do not have to load all the items at once. We can load parts of items, based on demand. Now, if the commerce site has different divisions, and the customer chose one of them, we only need to load that part. If we can reduce the number of items to say 10,000 to start with, that makes it less than 20 MB, which is the size of a small video. So, it is entirely reasonable, for user experience perspective, to be able to load 20 MB for a highly interactive site. What about other services We can manage the cart in JavaScript. The actual checking out: payment, receipt, and communication to the backend need to be done an actual server. Anything less would make the system less secure. Anybody with knowledge of the JavaScript can easily spoof the browser so, best not to make direct calls to the backend, from the browser that assumes any valid data from the browser. All you are doing is a providing the integration in the browser We can think of some more modifications. What if we design a mobile application We only need to ship the deltas in the catalogue. After choosing the catalogue, the application can send a request to fulfillment with some additional credit card information. Now, go ahead do the following tasks: Draw the technical architecture diagram Create a data model and generate sample data in JSON Create a set of javascript programs to support the following activities users browsing the catalogue Adding items to the cart Checking out cart (here, you might some server components do it an a different server). Searching the catalogue Managing the cart For additional credit, do the following Cross-selling and upselling (people who bought what you looked for also bought the following or, buy this additional item at a discount). Discuss the security implications. Develop a mobile application that caches the entire catalogue on the device. Figure out a way to keep the catalogue data synchronized on demand. Because of Facebook, I have been in constant touch with friends, acquaintances and even people that I did not meet. I am using this annual letter as a way of summarizing, introspecting, and filling in the gaps in my usual communications about technologies to friends. It is heavily slanted towards technology, not the usual intersection of business and technology. There are three ways that I learn about technologies. One is by experimenting on my own. By actually coding, practicing, verifying hunches, validating ideas, and playing, I learn a bit. By talking to customers, sales people, engineering managers, and developers, I understand what the problems of application of technologies are. By reading books, news papers, and blogs, I try to see the interrelationships between different subjects and the technology influences in the modern world. Let me review from the annual perspective, what these three different influences taught me. (Cloud) Container based technologies I played quite a bit with container based technologies. Specifically, I tried various docker based tools. In fact, I setup systems on Digital Ocean that lets me create a new website, make modifications, and push to public, in less than 10 minutes. That is, using the scripts that I cobbled together (most of them are public domain, but I had to make some tweaks to suit my workflow), I can create a new docker instance, initialize with the right stack, provision reverse proxy. and push the content to that machine, install all dependencies, and start running the system. Minimal, cloud-ready OS8217s From my experiments with docker, I see that the power of virtual machine that can run any OS is not much useful. I don8217t want to think in terms of OS. What I want is a stack to program in. My OS should be cloud-aware OS. It should be minimal, should work well in a hive, should support orchestration, and should be invisible. Since I am unlikely to interactively work in it, I would place a premium on programmability, and support for REST services. Of course, it needs to secure, but since it is minimal OS, I want security at different layers. Based on all these requirements, I see hope for CoreOS kind of OS. I don8217t know if coreos is it, but something like that 8212 a minimal, cloud ready OS is going to succeed. Companies like Google and Facebook already use such systems for their internet scale applications. (Server side technologies) Node. js technologies I entered this year having learnt a bit about node. js. I have a love-hate relationship (who doesn8217t) with JavaScript. On one hand, I love its ability to treat functions as first class objects, its polymorphism, its ability to extend objects etc. Its approach to type system is dynamic, flexible, and incredibly powerful. Yet, I find lot of things to hate about JS. It scoping is infuriating. Its support for basics of large scale programming are absent. Its ability to type check are minimal. It leaves our crucial features of programming, letting users create competing idioms. For small to medium systems that are cobbled together by REST services, node. js still is a quick way of getting things done. And, I like npm 8212 it is even better than CPAN. I am not a fan of reinventing the wheel with all the tools like gulp, bower etc. The proliferation of these tools is confusing, putting off a casual user with their own standard tools. (Java was the original culprit in these matters.) In Node. js, the technologies I played with are: Express. Of course, duh. There may be better ones there, but I needed one standard one in my arsenal. This one will do. Mongo. The power of using JavaScript across all the layers is seductive. I don8217t have to translate from one format to another. And, let somebody worry about performance (well, not actually, but will do for the most part). Usual set of libraries, involving, parsing, slicing and dicing, and template management. Front end JavaScript I have been frustrated with the front end technologies. There are too many frameworks. MVC MVCC And, the complex edifice makes my head swim. At the end, I am not able to make sense of it all. Thankfully, I see things changing. I am able to settle down on a few choices for myself 8212 not because they are the best (in some cases, they are), but they are good for a generalist like me. JQuery. I still find it the best way to manage a DOM from JS. I never bothered to learn the full DOM API, and I find JQuery convenient way of managing. Web components. Specifically, I fell in love with Polymer. Why Think about this. HTML has a standard set of tags. Suppose you want to introduce a new tag. You need to create JavaScript that parses the new tag and manages it for you. So, your code is strewn in a few places: the JavaScript code, CSS specifications, and the HTML. It is too messy, too unmaintainable, and more importantly, difficult to mix different styles. Enter web components. You can create new elements as first class entries in DOM. The looks of the new element are specified via CSS in there itself. The behavior through the JavaScript also goes there. You expose specific properties and interactivity. The big thing is since it is first class element in DOM (as opposed to translated to standard elements through JS), you are able to reference it from JQuery and manage it just like you would a heading. Since not many browsers implemented web components, we need a Polyfill . a way of mimicking the behavior. Thanks to Polymer. now we have JavaScript code that makes it appear that the browser supports this DOM behavior of web components. This polyfill intercept every call to DOM and translates appropriately. Summary: It is slow and buggy at the moment. In time, it will take off, creating a nice 3rd party market for web components. It almost like what COM did for Microsoft. Assortment of libs: While I did not reach my ideal setup (where the machine can speak IKWYM 8211 8220I know what you mean: language), there are several libs that help me now. Specifically, I like the templates with inheritance like nunjucks. I also use Lodash to make life simpler. And, async. js to use the async paradigm of JavaScript. HTML looks and feel As an early adapter of Bootstrap, I stand vindicated in pushing it for my corporate users. Now a days, almost all development we do is responsive, built on standard template driven development. Within that, I dabbled with a few design trends because I found them interesting: Parallax Effect: You see pages where the background images roll slower than the text It gives a 3D layering effect. It is particularly effective in creating narrative stories. When the images are also responsive, this 3D effect can make the web pages come alive. To take a look at some examples, see: creativebloqweb-designparallax-scrolling-1131762 Interactive HTML pages: Imagine you are telling a story, where by changing some choices, the story changes. For examples, tabs change the content. But, imagine creating new content based on the user input, not merely showing and displaying the content. For instance, once we know the name of the reader, age and other details, it is easy to change the text to incorporate those elements. Or, if we know what they need, we can directly address in a sales dialog. While I did not carry out this idea to completion, I satisfied myself which the technology and the framework to do this interactive narrative sales tool. Naturally, this framework has a little bit of JS magic. Auto generation of web pages: As I was writing text, converting the text to HTML and a suitable web page became an obsession with me. I finally settled down to using combination of md5, bootstrap, and yaml properties to generate a good looking web page to share with people. If you are interested, please see these two blog posts, from yester years: Static web apps As I started seeing the advances in the web front ends, I see the possibilities of static web site. For instance, it is easy to create and run a static e-commerce application, with 10K or so SKU8217s without any trouble. We can even have recommendation engine, shopping cart, various payment methods 8212 all these thanks to web services and HTML5. The following are the technologies that I found useful in the static websites. markdown for html generation: For generic content, markdown is easy to author format. In fact, we can even author books in this format. asciidoc for book authoring: For larger format HTML with more whizbangs, asciidoc is what I tried. docpad for static website generation pandoc for format conversions For the in-page manipulation of large number of objects, I find the following very useful: pourover. The amazing slice and dice web sites for displaying large tables is done by pourover library from NY Times. I have high hopes for it. I think there are lot of innovative uses for this library, with its performance, and ability to cache the results. One of my favorite problems is to develop a web applications, without any db in the backend, a pure static application that acts as a library interface. We can search, slice and dice the selection using various criteria. For instance, latest document about a particular technology, written by author XXX, related to YYY document. Mobile amp Hybrid application development I have for a long while, bet on hybrid application development, instead of native application. Now, I concede that on the higher end market, native apps have an edge that is unlikely to be equaled by hybrid applications. Still, in the hands of an average developer, hybrid platforms may be better. They are difficult to get wrong, for simple applications. This year, I was hoping to do native application development, but never came around to it. With polymer being not yet completely ready, I dabbled very little with Angular based framework called Ionic. It was OK for the most part. Still, for simple pattern based development, I hold lot of hope in Yeoman. For corporate contexts, one can develop various scaffoldings and tools in Yeoman generator framework. That leads to compliant applications that share the standard look and feel without expensive coding. In my mind, right now, there are three kinds of languages: ones that run on JVM 8212 that includes scala, Java etc. Ones that translate to Javascript: these include Typescript. Coffeescript etc. And, the rest, like Go etc. Innovation in other languages has slowed down. Despite that, the three languages I dabbled this year are: Scala for big data applications, specifically for spark Python, again for data applications, specifically statistical processing, and Javascript, as I mentioned earlier. I liked typescript. especially, since it has support from Visual studio. I started on R, but did not proceed much further. Another language I played with a bit is Go, in the context of containers and deployments. Data and databases This year, I gave a 3 hr lecture in Singapore on bigdata, in the context of internet of things. I should have written it up in a document. The focus of that talk is what are the different areas of interest in big data are and what technologies, companies, and startups are playing in those areas. This holidays, I experimented with Aerospike. a distributed KV database developed by my friend Srini8217s company. Whatever little I tried, I loved it. It is easy to use, simple to install, and fast to boot. According to their numbers, it costs only 10 per hour to do 1 million reads per second on google compute platform. I will replicate and see how it compares against other databases like Redis and Cassandra that I am familiar with. On the statistics front, I familiarized with basics of statistics, which is always handy. I focused on greenteapressthinkbayesthinkbayes. pdf to learn more. I followed Quora to learn about the subjects in Coursera. I wanted to get to machine learning, but that will have to wait for 2015. On particular aspect of big data and analytics that fascinates me visualization. I played with D3 8212 it was of course the basis of most of the visualization advances that we see these days (bost. ocks. orgmike ). I am on the lookout for other toolkits Rickshaw. I will keep following it to see the new upcoming advances to make it more main stream. Other computing tools I find myself using the following tools: Atom for editing text files. Brackets. io for editing html files, and for live preview of the static web pages. VMWare workstation for my virtual machine needs. Markdown for note taking. Developer tools from Chrome for web development. Visual studio for web development Digital Ocean as my playground of coding activities OVH for any large size applications and servers Customer conversations Since most these conversations have some proprietary content, I cannot give full details here. In general, the focus in on innovation and how corporations innovate in the context of established businesses. Typically, it is a mix of technology, processes and organizational structure transformations to change the way businesses are run. I will need to talk about in byte size postings some other time. Wish you a happy 2015 May your year be full of exciting discovery See you in 2015 I looked at the way that the corporate training happens in technology areas and I find them wanting in several respects. This is my attempt at a bringing some best practices to corporate or institutional training. Most corporations have training programs, especially the ones that deal with IT technologies. The goal of these trainings is to train people so that they can be useful, productive members of a project. This is meant for training competent engineers, craftsmen who can support delivery of projects. A typical company gets two kinds of people to train: People fresh out of college . They went through latent learning, without clear goals. They learnt different subjects in college, without clear understanding of how that knowledge is meant to be used. They tried to understand concepts without real practice. People with a little experience . They worked on few projects, churning out code. Conditions in the industry is such that they were not exposed to quality code. Most of them do not understand the value of quality not do they understand what quality is. Current training methodology: What is wrong with it Typically any corporate training follows a standard process: they get nominations on who to train. They hire or get instructors, who are experts in that area. They put all of them in a room, sometimes away from all the distractions. Over the course of a day or two, the instructors will take them through (with the aid of power point), the nuances and the details of the material. For example, if the training is on Java, the students will go though the static methods, public, and annotations etc. If the training is advanced, they might even cover some patterns of usage as a way of best practices. are Typical evaluation of students are carried out through multiple choice questions which will test the users on the intricate details of the language. These questions cover a lot of trick questions to test the understanding of the language. What are the problems with this approach Let me count the ways: It doesnt train the students for what they encounter in the job. It doesnt make them a better developer or project manager or whatever. It only tests the book knowledge, which is almost one Google query away. It is that much cheaper to invest in a good quality internet connection. After a few days of training, they forget the knowledge. Of course, they can always look up a book when they need to but that was the situation they were in, to start with, anyways. Even if we train them using actual small projects, these problems will continue to exist. New way of training: What we want to achieve The education market in the US is being continually disrupted. I am going to list a few lessons from those disruptions and later describe how to apply those lessons to our training process. Let us see each of these lessons in turn. Inversion of classroom and home Known as Flip-teaching, this method of teaching became popular because of Khan Academy. The problem with class room training is that the teachers are going at lecturing at the same pace for everybody. When the students need help with homework, they are on their own. In the flipped learning, the instructor doesnt teach via lecture. There are enough number of books and videos that can teach the subject. Instead, the instructor, in the classroom setting, works with the group to solve problems. Practicing for muscle memory Here is a quote from the book, Art amp Fear. The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the quantity group: fifty pound of pots rated an A, forty pounds a B, and so on. Those being graded on quality, however, needed to produce only one pot - albeit a perfect one to get an A. Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the quantity group was busily churning out piles of work and learning from their mistakes the quality group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay. If you want to learn JavaScript, write lot of code. Through writing the code, you keep improving. None of those Learn X in 10 easy steps can get you to this level of deep learning. Hacking community realizes this aspect of learning well. Look at the following approach to learning by coding a lot: LxTHW (Learn X the hard way). The approach started with a popular book on Python, called Learn Python the Hard Way. If you follow that book, you dont endlessly learn syntax and nuances of the language. Instead, you will code, and you will code a lot. It starts out this way: Do not cut and paste. Type the code as is. Make the code run. Now, modify the code to solve slightly different problems. And, make that code run. Keep repeating till you internalize all the concepts through practice. In fact, this kind of learning through practice is applied by several people successfully. An example that I found very impressive was the case of Jennifer Dewalt. On April 1st, 2013, she started on a project to develop 180 websites in 180 days one each per day. All these websites are simple enough to be coded in a day. With practice she got better and better you can see the progress of her websites for yourself. Even more experienced programmers like the inventor of JQuery, John Resig, feels that writing code everyday helps him keep his skils. Here is the famous blog post that he wrote: ejohn. orgblogwrite-code-every-day In summary, our courses should not be teaching tricks and nuances of languages, libraries, or tools they should be teaching the people practicing the craft. Attention to basics The big obstacle is coding or practicing the craft is not having the right basics. Even when two people are practicing equally, the one with the better basic tools will win. Unfortunately, most colleges do not teach the tools of the trade. They focus, rightly on the fundamentals. Yet, there is no part of the education that covers the good use of tools and ways of working. If practicing is the way to teach, the students need to have the right infrastructure to practice. In fact, practicing on that kind of infrastructure teaches them on how to use such infrastructure. These days, the basic infrastructure should be: Making use of the cloud Making use of the right OS, editors, and IDE Making use of the right tools for version control, bug tracking, requirements etc Even for small projects, it is best to have at least a cloud based setup to try the code, a version control to keep the code history, and the right editor to train your muscles to use the right key strokes. Quality through osmosis We can get people to practice on the right infrastructure and churn out finished goods fast. But, will the output reach world-class quality While we made the argument that quality comes from quantity (through long practice), a more important ingredient is having right role models. That is where right mentorship can help. This is where intervention by a teacher that give feedback on quality of the output can help. There are multiple ways we can bring this to practice say if you are learning programming in JavaScript: Especially, in the third step, and to lesser extent other two steps, good mentors can help. They can point out what the best practices are, idioms are, and why some practice is good. Assessment through real-life tests The current crop of testing, because of automation, is focused on multiple choice questions. Unfortunately, it only focuses on the nuances of the programming language or system. The world is far more complex there is no single correct answer. Even if your problems were to come in the form of these questions, you could always find out answers from the internet. In contrast, in real life, you will have to produce code or an artifact. Why not prepare you for that, during training Here is an approach that works: Pick a large enough problem that we encounter during our work. Lot of these problems require programming in the large. Abstract it sufficiently so that it can be solved in limited time. For instance, you can choose only one module (say, adding new users to the system). Write a full fledged system that solves that sub-problem. If multiple people choose different parts of the system, then, we can have a fully functioning system at some point. Training process If you were to subscribe to this approach of corporate training, how would you start Here is the approach I suggest. Start with a clear statement of what you want the students to be able to do . This part is surprisingly difficult. For instance, do not say I want my students to learn Java. That does not give them a new capability. Instead say I want them to solve the following kinds of problems. Now, these problems can be your way of assessing their status after the training. Create a pre-conditions for the material: Not just only for assessment, but as a way of setting expectations, you could ask the participants to do some tasks. For instance, if they are going to be doing JavaScript programming, they should know how to use Firefox or Chrome extensions. You could test for that. Create a curated content of the material: Since there is so much of material online, create an annotated list of material. For instance, you could give a link to the articles, books, slideshare entries or Youtube videos, with some notes about what the expectations from that videos are. You could construct them as a series of lessons. For each lesson, create a set of problems they should solve: In fact, more problems they practice, the better it is. If there is an entity like LxTHW, we could just follow that. If not, create a set of problems for them to solve so that the lessons really sink in. Create a basic infrastructure with tools . Even before they start solving problems, provide them an infrastructure such that: They can use the tools to develop the solutions They can use the infrastructure to collaborate with others They can use it to show the mentors They can test their solutions Provide the mentors . This part is tough. Just as we mentioned earlier, at the minimum, show them (embed in the curated content), what you consider as good quality to achieve. Create a post-training evaluation . Crate a large enough problem for the people to choose a part of the problem to solve. Using the mentors see how fast they are developing the solution (it indicates how they internalized the solution practice makes for speed). how good a solution they are developing (it indicates how well they learnt from the masters) Create a community so that they can interact with each other post training : A training is not complete unless it is followed up. Since resources are difficult to get, use the power of community. Create a social space where people can discuss what they learnt even after they graduated from the course. Concluding Remarks I am no fan of corporate training but I realize that not all people are self-motivated to learn and learn well. I think corporate training can be reformed to take advantage of the modern best practices such as incorporating internet material, using repetitive training, and intentional techniques in training, especially for acquiring technical capabilities. This note is an attempt towards that direction. Posted by rama at 1:12 pm You are the CIO. Or, the director of application development. You hear about consumerization of IT, in different contexts. You hear about mobile applications developed by teenage kids in only months, and these apps are used by millions of adoring people. And, your business people are demanding why cant be more like those kids. What should you do Retrain your staff on some of the consumer technologies Get a partner who has the skills in the consumer technologies Move existing applications to consumer-friendly devices Are they enough And, why are you doing all these anyway In last couple of years, I have been working with different IT leaders to evolve a definition and an approach to this problem. By training, I am a technology person the kind that develops the consumer technology. By vocation, I help IT departments help adapt technology to meet their strategy. Being in both the sides of fence, I have a perspective that may be interesting. This note is derived from a few presentations I made at different industry conferences. The self-explanatory slide deck is available at: slideshare. netkramaraoconsumerization-32279273 Lets look at the following three questions, in order: What is consumerization of IT How does it affect IT departments What should the IT departments do about it Consumerization of IT: A bit of history The as coined in 2001, consumerization refers to the trend of building application that are people centric. Have we not been doing that always Yes and no. While we were developing the applications for people, our main focus was some where else. The focus was about either growth of the business (by managing the volume of data), automation of activities to speed up the processes, or automating the entire business value chains, or only recently, focusing on the customers. When we were building applications earlier, we were building them for a purpose: to solve a business problem. People were another peace of the puzzle they were meant to be a part of the solution, but not the purpose of the solution. Enterprise IT application development How are these applications developed Take a look at the sample development process. In the current traditional situation, the EA people map the needs of an enterprise to a technical gap, see if there is a packaged app, and either customize one or build a new one. The biggest questions often boil down to Build vs. Buy or, what to buy. A few things that you will observe are these: Applications take long time to develop . Typically they are large, and serve long term needs of the enterprise. Any other kind of applications are difficult to retrofit into this model of development. For example, if you want an application by marketing department for one-time event, existing processes of IT makes it difficult to offer that service. That is why, we find marketing is one of the prime movers behind consumerization. Applications serve common denominator . They address most common needs of the people. If your needs are very different from others, they will be ignored, unless you are the big boss. No wonder, that IT departments still develop applications with Best viewed on IE 6 sticker. Applications lag behind the market needs . Since the focus is to create the applications with longevity, the design uses tested technologies. The pace at which these technologies are evolving, this design decision makes the technology foundations obsolete by the time applications are delivered. For example, even today, IT departments use Struts in their design a technology that is already dead. Applications, developed based on consensus needs, lack focus . Since there is a going to be one large monolithic application meeting requirements of several groups with different needs, the applications lack focus. For example, the same application needs to support new users and experienced users. Or, it needs to support management interested in the big picture view and the workers interested doing the processing. Naturally, any application that is developed to such diverse and divergent needs ends up being unfocused. Applications are expensive to develop . Compared to consumer apps, where we hear apps getting developed for a fraction of cost, the process and the enterprise quality requirements impose lot of additional costs on the application development. That is, this process yields applications that are built to last . Let us look at how consumer applications are developed. Consumer application development Historically, consumer applications have been developed differently. As you can see, in each era, the consumers are different the focus is different and the distribution mechanism is different. File it away, as this historic view is important as we look at consumerizing IT. Dwelling deeper into the current era, we see the following: Consumer applications almost always are better focused on end results than the users needs. For example, take the case of Instagram. In its history, it discovered if it followed user needs and demands, it would end up being another FB clone. Instead, it decided to keep the focus on one metric: How to get most number of photos uploaded by the consumers. That focused design led to its success. Consumer applications are also built in collaboration with the consumers. By creating a model of constant experimentation, feedback from the field, and ability to improve the application, without ramifications of user support, the creators of the applications are able to build systems that are built for change . But, what are the disadvantages for the consumer applications, compared to enterprise applications Only interesting applications get developed . Go to Apples app store, and you find so many applications around weather apps or gaming apps. You do not find enough applications to do genome analysis. Developers are impatient with problems they do not understand, or the problems that require lot of knowledge to solve. Capabilities may be replicated in many applications . The strength in consumer applications, namely catering to different groups of people, means some core functionality gets repeated in applications. Instead of getting high quality apps, we might end up with lot of apps that are mediocre. Lack of uniformity in solutions (depends on the platform) . While some platforms are famous for creating a uniform and consistent experience, the applications themselves, provide fragmented experience. Unlike enterprise applications, they lack control or governance. Consumerization: Why should IT care We established that enterprise applications and consumer applications have different focus. We also established that they are built, distributed, and operated differently. Still, why should IT care about consumer applications Why should it consumerize itself I can think of three reasons. Consumer focus of the businesses Several service industries like retail, banking, entertainment, music, and health deal with consumers daily. Their business models are being disrupted by startups that bring new technologies and new breed of applications. While IT does not exactly lead the business transformation, at least by bringing the right capabilities, IT can support businesses better. Internal users as consumers Demographics of the employees are changing. More and more young people are joining the workforce. They are used to different kind of experience using modern devices and modern applications. Even the older people are used to consumer applications: they use Gmail at home, facetime on their IPad, Facebook on their laptop, and LinkedIn at work. They come to work and they use Exchange without the benefit of Bayesian spam filters they use Lync video instead of facetime or Hangouts they do not even have something like Facebook or LinkedIn at work. By not exploiting the modern technologies and application paradigms, enterprises are risk losing productivity and ability to attract the right talent. Cheaper and better Consumer technologies Large investments in the consumer technologies are making them cheaper and better, at a faster pace than the enterprise technologies. For instance, git is improving at a faster pace than perforce. Those companies that took advantage of the cheaper alternatives in consumer technologies, reaped the benefits of cheaper and better infrastructure, application construction, and operations. Google built their data center on commodity boxes. Facebook leverages open source technologies fully for their needs. The following are the main reasons why the consumer technologies are often better choices than the enterprise grade technologies. So, considering that enterprises are being pushed towards consumerization, how should IT react Consumerization: an IT perspective The best course of action for IT is to get the best of the both worlds. On one hand, it cannot run business as usual without its control and governance. On the other hand, it cannot react to markets innovatively without the consumer technologies. As we bring both these best practices together, we see some interesting facts emerge. At least for certain aspects of application domain, we see that old style of large scale application development does not work. As consumerization increases, we end up with large number of small applications instead of small number of large applications. Of course, the definition of application it self is subject to change. For our purposes, consider any isolated, independent functionality that people use to be an application. Historically, we used to talk about modularizing the application. Instead, now, we break down large application into smaller pieces. Some of these smaller pieces may have multiple versions to suit the extreme segmentation that consumerization supports. If we are moving towards such IT landscape, what does it mean to traditional activities In fact, all the following are impacted by this aspect of consumerization. Development Life cycle plan Deployment Support Governance Enterprise Architecture