Laden...

Forenbeiträge von esskar Ingesamt 203 Beiträge

06.06.2009 - 18:02 Uhr

und was ist, wenn man versehent lich mal

//  #if

eintippt? also zwei oder mehrer leerzeichen?

06.06.2009 - 00:06 Uhr

So, endlich SharpPcap gefunden.

05.06.2009 - 21:00 Uhr

mit


AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
            
}

kannst du es weiter analysieren,

05.06.2009 - 20:50 Uhr

zur Info: hab gerade Raw Socket Capturing Using C# entdeckt und werde das mal weiter verfolgen.

05.06.2009 - 20:20 Uhr

Hi,

ich lebe in einem Land, in dem Internettraffic für Firmen nicht billig ist. Wir zahlen pro Gigabit und zahlen ca. 10K Euro im Monat an Internet.

Uns ist klar, dass vieles an der Börsendaten liegt, die wir einfach brauchen. Zusätzlich sind wir aber sehr liberal, heißt jeder kann surfen was er will. Um trotzdem mal zu sehen, für was der meiste unnötige Traffic drauf geht, brauch ich nen Monitor.

Dabei würde ich gern logen, wohin (ip + port) hoch und runtergeladen wird. Das muss jetzt nicht zwangsläufig http sein, sondern mich interessiert der purer datenverkehr.

TcpView z.B. bekommt ja die Verbindung raus; und wireshark geht ja sogar noch nen schritt weiter, aber die echten daten brauch und will ich ja erstmal nicht (aber daran führ kein weg vorbei).

zur Info: wir haben keine Domain, sondern jeder PC hängt über nen Switch an 1 von 4 Internetleitungen und ein bissle die Last zu verteilen.

Als Lösung stell ich mir sowas wie FreeMeter vor, nur das der FreeMeter ja nur den Traffic vom NetwerksAdapter abgreift. Wenn ich Destination abgreifen kann, ich z.B. internen Traffic rausfiltern, der ja nix kostet.

Kann mich jemand in die richtige Richtung lenken?

04.06.2009 - 17:42 Uhr

ich hab es wohl total falsch verstanden, da ich dachte, ich könnte objecte, die vom typ MarshalByRefObject abgeleitet sind, als ganzes über die leitung schicken, aber ist anders gedacht, oder?

ich könnte eine klasse anlegen, die von MarshalByRefObject ableiten. dann erzeuge ich auf server und client seite eine instance. und ändere an der instance dann ein feld oder werfe einen event. dieser wird dann auf der client seite empfangen und kann dort bearbeitet werden, oder?

04.06.2009 - 17:29 Uhr

danke.
also verursacht stetisches ändern einzelner felder zu ständigem "traffic" zwischen den parteien. hat aber auch den vorteil, dass man selbst nicht mehr das senden anwerfen muss !?!

04.06.2009 - 16:59 Uhr

Hi,

ich hab fast alle meine Klassen von einer Disposable Klasse abgeleitet.


public class Disposable : IDisposable
{
    ~Disposable()
    {
        this.Dispose(false);
    }

    #region IDisposable Members

    private bool m_disposed = false;
    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);            
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!m_disposed)
        {
            if (disposing) this.Release();
            m_disposed = true;
        }
    }

    protected virtual void Release() { }


    #endregion
}

da ich jetzt anfangen will, einige meiner objecte via IPC an andere prozesse zu übertragen, überleg ich mir der einfachheit halber, Disposable von MarshalByRefObject abzuleiten.

Einwände?

Was passiert genau, wenn ich MarshalByRefObject nutze und via IPC sende?
Ich hab gelesen, dass irgendwie ein proxy generiert wird. Heißt dass dann, dass memory geshared wird oder wie? da steht ja, dass dann nix kopiert wird,

04.06.2009 - 12:11 Uhr

ich würde erstmal das bestehende XML einlesen;
dort alles id strings in ein Dictionary<string, int>
vond er ID die Zahl abschneiden, die stört jetzt erstmal.

wenn du eine ID zum ersten mal einfügst, dann setzt du das value auf 1

jetzt nimmst du dir die neue struktur; schaust, ob die idee schon in deinem dictionary ist, wenn nein hinzufügen wie oben
wenn doch, dann id abändern; und nochmal im dictionary schauen, ob vielleicht auch schon die neu erzeugt ID drin ist. das solange wiederholen, bis die id unique ist. neuen knoten neue idee geben und in db einfügen; gleichzeitig aber auch die neue id mit dem value einfügen. also wenn BlaBla5 deine neue ID wäre, dann BlaBla5=>5 in das dictionary einfügen.

03.06.2009 - 17:07 Uhr

nicht alle -net anwendung registrieren sich dafür-

03.06.2009 - 17:05 Uhr

du musst die INNEN klassen public machen.
und musst natürlich jeweils eine feld für INNEN1 und INNEN2 anlegen; momentan definierst du nur deren signatur.

02.06.2009 - 17:50 Uhr

ich kenn WPF nicht so wirklich; unter win-forms konnte man mit Begin-/EndUpdate einiges an performance rausholen; also wenn du deine listview am ändern bist, dann vorher bescheid geben, ob was geändert wird und danach die änderung bestätigen.

02.06.2009 - 13:57 Uhr

Da ich mich allerdings anfangs primär auf Einscannen und OCR fokussiert hatte Also schön das Pferd von hinten aufgesäumt. 😉

02.06.2009 - 13:55 Uhr

Hi,

ich hätt gerne folgendes Control:
eine Art WebBrowser nur will ich neben dran (untern drunter, egal wo) den Quelltext der Webseite. Wenn ich jetzt einen Bereich im Quelltext markiere wird mir diese Stelle im gerenderten Browserfenster umrahmt. Umgekehrt, wenn ich einen Bereich im Brwoeserfenster "markiere", dann wird diese Stelle im Quelltext markiert.

Wenn es sowas gibt (oder so was ähnliches), würd ich mich über nen Link freuen. Wenn nicht, wird es Zeit, dass sowas geschrieben wird. Ich weiß z.B. dass es ein Firefox-Addon gibt, dass sowas ähnliches machen kann.

02.06.2009 - 12:04 Uhr

kannst du dividieren durch subtrahieren lösen?
kannst du multiplizieren durch addieren lösen?

02.06.2009 - 11:06 Uhr

Eigentlich wollte ich die Verbindung immer offen halten. Das schaffst du nur, wenn du zw. drin HeartBeat Messages schickst & empfängst.

01.06.2009 - 09:35 Uhr

ich war ja freitag noch ganz begeistert von der aufmachung in den videos, aber jetzt (prerelease ist online) sieht es doch nicht anders aus, als mit google, yahoo, live und co.

01.06.2009 - 09:31 Uhr

ist jetzt teil einer klasse;
spielt zuverlässig wavfiles


using System;
using System.IO;
using System.Runtime.InteropServices;

public class Sound
{        
    public static bool PlayFile(string fileName)
    {
        return Sound.PlaySound(fileName, IntPtr.Zero, SoundFlags.SND_FILENAME | SoundFlags.SND_ASYNC);
    }

    [Flags]
    public enum SoundFlags : int
    {
        SND_SYNC = 0x0000,  /* play synchronously (default) */
        SND_ASYNC = 0x0001,  /* play asynchronously */
        SND_NODEFAULT = 0x0002,  /* silence (!default) if sound not found */
        SND_MEMORY = 0x0004,  /* pszSound points to a memory file */
        SND_LOOP = 0x0008,  /* loop the sound until next sndPlaySound */
        SND_NOSTOP = 0x0010,  /* don't stop any currently playing sound */
        SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
        SND_ALIAS = 0x00010000, /* name is a registry alias */
        SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
        SND_FILENAME = 0x00020000, /* name is file name */
        SND_RESOURCE = 0x00040004  /* name is resource name or atom */
    }

    [DllImport("winmm.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    static extern bool PlaySound(string pszSound, IntPtr hMod, SoundFlags sf);

    private string m_soundFile;
    private bool m_soundFileDelete;

    public static Sound FromFile(string filename)
    {
        return new Sound(filename, false);
    }

    private Sound(string filename, bool deleteFile)
    {
        m_soundFile = filename;
        m_soundFileDelete = deleteFile;
    }

    ~Sound()
    {
        if (m_soundFileDelete)
        {
            try { File.Delete(m_soundFile); }
            catch { }
            m_soundFileDelete = false;
        }
    }

    public bool Play()
    {
        return Sound.PlayFile(m_soundFile);
    }
}

29.05.2009 - 21:59 Uhr

Wieso funktioniert das in diesem Fall?

denke mal, weil der head das runat="server" hat!

29.05.2009 - 19:33 Uhr

kenn das exif format nicht im detail, aber bist du sicher, dass es alles strings sind, die da drin stehen?
vielleicht sind es and er stelle eine integer oder so. würde für die bezeichner sprechen.

29.05.2009 - 19:07 Uhr

[EDIT=herbivore]Bitte keine unkommentierten Links posten, schon gar nicht, wenn die URL kryptisch ist ==> ich habe wenigstens mal einen Link-Titel angegeben.[/EDIT]

Youtube: Asher Roth - I Love College

29.05.2009 - 18:45 Uhr

ASCII ist 7 Bit (und ohne Umlaute).

Du meinst vermutlich ANSI. Das ist Encoding.Default.

Nee ich meine ASCII nicht ANSI! Es gibt auch 8-Bit ANSI!

nö: http://www.torsten-horn.de/techdocs/ascii.htm

29.05.2009 - 17:22 Uhr

eigentlich mein ich sowas wie HDF5, wobei mir das schon zuviel ist. http://www.hdfgroup.org/HDF5/whatishdf5.html

29.05.2009 - 15:18 Uhr

wieso hast du die aufrufe so in den strings stehen?
also wie kommen sie da rein?

29.05.2009 - 14:47 Uhr

ich glaub eben nicht, dass ein image wenn es nur in den speicher geladen wird und nicht geändert, decomprimiert wird.
das man ja auch auf die property RawFromat zugreifen kann, die das format zurück gibt, in der das image vorliegt. aber ich kann es nicht garantieren.

schau dir mal die property PixelFormat des image objects an

29.05.2009 - 14:36 Uhr

hab ja auch von ToString abgeraten 😃 ist nur der grund, warum in dem slot nur Struktur.Program.POINT steht

hab den code nicht getestet, aber versuch es mal so


using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

void Save<T>(T o)
{
   using(MemoryStream ms = new MemoryStream())
   {
      using(BinaryFormatter bf = new BinaryFormatter())
         bf.Serialize(ms, o);
      byte[] buffer = ms.ToArray();
      // TODO: schreib buffer in den mailslot
   }
}

T Load<T>()
{
    // TODO: ließ buffer aus Mailslot
    using(MemoryStream ms = new MemoryStream(buffer))
    {
         using(BinaryFormatter bf = new BinaryFormatter())
             return (T)bf.Deserialize(ms);
    }
}


POINT p1;
p1.x = 10;
p1.y = 20

Save<POINT>(p2);
POINT p2 = Load<POINT>();

HTH

29.05.2009 - 14:20 Uhr

Ein 100 * 100 Pixel großes Bild mit 32bit ist demnach 320000 bytes groß.

müssten es nicht 320000 bits sein, 40000 bytes?

das das kompormiert ist, war klar; ich hätt es im ersten prototyp einfach ignoriert 😉

29.05.2009 - 14:07 Uhr

ich würde einfach die filegröße nehmen.

29.05.2009 - 13:35 Uhr

würd ja fast die goto befehle rauslassen:


do
{
    if (elementType.IsPrimitive)
        break;
    if (elementType.IsValueType)
    {
        FieldInfo[] fields = t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
        bool ContainsReferenceTypes = false;
        foreach (FieldInfo f in fields)
        {
            if (!f.FieldType.IsValueType)
            {
                ContainsReferenceTypes = true;
                break;
            }
        }
        if (!ContainsReferenceTypes)
            break;
    }
    {
        //im Array jedes Element auswechseln:
        gen.Emit(OpCodes.Ldarg_0);
        gen.Emit(OpCodes.Ldloc_0);
        gen.Emit(OpCodes.Castclass, typeof(Array));
        gen.EmitCall(OpCodes.Call, iterateArrayInfo, null);
    }
}
while (false);

29.05.2009 - 12:46 Uhr

du überschreibt nicht ToString.
ich würde es aber so machen, dass man nur object vom typ ISerializeable in den slot stecken kann und dann mit dem BinarySerializer arbeiten, sonst musst das zeugs immer als string parsen .. nicht gut.

28.05.2009 - 19:42 Uhr

Hi,

ich bräuchte ne Datenstruktur, die sich selber auf die Platte (oder sonstwohin) wegschreibt. Also ich kann die Struktur füllen und ab einer gewissen füllmenge schreibt sie sich persistent weg, so dass ich sie irgendwann nochmal nachladen kann, wenn ich das möchte. (Vielleicht sogar in der Vergangeheit suchen). Ich mag mich zu erinnern, sowas bei nem B+-Baum gesehen zu haben, kann mich aber irren.
Die Frage ist halt, ob es sowas schon fertig gebacken gibt.

28.05.2009 - 15:47 Uhr

der unterschied liegt einfach nur darin, dass eine HTTP verbindung ja nicht immer offen ist.
ich tippe auch drauf, dass versucht wird, bei einem verbindungsabbruch, den alten socket zu restaurieren, was aber nicht möglich ist. sondern man muss einen neuen socket erzeugen (oder einen neuen tpcclient).
oder einfach den heartbeat einbauen, wie in dem anderen thread schon erwähnt...
und ohne code, kann man eh nur ins blaue raten.

28.05.2009 - 15:34 Uhr

Klar ist es auch TCP aber das hat doch nichts mehr mit den SOcket Klassen von Microsoft zu tun.

IIS ist auch von microsoft... windows glaub ich auch.

28.05.2009 - 14:07 Uhr

mir ist grad aufgefallen..das das doch nicht richtig funktioniert..

bei einer 9 kommt alles false. nur bei 255 kommt alles richtig true..

hä? wo?

28.05.2009 - 12:30 Uhr

wahrscheinlich gibt es irgendwo noch so einen aufruf


Test<int[]>(new int[] { 1, 2, 3});
// bzw
Test<MyObject>(new MyObject());

aber sinn macht es so oder so nicht 😃 vorallem hinten dran der template code ja kopiert wird

28.05.2009 - 12:21 Uhr

Zum Verständnis:

Du verschiebst die 1 um j stellen nach links, innerhalb von bit (int Zahl).

In bit ist ja aber eine Zahl gespeichert..

Versteh das noch nicht 100pro..

ein computer kennt intern ja nur 0 und 1
int32 ist ja ne 32-bit zahl (also maximal 2^32-1 groß, 0xFFFFFFF bzw. 11111111111111111111111111111111)

mit & (also der bitweisen verundung) kannst du prüfen, ob die verundung 1 oder 0 ist, dabei gilt

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

soweit so gut
jetzt schauen wir uns mal an was aus 1<<i wird
i=0: 1 => 0x01 => 0001
i=1: 2 => 0x02 => 0010
i=2: 4 => 0x04 => 0100
i=3: 8 => 0x08 => 1000

so, wie schauen jetzt auf zahl 9, also 1001 (eigentlich 00000000000000000000000000001001, aber die leading 0en kann man ignorieren)
jetzt verunden wir (und zwar jede einzelne bitstelle)

i=0:


 1001
&0001
-----
 0001 != 0 also gesetzt

i=1:


 1001
&0010
-----
 0000 == 0 also nicht gesetzt

i=2:


 1001
&0100
-----
 0000 == 0 also nicht gesetzt

i=3:


 1001
&1000
-----
 1000 != 0 also gesetzt

wird es jetzt klarer?

28.05.2009 - 11:59 Uhr

sorry

sbBit.Append((bit & (1 << i)) != 0 ? "1" : "0");
28.05.2009 - 11:43 Uhr
sbBit.Append((bit & (1 << i)) ? "1" : "0");
28.05.2009 - 11:14 Uhr

int x = Convert.ToInt32("9");
for(int i = 0; i < 8; i++)
   Console.WriteLine(string.Format("{0} bit gesetzt: {1}", i+1, (x&(1<<i))!=0));

28.05.2009 - 11:06 Uhr

das kannst du aber nur bei variablen vom typ object tun - also (int)value - oder hab ich was übersehen?

28.05.2009 - 11:00 Uhr

das ist mit schon klar, dafür prüft man vorher ja den datentyp auf int was meinst du?

28.05.2009 - 10:56 Uhr

das war mir dann schon klar. 😃

28.05.2009 - 10:48 Uhr

warum sollte das mit nicht ref-typen nicht gehen? int x = (int)value;

Weil dann "Cannot convert type T to 'int'" geworfen wird!
Müsste es schon so schreiben

int? x = value as int?;
28.05.2009 - 10:37 Uhr

machst du folgendes?

Form f = new MyForm();
f.ShowDialog();
f.ShowDialog();

?

28.05.2009 - 10:19 Uhr

ich denke mal, so lange es ein referenz typ ist, kannst du mit as alles casten, da der wirkliche check erst zur laufzeit gemacht wird, wohingegen degen der syntaxchecker mit (byte[]) schon vorher prüft, ob der cast überhaupt möglich sein kann.
aber zur original frage
wäre es nicht sinvoller sowieso folgendes zu machen

public static void Test(object value) { ... }

wenn man sich intern erst gar nicht im klaren ist, was als typ reinkommt und man casten will

28.05.2009 - 10:09 Uhr

ist zwar nicht ganz das selbe, aber vielleicht hilft es ja (irgendwie)


public static void Test<T>(T[] value) where T : IConvertible
{
    byte[] buffer = new byte[value.Length];
    for(int i = 0; i < value.Length; i++)
        buffer[i] = value[i].ToByte(System.Globalization.CultureInfo.InvariantCulture);
        
}

28.05.2009 - 09:52 Uhr

buffer = value as Byte[];
? nee, das geht nicht, da Byte ein valuetype ist
gelogen.

28.05.2009 - 09:50 Uhr

cast?

if(value is Byte[]) buffer = (Byte [])value

aber wahrscheinlich klatscht das auch. kann es gerade nicht testen.