Zum Inhalt springen

RipperFox

Mitglieder
  • Gesamte Inhalte

    821
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Beiträge von RipperFox

  1. Einzelstück:

    Ein SqlDataAdapter ist auf einer höheren Abstraktionsstufe und kann noch mehr, als nur eine DataTable zu füllen - z.b. in die Datenbank zurückschreiben, etc.

    Spart also ne Menge Tipparbeit.

    Siehe z.B. c# - SqlDataAdapter vs SqlDataReader - Stack Overflow

    Gewöhn Dich am besten von Anfang an daran, Parameter bei Abfragen zu nutzen:

    AdoDotNet Lesson 06

    Und: Strings wie die Query kann man dank "@" davor mit Newlines,etc. so schreiben:

    
    command.CommandText = @"SELECT foo 
    
                                                       FROM bar
    
                                                       INNER JOIN bla on bla.id = foo.blaid
    
                                                       WHERE bar.Name = @Name";
    
    command.Parameters.AddWithValue("@Name", _name);
    
    
    

    Siehe: https://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

  2. Moment, lassen wir das manuelle zusammenfrickeln von Zeilen mal.

    Du wolltest Daten vom SQL Server lesen und in eine DataTable packen, oder?

    Da gibt's mehrere Wege:

    a) Eine DataTable füllen und zur Anzeige/Bearbeitung im Speicher halten:

    Dafür würde sich sich Verwendung von SqlDataAdapter eignen:

    
    SqlDataAdapter dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
    
    DataTable table = new DataTable();
    
    dataAdapter.Fill(table);
    
    
    Und Du hast deine Daten fertig in der DataTable! Diese wird hierbei automatisch gefüllt, Spaltennamen und Datentypen kommen vom SQL Server. B) Eine Resultset zeilenweise verarbeiten (und immer nur eine Zeile im Speicher halten) - nur dann würde ich den SqlDataReader nutzen:
    
    SqlDataReader reader;
    
    using (reader = command.ExecuteReader())
    
        if (reader.HasRows)
    
        {
    
           while (reader.Read()) // while über alle Result-Zeilen
    
           {
    
                     string Name reader.GetString(reader.GetOrdinal("Name");
    
                     string Menge reader.GetInt32(reader.GetOrdinal("Menge");
    
    
            //     ...daraus eine DataRow erzeugen und mittels table.Rows.Add(DataRow) manuell in 
    
           //      die DataTable prügeln, etc.
    
           //      Kein sinniges Beispiel.. 
    
    
           }
    
        }
    
    [/code]

    Wie man sieht hat man bei Weg B) einiges mehr zu erledigen.

    Die Unterschiede nochmal erklärt: https://msdn.microsoft.com/en-us/library/ms254931%28v=vs.110%29.aspx

    Btw: Try..catch..finally hab ich weggelassen, sollte man aber zwecks Fehlerbehandlung immer dabei haben.

    Wenn Du die Daten nachher sowie im Speicher hast (e.g. für nen Diagramm oder als DataGrid, etc.) würde ich immer zu Ansatz a) greifen.

    Methode B) ist meist nur sinnvoll, wenn man eben jede Zeile einzeln bearbeiten möchte - z.B. wenn man einige GB an Daten exportiert und man das als eigenen Thread mit Fortschrittsanzeige laufen lassen will. Mit Methode a) würde dataAdapter.Fill(..) zum einen alles komplett in den Speicher lesen und das noch blockierend :)

    Hth..

    Ripper

  3. Die Sache mit den ODBC Verbindungen verlagert nur das Problem: Du musst das Programm wissen lassen, welche ODBC Verbindung

    genutzt werden soll.

    Wie mir scheint, soll das einfach nur nicht hardgecodet werden - also DB-Parameter dynamisch Abfragen und ggf. speichern.

    Zum generellen Speichern von Einstellungen wie Datenbankverbindung kann man sehr einfach die "Settings" benutzen:

    https://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=DE-DE&k=k%28ApplicationSettingsOverview%29;k%28TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0%29&rd=true

    https://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx

    Bei den Windows Forms gibt es afaik ab .Net 4 eine einfaches Chart/Diagrammklasse:

    https://msdn.microsoft.com/de-de/library/dd489237.aspx

    Edit: Ahh.. Das "morgen" von gestern wäre heute :) Ich hoffe Du hattest Erfolg..

  4. Hallo,

    bin bei Kabel Deutschland und habe jetzt eine IPv6 Verbindung.

    Jetzt würde ich gerne für ein Spiel einen Server hosten, früher ging das ja einfach mit Portforwarding.

    Wenn Dein Spiel kein IPv6 unterstützt, würde ich einfach bei KD anrufen und eine "echte" IPv4-Adresse verlangen.

    Der Support stellt einem afaik recht problemlos den Anschluss um.

    KD schaltet normalerweise bei Neukunden heute Dual-Stack Lite (DS-Lite). Damit hängst Du bereits hinter einem Carrier Grade NAT.

    Wenn irgendwann die ganzen Spiele programmierenden Schnarchnasen aufwachen geht das Hosten dann auch über IPv6 - man muss im Router dann nur den Port/Rechner in der Firewall freigeben. Das dürfte aber noch eine Weile dauern..

  5. Wenn man weniger/seltener druckt haben Laser auch den Vorteil, dass der Toner im Gegensatz zu Tinte nicht eintrocknet.

    Wenn man darauf achtet verbreitete Modelle zu nehmen, für die es viel Verbrauchsmaterial gibt hat man lange seinen Spass dran:

    Bei meinem Bruder fristet mein steinalter HP LaserJet 1100 (Ersterscheinungsjahr 1998, Abgekündigt 2001) sein Dasein und es gibt bis auf die Druckgeschwindigkeit eigentlich keinen Grund, das Ding weg zu schmeißen. Toner gibt es immer noch zu günstig.

  6. In Routingtabellen interessiert eigentlich hauptsächlich Netz und Interface - die Subnet und Broadcast IPs sind erst einmal ganz normale Adressen.

    Im Gegensatz zur Broadcast-Adresse kann man die Subnet-Adresse mit modernen Betriebsystemen/Routern wirklich als Host-IP nutzen - es wird lediglich nicht empfohlen.

    Einfach mal mit einem Linux, etc. probieren..

    Subnetwork - Wikipedia, the free encyclopedia

    netmask - Why can't all zeros in the host portion of IP address be used for a host? - Server Fault

  7. Bei meiner Präsentation anno dazumal wurde im abschließenden Gespräch etwas bemängelt, dass ich die Prüfer "nicht abgeholt" hätte, im Sinne von einem zugegeben etwas hartem Einstieg auf ggf. angehobenem fachlichen Niveau.

    Meine Argumentation darauf war in etwa folgende:

    - In der Dokumentation stand, an welche Zielgruppe sie sich richtet: Experten, welche sich zumindest in die Terminologie aus kannten.

    - Ich fragte zu Beginn der Präsentation, ob Fragen zu der Dokumentation bestünden - dies wurde verneint. Ich meine also, ich konnte also davon ausgehen, dass die Prüfer "auf meinem Stand" waren.

    - Ich erwähnte am Anfang die Möglichkeit, mich jederzeit für Nachfragen zu unterbrechen.

    Die Prüfer bekommen jede Menge Dokumentationen zu verschiedensten Themen auf verschiedensten Leveln zu lesen und ich vermute, irgendwann ist die Luft auch raus. So lange man firm auf seinem Gebiet ist und den Prüfern die Möglichkeit zur Nachfrage einräumt kann man denke ich auch mit Fachbegriffen um sich werfen, denn man sollte sie dann auch erklären können.

  8. der wichtige Teil ist ganz nebenbei auch das offloading plus die zusätzliche Abhängigkeit die du dir durch das File System zum OS holst.

    Irgendwelche Abhängigkeiten lassen sich nie vermeiden.

    Die Vorteile von ZFS wie Checksumming, etc. kommen aber nur zum tragen, wenn das FS möglichst nahe an die Platten kommt - ein Hardware-RAID-Controller kann dümmstenfalls von ZFS behebbare Fehler maskieren.

    ZFS dient ggf. auch als weitere Abstraktionsschicht: Ein iSCSI-Target auf ZFS würde ich aber flexibler nennen als eine schnöde Disk, welche ein dummer Raidcontroller dem OS präsentiert.

    Der RAID-Controller ist eben eine weitere Abstraktionsschicht, ich würde also nicht darauf verzichten. Ersatz hält man vor...wenn erstmal was besorgt werden muss ist das nur ein Zeichen von Missmanagement.

    Naja, die Empfehlung sich alles doppelt und auf Reserve anzuschaffen hat schon in IBM Großrechnerzeiten beim Kunden leider nicht immer gezogen. Gern hätte man jedem Kunden ein Parallel Sysplex hingestellt. Auch gab's bei der Hardware wirklich viele Abstraktionsschichten :)

  9. AFAIK gar nicht ;)

    Wenn du kein Framework wie Linq benutzt sondern den Datenzugriff selber programmierst wirst du wohl erst den Datensatz einfügen müssen, dann die ID auslesen und dann den anderen Datensatz einfügen müssen.

    Jain, ab SQL Server 2005 gibt's beim INSERT Statement den Parameter "OUTPUT", welcher benutzt werden kann um automatisch generierte Spalten (z.B. identity, durch Trigger generiert, etc.) auszugeben:

    
    USE Northwind
    
    INSERT INTO Employees (LastName, FirstName) 
    
    OUTPUT inserted.EmployeeID
    
    VALUES ('Kelso', 'Bob')
    
    

    Der INSERT liefert mir die geschriebene EmployeeID zurück.

    Man könnte also zwei INSERTs in einer SQL-Query vereinen, in dem man den Rückgabewert des ersten INSERTs in Variable schreibt und beim zweiten verwendet.

    Generell muss man sich überlegen wie viel Funktionalität/Logik man in die Datenbank steckt. Man kann mit Views, StoredProcedures, Triggern, etc. sicher OPs Problem direkt in der DB erledigen - falls das gewünscht sein sollte.

    Wenn man Programmlogik in Anwendung und Datenbank hat macht es das Debuggen natürlich nicht einfacher :)

  10. Das nicht aber ein Ausfall von einer HDD ist dabei egal.

    Ich nehme an, du beziehst dich auf aufs RAID? Ich wollte eigentlich ein wenig betonen, dass man sich heute eigentlich oft den teuren Hardwarecontroller für's RAID sparen kann. Die Dinger sind eigentlich auch nur Firmware(=Software)-gesteuerte integrierte Systeme, ggf. mit Hardware wie Batteriepuffer, FPGAs für Parityberechnungen, usw. Ich hatte mal den Fall, dass der RAID-Controler die Grätsche gemacht hat und schnell Ersatz (mit gleichem Firmwarestand, etc.) besorgt werden musste..

    Das Spiegeln/redundante Verteilen von Daten kann auch gleich das Dateisystem erledigen - vielleicht sogar besser als mit einem "Hardware"-RAID: ZFS synct bei einem Rebuild z.B. nur belegte Blöcke und kopiert nicht strunzdumm alle Blöcke einer nur zu 10% gefüllte Platte. Das muss ein Hardwarecontroller so machen, da er keinerlei Ahnung vom Inhalt der Blöcke hat.

  11. Und: Da Flash-Speicher im Gegensatz zu magnetischen Speichermedien nicht beliebig oft überschreiben werden kann geben die Hersteller von SSDs üblicherweise Nutzungsszenarien an, gern auch mit der von der Garantie abgedeckten Lebensdauer (lies z.B.: "Endurance Rating: 75TB = 41GB/day over 5 years")

    Für nen Festplattenrecorder sind SSDs, so nicht irgendwelche Erfordernisse vorliegen, einfach nur recht teuer.

    Und ein "Hardware"-RAID (welches meist für Datenintegrität weniger bringt als ein gescheites Dateisystem) ersetzt auch bei kurzlebigen Daten kein Backup.

  12. "intern auf extern Umleiten" ist jetzt nicht sonderlich aussagekräftig. Wo ist der aufrufende Browser, etc.

    Beschreib doch noch mal genau, was genau Du damit bezwecken willst.

    Möglichkeiten je nach Anforderung:

    - Im DNS kann man mit split horizon oder Views arbeiten

    - HTTP/1.1 übermittelt Webserver den aufgerufenen Host (dadurch sind mehreren virtuellen Hosts auf einer IP mögl.)

    - Mit HTTP-Redirects, Rewrites & Proxyzeug kann man auch noch jede Menge anstellen

  13. gewünschter_Benutzername: Dank deiner großzügigen Problembeschreibung kann man nur allgemeine Tipps geben:

    - gpsbabel kann man von der Kommandozeile benutzen, es kann also $FormatX einlesen und $FormatY ausspucken.

    - Die Formate sind i.d.R. normale Textdateien, welche man über Skripte, Programmiersprachen, etc. manipulieren kann.

    - Wenn man ein großes zu lösendes Problem hat, teilt man es wenn möglich in kleinere Teilabschnitte auf und löst dann diese einzeln - Teile und herrsche (Informatik)

    Vieleicht bringt's ja noch was.

  14. Ich seh das nicht so dramatisch, vllt. weil ich seit Ewigkeiten mit IPv6 rumspiele & arbeite.

    Zu Windows 2000 Zeiten als der Stack noch als "Technology Preview" nachzuinstallieren war gab es für BSD/Linux schon lange Kernelpatches (KAME anyone?) - seit mindestens Windows Vista/Windows Server 2008 wird das Protokoll im LAN immer mitinstalliert & auch transparent genutzt.

    Endbenutzer mit einigermaßen modernem OS (ab. 2007?) merken es im Normalfall nicht einmal, dass sie z.B. die bei Kabel mit DS-lite IPv4 nur als Carrier-grade NAT bekommen. Immerhin, wenn man anfragt kriegt man anscheinend noch einen normalen DS mit öffentlicher v4-IP. Ich denke es liegt meist an schlechten Gamedesignern, dass den Leuten DS-lite überhaupt auffällt.

    Wenn man heute eine Applikation oder irgendwas im Internet anbietet und seine Dienste noch nicht auch unter IPv6 funktionieren hat man die letzten 15 Jahre leicht geschlafen - oft ist es wirklich ein Kinderspiel: Web-, Mail-, Sonstwas-Serveranwendungen benötigen i.d.R. nur AAAA-Records und vielleicht noch etwas Konfiguration. P2P Anwendungen (Skype, Bittorrent, etc.) unterstützen IPv6 auch schon lange.

    Oft haben $User einfach falsche Vorstellungen was etwaige "Überwachbarkeit" und "fixe IP"-Adressen oder den vermeintlichen Schutzfaktor von NAT im Vergleich von IPv4 und IPv6 angeht und scheuen sich deshalb, IPv6 zu nutzen. Dabei bekommen Endkunden meist auch bei IPv6 nur ein "dynamisches" /56, wenn sie nicht für fixe IPs Geld bezahlen. Und dank Privacy Extensions sind Rechner auch sonst nicht so einfach wiederzufinden - da kommt man als Datenkrake/Werbenetz/etc. mit Cookies und Browser-Fingerprinting bei der Wiedererkennung der Nutzer weiter.

    Auch ist es vom Schwierigkeitsgrad kaum ein Unterschied, ob ich bei IPv4 mit NAT herumfrickeln muss, oder ob ich gleich bei IPv6 eine Firewall schön sauber einrichten kann.

    Wer ein wenig mit Routing/Vernetzen im "größeren" Spielen will kann dies z.B. im DN42-Netz tun. Inkl. BGPv6.

    Wenn man seine Infrastruktur schön langsam in den letzten 10 Jahren darauf vorbereitet hat sollte man heute weder große Schulungslücken noch irgendwelchen größeren Migrationsaufwand haben. IPv6 ist eigentlich schön abgehangen - ich wundere wie überrascht heute manche tun.

    Die "Generalprobe", der "World IPv6 Day" war übrigens am 8.Juni 2011 (Bericht bei heise Netze). Da haben einiger der Big-Player mitgemacht und es passierte - nichts besonderes. So sollte eine sanfte Migration laufen..

    Btw: @StefanE: Hetzner bietet IPv6 seit afair gut 10 Jahren IPv6 an -> 15 Minuten Arbeit und fachinformatiker.de wäre auch unter IPv6 erreichbar..

    Grüße

    Ripper

  15. Wenn ich die HiDes-Produkte richtig verstehe, kann man mit den meisten Lösungen nur einen einzelnen Videostream in einen MUX verpacken und müsste für einen 4-Sender-MUX sich z.B. die PT-100 Karte zulegen, die dann deutlich mehr kostet.

    Das Wort "MUX" allein macht mich ehrlich gesagt da etwas wuschig. :)

    Ein "Muxer" ist imho ein $(Hard-/Software-)Teil welches verschiedene Ströme (z.B. Video-/Audio) multiplext, also ineinander verwebt. Ein Video+Audio kann z.B. zu einem MPEG-PS = Programmstrom gemuxt werden.

    Mehrere hiervon + EPG + sonstiges Zeug können wiederum zu einem MPEG-TS / Transportstrom gemuxt werden.

    Man kann mit dem USB-Transmitter einen maximal 8 MHz breiten Kanal erzeugen, dessen Netto-Bitrate von Modulation und Parametern abhängt (ca. 12-20 MBit/s) und darin eben einen Transportstom übertragen.

    Da kann alles drin sein, was eben in einem MPEG-TS drin sein kann - bei den regulären DVB-T Sendern (auch 8 MHz breit) wird das "Bouquet" genannt und enthält dann z.B. die Programme "Das Erste, arte, Phoenix, EinsPlus" in SD inkl. EPG, etc. Wenn man Standbilder mit niedriger Bitrate senden möchte sind logischerweise mehr "Kanäle" in einem TS möglich als für HD-Video mit hoher Bitrate (siehe z.B. italienische Astro Sendungen auf Sat in miesester Auflösung).

    Auch Datenkanäle wie bei "Internet via Sat" wären in einem MPEG-TS möglich.

    Schön beschrieben z.B. hier https://de.wikipedia.org/wiki/Liste_der_DVB-T-Sender_in_Deutschland und https://de.wikipedia.org/wiki/DVB-T#Technik.

    Für Amateurfunkzwecke hat Darko, OE7DBH aus Österreich den Kontakt zu dem koreanischen Hersteller der USB Sticks (wohl eigentlich für Präsentationen von TVs gedacht) hergestellt und nachgefragt, ob sie die Hard- und Software Afu-kompatibler machen könnten. Daraus ist eine längere Zusammenarbeit/Experimentierphase entstanden - näheres z.B. hier: OE7 Amateurfunkforum

    Im $Zug (SBB Regionalzug ist wohl Symbolbild) wird das wohl einfach zur kabelgebundenen Übertragung von irgendwelchen Videos auf Bildschirme genutzt - warum auch nicht :)

    Grüße Ripper

  16. Der Angriff findet tatsächlich gegen einen Samsung TV via DVB-T und HBBTV statt - siehe https://www.fokus.fraunhofer.de/99195dce9d97d312

    Hardware zum Aufsetzen eines DVB MUX kann man zwar frei kaufen, jedoch nicht in Form eines USB-Dongles, den man mal schnell an seinen Laptop anschließt, sondern in Form von stromfressenden Geräten für das 19-Zoll-Rack.

    Jetzt musste ich kurz schmunzeln, da ich genau so einen USB-DVB-T-Transmitter daheim habe: HiDes, Inc. :)

    Damit kann man eigentlich beliebige Transportstreams übertragen. Nutze ich allerdings rein für Amateurfunk.

    Oft wird in Systemen wie GSM/TV/etc. die Funkschnittstelle fälschlicherweise als "sicher" angesehen, da das Funknetz ja vom vertrauenswürdigen Betreiber kommt.

    Aber der Angriffsvektor über DVB-T ist doch recht gering:

    - Der vom Zuschauer gewählte Kanal muss bekannt sein.

    - Es lassen oft nur einzelne Geräte mit einer FW angreifen.

    - Wer nutzt seinen Smart-TV überhaupt DVB-T? DVB-S(2) und DVB-C dürften weit eher bei Highend-TVs anzutreffen sein.

    - Die erforderliche Signalstärke um "offizielle" Sender zu übertreffen und weg zudrücken dürfte recht groß sein. Das könnte ggf. den Funkmessdienst der BNetzA auf den Plan rufen. :)

    Natürlich sollte man sich im klaren sein, dass wenn man einen Internet-TV mit Kamera und Mikrofon ins Wohnzimmer stellt der Hersteller sowohl diese als auch die Daten über Netzwerk, angesteckte USB Geräte, etc. abgreifen könnte.

    Sollte dieser bei irgendwelchen Implementationen geschlampt haben (sehr wahrscheinlich bei der Produktlebenszeit) können eventuell dritte auch ggf. vorhandene Lücken ausnutzen.

    Immerhin gibt es noch eine gewisse Vielfalt an Smart-TVs - richtig bescheiden sieht übrigens die Situation bei Plasteroutern aus: Da kommt eine verwundbare Komponente schon mal bei xx% aller Geräte vor (siehe 31C3 Vortrag über TR-069 + RomPager)

    Grüße

    Ripper

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...