und was ist, wenn man versehent lich mal
// #if
eintippt? also zwei oder mehrer leerzeichen?
mit
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
}
kannst du es weiter analysieren,
zur Info: hab gerade Raw Socket Capturing Using C# entdeckt und werde das mal weiter verfolgen.
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?
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?
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 !?!
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,
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.
nicht alle -net anwendung registrieren sich dafür-
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.
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.
Da ich mich allerdings anfangs primär auf Einscannen und OCR fokussiert hatte Also schön das Pferd von hinten aufgesäumt. 😉
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.
kannst du dividieren durch subtrahieren lösen?
kannst du multiplizieren durch addieren lösen?
Eigentlich wollte ich die Verbindung immer offen halten. Das schaffst du nur, wenn du zw. drin HeartBeat Messages schickst & empfängst.
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.
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);
}
}
Wieso funktioniert das in diesem Fall?
denke mal, weil der head das runat="server" hat!
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.
[EDIT=herbivore]Bitte keine unkommentierten Links posten, schon gar nicht, wenn die URL kryptisch ist ==> ich habe wenigstens mal einen Link-Titel angegeben.[/EDIT]
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!
eigentlich mein ich sowas wie HDF5, wobei mir das schon zuviel ist. http://www.hdfgroup.org/HDF5/whatishdf5.html
wieso hast du die aufrufe so in den strings stehen?
also wie kommen sie da rein?
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
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
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 😉
ich würde einfach die filegröße nehmen.
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);
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.
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.
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.
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.
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?
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
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?
sorry
sbBit.Append((bit & (1 << i)) != 0 ? "1" : "0");
sbBit.Append((bit & (1 << i)) ? "1" : "0");
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));
das kannst du aber nur bei variablen vom typ object tun - also (int)value - oder hab ich was übersehen?
das ist mit schon klar, dafür prüft man vorher ja den datentyp auf int was meinst du?
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?;
machst du folgendes?
Form f = new MyForm();
f.ShowDialog();
f.ShowDialog();
?
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
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);
}
buffer = value as Byte[];
?nee, das geht nicht, da Byte ein valuetype ist
gelogen.
cast?
if(value is Byte[]) buffer = (Byte [])value
aber wahrscheinlich klatscht das auch. kann es gerade nicht testen.